Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Плагин для Zombie Escape XP

Статус пользователя tiger30
сообщение 31.1.2017, 3:24
Сообщение #1
Стаж: 10 лет

Сообщений: 142
Благодарностей: 12
Полезность: 3

Привет всем, помогите пожалуйста подправить плагин.

Нужно сделать чтобы вип (С флагом "t") получал отдельно свой XP.
Чтобы был cvar для випа, чтобы ему отдельно можно было прописывать сколько за дамаг он получит XP.

Например сейчас есть только это:
damage_hp = register_cvar("required_damage_hp", "51") // The damage if the player made more than it he will awarded.
damage_xp = register_cvar("damage_xp_amount", "2") //How much XP given to human who make damage more than damage_hp?

А нужно исправить на:
damage_hp = register_cvar("required_damage_hp", "51") // The damage if the player made more than it he will awarded.
damage_xp = register_cvar("damage_xp_amount", "2") //How much XP given to human who make damage more than damage_hp?
damagevip_xp = register_cvar("damagevip_xp_amount", "10") //How much XP given to VIP who make damage more than damage_hp?

Заранее спасибо.

Прикрепленные файлы:
Прикрепленный файл  ze_levels.rar ( 8,06 килобайт ) Кол-во скачиваний: 7
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя tiger30
сообщение 31.1.2017, 11:42
Сообщение #2
Стаж: 10 лет

Сообщений: 142
Благодарностей: 12
Полезность: 3

Еще если возможно нужно добавить:

2) Если вип убивает, то также отдельно он получает ХР.
Пример:
Сейчас: xp_kill = register_cvar("levels_xp","10"); // How much xp gain if you killed someone?
А нужно сделать:
xp_kill = register_cvar("levels_xp","10"); // How much xp gain if you killed someone?
xp_killvip = register_cvar("levels_xp","50"); // How much xp gain if vip killed someone?

3) Нужно сделать чтоб ХР, обнулялись с переподключением или раз в сутки.
Тоесть, сейчас они сохраняются или в MySQL или NVault. Нужно это убрать.

Вот исходник:

Код
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <levels>
#include <nvault>
#include <sqlx>
#include <nvault_util>

#define TASK_SHOW_LEVEL 10113
#define MAXLEVEL 3

new const LEVELS[MAXLEVEL] = {
10000000000000000, // Needed on level 1
99999999999999999, // Needed on level 2
999999999999999999999999 // Needed on level 3
}; // Needed Xp on each Levels

new const szTables[][] =
{
    "CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
}

new PlayerXp[33]
new PlayerLevel[33]
new Handle:g_hTuple;

new bool:Prize[33]

new g_MsgScreenFade

new time_xp

new g_Vault
new g_kills[33]
new g_maxplayers, g_msgHudSync1
new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, escape_xp, damage_hp, damage_xp

new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass

