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

Help / Support [HELP] Tank zombie problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 04-12-2012 , 08:15   [HELP] Tank zombie problem
Reply With Quote #1

Ive got this error from
PHP Code:
L 04/12/2012 11:22:27: [ENGINEInvalid entity 88
L 04
/12/2012 11:22:27: [AMXXDisplaying debug trace (plugin "zp_zclass_tank.amxx")
L 04/12/2012 11:22:27: [AMXXRun time error 10native error (native "entity_get_string")
L 04/12/2012 11:22:27: [AMXX]    [0zp_zclass_tank.sma::RockTouch (line 109
this code
PHP Code:
#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

new const zclass_name[] = { "L4D Tank Zombie" 
new const 
zclass_info[] = { "\rChuluu shidej ammo oloh [R]" 
new const 
zclass_model[] = { "l4d_tank" 
new const 
zclass_clawmodel[] = { "v_tank.mdl" 
const 
zclass_health 5800 
const zclass_speed 240
const Float:zclass_gravity 1.0 
const Float:zclass_knockback 1.0  

new g_L4dTank

new g_trailSpriterockmodel
new g_trail[] = "sprites/xopom_trail.spr"
new rock_model[] = "models/rockgibs.mdl"
new rock_model2[] = "models/rockgibs.mdl"
new tank_rocklaunch[] = "zombie_plague/tank_rocklaunch.wav"


new g_power[33]

new 
cvar_rock_damagecvar_rock_rewardcvar_rockmodecvar_rockEnergyNesesarycvar_rock_speedcvar_reloadpower

public plugin_init()
{
    
register_plugin("[XopoM] ZClass: L4D Tank""1.2""x[L]eoNNN"
 
    
cvar_rock_speed register_cvar("zp_tank_rockspeed""700")
    
cvar_rock_damage register_cvar("zp_tank_rockdamage""40")
    
cvar_rock_reward register_cvar("zp_tank_rockreward""5")
    
cvar_rockmode register_cvar("zp_tank_rockmode""1")
    
cvar_rockEnergyNesesary register_cvar("zp_tank_rock_energynesesary""10")
    
cvar_reloadpower register_cvar("zp_tank_reload_power""1")
    
register_touch("rock_ent","*","RockTouch")
    
register_forward(FM_CmdStart"CmdStart" )


public 
plugin_precache()
{
    
g_L4dTank zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback
    
rockmodel precache_model(rock_model)
    
g_trailSprite precache_model(g_trail)
    
precache_sound(tank_rocklaunch)
}
    
public 
zp_user_infected_post idinfector )
{
             if (
zp_get_user_zombie_class(id) == g_L4dTank)
             {
        
print_chatColor(id"\g[XopoM]\n Ta\g R\n useg ashiglaj chuluu shidej ammo oloh bolomjtoi"
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
        
set_task(get_pcvar_float(cvar_reloadpower), "power1"id__"b")
             }
}  

public 
CmdStart( const id, const uc_handlerandom_seed )
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if(!
zp_get_user_zombie(id) || zp_get_user_nemesis(id))
        return 
FMRES_IGNORED;
        
    new 
button pev(idpev_button)
    new 
oldbutton pev(idpev_oldbuttons)
    
    if (
zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dTank))
        if(
oldbutton IN_RELOAD && !(button IN_RELOAD))
        {
            if(
g_power[id] >= get_pcvar_num(cvar_rockEnergyNesesary))
            {
                
MakeRock(id)
                
emit_sound(idCHAN_STREAMtank_rocklaunchVOL_NORMATTN_NORM0PITCH_NORM)
                
g_power[id] = 0
            
}
            else
            {
                
set_hudmessage(255000.00.606.03.0)
                
show_hudmessage(id"[XopoM] Chuluund shaardah energy [%d] | Tanii energy [%d]"get_pcvar_num(cvar_rockEnergyNesesary), g_power[id])
            }
            
        }
            
    return 
FMRES_IGNORED
}

public 
power1(id)
{
    
g_power[id] += 1
    
    
if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
    {
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
    }
}

public 
RockTouchRockEntTouched )
{
    if ( !
pev_valid RockEnt ) )
        return
        
    static Class[ 
32 ]
    
entity_get_stringTouchedEV_SZ_classname, Class, charsmax( Class ) )
    new 
Float:origin[3]
        
    
pev(Touched,pev_origin,origin)
    
    if( 
equal( Class, "player" ) )
        if (
is_user_alive(Touched))
        {
            if(!
zp_get_user_zombie(Touched))
            {
                new 
TankKiller entity_get_edictRockEntEV_ENT_owner )
                
                switch(
get_pcvar_num(cvar_rockmode))
                {
                    case 
1// Health
                    
{
                        new 
iHealth get_user_health(Touched)

                        if( 
iHealth >= && iHealth <= get_pcvar_num(cvar_rock_damage))
                        {
                            
ExecuteHamBHam_KilledTouchedTankKiller)
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                        else
                        {
                            
set_user_health(Touchedget_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                    }
                    case 
2// Kill
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                                
                        
ExecuteHamBHam_KilledTouchedTankKiller)
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                    }
                    case 
3//infect
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                            
                        
zp_infect_user(TouchedTankKiller11)
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))

                    }
                    case 
4//BadAim
                    
{
                        new 
Float:vec[3] = {100.0,100.0,100.0}
                        
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec
                        
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
set_task(1.50"EndVictimAim"Touched)
                    }
                }
            }
        }
        
    if(
equal(Class, "func_breakable") && entity_get_int(TouchedEV_INT_solid) != SOLID_NOT)
        
force_use(RockEntTouched)
        
    
remove_entity(RockEnt)
    
    if(!
is_user_alive(Touched))
        return
        
    static 
origin1[3]
    
get_user_origin(Touchedorigin1)
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITYorigin1);
    
write_byte(TE_BREAKMODEL); 
    
write_coord(origin1[0]);  
    
write_coord(origin1[1]);
    
write_coord(origin1[2] + 24); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(random_num(-50,50)); 
    
write_coord(random_num(-50,50)); 
    
write_coord(25);
    
write_byte(10); 
    
write_short(rockmodel); 
    
write_byte(10); 
    
write_byte(25);
    
write_byte(0x01); 
    
message_end();
}

public 
EndVictimAim(Touched)
{
    new 
Float:vec[3] = {-100.0,-100.0,-100.0}
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
}

public 
MakeRock(id)
{
            
    new 
Float:Origin[3]
    new 
Float:Velocity[3]
    new 
Float:vAngle[3]

    new 
RockSpeed get_pcvar_num(cvar_rock_speed)

    
entity_get_vector(idEV_VEC_origin Origin)
    
entity_get_vector(idEV_VEC_v_anglevAngle)

    new 
NewEnt create_entity("info_target")

    
entity_set_string(NewEntEV_SZ_classname"rock_ent")

    
entity_set_model(NewEntrock_model2)

    
entity_set_size(NewEntFloat:{-1.5, -1.5, -1.5}, Float:{1.51.51.5})

    
entity_set_origin(NewEntOrigin)
    
entity_set_vector(NewEntEV_VEC_anglesvAngle)
    
entity_set_int(NewEntEV_INT_solid2)

    
entity_set_int(NewEntEV_INT_rendermode5)
    
entity_set_float(NewEntEV_FL_renderamt200.0)
    
entity_set_float(NewEntEV_FL_scale1.00)

    
entity_set_int(NewEntEV_INT_movetype5)
    
entity_set_edict(NewEntEV_ENT_ownerid)

    
velocity_by_aim(idRockSpeed  Velocity)
    
entity_set_vector(NewEntEV_VEC_velocity ,Velocity)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW
    
write_short(NewEnt
    
write_short(g_trailSprite
    
write_byte(10
    
write_byte(10
    
write_byte(120
    
write_byte(120
    
write_byte(120
    
write_byte(200
    
message_end()
    
    return 
PLUGIN_HANDLED
}

stock print_chatColor(const id,const input[], any:...)
{
    new 
msg[191], players[32], count 1;
    
vformat(msg,190,input,3);
    
replace_all(msg,190,"\g","^4");// green
    
replace_all(msg,190,"\n","^1");// normal
    
replace_all(msg,190,"\t","^3");// team
    
    
if (idplayers[0] = id; else get_players(players,count,"ch");
    for (new 
i=0;i<count;i++)
    if (
is_user_connected(players[i]))
    {
        
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
        
write_byte(players[i]);
        
write_string(msg);
        
message_end();
    }

__________________
naSTR is offline
jc980
Veteran Member
Join Date: Jan 2010
Location: God is with us...
Old 04-12-2012 , 08:20   Re: [HELP] Tank zombie problem
Reply With Quote #2

after the error what HAPPENED NEXT?
__________________
jc980 is offline
H.RED.ZONE
Veteran Member
Join Date: Sep 2011
Location: Serbia, Belgrade
Old 04-12-2012 , 08:30   Re: [HELP] Tank zombie problem
Reply With Quote #3

Try
PHP Code:
#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

new const zclass_name[] = { "L4D Tank Zombie" 
new const 
zclass_info[] = { "\rChuluu shidej ammo oloh [R]" 
new const 
zclass_model[] = { "l4d_tank" 
new const 
zclass_clawmodel[] = { "v_tank.mdl" 
const 
zclass_health 5800 
const zclass_speed 240
const Float:zclass_gravity 1.0 
const Float:zclass_knockback 1.0  

new g_L4dTank

new g_trailSpriterockmodel
new g_trail[] = "sprites/xopom_trail.spr"
new rock_model[] = "models/rockgibs.mdl"
new rock_model2[] = "models/rockgibs.mdl"
new tank_rocklaunch[] = "zombie_plague/tank_rocklaunch.wav"


new g_power[33]

new 
cvar_rock_damagecvar_rock_rewardcvar_rockmodecvar_rockEnergyNesesarycvar_rock_speedcvar_reloadpower

public plugin_init()
{
    
register_plugin("[XopoM] ZClass: L4D Tank""1.2""x[L]eoNNN"
 
    
cvar_rock_speed register_cvar("zp_tank_rockspeed""700")
    
cvar_rock_damage register_cvar("zp_tank_rockdamage""40")
    
cvar_rock_reward register_cvar("zp_tank_rockreward""5")
    
cvar_rockmode register_cvar("zp_tank_rockmode""1")
    
cvar_rockEnergyNesesary register_cvar("zp_tank_rock_energynesesary""10")
    
cvar_reloadpower register_cvar("zp_tank_reload_power""1")
    
register_touch("rock_ent","*","RockTouch")
    
register_forward(FM_CmdStart"CmdStart" )


public 
plugin_precache()
{
    
g_L4dTank zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback
    
rockmodel precache_model(rock_model)
    
g_trailSprite precache_model(g_trail)
    
precache_sound(tank_rocklaunch)
}
    
public 
zp_user_infected_post idinfector )
{
             if (
zp_get_user_zombie_class(id) == g_L4dTank)
             {
        
print_chatColor(id"\g[XopoM]\n Ta\g R\n useg ashiglaj chuluu shidej ammo oloh bolomjtoi"
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
        
set_task(get_pcvar_float(cvar_reloadpower), "power1"id__"b")
             }
}  

public 
CmdStart( const id, const uc_handlerandom_seed )
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if(!
zp_get_user_zombie(id) || zp_get_user_nemesis(id))
        return 
FMRES_IGNORED;
        
    new 
button pev(idpev_button)
    new 
oldbutton pev(idpev_oldbuttons)
    
    if (
zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dTank))
        if(
oldbutton IN_RELOAD && !(button IN_RELOAD))
        {
            if(
g_power[id] >= get_pcvar_num(cvar_rockEnergyNesesary))
            {
                
MakeRock(id)
                
emit_sound(idCHAN_STREAMtank_rocklaunchVOL_NORMATTN_NORM0PITCH_NORM)
                
g_power[id] = 0
            
}
            else
            {
                
set_hudmessage(255000.00.606.03.0)
                
show_hudmessage(id"[XopoM] Chuluund shaardah energy [%d] | Tanii energy [%d]"get_pcvar_num(cvar_rockEnergyNesesary), g_power[id])
            }
            
        }
            
    return 
FMRES_IGNORED
}

public 
power1(id)
{
    
g_power[id] += 1
    
    
if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
    {
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
    }
}

public 
RockTouchRockEntTouched )
{
    if ( !
pev_valid RockEnt ) )
        return
     
    if ( 
pev_valid RockEnt ) )
    {
    static Class[ 
32 ]
    
entity_get_stringTouchedEV_SZ_classname, Class, charsmax( Class ) )
    new 
Float:origin[3]
        
    
pev(Touched,pev_origin,origin)
    
    if( 
equal( Class, "player" ) )
        if (
is_user_alive(Touched))
        {
            if(!
zp_get_user_zombie(Touched))
            {
                new 
TankKiller entity_get_edictRockEntEV_ENT_owner )
                
                switch(
get_pcvar_num(cvar_rockmode))
                {
                    case 
1// Health
                    
{
                        new 
iHealth get_user_health(Touched)

                        if( 
iHealth >= && iHealth <= get_pcvar_num(cvar_rock_damage))
                        {
                            
ExecuteHamBHam_KilledTouchedTankKiller)
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                        else
                        {
                            
set_user_health(Touchedget_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                    }
                    case 
2// Kill
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                                
                        
ExecuteHamBHam_KilledTouchedTankKiller)
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                    }
                    case 
3//infect
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                            
                        
zp_infect_user(TouchedTankKiller11)
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))

                    }
                    case 
4//BadAim
                    
{
                        new 
Float:vec[3] = {100.0,100.0,100.0}
                        
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec
                        
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
set_task(1.50"EndVictimAim"Touched)
                    }
                }
            }
        }
        
    if(
equal(Class, "func_breakable") && entity_get_int(TouchedEV_INT_solid) != SOLID_NOT)
        
force_use(RockEntTouched)
        
    
remove_entity(RockEnt)
    
    if(!
is_user_alive(Touched))
        return
        
    static 
origin1[3]
    
get_user_origin(Touchedorigin1)
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITYorigin1);
    
write_byte(TE_BREAKMODEL); 
    
write_coord(origin1[0]);  
    
write_coord(origin1[1]);
    
write_coord(origin1[2] + 24); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(random_num(-50,50)); 
    
write_coord(random_num(-50,50)); 
    
write_coord(25);
    
write_byte(10); 
    
write_short(rockmodel); 
    
write_byte(10); 
    
write_byte(25);
    
write_byte(0x01); 
    
message_end();
   }
}

public 
EndVictimAim(Touched)
{
    new 
Float:vec[3] = {-100.0,-100.0,-100.0}
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
}

public 
MakeRock(id)
{
            
    new 
Float:Origin[3]
    new 
Float:Velocity[3]
    new 
Float:vAngle[3]

    new 
RockSpeed get_pcvar_num(cvar_rock_speed)

    
entity_get_vector(idEV_VEC_origin Origin)
    
entity_get_vector(idEV_VEC_v_anglevAngle)

    new 
NewEnt create_entity("info_target")

    
entity_set_string(NewEntEV_SZ_classname"rock_ent")

    
entity_set_model(NewEntrock_model2)

    
entity_set_size(NewEntFloat:{-1.5, -1.5, -1.5}, Float:{1.51.51.5})

    
entity_set_origin(NewEntOrigin)
    
entity_set_vector(NewEntEV_VEC_anglesvAngle)
    
entity_set_int(NewEntEV_INT_solid2)

    
entity_set_int(NewEntEV_INT_rendermode5)
    
entity_set_float(NewEntEV_FL_renderamt200.0)
    
entity_set_float(NewEntEV_FL_scale1.00)

    
entity_set_int(NewEntEV_INT_movetype5)
    
entity_set_edict(NewEntEV_ENT_ownerid)

    
velocity_by_aim(idRockSpeed  Velocity)
    
entity_set_vector(NewEntEV_VEC_velocity ,Velocity)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW
    
write_short(NewEnt
    
write_short(g_trailSprite
    
write_byte(10
    
write_byte(10
    
write_byte(120
    
write_byte(120
    
write_byte(120
    
write_byte(200
    
message_end()
    
    return 
PLUGIN_HANDLED
}

stock print_chatColor(const id,const input[], any:...)
{
    new 
msg[191], players[32], count 1;
    
vformat(msg,190,input,3);
    
replace_all(msg,190,"\g","^4");// green
    
replace_all(msg,190,"\n","^1");// normal
    
replace_all(msg,190,"\t","^3");// team
    
    
if (idplayers[0] = id; else get_players(players,count,"ch");
    for (new 
i=0;i<count;i++)
    if (
is_user_connected(players[i]))
    {
        
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
        
write_byte(players[i]);
        
write_string(msg);
        
message_end();
    }

__________________
H.RED.ZONE is offline
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 04-12-2012 , 12:54   Re: [HELP] Tank zombie problem
Reply With Quote #4

Quote:
Originally Posted by jc980 View Post
after the error what HAPPENED NEXT?
just giving me tons of this error.
__________________
naSTR is offline
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 04-12-2012 , 12:55   Re: [HELP] Tank zombie problem
Reply With Quote #5

Quote:
Originally Posted by H.RED.ZONE View Post
Try
PHP Code:
#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

new const zclass_name[] = { "L4D Tank Zombie" 
new const 
zclass_info[] = { "\rChuluu shidej ammo oloh [R]" 
new const 
zclass_model[] = { "l4d_tank" 
new const 
zclass_clawmodel[] = { "v_tank.mdl" 
const 
zclass_health 5800 
const zclass_speed 240
const Float:zclass_gravity 1.0 
const Float:zclass_knockback 1.0  

new g_L4dTank

new g_trailSpriterockmodel
new g_trail[] = "sprites/xopom_trail.spr"
new rock_model[] = "models/rockgibs.mdl"
new rock_model2[] = "models/rockgibs.mdl"
new tank_rocklaunch[] = "zombie_plague/tank_rocklaunch.wav"


new g_power[33]

new 
cvar_rock_damagecvar_rock_rewardcvar_rockmodecvar_rockEnergyNesesarycvar_rock_speedcvar_reloadpower

public plugin_init()
{
    
register_plugin("[XopoM] ZClass: L4D Tank""1.2""x[L]eoNNN"
 
    
cvar_rock_speed register_cvar("zp_tank_rockspeed""700")
    
cvar_rock_damage register_cvar("zp_tank_rockdamage""40")
    
cvar_rock_reward register_cvar("zp_tank_rockreward""5")
    
cvar_rockmode register_cvar("zp_tank_rockmode""1")
    
cvar_rockEnergyNesesary register_cvar("zp_tank_rock_energynesesary""10")
    
cvar_reloadpower register_cvar("zp_tank_reload_power""1")
    
register_touch("rock_ent","*","RockTouch")
    
register_forward(FM_CmdStart"CmdStart" )


public 
plugin_precache()
{
    
g_L4dTank zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback
    
rockmodel precache_model(rock_model)
    
g_trailSprite precache_model(g_trail)
    
precache_sound(tank_rocklaunch)
}
    
public 
zp_user_infected_post idinfector )
{
             if (
zp_get_user_zombie_class(id) == g_L4dTank)
             {
        
print_chatColor(id"\g[XopoM]\n Ta\g R\n useg ashiglaj chuluu shidej ammo oloh bolomjtoi"
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
        
set_task(get_pcvar_float(cvar_reloadpower), "power1"id__"b")
             }
}  

public 
CmdStart( const id, const uc_handlerandom_seed )
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if(!
zp_get_user_zombie(id) || zp_get_user_nemesis(id))
        return 
FMRES_IGNORED;
        
    new 
button pev(idpev_button)
    new 
oldbutton pev(idpev_oldbuttons)
    
    if (
zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dTank))
        if(
oldbutton IN_RELOAD && !(button IN_RELOAD))
        {
            if(
g_power[id] >= get_pcvar_num(cvar_rockEnergyNesesary))
            {
                
MakeRock(id)
                
emit_sound(idCHAN_STREAMtank_rocklaunchVOL_NORMATTN_NORM0PITCH_NORM)
                
g_power[id] = 0
            
}
            else
            {
                
set_hudmessage(255000.00.606.03.0)
                
show_hudmessage(id"[XopoM] Chuluund shaardah energy [%d] | Tanii energy [%d]"get_pcvar_num(cvar_rockEnergyNesesary), g_power[id])
            }
            
        }
            
    return 
FMRES_IGNORED
}

public 
power1(id)
{
    
g_power[id] += 1
    
    
if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
    {
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
    }
}

public 
RockTouchRockEntTouched )
{
    if ( !
pev_valid RockEnt ) )
        return
     
    if ( 
pev_valid RockEnt ) )
    {
    static Class[ 
32 ]
    
entity_get_stringTouchedEV_SZ_classname, Class, charsmax( Class ) )
    new 
Float:origin[3]
        
    
pev(Touched,pev_origin,origin)
    
    if( 
equal( Class, "player" ) )
        if (
is_user_alive(Touched))
        {
            if(!
zp_get_user_zombie(Touched))
            {
                new 
TankKiller entity_get_edictRockEntEV_ENT_owner )
                
                switch(
get_pcvar_num(cvar_rockmode))
                {
                    case 
1// Health
                    
{
                        new 
iHealth get_user_health(Touched)

                        if( 
iHealth >= && iHealth <= get_pcvar_num(cvar_rock_damage))
                        {
                            
ExecuteHamBHam_KilledTouchedTankKiller)
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                        else
                        {
                            
set_user_health(Touchedget_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                    }
                    case 
2// Kill
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                                
                        
ExecuteHamBHam_KilledTouchedTankKiller)
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                    }
                    case 
3//infect
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                            
                        
zp_infect_user(TouchedTankKiller11)
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))

                    }
                    case 
4//BadAim
                    
{
                        new 
Float:vec[3] = {100.0,100.0,100.0}
                        
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec
                        
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
set_task(1.50"EndVictimAim"Touched)
                    }
                }
            }
        }
        
    if(
equal(Class, "func_breakable") && entity_get_int(TouchedEV_INT_solid) != SOLID_NOT)
        
force_use(RockEntTouched)
        
    
remove_entity(RockEnt)
    
    if(!
is_user_alive(Touched))
        return
        
    static 
origin1[3]
    
get_user_origin(Touchedorigin1)
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITYorigin1);
    
write_byte(TE_BREAKMODEL); 
    
write_coord(origin1[0]);  
    
write_coord(origin1[1]);
    
write_coord(origin1[2] + 24); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(random_num(-50,50)); 
    
write_coord(random_num(-50,50)); 
    
write_coord(25);
    
write_byte(10); 
    
write_short(rockmodel); 
    
write_byte(10); 
    
write_byte(25);
    
write_byte(0x01); 
    
message_end();
   }
}

public 
EndVictimAim(Touched)
{
    new 
Float:vec[3] = {-100.0,-100.0,-100.0}
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
}

public 
MakeRock(id)
{
            
    new 
Float:Origin[3]
    new 
Float:Velocity[3]
    new 
Float:vAngle[3]

    new 
RockSpeed get_pcvar_num(cvar_rock_speed)

    
entity_get_vector(idEV_VEC_origin Origin)
    
entity_get_vector(idEV_VEC_v_anglevAngle)

    new 
NewEnt create_entity("info_target")

    
entity_set_string(NewEntEV_SZ_classname"rock_ent")

    
entity_set_model(NewEntrock_model2)

    
entity_set_size(NewEntFloat:{-1.5, -1.5, -1.5}, Float:{1.51.51.5})

    
entity_set_origin(NewEntOrigin)
    
entity_set_vector(NewEntEV_VEC_anglesvAngle)
    
entity_set_int(NewEntEV_INT_solid2)

    
entity_set_int(NewEntEV_INT_rendermode5)
    
entity_set_float(NewEntEV_FL_renderamt200.0)
    
entity_set_float(NewEntEV_FL_scale1.00)

    
entity_set_int(NewEntEV_INT_movetype5)
    
entity_set_edict(NewEntEV_ENT_ownerid)

    
velocity_by_aim(idRockSpeed  Velocity)
    
entity_set_vector(NewEntEV_VEC_velocity ,Velocity)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW
    
write_short(NewEnt
    
write_short(g_trailSprite
    
write_byte(10
    
write_byte(10
    
write_byte(120
    
write_byte(120
    
write_byte(120
    
write_byte(200
    
message_end()
    
    return 
PLUGIN_HANDLED
}

stock print_chatColor(const id,const input[], any:...)
{
    new 
msg[191], players[32], count 1;
    
vformat(msg,190,input,3);
    
replace_all(msg,190,"\g","^4");// green
    
replace_all(msg,190,"\n","^1");// normal
    
replace_all(msg,190,"\t","^3");// team
    
    
if (idplayers[0] = id; else get_players(players,count,"ch");
    for (new 
i=0;i<count;i++)
    if (
is_user_connected(players[i]))
    {
        
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
        
write_byte(players[i]);
        
write_string(msg);
        
message_end();
    }

okay.
__________________
naSTR is offline
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 04-14-2012 , 08:18   Re: [HELP] Tank zombie problem
Reply With Quote #6

got this error today
Quote:
L 04/14/2012 - 19:46:05: [ENGINE] Invalid entity 264
L 04/14/2012 - 19:46:05: [AMXX] Displaying debug trace (plugin "zp_zclass_tank.amxx")
L 04/14/2012 - 19:46:05: [AMXX] Run time error 10: native error (native "entity_get_string")
L 04/14/2012 - 19:46:05: [AMXX] [0] zp_zclass_tank.sma::RockTouch (line 111)
__________________
naSTR is offline
H.RED.ZONE
Veteran Member
Join Date: Sep 2011
Location: Serbia, Belgrade
Old 04-14-2012 , 09:14   Re: [HELP] Tank zombie problem
Reply With Quote #7

Quote:
Originally Posted by naSTR View Post
got this error today
Here.
PHP Code:
#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

new const zclass_name[] = { "L4D Tank Zombie" 
new const 
zclass_info[] = { "\rChuluu shidej ammo oloh [R]" 
new const 
zclass_model[] = { "l4d_tank" 
new const 
zclass_clawmodel[] = { "v_tank.mdl" 
const 
zclass_health 5800 
const zclass_speed 240
const Float:zclass_gravity 1.0 
const Float:zclass_knockback 1.0  

new g_L4dTank

new g_trailSpriterockmodel
new g_trail[] = "sprites/xopom_trail.spr"
new rock_model[] = "models/rockgibs.mdl"
new rock_model2[] = "models/rockgibs.mdl"
new tank_rocklaunch[] = "zombie_plague/tank_rocklaunch.wav"


new g_power[33]

new 
cvar_rock_damagecvar_rock_rewardcvar_rockmodecvar_rockEnergyNesesarycvar_rock_speedcvar_reloadpower

public plugin_init()
{
    
register_plugin("[XopoM] ZClass: L4D Tank""1.2""x[L]eoNNN"
 
    
cvar_rock_speed register_cvar("zp_tank_rockspeed""700")
    
cvar_rock_damage register_cvar("zp_tank_rockdamage""40")
    
cvar_rock_reward register_cvar("zp_tank_rockreward""5")
    
cvar_rockmode register_cvar("zp_tank_rockmode""1")
    
cvar_rockEnergyNesesary register_cvar("zp_tank_rock_energynesesary""10")
    
cvar_reloadpower register_cvar("zp_tank_reload_power""1")
    
register_touch("rock_ent","*","RockTouch")
    
register_forward(FM_CmdStart"CmdStart" )


public 
plugin_precache()
{
    
g_L4dTank zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback
    
rockmodel precache_model(rock_model)
    
g_trailSprite precache_model(g_trail)
    
precache_sound(tank_rocklaunch)
}
    
public 
zp_user_infected_post idinfector )
{
             if (
zp_get_user_zombie_class(id) == g_L4dTank)
             {
        
print_chatColor(id"\g[XopoM]\n Ta\g R\n useg ashiglaj chuluu shidej ammo oloh bolomjtoi"
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
        
set_task(get_pcvar_float(cvar_reloadpower), "power1"id__"b")
             }
}  

public 
CmdStart( const id, const uc_handlerandom_seed )
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if(!
zp_get_user_zombie(id) || zp_get_user_nemesis(id))
        return 
FMRES_IGNORED;
        
    new 
button pev(idpev_button)
    new 
oldbutton pev(idpev_oldbuttons)
    
    if (
zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dTank))
        if(
oldbutton IN_RELOAD && !(button IN_RELOAD))
        {
            if(
g_power[id] >= get_pcvar_num(cvar_rockEnergyNesesary))
            {
                
MakeRock(id)
                
emit_sound(idCHAN_STREAMtank_rocklaunchVOL_NORMATTN_NORM0PITCH_NORM)
                
g_power[id] = 0
            
}
            else
            {
                
set_hudmessage(255000.00.606.03.0)
                
show_hudmessage(id"[XopoM] Chuluund shaardah energy [%d] | Tanii energy [%d]"get_pcvar_num(cvar_rockEnergyNesesary), g_power[id])
            }
            
        }
            
    return 
FMRES_IGNORED
}

public 
power1(id)
{
    
g_power[id] += 1
    
    
if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
    {
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
    }
}

public 
RockTouchRockEntTouched )
{
    if ( !
pev_valid RockEnt ) )
        return
     
    if ( 
pev_valid RockEnt ) && pev_valid Touched ))
    {
    static Class[ 
32 ]
    
entity_get_stringTouchedEV_SZ_classname, Class, charsmax( Class ) )
    new 
Float:origin[3]
        
    
pev(Touched,pev_origin,origin)
    
    if( 
equal( Class, "player" ) )
        if (
is_user_alive(Touched))
        {
            if(!
zp_get_user_zombie(Touched))
            {
                new 
TankKiller entity_get_edictRockEntEV_ENT_owner )
                
                switch(
get_pcvar_num(cvar_rockmode))
                {
                    case 
1// Health
                    
{
                        new 
iHealth get_user_health(Touched)

                        if( 
iHealth >= && iHealth <= get_pcvar_num(cvar_rock_damage))
                        {
                            
ExecuteHamBHam_KilledTouchedTankKiller)
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                        else
                        {
                            
set_user_health(Touchedget_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
                            
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                    }
                    case 
2// Kill
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                                
                        
ExecuteHamBHam_KilledTouchedTankKiller)
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                    }
                    case 
3//infect
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                            
                        
zp_infect_user(TouchedTankKiller11)
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))

                    }
                    case 
4//BadAim
                    
{
                        new 
Float:vec[3] = {100.0,100.0,100.0}
                        
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec)
                        
entity_set_vector(Touched,EV_VEC_punchangle,vec
                        
                        
print_chatColor(TankKiller"\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa"get_pcvar_num(cvar_rock_reward))
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
set_task(1.50"EndVictimAim"Touched)
                    }
                }
            }
        }
        
    if(
equal(Class, "func_breakable") && entity_get_int(TouchedEV_INT_solid) != SOLID_NOT)
        
force_use(RockEntTouched)
        
    
remove_entity(RockEnt)
    
    if(!
is_user_alive(Touched))
        return
        
    static 
origin1[3]
    
get_user_origin(Touchedorigin1)
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITYorigin1);
    
write_byte(TE_BREAKMODEL); 
    
write_coord(origin1[0]);  
    
write_coord(origin1[1]);
    
write_coord(origin1[2] + 24); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(16); 
    
write_coord(random_num(-50,50)); 
    
write_coord(random_num(-50,50)); 
    
write_coord(25);
    
write_byte(10); 
    
write_short(rockmodel); 
    
write_byte(10); 
    
write_byte(25);
    
write_byte(0x01); 
    
message_end();
   }
}

public 
EndVictimAim(Touched)
{
    new 
Float:vec[3] = {-100.0,-100.0,-100.0}
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)  
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
    
entity_set_vector(Touched,EV_VEC_punchangle,vec)
}

public 
MakeRock(id)
{
            
    new 
Float:Origin[3]
    new 
Float:Velocity[3]
    new 
Float:vAngle[3]

    new 
RockSpeed get_pcvar_num(cvar_rock_speed)

    
entity_get_vector(idEV_VEC_origin Origin)
    
entity_get_vector(idEV_VEC_v_anglevAngle)

    new 
NewEnt create_entity("info_target")

    
entity_set_string(NewEntEV_SZ_classname"rock_ent")

    
entity_set_model(NewEntrock_model2)

    
entity_set_size(NewEntFloat:{-1.5, -1.5, -1.5}, Float:{1.51.51.5})

    
entity_set_origin(NewEntOrigin)
    
entity_set_vector(NewEntEV_VEC_anglesvAngle)
    
entity_set_int(NewEntEV_INT_solid2)

    
entity_set_int(NewEntEV_INT_rendermode5)
    
entity_set_float(NewEntEV_FL_renderamt200.0)
    
entity_set_float(NewEntEV_FL_scale1.00)

    
entity_set_int(NewEntEV_INT_movetype5)
    
entity_set_edict(NewEntEV_ENT_ownerid)

    
velocity_by_aim(idRockSpeed  Velocity)
    
entity_set_vector(NewEntEV_VEC_velocity ,Velocity)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW
    
write_short(NewEnt
    
write_short(g_trailSprite
    
write_byte(10
    
write_byte(10
    
write_byte(120
    
write_byte(120
    
write_byte(120
    
write_byte(200
    
message_end()
    
    return 
PLUGIN_HANDLED
}

stock print_chatColor(const id,const input[], any:...)
{
    new 
msg[191], players[32], count 1;
    
vformat(msg,190,input,3);
    
replace_all(msg,190,"\g","^4");// green
    
replace_all(msg,190,"\n","^1");// normal
    
replace_all(msg,190,"\t","^3");// team
    
    
if (idplayers[0] = id; else get_players(players,count,"ch");
    for (new 
i=0;i<count;i++)
    if (
is_user_connected(players[i]))
    {
        
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
        
write_byte(players[i]);
        
write_string(msg);
        
message_end();
    }

__________________
H.RED.ZONE is offline
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 04-24-2012 , 10:53   Re: [HELP] Tank zombie problem
Reply With Quote #8

Now the rock not dissapearing. But when someone touch the rock even zombie then dissapears. Look at the pic.

Attached Thumbnails
Click image for larger version

Name:	l4d.JPG
Views:	276
Size:	25.4 KB
ID:	102666  
__________________

Last edited by naSTR; 05-07-2012 at 04:40.
naSTR is offline
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 06-12-2012 , 10:15   Re: [HELP] Tank zombie problem
Reply With Quote #9

Getting this error almost everyday
Code:
L 06/12/2012 - 20:30:26: [ENGINE] Invalid entity 277
L 06/12/2012 - 20:30:26: [AMXX] Displaying debug trace (plugin "zp_zclass_tank.amxx")
L 06/12/2012 - 20:30:26: [AMXX] Run time error 10: native error (native "entity_get_string")
L 06/12/2012 - 20:30:26: [AMXX]    [0] zp_zclass_tank.sma::RockTouch (line 109)
from this
Code:
#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

new const zclass_name[] = { "L4D Tank Zombie" } 
new const zclass_info[] = { "\rChuluu shidej ammo oloh [R]" } 
new const zclass_model[] = { "l4d_tank" } 
new const zclass_clawmodel[] = { "v_tank.mdl" } 
const zclass_health = 5800 
const zclass_speed = 240
const Float:zclass_gravity = 1.0 
const Float:zclass_knockback = 1.0  

new g_L4dTank

new g_trailSprite, rockmodel
new g_trail[] = "sprites/xopom_trail.spr"
new rock_model[] = "models/rockgibs.mdl"
new rock_model2[] = "models/rockgibs.mdl"
new tank_rocklaunch[] = "zombie_plague/tank_rocklaunch.wav"


new g_power[33]

new cvar_rock_damage, cvar_rock_reward, cvar_rockmode, cvar_rockEnergyNesesary, cvar_rock_speed, cvar_reloadpower

public plugin_init()
{
    register_plugin("[XopoM] ZClass: L4D Tank", "1.2", "x[L]eoNNN") 
 
    cvar_rock_speed = register_cvar("zp_tank_rockspeed", "700")
    cvar_rock_damage = register_cvar("zp_tank_rockdamage", "40")
    cvar_rock_reward = register_cvar("zp_tank_rockreward", "5")
    cvar_rockmode = register_cvar("zp_tank_rockmode", "1")
    cvar_rockEnergyNesesary = register_cvar("zp_tank_rock_energynesesary", "10")
    cvar_reloadpower = register_cvar("zp_tank_reload_power", "1")
    register_touch("rock_ent","*","RockTouch")
    register_forward(FM_CmdStart, "CmdStart" )
} 

public plugin_precache()
{
    g_L4dTank = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) 
    rockmodel = precache_model(rock_model)
    g_trailSprite = precache_model(g_trail)
    precache_sound(tank_rocklaunch)
}
    
public zp_user_infected_post ( id, infector )
{
             if (zp_get_user_zombie_class(id) == g_L4dTank)
             {
        print_chatColor(id, "\g[XopoM]\n Ta\g R\n useg ashiglaj chuluu shidej ammo oloh bolomjtoi") 
        g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
        set_task(get_pcvar_float(cvar_reloadpower), "power1", id, _, _, "b")
             }
}  

public CmdStart( const id, const uc_handle, random_seed )
{
    if(!is_user_alive(id))
        return FMRES_IGNORED;
    
    if(!zp_get_user_zombie(id) || zp_get_user_nemesis(id))
        return FMRES_IGNORED;
        
    new button = pev(id, pev_button)
    new oldbutton = pev(id, pev_oldbuttons)
    
    if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dTank))
        if(oldbutton & IN_RELOAD && !(button & IN_RELOAD))
        {
            if(g_power[id] >= get_pcvar_num(cvar_rockEnergyNesesary))
            {
                MakeRock(id)
                emit_sound(id, CHAN_STREAM, tank_rocklaunch, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
                g_power[id] = 0
            }
            else
            {
                set_hudmessage(255, 0, 0, 0.0, 0.6, 0, 6.0, 3.0)
                show_hudmessage(id, "[XopoM] Chuluund shaardah energy [%d] | Tanii energy [%d]", get_pcvar_num(cvar_rockEnergyNesesary), g_power[id])
            }
            
        }
            
    return FMRES_IGNORED
}

public power1(id)
{
    g_power[id] += 1
    
    if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
    {
        g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
    }
}

public RockTouch( RockEnt, Touched )
{
    if ( !pev_valid ( RockEnt ) )
        return
     
    if ( pev_valid ( RockEnt ) && pev_valid ( Touched ))
    {
    static Class[ 32 ]
    entity_get_string( Touched, EV_SZ_classname, Class, charsmax( Class ) )
    new Float:origin[3]
        
    pev(Touched,pev_origin,origin)
    
    if( equal( Class, "player" ) )
        if (is_user_alive(Touched))
        {
            if(!zp_get_user_zombie(Touched))
            {
                new TankKiller = entity_get_edict( RockEnt, EV_ENT_owner )
                
                switch(get_pcvar_num(cvar_rockmode))
                {
                    case 1: // Health
                    {
                        new iHealth = get_user_health(Touched)

                        if( iHealth >= 1 && iHealth <= get_pcvar_num(cvar_rock_damage))
                        {
                            ExecuteHamB( Ham_Killed, Touched, TankKiller, 0 )
                            print_chatColor(TankKiller, "\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa", get_pcvar_num(cvar_rock_reward))
                            zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                        else
                        {
                            set_user_health(Touched, get_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
                            print_chatColor(TankKiller, "\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa", get_pcvar_num(cvar_rock_reward))
                            zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                    }
                    case 2: // Kill
                    {
                        if(zp_get_user_survivor(Touched))
                            return
                                
                        ExecuteHamB( Ham_Killed, Touched, TankKiller, 0 )
                        zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        print_chatColor(TankKiller, "\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa", get_pcvar_num(cvar_rock_reward))
                    }
                    case 3: //infect
                    {
                        if(zp_get_user_survivor(Touched))
                            return
                            
                        zp_infect_user(Touched, TankKiller, 1, 1)
                        print_chatColor(TankKiller, "\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa", get_pcvar_num(cvar_rock_reward))
                        zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))

                    }
                    case 4: //BadAim
                    {
                        new Float:vec[3] = {100.0,100.0,100.0}
                        
                        entity_set_vector(Touched,EV_VEC_punchangle,vec)  
                        entity_set_vector(Touched,EV_VEC_punchangle,vec)
                        entity_set_vector(Touched,EV_VEC_punchangle,vec) 
                        
                        print_chatColor(TankKiller, "\g[XopoM]\n Ta \t%d\n ammo bagts huleen avlaa", get_pcvar_num(cvar_rock_reward))
                        zp_set_user_ammo_packs(TankKiller, zp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        set_task(1.50, "EndVictimAim", Touched)
                    }
                }
            }
        }
        
    if(equal(Class, "func_breakable") && entity_get_int(Touched, EV_INT_solid) != SOLID_NOT)
        force_use(RockEnt, Touched)
        
    remove_entity(RockEnt)
    
    if(!is_user_alive(Touched))
        return
        
    static origin1[3]
    get_user_origin(Touched, origin1)
    
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY, origin1);
    write_byte(TE_BREAKMODEL); 
    write_coord(origin1[0]);  
    write_coord(origin1[1]);
    write_coord(origin1[2] + 24); 
    write_coord(16); 
    write_coord(16); 
    write_coord(16); 
    write_coord(random_num(-50,50)); 
    write_coord(random_num(-50,50)); 
    write_coord(25);
    write_byte(10); 
    write_short(rockmodel); 
    write_byte(10); 
    write_byte(25);
    write_byte(0x01); 
    message_end();
   }
}

public EndVictimAim(Touched)
{
    new Float:vec[3] = {-100.0,-100.0,-100.0}
    entity_set_vector(Touched,EV_VEC_punchangle,vec)  
    entity_set_vector(Touched,EV_VEC_punchangle,vec)
    entity_set_vector(Touched,EV_VEC_punchangle,vec)
}

public MakeRock(id)
{
            
    new Float:Origin[3]
    new Float:Velocity[3]
    new Float:vAngle[3]

    new RockSpeed = get_pcvar_num(cvar_rock_speed)

    entity_get_vector(id, EV_VEC_origin , Origin)
    entity_get_vector(id, EV_VEC_v_angle, vAngle)

    new NewEnt = create_entity("info_target")

    entity_set_string(NewEnt, EV_SZ_classname, "rock_ent")

    entity_set_model(NewEnt, rock_model2)

    entity_set_size(NewEnt, Float:{-1.5, -1.5, -1.5}, Float:{1.5, 1.5, 1.5})

    entity_set_origin(NewEnt, Origin)
    entity_set_vector(NewEnt, EV_VEC_angles, vAngle)
    entity_set_int(NewEnt, EV_INT_solid, 2)

    entity_set_int(NewEnt, EV_INT_rendermode, 5)
    entity_set_float(NewEnt, EV_FL_renderamt, 200.0)
    entity_set_float(NewEnt, EV_FL_scale, 1.00)

    entity_set_int(NewEnt, EV_INT_movetype, 5)
    entity_set_edict(NewEnt, EV_ENT_owner, id)

    velocity_by_aim(id, RockSpeed  , Velocity)
    entity_set_vector(NewEnt, EV_VEC_velocity ,Velocity)
    
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(TE_BEAMFOLLOW) 
    write_short(NewEnt) 
    write_short(g_trailSprite) 
    write_byte(10) 
    write_byte(10) 
    write_byte(120) 
    write_byte(120) 
    write_byte(120) 
    write_byte(200) 
    message_end()
    
    return PLUGIN_HANDLED
}

stock print_chatColor(const id,const input[], any:...)
{
    new msg[191], players[32], count = 1;
    vformat(msg,190,input,3);
    replace_all(msg,190,"\g","^4");// green
    replace_all(msg,190,"\n","^1");// normal
    replace_all(msg,190,"\t","^3");// team
    
    if (id) players[0] = id; else get_players(players,count,"ch");
    for (new i=0;i<count;i++)
    if (is_user_connected(players[i]))
    {
        message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
        write_byte(players[i]);
        write_string(msg);
        message_end();
    }
}
__________________
naSTR is offline
lucas_7_94
Leche Loco
Join Date: Mar 2009
Location: Argentina
Old 06-12-2012 , 20:10   Re: [HELP] Tank zombie problem
Reply With Quote #10

you should check if entity is valid , nothing more.
__________________
ATWWMH - MiniDuels
Madness is like gravity, just need a little push.
lucas_7_94 is offline
Send a message via Skype™ to lucas_7_94
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 12:18.


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