IchNar 0 Odesláno: 22. Červenec, 2017 Share Odesláno: 22. Červenec, 2017 Popis problému: Mám problém v tom,že keď napíšem hráčove meno neodstráni tú zložku v scriptlfiles + je to,keď napíšem meno čo nemá ban tak to nič nespraví. Chyby/varování kompilátoru a při běhu: Kód: //ten prikaz[code=:0] CMD:unban(playerid,params[]) { new UnbanName[MAX_PLAYER_NAME],dovod[128],string[128],cesta[16+15]; if(AdminLevel[playerid] < 3)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz"); if(sscanf(params,"s[MAX_PLAYER_NAME],s[128]",UnbanName,dovod))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadať /unban [MenoHráča] [Dôvod]"); format(cesta,sizeof(cesta),"Banneds/%s.ini",PlayerIP(playerid)); format(string,sizeof(string),"%s{FF3300}%s odbanoval hráča %s [Dôvod: %s]",GetPlayerAdminTitle(playerid),Meno(playerid),UnbanName,dovod); if(!strcmp(UnbanName,DOF2_GetString(cesta,"MenoHraca"),false)) { DOF2_RemoveFile(cesta); SendClientMessageToAll(COLOR_RED,string); } else { SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Zlé meno"); } return 1; } [/code] Dodatečné poznámky: -- Link to comment Share on other sites More sharing options...
0 xhunterx 55 Odesláno: 22. Červenec, 2017 Share Odesláno: 22. Červenec, 2017 s[MAX_PLAYER_NAME] Toto bohuzial nefunguje. Pouzi: s[24]. Taktiez by si mal pouzit new UnbanName[MAX_PLAYER_NAME+1] a s[25], inak ti najdlhsie meno nebude fungovat. String potrebuje +1 znak pre NULL terminator. Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 22. Červenec, 2017 Author Share Odesláno: 22. Červenec, 2017 Stále mi to nefunguje. Link to comment Share on other sites More sharing options...
0 Invouk 91 Odesláno: 22. Červenec, 2017 Share Odesláno: 22. Červenec, 2017 s[MAX_PLAYER_NAME] Toto bohuzial nefunguje. Pouzi: s[24]. Taktiez by si mal pouzit new UnbanName[MAX_PLAYER_NAME+1] a s[25], inak ti najdlhsie meno nebude fungovat. String potrebuje +1 znak pre NULL terminator. Niekde som snaď čítal, že do SA-MPu sa aj tak nepripojíš s 24 znakovým Nickom, Ako máš uložené niekoho v tom Banneds/%s.txt ?? A skús si poslať do message akú hodno tu ti vráti PlayerIP(playerid)) a možno to zbadáš. Link to comment Share on other sites More sharing options...
0 xhunterx 55 Odesláno: 23. Červenec, 2017 Share Odesláno: 23. Červenec, 2017 Este tam medzi tym nema byt ciarka. "s[25]s[128]" Niekde som snaď čítal, že do SA-MPu sa aj tak nepripojíš s 24 znakovým Nickom, To je pravda, na pripojenie je limit 20 znakov, ale na SetPlayerName je 24. A ak niekedy v buducnosti spravi [AFK] pred meno alebo nieco a bude mu to blbnut, tak sa mu to uz bude tazko vsade hladat. Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 23. Červenec, 2017 Author Share Odesláno: 23. Červenec, 2017 (upraveno) Stále mi to nefunguje dám /unban a meno v zložke a nič sa nedeje...Zložku banneds mám tak...,no pošlem vám screenshoty. https://ctrlv.cz/BUOz https://ctrlv.cz/ZNe9 https://ctrlv.cz/vSAe A ja to chcem spraviť tak,že keď admin napíše /unban meno tak,že to odbanuje toho,kto má to meno.. AKo to mám spraviť? Edited 23. Červenec, 2017 by IchNar Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 23. Červenec, 2017 Globální moderátor Share Odesláno: 23. Červenec, 2017 if(sscanf(params,"s[MAX_PLAYER_NAME],s[128]",UnbanName,dovod))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadať /unban [MenoHráča] [Dôvod]"); format(cesta,sizeof(cesta),"Banneds/%s.ini",PlayerIP(playerid)); Úplně asi nechápu čeho tu chceš docílit. Proč máš soubory podle IPček adminů? No každopádně ti to nefunguje, protože se soubor jmenuje 1270.0.1 (správně 127.0.0.1) Link to comment Share on other sites More sharing options...
0 xhunterx 55 Odesláno: 23. Červenec, 2017 Share Odesláno: 23. Červenec, 2017 (upraveno) Myslim, ze to ma byt podla IP hracov. Lenze v tom pripade sa to co chces spravit neda.Odporucam pouzit na ukladanie banov sqlite. S tym by sa to spravit dalo jednoducho. Edited 23. Červenec, 2017 by xhunterx Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 23. Červenec, 2017 Author Share Odesláno: 23. Červenec, 2017 (upraveno) Aha...takže sa to nedá... sqlite vôbec nerozumiem ...:/ Tak asi nič teda ked sa to neda. Edited 23. Červenec, 2017 by IchNar Link to comment Share on other sites More sharing options...
0 Administrátor Ewwe 434 Odesláno: 24. Červenec, 2017 Administrátor Share Odesláno: 24. Červenec, 2017 kdyz banujes preved jmeno na male znaky a pak to same udelej u unbanu. Vyhnes se chyba stylu Ewwe,ewwe,eWwe atd. Jméno stačí 21 znaků protože samp client tě nepustí s delším ( 24 je tam nadefinováno z důvodu fce SetPlayerName ) Printe ? Jsi si jistý že v paramsech sscanfu fungují constanty ? BTW soubor se jmenuje podle Ip hráče a ty porovnáváš se jménem. BTW ta ip je uložená nějak nemocně... Link to comment Share on other sites More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 24. Červenec, 2017 Globální moderátor Share Odesláno: 24. Červenec, 2017 To je rádoby citace-kód to jsem nepsal já Link to comment Share on other sites More sharing options...
0 Scydo 397 Odesláno: 25. Červenec, 2017 Share Odesláno: 25. Červenec, 2017 Do sscanfu2 můžeš klidně házet makra díky heštegu. 1 Link to comment Share on other sites More sharing options...
0 xhunterx 55 Odesláno: 25. Červenec, 2017 Share Odesláno: 25. Červenec, 2017 Do sscanfu2 můžeš klidně házet makra díky heštegu. Tak na toto som uplne zabudol, ze sa vlastne da 1 Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 25. Červenec, 2017 Author Share Odesláno: 25. Červenec, 2017 Takže sa ten unban nedá nijak spraviť? Link to comment Share on other sites More sharing options...
0 Invouk 91 Odesláno: 25. Červenec, 2017 Share Odesláno: 25. Červenec, 2017 (upraveno) A čo ti vlastne akú hodnotu vracia, banuješ ích na IP alebo na MENO ? lebo z PlayerIP ti asi vracia hodnotu IP hráča,Ja by som to banoval na meno, a ak je toto myslené ako IPBan tak použi miesto /unban Nick Dovod... /unban IP DovodA skúšaš to na localhoste alebo ? PlayerIP(playerid) a neviem či ti funguje toto: if(sscanf(params,"s[MAX_PLAYER_NAME],s[128]",UnbanName,dovod)) ale ja som to použival takto: if(sscanf(params,"ss",UnbanName,dovod)) Edited 25. Červenec, 2017 by XpresS Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 25. Červenec, 2017 Author Share Odesláno: 25. Červenec, 2017 Hej banujem to na IPčku,ale ja som to chcel tak,že vy to kontrolovalo každú zložku v Banneds a ak v tej zložke je meno,to čo napíše admin do príkazu /unban Meno tak mu to tu zložku vymaže,dostane unban. Link to comment Share on other sites More sharing options...
0 xhunterx 55 Odesláno: 25. Červenec, 2017 Share Odesláno: 25. Červenec, 2017 V PAWN sa nedaju prechadzat vsetky zlozky, bez nejakeho special pluginu na to a aj tak je to velmi zly napad, to je strasne pomale. Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 25. Červenec, 2017 Author Share Odesláno: 25. Červenec, 2017 Takže nieje žiadna možnosť ako to spraviť? Link to comment Share on other sites More sharing options...
0 Invouk 91 Odesláno: 25. Červenec, 2017 Share Odesláno: 25. Červenec, 2017 Tak ako to myslíš ty ne, jedine SQLite ale kedže to ty nevieš,Tak ukladať jedine na meno, a ukladať do tej zložky s menom aj IP Link to comment Share on other sites More sharing options...
0 StreetGuy 1 Odesláno: 25. Červenec, 2017 Share Odesláno: 25. Červenec, 2017 Vytvor si súbor v .txt a do toho zapisuj Čas Meno Dovod UnbanDate a potom len podla mena najdes riadok, zistíč či mu ban vypršal a riadok vymažeš Link to comment Share on other sites More sharing options...
0 Scydo 397 Odesláno: 26. Červenec, 2017 Share Odesláno: 26. Červenec, 2017 (upraveno) 1. Vždycky kontroluj všechno, kde nepotřebuješ nic jiného kromě playerid, co nejdříve. Ať zbytečně nedeklaruješ proměnné. if (AdminLevel[playerid] < 3) return SendClientMessage(playerid, COLOR_RED, "[!] {FFFFFF}Nemáš oprávnenie na tento príkaz"); new Nick[MAX_PLAYER_NAME + 1], Reason[120 + 1], String[144 + 1], Cesta[34 + 1];2. sscanf2 a 2 řetězce vedle sebe nejde moc do sebe. Nejlepší je nějakým způsobem rozeznat. Buď číslem mezi nimi a nebo mezerou(to už tu myslím někdo psal): if (sscanf(params, "s[21] s[121]", Nick, Reason)) return SendClientMessage(playerid, COLOR_RED, "[!] {FFFFFF}Musíš zadať /unban [MenoHráča] [Dôvod]");3. Pak samozřejmě musíš vědět, jestli ten soubor, co zadává, tak vůbec existuje(prozatím řekněme, že hledáš soubory podle nicku, víc později): format(Cesta, sizeof Cesta, "Banneds/%s.ini", Nick); if (!DOF2_FileExists(Cesta)) return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Zlé meno");4. tady děláš chybu: format(cesta,sizeof(cesta),"Banneds/%s.ini",PlayerIP(playerid));Protože, pokud hádám správně, tak ta fce vrací ip daného hráče a tahle ti bude neustále vracet ip admina, co zadal ten příkaz, nikoliv toho, co potřebuješ.Proto máš několik možností. Buď se smíříš s nejlepší možností a to ukládat soubory podle jména a pak je jednodušeji hledat. Nebo každého hráče co banuješ, tak ještě jeho ip ukládat do speciálního souboru, kde by key[] byla jeho ip a value[] jeho nick, něco jako: [i]12.33.44.23=Franta444 44.33.22.12=Pepe123[/i] A pak porovnáš, a se zjištěnými údaji hledáš daný soubor, který si pojmenuješ ipčkou, ale není to moc dobrý nápad, protože jak známe, hráči můžou některé bany obejít změnou ip a nechat si stejný nick. 5. Pak už je to snadné. Vymažeš soubor a odešleš zprávu: DOF2_RemoveFile(Cesta); format(String, sizeof(String), "%s{FF3300}%s odbanoval hráča %s [Dôvod: %s]", GetPlayerAdminTitle(playerid), Meno(playerid), Nick, Reason); SendClientMessageToAll(COLOR_RED, String); Edited 26. Červenec, 2017 by Ernst Remer Link to comment Share on other sites More sharing options...
Dotaz
IchNar 0
Popis problému:
Mám problém v tom,že keď napíšem hráčove meno neodstráni tú zložku v scriptlfiles + je to,keď napíšem meno čo nemá ban tak to nič nespraví.
Chyby/varování kompilátoru a při běhu:
Kód:
Dodatečné poznámky:
--
Link to comment
Share on other sites
20 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