11/12/2018, 09:48 PM
Como puedo cambiar ese sistema de cuentas fvault a Adv_vault.
no entiendo como funciona el adv_vault bien y e intentado varias formas de cambiar este sistema por adv_vault y no lo se. necesito su ayuda.
no entiendo como funciona el adv_vault bien y e intentado varias formas de cambiar este sistema por adv_vault y no lo se. necesito su ayuda.
Código PHP:
/*================================================================================
[Account System]
=================================================================================*/
// 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])
if (fvault_get_keynum(g_VaultAccounts, user_id[id][0]) >= 0)
{
client_cmd(id, "messagemode ^"your_password^"")
set_hudmessage(0, 255, 255, 0.03, 0.05, 0, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync5, "Ingresa tu Contraseña^nPulse ESC para salir")
}
else
{
g_attempts[id]--
client_print(id, print_center, "[ZA] Error: El ID ingresado no existe. Intentos restantes: %d", g_attempts[id])
show_menu_registration(id)
}
}
// 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 data[62]
if (fvault_get_data(g_VaultAccounts, (g_status[id] != OFFLINE) ? user_id[id][1] : user_id[id][0], data, charsmax(data)))
{
static szPass[35], szBuffer[34], szRegDate[11], szLoggin[11]
parse(data, szPass, charsmax(szPass), szRegDate, charsmax(szRegDate), szLoggin, charsmax(szLoggin))
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, 255, 255, 0.03, 0.05, 0, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync5, "Ingresa una Contraseña nueva^nPulse ESC para salir")
}
else
{
copy(g_register_date[id], charsmax(g_register_date[]), szRegDate)
copy(g_last_loggin[id], charsmax(g_last_loggin[]), szLoggin)
check_online_account(id)
}
}
else
{
if (g_status[id] != OFFLINE)
{
user_password[id][0] = ""
client_print(id, print_center, "[ZA] Error: La contraseña ingresada es incorrecta.")
show_menu_character_selection(id)
}
else
{
g_attempts[id]--
client_print(id, print_center, "[ZA] Error: La contraseña ingresada es incorrecta. Intentos restantes: %d", g_attempts[id])
show_menu_registration(id)
}
}
}
}
// 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, "[ZA] Error: La cuenta se está utilizando actualmente.")
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, "[ZA] Error: El ID debe contener al menos %d carácteres", g_minidcharacters)
show_menu_registration(id)
return;
}
if (contain_special_characters(user_id[id][0]))
{
client_print(id, print_center, "[ZA] Error: El ID no debe contener carácteres especiales")
show_menu_registration(id)
return;
}
if (fvault_get_keynum(g_VaultAccounts, user_id[id][0]) >= 0)
{
client_print(id, print_center, "[ZA] Error: El ID ingresado se encuentra en uso")
show_menu_registration(id)
}
else
{
client_cmd(id, "messagemode ^"register_password^"")
set_hudmessage(0, 255, 255, 0.03, 0.05, 0, 0.1, 4.0, 0.01, 0.01, -1)
ShowSyncHudMsg(id, g_MsgSync5, "Ingresa una Contraseña^nPulse ESC para salir")
}
}
// 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, "[ZA] Error: La contraseña debe contener al menos %d carácteres", 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, "[ZA] Error: La contraseña no debe contener carácteres especiales")
(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, "[ZA] Error: La contraseña no puede ser similar al ID")
(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, "[ZA] Error: La contraseña es la misma que la actual")
show_menu_character_selection(id)
return;
}
show_menu_confirm(id)
}
save_account_count()
{
formatex(g_fkey, charsmax(g_fkey), "Accounts / Characters")
formatex(g_fdata, charsmax(g_fdata), "%d %d", g_createdaccounts, g_createdcharacters)
fvault_set_data(g_VaultCreated, g_fkey, g_fdata)
}
load_account_count()
{
formatex(g_fkey, charsmax(g_fkey), "Accounts / Characters")
static data[51]
if (fvault_get_data(g_VaultCreated, g_fkey, data, charsmax(data)))
{
static szAccounts[15], szCharacters[15]
parse(data, szAccounts, charsmax(szAccounts), szCharacters, charsmax(szCharacters))
g_createdaccounts = str_to_num(szAccounts)
g_createdcharacters = str_to_num(szCharacters)
}
else
g_createdaccounts = g_createdcharacters = 0
}
Save(id)
{
// Not character selected don't save
if (g_status[id] < ONLINE_SPEC) return;
static szBuffer[34], szDate[11]
md5(user_password[id][1], szBuffer)
get_time("%Y/%m/%d", szDate, charsmax(szDate))
formatex(g_fdata, charsmax(g_fdata), "%s %s %s", szBuffer, g_register_date[id], szDate)
fvault_set_data(g_VaultAccounts, user_id[id][1], g_fdata)
formatex(g_fkey, charsmax(g_fkey), "ID: %s Character: %s", user_id[id][1], g_playername[id])
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d %d %d %d %d %d %d %d %d", g_level[id], g_experience[id], g_ammopacks[id][0], g_ammopacks[id][1], g_fame[id], g_points[id][0], g_points[id][1], g_usedpoints[id][0], g_usedpoints[id][1],g_timepoints[id][0],g_timepoints[id][1], g_titles[id])
fvault_set_data(g_VaultExp, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d", g_humanclass[id], g_humanclassnext[id], g_zombieclass[id], g_zombieclassnext[id])
fvault_set_data(g_VaultClasses, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d %d %d %d %d %d %d %d %d %d %d", g_infected[id][0], g_infected[id][1], g_killed[id][0][0], g_killed[id][0][1], g_killed[id][0][2], g_killed[id][0][3], g_killed[id][0][4],
g_killed[id][0][5], g_killed[id][1][0], g_killed[id][1][1], g_killed[id][1][2], g_killed[id][1][3], g_killed[id][1][4], g_killed[id][1][5])
fvault_set_data(g_VaultKills, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d %d %d %d %d %d %d %d %d", g_damage[id][0][0], g_damage[id][0][1], g_damage[id][0][2], g_damage[id][0][3], g_damage[id][0][4], g_damage[id][0][5], g_damage[id][1][0],
g_damage[id][1][1], g_damage[id][1][2], g_damage[id][1][3], g_damage[id][1][4], g_damage[id][1][5])
fvault_set_data(g_VaultDamage, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d %d %d %d %d %d %d", g_skill_points[id][0][0], g_skill_points[id][0][1], g_skill_points[id][0][2], g_skill_points[id][0][3], g_skill_points[id][0][4], g_skill_points[id][1][0], g_skill_points[id][1][1],
g_skill_points[id][1][2], g_skill_points[id][1][3], g_skill_points[id][1][4])
fvault_set_data(g_VaultSkills, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d %d %d %d %d %d", g_quest[id], g_questcompleted[id], g_questrounds[id], g_questkill[id][0], g_questkill[id][1], g_questkill[id][2], g_questkill[id][3], g_questkill[id][4], g_questkill[id][5])
fvault_set_data(g_VaultQuests, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %d %d %d %d", g_playedtime[id][0], g_playedtime[id][1], g_playedtime[id][2], g_playedtime[id][3],six_hours)
fvault_set_data(g_VaultTime, g_fkey, g_fdata)
formatex(g_fdata, charsmax(g_fdata), "%d %f %f %d %d %d %d %d %d %d %d %d", g_hud_stats_t[id], g_hud_stats_x[id], g_hud_stats_y[id], g_hudred[id], g_hudgreen[id], g_hudblue[id], g_nvgred[id], g_nvggreen[id], g_nvgblue[id], g_flashred[id], g_flashgreen[id], g_flashblue[id])
fvault_set_data(g_VaultColors, g_fkey, g_fdata)
}
Load(id, yourdata)
{
guardar_arma[id][0]=-1
guardar_arma[id][1]=-1
guardar_arma[id][2]=-1
guardar_arma[id][3]=-1
formatex(g_fkey, charsmax(g_fkey), "ID: %s Character: %s", user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
switch (yourdata)
{
case 0:
{
static key2[46]
formatex(key2, charsmax(key2), "ID: %s", user_id[id][1])
formatex(g_fdata, charsmax(g_fdata), "%s %s %s %s %s", g_charactername[id][0], g_charactername[id][1], g_charactername[id][2], g_charactername[id][3], g_charactername[id][4])
if (fvault_get_data(g_VaultCharacters, key2, g_fdata, charsmax(g_fdata)))
{
static sz1[32], sz2[32], sz3[32], sz4[32], sz5[32]
parse(g_fdata, sz1, charsmax(sz1), sz2, charsmax(sz2), sz3, charsmax(sz3), sz4, charsmax(sz4), sz5, charsmax(sz5))
copy(g_charactername[id][0], charsmax(g_charactername[][]), sz1)
copy(g_charactername[id][1], charsmax(g_charactername[][]), sz2)
copy(g_charactername[id][2], charsmax(g_charactername[][]), sz3)
copy(g_charactername[id][3], charsmax(g_charactername[][]), sz4)
copy(g_charactername[id][4], charsmax(g_charactername[][]), sz5)
}
g_status[id] = CHARACTER_MENU
show_menu_character_selection(id)
}
case 1:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i %i %i %i %i %i %i %i %i", g_level[id], g_experience[id], g_ammopacks[id][0], g_ammopacks[id][1], g_fame[id], g_points[id][0], g_points[id][1], g_usedpoints[id][0], g_usedpoints[id][1], g_timepoints[id][0], g_timepoints[id][1], g_titles[id])
if (fvault_get_data(g_VaultExp, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szLvl[4], szExp[15], szAmmos[10], szAmmos2[10], szFame[3], szPts[10], szPtsz[10], szPts2[10], szPtsz2[10], szTimeP[10],szTimeP2[10],szTitle[3]
parse(g_fdata, szLvl, charsmax(szLvl), szExp, charsmax(szExp), szAmmos, charsmax(szAmmos), szAmmos2, charsmax(szAmmos2), szFame, charsmax(szFame), szPts, charsmax(szPts), szPtsz, charsmax(szPtsz),
szPts2, charsmax(szPts2), szPtsz2, charsmax(szPtsz2),szTimeP,charsmax(szTimeP),szTimeP2,charsmax(szTimeP2),szTitle, charsmax(szTitle))
g_level[id] = str_to_num(szLvl)
g_experience[id] = str_to_num(szExp)
g_ammopacks[id][0] = str_to_num(szAmmos)
g_ammopacks[id][1] = str_to_num(szAmmos2)
g_fame[id] = str_to_num(szFame)
g_points[id][0] = str_to_num(szPts)
g_points[id][1] = str_to_num(szPtsz)
g_usedpoints[id][0] = str_to_num(szPts2)
g_usedpoints[id][1] = str_to_num(szPtsz2)
g_timepoints[id][0] = str_to_num(szTimeP)
g_timepoints[id][1] = str_to_num(szTimeP2)
g_titles[id] = str_to_num(szTitle)
Load(id, 2)
}
else // Doesn't have data saved, show directly the menu
show_menu_character(id)
}
case 2:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i", g_humanclass[id], g_humanclassnext[id], g_zombieclass[id], g_zombieclassnext[id])
if (fvault_get_data(g_VaultClasses, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szHcl[3], szHcln[3], szZcl[3], szZcln[3]
parse(g_fdata, szHcl, charsmax(szHcl), szHcln, charsmax(szHcln), szZcl, charsmax(szZcl), szZcln, charsmax(szZcln))
g_humanclass[id] = str_to_num(szHcl)
g_humanclassnext[id] = str_to_num(szHcln)
g_zombieclass[id] = str_to_num(szZcl)
g_zombieclassnext[id] = str_to_num(szZcln)
}
Load(id, 3)
}
case 3:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i %i %i %i %i %i %i %i %i %i %i", g_infected[id][0], g_infected[id][1], g_killed[id][0][0], g_killed[id][0][1], g_killed[id][0][2], g_killed[id][0][3], g_killed[id][0][4], g_killed[id][0][5],
g_killed[id][1][0], g_killed[id][1][1], g_killed[id][1][2], g_killed[id][1][3], g_killed[id][1][4], g_killed[id][1][5])
if (fvault_get_data(g_VaultKills, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szInf[10], szInf2[10], szKill1[10], szKill2[10], szKill3[10], szKill4[10], szKill5[10], szKill6[10], szKill7[10], szKill8[10], szKill9[10], szKill10[10], szKill11[10], szKill12[10]
parse(g_fdata, szInf, charsmax(szInf), szInf2, charsmax(szInf2), szKill1, charsmax(szKill1), szKill2, charsmax(szKill2), szKill3, charsmax(szKill3), szKill4, charsmax(szKill4), szKill5, charsmax(szKill5), szKill6, charsmax(szKill6),
szKill7, charsmax(szKill7), szKill8, charsmax(szKill8), szKill9, charsmax(szKill9), szKill10, charsmax(szKill10), szKill11, charsmax(szKill11), szKill12, charsmax(szKill12))
g_infected[id][0] = str_to_num(szInf)
g_infected[id][1] = str_to_num(szInf2)
g_killed[id][0][0] = str_to_num(szKill1)
g_killed[id][0][1] = str_to_num(szKill2)
g_killed[id][0][2] = str_to_num(szKill3)
g_killed[id][0][3] = str_to_num(szKill4)
g_killed[id][0][4] = str_to_num(szKill5)
g_killed[id][0][5] = str_to_num(szKill6)
g_killed[id][1][0] = str_to_num(szKill7)
g_killed[id][1][1] = str_to_num(szKill8)
g_killed[id][1][2] = str_to_num(szKill9)
g_killed[id][1][3] = str_to_num(szKill10)
g_killed[id][1][4] = str_to_num(szKill11)
g_killed[id][1][5] = str_to_num(szKill12)
}
Load(id, 4)
}
case 4:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i %i %i %i %i %i %i %i %i", g_damage[id][0][0], g_damage[id][0][1], g_damage[id][0][2], g_damage[id][0][3], g_damage[id][0][4], g_damage[id][0][5],
g_damage[id][1][0], g_damage[id][1][1], g_damage[id][1][2], g_damage[id][1][3], g_damage[id][1][4], g_damage[id][1][5])
if (fvault_get_data(g_VaultDamage, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szDam1[20], szDam2[20], szDam3[20], szDam4[20], szDam5[20], szDam6[20], szDam7[20], szDam8[20], szDam9[20], szDam10[20], szDam11[20], szDam12[20]
parse(g_fdata, szDam1, charsmax(szDam1), szDam2, charsmax(szDam2), szDam3, charsmax(szDam3), szDam4, charsmax(szDam4), szDam5, charsmax(szDam5), szDam6, charsmax(szDam6), szDam7, charsmax(szDam7),
szDam8, charsmax(szDam8), szDam9, charsmax(szDam9), szDam10, charsmax(szDam10), szDam11, charsmax(szDam11), szDam12, charsmax(szDam12))
g_damage[id][0][0] = str_to_num(szDam1)
g_damage[id][0][1] = str_to_num(szDam2)
g_damage[id][0][2] = str_to_num(szDam3)
g_damage[id][0][3] = str_to_num(szDam4)
g_damage[id][0][4] = str_to_num(szDam5)
g_damage[id][0][5] = str_to_num(szDam6)
g_damage[id][1][0] = str_to_num(szDam7)
g_damage[id][1][1] = str_to_num(szDam8)
g_damage[id][1][2] = str_to_num(szDam9)
g_damage[id][1][3] = str_to_num(szDam10)
g_damage[id][1][4] = str_to_num(szDam11)
g_damage[id][1][5] = str_to_num(szDam12)
}
Load(id, 5)
}
case 5:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i %i %i %i %i %i %i", g_skill_points[id][0][0], g_skill_points[id][0][1], g_skill_points[id][0][2], g_skill_points[id][0][3], g_skill_points[id][0][4], g_skill_points[id][1][0],
g_skill_points[id][1][1], g_skill_points[id][1][2], g_skill_points[id][1][3], g_skill_points[id][1][4])
if (fvault_get_data(g_VaultSkills, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szSki1[3], szSki2[3], szSki3[3], szSki4[3], szSki5[3], szSki6[3], szSki7[3], szSki8[3], szSki9[3], szSki10[3]
parse(g_fdata, szSki1, charsmax(szSki1), szSki2, charsmax(szSki2), szSki3, charsmax(szSki3), szSki4, charsmax(szSki4), szSki5, charsmax(szSki5), szSki6, charsmax(szSki6), szSki7, charsmax(szSki7), szSki8, charsmax(szSki8),
szSki9, charsmax(szSki9), szSki10, charsmax(szSki10))
g_skill_points[id][0][0] = str_to_num(szSki1)
g_skill_points[id][0][1] = str_to_num(szSki2)
g_skill_points[id][0][2] = str_to_num(szSki3)
g_skill_points[id][0][3] = str_to_num(szSki4)
g_skill_points[id][0][4] = str_to_num(szSki5)
g_skill_points[id][1][0] = str_to_num(szSki6)
g_skill_points[id][1][1] = str_to_num(szSki7)
g_skill_points[id][1][2] = str_to_num(szSki8)
g_skill_points[id][1][3] = str_to_num(szSki9)
g_skill_points[id][1][4] = str_to_num(szSki10)
}
Load(id, 6)
}
case 6:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i %i %i %i %i %i", g_quest[id], g_questcompleted[id], g_questrounds[id], g_questkill[id][0], g_questkill[id][1], g_questkill[id][2], g_questkill[id][3], g_questkill[id][4], g_questkill[id][5])
if (fvault_get_data(g_VaultQuests, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szQue1[3], szQue2[4], szQue3[4], szKill1[4], szKill2[4], szKill3[4], szKill4[4], szKill5[4], szKill6[4]
parse(g_fdata, szQue1, charsmax(szQue1), szQue2, charsmax(szQue2), szQue3, charsmax(szQue3), szKill1, charsmax(szKill1), szKill2, charsmax(szKill2), szKill3, charsmax(szKill3), szKill4, charsmax(szKill4), szKill5, charsmax(szKill5), szKill6, charsmax(szKill6))
g_quest[id] = str_to_num(szQue1)
g_questcompleted[id] = str_to_num(szQue2)
g_questrounds[id] = str_to_num(szQue3)
g_questkill[id][0] = str_to_num(szKill1)
g_questkill[id][1] = str_to_num(szKill2)
g_questkill[id][2] = str_to_num(szKill3)
g_questkill[id][3] = str_to_num(szKill4)
g_questkill[id][4] = str_to_num(szKill5)
g_questkill[id][5] = str_to_num(szKill6)
}
Load(id, 7)
}
case 7:
{
formatex(g_fdata, charsmax(g_fdata), "%i %i %i %i %i", g_playedtime[id][0], g_playedtime[id][1], g_playedtime[id][2], g_playedtime[id][3],six_hours)
if (fvault_get_data(g_VaultTime, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szPla1[10], szPla2[10], szPla3[3], szPla4[3], szPla5[10]
parse(g_fdata, szPla1, charsmax(szPla1), szPla2, charsmax(szPla2), szPla3, charsmax(szPla3), szPla4, charsmax(szPla4),szPla5, charsmax(szPla5))
g_playedtime[id][0] = str_to_num(szPla1)
g_playedtime[id][1] = str_to_num(szPla2)
g_playedtime[id][2] = str_to_num(szPla3)
g_playedtime[id][3] = str_to_num(szPla4)
six_hours = str_to_num(szPla5)
}
Load(id, 8)
}
case 8:
{
formatex(g_fdata, charsmax(g_fdata), "%i %f %f %i %i %i %i %i %i %i %i %i", g_hud_stats_t[id], g_hud_stats_x[id], g_hud_stats_y[id], g_hudred[id], g_hudgreen[id], g_hudblue[id], g_nvgred[id], g_nvggreen[id], g_nvgblue[id], g_flashred[id], g_flashgreen[id], g_flashblue[id])
if (fvault_get_data(g_VaultColors, g_fkey, g_fdata, charsmax(g_fdata)))
{
static szHudStatT[2], szHudStatX[5], szHudStatY[5], szHudRed[4], szHudGreen[4], szHudBlue[4], sznvgRed[4], sznvgGreen[4], sznvgBlue[4], szflashRed[4], szflashGreen[4], szflashBlue[4]
parse(g_fdata, szHudStatT, charsmax(szHudStatT), szHudStatX, charsmax(szHudStatX), szHudStatY, charsmax(szHudStatY), szHudRed, charsmax(szHudRed), szHudGreen, charsmax(szHudGreen), szHudBlue, charsmax(szHudBlue), sznvgRed, charsmax(sznvgRed),
sznvgGreen, charsmax(sznvgGreen), sznvgBlue, charsmax(sznvgBlue), szflashRed, charsmax(szflashRed), szflashGreen, charsmax(szflashGreen), szflashBlue, charsmax(szflashBlue))
g_hud_stats_t[id] = str_to_num(szHudStatT)
g_hud_stats_x[id] = str_to_float(szHudStatX)
g_hud_stats_y[id] = str_to_float(szHudStatY)
g_hudred[id] = str_to_num(szHudRed)
g_hudgreen[id] = str_to_num(szHudGreen)
g_hudblue[id] = str_to_num(szHudBlue)
g_nvgred[id] = str_to_num(sznvgRed)
g_nvggreen[id] = str_to_num(sznvgGreen)
g_nvgblue[id] = str_to_num(sznvgBlue)
g_flashred[id] = str_to_num(szflashRed)
g_flashgreen[id] = str_to_num(szflashGreen)
g_flashblue[id] = str_to_num(szflashBlue)
}
show_menu_character(id)
}
}
}
// Create New Account
create_account(id)
{
new szBuffer[34], szDate[11]
md5(user_password[id][0], szBuffer)
get_time("%Y/%m/%d", szDate, charsmax(szDate))
g_createdaccounts++
save_account_count()
formatex(g_fdata, charsmax(g_fdata), "%s %s 0000-00-00", szBuffer, szDate)
fvault_set_data(g_VaultAccounts, user_id[id][0], g_fdata)
user_id[id][0] = ""
client_print(id, print_center, "[ZA] Registro finalizado con éxito")
// Show menu again
show_menu_registration(id)
}
// Create Character: Check Character
create_character(id)
{
if (equal(g_playername[id], "None"))
{
client_print(id, print_center, "[ZA] Error: Este nombre no puede ser usado. Por favor, cámbiese el nombre")
show_menu_character_selection(id)
return;
}
if (TrieKeyExists(g_tcharacternames, g_playername[id]))
client_print(id, print_center, "[ZA] El nombre se encuentra en uso. Por favor, cámbiese el nombre")
else
{
g_titles[id]= 0
formatex(g_titles_name[id], charsmax(g_titles_name[]), "%s",ListTitulos[g_titles[id]]);
g_createdcharacters++
save_account_count()
TrieSetCell(g_tcharacternames, g_playername[id], 1)
copy(g_charactername[id][SELECTED_CHARACTER], charsmax(g_charactername[][]), g_playername[id])
formatex(g_fkey, charsmax(g_fkey), "ID: %s", user_id[id][1])
formatex(g_fdata, charsmax(g_fdata), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", g_charactername[id][0], g_charactername[id][1], g_charactername[id][2], g_charactername[id][3], g_charactername[id][4])
fvault_set_data(g_VaultCharacters, g_fkey, g_fdata)
client_print(id, print_center, "[ZA] Personaje creado con éxito")
}
show_menu_character_selection(id)
}
// Change Password
change_password(id)
{
new szBuffer[34], szDate[11]
md5(user_password[id][0], szBuffer)
get_time("%Y/%m/%d", szDate, charsmax(szDate))
formatex(g_fdata, charsmax(g_fdata), "%s %s %s", szBuffer, g_register_date[id], szDate)
fvault_set_data(g_VaultAccounts, user_id[id][1], g_fdata)
copy(user_password[id][1], charsmax(user_password[][]), user_password[id][0])
user_password[id][0] = ""
client_print(id, print_center, "[ZA] Contraseña cambiada con éxito")
// Show menu again
show_menu_character_selection(id)
}
loggin_success(id, spec = 0)
{
// Set g_titles[id] name
set_user_info(id, "name", g_charactername[id][SELECTED_CHARACTER])
// Welcome message
zp_colored_print(0, "^x04[ZA]^x01 Bienvenido! ^x04%s^x01 ha iniciado sesión.", g_charactername[id][SELECTED_CHARACTER])
// Update level
update_level(id)
// Set the custom HUD display task if enabled
if (get_pcvar_num(cvar_huddisplay))
set_task(1.0, "ShowHUD", id+TASK_SHOWHUD, _, _, "b")
// Set time check task
set_task(1.0, "check_time", id+TASK_TIME, _, _, "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;
// Get user flags
static userflags; userflags = get_user_flags(id)
// Admin modes per map
for (new i = ArraySize(g_admin_names)-1; i > -1; i--)
{
if (userflags & ArrayGetCell(g_admin_flags, i))
{
g_modescount[id] = ArrayGetCell(g_admin_modes, i)
break;
}
else if (i == 0) // All flags checked, not admin
g_modescount[id] = 0
}
}
// 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[ZA]^x01 No puedes salir estando vivo.")
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)
remove_task(id+TASK_TIME)
remove_task(id+TASK_COMBO)
// 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, 0)
// 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, "[ZA] Sesión cerrada con éxito.")
// 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)
}
}