Raised This Month: $51 Target: $400
 12% 

Solved Speed Level Xp


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
JUSTINR
Member
Join Date: May 2022
Old 05-22-2022 , 18:34   Speed Level Xp
Reply With Quote #1

Hello AlliedMods

I have this plugin , but the speed doesn't work, at the beginning of the round it gives me speed, but if I change the weapon in my hand, it disappears, that is, when I press the Q key.

Can u help me?

Source
HTML Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Server Addon: LevelUp System XP 3.2"
#define VERSION "3.2_13.01"
#define AUTHOR "Re.Act!ve"
#define ACCES ADMIN_CVAR
#pragma tabsize 0
new SayText
new g_level[33], g_level_data, g_frags_level, g_ScreenFade, g_level_del[33], g_level_bonus, g_ammo
new g_level_max, g_give_ammo, g_give_ammopacks, g_level_num, g_level_info, g_player_name, g_levels[33], g_h_damage
new g_h_health, g_h_speed, g_z_damage, h_health[33], h_speed[33], h_damage[33], z_damage[33], level_exp[33]
new g_level_exp[33], g_exp_data, g_Players, g_hud_color, red, green, blue, nameid[33]
new bool:g_bonus[33], g_trime[33]
new sound_level_up[] = { "misc/zp_level_up.wav"}
new sound_health[] = { "items/medshot4.wav" }
// Zombie Classes MUST be registered on plugin_precache

public plugin_precache()
{
        precache_sound( sound_level_up )
        precache_sound( sound_health )
}

public plugin_init()
{
    g_frags_level =         register_cvar("zp_level_frags", "50")        // Сколько добавится экспы для получения след. уровня
    g_level_max  =         register_cvar("zp_level_max", "199")            // Максимальный левел
    g_give_ammo =         register_cvar("zp_level_give_ammo", "1")    // Давать аммо паки при каждом полученном левле?
    g_give_ammopacks = register_cvar("zp_level_ammo", "300")        // Сколько давать аммопаков? (если выше установлено 1)

    g_h_damage =         register_cvar("zp_level_h_damage", "1")        // Увеличивать с каждым уровнем урон на Х у людей
    g_h_health =         register_cvar("zp_level_h_health", "10")        // Люди получают за каждый левел дополнительные Х хп
    g_h_speed =         register_cvar("zp_level_h_speed", "1.0")        // На сколько величивать скорость людей с каждым уровнем?
    g_z_damage =         register_cvar("zp_level_z_damage", "1")        // Увеличивать с каждым уровнем урон на Х у зомби

    g_hud_color =         register_cvar("zp_level_hud_type", "2")        // 1 - Желтый, 2 - Рандомно каждую секунду 3 - 1 раз рандомно
    g_level_info =         register_cvar("zp_level_info", "1")                // Показывать инфу о игроке, когда вы вводите в чат info <nick>
    g_player_name =     register_cvar("zp_player_name", "0")        // Показывать инфу, при наведении курсором на игрока?
    g_level_bonus =         register_cvar("zp_level_bonus_on", "0")        // Можно ли будет снимать мегабонус? (за получение опр. левла)
    g_level_num =         register_cvar("zp_level_number", "5")    // Каждые Х левлов будет возможность снять  мегабонус (если выше 1)
    g_ammo =             register_cvar("zp_level_bonus", "0")        // Сколько аммо паков этот мегабонус?

    g_level_data = nvault_open("Leveling_Save")
    g_exp_data = nvault_open("Exp_Save")
    register_clcmd("say","say_info");
    register_clcmd("say_team","say_info");
    register_clcmd("zp_levelexp","expa_give", ADMIN_CVAR, "use to give Exp")
    register_clcmd("zp_level_is","level_give", ADMIN_CVAR, "use to give Level")
    SayText = get_user_msgid("SayText")
    g_Players = get_maxplayers();
    register_event("HLTV", "Round_Start", "a", "1=0", "2=0")
    register_event("DeathMsg", "Frags_Manager", "a", "1>0")     
    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
    register_dictionary("zp_level_system_xp.txt")
    register_event("StatusValue","show_status","be","1=2","2!0")
           register_event("StatusValue","hide_status","be","1=1","2=0")
    g_ScreenFade = get_user_msgid( "ScreenFade" )
    register_plugin(PLUGIN, VERSION, AUTHOR)
}

public Round_Start()
{
    for(new id=1;id<=g_Players;id++)
    set_task(3.0, "Level", id)
}

public Level(id)
{
    if(  is_user_alive(id) && !zp_get_user_zombie(id))
    {
        g_trime[id] = false;
       /* new n = 1;
        while( n < g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1
        }*/
      h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new Float:speed[33];
        speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        fm_set_user_health( id, get_user_health(id) + h_health[id] )
        set_pev(id, pev_maxspeed, speed[id] )
        emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
    }
}

public expa_give(id, level, cid)
{
    if (!cmd_access(id, level, cid, 2))
    {                
        console_print(id, "У вас нет доступа к команде")
        return PLUGIN_HANDLED
    }
    new target[32]
    new count[32]    
    
    read_argv(1,target,31)
    read_argv(2,count,31)
    new target_id, name[32], nameid[32]
    target_id = find_player("bl", target)
    get_user_name(target_id, name, sizeof name - 1) 
    get_user_name(id, nameid, sizeof nameid - 1)
    if(!target_id) 
    {
        console_print(id, "Can't find that player")
        return PLUGIN_HANDLED
    }
    if(read_argc() != 3)
    return PLUGIN_HANDLED    

    if(str_to_num(count) < (g_level_exp[target_id] - level_exp[target_id]) )
    {
        if(str_to_num(count) == 0)
        console_print(id, "Exp Player %s in %i / %i", name, level_exp[target_id], g_level_exp[target_id])
        else
        {
            console_print(id, "Player %s gives for %i exp, Her Maximum %i", name, str_to_num(count), g_level_exp[target_id])
            level_exp[target_id] = level_exp[target_id] + str_to_num(count);
        }
        
    }
    else
    {
        console_print(id, "Maximum Exp in player %i", g_level_exp[target_id])
    }
    return PLUGIN_HANDLED
}

public level_give(id, level, cid)
{
    if (!cmd_access(id, level, cid, 2))
    {                
        console_print(id, "У вас нет доступа к команде")
        return PLUGIN_HANDLED
    }
    new target[32]
    new count[32]    
    
    read_argv(1,target,31)
    read_argv(2,count,31)
    new target_id, name[32], level_id
    level_id = str_to_num(count);
    target_id = find_player("bl", target)
    get_user_name(target_id, name, sizeof name - 1) 
    if(!target_id) 
    {
        console_print(id, "Can't find that player")
        return PLUGIN_HANDLED
    }
    if(read_argc() != 3)
    return PLUGIN_HANDLED    

    if( ((g_level[target_id] + level_id) <=get_pcvar_num(g_level_max)) && (level_id != 0) && ((g_level[target_id] + level_id) > 0 ) )
    {
        if(level_id > 0)
        {
            g_level[target_id] = g_level[target_id] + level_id;
            message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, target_id)
                   write_short(1<<12) // duration
                write_short(1) // hold time
            write_short(0x0000) // fade type
            write_byte(1) // red
            write_byte(200) // green
            write_byte(0) // blue
            write_byte(205) // alpha
            message_end()
            emit_sound(target_id, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
        }
        else
        {
            g_level[target_id] = g_level[target_id] + level_id;
            message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, target_id)
                   write_short(1<<12) // duration
                write_short(1) // hold time
            write_short(0x0000) // fade type
            write_byte(200) // red
            write_byte(40) // green
            write_byte(0) // blue
            write_byte(205) // alpha
            message_end()
        }
            console_print(id, "Player %s gives add %i level", name, level_id)
    }
    else
        console_print(id, "Operation Invalid")
    return PLUGIN_HANDLED
}

public client_putinserver(id)
{
    Level_Load(id)
    new name[32]
    g_trime[id] = false;
    g_bonus[id] = true;
    nameid[id] = get_user_name(id, name, sizeof name - 1)
    if( !zp_get_user_zombie(id) && is_user_alive(id))
    {
        g_trime[id] = false;
        /*new n = 1;
        while( n != g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1;
        }*/
        h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new Float:speed[33];
        speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        fm_set_user_health( id, get_user_health(id) + h_health[id] )
        set_pev(id, pev_maxspeed, speed[id] )
        emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
    }

    if( g_level[id] == 0) g_level[id] = 1;
    if( level_exp[id] == g_level[id] ) level_exp[id] = 0;
    if(g_level[id] < get_pcvar_num(g_level_num))
    g_levels[id] = get_pcvar_num(g_level_num);
    else
    {
        if(g_level[id] != g_levels[id])
        {
            new x = 1;
            while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
            {
                x = x + 1;
                g_levels[id] = x * get_pcvar_num(g_level_num);
            }
        }
    }
    new y = 1;
    while( g_level[id] != y )
    {
    y = y + 1;
    g_level_exp[id] = y * get_pcvar_num(g_frags_level);
    }
    red = random_num(10, 200)
    green = random_num(10, 200)
    blue = random_num(10, 200)
}

public client_disconnect(id)
{
    new name[32], player_nick[33]
    player_nick[id] = get_user_name(id, name, sizeof name - 1)
    if(player_nick[id] == nameid[id])
    Level_Save(id)
    
    g_trime[id] = false;
}

public hide_status(id)
{
        set_hudmessage(0,0,0,0.0,0.0,0, 0.0, 0.01, 0.0, 0.0, 4)
        show_hudmessage(id,"")
}

