#include <amxmodx>
// Új sor, és hozzá adjuk a mértékeket.
new Array:g_steamid
new Array:g_password
new Array:g_flags
new Array:g_mode
// Array of player flags
new Array:g_playerflags
// Létrehozzuk a cvarokat a setinfohoz & a késedelmi flagokat.
new cvar_setinfo
new cvar_defaultflag
// Itt vannak a flagek és a loggin típusok
enum
{
KZ_JOIN_PASS = (1<<0),
KZ_JOIN_TAGS = (1<<1),
KZ_JOIN_STEAM = (1<<2),
KZ_JOIN_IP = (1<<3),
KZ_JOIN_NOPASS = (1<<4)
}
public plugin_precache()
{
register_plugin("Admins Loggin", "1.0", "ReymonARG")
// Most létrehozzunk 2 cvart .
cvar_setinfo = register_cvar("fakeadmin_setinfo", "_pw")
cvar_defaultflag = register_cvar("fakeadmin_defaultflag", "z")
register_concmd("fakeadmin_reload", "fakereload", ADMIN_RCON)
// Létre kell hozzuk a mértékeket a tömböknek
g_steamid = ArrayCreate(32, 1)
g_password = ArrayCreate(32, 1)
g_flags = ArrayCreate(1, 1)
g_mode = ArrayCreate(1, 1)
g_playerflags = ArrayCreate(1, 1)
for( new i = 0; i <= 32; i++)
ArrayPushCell(g_playerflags, 0)
// Most megadjuk az rendszernek az elérést
fake_get_admins("addons/amxmodx/configs/newusers.ini")
}
public fakereload(id, level)
{
if( get_user_flags(id) & level )
{
fake_get_admins("addons/amxmodx/configs/newusers.ini")
for( new i = 1; i <= 32; i++)
{
if( !is_user_connected(i) ) continue
fakeadmin_authplayer(i)
}
}
return PLUGIN_HANDLED
}
public fake_get_admins(const filename[])
{
//Elsõnek létrehozzunk pár mentést ami menti az adatokat.
static data[192], steamid[32], password[32], flags[32], mode[10]
// Az adminok átrakásához. Ki kell töröljünk minden információt és ujra létrehozni.
ArrayClear(g_steamid)
ArrayClear(g_password)
ArrayClear(g_flags)
ArrayClear(g_mode)
// Most arra van szükség, hogy nyissa meg a fájlt, és olvasni, sorban soronként.
new f = fopen(filename, "rt" )
while( !feof(f) )
{
fgets( f, data, 191)
// Továbbra is egy formátummal kell irjuk hogyha szeretnénk az adatokat.
if( data[0] == '/' && data[1] == '/' || data[0] == ';' || data[0] == ' ' || data[0] == '^n') continue
// Mert ha nem egyforma akkor átugrik a következõ sorra (azaz nem fog müködni)
if( parse( data, steamid, 31, password, 31, flags, 31, mode, 9) != 4 ) continue
// Push the information into Arrays items.
ArrayPushString(g_steamid, steamid)
ArrayPushString(g_password, password)
ArrayPushCell(g_flags, read_flags(flags))
ArrayPushCell(g_mode, read_flags(flags))
}
// Nagyon fontos hogy lezárjuk a fájlt.
fclose(f)
// Kiírjuk a számtételeket ahány tömbe SteamID szerepel.
server_print("%i Admin from %s", ArraySize(g_steamid), filename)
return 1
}
public client_connect(id)
{
static defaultflags[32]
get_pcvar_string(cvar_defaultflag, defaultflags, 31)
// Elsõnek beállitjuk a játékos adatokat és a flagokat. És utánna meg tudjuk adni hogy milyen admin legyen.
ArraySetCell(g_playerflags, id, read_flags(defaultflags) )
}
public client_authorized(id)
{
fakeadmin_authplayer(id)
}
// Játékos név csere?
public client_infochanged(id)
{
static oldname[32], newname[32]
get_user_name(id, oldname, 31)
get_user_info(id, "name", newname, 31)
if( !equal(oldname, newname) )
fakeadmin_authplayer(id, newname)
}
// Feljogositjuk a játékost.
stock fakeadmin_authplayer(id, const newname[] = "")
{
static name[32], authid[32], ip[32]
// Ha be van állítva a név másoljuk ki az új tömböt ha nem kap új nevet.
if( equal(newname, "") )
get_user_name(id, name, 31)
else
copy(name, 31, newname)
static plr_steamid[32], plr_password[32], plr_flags, plr_mode
static setinfo[32], setinfo_tag[32] // If needed password
get_pcvar_string(cvar_setinfo, setinfo_tag, 31)
// Most elérjük a játékos Steam Idjét és ipjét.
get_user_authid(id, authid, 31)
get_user_ip(id, ip, 31, 1) // Nagyon fontos ez IP port nélkül!
get_user_info(id, setinfo_tag, setinfo, 31)
for( new i = 0; i < sizeof(g_steamid); i++)
{
// First of all, we need to get the information.
ArrayGetString(g_steamid, i, plr_steamid, 31)
ArrayGetString(g_password, i, plr_password, 31)
plr_flags = ArrayGetCell(g_flags, i)
plr_mode = ArrayGetCell(g_mode, i)
// Most kiválaszuk a bejelentkezési módott.
if( plr_mode & KZ_JOIN_STEAM )
{
// Ha egyezik a SteamID akkor a lista folytatodik.
if( equal(plr_steamid, authid) )
{
// Most ellenörizük hogy jelszoval jelentkezik be vagy nem.
if( plr_mode & KZ_JOIN_NOPASS )
{
return ArraySetCell(g_playerflags, id, plr_flags)
}
else
{
// Ha jelszóval jelentkezik be állitsuk be a flaget
if( equal(plr_password, setinfo) )
{
return ArraySetCell(g_playerflags, id, plr_flags)
}
else
{
//Ha a kiválasztott játékos rossz jelszot add meg kickeli a szerverrõl. Kick indokkal....
if( plr_mode & KZ_JOIN_PASS )
{
return server_cmd("kick #%d Nincs jogosultságod ezen a szerveren!", get_user_userid(id))
}
}
}
}
}
else if( plr_mode & KZ_JOIN_IP )
{
if( equal(plr_steamid, ip) )
{
if( plr_mode & KZ_JOIN_NOPASS )
{
return ArraySetCell(g_playerflags, id, plr_flags)
}
else
{
if( equal(plr_password, setinfo) )
{
return ArraySetCell(g_playerflags, id, plr_flags)
}
else
{
if( plr_mode & KZ_JOIN_PASS )
{
return server_cmd("kick #%d Nincs jogosultságod ezen a szerveren!", get_user_userid(id))
}
}
}
}
}
else
{
static is_tag_flag = -1
if( plr_mode & KZ_JOIN_TAGS )
{
is_tag_flag = containi(name, plr_steamid)
}
if( is_tag_flag != -1 || equal(plr_steamid, name) )
{
if( plr_mode & KZ_JOIN_NOPASS )
{
return ArraySetCell(g_playerflags, id, plr_flags)
}
else
{
if( equal(plr_password, setinfo) )
{
return ArraySetCell(g_playerflags, id, plr_flags)
}
else
{
if( plr_mode & KZ_JOIN_PASS )
{
return server_cmd("kick #%d Nincs jogosultságod ezen a szerveren!", get_user_userid(id))
}
}
}
}
}
}
return 1
}