Deejva 36 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 Zdravím, potřeboval bych poradit s jednou věcí. Chtěl bych udělat log pro server.. takže by se do souboru zapisovali činnosti, co hráč dělal: 22:15 Deejva si koupil M4 22:16 Deejva napsal PM hráči X: ahoj 22:17 Deejva se odpojil A když to takhle budu mít zapsané v souboru, jak udělat pro admina ve hře, aby si to mohl přečíst? Chtěl bych to udělat přes dialog, že bude několik řádků, na každém řádku bude něco z logu, dokud nebude plná tabulka nebo bude plný string A pokud už se to tam nevejde, budu se moct tlačítkem další podívat dál. Prosím o rady, jak jednotlivé řádky přečíst, a jak udělat, že až se překlepnu na další stranu, tak tam budou zase další, ty starší věci z logu Díky Link to comment Share on other sites More sharing options...
0 LukasB 0 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 1. > Ak budeš mať pre každého hráča takýto log tak ty server moc slho nevydrži. 2. > Musíš si spraviť zapisovani pri každej činnosti napr. keď dá príkaz /kill tak zistí jeho meno a pridá to cez napr.DOF2 do niakeho suboru z jeho menom, a potom taktieš vytvorit str a z formatom to prečítať cez dof2 . Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 29. Prosinec, 2014 Author Share Odesláno: 29. Prosinec, 2014 pro admina ve hře Vim, jak to zapsat přes normální samp funkce, ale nevim, jak to přečíst (Všechno) Link to comment Share on other sites More sharing options...
0 LukasB 0 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 > Jednoduché ale problém je že buď tam musíš nastaviť neobmedzení počet znakov alebo čiastočne mazanie... > Máš to cez DOf2 ? Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 29. Prosinec, 2014 Author Share Odesláno: 29. Prosinec, 2014 přes normální samp funkce Pokud nevíš, jak to udělat, tak sem rovnou nemusíš psát Link to comment Share on other sites More sharing options...
0 Mort 29 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 podívej se na fread Link to comment Share on other sites More sharing options...
0 LukasB 0 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 počúvaj kámo .. normálna samp funkce twl ty by si mohol písať muzikál Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 29. Prosinec, 2014 Author Share Odesláno: 29. Prosinec, 2014 Mort, na tu funkci jsem koukal, ale pořád jsem jí nijak nepochopil. Kdybych tam mohl zadat řádek, který chci přečíst, tak je to jednodušší Link to comment Share on other sites More sharing options...
0 Globální moderátor Hip 191 Odesláno: 29. Prosinec, 2014 Globální moderátor Share Odesláno: 29. Prosinec, 2014 new File:handle = fopen("file.txt", io_read), //vytvoříme si proměnou pro soubor který namapujeme a otevřeme new buf[128]; //pomocná do které budeme načítat řádky new string[512]; //sem budeme ukládat string if(handle) //pokud je soubor otevřen (tedy existuje) { //while(fread(handle, buf)) print(buf); čte dokud neskončí soubor //new radek; pokud haže errory že nezná radek tak sem... while(freade(handle,buf) || radek < 20)//čte dokud neskončí soubor a nebo je načteno více jak 20 řádků { format(buf,sizeof(buf),"\n %s",buf); radek++;//přidáme že jsme přečetli další řádek strcat(string,buf);//odentrujeme a přidáme řádek k ostatním řádkům } fclose(handle); //zavře soubor - VELICE důležité } else //pokud selhalo { // Error print("The file \"file.txt\" does not exists, or can't be opened."); } polopaticky... chápeš? Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 29. Prosinec, 2014 Author Share Odesláno: 29. Prosinec, 2014 To vypadá dobře, jak to pak přečtu od 20. řádku níž? Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 prectes jich 40 ale zobrazis jen poslednich 20. a nebo pouzijes fseek ale tam si musis hlidat pocet znaku Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 29. Prosinec, 2014 Author Share Odesláno: 29. Prosinec, 2014 a co když jich chci přečíst třeba 400? Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 tak jich prectes 400 a zobrazis poslednich 20 a nebo pouzijes fseek Link to comment Share on other sites More sharing options...
0 Globální moderátor Hip 191 Odesláno: 29. Prosinec, 2014 Globální moderátor Share Odesláno: 29. Prosinec, 2014 20 bylo tak od oka kolik jich tak dáš do dialogu, asi se jich vejde více ne? Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 29. Prosinec, 2014 Share Odesláno: 29. Prosinec, 2014 2048 znaku ono jde i vic ale pokazdy jinak, jeste jsem neprisel na podminky ktery by presne definovali kolik v jakym pripade a 2048 vzdy Link to comment Share on other sites More sharing options...
0 Globální moderátor Hip 191 Odesláno: 29. Prosinec, 2014 Globální moderátor Share Odesláno: 29. Prosinec, 2014 napadla mě druhá varianta ... použiješ tlačítko v dialogu kterým si přepneš na "další stránku" Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 29. Prosinec, 2014 Author Share Odesláno: 29. Prosinec, 2014 No právě, to chci udělat, ale když si přes ten způsob od tebe udělam těch 20 řádků, jak pak zobrazim na další straně jen řádek 20-40? Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 30. Prosinec, 2014 Share Odesláno: 30. Prosinec, 2014 No nacist si obsah souboru do jedne promene a pak pracovat s tou promenou. To by byla asi nejlepsi varianta. Ale otazkou je jak velkou promenou ? Kdyz promena musi mit pevnou velikost ale soubor ne .D Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 30. Prosinec, 2014 Author Share Odesláno: 30. Prosinec, 2014 Hmm.. A kolik jde teda dát nejvíc znaků do dialogu? 2048? A do jedné proměnné? Link to comment Share on other sites More sharing options...
0 Kubko 22 Odesláno: 30. Prosinec, 2014 Share Odesláno: 30. Prosinec, 2014 Dialog text 2048 String 1024 ak sa to nemenilo. Najlepšie by bolo zaplniť string, vypísať, dalšia stranka, vyprazdnit string, precitat dalej atd az dokym neprecitas cely subor. Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 30. Prosinec, 2014 Author Share Odesláno: 30. Prosinec, 2014 No, zkusím to tedy, snad se k tomu nějak doklepu while(fread(handle,buf) || radek < 20) { format(buf,sizeof(buf),"%s\n",buf); radek++; strcat(string2,buf); } Pořád se mi ale přečte všech 30 řádků.. proč? Link to comment Share on other sites More sharing options...
0 Coles 11 Odesláno: 30. Prosinec, 2014 Share Odesláno: 30. Prosinec, 2014 Já to mám vyřešené takto: CMD:prikaz(playerid, params[]) { if(JeAdmin?) { new search[24]; if(!sscanf(params, "s[24]", search)) { new dialogtext[2048]; format(dialogtext, sizeof(dialogtext), "Log: %s\n\n", search); new str[128], count = 0; new File:soubor = fopen("cestaksouboru", io_readwrite); while(fread(soubor, str)) { if(count <= 20) { if(strfind(str, search, true) != -1) { count++; strcat(dialogtext, str); } } else break; } fclose(soubor); ShowPlayerDialog(playerid, DIALOGID , DIALOG_STYLE_MSGBOX, "{FFFFFF}LOG", dialogtext, "Okay", ""); return 1; } else return SCM(playerid, -1, "SYNTAXE: /log [Jméno, důvod, nebo datum]"); } else return ErrorBox(playerid, "Tento prikaz nemuzes pouzivat."); } Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 30. Prosinec, 2014 Author Share Odesláno: 30. Prosinec, 2014 Jo, dal jsem podmínku na řádky pod to a jde to, díky A jak dosadím do toho dialogu 2000 znaků, když jde do proměnné 1024? Kdybych 2 proměnné s 1000 znakama spojil, tak to je 2000 znaků a nevejde se to tam, když má proměnná 1024 Link to comment Share on other sites More sharing options...
0 Kubko 22 Odesláno: 30. Prosinec, 2014 Share Odesláno: 30. Prosinec, 2014 Deejva vieš čo vracia fread? Link to comment Share on other sites More sharing options...
0 Deejva 36 Odesláno: 30. Prosinec, 2014 Author Share Odesláno: 30. Prosinec, 2014 Už to mám vyřešené, díky Link to comment Share on other sites More sharing options...
0 ATomas 291 Odesláno: 31. Prosinec, 2014 Share Odesláno: 31. Prosinec, 2014 Hmm.. A kolik jde teda dát nejvíc znaků do dialogu? 2048? A do jedné proměnné? Do jedne promene ? Zalezi natom jak velkou mas RAM a kolik trpelivosti pri kompilovani new buf[128]; new string2[2048]; while(fread(handle,buf))//precte cely soubor { format(string2,sizeof(string2),"%s%s",buf,string2); //pocitame s tim ze v buf uz je enter \n a bud dame pred string2. //Tim zajistime ze pokud bude string2 plny tak se nove data daji nazacatek a stara z konce umazou } ShowPlayerDialog(playerid,0,DIALOG_STLE_SMGBOX,"Log",string,"OK",""); //Toto zajisti ze budes mit v promene string2 2048 znaku z konce souboru samozrejme jde to optimalizovat pomoci fseek kde si posunes kurzor aby jsi zbytecne necetl cely soubor Link to comment Share on other sites More sharing options...
Dotaz
Deejva 36
Zdravím, potřeboval bych poradit s jednou věcí. Chtěl bych udělat log pro server.. takže by se do souboru zapisovali činnosti, co hráč dělal:
22:15 Deejva si koupil M4
22:16 Deejva napsal PM hráči X: ahoj
22:17 Deejva se odpojil
A když to takhle budu mít zapsané v souboru, jak udělat pro admina ve hře, aby si to mohl přečíst?
Chtěl bych to udělat přes dialog, že bude několik řádků, na každém řádku bude něco z logu, dokud nebude plná tabulka nebo bude plný string
A pokud už se to tam nevejde, budu se moct tlačítkem další podívat dál.
Prosím o rady, jak jednotlivé řádky přečíst, a jak udělat, že až se překlepnu na další stranu, tak tam budou zase další, ty starší věci z logu
Díky
Link to comment
Share on other sites
32 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now