#include <amxmodx>
#include <fakemeta>
#define PLUGIN "Regisztracios Rendszer"
#define VERSION "1.27"
#define AUTHOR "DeRoiD"
#define VilagHaboru 1914
#pragma semicolon 1
new Felhasznalo[3][33][32], Jelszo[3][33][32], MenuMod[33], bool:Bejelentkezve[33], BeviteliMod[33], Ellenorizve[33];
new FajlUt[] = "addons/amxmodx/configs/deroidrm/regmenuadatok.ini";
new FajlUtParancsok[] = "addons/amxmodx/configs/deroidrm/regmenuparancsok.ini";
new FajlUtConsoleParancsok[] = "addons/amxmodx/configs/deroidrm/regmenuconparancsok.ini";
new Prefix[] = "DRR";
new Menuk[5], Cvarok[5], String[100][512];
new const BfSGoHangok[][] = {
"BfS_Team_ngah/Zened.wav"
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("Register System", "DeRoiD", FCVAR_SERVER);
register_clcmd("REGFELHASZNALO", "Adatok");
register_clcmd("REGJELSZO", "Adatok");
register_clcmd("LOGFELHASZNALO", "Adatok");
register_clcmd("LOGJELSZO", "Adatok");
register_clcmd("UJ_JELSZO", "Adatok");
register_clcmd("REGI_JELSZO", "Adatok");
register_clcmd("say", "Parancsok");
register_clcmd("say_team", "Parancsok");
Menuk[0] = register_menuid("FoMenu");
register_menucmd(Menuk[0], 1023, "FoMenu");
Menuk[1] = register_menuid("RegMenu");
register_menucmd(Menuk[1], 1023, "RegMenu");
Menuk[2] = register_menuid("LogMenu");
register_menucmd(Menuk[2], 1023, "LogMenu");
Menuk[3] = register_menuid("KiMenu");
register_menucmd(Menuk[3], 1023, "KiMenu");
Menuk[4] = register_menuid("JVMenu");
register_menucmd(Menuk[4], 1023, "JVMenu");
Cvarok[0] = register_cvar("AdatHossz", "5");
Cvarok[1] = register_cvar("SotetKepernyo", "0");
Cvarok[2] = register_cvar("FelhasznaloMod", "0");
Cvarok[3] = register_cvar("NincsNevValtas", "0");
Cvarok[4] = register_cvar("Nyelv", "hu");
set_task(random_float(80.0, 100.0), "Hirdetes", VilagHaboru, _, _, "b");
register_forward(FM_ClientUserInfoChanged, "NevValtas");
Ellenorzes();
MenuBetoltes();
ConsoleParancsok();
}
public plugin_precache()
{
for(new i;i < sizeof(BfSGoHangok); i++) precache_sound(BfSGoHangok[i]);
}
public Hirdetes()
{
print_color(0, "!g[%s]!y %s", Prefix, String[23]);
}
public MenuBetoltes()
{
new FajlUtString[64], Nyelv[32];
get_pcvar_string(Cvarok[4], Nyelv, 31);
if(equal(Nyelv, "hu") || equal(Nyelv, "en"))
{
format(FajlUtString, charsmax(FajlUtString), "addons/amxmodx/configs/deroidrm/regmenu_%s.ini", Nyelv);
}
else
{
format(FajlUtString, charsmax(FajlUtString), "addons/amxmodx/configs/deroidrm/regmenu_en.ini");
}
new OsszesSor, Sor, BString[512];
OsszesSor = file_size(FajlUtString, 1);
for(new Sorok; Sorok < OsszesSor; Sorok++)
{
read_file(FajlUtString, Sorok, BString, 511, Sor);
format(String[Sorok], 511, "%s", BString);
}
}
public ConsoleParancsok()
{
new OsszesSor, Parancs[32], Sor;
OsszesSor = file_size(FajlUtConsoleParancsok, 1);
for(new Sorok; Sorok < OsszesSor; Sorok++)
{
read_file(FajlUtConsoleParancsok, Sorok, Parancs, 31, Sor);
register_clcmd(Parancs, "ConsoleParancsTiltas");
}
}
public ConsoleParancsTiltas(id)
{
if(!Bejelentkezve[id])
{
print_color(id, "!g[%s]!y %s", Prefix, String[24]);
Menu(id);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public Parancsok(id)
{
new Parancs[32];
read_args(Parancs, 31);
remove_quotes(Parancs);
if(equal(Parancs, "/reg") || equal(Parancs, "/register") || equal(Parancs, "/regisztralas"))
{
Menu(id);
}
new TiltottParancsok[128], Fajl, Sor, Lekeres[2][32];
while((Fajl = read_file(FajlUtParancsok, Fajl, TiltottParancsok, 127, Sor)) != 0)
parse(TiltottParancsok, Lekeres[0], 31, Lekeres[1], 31);
if(equal(Parancs, Lekeres[0]) && !Bejelentkezve[id])
{
print_color(id, "!g[%s]!y %s", Prefix, String[24]);
if(str_to_num(Lekeres[1]) == 1)
{
Menu(id);
}
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public Ellenorzes()
{
if(!fopen(FajlUt, "r"))
{
write_file(FajlUt, "");
}
if(!fopen(FajlUtParancsok, "r"))
{
write_file(FajlUtParancsok, "");
}
if(!fopen(FajlUtConsoleParancsok, "r"))
{
write_file(FajlUtConsoleParancsok, "");
}
}
public Menu(id)
{
if(!Bejelentkezve[id] && get_pcvar_num(Cvarok[1]) == 1)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id);
write_short(100000);
write_short(100000);
write_short(1<<2);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
client_cmd(0, "spk %s", BfSGoHangok[random_num(0, 1)]);
}
new MString[5][128], MenuString[512], Gomb;
if(MenuMod[id] == 1 && !Bejelentkezve[id])
{
new Talalat;
if(!equal(Felhasznalo[0][id], ""))
{
new Sor[256], Lekeres[32], Fajl;
Fajl = fopen(FajlUt, "rt");
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 3)
continue;
parse(Sor, Lekeres, 31);
if(equal(Lekeres, Felhasznalo[0][id]))
{
Talalat++;
}
}
fclose(Fajl);
}
if(Talalat > 0)
format(MString[0], 127, "\w%s^n%s^n^n", String[3], String[1]);
else
format(MString[0], 127, "\w%s^n%s^n^n", String[3], String[0][1]);
format(MString[1], 127, "\y1. \r%s:\d %s^n", String[4], Felhasznalo[0][id]);
format(MString[2], 127, "\y2. \r%s:\d %s^n^n", String[5], Jelszo[0][id]);
format(MString[3], 127, "\y3. \r%s^n^n", String[6]);
format(MString[4], 127, "\y0. \d%s", String[9]);
add(MenuString, 511, MString[0]);
add(MenuString, 511, MString[1]);
add(MenuString, 511, MString[2]);
add(MenuString, 511, MString[3]);
add(MenuString, 511, MString[4]);
Gomb = (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<9);
show_menu(id, Gomb, MenuString, -1, "RegMenu");
}
else if(MenuMod[id] == 2 && !Bejelentkezve[id])
{
new Talalat;
if(!equal(Felhasznalo[1][id], ""))
{
new Sor[256], Lekeres[32], Fajl;
Fajl = fopen(FajlUt, "rt");
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 3)
continue;
parse(Sor, Lekeres, 31);
if(equal(Lekeres, Felhasznalo[1][id]))
{
Talalat++;
}
}
fclose(Fajl);
}
if(Talalat > 0)
format(MString[0], 127, "\w%s^n%s^n^n", String[3], String[1]);
else
format(MString[0], 127, "\w%s^n%s^n^n", String[3], String[0][1]);
format(MString[1], 127, "\y1. \r%s:\d %s^n", String[4], Felhasznalo[1][id]);
format(MString[2], 127, "\y2. \r%s:\d %s^n^n", String[5], Jelszo[1][id]);
format(MString[3], 127, "\y3. \r%s^n^n", String[7]);
format(MString[4], 127, "\y0. \d%s", String[9]);
add(MenuString, 511, MString[0]);
add(MenuString, 511, MString[1]);
add(MenuString, 511, MString[2]);
add(MenuString, 511, MString[3]);
add(MenuString, 511, MString[4]);
Gomb = (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<9);
show_menu(id, Gomb, MenuString, -1, "LogMenu");
}
else if(MenuMod[id] == 3 && Bejelentkezve[id])
{
format(MString[0], 127, "\w%s^n%s^n^n", String[3], String[2]);
format(MString[1], 127, "\y1. \r%s:\d %s^n", String[12], Jelszo[1][id]);
format(MString[2], 127, "\y2. \r%s:\d %s^n^n", String[13], Jelszo[0][id]);
format(MString[3], 127, "\y3. \r%s^n^n", String[11]);
format(MString[4], 127, "\y0. \d%s", String[9]);
add(MenuString, 511, MString[0]);
add(MenuString, 511, MString[1]);
add(MenuString, 511, MString[2]);
add(MenuString, 511, MString[3]);
add(MenuString, 511, MString[4]);
Gomb = (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<9);
show_menu(id, Gomb, MenuString, -1, "JVMenu");
}
else if(!Bejelentkezve[id])
{
format(MString[0], 127, "\w%s^n^n", String[3]);
format(MString[1], 127, "\y1. \r%s^n", String[6]);
format(MString[2], 127, "\y2. \r%s^n^n", String[7]);
format(MString[3], 127, "\y0. \d%s", String[10]);
add(MenuString, 511, MString[0]);
add(MenuString, 511, MString[1]);
add(MenuString, 511, MString[2]);
add(MenuString, 511, MString[3]);
Gomb = (1<<0 | 1<<1 | 1<<2 | 1<<9);
show_menu(id, Gomb, MenuString, -1, "FoMenu");
}
else
{
format(MString[0], 127, "\w%s^n%s^n^n", String[3], String[2]);
format(MString[1], 127, "\y1. \r%s^n", String[8]);
format(MString[2], 127, "\y2. \r%s^n^n", String[11]);
format(MString[3], 127, "\y0. \d%s", String[10]);
add(MenuString, 511, MString[0]);
add(MenuString, 511, MString[1]);
add(MenuString, 511, MString[2]);
add(MenuString, 511, MString[3]);
Gomb = (1<<0 | 1<<1 | 1<<2 | 1<<9);
show_menu(id, Gomb, MenuString, -1, "KiMenu");
}
}
public KiMenu(id, Gomb)
{
Gomb++;
switch(Gomb)
{
case 1:{
Felhasznalo[2][id] = "";
Jelszo[2][id] = "";
JatekosNullazas(id);
AlapFelhasznalo(id);
Menu(id);
}
case 2:{
MenuMod[id] = 3;
Menu(id);
}
default:{
show_menu(id, 0, "^n", 1);
}
}
}
public JVMenu(id, Gomb)
{
Gomb++;
switch(Gomb)
{
case 1:{
MenuMod[id] = 3;
BeviteliMod[id] = 5;
client_cmd(id, "messagemode REGI_JELSZO");
Menu(id);
}
case 2:{
MenuMod[id] = 3;
BeviteliMod[id] = 6;
client_cmd(id, "messagemode UJ_JELSZO");
Menu(id);
}
case 3:{
if(strlen(Jelszo[0][id]) < get_pcvar_num(Cvarok[0]))
{
print_color(id, "!g[%s]!y %s", Prefix, String[14]);
Menu(id);
return PLUGIN_HANDLED;
}
else if(equal(Jelszo[2][id][id], Jelszo[1][id][id]))
{
Megvaltoztat(id);
}
else
{
Menu(id);
}
}
default:{
BeviteliMod[id] = 0;
MenuMod[id] = 0;
Menu(id);
}
}
return PLUGIN_HANDLED;
}
public Megvaltoztat(id)
{
new Sor[256], Lekeres[32], Fajl, Szam;
Fajl = fopen(FajlUt, "rt");
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 3)
continue;
parse(Sor, Lekeres, 31);
if(equal(Lekeres, Felhasznalo[2][id]))
{
format(Sor, sizeof Sor - 1, "^"%s^" ^"%s^"", Felhasznalo[2][id], Jelszo[0][id]);
write_file(FajlUt, Sor, Szam);
}
Szam++;
}
fclose(Fajl);
print_color(id, "!g[%s]!y %s", Prefix, String[15]);
Jelszo[2][id] = Jelszo[0][id];
Jelszo[1][id] = "";
Jelszo[0][id] = "";
}
public FoMenu(id, Gomb)
{
Gomb++;
switch(Gomb)
{
case 1:{
Felhasznalo[2][id] = "";
Jelszo[2][id] = "";
JatekosNullazas(id);
AlapFelhasznalo(id);
MenuMod[id] = 1;
Menu(id);
}
case 2:{
Felhasznalo[1][id] = "";
Jelszo[1][id] = "";
JatekosNullazas(id);
AlapFelhasznalo(id);
MenuMod[id] = 2;
Menu(id);
}
default:{
BeviteliMod[id] = 0;
MenuMod[id] = 0;
show_menu(id, 0, "^n", 1);
}
}
}
public LogMenu(id, Gomb)
{
Gomb++;
switch(Gomb)
{
case 1:{
if(get_pcvar_num(Cvarok[2]) == 0)
{
BeviteliMod[id] = 3;
MenuMod[id] = 2;
Menu(id);
client_cmd(id, "messagemode LOGFELHASZNALO");
}
else
{
MenuMod[id] = 2;
Menu(id);
}
}
case 2:{
BeviteliMod[id] = 4;
MenuMod[id] = 2;
Menu(id);
client_cmd(id, "messagemode LOGJELSZO");
}
case 3:{
if(get_pcvar_num(Cvarok[2]) == 0)
{
if(strlen(Felhasznalo[1][id]) < get_pcvar_num(Cvarok[0]) && strlen(Jelszo[1][id]) < get_pcvar_num(Cvarok[0]))
{
print_color(id, "!g[%s]!y %s", Prefix, String[16]);
Menu(id);
return PLUGIN_HANDLED;
}
}
else
{
if(strlen(Jelszo[1][id]) < get_pcvar_num(Cvarok[0]))
{
print_color(id, "!g[%s]!y %s", Prefix, String[16]);
Menu(id);
return PLUGIN_HANDLED;
}
}
if(equal(Felhasznalo[2][id][id], Felhasznalo[1][id][id]) && equal(Jelszo[2][id][id], Jelszo[1][id][id]))
{
Bejelentkezve[id] = true;
Felhasznalo[1][id] = "";
Jelszo[1][id] = "";
Felhasznalo[0][id] = "";
Jelszo[0][id] = "";
print_color(id, "!g[%s]!y %s", Prefix, String[17]);
if(get_pcvar_num(Cvarok[1]) == 1)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0, 0, 0}, id);
write_short(0);
write_short(0);
write_short(1<<2);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(0);
message_end();
}
}
else
{
Menu(id);
return PLUGIN_HANDLED;
}
}
default:{
BeviteliMod[id] = 0;
MenuMod[id] = 0;
Menu(id);
}
}
return PLUGIN_HANDLED;
}
public RegMenu(id, Gomb)
{
Gomb++;
switch(Gomb)
{
case 1:{
if(get_pcvar_num(Cvarok[2]) == 0)
{
BeviteliMod[id] = 1;
MenuMod[id] = 1;
Menu(id);
client_cmd(id, "messagemode REGFELHASZNALO");
}
else
{
MenuMod[id] = 1;
Menu(id);
}
}
case 2:{
BeviteliMod[id] = 2;
MenuMod[id] = 1;
Menu(id);
client_cmd(id, "messagemode REGJELSZO");
}
case 3:{
if(get_pcvar_num(Cvarok[2]) == 0)
{
if(strlen(Felhasznalo[0][id]) < get_pcvar_num(Cvarok[0]) && strlen(Jelszo[0][id]) < get_pcvar_num(Cvarok[0]))
{
print_color(id, "!g[%s]!y %s", Prefix, String[18]);
BeviteliMod[id] = 0;
MenuMod[id] = 0;
Menu(id);
return PLUGIN_HANDLED;
}
}
else
{
if(strlen(Jelszo[0][id]) < get_pcvar_num(Cvarok[0]))
{
print_color(id, "!g[%s]!y %s", Prefix, String[18]);
BeviteliMod[id] = 0;
MenuMod[id] = 0;
Menu(id);
return PLUGIN_HANDLED;
}
}
new Sor[256], Lekeres[32], Fajl, Talalat;
Fajl = fopen(FajlUt, "rt");
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 3)
continue;
parse(Sor, Lekeres, 31);
if(equal(Lekeres, Felhasznalo[0][id]))
{
Talalat++;
}
}
fclose(Fajl);
if(Talalat > 0)
{
print_color(id, "!g[%s]!t %s!y %s", Prefix, Felhasznalo[0][id], String[20]);
return PLUGIN_HANDLED;
}
else if(Talalat == 0)
{
new RString[128];
format(RString, 127, "!g[!y%s:!t %s !g& !y%s:!t %s!g]", String[4], Felhasznalo[0][id], String[5], Jelszo[0][id]);
print_color(id, "!g[%s]!y %s %s", Prefix, String[19], RString);
MenuMod[id] = 0;
Menu(id);
Mentes(id);
Felhasznalo[2][id] = Felhasznalo[0][id];
Jelszo[2][id] = Jelszo[0][id];
}
}
default:{
BeviteliMod[id] = 0;
MenuMod[id] = 0;
Menu(id);
}
}
return PLUGIN_HANDLED;
}
public Adatok(id)
{
if(BeviteliMod[id] == 0)
return PLUGIN_HANDLED;
new Adat[32];
read_args(Adat, charsmax(Adat));
remove_quotes(Adat);
if(strlen(Adat[id]) < get_pcvar_num(Cvarok[0]))
{
if(BeviteliMod[id] == 1 || BeviteliMod[id] == 3)
{
print_color(id, "!g[%s]!y %s", Prefix, String[21]);
}
if(BeviteliMod[id] == 2 || BeviteliMod[id] >= 4)
{
print_color(id, "!g[%s]!y %s", Prefix, String[22]);
}
if(!equal("", Adat))
SikertelenBevitel(id);
}
else
{
if(BeviteliMod[id] == 1)
{
new Sor[256], Lekeres[32], Fajl, Talalat;
Fajl = fopen(FajlUt, "rt");
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 3)
continue;
parse(Sor, Lekeres, 31);
if(equal(Lekeres, Adat))
{
Talalat++;
}
}
fclose(Fajl);
if(Talalat > 0)
{
print_color(id, "!g[%s]!t %s!y %s", Prefix, Adat, String[20]);
SikertelenBevitel(id);
return PLUGIN_HANDLED;
}
else if(Talalat == 0)
{
Felhasznalo[0][id] = Adat;
}
}
else if(BeviteliMod[id] == 2)
{
Jelszo[0][id] = Adat;
}
else if(BeviteliMod[id] == 3)
{
Felhasznalo[1][id] = Adat;
Betoltes(id);
}
else if(BeviteliMod[id] == 4)
{
Jelszo[1][id] = Adat;
Betoltes(id);
}
else if(BeviteliMod[id] == 5)
{
Jelszo[1][id] = Adat;
}
else if(BeviteliMod[id] == 6)
{
Jelszo[0][id] = Adat;
}
}
Menu(id);
return PLUGIN_CONTINUE;
}
public SikertelenBevitel(id)
{
if(BeviteliMod[id] == 1)
client_cmd(id, "messagemode REGFELHASZNALO");
else if(BeviteliMod[id] == 2)
client_cmd(id, "messagemode REGJELSZO");
else if(BeviteliMod[id] == 3)
client_cmd(id, "messagemode LOGFELHASZNALO");
else if(BeviteliMod[id] == 4)
client_cmd(id, "messagemode LOGJELSZO");
else if(BeviteliMod[id] == 5)
client_cmd(id, "messagemode REGI_JELSZO");
else if(BeviteliMod[id] == 6)
client_cmd(id, "messagemode UJ_JELSZO");
}
public Mentes(id)
{
new FajlMentes[128], Fajl;
Fajl = fopen(FajlUt, "at+");
format(FajlMentes, sizeof FajlMentes - 1, "^"%s^" ^"%s^"^n", Felhasznalo[0][id], Jelszo[0][id]);
fprintf(Fajl, FajlMentes);
fclose(Fajl);
}
public Betoltes(id)
{
new Sor[256], Lekeres[2][32], Fajl;
Fajl = fopen(FajlUt, "rt");
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 3)
continue;
parse(Sor, Lekeres[0], 31, Lekeres[1], 31);
if(equal(Lekeres[0], Felhasznalo[1][id]))
{
Felhasznalo[2][id] = Lekeres[0];
Jelszo[2][id] = Lekeres[1];
break;
}
}
fclose(Fajl);
}
public client_connect(id)
{
JatekosNullazas(id);
}
public client_putinserver(id)
{
AlapFelhasznalo(id);
}
public AlapFelhasznalo(id)
{
if(get_pcvar_num(Cvarok[2]) == 1)
{
new Nev[32];
get_user_name(id, Nev, 31);
for(new Szam; Szam < 2; Szam++)
{
Felhasznalo[Szam][id] = Nev;
}
}
}
public client_disconnect(id)
{
Felhasznalo[2][id] = "";
Jelszo[2][id] = "";
JatekosNullazas(id);
}
public JatekosNullazas(id)
{
Ellenorizve[id] = 0;
MenuMod[id] = 0;
Bejelentkezve[id] = false;
BeviteliMod[id] = 0;
for(new Szam; Szam < 1; Szam++)
{
Felhasznalo[Szam][id] = "";
Jelszo[Szam][id] = "";
}
}
public NevValtas(id)
{
if(!is_user_connected(id) || get_pcvar_num(Cvarok[3]) == 0)
return FMRES_IGNORED;
new RegiNev[32], UjNev[32], Nev[32];
get_user_name(id, Nev, 31);
pev(id, pev_netname, RegiNev, charsmax(RegiNev));
if(RegiNev[0])
{
get_user_info(id, "name", UjNev, charsmax(UjNev));
if(!equal(RegiNev, UjNev))
{
set_user_info(id, "name", RegiNev);
return FMRES_HANDLED;
}
}
return FMRES_IGNORED;
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
if(id) players[0] = id; else get_players(players, count, "ch");
{
for(new i = 0; i < count; i++)
{
if(is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
return PLUGIN_HANDLED;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/