View Single Post
Author Message
wicho
Veteran Member
Join Date: Feb 2012
Location: GuateAmala
Old 11-13-2018 , 19:52   Change to nvault
Reply With Quote #1

Hi everyone, could someone change this code to nvault please? ... Thanks in advance

PHP Code:
#include <amxmodx>
#include <fakemeta >
#include <hamsandwich>
#include <dhudmessage>
#include <zombieplague>
#include <sqlx>

#define MAX_CLIENTS 32

enum (+= 100)
{
    
TASK_SHOWHUD 4000,
    
TASK_LOAD_DATA
};

enum _:eData
{
    
Level 0,
    
Experience
};

// CBaseMonster
#define m_LastHitGroup    75

#define USERHUD_NOTICE    0, 255, 255, 0.02, 0.2

new const FloatflGetExpirenceForDamage 2500.0 
new const iGetExpirenceForKillZombie 
new const iGetExpirenceForKillZombieHead 
new const iExperienceMulti 10 

new const iMaxUserLevel 100 

#define SQL_HOST        ""
#define SQL_USER        ""
#define SQL_PASSWORD    ""
#define SQL_DATABASE    ""
#define SQL_TABLENAME    "zp_level_system"

new g_iUserData[MAX_CLIENTS 1][eData]

new 
boolg_bUserLoaded[MAX_CLIENTS +1]

new 
Floatg_flUserDamage[MAX_CLIENTS +1]

