Sziasztok!
Sokszor találkozom olyanokkal, akiknek problémát okoz egy olyan banrendszer megírása, aminek indokát látja a játékos, miután próbál csatlakozni. Nos, én most megírtam ezt az egyszerû scriptet, illetve kódot. A \'scriptfiles\' mappa tartalmazzon egy \'bannoltusers\' mappát, különben a scriptem semmit nem ér. Remélem hasznotokra fog válni!
Ui: Egy /kick parancsot is írtam a /ban parancs mellé. ;)
#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 0x33CCFFAA
forward 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;
}
A kicknél ezt írja:
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);
Amúgy jó lett. Ment egy +