#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "x"
//regisztráció
new bool:g_LoggedIn[33]
new g_RegisterSelection[33]
new g_szTempName[33][100]
new g_szTempPassWord[33][100]
new Handle:g_SqlTuple
new bool:kerdezze[33] = true
//Mysql csatlakozás
new Host[] = "mysql host"
new User[] = "mysql felhasznev"
new Pass[] = "mysql jelszo"
new Db[] = "mysql adatbazis neve"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /reg", "regiszraciofomenu")
register_logevent("round_start", 2, "1=Round_Start")
register_clcmd("FELHASZNALONEV", "cmdUsername")
register_clcmd("JELSZO", "cmdPw")
makeTuple()
createTable()
}
public regiszraciofomenu(id)
{
new szTemp[192]
formatex(szTemp, charsmax(szTemp), "\y[SG]\r ~\y Regisztrációs Menü^n\rStátusz:\d %s",g_LoggedIn[id] ? "Bejelentkezve":"Kijelentkezve" )
new menuLoginCreate = menu_create(szTemp, "menuLoginCreateHandler")
formatex(szTemp, charsmax(szTemp), "\w%s^n", g_LoggedIn[id] ? "Biztonsági mentés":"Nem regisztrálok")
menu_additem(menuLoginCreate, szTemp, "0")
formatex(szTemp, charsmax(szTemp), "\w%s", g_LoggedIn[id] ? "Kijelentkezés":"Bejelentkezés")
menu_additem(menuLoginCreate, szTemp, "1")
menu_additem(menuLoginCreate, "\yRegisztrA?ciAl", "2")
menu_setprop(menuLoginCreate, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menuLoginCreate, MPROP_PERPAGE, 7);
menu_display(id, menuLoginCreate, 0);
}
public menuLoginCreateHandler(id, menuLoginCreate, item)
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new data[6], iName[64], access, callback
menu_item_getinfo(menuLoginCreate, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 0:
{
if(g_LoggedIn[id])
{
updateTable(id)
print_color(id, "!g[SG]!t ~!y Sikeresen elkészítetted a!g biztonsági!y mentést.")
}
else if(g_LoggedIn[id] == false)
{
kerdezomenu(id)
}
}
case 1:
{
if(!g_LoggedIn[id])
{
g_RegisterSelection[id] = 2
client_cmd(id, "messagemode FELHASZNALONEV")
}
else if(g_LoggedIn[id])
{
g_LoggedIn[id] = false
print_color(id, "!g[SG]!t ~!y Sikeresen kijelentkeztél.")
}
}
case 2:
{
if(!g_LoggedIn[id]) {
g_RegisterSelection[id] = 1
client_cmd(id, "messagemode FELHASZNALONEV")
}
else if(g_LoggedIn[id])
{
print_color(id, "!g[SG]!t ~!y Be vagy jelentkezve ezért nem regisztrálhatsz.")
}
}
}
return PLUGIN_CONTINUE
}
public cmdUsername(id)
{
if(g_LoggedIn[id])
{
return PLUGIN_HANDLED
}
read_args(g_szTempName[id], 99)
remove_quotes(g_szTempName[id])
if(contain(g_szTempName[id], " ") != -1 || strlen(g_szTempName[id]) < 3)
{
print_color(id, "!g[SG]!t ~!y Hibás felhasználónév, próbáld meg még egyszer.")
client_cmd(id, "messagemode FELHASZNALONEV")
return PLUGIN_HANDLED
}
if(g_RegisterSelection[id] == 2 || g_RegisterSelection[id] == 1)
{
new ErrorCode
new Error[512]
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, Error, 511)
if(SqlConnection == Empty_Handle)
{
set_fail_state(Error)
}
new Handle:Query = SQL_PrepareQuery(SqlConnection, "SELECT * FROM reg_system_kes WHERE username='%s'", g_szTempName[id])
if(!SQL_Execute(Query))
{
SQL_QueryError(Query, Error, 511)
set_fail_state(Error)
}
new iRowsFound = SQL_NumRows(Query)
switch(g_RegisterSelection[id])
{
case 1:
{
// No Resluts
if(iRowsFound < 1)
{
client_cmd(id, "messagemode JELSZO")
}
// Username Found
else
{
print_color(id, "![SG]!t ~!y Ez a felhasználónév már foglalt. Válassz másikat.")
client_cmd(id, "messagemode FELHASZNALONEV")
}
}
case 2:
{
// No Resluts
if(iRowsFound < 1)
{
print_color(id, "!g[SG]!t ~!y Nincs ilyen felhasználónév az adatbázisban, próbáld meg egy másikkal.")
client_cmd(id, "messagemode FELHASZNALONEV")
}
// Username Found
else
{
client_cmd(id, "messagemode JELSZO")
}
}
}
SQL_FreeHandle(Query)
SQL_FreeHandle(SqlConnection)
}
return PLUGIN_CONTINUE
}
public cmdPw(id)
{
// if user is already logged in stop him
if(g_LoggedIn[id] == true)
{
return PLUGIN_HANDLED
}
read_args(g_szTempPassWord[id], 99)
remove_quotes(g_szTempPassWord[id])
if(contain(g_szTempPassWord[id], " ") != -1 || strlen(g_szTempPassWord[id]) < 3 || strlen(g_szTempName[id]) < 3)
{
print_color(id, "!g[SG]!t ~!y Érvénytelen jelszó. Válassz másikat.")
client_cmd(id, "messagemode JELSZO")
return PLUGIN_HANDLED
}
switch(g_RegisterSelection[id])
{
// Register new User
case 1:
{
new ErrorCode
new Error[512]
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, Error, 511)
if(SqlConnection == Empty_Handle)
{
set_fail_state(Error)
}
new Handle:Query = SQL_PrepareQuery(SqlConnection, "INSERT INTO reg_system_kes VALUES('%s','%s','0','0', '0', '0', '0', '0', '0')", g_szTempName[id], g_szTempPassWord[id])
if(!SQL_Execute(Query))
{
SQL_QueryError(Query, Error, 511)
set_fail_state(Error)
}
g_LoggedIn[id] = true
print_color(id, "!g[SG]!t ~!y Sikeres regisztráció! - Nevedet, jelszavadat:!t NE FELEJTSD EL - NE ADD MEG SENKINEK!")
print_color(id, "!g[SG]!t ~!y Felhasználó neved:!t %s", g_szTempName[id])
print_color(id, "!g[SG]!t ~!y Jelszavad:!t %s",g_szTempPassWord[id])
SQL_FreeHandle(Query)
SQL_FreeHandle(SqlConnection)
}
// Login User
case 2:
{
new ErrorCode
new Error[512]
new Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, Error, 511)
if(SqlConnection == Empty_Handle)
{
set_fail_state(Error)
}
new Handle:Query = SQL_PrepareQuery(SqlConnection, "SELECT * FROM reg_system_kes WHERE username='%s'", g_szTempName[id])
if(!SQL_Execute(Query))
{
SQL_QueryError(Query, Error, 511)
set_fail_state(Error)
}
new szSqlPassword[100]
SQL_ReadResult(Query, 1, szSqlPassword, 99)
// if password is right
if(equal(g_szTempPassWord[id], szSqlPassword))
{
// Kick Player who has logged in with same data
new players[32], pnum, tempid
get_players(players, pnum)
for(new i; i<pnum; i++)
{
tempid = players[i]
if(equal(g_szTempName[id], g_szTempName[tempid]) && id != tempid)
{
client_cmd(tempid, "disconnect")
}
}
g_LoggedIn[id] = true
print_color(id, "!g[SG]!t ~!y Szia!t %s!!y - Kellemes Idotöltést a szerveren!", g_szTempName[id])
}
else
{
print_color(id, "!g[SG]!t ~!y Hibás jelszó, nézd meg hogy mindent helyesen írtál-e be.")
client_cmd(id, "messagemode JELSZO")
}
SQL_FreeHandle(Query)
SQL_FreeHandle(SqlConnection)
}
}
return PLUGIN_CONTINUE
}
public updateTable(id)
{
// Save Data
if(g_LoggedIn[id])
{
new szTemp[512]
format(szTemp,charsmax(szTemp),"UPDATE `reg_system_kes` SET `arany` = '%i', `ezust` = '%i', `szint` = '%i', `kes` = '%i', `tor` = '%i', `lila` = '%i', `xp` = '%i' WHERE `reg_system_kes`.`username` = '%s';", g_szTempName[id])
SQL_ThreadQuery(g_SqlTuple,"updateTableThread", szTemp)
}
}
public updateTableThread(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
// lots of error checking
if(FailState == TQUERY_CONNECT_FAILED)
return set_fail_state("Could not connect to SQL database.")
else if(FailState == TQUERY_QUERY_FAILED)
return set_fail_state("Query failed.")
if(Errcode)
return log_amx("Error on query: %s",Error)
return PLUGIN_CONTINUE
}
public updateTableStatsThread(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
// lots of error checking
if(FailState == TQUERY_CONNECT_FAILED)
return set_fail_state("Nem tudtam letrehozni az adatbazist.")
else if(FailState == TQUERY_QUERY_FAILED)
return set_fail_state("Te fasz, elrontottal valamit.")
if(Errcode)
return log_amx("Hibat dobtam: %s",Error)
return PLUGIN_CONTINUE
}
public plugin_end()
{
SQL_FreeHandle(g_SqlTuple)
}
public makeTuple()
{
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
}
public createTable()
{
SQL_ThreadQuery(g_SqlTuple,"createTableThread", "CREATE TABLE IF NOT EXISTS reg_system_kes (username varchar(32),password varchar(32), `arany` INT(255), `ezust` INT(255), `szint` INT(255), `kes` INT(11), `tor` INT(11), `lila` INT(11), `xp` INT(11) )")
}
public createTableThread(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
return set_fail_state("Nem tudtam csatlakozni az adatbazishoz.")
else if(FailState == TQUERY_QUERY_FAILED)
return set_fail_state("Te fasz, elbasztal valamit.")
if(Errcode)
return log_amx("Hibat dobtam: %s",Error)
return PLUGIN_CONTINUE
}
public kerdezomenu(id)
{
new menu = menu_create("\y[SG]\r ~\y Regisztrációs Menü^n\rVálassz:", "kerd_hand");
menu_additem(menu, "\yNe kérdezze többet", "", 0); // case 0
menu_additem(menu, "\wKövetkező körben is kérdezze meg", "", 0); // case 1
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public kerd_hand(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0: {
kerdezze[id] = false
}
case 1: {
kerdezze[id] = true
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public round_start()
{
new players[32], pnum, tempid
get_players(players, pnum)
for(new i; i<pnum; i++)
{
tempid = players[i]
if(!g_LoggedIn[tempid])
{
if(kerdezze[tempid] == false)
{
show_menu(tempid, 0, "^n", 1)
}
else if(kerdezze[tempid] == true)
{
regiszraciofomenu(tempid)
}
}
}
return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
updateTable(id)
g_LoggedIn[id] = false
}
public client_putinserver(id)
{
g_LoggedIn[id] = false
set_task(3.0, "regiszraciofomenu", id)
}
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")
replace_all(msg, 190, "á", "A?")
replace_all(msg, 190, "é", "A©")
replace_all(msg, 190, "í", "A")
replace_all(msg, 190, "ó", "Al")
replace_all(msg, 190, "ö", "A¶")
replace_all(msg, 190, "o", "L‘")
replace_all(msg, 190, "ú", "As")
replace_all(msg, 190, "ü", "AL")
replace_all(msg, 190, "u", "L±")
replace_all(msg, 190, "Á", "A")
replace_all(msg, 190, "É", "A‰")
replace_all(msg, 190, "Í", "AT")
replace_all(msg, 190, "Ó", "A“")
replace_all(msg, 190, "Ö", "A–")
replace_all(msg, 190, "O", "L")
replace_all(msg, 190, "Ú", "Aš")
replace_all(msg, 190, "Ü", "As")
replace_all(msg, 190, "U", "L°")
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
}