public plugin_init()
{
    register_plugin("[ZE] Levels XP", "1.5", "Raheem");

    save_type = register_cvar("levels_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault.
    savexp = register_cvar("levels_save","1"); // Save Xp by : 2 = Name, 1 = SteamID, 0 = IP.
    xp_kill = register_cvar("levels_xp","10"); // How much xp gain if you killed someone?

    enable_triple = register_cvar("levels_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
    xp_triple = register_cvar("levels_triple_xp","3"); // How much bonus xp give for Triple Kill?
    triple_kills = register_cvar("levels_triple_kills","3"); // How much kills needed to give bonus xp?
    enable_ultra = register_cvar("levels_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
    xp_ultra = register_cvar("levels_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
    ultra_kills = register_cvar("levels_ultra_kills","6"); // How much kills needed to give bonus xp?
    escape_xp = register_cvar("escape_xp_amount", "20") // How much XP given to Humans when escape success?
    damage_hp = register_cvar("required_damage_hp", "51") // The damage if the player made more than it he will awarded.
    damage_xp = register_cvar("damage_xp_amount", "2") //How much XP given to human who make damage more than damage_hp?
    time_xp = register_cvar("time_xp_amount", "20") // How much XP given to player when he play 9 minute?
    register_concmd ( "give_xp", "CmdAddXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" )
    register_concmd ( "remove_xp", "CmdRemoveXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" )
    
    register_clcmd("say top10", "showtop10")
    
    register_clcmd("say /get", "random_prizes")
    register_clcmd("say_team /get", "random_prizes")

    // SQLx cvars
    mysqlx_host = register_cvar ("levels_host", ""); // The host from the db
    mysqlx_user = register_cvar ("levels_user", ""); // The username from the db login
    mysqlx_pass = register_cvar ("levels_pass", ""); // The password from the db login
    mysqlx_db = register_cvar ("levels_dbname", ""); // The database name

    // Events
    register_event("DeathMsg", "event_deathmsg", "a");
    register_event("StatusValue", "Event_StatusValue", "bd", "1=2")
    register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")


    // Forwards //
    RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);

    MySQLx_Init()

    g_msgHudSync1 = CreateHudSyncObj()
    g_maxplayers = get_maxplayers();
    g_MsgScreenFade = get_user_msgid( "ScreenFade" )
}

public plugin_cfg()
{
    //Open our vault and have g_Vault store the handle.
    g_Vault = nvault_open( "levels" );

    //Make the plugin error if vault did not successfully open
    if ( g_Vault == INVALID_HANDLE )
        set_fail_state( "Error opening levels nVault, file does not exist!" );
}

public plugin_precache()
{
    precache_sound( "levelup_ZE/ze_levelup.wav" );
}

public plugin_natives()
{
    register_native("get_user_xp", "native_get_user_xp", 1);
    register_native("set_user_xp", "native_set_user_xp", 1);
    register_native("get_user_level", "native_get_user_level", 1);
    register_native("set_user_level", "native_set_user_level", 1);
    register_native("check_level_xp", "native_check_level", 1)
    register_native("get_user_max_level", "native_get_user_max_level", 1);
}

public plugin_end()
{
    //Close the vault when the plugin ends (map change\server shutdown\restart)
    nvault_close( g_Vault );
}

public client_connect(id)
{
    LoadLevel(id)

    if(is_user_connected(id))
    {
        set_task(540.0, "prizes", id, _, _, "b")
    }
}

public prizes(id)
{
    set_user_xp(id, get_user_xp(id) + get_pcvar_num(time_xp))
    client_print_color(id, "!y[!gLevel!y-!gSystem!y] !t +%i XP For playing 9 Minutes in our server!y.", get_pcvar_num(time_xp))
    check_level_xp(id)
    
}

public client_disconnect(id)
{
    SaveLevel(id)

    PlayerXp[id] = 0;
    PlayerLevel[id] = 0;

    remove_task( TASK_SHOW_LEVEL + id );
    remove_task(id)
}

public fwd_PlayerSpawn(id)
{
    
    if(!is_user_alive(id))
        return;
    
    g_kills[id] = 0

    remove_task( TASK_SHOW_LEVEL + id );        

    set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}

public event_deathmsg()
{    
    new g_attacker = read_data(1);
    new g_victim = read_data(2);
    
    new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
    new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
    
    if((1 <= g_attacker <= g_maxplayers))
    {
        if(g_victim != g_attacker)
        {
            g_kills[g_attacker]++;
            if(PlayerLevel[g_attacker] < MAXLEVEL-1)
            {

                if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
                {
                    PlayerXp[g_attacker] += counted_triple
                        
                    set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 8.0)
                    show_hudmessage(g_attacker, "+%i Triple Kill XP!", counted_triple)
                }
                else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
                {
                    PlayerXp[g_attacker] += counted_ultra
                        
                    set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 8.0)
                    show_hudmessage(g_attacker, "+%i Ultra Kill XP!", counted_ultra)
                }
                else
                {
                    PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
                    
                    set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 8.0)
                    show_hudmessage(g_attacker, "+%i XP", get_pcvar_num(xp_kill))
                }
                
                check_level_xp(g_attacker)
            }
        }
    }
}