public show_status(id)
{
        new name[32],pid = read_data(2)
        get_user_name(pid,name,31)
       if (!zp_get_user_zombie(pid) && !zp_get_user_zombie(id) && (get_pcvar_num(g_player_name) == 1) )
    {
               set_hudmessage(0,0,255,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
               show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_H", name, g_level[pid],                                 get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))
    }
     if(zp_get_user_zombie(id) && zp_get_user_zombie(pid) && (get_pcvar_num(g_player_name) == 1) )
    {
        set_hudmessage(255,0,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
        show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_Z", name, g_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))
    }
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{
    if(1<=attacker<=32)
    {
        if ( !zp_get_user_zombie(attacker) && is_user_alive(attacker) )
            SetHamParamFloat(4, damage + h_damage[attacker])
        else
        {
            if ( zp_get_user_zombie(attacker) && is_user_alive(attacker) && !zp_get_user_nemesis(attacker))
                SetHamParamFloat(4, damage + z_damage[attacker]);
        }
    }
}

public say_info(id)
{
    new text[70], arg1[32], target[32], count[32]
    read_args(text, sizeof(text)-1);
    remove_quotes(text);
    arg1[0] = '^0';
    target[0] = '^0';
    count[0] = '^0';
    parse(text, arg1, sizeof(arg1)-1, target, sizeof(target)-1, count, sizeof(count)-1);
    if ( equali(arg1, "info", 4) )
    {
        info_player(id, target);
    }
    if ( equali(arg1, "bonusme", 7) && (get_pcvar_num(g_level_info) == 1))
    {
        bonus_player(id);
    }
    if ( equali(arg1, "levelexp", 7) && (get_pcvar_num(g_level_info) == 1))
    {
        expa_player(id);
    }
    return PLUGIN_CONTINUE;
}

public zp_extra_item_selected(id, itemid)
{
    Level_Save(id)
}

public zp_user_infected_pre(id, infector)
{
    if( is_user_alive(infector) && (level_exp[infector] < (g_level_exp[infector] - 1)) && zp_get_user_zombie(infector))
    {
        level_exp[infector] = level_exp[infector] + 1;
        Level_Save(infector);
    }
}

public info_player(id, target[])
{
    new target_2;
    target_2 = find_player("bl", target)
    static name[32], nameid[32];
    get_user_name(target_2, name, sizeof name - 1)
    get_user_name(id, nameid, sizeof nameid - 1)
    if(!target_2)
    {
        ChatColor(id, "!g[ZP] !y%L", LANG_PLAYER, "LEVEL_INFO_NONAME")
        return PLUGIN_HANDLED
    }

    if(zp_get_user_zombie(id))
    {
        if(id != target_2)
        {
            ChatColor(id, "!g[INFO]!t %L", LANG_PLAYER, "LEVEL_INFOZM", name, g_level[target_2], z_damage[target_2], zp_get_user_ammo_packs(target_2) )
            ChatColor(target_2, "!g[INFO]!t%L ", LANG_PLAYER, "LEVEL_INFO_YOU", nameid)
        }
        else
        {
            ChatColor(id, "!g[INFOME]!t%L", LANG_PLAYER, "LEVEL_INFOME_ZM", z_damage[target_2] )
        }
    }
    else
    {
        if(id != target_2)
        {
            ChatColor(id, "!g[INFO]!t %L", LANG_PLAYER, "LEVEL_INFO", name, g_level[target_2], h_damage[target_2],                             h_speed[target_2], h_health[target_2], zp_get_user_ammo_packs(target_2) )
            ChatColor(target_2, "!g[INFO]!t%L ", LANG_PLAYER, "LEVEL_INFO_YOU", nameid)
        }
        else
        {
            ChatColor(id, "!g[INFOME]!t%L", LANG_PLAYER, "LEVEL_INFOME", h_damage[target_2], h_speed[target_2],                             h_health[target_2] )
        }
    }
    return PLUGIN_HANDLED
}

public bonus_player(id)
{
    if( (g_level[id] >= g_levels[id]) && g_bonus[id] && get_pcvar_num(g_level_bonus))
    {
        g_levels[id] = g_levels[id] * 2;
        g_level_del[id] = g_level[id];
        g_bonus[id] = false;
        ChatColor(id, "!g[BONUS]%L", LANG_PLAYER, "LEVEL_MEGABONUS", g_level[id], get_pcvar_num(g_ammo) )
        zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + get_pcvar_num(g_ammo) )
        Level_Save(id)
    }
    else
    {
        if(g_level[id] < g_levels[id])
        {
            g_levels[id] = get_pcvar_num(g_level_num);
            ChatColor(id, "!g[BONUS]!y%L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
        }
        else
        {
            new x = 1;
            while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
            {
                g_levels[id] = x * get_pcvar_num(g_level_num);
                x = x + 1;
            }
            ChatColor(id, "!g[BONUS]!y%L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
        }

        Level_Save(id)
    }
    return PLUGIN_HANDLED
}

public expa_player(id)
{
    ChatColor(id, "!g[EXPA] %L", LANG_PLAYER, "LEVEL_EXP", level_exp[id], g_level_exp[id])
    return PLUGIN_HANDLED
}

public level_status(id)
{
    if( is_user_alive(id))
    {
        switch( get_pcvar_num(g_hud_color) ) 
            { 
                    case 1: 
                    { 
            set_hudmessage(255, 200, 3, 0.02, 0.15, 0, 1.0, 1.1, 0.0, 0.0, -1)
            show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id], level_exp[id])
                    } 
                    case 2: 
            {
            static r, g, b; r = random_num(10, 200), g = random_num(0, 200), b = random_num(0, 200);
            set_hudmessage(r, g, b, 0.02, 0.15, 0, 1.0, 1.1, 0.0, 0.0, -1)
            show_hudmessage(id,"Level: %i^n Exp: %i", g_level[id], level_exp[id])
            }
                    case 3: 
            {
            
            set_hudmessage(red, green, blue, 0.02, 0.15, 0, 1.0, 1.1, 0.0, 0.0, -1)
            show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id], level_exp[id])
            }
        }
    }
} 

public Level_Save(id)
{
    new key[64], data[256], data_exp[256], key_exp[64]
    new name[33];
    get_user_name(id,name,32)

    format(key, 63, "%s-/", name)
    format(data, 255, "%i#", g_level[id])

    format(key_exp, 63, "%s-/", name)
    format(data_exp, 255, "%i#", level_exp[id])

    nvault_set(g_level_data, key, data)
    nvault_set(g_exp_data, key_exp, data_exp)
    return PLUGIN_CONTINUE;
}

public Level_Load(id)
{
    new key[64], data[256], data_exp[256], key_exp[64]
    new name[33];
    get_user_name(id,name,32)

    format(key, 63, "%s-/", name)
    format(data, 255, "%i#", g_level[id])

    format(key_exp, 63, "%s-/", name)
    format(data_exp, 255, "%i#", level_exp[id])

    nvault_get(g_level_data, key, data, 255)
    nvault_get(g_exp_data, key_exp, data_exp, 255)
    replace_all(data, 255, "#", " ")
    replace_all(data_exp, 255, "#", " ")

    new givelevel[32], give_exp[32]
    parse(data, givelevel, 31)
    parse(data_exp, give_exp, 31)
    g_level[id] = str_to_num(givelevel)
    level_exp[id] = str_to_num(give_exp)

    set_task(1.0, "level_status", id, _, _, "b")
    return PLUGIN_CONTINUE;
}

public Frags_Manager()
{
    new aname[32], attacker; attacker = read_data(1)
    new y; y = 1;
    get_user_name(attacker, aname, sizeof aname - 1)
    if( ( level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
    {
        g_bonus[attacker] = true;
        g_level[attacker] = g_level[attacker] + 1;
        level_exp[attacker] = 0;
        while( g_level[attacker] != y )
        {
            y = y + 1;
            g_level_exp[attacker] = y * get_pcvar_num(g_frags_level);
        }
        message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
               write_short(1<<12) // duration
            write_short(1) // hold time
        write_short(0x0000) // fade type
        write_byte(1) // red
        write_byte(200) // green
        write_byte(0) // blue
        write_byte(205) // alpha
        message_end()
        emit_sound(attacker, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
        set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
        show_hudmessage(0, "%L", LANG_PLAYER, "LEVEL_UP", aname, g_level[attacker])
        if(get_pcvar_num(g_give_ammo) == 1)
        {
            ChatColor(attacker, "!g[LEVEL] !y %L", LANG_PLAYER, "BONUS_LEVEL", get_pcvar_num(g_give_ammopacks) )
            zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_give_ammopacks) )
        }
        Level_Save(attacker);
    }
    else
    {

        if(g_level[attacker] == get_pcvar_num(g_level_max))
        ChatColor(attacker, "!g[LEVEL]!y %L", LANG_PLAYER, "LEVEL_MAX", g_level[attacker] )
        level_exp[attacker] = level_exp[attacker] + 1;
        Level_Save(attacker);
    }
}

public zp_round_ended(winteam)
{
    for(new id=1;id<=g_Players;id++)
    g_trime[id] = true;
}

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

    replace_all(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!y", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
    replace_all(msg, 190, "!t2", "^0") // Team2 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, SayText, _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}  
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/

Last edited by JUSTINR; 05-28-2022 at 20:24.
JUSTINR is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 05-22-2022 , 22:16   Re: Speed Level Xp
Reply With Quote #2

try this

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Server Addon: LevelUp System XP 3.2"
#define VERSION "3.2_13.01"
#define AUTHOR "Re.Act!ve"
#define ACCES ADMIN_CVAR
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_pPlayer 41
#pragma tabsize 0
new SayText
new g_level[33], g_level_datag_frags_levelg_ScreenFadeg_level_del[33], g_level_bonusg_ammo
new g_level_maxg_give_ammog_give_ammopacksg_level_numg_level_infog_player_nameg_levels[33], g_h_damage
new g_h_healthg_h_speedg_z_damageh_health[33], h_speed[33], h_damage[33], z_damage[33], level_exp[33]
new 
g_level_exp[33], g_exp_datag_Playersg_hud_colorredgreenbluenameid[33]
new 
bool:g_bonus[33], g_trime[33]
new 
sound_level_up[] = { "misc/zp_level_up.wav"}
new 
sound_health[] = { "items/medshot4.wav" }
// Zombie Classes MUST be registered on plugin_precache
new WeaponNames[][] = { "weapon_knife""weapon_glock18""weapon_ak47""weapon_aug""weapon_awp""weapon_c4""weapon_deagle""weapon_elite""weapon_famas"
    
"weapon_fiveseven""weapon_flashbang""weapon_g3sg1""weapon_galil""weapon_hegrenade""weapon_m3""weapon_xm1014""weapon_m4a1""weapon_m249""weapon_mac10"
    
"weapon_mp5navy""weapon_p90""weapon_p228""weapon_scout""weapon_sg550""weapon_sg552""weapon_smokegrenade""weapon_tmp""weapon_ump45""weapon_usp" }

public 
plugin_precache()
{
        
precache_soundsound_level_up )
        
precache_soundsound_health )
}

