AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [HELP][ZP] Login system optimization (https://forums.alliedmods.net/showthread.php?t=251481)

mashinata619 11-13-2014 17:45

[HELP][ZP] Login system optimization
 
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 :D


All times are GMT -4. The time now is 17:30.

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