new 
g_szUserSteamID[MAX_CLIENTS +1][34]
new 
g_szQuery[512

new 
Handleg_hDBTuple 
new Handleg_hConnect

public plugin_init()
{
    
register_plugin("[ZP] Level System""Best""t3rkecorejz")
    
    
register_event("HLTV""EV_RoundStart""a""1=0""2=0")
    
    
RegisterHam(Ham_Killed"player""CPlayer__Killed_Post", .Post 1)
    
RegisterHam(Ham_TakeDamage"player""CPlayer__TakeDamage_Post", .Post 1)
}

public 
plugin_natives()
{
    
register_native("ZP_GetUserData""Native_GetUserData"1)
    
register_native("ZP_GetUserExpForNextLevel""Native_GetUserExpForNextLevel"1)
    
register_native("ZP_SetUserData""Native_SetUserData"1)
    
register_native("ZP_CheckUserNextLevel""Native_CheckUserNextLevel"1)
}

public 
plugin_cfg() SQL_LoadDebug()
public 
plugin_end() 
{
    if(
g_hDBTuple
        
SQL_FreeHandle(g_hDBTuple)
    
    if(
g_hConnect
        
SQL_FreeHandle(g_hConnect)
    
    return
}

public 
client_putinserver(iPlayer
{
    
set_task(random_float(1.03.0), "CTask__LoadData"iPlayer +TASK_LOAD_DATA)
    
set_task(1.0"CTask__ShowUserHud"iPlayer +TASK_SHOWHUD__, .flags "b")
}

public 
client_disconnect(iPlayer)
{
    if(!
g_bUserLoaded[iPlayer])
        return
    
    
formatex(g_szQuerycharsmaxg_szQuery), "UPDATE `%s` SET `Level` = '%d', `Experience` = '%d' WHERE `%s`.`SteamID` = '%s';"SQL_TABLENAMEg_iUserData[iPlayer][Level], g_iUserData[iPlayer][Experience], SQL_TABLENAMEg_szUserSteamID[iPlayer])
    
SQL_ThreadQuery(g_hDBTuple"SQL_ThreadQueryHandler"g_szQuery)
}

// Events
public EV_RoundStart()
{
    for(new 
iPlayer 1iPlayer <= MAX_CLIENTSiPlayer++)
    {
        if(!
is_user_connected(iPlayer))
            continue;
        
        if(!
g_bUserLoaded[iPlayer])
            return;
        
        
formatex(g_szQuerycharsmax(g_szQuery), "UPDATE `%s` SET `Level` = '%d', `Experience` = '%d' WHERE `%s`.`SteamID` = '%s';"SQL_TABLENAMEg_iUserData[iPlayer][Level], g_iUserData[iPlayer][Experience], SQL_TABLENAMEg_szUserSteamID[iPlayer])
        
SQL_ThreadQuery(g_hDBTuple"SQL_ThreadQueryHandler"g_szQuery)
    }
}

// Ham
public CPlayer__Killed_Post(iVictimiInflictoriAttacker)
{
    if(!
is_user_connected(iVictim) || !is_user_connected(iAttacker) || iVictim == iAttacker)
        return;
    
    if(
g_iUserData[iAttacker][Level] >= iMaxUserLevel)
        return;
    
    if(
zp_get_user_zombie(iVictim) && !zp_get_user_zombie(iAttacker))
    {
        if(
get_pdata_int(iVictimm_LastHitGroup5) == HIT_HEAD)
        {
            
g_iUserData[iAttacker][Experience] += iGetExpirenceForKillZombieHead
            
return
        }
        
        
g_iUserData[iAttacker][Experience] += iGetExpirenceForKillZombie
        Native_CheckUserNextLevel
(iAttacker)
    }
    return;
}

public 
CPlayer__TakeDamage_Post(iVictimiInflictoriAttackerFloatflDamage)
{
    if(!
is_user_connected(iVictim) || !is_user_connected(iAttacker) || iVictim == iAttacker)
        return
    
    if(
g_iUserData[iAttacker][Level] >= iMaxUserLevel)
        return
    
    if(
zp_get_user_zombie(iVictim) && !zp_get_user_zombie(iAttacker))
    {
        
g_flUserDamage[iAttacker] += flDamage
        
        
if(g_flUserDamage[iAttacker] >= flGetExpirenceForDamage)
        {
            while(
g_flUserDamage[iAttacker] >= flGetExpirenceForDamage)
            {
                
g_flUserDamage[iAttacker] -= flGetExpirenceForDamage
                g_iUserData
[iAttacker][Experience] += 1
            
}
        }
        
Native_CheckUserNextLevel(iAttacker)
    }
    return;
}

// Task
public CTask__LoadData(iTask)
{
    new 
iPlayer iTask -TASK_LOAD_DATA
    
    
if(!is_user_connected(iPlayer))
        return
    
    new 
iParams[1]
    
iParams [0] = iPlayer
    
    get_user_authid
(iPlayerg_szUserSteamID[iPlayer], charsmax(g_szUserSteamID[]))
    
    
formatex(g_szQuerycharsmax(g_szQuery), "SELECT * FROM `%s` WHERE (`%s`.`SteamID` = '%s')"SQL_TABLENAMESQL_TABLENAMEg_szUserSteamID[iPlayer])
    
SQL_ThreadQuery(g_hDBTuple"SQL_QueryConnection"g_szQueryiParamssizeof iParams)
}

public 
CTask__ShowUserHud(iTask)
{
    new 
iPlayer iTask -TASK_SHOWHUD
    
    
if(!is_user_alive(iPlayer))
        return
    
    
set_dhudmessage(USERHUD_NOTICE00.01.10.00.0false)
    
show_dhudmessage(iPlayer"[Level: %d | %d%%]"g_iUserData[iPlayer][Level], floatround(99.0 Native_GetUserExpForNextLevel(iPlayer) * g_iUserData[iPlayer][Experience]))
}

// MySQL
public SQL_LoadDebug() 
{
    new 
szError[512]
    new 
iErrorCode
    
    g_hDBTuple 
SQL_MakeDbTuple(SQL_HOSTSQL_USERSQL_PASSWORDSQL_DATABASE)
    
g_hConnect SQL_Connect(g_hDBTupleiErrorCodeszErrorcharsmax(szError))
    
    if(
g_hConnect == Empty_Handle)
        
set_fail_state(szError)
    
    if(!
SQL_TableExists(g_hConnectSQL_TABLENAME))
    {
        new 
HandlehQueries 
        
new szQuery[512]
        
        
formatex(szQuerycharsmax(szQuery), "CREATE TABLE IF NOT EXISTS `%s` (SteamID varchar(32) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL, Level INT NOT NULL, Experience INT NOT NULL, PRIMARY KEY (SteamID))"SQL_TABLENAME)
        
hQueries SQL_PrepareQuery(g_hConnectszQuery)
        
        if(!
SQL_Execute(hQueries))
        {
            
SQL_QueryError(hQueriesszErrorcharsmax(szError))
            
set_fail_state(szError)
        }
        
SQL_FreeHandle(hQueries)    
    }
    
SQL_QueryAndIgnore(g_hConnect"SET NAMES utf8")
}

public 
SQL_QueryConnection(iStateHandlehQueryszError[], iErrorCodeiParams[], iParamsSize)
{
    switch(
iState)
    {
        case 
TQUERY_CONNECT_FAILEDlog_amx("Load - Could not connect to SQL database. [%d] %s"iErrorCodeszError)
        case 
TQUERY_QUERY_FAILEDlog_amx("Load Query failed. [%d] %s"iErrorCodeszError)
    }
    
    new 
iPlayer iParams[0]
    
g_bUserLoaded[iPlayer] = true
    
    
if(SQL_NumResults(hQuery) < 1)
    {
        if(
equal(g_szUserSteamID[iPlayer], "ID_PENDING"))
            return 
PLUGIN_HANDLED

        g_iUserData
[iPlayer] = {10}

        
formatex(g_szQuerycharsmax(g_szQuery), "INSERT INTO `%s` (`SteamID`, `Level`, `Experience`) VALUES ('%s', '%d', '%d');"SQL_TABLENAMEg_szUserSteamID[iPlayer], g_iUserData[iPlayer][Level], g_iUserData[iPlayer][Experience])
        
SQL_ThreadQuery(g_hDBTuple"SQL_ThreadQueryHandler"g_szQuery)
        
        return 
PLUGIN_HANDLED
    
}
    else
    {
        
g_iUserData[iPlayer][Level] = SQL_ReadResult(hQuery1)
        
g_iUserData[iPlayer][Experience] = SQL_ReadResult(hQuery2)
    }
    
    return 
PLUGIN_HANDLED
}

public 
SQL_ThreadQueryHandler(iStateHandlehQueryszError[], iErrorCodeiParams[], iParamsSize)
{
    if(
iState == 0)
        return
    
    
log_amx("SQL Error: %d (%s)"iErrorCodeszError)
}

// Natives
public Native_GetUserData(iPlayeriType)
    return 
g_iUserData[iPlayer][iType]

public 
Native_GetUserExpForNextLevel(iPlayer)
    return 
iExperienceMulti *(g_iUserData[iPlayer][Level] +1)

public 
Native_SetUserData(iPlayeriTypeiValue)
    
g_iUserData[iPlayer][iType] = iValue

public Native_CheckUserNextLevel(iPlayer)
{
    if(
g_iUserData[iPlayer][Experience] > Native_GetUserExpForNextLevel(iPlayer))
    {
        
g_iUserData[iPlayer][Experience] -= Native_GetUserExpForNextLevel(iPlayer)
        
g_iUserData[iPlayer][Level] += 1
    
}
}

// Stocks
stock boolSQL_TableExists(HandlehDataBase, const szTable[])
{
    new 
HandlehQuery SQL_PrepareQuery(hDataBase"SELECT * FROM information_schema.tables WHERE table_name = '%s' LIMIT 1;"szTable)
    new 
szError[512]
    
    if(!
SQL_Execute(hQuery))
    {
        
SQL_QueryError(hQueryszErrorcharsmax(szError))
        
set_fail_state(szError)
    }
    else if(!
SQL_NumResults(hQuery))
    {
        
SQL_FreeHandle(hQuery)
        return 
false
    
}
    
SQL_FreeHandle(hQuery)
    return 
true

wicho is offline