public ze_roundend()
{
    new Alive_Terrorists_Number = GetPlayersNum(CsTeams:CS_TEAM_T)
    new Alive_CT_Numbers = GetPlayersNum(CsTeams:CS_TEAM_CT)
    
    new iPlayers[32], iNum
    get_players(iPlayers, iNum, "ace", "CT")

    for (new i = 0; i < iNum; i++)
    {
        if(PlayerLevel[iPlayers[i]] < MAXLEVEL-1)
        {
            if((Alive_CT_Numbers > Alive_Terrorists_Number) && (Alive_Terrorists_Number == 0))
            {
                set_user_xp(iPlayers[i], get_user_xp(iPlayers[i]) + get_pcvar_num(escape_xp))
                client_print_color(iPlayers[i], "!y[!gLevel!y-!gSystem!y] !t+%i XP!y.", get_pcvar_num(escape_xp))
            }
            check_level_xp(iPlayers[i])
        }
    }
}

public on_damage(id)
{
    static attacker,damage;
    
    attacker = get_user_attacker(id)
    damage = read_data(2)
    
    if (id == 0) return
    
    if(PlayerLevel[attacker] < MAXLEVEL-1)
    {
        if ((damage >= get_pcvar_num(damage_hp)) && is_user_connected(attacker) && (cs_get_user_team(attacker) == CS_TEAM_CT) && (attacker != id))
        {
            set_user_xp(attacker, get_user_xp(attacker) + get_pcvar_num(damage_xp))
            set_hudmessage(random(256), random(256), random(256), -1.0, 0.7, 1, 3.0, 8.0, 0.5, 0.5)
            show_hudmessage(attacker, "+%i XP", get_pcvar_num(damage_xp))
        }
        
        check_level_xp(attacker)
    }
}

public Event_StatusValue(id)
{
    new target = read_data(2)
      if(target != id && target != 0)
      {
        static sName[32];
        get_user_name(target, sName, 31)

        set_hudmessage(0, 255, 255, -1.0, 0.3, 0, 0.0, 6.0, 0.0, 0.0, 2)
        ShowSyncHudMsg(id, g_msgHudSync1, "[Name: %s ǁ Level: %d]", sName, PlayerLevel[target])
    }
}

public task_show_level(task)
{
    new id = task - TASK_SHOW_LEVEL
    
    if(!is_user_alive(id))
        return;
    
    set_hudmessage(0, 255, 255, 0.02, 0.05, 0, 0.0, 0.3, 0.0, 0.0)
    ShowSyncHudMsg(id, g_msgHudSync1 , "[XP : %i]", PlayerXp[id], LEVELS[PlayerLevel[id]])
    
    set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)        
}

public showtop10(id)
{
    new pos,key[64],data[64],timestamp
    new vault = nvault_util_open("levels")
    new count = nvault_util_count(vault)

    new Array:stats,Trie:names
    stats = ArrayCreate(20)
    names = TrieCreate()

    new temp[20],knum[5]
    for (new i=1;i<=count;i++ )
    {
        pos = nvault_util_read(vault,pos,key,64,data,64,timestamp)
        formatex(temp,19,"%d %d",i,str_to_num(data))
        ArrayPushString(stats,temp)
        replace_all(key,64,"Level","")
        formatex(knum,4,"%d",i)
        TrieSetString(names,knum,key)
    }

    nvault_util_close(vault)
    ArraySort(stats,"sorter")

    new motd[1501],iLen;
    iLen = format(motd, sizeof motd - 1,"<body bgcolor=#000000><h3><font color=#48D532><pre>");
    iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s  %s  %3s^n", "#", "Name", "SteamID", "Level")

    for(new x = 0; x < 10; x++)
    {
        new rank,name[32],srank[5]
        new pt = getter(stats,x,rank)
        formatex(srank,4,"%d",rank)
        TrieGetString(names,srank,name,31)
        /*new len = strlen(name)
        if(len)
        {
            name[len-5] = 0
        }*/
        iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"%d. %-22.22s    %d^n", x + 1, name, pt);
    }
    iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"</body></h3></font></pre>")

    ArrayDestroy(stats)
    TrieDestroy(names)
    show_motd(id,motd, "Top 10");
}

public sorter(Array:array,item1,item2)
{
    
    new res1=getter(array,item1)
    new res2=getter(array,item2)

    if(res1<res2)
        return 1

    else if(res1>res2)
        return -1
    
    return 0
}

getter(Array:array,item,&rank=0)
{
    new outa[32],temp[2][10],val
    ArrayGetString(array,item,outa,31)
    parse(outa,temp[0],9,temp[1],9)
    rank = str_to_num(temp[0])
    val = str_to_num(temp[1])
    return val
}

