Raised This Month: $32 Target: $400
 8% 

[HELP][ZP] Login system optimization


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
mashinata619
Member
Join Date: Aug 2010
Old 11-13-2014 , 17:45   [HELP][ZP] Login system optimization
Reply With Quote #1

HI guys,

I try to optimize the login system of Zombie Apocalypse because it need many time to load all of things.
But I don't understand any of SQL. Can someone help my?
This is the part of login system in the .sma.
I think that the problem come of the switch in the Load function.

PHP Code:
// SQL table's names
#define TABLE1 "account"
#define TABLE2 "experience"
#define TABLE3 "classes"
#define TABLE4 "statistics"
#define TABLE5 "skills"
#define TABLE6 "quest"
#define TABLE7 "time"
#define TABLE8 "colours"
#define TABLE9 "system"

/*================================================================================
 [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])
    
    static 
iData[2]
    
iData[0] = id
    iData
[1] = LOG_ID
    
    formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^""TABLE1user_id[id][0])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// 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_querycharsmax(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_queryiData2)
}
    
// Check if account is currently online
check_online_account(id)
{
    
// Get logged players count
    
static iPlayersnumiPlayersnum 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(id0)
        return;
    }
    
    
// Check all players ID's
    
for (new 1<= g_maxplayersi++)
    {
        
// Same user ID
        
if (equal(user_id[i][1], user_id[id][0]) && g_status[i] > OFFLINE)
        {
            
client_print(idprint_center"[ZA] Error: La cuenta se está utilizando actualmente.")
            
show_menu_registration(id)
            break;
        }
        else if (
== 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(id0)
        }
    }
}

// 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(idprint_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(idprint_center"[ZA] Error: El ID no debe contener carácteres especiales")
        
show_menu_registration(id)
        return;
    }
    
    static 
iData[2]
    
iData[0] = id
    iData
[1] = REG_ID
    
    formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^""TABLE1user_id[id][0])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// 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(idprint_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(idprint_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 != || equal(user_password[id][0], user_id[id][1]) && CONFIRM_MENU == 3)
    {
        
client_print(idprint_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(idprint_center"[ZA] Error: La contraseña es la misma que la actual")
        
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"szDatecharsmax(szDate))
    
    
formatex(g_querycharsmax(g_query), "UPDATE `%s` SET `Last Loggin`='%s' WHERE `User ID`=^"%s^""TABLE1szDateuser_id[id][1])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
    
    
formatex(g_querycharsmax(g_query), "UPDATE `%s` SET `Level`='%d', `Experience`='%d', `Ammopacks`='%d', `Used Ammopacks`='%d', `Range`='%d', `Fame`='%d', `Human Points`='%d', `Zombie Points`='%d', `Used Human Points`='%d', `Used Zombie Points`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^""
    
TABLE2g_level[id], g_experience[id], g_ammopacks[id][0], g_ammopacks[id][1], g_rangelevel[id], g_fame[id], g_points[id][0], g_points[id][1], g_usedpoints[id][0], g_usedpoints[id][1], user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
    
    
formatex(g_querycharsmax(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^""
    
TABLE3g_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_querycharsmax(g_query), "UPDATE `%s` SET `Infected Human`='%d', `Received Infect`='%d', `Human Killed`='%d', `Zombie Killed`='%d', `Survivor Killed`='%d', `Wesker Killed`='%d', `Nemesis Killed`='%d', `Alien Killed`='%d', `Human Dead`='%d', `Zombie Dead`='%d', `Survivor Dead`='%d', `Wesker Dead`='%d', `Nemesis Dead`='%d', `Alien Dead`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^""
    
TABLE4g_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], user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
    
    
formatex(g_querycharsmax(g_query), "UPDATE `%s` SET `Human Damage`='%d', `Zombie Damage`='%d', `Survivor Damage`='%d', `Wesker Damage`='%d', `Nemesis Damage`='%d', `Alien Damage`='%d', `Human RDamage`='%d', `Zombie RDamage`='%d', `Survivor RDamage`='%d', `Wesker RDamage`='%d', `Nemesis RDamage`='%d', `Alien RDamage`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^""
    
TABLE4g_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], user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
    
    
formatex(g_querycharsmax(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', `ZDefense Skill`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^""
    
TABLE5g_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], user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
    
    
formatex(g_querycharsmax(g_query), "UPDATE `%s` SET `Selected Quest`='%d', `Completed Quest`='%d', `Quest Rounds`='%d', `Quest Killed Human`='%d', `Quest Killed Zombie`='%d', `Quest Killed Survivor`='%d', `Quest Killed Wesker`='%d', `Quest Killed Nemesis`='%d', `Quest Killed Alien`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^""
    
TABLE6g_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], user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
    
    
formatex(g_querycharsmax(g_query), "UPDATE `%s` SET `Rounds Played`='%d', `Hours Played`='%d', `Minutes Played`='%d', `Seconds Played`='%d' WHERE `User ID`=^"%s^" AND `Character`=^"%s^""
    
TABLE7g_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_querycharsmax(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^""
    
TABLE8g_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], user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
}

Load(idyourdata)
{
    static 
iData[2]
    
iData[0] = id
    
    
switch (yourdata)
    {
        case 
0:
        {
            
iData[1] = LOAD_DATA1
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^""TABLE1user_id[id][1])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
1:
        {
            
iData[1] = LOAD_DATA2
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE2user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
2:
        {
            
iData[1] = LOAD_DATA3
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE3user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
3:
        {
            
iData[1] = LOAD_DATA4
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE4user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
4:
        {
            
iData[1] = LOAD_DATA5
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE5user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
5:
        {
            
iData[1] = LOAD_DATA6
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE6user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
6:
        {
            
iData[1] = LOAD_DATA7
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE7user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
        case 
7:
        {
            
iData[1] = LOAD_DATA8
            formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `User ID`=^"%s^" AND `Character`=^"%s^""TABLE8user_id[id][1], g_charactername[id][SELECTED_CHARACTER])
            
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
        }
    }
}

// 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"szDatecharsmax(szDate))
        
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Password`, `Register Date`) VALUES (^"%s^", ^"%s^", '%s')"TABLE1user_id[id][0], szBufferszDate)
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// Create Character: Check Character
check_character(id)
{
    if (
equal(g_playername[id], "None"))
    {
        
client_print(idprint_center"[ZA] Error: Este nombre no puede ser usado. Por favor, cámbiese el nombre")
        
show_menu_character_selection(id)
        return;
    }
    
    new 
iData[2]
    
iData[0] = id
    iData
[1] = CHECK_CHARACTER
    
    formatex
(g_querycharsmax(g_query), "SELECT * FROM `%s` WHERE `Character`=^"%s^""TABLE2g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// Create Character
create_character(id)
{
    new 
iData[2]
    
iData[0] = id
    iData
[1] = REG_CHARACTER
    
    formatex
(g_querycharsmax(g_query), "UPDATE `%s` SET `Character %d`=^"%s^" WHERE `User ID`=^"%s^""TABLE1SELECTED_CHARACTER+1g_playername[id], user_id[id][1])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE2user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE3user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE4user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE5user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE6user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE7user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
    
formatex(g_querycharsmax(g_query), "INSERT INTO `%s` (`User ID`, `Character`) VALUES (^"%s^", ^"%s^")"TABLE8user_id[id][1], g_playername[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// 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_querycharsmax(g_query), "UPDATE `%s` SET `Password`=^"%s^" WHERE `User ID`=^"%s^""TABLE1szBufferuser_id[id][1])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// Show player rank
show_rank(id)
{
    static 
iData[2]
    
iData[0] = id
    iData
[1] = SHOW_RANK
    
    formatex
(g_querycharsmax(g_query), "SELECT (COUNT(*) + 1) FROM `%s` WHERE `Fame` > '%d' OR (`Fame` = '%d' AND `Experience` > '%d')"TABLE2g_fame[id], g_fame[id], g_experience[id])
    
SQL_ThreadQuery(g_SqlTuple"QueryHandle"g_queryiData2)
}

// Load top 15 motd
load_top15()
{
    new 
ErrorCodeHandle:SqlConnection SQL_Connect(g_SqlTupleErrorCodeg_Errorcharsmax(g_Error))
    if (
SqlConnection != Empty_Handle)
    {
        new 
Handle:query SQL_PrepareQuery(SqlConnection"SELECT `Character`, `Level`, `Experience`, `Ammopacks`, `Fame`, `Human Points`, `Zombie Points` FROM `%s` ORDER BY `Fame` DESC, `Level` DESC, `Experience` DESC LIMIT 15"TABLE2)
        
SQL_Execute(query)
    
        if (
SQL_NumResults(query))
        {
            
g_top15_clear false
        
            
static lenlen 0
            len 
+= formatex(g_motd[len], charsmax(g_motd), "<body bgcolor=#000000><font color=#FFB000><pre><center><h2>---- Zombie Apocalypse Top 15 ----</h2></center>^n^n")
            
len += formatex(g_motd[len], charsmax(g_motd), "<b><u>%5s  %29s  %7s  %2s  %9s  %7s  %5s  %5s</u></b>^n""Rank""Nombre""Prestigio""Nivel""Experiencia""Ammopacks""H. Puntos""Z. Puntos")

            new 
iPositionszName[32], iLeveliExpiApiFameiHPiZP
            
while (SQL_MoreResults(query))
            {
                ++
iPosition

                SQL_ReadResult
(query0szNamecharsmax(szName))
                
iLevel SQL_ReadResult(query1)
                
iExp SQL_ReadResult(query2)
                
iAp SQL_ReadResult(query3)
                
iFame SQL_ReadResult(query4)
                
iHP SQL_ReadResult(query5)
                
iZP SQL_ReadResult(query6)
            
                
len += formatex(g_motd[len], charsmax(g_motd), "%4d   %29s  %4d  %8d  %11d  %9d  %9d  %9d^n"iPositionszNameiFameiLeveliExpiApiHPiZP)

                
SQL_NextRow(query)
            }
        }
        else
            
g_top15_clear true
        
        SQL_FreeHandle
(query)
    }
}

save_account_count()
{
    
formatex(g_querycharsmax(g_query), "UPDATE `%s` SET `Created accounts`='%d', `Created characters`='%d'"TABLE9g_createdaccountsg_createdcharacters)
    
SQL_ThreadQuery(g_SqlTuple"IgnoreHandle"g_query)
}

public 
IgnoreHandle(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    
SQL_FreeHandle(Query)
    
    return 
PLUGIN_HANDLED;
}

public 
QueryHandle(FailStateHandle:QueryError[], ErrcodeData[], DataSizeFloat:time)
{
    static 
idid Data[0]
    
    
// Connected?
    
if (!is_user_connected(id)) return PLUGIN_HANDLED;

    switch (
FailState)
    {
        case 
TQUERY_CONNECT_FAILEDlog_to_file("SQL_LOG_TQ.txt""Failed to connect to database [%i]: %s"ErrcodeError)
        case 
TQUERY_QUERY_FAILEDlog_to_file("SQL_LOG_TQ.txt""Error in MySQL query [%i]: %s"ErrcodeError)
    }
    
    switch (
Data[1])
    {
        case 
SHOW_RANK:
        {
            if (
SQL_NumResults(Query))
                
zp_colored_print(id"^x04[ZA]^x01 Tu ranking es ^x04%s^x01 de ^x04%s^x01."add_point(SQL_ReadResult(Query0)), add_point(g_createdcharacters))
        }
        case 
REG_ID:
        {
            if (!
SQL_NumResults(Query))
            {
                
client_cmd(id"messagemode ^"register_password^"")
                
set_hudmessage(02552550.030.0500.14.00.010.01, -1)
                
ShowSyncHudMsg(idg_MsgSync5"Ingresa una Contraseña^nPulse ESC para salir")
            }
            else
            {
                
client_print(idprint_center"[ZA] Error: El ID ingresado se encuentra en uso")
                
show_menu_registration(id)
            }
        }
        case 
REG_PASSWORD:
        {
            
g_createdaccounts++
            
save_account_count()
            
user_id[id][0] = ""
            
client_print(idprint_center"[ZA] Registro finalizado con éxito")
            
show_menu_registration(id)
        }
        case 
LOG_ID:
        {
            if (
SQL_NumResults(Query))
            {
                
client_cmd(id"messagemode ^"your_password^"")
                
set_hudmessage(02552550.030.0500.14.00.010.01, -1)
                
ShowSyncHudMsg(idg_MsgSync5"Ingresa tu Contraseña^nPulse ESC para salir")
            }
            else
            {
                
g_attempts[id]--
                
client_print(idprint_center"[ZA] Error: El ID ingresado no existe. Intentos restantes: %d"g_attempts[id])
                
show_menu_registration(id)
            }
        }
        case 
LOG_PASSWORD:
        {
            if (
SQL_NumResults(Query))
            {
                static 
szPass[35], szBuffer[34]
                
SQL_ReadResult(Query1szPasscharsmax(szPass))
                
md5(user_password[id][0], szBuffer)
                
                if (
equal(szBufferszPass))
                {
                    if (
g_status[id] != OFFLINE)
                    {
                        
CONFIRM_MENU 3
                        client_cmd
(id"messagemode ^"register_new_password^"")
                        
set_hudmessage(02552550.030.0500.14.00.010.01, -1)
                        
ShowSyncHudMsg(idg_MsgSync5"Ingresa una Contraseña nueva^nPulse ESC para salir")
                    }
                    else
                        
check_online_account(id)
                }
                else
                {
                    if (
g_status[id] != OFFLINE)
                    {
                        
user_password[id][0] = ""
                        
client_print(idprint_center"[ZA] Error: La contraseña ingresada es incorrecta.")
                        
show_menu_character_selection(id)
                    }
                    else
                    {
                        
g_attempts[id]--
                        
client_print(idprint_center"[ZA] Error: La contraseña ingresada es incorrecta. Intentos restantes: %d"g_attempts[id])
                        
show_menu_registration(id)
                    }
                }
            }
        }
        case 
CHECK_CHARACTER:
        {
            if (!
SQL_NumResults(Query))
            {
                
CONFIRM_MENU 1
                show_menu_confirm
(id)
            }
            else
            {
                
client_print(idprint_center"[ZA] El nombre se encuentra en uso. Por favor, cámbiese el nombre")
                
show_menu_character_selection(id)
            }
        }
        case 
REG_CHARACTER:
        {
            static 
loadingloading++
            switch (
loading)
            {
                case 
1:
                {
                    
loading 0
                    g_createdcharacters
++
                    
save_account_count()
                    
copy(g_charactername[id][SELECTED_CHARACTER], charsmax(g_charactername[][]), g_playername[id])
                    
client_print(idprint_center"[ZA] Personaje creado con éxito")
                    
show_menu_character_selection(id)
                }
            }
        }
        case 
LOAD_DATA1:
        {
            if (
SQL_NumResults(Query))
            {
                
SQL_ReadResult(Query2g_register_date[id], charsmax(g_register_date[]))
                
SQL_ReadResult(Query3g_last_loggin[id], charsmax(g_last_loggin[]))
                
SQL_ReadResult(Query4g_charactername[id][0], charsmax(g_charactername[][]))
                
SQL_ReadResult(Query5g_charactername[id][1], charsmax(g_charactername[][]))
                
SQL_ReadResult(Query6g_charactername[id][2], charsmax(g_charactername[][]))
                
SQL_ReadResult(Query7g_charactername[id][3], charsmax(g_charactername[][]))
                
SQL_ReadResult(Query8g_charactername[id][4], charsmax(g_charactername[][]))
            }
            
            
g_status[id] = CHARACTER_MENU
            show_menu_character_selection
(id)
        }
        case 
LOAD_DATA2:
        {
            if (
SQL_NumResults(Query))
            {
                
g_level[id] = SQL_ReadResult(Query2)
                
g_experience[id] = SQL_ReadResult(Query3)
                
g_ammopacks[id][0] = SQL_ReadResult(Query4)
                
g_ammopacks[id][1] = SQL_ReadResult(Query5)
                
g_rangelevel[id] = SQL_ReadResult(Query6)
                
g_fame[id] = SQL_ReadResult(Query7)
                
g_points[id][0] = SQL_ReadResult(Query8)
                
g_points[id][1] = SQL_ReadResult(Query9)
                
g_usedpoints[id][0] = SQL_ReadResult(Query10)
                
g_usedpoints[id][1] = SQL_ReadResult(Query11)
                
client_print(idprint_center"[ZA] Cargando... 10%")
            
                
            }
            
            
Load(id2)
        }
        case 
LOAD_DATA3:
        {
            if (
SQL_NumResults(Query))
            {
            
g_humanclass[id] = SQL_ReadResult(Query2)
                
g_humanclassnext[id] = SQL_ReadResult(Query3)
            
g_zombieclass[id] = SQL_ReadResult(Query4)
                
g_zombieclassnext[id] = SQL_ReadResult(Query5)
            
client_print(idprint_center"[ZA] Cargando... 20%")
                    
            }
            
            
Load(id3)
        }
        case 
LOAD_DATA4:
        {
            if (
SQL_NumResults(Query))
            {
                
g_infected[id][0] = SQL_ReadResult(Query2)
                
g_infected[id][1] = SQL_ReadResult(Query3)
                
g_killed[id][0][0] = SQL_ReadResult(Query4)
                
g_killed[id][0][1] = SQL_ReadResult(Query5)
                
g_killed[id][0][2] = SQL_ReadResult(Query6)
                
g_killed[id][0][3] = SQL_ReadResult(Query7)
                
g_killed[id][0][4] = SQL_ReadResult(Query8)
                
g_killed[id][0][5] = SQL_ReadResult(Query9)
                
g_killed[id][1][0] = SQL_ReadResult(Query10)
                
g_killed[id][1][1] = SQL_ReadResult(Query11)
                
g_killed[id][1][2] = SQL_ReadResult(Query12)
                
g_killed[id][1][3] = SQL_ReadResult(Query13)
                
g_killed[id][1][4] = SQL_ReadResult(Query14)
                
g_killed[id][1][5] = SQL_ReadResult(Query15)
                
g_damage[id][0][0] = SQL_ReadResult(Query16)
                
g_damage[id][0][1] = SQL_ReadResult(Query17)
                
g_damage[id][0][2] = SQL_ReadResult(Query18)
                
g_damage[id][0][3] = SQL_ReadResult(Query19)
                
g_damage[id][0][4] = SQL_ReadResult(Query20)
                
g_damage[id][0][5] = SQL_ReadResult(Query21)
                
g_damage[id][1][0] = SQL_ReadResult(Query22)
                
g_damage[id][1][1] = SQL_ReadResult(Query23)
                
g_damage[id][1][2] = SQL_ReadResult(Query24)
                
g_damage[id][1][3] = SQL_ReadResult(Query25)
                
g_damage[id][1][4] = SQL_ReadResult(Query26)
                
g_damage[id][1][5] = SQL_ReadResult(Query27)
                
client_print(idprint_center"[ZA] Cargando... 50%")
                
            }
            
            
Load(id4)
        }
        case 
LOAD_DATA5:
        {
            if (
SQL_NumResults(Query))
            {
                
g_skill_points[id][0][0] = SQL_ReadResult(Query2)
                
g_skill_points[id][0][1] = SQL_ReadResult(Query3)
                
g_skill_points[id][0][2] = SQL_ReadResult(Query4)
                
g_skill_points[id][0][3] = SQL_ReadResult(Query5)
                
g_skill_points[id][0][4] = SQL_ReadResult(Query6)
                
g_skill_points[id][1][0] = SQL_ReadResult(Query7)
                
g_skill_points[id][1][1] = SQL_ReadResult(Query8)
                
g_skill_points[id][1][2] = SQL_ReadResult(Query9)
                
g_skill_points[id][1][3] = SQL_ReadResult(Query10)
                
g_skill_points[id][1][4] = SQL_ReadResult(Query11)
                
client_print(idprint_center"[ZA] Cargando... 60%")
            }
            
            
Load(id5)
        }
        case 
LOAD_DATA6:
        {
            if (
SQL_NumResults(Query))
            {
                
g_quest[id] = SQL_ReadResult(Query2)
                
g_questcompleted[id] = SQL_ReadResult(Query3)
                
g_questrounds[id] = SQL_ReadResult(Query4)
                
g_questkill[id][0] = SQL_ReadResult(Query5)
                
g_questkill[id][1] = SQL_ReadResult(Query6)
                
g_questkill[id][2] = SQL_ReadResult(Query7)
                
g_questkill[id][3] = SQL_ReadResult(Query8)
                
g_questkill[id][4] = SQL_ReadResult(Query9)
                
g_questkill[id][5] = SQL_ReadResult(Query10)
                
client_print(idprint_center"[ZA] Cargando... 70%")
                
            }
            
            
Load(id6)
        }
        case 
LOAD_DATA7:
        {
            if (
SQL_NumResults(Query))
            {
                
g_playedtime[id][0] = SQL_ReadResult(Query2)
                
g_playedtime[id][1] = SQL_ReadResult(Query3)
                
g_playedtime[id][2] = SQL_ReadResult(Query4)
                
g_playedtime[id][3] = SQL_ReadResult(Query5)
                
client_print(idprint_center"[ZA] Cargando... 75%")
            }
            
            
Load(id7)
        }
        case 
LOAD_DATA8:
        {
            if (
SQL_NumResults(Query))
            {
                static 
datacolor[16], szRed[4], szGreen[4], szBlue[4]
                
g_hud_stats_t[id] = SQL_ReadResult(Query2)
                
SQL_ReadResult(Query3Float:g_hud_stats_x[id])
                
SQL_ReadResult(Query4Float:g_hud_stats_y[id])
                
SQL_ReadResult(Query5datacolorcharsmax(datacolor))
                
parse(datacolorszRedcharsmax(szRed), szGreencharsmax(szGreen), szBluecharsmax(szBlue))
                
g_hudred[id] = str_to_num(szRed)
                
g_hudgreen[id] = str_to_num(szGreen)
                
g_hudblue[id] = str_to_num(szBlue)
                
SQL_ReadResult(Query6datacolorcharsmax(datacolor))
                
parse(datacolorszRedcharsmax(szRed), szGreencharsmax(szGreen), szBluecharsmax(szBlue))
                
g_nvgred[id] = str_to_num(szRed)
                
g_nvggreen[id] = str_to_num(szGreen)
                
g_nvgblue[id] = str_to_num(szBlue)
                
SQL_ReadResult(Query7datacolorcharsmax(datacolor))
                
parse(datacolorszRedcharsmax(szRed), szGreencharsmax(szGreen), szBluecharsmax(szBlue))
                
g_flashred[id] = str_to_num(szRed)
                
g_flashgreen[id] = str_to_num(szGreen)
                
g_flashblue[id] = str_to_num(szBlue)
                
client_print(idprint_center"[ZA] Cargando... 100%")
            }
            
            
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(idprint_center"[ZA] Contraseña cambiada con éxito")
        }
    }
    
    return 
PLUGIN_CONTINUE;
}

loggin_success(idspec 0)
{
    
// Set character 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 time check task
    
set_task(1.0"check_time"id+TASK_TIME__"b")
    
    
// Set the custom HUD display task if enabled
    
if (get_pcvar_num(cvar_huddisplay))
        
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(idFM_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 userflagsuserflags get_user_flags(id)
    
    
// Admin modes per map
    
for (new ArraySize(g_admin_names)-1> -1i--)
    {
        if (
userflags ArrayGetCell(g_admin_flagsi))
        {
            
g_modescount[id] = ArrayGetCell(g_admin_modesi)
            break;
        }
        else if (
== 0// All flags checked, not admin
            
g_modescount[id] = 0
    
}
}

// Log Out from Account
log_out(idcharactermenu)
{
    
// 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_ClientKillid)
    }
    
    
// 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(idFM_CS_TEAM_UNASSIGNED)
        
fm_user_team_update(id)
    }
    
    
// Initialize player vars
    
reset_vars(id10)
    
    
// 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(idprint_center"[ZA] Sesión cerrada con éxito.")
    
        
// Reset character names
        
for (new 05i++) 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)
    }

I hope someone help me. Thanks
mashinata619 is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:14.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode