#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define SERVERID 1
#define MAXPLAYERS 33
#define KAR 256
new const Prefix[] = "!g[reg]"
//------------------------------------Válzotok------------------------------------
new jFelhasznaloBetolt[MAXPLAYERS], bool:jBejelentkezve[MAXPLAYERS], jFelhasznalo[MAXPLAYERS][32], jJelszo[MAXPLAYERS][32]
new jRegMod[MAXPLAYERS], jFolyamatban[MAXPLAYERS], jId[MAXPLAYERS], jTalalt[MAXPLAYERS]
//------------------------------------sql-------------------------------------------------
new const SQL_HOSZT[] = "127.0.0.1"
new const SQL_ADATBAZIS[] = "toretto"
new const SQL_FELHASZNALO[] = "root"
new const SQL_JELSZO[] = ""
new Handle:SQL_TUPLE
//----------------------------------------------------------------------------------------------
public plugin_init() {
register_clcmd("say /reg", "RegMenu")
register_concmd("MY_USERNAME", "cmdFelhasznalo")
register_concmd("MY_PASSWORD", "cmdJelszo")
set_task(1.0, "SQL_Elso_Betoltes")
}
//----------------------------------------------------------------------------------------------
public cmdFelhasznalo(id)
{
if(jBejelentkezve[id])
{
return PLUGIN_HANDLED
}
if(jFelhasznaloBetolt[id] == 1)
{
RegMenu(id)
return PLUGIN_HANDLED
}
new BeirtAdat[32], Hossz
BeirtAdat[0] = EOS
read_args(BeirtAdat, 31)
remove_quotes(BeirtAdat)
Hossz = strlen(BeirtAdat)
if(Hossz < 4)
{
print_color(id, "%s!y Ez nem lehet rövidebb mint 4 karakter!", Prefix)
return PLUGIN_HANDLED
}
if(Hossz > 19)
{
print_color(id, "%s!y Ez nem lehet hosszabb mint 24 karakter!", Prefix)
return PLUGIN_HANDLED
}
copy(jFelhasznalo[id], 31, BeirtAdat)
SQL_RegEllenorzes(id)
return PLUGIN_HANDLED
}
public cmdJelszo(id)
{
if(jBejelentkezve[id] || strlen(jFelhasznalo[id]) == 0)
{
return PLUGIN_HANDLED
}
new BeirtAdat[32], Hossz
BeirtAdat[0] = EOS
read_args(BeirtAdat, 31)
remove_quotes(BeirtAdat)
Hossz = strlen(BeirtAdat)
if(Hossz < 4)
{
print_color(id, "%s!y Ez nem lehet rövidebb mint 4 karakter!", Prefix)
return PLUGIN_HANDLED
}
if(Hossz > 19)
{
print_color(id, "%s!y Ez nem lehet hosszabb mint 24 karakter!", Prefix)
return PLUGIN_HANDLED
}
copy(jJelszo[id], 31, BeirtAdat)
RegMenu(id)
return PLUGIN_HANDLED
}
public SQL_Elso_Betoltes()
{
SQL_TUPLE = SQL_MakeDbTuple(SQL_HOSZT, SQL_FELHASZNALO, SQL_JELSZO, SQL_ADATBAZIS)
}
public RegMenu(id) {
new String[128]
formatex(String, charsmax(String), "Regisztracios rendszer")
new menu = menu_create(String, "RegMenuh" )
if(strlen(jFelhasznalo[id]) > 0)
{
formatex(String, charsmax(String), "\rFelhasználónév:\d %s", jFelhasznalo[id])
menu_additem(menu, String, "1")
formatex(String, charsmax(String), "\rJelszó:\d %s", jJelszo[id])
menu_additem(menu, String, "2")
}
else
{
formatex(String, charsmax(String), "\rFelhasználónév:\d %s^n\d2. Jelszo:", jFelhasznalo[id])
menu_additem(menu, String, "1")
}
if(strlen(jFelhasznalo[id]) > 0 && strlen(jJelszo[id]) > 0)
{
if(jTalalt[id])
{
formatex(String, charsmax(String), "Bejelentkezés")
menu_additem(menu, String, "3")
}
else
{
formatex(String, charsmax(String), "\yRegisztrácio")
menu_additem(menu, String, "4")
}
}
menu_display(id, menu)
}
public RegMenuh(id, menu, item){
if(item == MENU_EXIT)
{
menu_destroy(menu)
return
}
new data[32], szName[64]
new access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback)
new key = str_to_num(data)
switch(key)
{
case 1 : {
client_cmd(id, "messagemode MY_USERNAME")
RegMenu(id)
}
case 2 : {
client_cmd(id, "messagemode MY_PASSWORD")
RegMenu(id)
}
case 3 : {
if(jFolyamatban[id] == 0)
{
jFolyamatban[id] = 1
print_color(id, "%s!y Bejelentkezés folyamatban! Várj türelmesen!", Prefix)
jRegMod[id] = 1
SQL_Ellenorzes(id)
RegMenu(id)
}
else
{
RegMenu(id)
}
}
case 4 : {
if(jFolyamatban[id] == 0)
{
jFolyamatban[id] = 1
print_color(id, "%s!y Regisztráció folyamatban! Várj türelmesen!", Prefix)
jRegMod[id] = 2
SQL_Ellenorzes(id)
RegMenu(id)
}
else
{
RegMenu(id)
}
}
}
}
public SQL_Ellenorzes(id)
{
new szQuery[128], len, a[32]
formatex(a, 31, "%s", jFelhasznalo[id])
replace_all(a, 31, "\", "\\")
replace_all(a, 31, "'", "\'")
len += formatex(szQuery[len], 128, "SELECT * FROM toretto_reg_s ")
len += formatex(szQuery[len], 128-len,"WHERE Felhasznalo = '%s'", a)
new szData[2]
szData[0] = id
szData[1] = get_user_userid(id)
SQL_ThreadQuery(SQL_TUPLE, "SQL_Ellenorzes_Eredmeny", szQuery, szData, 2)
}
public SQL_Ellenorzes_Eredmeny(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
return
}
else if(FailState == TQUERY_QUERY_FAILED)
{
set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
return
}
if(Errcode)
{
log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
return
}
new id = szData[0]
if(szData[1] != get_user_userid(id))
return
new Talalt = SQL_NumRows(Query)
if(jRegMod[id] == 2)
{
if(Talalt > 0)
{
print_color(id, "%s!y Ezt a felhasznalonevet jelenleg valaki hasznalja!", Prefix)
jFolyamatban[id] = 0
RegMenu(id)
}
else
{
SQL_jUj(id)
}
}
else if(jRegMod[id] == 1)
{
if(Talalt == 0)
{
print_color(id, "%s!y Hibás felhásznalónév vagy jelszó!", Prefix)
jFolyamatban[id] = 0
RegMenu(id)
}
else
{
SQL_jBetoltes(id)
}
}
}
public SQL_jUj(id)
{
new szQuery[512], len, a[32], b[32], c[32], Nev[32]
get_user_name(id, Nev, 31)
formatex(a, 31, "%s", jFelhasznalo[id])
formatex(b, 31, "%s", jJelszo[id])
formatex(c, 31, "%s", Nev)
replace_all(a, 31, "\", "\\")
replace_all(a, 31, "'", "\'")
replace_all(b, 31, "\", "\\")
replace_all(b, 31, "'", "\'")
replace_all(c, 31, "\", "\\")
replace_all(c, 31, "'", "\'")
len += formatex(szQuery[len], 511, "INSERT INTO toretto_reg_s ")
len += formatex(szQuery[len], 511-len,"(Felhasznalo,Jelszo,Nev) VALUES('%s','%s','%s')", a, b, c)
new szData[2]
szData[0] = id
szData[1] = get_user_userid(id)
SQL_ThreadQuery(SQL_TUPLE,"SQL_jUj_Eredmenyek", szQuery, szData, 2)
}
public SQL_jUj_Eredmenyek(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
return
}
else if(FailState == TQUERY_QUERY_FAILED)
{
set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
return
}
if(Errcode)
{
log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
return
}
new id = szData[0]
if(szData[1] != get_user_userid(id))
return
jFolyamatban[id] = 0
jRegMod[id] = 2
print_color(id, "%s!y Sikeresen regisztraltal!", Prefix)
print_color(id, "%s!y Felhasznaloneved: !t%s!y | Jelszavad: !t%s", Prefix, jFelhasznalo[id], jJelszo[id])
SQL_RegEllenorzes(id)
return
}
public SQL_RegEllenorzes(id)
{
new szQuery[128], len, a[32]
formatex(a, 31, "%s", jFelhasznalo[id])
replace_all(a, 31, "\", "\\")
replace_all(a, 31, "'", "\'")
len += formatex(szQuery[len], 128, "SELECT * FROM toretto_reg_s ")
len += formatex(szQuery[len], 128-len,"WHERE Felhasznalo = '%s'", a)
new szData[2]
szData[0] = id
szData[1] = get_user_userid(id)
SQL_ThreadQuery(SQL_TUPLE, "SQL_RegEllenorzes_Eredmeny", szQuery, szData, 2)
jFelhasznaloBetolt[id] = 1
}
public SQL_RegEllenorzes_Eredmeny(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
set_fail_state("[ *HIBA* ] NEM LEHET KAPCSOLODNI AZ ADATBAZISHOZ!")
return
}
else if(FailState == TQUERY_QUERY_FAILED)
{
set_fail_state("[ *HIBA* ] A LEKERDEZES MEGSZAKADT!")
return
}
if(Errcode)
{
log_amx("[ *HIBA* ] PROBLEMA A LEKERDEZESNEL! ( %s )",Error)
return
}
new id = szData[0]
if(szData[1] != get_user_userid(id))
return
new Talalt = SQL_NumRows(Query)
if(Talalt > 0)
{
jTalalt[id] = true
}
else
{
jTalalt[id] = false
}
jFelhasznaloBetolt[id] = 0
RegMenu(id)
}
public SQL_jBetoltes(id)
{
new szQuery[256], len, a[32]
formatex(a, 31, "%s", jFelhasznalo[id])
replace_all(a, 31, "\", "\\")
replace_all(a, 31, "'", "\'")
len += formatex(szQuery[len], 256, "SELECT * FROM toretto_reg_s ")
len += formatex(szQuery[len], 256-len,"WHERE Felhasznalo = '%s'", a)
new szData[2]
szData[0] = id
szData[1] = get_user_userid(id)
SQL_ThreadQuery(SQL_TUPLE,"SQL_jBetoltes_Eredmenyek", szQuery, szData, 2)
}
public SQL_jBetoltes_Eredmenyek(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error)
return
}
else
{
new id = szData[0]
if(szData[1] != get_user_userid(id))
return
new szSqlPassword[32]
SQL_ReadResult(Query, 2, szSqlPassword, 31)
if(equal(jJelszo[id], szSqlPassword)) {
if ( is_online( id ) )
{
print_color(id, "[%s] !y%s !ymar be van jelentkezve!", Prefix, jFelhasznalo[id]);
RegMenu(id);
return;
}
jId[id] = SQL_ReadResult(Query, 0)
SQL_jFrissites(id);
print_color(id, "%s!y Sikeresen bejelentkeztel!", Prefix)
jFolyamatban[id] = 0
jBejelentkezve[id] = true
//FoMenu(id)
//SQL_jAdmin(id)
}
else
{
print_color(id, "%s!y Hibas jelszo!", Prefix)
jFolyamatban[id] = 0
RegMenu(id)
}
}
}
public SQL_jFrissites(id)
{
if(!jBejelentkezve[id])
return
new sQuery[2000], szQuery[256], Nev[32]
new a[32]
get_user_name(id, Nev, 31)
formatex(a, 31, "%s", Nev)
replace_all(a, 31, "\", "\\")
replace_all(a, 31, "'", "\'")
formatex(szQuery, KAR, "UPDATE toretto_reg_s SET ")
add(sQuery, 1999, szQuery)
formatex(szQuery, KAR,"Nev = '%s', ", a)
add(sQuery, 1999, szQuery)
formatex(szQuery, KAR,"WHERE Id = '%d'", jId[id])
add(sQuery, 1999, szQuery)
SQL_ThreadQuery(SQL_TUPLE,"SQL_Eredmenyek", sQuery)
}
public SQL_Eredmenyek(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error)
return
}
}
public client_disconnect(id)
{
if(jBejelentkezve[id])
SQL_jFrissites(id)
jBejelentkezve[id] = false
}
public client_putinserver(id)
{
jFelhasznaloBetolt[id] = 0
jFolyamatban[id] = 0
jBejelentkezve[id] = false
copy(jJelszo[id], 31, "")
copy(jFelhasznalo[id], 31, "")
}
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
}
stock is_online( iPlayerId )
{
for ( new i = 1; i < 33; ++i )
if ( jBejelentkezve[ i ] )
if ( equal( jFelhasznalo[ iPlayerId ], jFelhasznalo[ i ] ) )
return i;
return 0;
}