public random_prizes(id)
{
    new xp = get_user_xp(id)
    
    if(Prize[id])
    {
        client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tYou have used your Chance!y. !tTry again next Map!y.")
    }
    else
    {
        new iRand = random_num(0,100)
        new szName[32]
        get_user_name(id, szName, charsmax(szName))
        
        switch(iRand)
        {
            case 0 .. 10:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tBad Luck!y. !tYou win Nothing!y. !tTry Next Map!y.")
            }
            case 11 .. 20:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+5 !tXP!y.")
                set_user_xp(id, xp + 5)
            }
            case 21 .. 30:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+10 !tXP!y.")
                set_user_xp(id, xp + 10)
            }
            case 31 .. 40:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+15 !tXP!y.")
                set_user_xp(id, xp + 15)
            }
            case 41 .. 50:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+20 !tXP!y.")
                set_user_xp(id, xp + 20)
            }
            case 51 .. 60:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+25 !tXP!y.")
                set_user_xp(id, xp + 25)
            }
            case 61 .. 70:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+30 !tXP!y.")
                set_user_xp(id, xp + 30)
            }
            case 71 .. 80:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+35 !tXP!y.")
                set_user_xp(id, xp + 35)
            }
            case 81 .. 90:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+40 !tXP!y.")
                set_user_xp(id, xp + 40)
            }
            case 91 .. 100:
            {
                client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+60 !tXP!y.")
                client_print_color(0, "!y[!gLevel!y-!gSystem!y] !g%s !twon +60 XP!t. !tTry your Luck now just !gsay /get!y.", szName)
                set_user_xp(id, xp + 60)
            }
        }
        Prize[id] = true
        check_level_xp(id)
    }
}

