#include <amxmodx>
#include <amxmisc>
new const PLUGIN[] = "Regisztracios Menu";
new const VERSION[] = "1.0";
new const AUTHOR[] = "Star";
new const Prefix[] = "[Regi]";
new Username[33][32], Password[33][32];
new bool: LoggedIn[33];
new Menu[33];
enum _:info
{
uname[32],
pass[32]
};
new Array:regusers, data[info];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
regusers = ArrayCreate(info);
LoadUsers();
register_clcmd("say /reg", "Regisztracio_Menu");
register_clcmd("Felhasznalo", "GetUsername");
register_clcmd("Jelszo", "GetPassword");
}
public client_putinserver(id)
{
LoggedIn[id] = false;
Username[id] = "";
Password[id] = "";
}
public Regisztracio_Menu(id)
{
new menu = menu_create("\wRegsztracios Menu", "RegFo_h");
if(!LoggedIn[id])
{
menu_additem(menu, "Regisztracio", "1", 0);
menu_additem(menu, "Bejelentkezes", "2", 0);
}
else menu_additem(menu, "Kijeletkezes", "1", 0);
menu_display(id, menu, 0);
}
public RegFo_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
if(LoggedIn[id])
{
LoggedIn[id] = false;
client_print(id, print_chat, "%s Sikeresen kijelentkeztel.", Prefix);
return;
}
Menu[id] = item;
Reg_Menu(id);
}
public Reg_Menu(id)
{
new cim[121];
new menu = menu_create(Menu[id] == 0 ? "\wRegisztracio" : "\wBejelentkezes", "Reg_h");
formatex(cim, charsmax(cim), "Felhasznalonev: \r%s", Username[id]);
menu_additem(menu, cim, "1", 0);
formatex(cim, charsmax(cim), "Jelszo: \r%s\n", Password[id]);
menu_additem(menu, cim, "2", 0);
menu_additem(menu, Menu[id] == 0 ? "Regisztralas!" : "Bejelentkezes!", "3", 0);
menu_display(id, menu, 0);
}
public Reg_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
switch(item)
{
case 0:client_cmd(id, "messagemode Felhasznalo");
case 1:client_cmd(id, "messagemode Jelszo");
case 2:
{
new User = CheckUser(Username[id]);
if(Menu[id] == 0)
{
if(User == -1)
{
client_print(id, print_chat, "%s Sikeresen regisztraltal, most mar bejelentkezhetsz! Felhasznalo: %s | Jelszo: %s", Prefix, Username[id], Password[id]);
SaveUser(Username[id], Password[id])
Menu[id] = 1;
Reg_Menu(id);
}
else
{
client_print(id, print_chat, "%s Ez a felhasznalo mar letezik!", Prefix);
Reg_Menu(id);
}
}
else if(Menu[id] == 1)
{
if(User > -1)
{
ArrayGetArray(regusers, User, data);
if(equal(data[pass], Password[id]))
{
client_print(id, print_chat, "%s Sikeresen bejelentkeztel.", Prefix);
LoggedIn[id] = true;
}
else
{
client_print(id, print_chat, "%s Hibas jelszo, probald ujra.", Prefix);
Reg_Menu(id);
}
}
else client_print(id, print_chat, "%s %s felhasznalo nincs regisztralva a szerveren!", Prefix, Username[id]);
}
}
}
}
public GetUsername(id) {
new u[32];
read_args(u, charsmax(u));
remove_quotes(u);
if(strlen(u) < 6)
{
client_print(id, print_chat, "%s A felhasznalonevednek hosszabb kell hogy legyen mint 6 karakter!", Prefix);
client_cmd(id, "messagemode Felhasznalo");
}
else copy(Username[id], charsmax(Username[]), u);
Reg_Menu(id);
}
public GetPassword(id) {
new p[32];
read_args(p, charsmax(p));
remove_quotes(p);
if(strlen(p) < 6)
{
client_print(id, print_chat, "%s A jelszavad hosszabb kell hogy legyen mint 6 karakter!", Prefix);
client_cmd(id, "messagemode Jelszo");
}
else copy(Password[id], charsmax(Password[]), p);
Reg_Menu(id);
}
public CheckUser(const sName[])
{
for(new i = 0; i < ArraySize(regusers); i++)
{
ArrayGetArray(regusers, i, data);
if(equal(sName, data[uname])) return i;
}
return -1;
}
public LoadUsers()
{
new file[200];
get_configsdir(file, 199);
format(file, 199, "%s/regusers.ini", file);
if (!file_exists(file))
return PLUGIN_HANDLED;
new pFile = fopen(file, "rt");
if(pFile)
{
new Line[192];
new s[2][32];
while(!feof(pFile))
{
fgets(pFile, Line, 191);
if(Line[0] == ';' || strlen(Line) < 5)
continue;
parse(Line, s[0], 31, s[1], 31);
copy(data[uname], charsmax(data[uname]), s[0]);
copy(data[pass], charsmax(data[pass]), s[1]);
ArrayPushArray(regusers, data);
}
fclose(pFile);
}
return 0;
}
public SaveUser(const sName[], const sPass[])
{
new file[200];
copy(data[uname], charsmax(data[uname]), sName);
copy(data[pass], charsmax(data[pass]), sPass);
ArrayPushArray(regusers, data);
get_configsdir(file, 199);
format(file, 199, "%s/regusers.ini", file);
new pFile = fopen(file, "at");
if(pFile)
{
new line[70];
formatex(line, 69, "^"%s^" ^"%s^"", sName, sPass);
fputs(pFile, line);
fclose(pFile);
}
return PLUGIN_HANDLED;
}