public 
plugin_init()
{
    
g_frags_level =         register_cvar("zp_level_frags""50")        // Сколько добавится экспы для получения след. уровня
    
g_level_max  =         register_cvar("zp_level_max""199")            // Максимальный левел
    
g_give_ammo =         register_cvar("zp_level_give_ammo""1")    // Давать аммо паки при каждом полученном левле?
    
g_give_ammopacks register_cvar("zp_level_ammo""300")        // Сколько давать аммопаков? (если выше установлено 1)

    
g_h_damage =         register_cvar("zp_level_h_damage""1")        // Увеличивать с каждым уровнем урон на Х у людей
    
g_h_health =         register_cvar("zp_level_h_health""10")        // Люди получают за каждый левел дополнительные Х хп
    
g_h_speed =         register_cvar("zp_level_h_speed""1.0")        // На сколько величивать скорость людей с каждым уровнем?
    
g_z_damage =         register_cvar("zp_level_z_damage""1")        // Увеличивать с каждым уровнем урон на Х у зомби

    
g_hud_color =         register_cvar("zp_level_hud_type""2")        // 1 - Желтый, 2 - Рандомно каждую секунду 3 - 1 раз рандомно
    
g_level_info =         register_cvar("zp_level_info""1")                // Показывать инфу о игроке, когда вы вводите в чат info <nick>
    
g_player_name =     register_cvar("zp_player_name""0")        // Показывать инфу, при наведении курсором на игрока?
    
g_level_bonus =         register_cvar("zp_level_bonus_on""0")        // Можно ли будет снимать мегабонус? (за получение опр. левла)
    
g_level_num =         register_cvar("zp_level_number""5")    // Каждые Х левлов будет возможность снять  мегабонус (если выше 1)
    
g_ammo =             register_cvar("zp_level_bonus""0")        // Сколько аммо паков этот мегабонус?

    
g_level_data nvault_open("Leveling_Save")
    
g_exp_data nvault_open("Exp_Save")
    
register_clcmd("say","say_info");
    
register_clcmd("say_team","say_info");
    
register_clcmd("zp_levelexp","expa_give"ADMIN_CVAR"use to give Exp")
    
register_clcmd("zp_level_is","level_give"ADMIN_CVAR"use to give Level")
    
SayText get_user_msgid("SayText")
    
g_Players get_maxplayers();
    
register_event("HLTV""Round_Start""a""1=0""2=0")
    
register_event("DeathMsg""Frags_Manager""a""1>0")     
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_dictionary("zp_level_system_xp.txt")
    
register_event("StatusValue","show_status","be","1=2","2!0")
           
register_event("StatusValue","hide_status","be","1=1","2=0")
    
g_ScreenFade get_user_msgid"ScreenFade" )

    for (new 
isizeof WeaponNamesi++)
    {
        
RegisterHam(Ham_Item_DeployWeaponNames[i], "HamF_Item_Deploy_Post"1)
    }

    
register_plugin(PLUGINVERSIONAUTHOR)
}

public 
HamF_Item_Deploy_Post(iEnt)
{
    new 
iPlayer get_pdata_cbase(iEntm_pPlayerXO_WEAPON)
    if(
is_user_connected(iPlayer))
    {
        
set_pev(iPlayerpev_maxspeedfm_get_user_maxspeed(iPlayer) + h_speed[iPlayer])
    }
    return 
HAM_IGNORED
}

public 
Round_Start()
{
    for(new 
id=1;id<=g_Players;id++)
    
set_task(3.0"Level"id)
}

public 
Level(id)
{
    if(  
is_user_alive(id) && !zp_get_user_zombie(id))
    {
        
g_trime[id] = false;
       
/* new n = 1;
        while( n < g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1
        }*/
        
h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        
h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        
h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        
z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new 
Float:speed[33];
        
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        
fm_set_user_healthidget_user_health(id) + h_health[id] )
        
set_pev(idpev_maxspeedspeed[id] )
        
emit_sound(idCHAN_STREAMsound_health1.0ATTN_NORM0PITCH_HIGH )
    }
}