public CmdAddXP(iPlayer, level, cid)
{
    if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
      
    new arg [32]
    read_argv (1, arg, 31)

    new AddXP [32]
    read_argv (2, AddXP, charsmax (AddXP))

    new XPtoGive = str_to_num (AddXP)
      
    new AdminName [32]
    new TargetName [32]
    get_user_name (iPlayer, AdminName, charsmax (AdminName))
      
    if(arg[0]=='@')
    {
        if(equali(arg[1],"All") || equali(arg[1],"ALL"))
        {
            new players[32], totalplayers, All
            get_players(players, totalplayers)
            
            for (new i = 0; i < totalplayers; i++)
            {
                All = players[i]
                      
                PlayerXp[All] += XPtoGive
            }
            check_level_xp(All)
            client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto All Players!y!", AdminName, XPtoGive )
        }
        else if(equali(arg[1],"T") || equali(arg[1],"t"))
        {
            new players[32], totalplayers, T
            get_players(players, totalplayers)
            
            for (new i = 0; i < totalplayers; i++)
            {
                if (get_user_team(players[i]) == 1)
                {
                    T = players[i]
                          
                    PlayerXp[T] += XPtoGive
                }
            }
            check_level_xp(T)
            client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto all Terrorists!y!", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
        {
            new players[32], totalplayers, CT
            get_players(players, totalplayers)
            
            for(new i = 0; i < totalplayers; i++)
            {
                if(get_user_team(players[ i ] ) == 2)
                {
                    CT = players[i]
                          
                    PlayerXp[CT] += XPtoGive
                }
            }
            check_level_xp(CT)
            client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto all Counter-Terrorists!y!", AdminName, XPtoGive)
        }
    }
    else
    {
        new iTarget = cmd_target(iPlayer, arg, 3)
        get_user_name (iTarget, TargetName, charsmax (TargetName))
        
        if(iTarget)
        {
            PlayerXp[iTarget] += XPtoGive
            
            check_level_xp(iTarget)
            client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto !g%s!y!", AdminName, XPtoGive, TargetName)
        }
    }
    return PLUGIN_HANDLED
}

public CmdRemoveXP (iPlayer, level, cid)
{
    if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
      
    new arg [32]
    read_argv (1, arg, 31)

    new RemoveXP [32]
    read_argv (2, RemoveXP, charsmax (RemoveXP))

    new XPtoRemove = str_to_num (RemoveXP)
      
    new AdminName [32]
    new TargetName [32]
    get_user_name (iPlayer, AdminName, charsmax (AdminName))
      
    if(arg[0]=='@')
    {
        if(equali(arg[1],"All") || equali(arg[1],"ALL"))
        {
            new players[32], totalplayers, All
            get_players(players, totalplayers)
            
            for (new i = 0; i < totalplayers; i++)
            {
                All = players[i]
                      
                PlayerXp[All] -= XPtoRemove
            }
            check_level_xp(All)
            client_print_color(0, "!tADMIN !g%s !ttoke !g%i XP of !tall players!y!", AdminName, XPtoRemove)
        }
        else if(equali(arg[1],"T") || equali(arg[1],"t"))
        {
            new players[32], totalplayers, T
            get_players(players, totalplayers)
            
            for (new i = 0; i < totalplayers; i++)
            {
                if (get_user_team(players[i]) == 1)
                {
                    T = players[i]
                          
                    PlayerXp[T] -= XPtoRemove
                }
            }
            check_level_xp(T)
            client_print_color( 0, "!tADMIN !g%s !ttoke !g%i XP !tof all Terrorists!y!", AdminName, XPtoRemove)
        }
        else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
        {
            new players[32], totalplayers, CT
            get_players(players, totalplayers)
            
            for(new i = 0; i < totalplayers; i++)
            {
                if(get_user_team(players[ i ] ) == 2)
                {
                    CT = players[i]
                          
                    PlayerXp[CT] -= XPtoRemove
                }
            }
            check_level_xp(CT)
            client_print_color(0, "!tADMIN !g%s !ttoke !g%i XP !tof all Counter-Terrorists!y!", AdminName, XPtoRemove)
        }
    }
    else
    {
        new iTarget = cmd_target(iPlayer, arg, 3)
        get_user_name (iTarget, TargetName, charsmax (TargetName))
        
        if(!iTarget)
            return PLUGIN_HANDLED
            
        PlayerXp[iTarget] -= XPtoRemove

        check_level_xp(iTarget)
        client_print_color(0, "!tADMIN !g%s !ttoke !g%i XP !tTo !g%s!y!", AdminName, XPtoRemove, TargetName)
    }
    return PLUGIN_HANDLED
}
    
public MySQLx_Init()
{
    if (!get_pcvar_num(save_type))
        return;
    
    new szHost[64], szUser[32], szPass[32], szDB[128];
    
    get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
    get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
    get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
    get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
    
    g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
    
    for ( new i = 0; i < sizeof szTables; i++ )
    {
        SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
    }
}

public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
    if( iFailState == TQUERY_CONNECT_FAILED
    || iFailState == TQUERY_QUERY_FAILED )
    {
        log_amx( "%s", szError );
        
        return;
    }
}

SaveLevel(id)
{
    new szAuth[33];
    new szTOP[33];
    new szKey[64];

    if ( get_pcvar_num(savexp) == 0 )
    {
        get_user_ip( id, szAuth , charsmax(szAuth), 1);
        formatex( szKey , 63 , "%s-IP" , szAuth);
    }
    else if ( get_pcvar_num(savexp) == 1 )
    {
        get_user_authid( id , szAuth , charsmax(szAuth) );
        get_user_name( id, szTOP , charsmax(szTOP) );
        formatex( szKey , 63 , "%s                                      %s" , szTOP, szAuth);
    }
    else if ( get_pcvar_num(savexp) == 2 )
    {
        get_user_name( id, szAuth , charsmax(szAuth) );
        formatex( szKey , 63 , "%s-NAME" , szAuth);
    }

    if ( !get_pcvar_num(save_type) )
    {
        new szData[256];
    
        formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
        
        nvault_set( g_Vault , szKey , szData );
    }
    else
    {    
        static szQuery[ 128 ];

        formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] );
        
        SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
    }
}

