#include < a_samp >
#include < zcmd >
#include < sscanf >
#include < dini >
#define FILTERSCRIPT
#define narancs 0xFF9933AA
#define szurke (0xAFAFAFAA)
#define citrom (0xFFFF00AA)
#define piros (0xFF0000AA)
#define zold (0x33AA33AA)
#define feher (0xFFFFFFAA)
#define fekete 0x000000
#define neon 0x00FFFFFF
#undef MAX_PLAYERS
#define MAX_PLAYERS 30
enum badmin
{
admin,
ban,
as,
aname[25],
vip
}
new pi[MAX_PLAYERS][badmin];
new lepve[MAX_PLAYERS];
new str[128];
new rpw[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
nullazas(playerid);
format(str,sizeof(str),\"%s belépett a szerverre.\",nev(playerid));
SendClientMessageToAll(narancs,str);
new fajl[128];
format(fajl,sizeof(fajl),\"/badmin/%s.ini\",nev(playerid));
if(!fexist(fajl))
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,\"Regisztráció\",\"Írj be egy tetszõleges jelszót.\\nA késõbbiekben is ezt fogod használni.\",\"Oké\",\"Mégse\");
}
else
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,\"Belépés\",\"Írd be a jelszavad.\",\"Oké\",\"Mégse\");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(!response) Kick(playerid);
new file[128];
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztráció\", \"Írj be egy tetszõleges jelszót.\\nA késõbbiekben is ezt fogod használni.\", \"Oké\", \"Mégse\");
return 0;
}
format(file,sizeof(file),\"/badmin/%s.ini\",nev(playerid));
if(!fexist(file))
{
dini_Create(file);
nullazas(playerid);
dini_Set(file,\"jelszo\", inputtext);
save(playerid);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,\"Belépés\",\"Írd be a jelszavad.\",\"Oké\",\"Mégse\");
printf(\"%s sikeresen regisztrált.\", nev(playerid));
}
}
if(dialogid == 2)
{
new file[128];
format(file,sizeof(file),\"/badmin/%s.ini\",nev(playerid));
if(!response) Kick(playerid);
new pw[64];
format(pw,64,\"%s\",dini_Get(file,\"jelszo\"));
if(!strcmp(inputtext, pw, false))
{
SendClientMessage(playerid,zold,\"Sikeres belépés.\");
load(playerid);
lepve[playerid] = 1;
if(pi[playerid][ban] == 1)
{
Ban(playerid);
}
}
else
{
rpw[playerid] ++;
SendClientMessage(playerid,piros,\"Rossz jelszó.\");
if(rpw[playerid] == 2)
{
Kick(playerid);
}
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,\"Belépés\",\"Írd be a jelszavad.\",\"Oké\",\"Mégse\");
}
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
format(str,sizeof(str),\"%s kilépett a szerverrõl.\",nev(playerid));
SendClientMessageToAll(narancs,str);
if(lepve[playerid] == 1)
{
save(playerid);
}
nullazas(playerid);
return 1;
}
CMD:adadmin(playerid,params[])
{
if(pi[playerid][admin] == 3 || IsPlayerAdmin(playerid))
{
new id,szint;
new anev[24];
if(sscanf(params,\"uds\",id,szint)) return SendClientMessage(playerid,szurke,\"Használat:/adadmin [id][szint(0-3)] [adminnév]\");
if(szint >= 0 && szint <= 3)
{
format(str,128,\"%s %d adminjogot adott.\",pi[playerid][aname],szint);
msg(id,str);
format(str,128,\"%st kinevezted %d adminnak.\",nev(id),szint);
msg(playerid,str);
pi[id][admin] = szint;
format(pi[id][aname],24,\"%s\",anev);
} else msg(playerid, \"Az adminszint 0 és 3 között lehet.\");
} else msg(playerid,\"Nem vagy admin.\");
return 1;
}
CMD:a(playerid, params[])
{
if(pi[playerid][admin] >= 1 || pi[playerid][as] != 0)
{
new szoveg[128];
if(sscanf(params,\"s\",szoveg)) return SendClientMessage(playerid,feher,\"Használat: /a [szöveg]\");
format(str, sizeof(str), \"AdminChat: %s(%d): %s\", pi[playerid][aname], pi[playerid][admin], szoveg);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pi[admin] >= 1 ||pi[as] != 0)
{
SendClientMessage(i, zold, str);
}
}
} else { SendClientMessage(playerid, szurke, \"Nem vagy egyes szintû admin.\"); return 1; }
return 1;
}
CMD:asay(playerid, params[])
{
if(pi[playerid][admin] >= 1 || pi[playerid][as] != 0)
{
new szoveg[128];
if(sscanf(params,\"s\",szoveg)) return SendClientMessage(playerid,feher,\"Használat: /asay [szöveg]\");
if(pi[playerid][admin] != 0)
{
format(str, sizeof(str), \"Admin %s: %s\", pi[playerid][aname], szoveg);
SendClientMessageToAll(neon,str);
}
else if(pi[playerid][as] != 0)
{
format(str, sizeof(str), \"Adminsegéd %s: %s\", nev(playerid), szoveg);
SendClientMessageToAll(neon,str);
}
} else { SendClientMessage(playerid, szurke, \"Nem vagy egyes szintû admin.\"); return 1; }
return 1;
}
CMD:adminok(playerid, params[])
{
SendClientMessage(playerid, feher, \"Elérhetõ adminisztrátorok és segédek:\");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pi[admin] != 0)
{
format(str, 128, \"Admin %s | Szint: %d\", pi[aname],pi[admin]);
SendClientMessage(playerid, citrom, str);
}
else if(pi[as] == 1)
{
format(str, 128, \"Adminsegéd %s\", nev(i));
SendClientMessage(playerid, citrom, str);
}
}
return 1;
}
CMD:as(playerid, params[])
{
if(pi[playerid][admin] >= 1)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid,feher,\"Használat: /as [id]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, szurke, \"Nincs ilyen ID!\");
SendClientMessage(playerid, feher, \"Kinevezted adminsegédnek.\");
SendClientMessage(id, feher, \"Egy adminisztrátor kinevezett téged adminsegédnek.\");
pi[id][as] = 1;
return 1;
} else { SendClientMessage(playerid, szurke, \"Nem vagy egyes szintû admin.\"); return 1; }
}
CMD:vip(playerid, params[])
{
if(pi[playerid][admin] == 3)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid,feher,\"Használat: /vip [id]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, szurke, \"Nincs ilyen ID!\");
SendClientMessage(playerid, feher, \"Kinevezted VIP-nek.\");
SendClientMessage(id, feher, \"Egy adminisztrátor kinevezett téged VIP-nek..\");
pi[id][vip] = 1;
return 1;
} else { SendClientMessage(playerid, szurke, \"Nem vagy fõadmin.\"); return 1; }
}
CMD:vipel(playerid, params[])
{
if(pi[playerid][admin] == 3)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid,feher,\"Használat: /vipel [id]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, szurke, \"Nincs ilyen ID!\");
SendClientMessage(playerid, feher, \"Elvetted a VIP-et.\");
SendClientMessage(id, feher, \"Egy adminisztrátor elvette a VIP jogodat.\");
pi[id][vip] = 0;
return 1;
} else { SendClientMessage(playerid, szurke, \"Nem vagy fõadmin.\"); return 1; }
}
CMD:asel(playerid, params[])
{
if(pi[playerid][admin] >= 1)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid,feher,\"Használat: /asel [id]\");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid, szurke, \"Nincs ilyen ID!\");
SendClientMessage(playerid, feher, \"Elvetted az adminsegéd jogát.\");
SendClientMessage(id, feher, \"Egy adminisztrátor elvette az adminsegéd rangodat.\");
pi[id][as] = 0;
} else { SendClientMessage(playerid, szurke, \"Nem vagy egyes szintû admin.\"); return 1; }
return 1;
}
CMD:kick(playerid, params[])
{
if(pi[playerid][admin] >= 1 || pi[playerid][as] == 1)
{
if(pi[playerid][as] == 1)
{
new id;
new indok[64];
if(sscanf(params,\"us\",id,indok)) return SendClientMessage(playerid,feher,\"Használat: /kick [id][indok]\");
format(str, 128, \"-= %s ki lett rúgva %s által. |=| Indoklás: %s =-\", nev(id), nev(playerid), indok);
SendClientMessageToAll(piros, str);
Kick(id);
}
else if(pi[playerid][admin] >= 1)
{
new id;
new indok[64];
if(sscanf(params,\"us\",id,indok)) return SendClientMessage(playerid,feher,\"Használat: /kick [id][indok]\");
format(str, 128, \"-= %s ki lett rúgva %s által. |=| Indoklás: %s =-\", nev(id), pi[playerid][aname], indok);
SendClientMessageToAll(piros, str);
Kick(id);
}
} else { SendClientMessage(playerid, szurke, \"Nem vagy egyes szintû admin, vagy haladó adminsegéd.\"); }
return 1;
}
CMD:ban(playerid, params[])
{
if(pi[playerid][admin] >= 1)
{
new id;
new indok[64];
if(sscanf(params,\"us\",id,indok)) return SendClientMessage(playerid,feher,\"Használat: /ban [id][indok]\");
pi[id][ban] = 1;
format(str, 128, \"-= %s ki lett tiltva %s által. |=| Indoklás: %s =-\", nev(id), pi[playerid][aname], indok);
SendClientMessageToAll(piros, str);
Ban(id);
return 1;
} else { SendClientMessage(playerid, szurke, \"Nem vagy egyes szintû admin.\"); return 1; }
}
CMD:goto(playerid, params[])
{
if(pi[playerid][admin] >= 1 || pi[playerid][as] == 1)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid,feher,\"Használat: /goto [id]\");
new Float: X, Float: Y, Float: Z;
GetPlayerPos(id, X, Y, Z);
SetPlayerPos(playerid, X+2, Y, Z);
return 1;
} else { SendClientMessage(playerid, szurke, \"Nem vagy admin\"); return 1; }
}
CMD:get(playerid, params[])
{
if(pi[playerid][admin] >= 2)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid,feher,\"Használat: /get [id]\");
new Float: X, Float: Y, Float: Z;
GetPlayerPos(playerid, X, Y, Z);
SetPlayerPos(id, X+2, Y, Z);
return 1;
} else { SendClientMessage(playerid, szurke, \"Nem vagy admin\"); return 1; }
}
CMD:veh(playerid,params[])
{
if(pi[playerid][admin] >= 1 || pi[playerid][vip] != 0)
{
new kocsi;
if(sscanf(params,\"d\",kocsi)) return SendClientMessage(playerid,feher,\"Használat: /veh [kocsiid]\");
new Float: X, Float: Y, Float: Z;
GetPlayerPos(playerid, X, Y, Z);
CreateVehicle(kocsi,X,Y+2,Z,0,0,0,600);
msg(playerid,\"Kocsi lekérve.\");
} else msg(playerid,\"Nem vagy 2es admin.\");
return 1;
}
CMD:spec(playerid,params[])
{
if(pi[playerid][admin] >= 1)
{
new spec;
if(sscanf(params,\"u\",spec)) return SendClientMessage(playerid, feher, \"Használat: /spec [id]\");
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, spec);
SendClientMessage(playerid, feher, \"Megfigyelés bekapcsolva.\");
SetPlayerInterior(playerid,GetPlayerInterior(spec));
SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(spec));
} else { SendClientMessage(playerid, piros, \"Nem vagy admin.\"); }
return 1;
}
CMD:ip(playerid,params[])
{
if(pi[playerid][admin] >= 1 || pi[playerid][vip] != 0)
{
new id;
if(sscanf(params,\"u\",id)) return SendClientMessage(playerid, feher, \"Használat: /ip [id]\");
new ipci[16];
GetPlayerIp(id,ipci,16);
format(str,128,\"%s IP: %s\",nev(id),ipci);
SendClientMessage(playerid, -1, str);
} else { SendClientMessage(playerid, piros, \"Nem vagy admin.\"); }
return 1;
}
CMD:specki(playerid)
{
if(pi[playerid][admin] >= 1)
{
SendClientMessage(playerid, feher, \"Megfigyelés kikapcsolva.\");
TogglePlayerSpectating(playerid, 0);
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,0,0,5);
} else { SendClientMessage(playerid, piros, \"Nem vagy admin.\"); }
return 1;
}
stock nev(id)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(id,name,sizeof(name));
return name;
}
stock msg(id,uzi[])
{
SendClientMessage(id,feher,uzi);
}
stock nullazas(id)
{
lepve[id] = 0;
pi[id][admin] = 0;
pi[id][ban] = 0;
pi[id][as] = 0;
pi[id][vip] = 0;
rpw[id] = 0;
}
stock save(id)
{
new fajl[128];
format(fajl,sizeof(fajl),\"/badmin/%s.ini\",nev(id));
if(fexist(fajl))
{
dini_IntSet(fajl,\"admin\", pi[id][admin]);
dini_IntSet(fajl,\"ban\", pi[id][ban]);
dini_IntSet(fajl,\"as\", pi[id][as]);
dini_IntSet(fajl,\"vip\", pi[id][vip]);
dini_Set(fajl,\"aname\", pi[id][aname]);
dini_IntSet(fajl,\"penz\",GetPlayerMoney(id));
dini_IntSet(fajl,\"pont\",GetPlayerScore(id));
}
}
stock load(id)
{
new fajl[128];
format(fajl,sizeof(fajl),\"/badmin/%s.ini\",nev(id));
if(fexist(fajl))
{
pi[id][admin] = dini_Int(fajl,\"admin\");
pi[id][ban] = dini_Int(fajl,\"ban\");
pi[id][as] = dini_Int(fajl,\"as\");
pi[id][vip] = dini_Int(fajl,\"vip\");
format(pi[id][aname],24,\"%s\",dini_Get(fajl,\"aname\"));
GivePlayerMoney(id,dini_Int(fajl,\"penz\"));
SetPlayerScore(id,dini_Int(fajl,\"pont\"));
}
}
v0.3
(Nekem alig akarta mutatni csak azért)