public 
expa_give(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
    {                
        
console_print(id"У вас нет доступа к команде")
        return 
PLUGIN_HANDLED
    
}
    new 
target[32]
    new 
count[32]    
    
    
read_argv(1,target,31)
    
read_argv(2,count,31)
    new 
target_idname[32], nameid[32]
    
target_id find_player("bl"target)
    
get_user_name(target_idnamesizeof name 1
    
get_user_name(idnameidsizeof nameid 1)
    if(!
target_id
    {
        
console_print(id"Can't find that player")
        return 
PLUGIN_HANDLED
    
}
    if(
read_argc() != 3)
    return 
PLUGIN_HANDLED    

    
if(str_to_num(count) < (g_level_exp[target_id] - level_exp[target_id]) )
    {
        if(
str_to_num(count) == 0)
        
console_print(id"Exp Player %s in %i / %i"namelevel_exp[target_id], g_level_exp[target_id])
        else
        {
            
console_print(id"Player %s gives for %i exp, Her Maximum %i"namestr_to_num(count), g_level_exp[target_id])
            
level_exp[target_id] = level_exp[target_id] + str_to_num(count);
        }
        
    }
    else
    {
        
console_print(id"Maximum Exp in player %i"g_level_exp[target_id])
    }
    return 
PLUGIN_HANDLED
}

public 
level_give(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
    {                
        
console_print(id"У вас нет доступа к команде")
        return 
PLUGIN_HANDLED
    
}
    new 
target[32]
    new 
count[32]    
    
    
read_argv(1,target,31)
    
read_argv(2,count,31)
    new 
target_idname[32], level_id
    level_id 
str_to_num(count);
    
target_id find_player("bl"target)
    
get_user_name(target_idnamesizeof name 1
    if(!
target_id
    {
        
console_print(id"Can't find that player")
        return 
PLUGIN_HANDLED
    
}
    if(
read_argc() != 3)
    return 
PLUGIN_HANDLED    

    
if( ((g_level[target_id] + level_id) <=get_pcvar_num(g_level_max)) && (level_id != 0) && ((g_level[target_id] + level_id) > ) )
    {
        if(
level_id 0)
        {
            
g_level[target_id] = g_level[target_id] + level_id;
            
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_target_id)
                   
write_short(1<<12// duration
                
write_short(1// hold time
            
write_short(0x0000// fade type
            
write_byte(1// red
            
write_byte(200// green
            
write_byte(0// blue
            
write_byte(205// alpha
            
message_end()
            
emit_sound(target_idCHAN_STREAMsound_level_up1.0ATTN_NORM0PITCH_HIGH )
        }
        else
        {
            
g_level[target_id] = g_level[target_id] + level_id;
            
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_target_id)
                   
write_short(1<<12// duration
                
write_short(1// hold time
            
write_short(0x0000// fade type
            
write_byte(200// red
            
write_byte(40// green
            
write_byte(0// blue
            
write_byte(205// alpha
            
message_end()
        }
            
console_print(id"Player %s gives add %i level"namelevel_id)
    }
    else
        
console_print(id"Operation Invalid")
    return 
PLUGIN_HANDLED
}

public 
client_putinserver(id)
{
    
Level_Load(id)
    new 
name[32]
    
g_trime[id] = false;
    
g_bonus[id] = true;
    
nameid[id] = get_user_name(idnamesizeof name 1)
    if( !
zp_get_user_zombie(id) && is_user_alive(id))
    {
        
g_trime[id] = false;
        
/*new n = 1;
        while( n != g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1;
        }*/
        
h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        
h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        
h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        
z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new 
Float:speed[33];
        
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        
fm_set_user_healthidget_user_health(id) + h_health[id] )
        
set_pev(idpev_maxspeedspeed[id] )
        
emit_sound(idCHAN_STREAMsound_health1.0ATTN_NORM0PITCH_HIGH )
    }

    if( 
g_level[id] == 0g_level[id] = 1;
    if( 
level_exp[id] == g_level[id] ) level_exp[id] = 0;
    if(
g_level[id] < get_pcvar_num(g_level_num))
    
g_levels[id] = get_pcvar_num(g_level_num);
    else
    {
        if(
g_level[id] != g_levels[id])
        {
            new 
1;
            while( 
g_level[id] > ( get_pcvar_num(g_level_num)) )
            {
                
1;
                
g_levels[id] = get_pcvar_num(g_level_num);
            }
        }
    }
    new 
1;
    while( 
g_level[id] != )
    {
    
1;
    
g_level_exp[id] = get_pcvar_num(g_frags_level);
    }
    
red random_num(10200)
    
green random_num(10200)
    
blue random_num(10200)
}

#if AMXX_VERSION_NUM < 183
public client_disconnect(id)
#else 
public client_disconnected(id)
#endif
{
    new 
name[32], player_nick[33]
    
player_nick[id] = get_user_name(idnamesizeof name 1)
    if(
player_nick[id] == nameid[id])
    
Level_Save(id)
    
    
g_trime[id] = false;
}

public 
hide_status(id)
{
        
set_hudmessage(0,0,0,0.0,0.0,00.00.010.00.04)
        
show_hudmessage(id,"")
}

public 
show_status(id)
{
        new 
name[32],pid read_data(2)
        
get_user_name(pid,name,31)
       if (!
zp_get_user_zombie(pid) && !zp_get_user_zombie(id) && (get_pcvar_num(g_player_name) == 1) )
    {
               
set_hudmessage(0,0,255,-1.0,0.60,10.013.00.010.014)
               
show_hudmessage(id,"%L"LANG_PLAYER"PLAYER_NAME_H"nameg_level[pid],                                 get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))
    }
     if(
zp_get_user_zombie(id) && zp_get_user_zombie(pid) && (get_pcvar_num(g_player_name) == 1) )
    {
        
set_hudmessage(255,0,0,-1.0,0.60,10.013.00.010.014)
        
show_hudmessage(id,"%L"LANG_PLAYER"PLAYER_NAME_Z"nameg_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_bits)
{
    if(
1<=attacker<=32)
    {
        if ( !
zp_get_user_zombie(attacker) && is_user_alive(attacker) )
            
SetHamParamFloat(4damage h_damage[attacker])
        else
        {
            if ( 
zp_get_user_zombie(attacker) && is_user_alive(attacker) && !zp_get_user_nemesis(attacker))
                
SetHamParamFloat(4damage z_damage[attacker]);
        }
    }
}

public 
say_info(id)
{
    new 
text[70], arg1[32], target[32], count[32]
    
read_args(textsizeof(text)-1);
    
remove_quotes(text);
    
arg1[0] = '^0';
    
target[0] = '^0';
    
count[0] = '^0';
    
parse(textarg1sizeof(arg1)-1targetsizeof(target)-1countsizeof(count)-1);
    if ( 
equali(arg1"info"4) )
    {
        
info_player(idtarget);
    }
    if ( 
equali(arg1"bonusme"7) && (get_pcvar_num(g_level_info) == 1))
    {
        
bonus_player(id);
    }
    if ( 
equali(arg1"levelexp"7) && (get_pcvar_num(g_level_info) == 1))
    {
        
expa_player(id);
    }
    return 
PLUGIN_CONTINUE;
}

public 
zp_extra_item_selected(iditemid)
{
    
Level_Save(id)
}

public 
zp_user_infected_pre(idinfector)
{
    if( 
is_user_alive(infector) && (level_exp[infector] < (g_level_exp[infector] - 1)) && zp_get_user_zombie(infector))
    {
        
level_exp[infector] = level_exp[infector] + 1;
        
Level_Save(infector);
    }
}

public 
info_player(idtarget[])
{
    new 
target_2;
    
target_2 find_player("bl"target)
    static 
name[32], nameid[32];
    
get_user_name(target_2namesizeof name 1)
    
get_user_name(idnameidsizeof nameid 1)
    if(!
target_2)
    {
        
ChatColor(id"!g[ZP] !y%L"LANG_PLAYER"LEVEL_INFO_NONAME")
        return 
PLUGIN_HANDLED
    
}

    if(
zp_get_user_zombie(id))
    {
        if(
id != target_2)
        {
            
ChatColor(id"!g[INFO]!t %L"LANG_PLAYER"LEVEL_INFOZM"nameg_level[target_2], z_damage[target_2], zp_get_user_ammo_packs(target_2) )
            
ChatColor(target_2"!g[INFO]!t%L "LANG_PLAYER"LEVEL_INFO_YOU"nameid)
        }
        else
        {
            
ChatColor(id"!g[INFOME]!t%L"LANG_PLAYER"LEVEL_INFOME_ZM"z_damage[target_2] )
        }
    }
    else
    {
        if(
id != target_2)
        {
            
ChatColor(id"!g[INFO]!t %L"LANG_PLAYER"LEVEL_INFO"nameg_level[target_2], h_damage[target_2],                             h_speed[target_2], h_health[target_2], zp_get_user_ammo_packs(target_2) )
            
ChatColor(target_2"!g[INFO]!t%L "LANG_PLAYER"LEVEL_INFO_YOU"nameid)
        }
        else
        {
            
ChatColor(id"!g[INFOME]!t%L"LANG_PLAYER"LEVEL_INFOME"h_damage[target_2], h_speed[target_2],                             h_health[target_2] )
        }
    }
    return 
PLUGIN_HANDLED
}

public 
bonus_player(id)
{
    if( (
g_level[id] >= g_levels[id]) && g_bonus[id] && get_pcvar_num(g_level_bonus))
    {
        
g_levels[id] = g_levels[id] * 2;
        
g_level_del[id] = g_level[id];
        
g_bonus[id] = false;
        
ChatColor(id"!g[BONUS]%L"LANG_PLAYER"LEVEL_MEGABONUS"g_level[id], get_pcvar_num(g_ammo) )
        
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + get_pcvar_num(g_ammo) )
        
Level_Save(id)
    }
    else
    {
        if(
g_level[id] < g_levels[id])
        {
            
g_levels[id] = get_pcvar_num(g_level_num);
            
ChatColor(id"!g[BONUS]!y%L"LANG_PLAYER"LEVEL_NOMEGABONUS"g_levels[id], get_pcvar_num(g_ammo) )
        }
        else
        {
            new 
1;
            while( 
g_level[id] > ( get_pcvar_num(g_level_num)) )
            {
                
g_levels[id] = get_pcvar_num(g_level_num);
                
1;
            }
            
ChatColor(id"!g[BONUS]!y%L"LANG_PLAYER"LEVEL_NOMEGABONUS"g_levels[id], get_pcvar_num(g_ammo) )
        }

        
Level_Save(id)
    }
    return 
PLUGIN_HANDLED
}

public 
expa_player(id)
{
    
ChatColor(id"!g[EXPA] %L"LANG_PLAYER"LEVEL_EXP"level_exp[id], g_level_exp[id])
    return 
PLUGIN_HANDLED
}

public 
level_status(id)
{
    if( 
is_user_alive(id))
    {
        switch( 
get_pcvar_num(g_hud_color) ) 
            { 
                    case 
1
                    { 
            
set_hudmessage(25520030.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
                    } 
                    case 
2
            {
            static 
rgbrandom_num(10200), random_num(0200), random_num(0200);
            
set_hudmessage(rgb0.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"Level: %i^n Exp: %i"g_level[id], level_exp[id])
            }
                    case 
3
            {
            
            
set_hudmessage(redgreenblue0.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
            }
        }
    }


public 
Level_Save(id)
{
    new 
key[64], data[256], data_exp[256], key_exp[64]
    new 
name[33];
    
get_user_name(id,name,32)

    
format(key63"%s-/"name)
    
format(data255"%i#"g_level[id])

    
format(key_exp63"%s-/"name)
    
format(data_exp255"%i#"level_exp[id])

    
nvault_set(g_level_datakeydata)
    
nvault_set(g_exp_datakey_expdata_exp)
    return 
PLUGIN_CONTINUE;
}

public 
Level_Load(id)
{
    new 
key[64], data[256], data_exp[256], key_exp[64]
    new 
name[33];
    
get_user_name(id,name,32)

    
format(key63"%s-/"name)
    
format(data255"%i#"g_level[id])

    
format(key_exp63"%s-/"name)
    
format(data_exp255"%i#"level_exp[id])

    
nvault_get(g_level_datakeydata255)
    
nvault_get(g_exp_datakey_expdata_exp255)
    
replace_all(data255"#"" ")
    
replace_all(data_exp255"#"" ")

    new 
givelevel[32], give_exp[32]
    
parse(datagivelevel31)
    
parse(data_expgive_exp31)
    
g_level[id] = str_to_num(givelevel)
    
level_exp[id] = str_to_num(give_exp)

    
set_task(1.0"level_status"id__"b")
    return 
PLUGIN_CONTINUE;
}

public 
Frags_Manager()
{
    new 
aname[32], attackerattacker read_data(1)
    new 
y1;
    
get_user_name(attackeranamesizeof aname 1)
    if( ( 
level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
    {
        
g_bonus[attacker] = true;
        
g_level[attacker] = g_level[attacker] + 1;
        
level_exp[attacker] = 0;
        while( 
g_level[attacker] != )
        {
            
1;
            
g_level_exp[attacker] = get_pcvar_num(g_frags_level);
        }
        
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_attacker)
               
write_short(1<<12// duration
            
write_short(1// hold time
        
write_short(0x0000// fade type
        
write_byte(1// red
        
write_byte(200// green
        
write_byte(0// blue
        
write_byte(205// alpha
        
message_end()
        
emit_sound(attackerCHAN_STREAMsound_level_up1.0ATTN_NORM0PITCH_HIGH )
        
set_hudmessage(020000.650.500.03.02.01.0, -1)
        
show_hudmessage(0"%L"LANG_PLAYER"LEVEL_UP"anameg_level[attacker])
        if(
get_pcvar_num(g_give_ammo) == 1)
        {
            
ChatColor(attacker"!g[LEVEL] !y %L"LANG_PLAYER"BONUS_LEVEL"get_pcvar_num(g_give_ammopacks) )
            
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker) + get_pcvar_num(g_give_ammopacks) )
        }
        
Level_Save(attacker);
    }
    else
    {

        if(
g_level[attacker] == get_pcvar_num(g_level_max))
        
ChatColor(attacker"!g[LEVEL]!y %L"LANG_PLAYER"LEVEL_MAX"g_level[attacker] )
        
level_exp[attacker] = level_exp[attacker] + 1;
        
Level_Save(attacker);
    }
}

public 
zp_round_ended(winteam)
{
    for(new 
id=1;id<=g_Players;id++)
    
g_trime[id] = true;
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)

    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!t""^3"// Team Color
    
replace_all(msg190"!t2""^0"// Team2 Color

    
if (idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLESayText_players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}  
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
anyways code looks shitty better made it by yourself

Last edited by lexzor; 05-22-2022 at 22:17.
lexzor is offline
JUSTINR
Member
Join Date: May 2022
Old 05-23-2022 , 04:09   Re: Speed Level Xp
Reply With Quote #3

It doesn't work, it's the same..
JUSTINR is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 05-23-2022 , 06:12   Re: Speed Level Xp
Reply With Quote #4

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Server Addon: LevelUp System XP 3.2"
#define VERSION "3.2_13.01"
#define AUTHOR "Re.Act!ve"
#define ACCES ADMIN_CVAR
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_pPlayer 41
#pragma tabsize 0
new SayText
new g_level[33], g_level_datag_frags_levelg_ScreenFadeg_level_del[33], g_level_bonusg_ammo
new g_level_maxg_give_ammog_give_ammopacksg_level_numg_level_infog_player_nameg_levels[33], g_h_damage
new g_h_healthg_h_speedg_z_damageh_health[33], h_speed[33], h_damage[33], z_damage[33], level_exp[33]
new 
g_level_exp[33], g_exp_datag_Playersg_hud_colorredgreenbluenameid[33]
new 
bool:g_bonus[33], g_trime[33]
new 
sound_level_up[] = { "misc/zp_level_up.wav"}
new 
sound_health[] = { "items/medshot4.wav" }
// Zombie Classes MUST be registered on plugin_precache

public plugin_precache()
{
        
precache_soundsound_level_up )
        
precache_soundsound_health )
}

public 
plugin_init()
{
    
g_frags_level =         register_cvar("zp_level_frags""50")        // Сколько добавится экспы для получения след. уровня
    
g_level_max  =         register_cvar("zp_level_max""199")            // Максимальный левел
    
g_give_ammo =         register_cvar("zp_level_give_ammo""1")    // Давать аммо паки при каждом полученном левле?
    
g_give_ammopacks register_cvar("zp_level_ammo""300")        // Сколько давать аммопаков? (если выше установлено 1)

    
g_h_damage =         register_cvar("zp_level_h_damage""1")        // Увеличивать с каждым уровнем урон на Х у людей
    
g_h_health =         register_cvar("zp_level_h_health""10")        // Люди получают за каждый левел дополнительные Х хп
    
g_h_speed =         register_cvar("zp_level_h_speed""1.0")        // На сколько величивать скорость людей с каждым уровнем?
    
g_z_damage =         register_cvar("zp_level_z_damage""1")        // Увеличивать с каждым уровнем урон на Х у зомби

    
g_hud_color =         register_cvar("zp_level_hud_type""2")        // 1 - Желтый, 2 - Рандомно каждую секунду 3 - 1 раз рандомно
    
g_level_info =         register_cvar("zp_level_info""1")                // Показывать инфу о игроке, когда вы вводите в чат info <nick>
    
g_player_name =     register_cvar("zp_player_name""0")        // Показывать инфу, при наведении курсором на игрока?
    
g_level_bonus =         register_cvar("zp_level_bonus_on""0")        // Можно ли будет снимать мегабонус? (за получение опр. левла)
    
g_level_num =         register_cvar("zp_level_number""5")    // Каждые Х левлов будет возможность снять  мегабонус (если выше 1)
    
g_ammo =             register_cvar("zp_level_bonus""0")        // Сколько аммо паков этот мегабонус?

    
g_level_data nvault_open("Leveling_Save")
    
g_exp_data nvault_open("Exp_Save")
    
register_clcmd("say","say_info");
    
register_clcmd("say_team","say_info");
    
register_clcmd("zp_levelexp","expa_give"ADMIN_CVAR"use to give Exp")
    
register_clcmd("zp_level_is","level_give"ADMIN_CVAR"use to give Level")
    
SayText get_user_msgid("SayText")
    
g_Players get_maxplayers();
    
register_event("HLTV""Round_Start""a""1=0""2=0")
    
register_event("DeathMsg""Frags_Manager""a""1>0")     
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_dictionary("zp_level_system_xp.txt")
    
register_event("StatusValue","show_status","be","1=2","2!0")
           
register_event("StatusValue","hide_status","be","1=1","2=0")
    
g_ScreenFade get_user_msgid"ScreenFade" )

    
RegisterHam(Ham_CS_Player_ResetMaxSpeed"player""OnCBasePlayer_ResetMaxSpeed_P"true); 

    
register_plugin(PLUGINVERSIONAUTHOR)
}

public 
OnCBasePlayer_ResetMaxSpeed_Pid )
{
    if(
is_user_connected(id)) set_pev(idpev_maxspeedfm_get_user_maxspeed(id) + h_speed[id])
}

public 
Round_Start()
{
    for(new 
id=1;id<=g_Players;id++)
    
set_task(3.0"Level"id)
}

public 
Level(id)
{
    if(  
is_user_alive(id) && !zp_get_user_zombie(id))
    {
        
g_trime[id] = false;
       
/* new n = 1;
        while( n < g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1
        }*/
        
h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        
h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        
h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        
z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new 
Float:speed[33];
        
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        
fm_set_user_healthidget_user_health(id) + h_health[id] )
        
set_pev(idpev_maxspeedspeed[id] )
        
emit_sound(idCHAN_STREAMsound_health1.0ATTN_NORM0PITCH_HIGH )
    }
}

public 
expa_give(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
    {                
        
console_print(id"У вас нет доступа к команде")
        return 
PLUGIN_HANDLED
    
}
    new 
target[32]
    new 
count[32]    
    
    
read_argv(1,target,31)
    
read_argv(2,count,31)
    new 
target_idname[32], nameid[32]
    
target_id find_player("bl"target)
    
get_user_name(target_idnamesizeof name 1
    
get_user_name(idnameidsizeof nameid 1)
    if(!
target_id
    {
        
console_print(id"Can't find that player")
        return 
PLUGIN_HANDLED
    
}
    if(
read_argc() != 3)
    return 
PLUGIN_HANDLED    

    
if(str_to_num(count) < (g_level_exp[target_id] - level_exp[target_id]) )
    {
        if(
str_to_num(count) == 0)
        
console_print(id"Exp Player %s in %i / %i"namelevel_exp[target_id], g_level_exp[target_id])
        else
        {
            
console_print(id"Player %s gives for %i exp, Her Maximum %i"namestr_to_num(count), g_level_exp[target_id])
            
level_exp[target_id] = level_exp[target_id] + str_to_num(count);
        }
        
    }
    else
    {
        
console_print(id"Maximum Exp in player %i"g_level_exp[target_id])
    }
    return 
PLUGIN_HANDLED
}

public 
level_give(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
    {                
        
console_print(id"У вас нет доступа к команде")
        return 
PLUGIN_HANDLED
    
}
    new 
target[32]
    new 
count[32]    
    
    
read_argv(1,target,31)
    
read_argv(2,count,31)
    new 
target_idname[32], level_id
    level_id 
str_to_num(count);
    
target_id find_player("bl"target)
    
get_user_name(target_idnamesizeof name 1
    if(!
target_id
    {
        
console_print(id"Can't find that player")
        return 
PLUGIN_HANDLED
    
}
    if(
read_argc() != 3)
    return 
PLUGIN_HANDLED    

    
if( ((g_level[target_id] + level_id) <=get_pcvar_num(g_level_max)) && (level_id != 0) && ((g_level[target_id] + level_id) > ) )
    {
        if(
level_id 0)
        {
            
g_level[target_id] = g_level[target_id] + level_id;
            
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_target_id)
                   
write_short(1<<12// duration
                
write_short(1// hold time
            
write_short(0x0000// fade type
            
write_byte(1// red
            
write_byte(200// green
            
write_byte(0// blue
            
write_byte(205// alpha
            
message_end()
            
emit_sound(target_idCHAN_STREAMsound_level_up1.0ATTN_NORM0PITCH_HIGH )
        }
        else
        {
            
g_level[target_id] = g_level[target_id] + level_id;
            
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_target_id)
                   
write_short(1<<12// duration
                
write_short(1// hold time
            
write_short(0x0000// fade type
            
write_byte(200// red
            
write_byte(40// green
            
write_byte(0// blue
            
write_byte(205// alpha
            
message_end()
        }
            
console_print(id"Player %s gives add %i level"namelevel_id)
    }
    else
        
console_print(id"Operation Invalid")
    return 
PLUGIN_HANDLED
}

public 
client_putinserver(id)
{
    
Level_Load(id)
    new 
name[32]
    
g_trime[id] = false;
    
g_bonus[id] = true;
    
nameid[id] = get_user_name(idnamesizeof name 1)
    if( !
zp_get_user_zombie(id) && is_user_alive(id))
    {
        
g_trime[id] = false;
        
/*new n = 1;
        while( n != g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1;
        }*/
        
h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        
h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        
h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        
z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new 
Float:speed[33];
        
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        
fm_set_user_healthidget_user_health(id) + h_health[id] )
        
set_pev(idpev_maxspeedspeed[id] )
        
emit_sound(idCHAN_STREAMsound_health1.0ATTN_NORM0PITCH_HIGH )
    }

    if( 
g_level[id] == 0g_level[id] = 1;
    if( 
level_exp[id] == g_level[id] ) level_exp[id] = 0;
    if(
g_level[id] < get_pcvar_num(g_level_num))
    
g_levels[id] = get_pcvar_num(g_level_num);
    else
    {
        if(
g_level[id] != g_levels[id])
        {
            new 
1;
            while( 
g_level[id] > ( get_pcvar_num(g_level_num)) )
            {
                
1;
                
g_levels[id] = get_pcvar_num(g_level_num);
            }
        }
    }
    new 
1;
    while( 
g_level[id] != )
    {
    
1;
    
g_level_exp[id] = get_pcvar_num(g_frags_level);
    }
    
red random_num(10200)
    
green random_num(10200)
    
blue random_num(10200)
}

#if AMXX_VERSION_NUM < 183
public client_disconnect(id)
#else 
public client_disconnected(id)
#endif
{
    new 
name[32], player_nick[33]
    
player_nick[id] = get_user_name(idnamesizeof name 1)
    if(
player_nick[id] == nameid[id])
    
Level_Save(id)
    
    
g_trime[id] = false;
}

public 
hide_status(id)
{
        
set_hudmessage(0,0,0,0.0,0.0,00.00.010.00.04)
        
show_hudmessage(id,"")
}

public 
show_status(id)
{
        new 
name[32],pid read_data(2)
        
get_user_name(pid,name,31)
       if (!
zp_get_user_zombie(pid) && !zp_get_user_zombie(id) && (get_pcvar_num(g_player_name) == 1) )
    {
               
set_hudmessage(0,0,255,-1.0,0.60,10.013.00.010.014)
               
show_hudmessage(id,"%L"LANG_PLAYER"PLAYER_NAME_H"nameg_level[pid],                                 get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))
    }
     if(
zp_get_user_zombie(id) && zp_get_user_zombie(pid) && (get_pcvar_num(g_player_name) == 1) )
    {
        
set_hudmessage(255,0,0,-1.0,0.60,10.013.00.010.014)
        
show_hudmessage(id,"%L"LANG_PLAYER"PLAYER_NAME_Z"nameg_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_bits)
{
    if(
1<=attacker<=32)
    {
        if ( !
zp_get_user_zombie(attacker) && is_user_alive(attacker) )
            
SetHamParamFloat(4damage h_damage[attacker])
        else
        {
            if ( 
zp_get_user_zombie(attacker) && is_user_alive(attacker) && !zp_get_user_nemesis(attacker))
                
SetHamParamFloat(4damage z_damage[attacker]);
        }
    }
}

public 
say_info(id)
{
    new 
text[70], arg1[32], target[32], count[32]
    
read_args(textsizeof(text)-1);
    
remove_quotes(text);
    
arg1[0] = '^0';
    
target[0] = '^0';
    
count[0] = '^0';
    
parse(textarg1sizeof(arg1)-1targetsizeof(target)-1countsizeof(count)-1);
    if ( 
equali(arg1"info"4) )
    {
        
info_player(idtarget);
    }
    if ( 
equali(arg1"bonusme"7) && (get_pcvar_num(g_level_info) == 1))
    {
        
bonus_player(id);
    }
    if ( 
equali(arg1"levelexp"7) && (get_pcvar_num(g_level_info) == 1))
    {
        
expa_player(id);
    }
    return 
PLUGIN_CONTINUE;
}

public 
zp_extra_item_selected(iditemid)
{
    
Level_Save(id)
}

public 
zp_user_infected_pre(idinfector)
{
    if( 
is_user_alive(infector) && (level_exp[infector] < (g_level_exp[infector] - 1)) && zp_get_user_zombie(infector))
    {
        
level_exp[infector] = level_exp[infector] + 1;
        
Level_Save(infector);
    }
}

public 
info_player(idtarget[])
{
    new 
target_2;
    
target_2 find_player("bl"target)
    static 
name[32], nameid[32];
    
get_user_name(target_2namesizeof name 1)
    
get_user_name(idnameidsizeof nameid 1)
    if(!
target_2)
    {
        
ChatColor(id"!g[ZP] !y%L"LANG_PLAYER"LEVEL_INFO_NONAME")
        return 
PLUGIN_HANDLED
    
}

    if(
zp_get_user_zombie(id))
    {
        if(
id != target_2)
        {
            
ChatColor(id"!g[INFO]!t %L"LANG_PLAYER"LEVEL_INFOZM"nameg_level[target_2], z_damage[target_2], zp_get_user_ammo_packs(target_2) )
            
ChatColor(target_2"!g[INFO]!t%L "LANG_PLAYER"LEVEL_INFO_YOU"nameid)
        }
        else
        {
            
ChatColor(id"!g[INFOME]!t%L"LANG_PLAYER"LEVEL_INFOME_ZM"z_damage[target_2] )
        }
    }
    else
    {
        if(
id != target_2)
        {
            
ChatColor(id"!g[INFO]!t %L"LANG_PLAYER"LEVEL_INFO"nameg_level[target_2], h_damage[target_2],                             h_speed[target_2], h_health[target_2], zp_get_user_ammo_packs(target_2) )
            
ChatColor(target_2"!g[INFO]!t%L "LANG_PLAYER"LEVEL_INFO_YOU"nameid)
        }
        else
        {
            
ChatColor(id"!g[INFOME]!t%L"LANG_PLAYER"LEVEL_INFOME"h_damage[target_2], h_speed[target_2],                             h_health[target_2] )
        }
    }
    return 
PLUGIN_HANDLED
}

public 
bonus_player(id)
{
    if( (
g_level[id] >= g_levels[id]) && g_bonus[id] && get_pcvar_num(g_level_bonus))
    {
        
g_levels[id] = g_levels[id] * 2;
        
g_level_del[id] = g_level[id];
        
g_bonus[id] = false;
        
ChatColor(id"!g[BONUS]%L"LANG_PLAYER"LEVEL_MEGABONUS"g_level[id], get_pcvar_num(g_ammo) )
        
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + get_pcvar_num(g_ammo) )
        
Level_Save(id)
    }
    else
    {
        if(
g_level[id] < g_levels[id])
        {
            
g_levels[id] = get_pcvar_num(g_level_num);
            
ChatColor(id"!g[BONUS]!y%L"LANG_PLAYER"LEVEL_NOMEGABONUS"g_levels[id], get_pcvar_num(g_ammo) )
        }
        else
        {
            new 
1;
            while( 
g_level[id] > ( get_pcvar_num(g_level_num)) )
            {
                
g_levels[id] = get_pcvar_num(g_level_num);
                
1;
            }
            
ChatColor(id"!g[BONUS]!y%L"LANG_PLAYER"LEVEL_NOMEGABONUS"g_levels[id], get_pcvar_num(g_ammo) )
        }

        
Level_Save(id)
    }
    return 
PLUGIN_HANDLED
}

public 
expa_player(id)
{
    
ChatColor(id"!g[EXPA] %L"LANG_PLAYER"LEVEL_EXP"level_exp[id], g_level_exp[id])
    return 
PLUGIN_HANDLED
}

public 
level_status(id)
{
    if( 
is_user_alive(id))
    {
        switch( 
get_pcvar_num(g_hud_color) ) 
            { 
                    case 
1
                    { 
            
set_hudmessage(25520030.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
                    } 
                    case 
2
            {
            static 
rgbrandom_num(10200), random_num(0200), random_num(0200);
            
set_hudmessage(rgb0.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"Level: %i^n Exp: %i"g_level[id], level_exp[id])
            }
                    case 
3
            {
            
            
set_hudmessage(redgreenblue0.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
            }
        }
    }


public 
Level_Save(id)
{
    new 
key[64], data[256], data_exp[256], key_exp[64]
    new 
name[33];
    
get_user_name(id,name,32)

    
format(key63"%s-/"name)
    
format(data255"%i#"g_level[id])

    
format(key_exp63"%s-/"name)
    
format(data_exp255"%i#"level_exp[id])

    
nvault_set(g_level_datakeydata)
    
nvault_set(g_exp_datakey_expdata_exp)
    return 
PLUGIN_CONTINUE;
}

public 
Level_Load(id)
{
    new 
key[64], data[256], data_exp[256], key_exp[64]
    new 
name[33];
    
get_user_name(id,name,32)

    
format(key63"%s-/"name)
    
format(data255"%i#"g_level[id])

    
format(key_exp63"%s-/"name)
    
format(data_exp255"%i#"level_exp[id])

    
nvault_get(g_level_datakeydata255)
    
nvault_get(g_exp_datakey_expdata_exp255)
    
replace_all(data255"#"" ")
    
replace_all(data_exp255"#"" ")

    new 
givelevel[32], give_exp[32]
    
parse(datagivelevel31)
    
parse(data_expgive_exp31)
    
g_level[id] = str_to_num(givelevel)
    
level_exp[id] = str_to_num(give_exp)

    
set_task(1.0"level_status"id__"b")
    return 
PLUGIN_CONTINUE;
}

public 
Frags_Manager()
{
    new 
aname[32], attackerattacker read_data(1)
    new 
y1;
    
get_user_name(attackeranamesizeof aname 1)
    if( ( 
level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
    {
        
g_bonus[attacker] = true;
        
g_level[attacker] = g_level[attacker] + 1;
        
level_exp[attacker] = 0;
        while( 
g_level[attacker] != )
        {
            
1;
            
g_level_exp[attacker] = get_pcvar_num(g_frags_level);
        }
        
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_attacker)
               
write_short(1<<12// duration
            
write_short(1// hold time
        
write_short(0x0000// fade type
        
write_byte(1// red
        
write_byte(200// green
        
write_byte(0// blue
        
write_byte(205// alpha
        
message_end()
        
emit_sound(attackerCHAN_STREAMsound_level_up1.0ATTN_NORM0PITCH_HIGH )
        
set_hudmessage(020000.650.500.03.02.01.0, -1)
        
show_hudmessage(0"%L"LANG_PLAYER"LEVEL_UP"anameg_level[attacker])
        if(
get_pcvar_num(g_give_ammo) == 1)
        {
            
ChatColor(attacker"!g[LEVEL] !y %L"LANG_PLAYER"BONUS_LEVEL"get_pcvar_num(g_give_ammopacks) )
            
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker) + get_pcvar_num(g_give_ammopacks) )
        }
        
Level_Save(attacker);
    }
    else
    {

        if(
g_level[attacker] == get_pcvar_num(g_level_max))
        
ChatColor(attacker"!g[LEVEL]!y %L"LANG_PLAYER"LEVEL_MAX"g_level[attacker] )
        
level_exp[attacker] = level_exp[attacker] + 1;
        
Level_Save(attacker);
    }
}

public 
zp_round_ended(winteam)
{
    for(new 
id=1;id<=g_Players;id++)
    
g_trime[id] = true;
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)

    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!t""^3"// Team Color
    
replace_all(msg190"!t2""^0"// Team2 Color

    
if (idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLESayText_players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}  
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
lexzor is offline
JUSTINR
Member
Join Date: May 2022
Old 05-23-2022 , 07:13   Re: Speed Level Xp
Reply With Quote #5

Perfect ! Sorry for x2 but u can add in hud in base plugin Level and Xp?

EDIT: Zombie have speed...i can add only human ?

Last edited by JUSTINR; 05-23-2022 at 17:23.
JUSTINR is offline
JUSTINR
Member
Join Date: May 2022
Old 05-24-2022 , 13:37   Re: Speed Level Xp
Reply With Quote #6

up
JUSTINR is offline
JUSTINR
Member
Join Date: May 2022
Old 05-26-2022 , 09:07   Re: Speed Level Xp
Reply With Quote #7

T/C
JUSTINR is offline
sPed
Member
Join Date: May 2017
Location: Algeria
Old 06-03-2022 , 09:43   Re: Speed Level Xp
Reply With Quote #8

Quote:
Originally Posted by JUSTINR View Post
Perfect ! Sorry for x2 but u can add in hud in base plugin Level and Xp?

EDIT: Zombie have speed...i can add only human ?
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Server Addon: LevelUp System XP 3.2"
#define VERSION "3.2_13.01"
#define AUTHOR "Re.Act!ve"
#define ACCES ADMIN_CVAR
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_pPlayer 41
#pragma tabsize 0
new SayText
new g_level[33], g_level_datag_frags_levelg_ScreenFadeg_level_del[33], g_level_bonusg_ammo
new g_level_maxg_give_ammog_give_ammopacksg_level_numg_level_infog_player_nameg_levels[33], g_h_damage
new g_h_healthg_h_speedg_z_damageh_health[33], h_speed[33], h_damage[33], z_damage[33], level_exp[33]
new 
g_level_exp[33], g_exp_datag_Playersg_hud_colorredgreenbluenameid[33]
new 
bool:g_bonus[33], g_trime[33]
new 
sound_level_up[] = { "misc/zp_level_up.wav"}
new 
sound_health[] = { "items/medshot4.wav" }
// Zombie Classes MUST be registered on plugin_precache

public plugin_precache()
{
        
precache_soundsound_level_up )
        
precache_soundsound_health )
}

public 
plugin_init()
{
    
g_frags_level =         register_cvar("zp_level_frags""50")        // Сколько добавится экспы для получения след. уровня
    
g_level_max  =         register_cvar("zp_level_max""199")            // Максимальный левел
    
g_give_ammo =         register_cvar("zp_level_give_ammo""1")    // Давать аммо паки при каждом полученном левле?
    
g_give_ammopacks register_cvar("zp_level_ammo""300")        // Сколько давать аммопаков? (если выше установлено 1)

    
g_h_damage =         register_cvar("zp_level_h_damage""1")        // Увеличивать с каждым уровнем урон на Х у людей
    
g_h_health =         register_cvar("zp_level_h_health""10")        // Люди получают за каждый левел дополнительные Х хп
    
g_h_speed =         register_cvar("zp_level_h_speed""1.0")        // На сколько величивать скорость людей с каждым уровнем?
    
g_z_damage =         register_cvar("zp_level_z_damage""1")        // Увеличивать с каждым уровнем урон на Х у зомби

    
g_hud_color =         register_cvar("zp_level_hud_type""2")        // 1 - Желтый, 2 - Рандомно каждую секунду 3 - 1 раз рандомно
    
g_level_info =         register_cvar("zp_level_info""1")                // Показывать инфу о игроке, когда вы вводите в чат info <nick>
    
g_player_name =     register_cvar("zp_player_name""0")        // Показывать инфу, при наведении курсором на игрока?
    
g_level_bonus =         register_cvar("zp_level_bonus_on""0")        // Можно ли будет снимать мегабонус? (за получение опр. левла)
    
g_level_num =         register_cvar("zp_level_number""5")    // Каждые Х левлов будет возможность снять  мегабонус (если выше 1)
    
g_ammo =             register_cvar("zp_level_bonus""0")        // Сколько аммо паков этот мегабонус?

    
g_level_data nvault_open("Leveling_Save")
    
g_exp_data nvault_open("Exp_Save")
    
register_clcmd("say","say_info");
    
register_clcmd("say_team","say_info");
    
register_clcmd("zp_levelexp","expa_give"ADMIN_CVAR"use to give Exp")
    
register_clcmd("zp_level_is","level_give"ADMIN_CVAR"use to give Level")
    
SayText get_user_msgid("SayText")
    
g_Players get_maxplayers();
    
register_event("HLTV""Round_Start""a""1=0""2=0")
    
register_event("DeathMsg""Frags_Manager""a""1>0")     
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_dictionary("zp_level_system_xp.txt")
    
register_event("StatusValue","show_status","be","1=2","2!0")
           
register_event("StatusValue","hide_status","be","1=1","2=0")
    
g_ScreenFade get_user_msgid"ScreenFade" )

    
RegisterHam(Ham_CS_Player_ResetMaxSpeed"player""OnCBasePlayer_ResetMaxSpeed_P"true); 

    
register_plugin(PLUGINVERSIONAUTHOR)
}

public 
OnCBasePlayer_ResetMaxSpeed_Pid )
{
    if(
is_user_connected(id)) set_pev(idpev_maxspeedfm_get_user_maxspeed(id) + h_speed[id])
}

public 
Round_Start()
{
    for(new 
id=1;id<=g_Players;id++)
    
set_task(3.0"Level"id)
}

public 
Level(id)
{
    if(
is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
    {
        
g_trime[id] = false;
       
/* new n = 1;
        while( n < g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1
        }*/
        
h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        
h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        
h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        
z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new 
Float:speed[33];
        
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        
fm_set_user_healthidget_user_health(id) + h_health[id] )
        
set_pev(idpev_maxspeedspeed[id] )
        
emit_sound(idCHAN_STREAMsound_health1.0ATTN_NORM0PITCH_HIGH )
    }
}

public 
expa_give(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
    {                
        
console_print(id"У вас нет доступа к команде")
        return 
PLUGIN_HANDLED
    
}
    new 
target[32]
    new 
count[32]    
    
    
read_argv(1,target,31)
    
read_argv(2,count,31)
    new 
target_idname[32], nameid[32]
    
target_id find_player("bl"target)
    
get_user_name(target_idnamesizeof name 1
    
get_user_name(idnameidsizeof nameid 1)
    if(!
target_id
    {
        
console_print(id"Can't find that player")
        return 
PLUGIN_HANDLED
    
}
    if(
read_argc() != 3)
    return 
PLUGIN_HANDLED    

    
if(str_to_num(count) < (g_level_exp[target_id] - level_exp[target_id]) )
    {
        if(
str_to_num(count) == 0)
        
console_print(id"Exp Player %s in %i / %i"namelevel_exp[target_id], g_level_exp[target_id])
        else
        {
            
console_print(id"Player %s gives for %i exp, Her Maximum %i"namestr_to_num(count), g_level_exp[target_id])
            
level_exp[target_id] = level_exp[target_id] + str_to_num(count);
        }
        
    }
    else
    {
        
console_print(id"Maximum Exp in player %i"g_level_exp[target_id])
    }
    return 
PLUGIN_HANDLED
}

public 
level_give(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
    {                
        
console_print(id"У вас нет доступа к команде")
        return 
PLUGIN_HANDLED
    
}
    new 
target[32]
    new 
count[32]    
    
    
read_argv(1,target,31)
    
read_argv(2,count,31)
    new 
target_idname[32], level_id
    level_id 
str_to_num(count);
    
target_id find_player("bl"target)
    
get_user_name(target_idnamesizeof name 1
    if(!
target_id
    {
        
console_print(id"Can't find that player")
        return 
PLUGIN_HANDLED
    
}
    if(
read_argc() != 3)
    return 
PLUGIN_HANDLED    

    
if( ((g_level[target_id] + level_id) <=get_pcvar_num(g_level_max)) && (level_id != 0) && ((g_level[target_id] + level_id) > ) )
    {
        if(
level_id 0)
        {
            
g_level[target_id] = g_level[target_id] + level_id;
            
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_target_id)
                   
write_short(1<<12// duration
                
write_short(1// hold time
            
write_short(0x0000// fade type
            
write_byte(1// red
            
write_byte(200// green
            
write_byte(0// blue
            
write_byte(205// alpha
            
message_end()
            
emit_sound(target_idCHAN_STREAMsound_level_up1.0ATTN_NORM0PITCH_HIGH )
        }
        else
        {
            
g_level[target_id] = g_level[target_id] + level_id;
            
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_target_id)
                   
write_short(1<<12// duration
                
write_short(1// hold time
            
write_short(0x0000// fade type
            
write_byte(200// red
            
write_byte(40// green
            
write_byte(0// blue
            
write_byte(205// alpha
            
message_end()
        }
            
console_print(id"Player %s gives add %i level"namelevel_id)
    }
    else
        
console_print(id"Operation Invalid")
    return 
PLUGIN_HANDLED
}

public 
client_putinserver(id)
{
    
Level_Load(id)
    new 
name[32]
    
g_trime[id] = false;
    
g_bonus[id] = true;
    
nameid[id] = get_user_name(idnamesizeof name 1)
    if(
is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
    {
        
g_trime[id] = false;
        
/*new n = 1;
        while( n != g_level[id] )
        {
            h_health[id] = n * get_pcvar_num(g_h_health);
            h_speed[id] = n * get_pcvar_num(g_h_speed);
            h_damage[id] = n * get_pcvar_num(g_h_damage);
            z_damage[id] = n * get_pcvar_num(g_z_damage);
            n = n + 1;
        }*/
        
h_health[id] = g_level[id] * get_pcvar_num(g_h_health);
        
h_speed[id] = g_level[id] * get_pcvar_num(g_h_speed);
        
h_damage[id] = g_level[id] * get_pcvar_num(g_h_damage);
        
z_damage[id] = g_level[id] * get_pcvar_num(g_z_damage);
        new 
Float:speed[33];
        
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
        
fm_set_user_healthidget_user_health(id) + h_health[id] )
        
set_pev(idpev_maxspeedspeed[id] )
        
emit_sound(idCHAN_STREAMsound_health1.0ATTN_NORM0PITCH_HIGH )
    }

    if( 
g_level[id] == 0g_level[id] = 1;
    if( 
level_exp[id] == g_level[id] ) level_exp[id] = 0;
    if(
g_level[id] < get_pcvar_num(g_level_num))
    
g_levels[id] = get_pcvar_num(g_level_num);
    else
    {
        if(
g_level[id] != g_levels[id])
        {
            new 
1;
            while( 
g_level[id] > ( get_pcvar_num(g_level_num)) )
            {
                
1;
                
g_levels[id] = get_pcvar_num(g_level_num);
            }
        }
    }
    new 
1;
    while( 
g_level[id] != )
    {
    
1;
    
g_level_exp[id] = get_pcvar_num(g_frags_level);
    }
    
red random_num(10200)
    
green random_num(10200)
    
blue random_num(10200)
}

#if AMXX_VERSION_NUM < 183
public client_disconnect(id)
#else 
public client_disconnected(id)
#endif
{
    new 
name[32], player_nick[33]
    
player_nick[id] = get_user_name(idnamesizeof name 1)
    if(
player_nick[id] == nameid[id])
    
Level_Save(id)
    
    
g_trime[id] = false;
}

public 
hide_status(id)
{
        
set_hudmessage(0,0,0,0.0,0.0,00.00.010.00.04)
        
show_hudmessage(id,"")
}

public 
show_status(id)
{
        new 
name[32],pid read_data(2)
        
get_user_name(pid,name,31)
       if (!
zp_get_user_zombie(pid) && !zp_get_user_zombie(id) && (get_pcvar_num(g_player_name) == 1) )
    {
               
set_hudmessage(0,0,255,-1.0,0.60,10.013.00.010.014)
               
show_hudmessage(id,"%L"LANG_PLAYER"PLAYER_NAME_H"nameg_level[pid],                                 get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))
    }
     if(
zp_get_user_zombie(id) && zp_get_user_zombie(pid) && (get_pcvar_num(g_player_name) == 1) )
    {
        
set_hudmessage(255,0,0,-1.0,0.60,10.013.00.010.014)
        
show_hudmessage(id,"%L"LANG_PLAYER"PLAYER_NAME_Z"nameg_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_bits)
{
    if(
1<=attacker<=32)
    {
        if ( !
zp_get_user_zombie(attacker) && is_user_alive(attacker) )
            
SetHamParamFloat(4damage h_damage[attacker])
        else
        {
            if ( 
zp_get_user_zombie(attacker) && is_user_alive(attacker) && !zp_get_user_nemesis(attacker))
                
SetHamParamFloat(4damage z_damage[attacker]);
        }
    }
}

public 
say_info(id)
{
    new 
text[70], arg1[32], target[32], count[32]
    
read_args(textsizeof(text)-1);
    
remove_quotes(text);
    
arg1[0] = '^0';
    
target[0] = '^0';
    
count[0] = '^0';
    
parse(textarg1sizeof(arg1)-1targetsizeof(target)-1countsizeof(count)-1);
    if ( 
equali(arg1"info"4) )
    {
        
info_player(idtarget);
    }
    if ( 
equali(arg1"bonusme"7) && (get_pcvar_num(g_level_info) == 1))
    {
        
bonus_player(id);
    }
    if ( 
equali(arg1"levelexp"7) && (get_pcvar_num(g_level_info) == 1))
    {
        
expa_player(id);
    }
    return 
PLUGIN_CONTINUE;
}

public 
zp_extra_item_selected(iditemid)
{
    
Level_Save(id)
}

public 
zp_user_infected_pre(idinfector)
{
    if( 
is_user_alive(infector) && (level_exp[infector] < (g_level_exp[infector] - 1)) && zp_get_user_zombie(infector))
    {
        
level_exp[infector] = level_exp[infector] + 1;
        
Level_Save(infector);
    }
}

public 
info_player(idtarget[])
{
    new 
target_2;
    
target_2 find_player("bl"target)
    static 
name[32], nameid[32];
    
get_user_name(target_2namesizeof name 1)
    
get_user_name(idnameidsizeof nameid 1)
    if(!
target_2)
    {
        
ChatColor(id"!g[ZP] !y%L"LANG_PLAYER"LEVEL_INFO_NONAME")
        return 
PLUGIN_HANDLED
    
}

    if(
zp_get_user_zombie(id))
    {
        if(
id != target_2)
        {
            
ChatColor(id"!g[INFO]!t %L"LANG_PLAYER"LEVEL_INFOZM"nameg_level[target_2], z_damage[target_2], zp_get_user_ammo_packs(target_2) )
            
ChatColor(target_2"!g[INFO]!t%L "LANG_PLAYER"LEVEL_INFO_YOU"nameid)
        }
        else
        {
            
ChatColor(id"!g[INFOME]!t%L"LANG_PLAYER"LEVEL_INFOME_ZM"z_damage[target_2] )
        }
    }
    else
    {
        if(
id != target_2)
        {
            
ChatColor(id"!g[INFO]!t %L"LANG_PLAYER"LEVEL_INFO"nameg_level[target_2], h_damage[target_2],                             h_speed[target_2], h_health[target_2], zp_get_user_ammo_packs(target_2) )
            
ChatColor(target_2"!g[INFO]!t%L "LANG_PLAYER"LEVEL_INFO_YOU"nameid)
        }
        else
        {
            
ChatColor(id"!g[INFOME]!t%L"LANG_PLAYER"LEVEL_INFOME"h_damage[target_2], h_speed[target_2],                             h_health[target_2] )
        }
    }
    return 
PLUGIN_HANDLED
}

public 
bonus_player(id)
{
    if( (
g_level[id] >= g_levels[id]) && g_bonus[id] && get_pcvar_num(g_level_bonus))
    {
        
g_levels[id] = g_levels[id] * 2;
        
g_level_del[id] = g_level[id];
        
g_bonus[id] = false;
        
ChatColor(id"!g[BONUS]%L"LANG_PLAYER"LEVEL_MEGABONUS"g_level[id], get_pcvar_num(g_ammo) )
        
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + get_pcvar_num(g_ammo) )
        
Level_Save(id)
    }
    else
    {
        if(
g_level[id] < g_levels[id])
        {
            
g_levels[id] = get_pcvar_num(g_level_num);
            
ChatColor(id"!g[BONUS]!y%L"LANG_PLAYER"LEVEL_NOMEGABONUS"g_levels[id], get_pcvar_num(g_ammo) )
        }
        else
        {
            new 
1;
            while( 
g_level[id] > ( get_pcvar_num(g_level_num)) )
            {
                
g_levels[id] = get_pcvar_num(g_level_num);
                
1;
            }
            
ChatColor(id"!g[BONUS]!y%L"LANG_PLAYER"LEVEL_NOMEGABONUS"g_levels[id], get_pcvar_num(g_ammo) )
        }

        
Level_Save(id)
    }
    return 
PLUGIN_HANDLED
}

public 
expa_player(id)
{
    
ChatColor(id"!g[EXPA] %L"LANG_PLAYER"LEVEL_EXP"level_exp[id], g_level_exp[id])
    return 
PLUGIN_HANDLED
}

public 
level_status(id)
{
    if( 
is_user_alive(id))
    {
        switch( 
get_pcvar_num(g_hud_color) ) 
            { 
                    case 
1
                    { 
            
set_hudmessage(25520030.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
                    } 
                    case 
2
            {
            static 
rgbrandom_num(10200), random_num(0200), random_num(0200);
            
set_hudmessage(rgb0.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"Level: %i^n Exp: %i"g_level[id], level_exp[id])
            }
                    case 
3
            {
            
            
set_hudmessage(redgreenblue0.020.1501.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
            }
        }
    }


public 
Level_Save(id)
{
    new 
key[64], data[256], data_exp[256], key_exp[64]
    new 
name[33];
    
get_user_name(id,name,32)

    
format(key63"%s-/"name)
    
format(data255"%i#"g_level[id])

    
format(key_exp63"%s-/"name)
    
format(data_exp255"%i#"level_exp[id])

    
nvault_set(g_level_datakeydata)
    
nvault_set(g_exp_datakey_expdata_exp)
    return 
PLUGIN_CONTINUE;
}

public 
Level_Load(id)
{
    new 
key[64], data[256], data_exp[256], key_exp[64]
    new 
name[33];
    
get_user_name(id,name,32)

    
format(key63"%s-/"name)
    
format(data255"%i#"g_level[id])

    
format(key_exp63"%s-/"name)
    
format(data_exp255"%i#"level_exp[id])

    
nvault_get(g_level_datakeydata255)
    
nvault_get(g_exp_datakey_expdata_exp255)
    
replace_all(data255"#"" ")
    
replace_all(data_exp255"#"" ")

    new 
givelevel[32], give_exp[32]
    
parse(datagivelevel31)
    
parse(data_expgive_exp31)
    
g_level[id] = str_to_num(givelevel)
    
level_exp[id] = str_to_num(give_exp)

    
set_task(1.0"level_status"id__"b")
    return 
PLUGIN_CONTINUE;
}

public 
Frags_Manager()
{
    new 
aname[32], attackerattacker read_data(1)
    new 
y1;
    
get_user_name(attackeranamesizeof aname 1)
    if( ( 
level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) )
    {
        
g_bonus[attacker] = true;
        
g_level[attacker] = g_level[attacker] + 1;
        
level_exp[attacker] = 0;
        while( 
g_level[attacker] != )
        {
            
1;
            
g_level_exp[attacker] = get_pcvar_num(g_frags_level);
        }
        
message_begin(MSG_ONE_UNRELIABLEg_ScreenFade_attacker)
               
write_short(1<<12// duration
            
write_short(1// hold time
        
write_short(0x0000// fade type
        
write_byte(1// red
        
write_byte(200// green
        
write_byte(0// blue
        
write_byte(205// alpha
        
message_end()
        
emit_sound(attackerCHAN_STREAMsound_level_up1.0ATTN_NORM0PITCH_HIGH )
        
set_hudmessage(020000.650.500.03.02.01.0, -1)
        
show_hudmessage(0"%L"LANG_PLAYER"LEVEL_UP"anameg_level[attacker])
        if(
get_pcvar_num(g_give_ammo) == 1)
        {
            
ChatColor(attacker"!g[LEVEL] !y %L"LANG_PLAYER"BONUS_LEVEL"get_pcvar_num(g_give_ammopacks) )
            
zp_set_user_ammo_packs(attackerzp_get_user_ammo_packs(attacker) + get_pcvar_num(g_give_ammopacks) )
        }
        
Level_Save(attacker);
    }
    else
    {

        if(
g_level[attacker] == get_pcvar_num(g_level_max))
        
ChatColor(attacker"!g[LEVEL]!y %L"LANG_PLAYER"LEVEL_MAX"g_level[attacker] )
        
level_exp[attacker] = level_exp[attacker] + 1;
        
Level_Save(attacker);
    }
}

public 
zp_round_ended(winteam)
{
    for(new 
id=1;id<=g_Players;id++)
    
g_trime[id] = true;
}

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)

    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!t""^3"// Team Color
    
replace_all(msg190"!t2""^0"// Team2 Color

    
if (idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLESayText_players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
}  
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
sPed is offline
Reply



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 01:32.


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