30/05/2019, 12:27 AM
(Última modificación: 30/05/2019, 12:50 AM por Blackk. Edited 1 time in total.)
Bueno, quise adaptar el sistema de cuentas del ZA al 4.2
y no me tira ningun error, solo que al entrar quiero ingresar registrandome, me deja registrar el usuario, pero no la contraseña, dejo el code desde ya gracias
y no me tira ningun error, solo que al entrar quiero ingresar registrandome, me deja registrar el usuario, pero no la contraseña, dejo el code desde ya gracias
Código PHP:
#define mysql_database "zombie_trilogy"
#define USE_SQLITE
#define TABLE1 "account"
#define TABLE2 "experience"
#define TABLE3 "classes"
#define TABLE4 "habilidades"
#define TABLE5 "time"
#define TABLE6 "colours"
#define TABLE7 "system"
enum
{
REG_ID = 0,
REG_PASSWORD,
LOG_ID,
LOG_PASSWORD,
CHECK_CHARACTER,
REG_CHARACTER,
LOAD_DATA1,
LOAD_DATA2,
LOAD_DATA3,
LOAD_DATA4,
LOAD_DATA5,
LOAD_DATA6,
CHANGE_PASSWORD
}
enum
{
OFFLINE = 0,
CHARACTER_MENU,
ONLINE_SPEC,
ONLINE
}
new g_motd[1546] // show motd
#define SELECTED_CHARACTER g_character[id]
new g_logoutname[33][32] // player's name when log out
new gMenuXD[33][2]
#define CONFIRM_MENU gMenuXD[id][1]
const PDATA_SAFE = 2
// CS Teams
new g_playername[33][32] // player's name
new g_playedtime[33][4] // played rounds, hours, minutes, seconds
const VGUI_JOIN_TEAM_NUM = 2
new g_isconnected[33] // whether player is connected
new g_isalive[33] // whether player is alive
new g_isbot[33] // whether player is a botenum
enum
{
FM_CS_TEAM_UNASSIGNED = 0,
FM_CS_TEAM_T,
FM_CS_TEAM_CT,
FM_CS_TEAM_SPECTATOR
}
// Account system vars (player)
new g_attempts[33] // attempts for logging
new g_status[33] // status player account
new g_register_date[33][11] // register date
new g_last_loggin[33][11] // last loggin date
new user_id[33][2][32] // ID account
new user_password[33][2][35] // password account
new g_character[33] // using character
new g_charactername[33][5][32] // characters name
// Account system vars (game)
new Handle:g_SqlTuple // mysql connection
new g_Error[512] // mysql error log
new g_query[793] // make query
new g_createdaccounts // created account count
new g_createdcharacters // created character count
// Game vars
new g_minidcharacters // min characters in ID account
new g_minpasscharacters // min characters in password account
new g_attemptslogging // attempts for logging
// en el init
register_message(get_user_msgid("ShowMenu"), "message_showmenu")
register_message(get_user_msgid("VGUIMenu"), "message_vguimenu")
// Block CS team menu
public message_vguimenu(msg_id, msg_dest, msg_entity)
{
if (get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
return PLUGIN_CONTINUE;
// Show character menu
if (g_status[msg_entity] == OFFLINE)
{
show_menu_registration(msg_entity)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
// Block CS selection in team menu
public message_showmenu(msg_id, msg_dest, msg_entity)
{
static sMenuCode[32]
get_msg_arg_string(4, sMenuCode, charsmax(sMenuCode))
if (equal(sMenuCode, "#Team_Select") || equal(sMenuCode, "#Team_Select_Spect") || equal(sMenuCode, "#IG_Team_Select") || equal(sMenuCode, "#IG_Team_Select_Spect"))
{
// Show character menu
if (g_status[msg_entity] == OFFLINE)
{
show_menu_registration(msg_entity)
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
// Loggin Account Menu
public show_menu_registration(id)
{
// Player disconnected?
if (!g_isconnected[id]) return;
formatex(gMenu, charsmax(gMenu), "\wZombie Trilogy\r%s \wCreado por\r Blackk'", PLUGIN_VERSION)
new menu = menu_create(gMenu, "menu_registration")
menu_additem(menu, "\wIniciar \ysesión", "1", 0)
menu_additem(menu, "\wCrear \ycuenta nueva^n", "2", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
// Confirm Menu
show_menu_confirm(id)
{
switch (CONFIRM_MENU)
{
case 0: formatex(gMenu, charsmax(gMenu), "\r¿Finalizar Registro?^n^nUsuario: \y%s^n\rContraseña: \y%s", user_id[id][0], user_password[id][0])
case 1: formatex(gMenu, charsmax(gMenu), "\r¿Estas seguro que quieres crear el personaje con el nombre\d %s?", g_playername[id])
case 2: formatex(gMenu, charsmax(gMenu), "\r¿Estas seguro que quieres crear el personaje con el nombre\d %s?", g_playername[id])
case 3: formatex(gMenu, charsmax(gMenu), "\r¿Desea cambiar los datos?^n^nContraseña actual: \y%s^n^n\rContraseña nueva: \y%s", user_password[id][1], user_password[id][0])
}
new menu = menu_create(gMenu, "menu_confirm")
formatex(gMenu, charsmax(gMenu), "%s", CONFIRM_MENU > 0 ? CONFIRM_MENU > 2 ? "\wSi" : "\wSi" : "\wSi")
menu_additem(menu, gMenu, "1", 0)
menu_additem(menu, "\wVolver", "2", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
// Character Selection Menu
show_menu_character_selection(id)
{
new num[2]
if (equal(g_last_loggin[id], "0000-00-00"))
formatex(gMenu, charsmax(gMenu), "\wUsuario: \y%s^n\wCuenta registrada el dÃa: \r%s^n^n\rSeleccione un personaje", user_id[id][1], g_register_date[id])
else
formatex(gMenu, charsmax(gMenu), "\wUsuario: \y%s^n\wCuenta registrada el dÃa: \r%s^n^n\rSeleccione un personaje", user_id[id][1], g_register_date[id])
new menu = menu_create(gMenu, "menu_character_selection")
for (new i = 0; i < 5; i++)
{
if (equal(g_charactername[id][i], "None"))
formatex(gMenu, charsmax(gMenu), "\wCrear\r Personaje \d(Slot %d\d)%s^n", i+1, i == 4 ? "^n" : "")
else
formatex(gMenu, charsmax(gMenu), "\w%s \d(Slot %d\d)%s^n", g_charactername[id][i], i+1, i == 4 ? "^n" : "")
num_to_str(i+1, num, charsmax(num))
menu_additem(menu, gMenu, num)
}
// 6. Change Password
menu_additem(menu, "\wCambiar \ycontraseña", "6", 0)
// 7. Log out
menu_additem(menu, "\wCerrar \ysesión", "7", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
// Character Menu
show_menu_character(id)
{
formatex(gMenu, charsmax(gMenu), "\yPersonaje: \r%s \d(Slot %d\d)^n\wLevel \d(\y%d\d) -\w Reset \d(\y%d\d) - \wAmmopacks \d(\y%s\d) - \wExperiencia \d(\y%s\d)",
g_charactername[id][SELECTED_CHARACTER], SELECTED_CHARACTER + 1, gLevel[id], gReset[id], Add_Point(g_ammopacks[id]), Add_Point(gExp[id]))
new menu = menu_create(gMenu, "menu_character")
menu_additem(menu, "\wIngresar al servidor", "1", 0)
menu_additem(menu, "\wIngresar como espectador^n", "2", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu)
}
// Loggin Account Menu
public menu_registration(id, menu, item)
{
// Player disconnected?
if (!g_isconnected[id]) return PLUGIN_HANDLED;
switch (item)
{
case 0:
{
// Attempts?
if (g_attempts[id] >= 1)
{
client_cmd(id, "messagemode ^"your_id^"")
set_hudmessage(0, 255, 20, 0.03, 0.05, 2, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync2, "Ingresa el usuario que utilizaste al registrarte")
}
else
client_print(id, print_center, "%s Error: Agotaste el máximo de intentos", gPrefix)
}
case 1:
{
client_cmd(id, "messagemode ^"register_id^"")
set_hudmessage(255, 0, 0, 0.03, 0.05, 2, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync2, "Ingresa un usuario para tu nueva cuenta")
}
}
return PLUGIN_HANDLED;
}
// Confirm Menu
public menu_confirm(id, menu, item)
{
switch (item)
{
case 0:
{
switch (CONFIRM_MENU)
{
case 0: create_account(id)
case 1: create_character(id)
case 2: client_print(id, print_chat, "Deshabilitado..")
case 3: change_password(id)
}
}
case 1:
{
switch (CONFIRM_MENU)
{
case 0: show_menu_registration(id)
case 2: show_menu_user(id)
default: show_menu_character_selection(id)
}
}
}
CONFIRM_MENU = 0
return PLUGIN_HANDLED;
}
// Character Selection Menu
public menu_character_selection(id, menu, item)
{
switch (item)
{
case 0..4:
{
SELECTED_CHARACTER = item
if (equal(g_charactername[id][item], "None"))
check_character(id)
else
Load(id, 1)
}
case 5:
{
client_cmd(id, "messagemode ^"your_password^"")
set_hudmessage(0, 0, 255, 0.03, 0.05, 2, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync2, "Ingresa la password que utilizaste al registrarte")
}
case 6: log_out(id, 0)
}
return PLUGIN_HANDLED;
}
// Character Menu
public menu_character(id, menu, item)
{
switch (item)
{
case 0: loggin_success(id)
case 1: loggin_success(id, 1)
}
return PLUGIN_HANDLED;
}
// Logging Account: Logging ID
public logging_id(id)
{
if (g_status[id] != OFFLINE) return;
read_args(user_id[id][0], charsmax(user_id[][]))
remove_quotes(user_id[id][0]);trim(user_id[id][0])
static iData[2]
iData[0] = id
iData[1] = LOG_ID
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^"", TABLE1, user_id[id][0])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Logging Account: Logging Password
public logging_password(id)
{
read_args(user_password[id][0], charsmax(user_password[][]))
remove_quotes(user_password[id][0]);trim(user_password[id][0])
static iData[2]
iData[0] = id
iData[1] = LOG_PASSWORD
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^"", TABLE1, (g_status[id] != OFFLINE) ? user_id[id][1] : user_id[id][0])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Check if account is currently online
check_online_account(id)
{
// Get logged players count
static iPlayersnum; iPlayersnum = fnGetLogged()
// Not enough players, load directly
if (iPlayersnum < 1)
{
copy(user_id[id][1], charsmax(user_id[][]), user_id[id][0])
copy(user_password[id][1], charsmax(user_password[][]), user_password[id][0])
user_id[id][0] = ""
user_password[id][0] = ""
Load(id, 0)
return;
}
// Check all players ID's
for (new i = 1; i <= g_maxplayers; i++)
{
// Same user ID
if (equal(user_id[i][1], user_id[id][0]) && g_status[i] > OFFLINE)
{
client_print(id, print_center, "%s Error: La cuenta se está utilizando actualmente.", gPrefix)
show_menu_registration(id)
break;
}
else if (i == g_maxplayers) // All players checked
{
copy(user_id[id][1], charsmax(user_id[][]), user_id[id][0])
copy(user_password[id][1], charsmax(user_password[][]), user_password[id][0])
user_id[id][0] = ""
user_password[id][0] = ""
Load(id, 0)
}
}
}
// Register Account: Checking ID
public check_id(id)
{
if (g_status[id] != OFFLINE) return;
read_args(user_id[id][0], charsmax(user_id[][]))
remove_quotes(user_id[id][0]);trim(user_id[id][0])
if (count_characters(user_id[id][0]) < g_minidcharacters)
{
client_print(id, print_center, "%s Error: El ID debe contener al menos %d carácteres", gPrefix, g_minidcharacters)
show_menu_registration(id)
return;
}
if (contain_special_characters(user_id[id][0]))
{
client_print(id, print_center, "%s Error: El ID no debe contener carácteres especiales", gPrefix)
show_menu_registration(id)
return;
}
static iData[2]
iData[0] = id
iData[1] = REG_ID
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^"", TABLE1, user_id[id][0])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Register Account / Change Account: Checking Password
public check_password(id)
{
if (g_status[id] != OFFLINE && CONFIRM_MENU != 3) return;
read_args(user_password[id][0], charsmax(user_password[][]))
remove_quotes(user_password[id][0]);trim(user_password[id][0])
if (count_characters(user_password[id][0]) < g_minpasscharacters)
{
client_print(id, print_center, "%s Error: La contraseña debe contener al menos %d carácteres",gPrefix, g_minpasscharacters)
(CONFIRM_MENU == 3) ? show_menu_character_selection(id) : show_menu_registration(id)
return;
}
if (contain_special_characters(user_password[id][0]))
{
client_print(id, print_center, "%s Error: La contraseña no debe contener carácteres especiales", gPrefix)
(CONFIRM_MENU == 3) ? show_menu_character_selection(id) : show_menu_registration(id)
return;
}
if (equal(user_password[id][0], user_id[id][0]) && CONFIRM_MENU != 3 || equal(user_password[id][0], user_id[id][1]) && CONFIRM_MENU == 3)
{
client_print(id, print_center, "%s Error: La contraseña no puede ser similar al ID", gPrefix)
(CONFIRM_MENU == 3) ? show_menu_character_selection(id) : show_menu_registration(id)
return;
}
if (equal(user_password[id][0], user_password[id][1]) && CONFIRM_MENU == 3)
{
client_print(id, print_center, "%s Error: La contraseña es la misma que la actual", gPrefix)
show_menu_character_selection(id)
return;
}
show_menu_confirm(id)
}
Save(id)
{
// Not character selected don't save
if (g_status[id] < ONLINE_SPEC) return;
static szDate[11]
get_time("%Y/%m/%d", szDate, charsmax(szDate))
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Last Loggin`='%s' WHERE `User ID`=^"%s^"", TABLE1, szDate, user_id[id][1])
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Level`='%d', `Experience`='%d', `Ammopacks`='%d', `Fame`='%d', `Promocion`='%d', `Bunny`='%d', `VeloAWP`='%d', `Aimbot`='%d', `Vampirismo`='%d', `PuntosD`='%d', `Human Points`='%d', `Zombie Points`='%d', `Used Human Points`='%d', `Used Zombie Points`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^"",
TABLE2, gLevel[id], gExp[id], g_ammopacks[id], gReset[id], gPromo[id], gBunnyHop[id], gVeloAWP[id], gAimbot[id], gVampirismo[id], gPuntoT[id], gPuntos[id][0], gPuntos[id][1], gGastados[id][0], gGastados[id][1], user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Human Class`='%d', `Next Human Class`='%d', `Zombie Class`='%d', `Next Zombie Class`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^"",
TABLE3, g_humanclass[id], g_humanclassnext[id], g_zombieclass[id], g_zombieclassnext[id], user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `HAttack Skill`='%d', `HHealth Skill`='%d', `HSpeed Skill`='%d', `HGravity Skill`='%d', `HArmor Skill`='%d', `ZAttack Skill`='%d', `ZHealth Skill`='%d', `ZSpeed Skill`='%d', `ZGravity Skill`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^"",
TABLE4, gHabilidad[id][0][0], gHabilidad[id][0][1], gHabilidad[id][0][2], gHabilidad[id][0][3], gHabilidad[id][0][4], gHabilidad[id][1][0], gHabilidad[id][1][1], gHabilidad[id][1][2], gHabilidad[id][1][3], gHabilidad[id][1][4], user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Rounds Played`='%d', `Hours Played`='%d', `Minutes Played`='%d', `Seconds Played`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^"",
TABLE5, g_playedtime[id][0], g_playedtime[id][1], g_playedtime[id][2], g_playedtime[id][3], user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Hud Stat T`='%d', `Hud Stat X`='%f', `Hud Stat Y`='%f', `Hud RGB`='%d %d %d', `NVG RGB`='%d %d %d', `Flashlight RGB`='%d %d %d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^"",
TABLE6, gHudEffect[id], gHudPosition[id][0], gHudPosition[id][1], gHudColor[id][0], gHudColor[id][1], gHudColor[id][2], gNvgColor[id][0], gNvgColor[id][1], gNvgColor[id][2], user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
}
Load(id, yourdata)
{
static iData[2]
iData[0] = id
switch (yourdata)
{
case 0:
{
iData[1] = LOAD_DATA1
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^"", TABLE1, user_id[id][1])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
case 1:
{
iData[1] = LOAD_DATA2
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^"", TABLE2, user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
case 2:
{
iData[1] = LOAD_DATA3
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^"", TABLE3, user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
case 3:
{
iData[1] = LOAD_DATA4
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^"", TABLE4, user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
case 4:
{
iData[1] = LOAD_DATA5
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^"", TABLE5, user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
case 5:
{
iData[1] = LOAD_DATA6
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^"", TABLE6, user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
}
}
// Create New Account
create_account(id)
{
new iData[2], szBuffer[34], szDate[11]
iData[0] = id
iData[1] = REG_PASSWORD
md5(user_password[id][0], szBuffer)
get_time("%Y/%m/%d", szDate, charsmax(szDate))
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Password`, `Register Date`) VALUES (^"%s^", ^"%s^", '%s')", TABLE1, user_id[id][0], szBuffer, szDate)
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Create Character: Check Character
check_character(id)
{
if (equal(g_playername[id], "None"))
{
client_print(id, print_center, "%s Error: Este nombre no puede ser usado. Por favor, cámbiese el nombre", gPrefix)
show_menu_character_selection(id)
return;
}
new iData[2]
iData[0] = id
iData[1] = CHECK_CHARACTER
formatex(g_query, charsmax(g_query), "SELECT * FROM `%s` WHERE `Character`=^"%s^"", TABLE2, g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Create Character
create_character(id)
{
new iData[2]
iData[0] = id
iData[1] = REG_CHARACTER
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Character %d`=^"%s^" WHERE `User ID`=^"%s^"", TABLE1, SELECTED_CHARACTER+1, g_playername[id], user_id[id][1])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")", TABLE2, user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")", TABLE3, user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")", TABLE4, user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")", TABLE5, user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")", TABLE6, user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
formatex(g_query, charsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")", TABLE7, user_id[id][1], g_playername[id])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
// Change Password
change_password(id)
{
new iData[2], szBuffer[34]
iData[0] = id
iData[1] = CHANGE_PASSWORD
md5(user_password[id][0], szBuffer)
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Password`=^"%s^" WHERE `User ID`=^"%s^"", TABLE1, szBuffer, user_id[id][1])
SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_query, iData, 2)
}
save_account_count()
{
formatex(g_query, charsmax(g_query), "UPDATE `%s` SET `Created accounts`='%d', `Created characters`='%d'", TABLE7, g_createdaccounts, g_createdcharacters)
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
}
public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
SQL_FreeHandle(Query)
return PLUGIN_HANDLED;
}
public QueryHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:time)
{
static id; id = Data[0]
// Connected?
if (!is_user_connected(id)) return PLUGIN_HANDLED;
switch (FailState)
{
case TQUERY_CONNECT_FAILED: log_to_file("SQL_LOG_TQ.txt", "Failed to connect to database [%i]: %s", Errcode, Error)
case TQUERY_QUERY_FAILED: log_to_file("SQL_LOG_TQ.txt", "Error in MySQL query [%i]: %s", Errcode, Error)
}
switch (Data[1])
{
case REG_ID:
{
if (!SQL_NumResults(Query))
{
client_cmd(id, "messagemode ^"register_password^"")
set_hudmessage(255, 0, 0, 0.03, 0.05, 2, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync2, "Ingresa una password para tu nueva cuenta")
}
else
{
client_print(id, print_center, "%s Error: El ID ingresado se encuentra en uso", gPrefix)
show_menu_registration(id)
}
}
case REG_PASSWORD:
{
g_createdaccounts++
save_account_count()
user_id[id][0] = ""
client_print(id, print_center, "%s Registro finalizado con éxito", gPrefix)
show_menu_registration(id)
}
case LOG_ID:
{
if (SQL_NumResults(Query))
{
client_cmd(id, "messagemode ^"your_password^"")
set_hudmessage(0, 255, 20, 0.03, 0.05, 2, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync2, "Ingresa la password que utilizaste al registrarte")
}
else
{
g_attempts[id]--
client_print(id, print_center, "%s Error: El ID ingresado no existe. Intentos restantes: %d", gPrefix, g_attempts[id])
show_menu_registration(id)
}
}
case LOG_PASSWORD:
{
if (SQL_NumResults(Query))
{
static szPass[35], szBuffer[34]
SQL_ReadResult(Query, 1, szPass, charsmax(szPass))
md5(user_password[id][0], szBuffer)
if (equal(szBuffer, szPass))
{
if (g_status[id] != OFFLINE)
{
CONFIRM_MENU = 3
client_cmd(id, "messagemode ^"register_new_password^"")
set_hudmessage(0, 0, 255, 0.03, 0.05, 2, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync2, "Ingresa la una nueva password para tu cuenta")
}
else
check_online_account(id)
}
else
{
if (g_status[id] != OFFLINE)
{
user_password[id][0] = ""
client_print(id, print_center, "%s Error: La contraseña ingresada es incorrecta.", gPrefix)
show_menu_character_selection(id)
}
else
{
g_attempts[id]--
client_print(id, print_center, "%s Error: La contraseña ingresada es incorrecta. Intentos restantes: %d", gPrefix, g_attempts[id])
show_menu_registration(id)
}
}
}
}
case CHECK_CHARACTER:
{
if (!SQL_NumResults(Query))
{
CONFIRM_MENU = 1
show_menu_confirm(id)
}
else
{
client_print(id, print_center, "%s El nombre se encuentra en uso. Por favor, cámbiese el nombre", gPrefix)
show_menu_character_selection(id)
}
}
case REG_CHARACTER:
{
static loading; loading++
switch (loading)
{
case 1: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 2: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 3: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 4: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 5: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 6: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 7: client_print(id, print_center, "Espere mientras sus datos son procesados")
case 8:
{
loading = 0
g_createdcharacters++
save_account_count()
copy(g_charactername[id][SELECTED_CHARACTER], charsmax(g_charactername[][]), g_playername[id])
client_print(id, print_center, "%s Personaje creado con éxito", gPrefix)
show_menu_character_selection(id)
}
}
}
case LOAD_DATA1:
{
if (SQL_NumResults(Query))
{
SQL_ReadResult(Query, 2, g_register_date[id], charsmax(g_register_date[]))
SQL_ReadResult(Query, 3, g_last_loggin[id], charsmax(g_last_loggin[]))
SQL_ReadResult(Query, 4, g_charactername[id][0], charsmax(g_charactername[][]))
SQL_ReadResult(Query, 5, g_charactername[id][1], charsmax(g_charactername[][]))
SQL_ReadResult(Query, 6, g_charactername[id][2], charsmax(g_charactername[][]))
SQL_ReadResult(Query, 7, g_charactername[id][3], charsmax(g_charactername[][]))
SQL_ReadResult(Query, 8, g_charactername[id][4], charsmax(g_charactername[][]))
}
g_status[id] = CHARACTER_MENU
show_menu_character_selection(id)
}
case LOAD_DATA2:
{
if (SQL_NumResults(Query))
{
gLevel[id] = SQL_ReadResult(Query, 2)
gExp[id] = SQL_ReadResult(Query, 3)
g_ammopacks[id]= SQL_ReadResult(Query, 5)
gReset[id] = SQL_ReadResult(Query, 6)
gPromo[id] = SQL_ReadResult(Query, 7)
gBunnyHop[id] = SQL_ReadResult(Query, 8)
gVeloAWP[id] = SQL_ReadResult(Query, 9)
gAimbot[id] = SQL_ReadResult(Query, 10)
gVampirismo[id] = SQL_ReadResult(Query, 11)
gPuntoT[id] = SQL_ReadResult(Query, 12)
gPuntos[id][0] = SQL_ReadResult(Query, 13)
gPuntos[id][1] = SQL_ReadResult(Query, 14)
gGastados[id][0] = SQL_ReadResult(Query, 15)
gGastados[id][1] = SQL_ReadResult(Query, 16)
client_print(id, print_center, "Espere mientras sus datos son cargados")
}
Load(id, 3)
}
case LOAD_DATA3:
{
if (SQL_NumResults(Query))
{
g_humanclass[id] = SQL_ReadResult(Query, 2)
g_humanclassnext[id] = SQL_ReadResult(Query, 3)
g_zombieclass[id] = SQL_ReadResult(Query, 4)
g_zombieclassnext[id] = SQL_ReadResult(Query, 5)
client_print(id, print_center, "Espere mientras sus datos son cargados")
}
Load(id, 4)
}
case LOAD_DATA4:
{
if (SQL_NumResults(Query))
{
gHabilidad[id][0][0] = SQL_ReadResult(Query, 2)
gHabilidad[id][0][1] = SQL_ReadResult(Query, 3)
gHabilidad[id][0][2] = SQL_ReadResult(Query, 4)
gHabilidad[id][0][3] = SQL_ReadResult(Query, 5)
gHabilidad[id][0][4] = SQL_ReadResult(Query, 6)
gHabilidad[id][1][0] = SQL_ReadResult(Query, 7)
gHabilidad[id][1][1] = SQL_ReadResult(Query, 8)
gHabilidad[id][1][2] = SQL_ReadResult(Query, 9)
gHabilidad[id][1][3] = SQL_ReadResult(Query, 10)
client_print(id, print_center, "Espere mientras sus datos son cargados")
}
Load(id, 5)
}
case LOAD_DATA5:
{
if (SQL_NumResults(Query))
{
g_playedtime[id][0] = SQL_ReadResult(Query, 2)
g_playedtime[id][1] = SQL_ReadResult(Query, 3)
g_playedtime[id][2] = SQL_ReadResult(Query, 4)
g_playedtime[id][3] = SQL_ReadResult(Query, 5)
client_print(id, print_center, "Espere mientras sus datos son cargados")
}
Load(id, 6)
}
case LOAD_DATA6:
{
if (SQL_NumResults(Query))
{
static datacolor[16], szRed[4], szGreen[4], szBlue[4]
gHudEffect[id] = SQL_ReadResult(Query, 2)
SQL_ReadResult(Query, 3, Float:gHudPosition[id][0])
SQL_ReadResult(Query, 4, Float:gHudPosition[id][1])
SQL_ReadResult(Query, 5, datacolor, charsmax(datacolor))
parse(datacolor, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
gHudColor[id][0] = str_to_num(szRed)
gHudColor[id][1] = str_to_num(szGreen)
gHudColor[id][2] = str_to_num(szBlue)
SQL_ReadResult(Query, 6, datacolor, charsmax(datacolor))
parse(datacolor, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
gNvgColor[id][0] = str_to_num(szRed)
gNvgColor[id][1] = str_to_num(szGreen)
gNvgColor[id][2] = str_to_num(szBlue)
client_print(id, print_center, "Espere mientras sus datos son cargados")
}
show_menu_character(id)
}
case CHANGE_PASSWORD:
{
copy(user_password[id][1], charsmax(user_password[][]), user_password[id][0])
user_password[id][0] = ""
client_print(id, print_center, "%s Contraseña cambiada con éxito", gPrefix)
}
}
return PLUGIN_CONTINUE;
}
loggin_success(id, spec = 0)
{
// Set character name
set_user_info(id, "name", g_charactername[id][SELECTED_CHARACTER])
// Welcome message
zp_colored_print(0, "^x04%s^x01 Bienvenido! ^x04%s^x01 ha iniciado sesión.", gPrefix, g_charactername[id][SELECTED_CHARACTER])
// Update level
UpdateLevel(id)
set_task(1.0, "ShowHUD", id+TASK_SHOWHUD, _, _, "b")
// Go to spectator?
if (spec)
{
// Make a task because name has to be changed, after set account it's logged
set_task(0.5, "join_team_spec", id)
}
else
{
// Make a task because name has to be changed, after set account it's logged
set_task(0.5, "join_team_t_ct", id)
}
// Make a task because admin has to be checked, after name changed
set_task(0.5, "loggin_success2", id)
}
public join_team_spec(id)
{
// Not connected
if (!g_isconnected[id]) return;
// Currently logged spectator
g_status[id] = ONLINE_SPEC
// Join SPEC team
engclient_cmd(id, "jointeam", "6")
}
public join_team_t_ct(id)
{
// Not connected
if (!g_isconnected[id]) return;
// Currently logged
g_status[id] = ONLINE
// Join T or CT team
if (fnGetTs() >= fnGetCTs())
engclient_cmd(id, "jointeam", "2")
else
engclient_cmd(id, "jointeam", "1")
// Prevent player bugged if he was logged as spectator and
// went to character menu again
if (fm_cs_get_user_team(id) == FM_CS_TEAM_SPECTATOR)
{
remove_task(id+TASK_TEAM)
fm_cs_set_user_team(id, FM_CS_TEAM_CT) // must be CT (he isn't a zombie)
fm_user_team_update(id)
}
}
public loggin_success2(id)
{
// Not connected
if (!g_isconnected[id]) return;
// Prevent admin log out, loggin and get full modes again
if (equal(g_playername[id], g_logoutname[id])) return;
}
// Log Out from Account
log_out(id, charactermenu)
{
// Player alive?
if (g_isalive[id])
{
// Prevent players from killing themselves?
if (get_pcvar_num(cvar_blocksuicide))
{
zp_colored_print(id, "^x04%s^x01 No puedes salir estando vivo.", gPrefix)
return;
}
// Check that we still have both humans and zombies to keep the round going
check_round(id)
// Kill him before he switches team
dllfunc(DLLFunc_ClientKill, id)
}
// Remove previous tasks
remove_task(id+TASK_SPAWN)
remove_task(id+TASK_SHOWHUD)
// Save progress
Save(id)
// Move him to unassigned team
if (fm_cs_get_user_team(id) != FM_CS_TEAM_SPECTATOR)
{
remove_task(id+TASK_TEAM)
fm_cs_set_user_team(id, FM_CS_TEAM_UNASSIGNED)
fm_user_team_update(id)
}
// Initialize player vars
reset_vars(id, 1)
// Prevent admin log out, loggin and get full modes again
copy(g_logoutname[id], charsmax(g_logoutname[]), g_playername[id])
// Go to character menu?
if (!charactermenu)
{
// Show print
client_print(id, print_center, "%s Sesión cerrada con éxito.", gPrefix)
// Reset character names
for (new i = 0; i < 5; i++) g_charactername[id][i] = "None"
// Show register menu
g_attempts[id] = g_attemptslogging
user_id[id][0] = ""
user_id[id][1] = ""
user_password[id][0] = ""
user_password[id][1] = ""
g_status[id] = OFFLINE
show_menu_registration(id)
}
else
{
// Show character menu
g_status[id] = CHARACTER_MENU
show_menu_character_selection(id)
}
}
// User/Information Menu
public show_menu_user(id)
{
// Player disconnected?
if (!g_isconnected[id]) return;
new menu = menu_create("\rConfiguración", "menu_user")
if (g_isalive[id]) menu_additem(menu, "\dVolver a Personajes", "1", 0)
else menu_additem(menu, "\wVolver a \yPersonajes", "1", 0)
if (g_isalive[id]) menu_additem(menu, "\dCerrar Sesión^n", "2", 0)
else menu_additem(menu, "\wCerrar \ySesión^n", "2", 0)
// 0. Exit
menu_additem(menu, "\ySalir", "0", 0)
// More than 7 items per page
menu_setprop(menu, MPROP_PERPAGE, 0)
menu_display(id, menu)
}
// Stock by Kiske -counts number of characters in a string-
stock count_characters(const szString[], const len = sizeof(szString))
{
new count, i
for (i = 0 ; i < len; i++)
{
if (isalnum(szString[i]))
count++
}
return count;
}
// Stock by Neeeeeeeeeel.- -check special characters in a string-
stock contain_special_characters(const str[])
{
static len
len = strlen(str)
for (new i = 0; i < len; i++)
{
if (!isalpha(str[i]) && !isdigit(str[i]))
return 1;
}
return 0;
}
// Get Alive -returns logged players number-
fnGetLogged()
{
static iLogged, id
iLogged = 0
for (id = 1; id <= g_maxplayers; id++)
{
if (g_status[id] != OFFLINE)
iLogged++
}
return iLogged;
}
// Get User Team
stock fm_cs_get_user_team(id)
{
// Prevent server crash if entity's private data not initalized
if (pev_valid(id) != PDATA_SAFE)
return FM_CS_TEAM_UNASSIGNED;
return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
}
// Set a Player's Team
stock fm_cs_set_user_team(id, team)
{
// Prevent server crash if entity's private data not initalized
if (pev_valid(id) != PDATA_SAFE)
return;
set_pdata_int(id, OFFSET_CSTEAMS, team, OFFSET_LINUX)
}
public Sql_Init()
{
#if defined USE_SQLITE
new get_type[12]
SQL_SetAffinity("sqlite")
SQL_GetAffinity(get_type, sizeof get_type)
if (!equali(get_type, "sqlite"))
{
// Log error
log_to_file( "SQLITE_ERROR.txt", "Error en la conexión.")
// Pause plugin
return pause( "a" );
}
g_SqlTuple = SQL_MakeDbTuple( "", "", "", mysql_database)
#else
g_SqlTuple = SQL_MakeDbTuple(mysql_host, mysql_user, mysql_pass, mysql_database)
if (!g_SqlTuple)
{
// Log error
log_to_file("SQL_ERROR.txt", "No se pudo conectar con la base de datos.")
// Pause plugin
return pause("a");
}
#endif
new ErrorCode, Handle:SqlConnection = SQL_Connect(g_SqlTuple, ErrorCode, g_Error, charsmax(g_Error))
// Create tables
new len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE7)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Created accounts` int(15) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Created characters` int(15) NOT NULL DEFAULT '0')")
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE1)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`User ID` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Password` varchar(35) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Register Date` date NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Last Loggin` date NOT NULL DEFAULT '0000-00-00', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character 1` varchar(32) NOT NULL DEFAULT 'None', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character 2` varchar(32) NOT NULL DEFAULT 'None', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character 3` varchar(32) NOT NULL DEFAULT 'None', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character 4` varchar(32) NOT NULL DEFAULT 'None', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character 5` varchar(32) NOT NULL DEFAULT 'None')")
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE2)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`User ID` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Level` int(5) NOT NULL DEFAULT '1', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Experience` int(16) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Ammopacks` int(10) NOT NULL DEFAULT '200', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Fame` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Promocion` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Bunny` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`VeloAWP` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Vampirismo` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`PuntosD` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Human Points` int(10) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Zombie Points` int(10) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Used Human Points` int(10) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Used Zombie Points` int(10) NOT NULL DEFAULT '0')")
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE3)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`User ID` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Human Class` int(3) NOT NULL DEFAULT '%d', ", HCLASS_NONE)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Next Human Class` int(3) NOT NULL DEFAULT '%d', ", HCLASS_NONE)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Zombie Class` int(3) NOT NULL DEFAULT '%d', ", ZCLASS_NONE)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Next Zombie Class` int(3) NOT NULL DEFAULT '%d')", ZCLASS_NONE)
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE4)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`User ID` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`HAttack Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`HHealth Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`HSpeed Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`HGravity Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`HArmor Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`ZAttack Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`ZHealth Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`ZSpeed Skill` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`ZGravity Skill` int(3) NOT NULL DEFAULT '0' ) ")
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE5)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`User ID` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Rounds Played` int(10) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Hours Played` int(10) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Minutes Played` int(3) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Seconds Played` int(3) NOT NULL DEFAULT '0' ) ")
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
len = 0
len += formatex(g_motd[len], charsmax(g_motd) - len, "CREATE TABLE IF NOT EXISTS `%s`(", TABLE6)
len += formatex(g_motd[len], charsmax(g_motd) - len, "`User ID` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Character` varchar(32) NOT NULL, ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Hud Stat T` int(1) NOT NULL DEFAULT '0', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Hud Stat X` float NOT NULL DEFAULT '0.03', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Hud Stat Y` float NOT NULL DEFAULT '0.02', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`Hud RGB` varchar(12) NOT NULL DEFAULT '79 168 51', ")
len += formatex(g_motd[len], charsmax(g_motd) - len, "`NVG RGB` varchar(12) NOT NULL DEFAULT '0 255 0' ) ")
SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", g_motd)
// Load account count
if (SqlConnection != Empty_Handle)
{
new Handle:query = SQL_PrepareQuery(SqlConnection, "SELECT * FROM `%s`", TABLE7)
SQL_Execute(query)
if (SQL_NumResults(query))
{
g_createdaccounts = SQL_ReadResult(query, 0)
g_createdcharacters = SQL_ReadResult(query, 1)
}
else
{
g_createdaccounts = g_createdcharacters = 0
formatex(g_query,charsmax(g_query), "INSERT INTO `%s` (`Created accounts`, `Created characters`) VALUES ('0', '0')", TABLE7)
SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", g_query)
}
SQL_FreeHandle(query)
}
return PLUGIN_CONTINUE;
}
public QueryCreateTable(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
switch (FailState)
{
case TQUERY_CONNECT_FAILED: log_to_file("SQL_LOG_TQ.txt", "Failed to connect to database [%i]: %s", Errorcode, Error)
case TQUERY_QUERY_FAILED: log_to_file("SQL_LOG_TQ.txt", "Error on query for creating table [%i]: %s", Errorcode, Error)
}
return PLUGIN_HANDLED;
}
public menu_user(id, menu, item)
{
// Player disconnected?
if (!g_isconnected[id]) return PLUGIN_HANDLED;
// Menu was closed
if (item == MENU_EXIT) return PLUGIN_HANDLED;
switch (item)
{
case 1:
{
if (g_isalive[id]) zp_colored_print(0, "^x04%s^x01 Solo puedes salir estando muerto.", gPrefix)
else log_out(id, 1)
}
case 2:
{
if (g_isalive[id]) zp_colored_print(0, "^x04%s^x01 Solo puedes salir estando muerto.", gPrefix)
else log_out(id, 0)
}
}
return PLUGIN_HANDLED;
}
https://steamcommunity.com/id/adriancek1ng/
Aquellos que te critican quieren verte distinto,
Por que ven en ti lo que ellos no serán jamás.
Aquellos que te critican quieren verte distinto,
Por que ven en ti lo que ellos no serán jamás.