LoadLevel(id)
{
    new szAuth[33];
    new szTOP[33];
    new szKey[40];

    if ( get_pcvar_num(savexp) == 0 )
    {
        get_user_ip( id, szAuth , charsmax(szAuth), 1);
        formatex( szKey , 63 , "%s-IP" , szAuth);
    }
    else if ( get_pcvar_num(savexp) == 1 )
    {
        get_user_authid( id , szAuth , charsmax(szAuth) );
        get_user_name( id, szTOP , charsmax(szTOP) );
        formatex( szKey , 63 , "%s                                      %s" , szTOP, szAuth);
    }
    else if ( get_pcvar_num(savexp) == 2 )
    {
        get_user_name( id, szAuth , charsmax(szAuth) );
        formatex( szKey , 63 , "%s-NAME" , szAuth);
    }

    if ( !get_pcvar_num(save_type) )
    {
        new szData[256];

        formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id])
            
        nvault_get(g_Vault, szKey, szData, 255)

        replace_all(szData , 255, "#", " ")
        new xp[32], level[32]
        parse(szData, level, 31, xp, 31)
        PlayerLevel[id] = str_to_num(level)
        PlayerXp[id] = str_to_num(xp)  
    }
    else
    {
        static szQuery[ 128 ], iData[ 1 ];
        formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth );
    
        iData[ 0 ] = id;
        SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
    }
}

public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
    if( iFailState == TQUERY_CONNECT_FAILED
    || iFailState == TQUERY_QUERY_FAILED )
    {
        log_amx( "%s", szError );
        
        return;
    }
    else
    {
        new id = iData[ 0 ];
        
        new ColLevel = SQL_FieldNameToNum(hQuery, "player_level")
        new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
        
        while (SQL_MoreResults(hQuery))
        {
            PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
            PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
                    
            SQL_NextRow(hQuery)
        }
    }
}

public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
    if( iFailState == TQUERY_CONNECT_FAILED
    || iFailState == TQUERY_QUERY_FAILED )
    {
        log_amx( "%s", szError );
        
        return;
    }
}

//======================Natives======================//

// Native: get_user_xp
public native_get_user_xp(id)
{
    return PlayerXp[id];
}
// Native: set_user_xp
public native_set_user_xp(id, amount)
{
    PlayerXp[id] = amount;
}
// Native: get_user_level
public native_get_user_level(id)
{
    return PlayerLevel[id];
}
// Native: set_user_xp
public native_set_user_level(id, amount)
{
    PlayerLevel[id] = amount;
}
// Native: Gets user level by Xp
public native_get_user_max_level(id)
{
    return LEVELS[PlayerLevel[id]];
}

//Native: Update User Level

public native_check_level(id)
{
    if(PlayerLevel[id] < MAXLEVEL-1)
    {
        while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
        {
            PlayerLevel[id]++;
            
            static name[32]; get_user_name(id, name, charsmax(name));
            client_cmd(id,"spk levelup_ZE/ze_levelup.wav")
            
            message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, {0,0,0}, id)
            write_short(15000)    // Duration
            write_short(0)    // Hold time
            write_short(0)    // Fade type
            write_byte (random(256))        // Red
            write_byte (random(256))    // Green
            write_byte (random(256))        // Blue
            write_byte (150)    // Alpha
            message_end()
            
            client_print_color(0, "!y[!gLevel!y-!gSystem!y] !t%s !yReaches Level !t%i!y.", name, PlayerLevel[id]);
        }
    }
}

//==================================================//

//======================STOCKS======================//

stock GetPlayersNum(CsTeams:iTeam) {
    new iNum;
    for( new i = 1; i <= get_maxplayers(); i++ ) {
        if(is_user_connected(i) && is_user_alive(i) && cs_get_user_team(i) == iTeam)
            iNum++;
    }
    return iNum;
}

stock client_print_color(const id, const input[], any:...)  
{  
    new count = 1, players[32];  
    static msg[191];  
    vformat(msg, 190, input, 3);  

    replace_all(msg, 190, "!g", "^x04"); // Green Color  
    replace_all(msg, 190, "!y", "^x01"); // Default Color  
    replace_all(msg, 190, "!t", "^x03"); // Team Color  

    if (id) players[0] = id; else get_players(players, count, "ch");  
    {  
        for (new i = 0; i < count; i++)  
        {  
            if (is_user_connected(players[i]))  
            {  
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);  
                write_byte(players[i]);  
                write_string(msg);  
                message_end();  
            }  
        }  
    }  
}

//==================================================//

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: