#include <a_samp>#include <dutils>#include <sscanf>#include <zcmd>#include <dini>#define COLOR_GREY 0xAFAFAFAA#define COLOR_GREEN 0x33AA33AA#define COLOR_RED 0xAA3333AA#define COLOR_YELLOW 0xFFFF00AA#define COLOR_WHITE 0xFFFFFFAA#define COLOR_ORANGE 0xFF9933AA#define COLOR_LIGHTBLUE 0x33CCFFAAforward banolvaVan(playerid);new file[128];new indok[128];public OnFilterScriptInit(){print(\"\\n--------------------------------------\");print(\" Ban rendszer by Rupert \");print(\"--------------------------------------\\n\");return 1;}public OnFilterScriptExit(){print(\"Ban rendszer FS bezarva\");return 1;}CMD:ban(playerid, params[]){new gid, name[MAX_PLAYER_NAME], ipc[128], string[128];GetPlayerName(gid, name, sizeof(name));GetPlayerIp(playerid, ipc, sizeof(ipc));if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, \"Nem vagy admin!\");if(sscanf(params, \"us\", gid, indok)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /ban [iD] [indok]!\");if(gid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Helytelen ID!\");format(file, sizeof(file), \"/bannoltusers/%s.ini\", name);format(string, sizeof(string), \"%s bannolva lett, indok: %s\", name, indok);SendClientMessageToAll(COLOR_RED, string);dini_Create(file);dini_Set(file, \"Indok\", indok);dini_Set(file, \"IP\", ipc);Kick(gid);return 1;}CMD:kick(playerid, params[]){new gid, name[MAX_PLAYER_NAME], string[128];GetPlayerName(gid, name, sizeof(name));if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, \"Nem vagy admin!\");if(sscanf(params, \"us\", gid, indok)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /kick [iD] [indok]!\");if(gid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Helytelen ID!\");format(string, sizeof(string), \"%s bannolva lett, indok: %s\", name, indok);SendClientMessageToAll(COLOR_RED, string);Kick(gid);return 1;}public OnPlayerConnect(playerid){banolvaVan(playerid);return 1;}stock banolvaVan(playerid){new name[MAX_PLAYER_NAME], string[128], ipc[256], ipc2[256];GetPlayerName(playerid, name, sizeof(name));GetPlayerIp(playerid, ipc, sizeof(ipc));ipc2 = dini_Get(file, \"IP\");format(file, sizeof(file), \"/bannoltusers/%s.ini\", name);if(dini_Exists(file)){ if(ipc2[playerid] == ipc[playerid]) { SendClientMessage(playerid, COLOR_RED, \"Sajnálom, bannolva vagy a szerverrõl!\"); format(string, sizeof(string), \"Indok: %s\", dini_Get(file, \"Indok\")); SendClientMessage(playerid, COLOR_RED, string); Kick(playerid);}}return 1;}
Szép.Viszont kitiltásnál Kick(playerid);helyett jobb lenne Ban(playerid); szerintem.
Grat! Ment a + !Kezdesz belejönni a Scriptelésbe
Jó lett, de nem ellenõrizted le sehol, hogy valódi-e a játékos akit bannolni/kickelni akarnak. [/quote]Lekértem a nevét, úgy gondolom ez elég. Gondolj bele, ki akarna egy olyan játékos nevével feljönni, akirõl alapból tudni hogy bannolva van? Azonban ha igényt tartotok az IP-cím lekérésre is, akkor beleírom.
Akkor mondom máshogy :Ha azt írom be, hogy /ban 9999 akkor kiírja, hogy rossz?Jaaa és most vettem észre, hogy a parancs végén azt kickeli aki beírta a parancsot.Na meg elõbb kéred le a játékos nevét mielõtt megkapná sscanf-nél a játékos id-t. Tehát létrehozod a gid változót, majd lekéred rajta a nevet. Visszaadja ID 0 nevét ha van. Majd sscanf-nél megkapja a gid a játékos id-jét akit beírt de már elkéstél a név lekéréssel.És ha olyan névvel vagyok fent amiben olyan karakterek vannak, amit a fájl nem fogad el a nevének? :D
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, \"Nem vagy admin!\");if(sscanf(params, \"us\", gid, indok)) return SendClientMessage(playerid, COLOR_GREY, \"Használat: /kick [iD] [indok]!\");if(gid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, \"Helytelen ID!\");format(string, sizeof(string), \"%s bannolva lett, indok: %s\", name, indok);
Most akkor gondolkozz el ezen a rendszeren: feljön egy játékos, valami rosszat csinál, te ki \"banolod\" a rendszerrel, ha megnézed, ezt NÉV alapján teszi, és nem IP alapján. Magyarul a következõt kell tennie: fel jön másik névvel.
Ez rossz:if(ipc2[playerid] == ipc[playerid])És ha csak a név van bannolva?