Witam serdecznie, otóż pobrałem plugin który tworzy hasła dla graczy i zapisuje je w users.ini, nie było by z tym kłopotu gdyby on nie zapisywałby ich w postaci ciągłej tzn. jeden użytkownik i od razu drugi itd itd. Chodzi mi o to aby każdy kolejny użytkownik swoje hasło miał zapisywane w nowej linijce w users.ini, gdyż czasami kumulacja haseł w jednej linijce powoduje crash .
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <colorchat> #define PLUGIN "Simple Account Maker" #define VERSION "1.0" #define AUTHOR "G[o]Q" #define Keys (1<<0)|(1<<1) #define Keysheadmenu (1<<0)|(1<<1)|(1<<2)|(1<<4)|(1<<9) #define Keysadmin (1<<0)|(1<<1)|(1<<2)|(1<<9) // Keys: 1230 public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_menucmd(register_menuid("admin"), Keysadmin, "Pressedadmin") register_menucmd(register_menuid("headmenu"), Keysheadmenu, "Pressedheadmenu") register_menucmd(register_menuid("delete"), Keys, "Presseddelete") register_menucmd(register_menuid("edit"), Keys, "Pressededit") register_concmd("haslo","rejestruj",-1," "); register_concmd("usun","usun_one",ADMIN_IMMUNITY," "); register_clcmd("say /konto","Showheadmenu") set_task(300.0,"pokaz",0,_,_,"b") } public rejestruj(id,level,cid){ new haslo[32]; read_argv(1, haslo, 31); if (sprawdz(id)) istnieje(id) else create(id,haslo) return PLUGIN_HANDLED } public mesmode(id){ if (!sprawdz(id)) console_cmd(id,"messagemode haslo") else ColorChat(id, TEAM_COLOR,"[SAM]^x04 Konto dla tego nicku juz istnieje !!!") return PLUGIN_HANDLED; } public sprawdz(id){ new name[32]; new linijka=0,text[128],chars static configdir[64],plik[128] new nick[32] get_user_name(id,name,31) get_configsdir(configdir,63) formatex(plik,127,"%s/users.ini",configdir) do{ linijka = read_file(plik,linijka,text,127,chars) if((text[0]==';') || !chars) continue parse(text, nick,31) if (equali(name,nick)) return 1 } while(linijka!=0) return 0 } public istnieje(id){ ColorChat(id, TEAM_COLOR,"[SAM]^x04 Konto dla tego nicku juz istnieje !!!") return PLUGIN_HANDLED } public usun(id){ new name[32],text[128],chars ,nick[32] new linijka=0 static configdir[64],plik[128] get_user_name(id,name,31) get_configsdir(configdir,63) formatex(plik,127,"%s/users.ini",configdir) do{ linijka = read_file(plik,linijka,text,127,chars) if((text[0]==';') || !chars) continue parse(text, nick,31) if (equali(name,nick)) break } while(linijka!=0) write_file(plik,"",linijka-1) return PLUGIN_CONTINUE } public create(id,pass[32]){ new wpis[128] new nick[32]; static configdir[64],plik[128] get_user_name(id,nick,31) if (equal(pass,"")) return PLUGIN_HANDLED format(wpis,127,"^"%s^" ^"%s^" ^"z^" ^"a^"",nick,pass) get_configsdir(configdir,63) formatex(plik,127,"%s/users.ini",configdir) write_file(plik,wpis,-1) ColorChat(id, GREEN,"[SAM]^x03 HASLO ZOSTALO ZAPISANE") ColorChat(id, GREEN,"[SAM]^x01 HASLO:^x04 %s",pass) ColorChat(id, GREEN,"[SAM]^x01 Aby wejsc na server wpisz w consoli:^x03 setinfo _pw ^"^x04%s^x03^"",pass) client_print(id,print_console,"~*~ HASLO ZOSTALO ZAPISANE") client_print(id,print_console,"~*~ HASLO :%s",pass) client_print(id,print_console,"~*~ Aby wejsc na server wpisz w consoli: setinfo _pw ^"%s^"",pass) return PLUGIN_CONTINUE } public edytuj(id){ usun(id) mesmode(id) } public pokaz(){ ColorChat(0, TEAM_COLOR,"[SAM]^x04 Nie chcesz aby ktos gral na twoim nicku? zaloz konto wpisujac: ^x03 /konto") } public Showdelete(id) { if (!sprawdz(id)){ ColorChat(id, TEAM_COLOR,"[SAM]^x04 Konto dla tego nicku nie istnieje !!!") return PLUGIN_HANDLED } else show_menu(id, Keys, "\rCzy na pewno chcesz usunac ?^n\w1: \rTAK^n\w2: NIE^n", -1, "delete") return PLUGIN_CONTINUE } public Presseddelete(id, key) { if (key==0){ usun(id) ColorChat(id, TEAM_COLOR,"[SAM]^x04 Rezerwacja zostala usunieta !!!") return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public Showedit(id) { if (!sprawdz(id)){ ColorChat(id,TEAM_COLOR,"[SAM]^x04 Konto dla tego nicku nie istnieje !!!") return PLUGIN_HANDLED } else show_menu(id, Keys, "\rCzy na pewno chcesz zmienic haslo?^n\w1: \rTAK^n\w2: NIE^n", -1, "edit") return PLUGIN_CONTINUE } public Pressededit(id, key) { if (key==0){ edytuj(id) ColorChat(id, TEAM_COLOR,"[SAM]^x04 Wpis zostal zaktualizowany !!!") return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public Showheadmenu(id) { new name[32] new menutext[256] get_user_name(id,name,31) new keyss=(get_user_flags(id)&ADMIN_IMMUNITY)?((1<<0)|(1<<1)|(1<<2)|(1<<4)|(1<<9)):((1<<0)|(1<<1)|(1<<2)|(1<<9)) format(menutext,255,"\rMenu \y(konto %s)\r:^n\y1: \w Dodaj rezerwacje^n\y2: \w Usun rezerwacje^n\y3: \w Edytuj rezerwacje^n^n%s5: \w Menu Admina^n^n^n^n\y0:\w Wyjscie",name,(get_user_flags(id)& ADMIN_IMMUNITY)?"\y":"\d" ) show_menu(id, keyss,menutext, -1, "headmenu") } public Pressedheadmenu(id, key) { switch (key) { case 0: { // 1 mesmode(id) } case 1: { // 2 Showdelete(id) } case 2: { // 3 Showedit(id) } case 4:{ Showadmin(id) } } } public usun_all(id){ new text[128],chars ,nick[32],haslo[32],flagi[32],flagi2[32] new linijka=0 static configdir[64],plik[128] get_configsdir(configdir,63) formatex(plik,127,"%s/users.ini",configdir) do{ linijka = read_file(plik,linijka,text,127,chars) if((text[0]==';') || !chars) continue parse(text, nick,31,haslo,31,flagi,31,flagi2,31) if (equali(flagi,"z")) write_file(plik,"",linijka-1) } while(linijka!=0) return PLUGIN_CONTINUE } public sprawdz2(name[]){ new linijka=0,text[128],chars static configdir[64],plik[128] new nick[32] get_configsdir(configdir,63) formatex(plik,127,"%s/users.ini",configdir) do{ linijka = read_file(plik,linijka,text,127,chars) if((text[0]==';') || !chars) continue parse(text, nick,31) if (equali(name,nick)) return 1 } while(linijka!=0) return 0 } public usun_one(id,level,cid){ new name[32]; read_argv(1, name, 31); if (!sprawdz2(name)){ ColorChat(id, TEAM_COLOR,"[SAM]^x04 Konto dla tego nicku nie istnieje !!!") return PLUGIN_HANDLED } usun_1(id,name) return PLUGIN_HANDLED } public mesdel(id){ console_cmd(id,"messagemode usun") return PLUGIN_HANDLED; } public usun_1(id,name[32]){ new text[128],chars ,nick[32] new linijka=0 static configdir[64],plik[128] get_configsdir(configdir,63) formatex(plik,127,"%s/users.ini",configdir) do{ linijka = read_file(plik,linijka,text,127,chars) if((text[0]==';') || !chars) continue parse(text, nick,31) if (equal(name,nick)){ write_file(plik,"",linijka-1) break } } while(linijka!=0) ColorChat(id, TEAM_COLOR,"[SAM]^x04 Konto dla tego nicku zostalo usuniete !!!") } public poka_all(id){ new text[128],chars ,nick[32],haslo[32],flagi[32],flagi2[32],spis[1024] new linijka=0 static configdir[64],plik[128] get_configsdir(configdir,63) format(plik,127,"%s/users.ini",configdir) format(spis,1023,"<html><body background=^"http://amxx.pl/uploads/images/amxx.pl-1271592209-U6279.png^">") format(spis,1023,"%s <center><table border=^"1^" style=^"margin: auto; border-style: solid; border-color: black; border-width: 1px; border-collapse: collapse^"><tbody><tr>",spis) format(spis,1023,"%s <td width=^" 200^" style=^"background-color: blue; color: white; text-align: center^">Nick</td>",spis) format(spis,1023,"%s <td width=^" 200^" style=^"background-color: blue; color: white; text-align: center^">Haslo</td>",spis) format(spis,1023,"%s <td width=^" 200^" style=^"background-color: blue; color: white; text-align: center^">Flagi</td></tr>",spis) do{ linijka = read_file(plik,linijka,text,127,chars) if((text[0]==';') || !chars) continue parse(text, nick,31,haslo,31,flagi,31,flagi2,31) if (equal(flagi,"z")&&linijka!=0){ format(spis,1023,"%s <tr> <td style=^"color: white; text-align: center^">%s</td>",spis,nick) format(spis,1023,"%s <td style=^"color: white; text-align: center^">%s</td><td style=^"color: white; text-align: center^">%s</td></tr>",spis,haslo,flagi) } } while(linijka!=0) format(spis,1023,"%s </tbody> </table></center></body><html>",spis) show_motd(id,spis,"KONTA GRACZY") return PLUGIN_CONTINUE } public Showadmin(id) { show_menu(id, Keysadmin, "\rMenu admina:^n\y1: \wUsun wszystkie rezerwacje^n\y2: \wUsun jedna rezerwacje^n\y3: \wPokaz wszystkie rezerwacje^n\y^n^n^n^n0: W\wyjscie^n", -1, "admin") // Display menu } public Pressedadmin(id, key) { switch (key) { case 0: { // 1 usun_all(id) } case 1: { // 2 mesdel(id) } case 2: { // 3 poka_all(id) } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
Bardzo proszę o modyfikacje tego oto pluginu.
Dziękuje bardzo
FAT1M