Raised This Month: $ Target: $400
 0% 

Zombie Level Up System


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Merlin2010
Junior Member
Join Date: Apr 2013
Old 07-05-2014 , 06:40   Zombie Level Up System
Reply With Quote #1

hey guys,i get this error

HTML Code:
L 07/05/2014 - 16:38:01: [ZP] Invalid Player (0)
L 07/05/2014 - 16:38:01: [AMXX] Displaying debug trace (plugin "zp_level_system_xp.amxx")
L 07/05/2014 - 16:38:01: [AMXX] Run time error 10: native error (native "zp_get_user_zombie")
L 07/05/2014 - 16:38:01: [AMXX]    [0] zp_level_system_xp.sma::zp_user_infected_pre (line 340

this is the sma

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
#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""1")        // Сколько добавится экспы для получения след. уровня
    
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""100")        // Сколько давать аммопаков? (если выше установлено 1)

    
g_h_damage =         register_cvar("zp_level_h_damage""1")        // Увеличивать с каждым уровнем урон на Х у людей
    
g_h_health =         register_cvar("zp_level_h_health""5")        // Люди получают за каждый левел дополнительные Х хп
    
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""1")        // Показывать инфу, при наведении курсором на игрока?
    
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(PLUGINVERSIONAUTHOR)
}

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)
}

public 
client_disconnect(id)
{
    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);
    }
    else
    if (
zp_get_user_zombie(infector))
        
ChatColor(infector"!g[ZP] !y Killed Zombie")
}

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.8701.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.8701.01.10.00.0, -1)
            
show_hudmessage(id,"%L"LANG_PLAYER"LEVEL_STATUS"g_level[id], level_exp[id])
            }
                    case 
3
            {
            
            
set_hudmessage(redgreenblue0.020.8701.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 }
*/ 

can anybody help me?

Last edited by Merlin2010; 07-05-2014 at 06:50.
Merlin2010 is offline
 


Thread Tools
Display Modes

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

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

Forum Jump


All times are GMT -4. The time now is 21:07.


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