Thread: [Help / Support] Zombie CSO theme problem
View Single Post
Rx3toofan
Member
Join Date: Jul 2014
Old 08-24-2014 , 08:03   Re: Zombie CSO theme problem
Reply With Quote #23

Quote:
Originally Posted by zmd94 View Post
Just change the previous code with this:
PHP Code:
public ball_think(ball)
{
    if(!
is_valid_ent(ball))
        return;

    new 
Float:oldangles[3],Float:angles[3]
    
pev(ball,pev_angles,oldangles)
    
angles[0] = oldangles[0] + random_float(20.0,100.0)
    
angles[1] = oldangles[1] + random_float(10.0,80.0)
    
angles[2] = oldangles[2] + random_float(10.0,80.0)
    
set_pev(ball,pev_angles,angles)

    new 
Float:Velocity[3]
    
pev(ball,pev_velocity,Velocity)

    if(
Velocity[0] < 1.0 && Velocity[2] < 1.0 && Velocity[1] < 1.0remove_entity(ball)
       
    if(
is_valid_ent(ball)) entity_set_float(ballEV_FL_nextthinkget_gametime() + 0.1


If the first code not works, just use the second code (However, I believe the first code will works. By the way, just try first):
PHP Code:
public ball_think(ball)
{
    if(!
is_valid_ent(ball))
        return;
    
    new 
Float:oldangles[3],Float:angles[3]
    
pev(ball,pev_angles,oldangles)
    
angles[0] = oldangles[0] + random_float(20.0,100.0)
    
angles[1] = oldangles[1] + random_float(10.0,80.0)
    
angles[2] = oldangles[2] + random_float(10.0,80.0)
    
set_pev(ball,pev_angles,angles)
    
    new 
Float:Velocity[3]
    
pev(ball,pev_velocity,Velocity)
    
    if(
Velocity[0] < 1.0 && Velocity[2] < 1.0 && Velocity[1] < 1.0)
    {
        
remove_entity(ball)
        return
    }
    
    
entity_set_float(ballEV_FL_nextthinkget_gametime() + 0.1



ty that helped

here is more

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <engine>
#include <xs>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <zombieplague>
//#include <csomod>

//#####################################################################
//#######################CONFIGURATION#################################
//#####################################################################

#define    WEAPONKEY    65645
#define reload_time    116.0/30.0
#define draw_time    1.2

#define v_model        "models/cso/v_skull11.mdl"
#define p_model        "models/cso/p_skull11.mdl"
#define w_model        "models/cso/w_skull11.mdl"

#define used_weapon    "weapon_xm1014"
#define CSW_WEAPON    CSW_XM1014

#define weapon_name    "weapon_skull11_cso"
#define death_message    "skull11"

#define anim_draw    4
#define anim_reload    3
#define anim_shoot    {1,2}  //First, last

//#####################################################################

#define WEAP_LINUX_XTRA_OFF        4
#define PLAYER_LINUX_XTRA_OFF        5
#define m_flTimeWeaponIdle        48
#define m_iClip                51
#define m_fInReload            54
#define m_flNextAttack            83

#define write_coord_f(%1)    engfunc(EngFunc_WriteCoord,%1)


new const GUNSHOT_DECALS[]={ 4142434445 }
#if defined weapon_name
new precache_sprites[][]={"sprites/cso/hud_skull11.spr"}
#endif
new fire_sounds[][]={"weapons/skull11_1.wav"}

new 
precache_sounds[][]={"weapons/skull11_boltpull.wav","weapons/skull11_clipin.wav","weapons/skull11_clipout.wav"}

new 
bool:has_weapon[33]
new 
in_reload[33],wpn_clip[33]
 
new 
Float:cl_pushangle[33][3],g_orig_event,in_primary_attack
 
new cvar_dmgx,cvar_recoil,cvar_rof,cvar_clip,cvar_ammo,cvar_rof2,cvar_knockback

new mode[33]
        
enum
{
    
mode_slug,
    
mode_buckshot
}

new 
item
#if defined weapon_name
new msg_weaponlist
#endif

new last_wpn[33]
new 
mdl_shell
new shell[33]

public 
plugin_init()
{
    
register_plugin("Skull-11","3.3","Nandee")
 
    
cvar_dmgx=register_cvar("skull11_dmgx","2.2")
    
cvar_recoil=register_cvar("skull11_recoil","1.2")
    
cvar_rof=register_cvar("skull11_rof","1.0")
    
cvar_rof2=register_cvar("skull11_rof2","2.0")
    
cvar_clip=register_cvar("skull11_clip","28")
    
cvar_ammo=register_cvar("skull11_ammo","5")
    
cvar_knockback=register_cvar("skull11_knockback","35")
    
#if defined weapon_name
    
register_clcmd(weapon_name,"switch_weapon")
    
#endif
    
    
register_event("CurWeapon","event_curwpn","be","1=1")
    
    
register_message(get_user_msgid("DeathMsg"),"msg_death")
    
    
register_forward(FM_SetModel,"fw_setmodel")
    
register_forward(FM_PlaybackEvent,"fw_playback_event")
    
register_forward(FM_UpdateClientData,"fw_updateclientdata_post",1)
    
register_forward(FM_CmdStart,"fw_cmdstart")
    
    
RegisterHam(Ham_Item_AddToPlayer,used_weapon,"hevent_atp",1)
    
RegisterHam(Ham_TakeDamage,"player","hevent_damage")
    
RegisterHam(Ham_TakeDamage,"func_breakable","hevent_damage")
    
RegisterHam(Ham_TakeDamage,"info_target","hevent_damage")
    
RegisterHam(Ham_Weapon_PrimaryAttackused_weapon"hevent_primary_attack")
    
RegisterHam(Ham_Weapon_PrimaryAttackused_weapon"hevent_primary_attack_post",1
    
RegisterHam(Ham_Item_PostFrame,used_weapon,"hevent_postframe")
    
RegisterHam(Ham_Weapon_Reload,used_weapon,"hevent_reload")
    
RegisterHam(Ham_Weapon_Reload,used_weapon,"hevent_reload_post",1)
    
RegisterHam(Ham_Item_Deploy,used_weapon,"hevent_deploy_post",1)
    
RegisterHam(Ham_Use,"func_tank","hevent_usetank_post",1)
    
RegisterHam(Ham_Use,"func_tankmortar","hevent_usetank_post",1)
    
RegisterHam(Ham_Use,"func_tankrocket","hevent_usetank_post",1)
    
RegisterHam(Ham_Use,"func_tanklaser","hevent_usetank_post",1)
    
RegisterHam(Ham_TraceAttack,"player","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"worldspawn","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"func_breakable","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"func_wall","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"func_door","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"func_door_rotating","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"func_plat","hevent_traceattack",1)
    
RegisterHam(Ham_TraceAttack,"func_rotating","hevent_traceattack",1)
    
RegisterHam(Ham_Killed,"player","hevent_killed",1)
    
    
item=zp_register_extra_item("Skull-11",200,ZP_TEAM_HUMAN)
    
//item=cso_register_item("\rSkull-11",2500,SHOP_PRIMARY_WEAPON,0)
    
register_clcmd("say /skull11","cmd_weapon")
    
    
#if defined weapon_name
    
msg_weaponlist=get_user_msgid("WeaponList")
    
#endif
}


public 
fw_cmdstart(iduc_handleseed)
{
    if(!
is_user_alive(id))
        return
    if(
get_user_weapon(id) != CSW_WEAPON || !has_weapon[id])
        return 
    new 
button,oldbutton
    button
=get_uc(uc_handleUC_Buttons)
    
oldbutton=pev(id,pev_oldbuttons)
    if(
button&IN_ATTACK2&&!(oldbutton&IN_ATTACK2))
    {
        if(
mode[id]==mode_slug)
        {
            
mode[id]=mode_buckshot
            client_print
(id,print_center,"Change to Buckshot mode")
        }
        else if(
mode[id]==mode_buckshot)
        {
            
mode[id]=mode_slug
            client_print
(id,print_center,"Change to Slug mode")
        }
    }
    return 
}
 
public 
plugin_precache()
{
    
precache_model(p_model)
    
precache_model(v_model)
    
precache_model(w_model)
    
#if defined weapon_name
    
new txt[64]
    
format(txt,63,"sprites/%s.txt",weapon_name)
    
precache_generic(txt)
    for(new 
i;i<sizeof precache_sprites;i++)
        
precache_model(precache_sprites[i])
    
#endif
    
for(new i;i<sizeof fire_sounds;i++)
        
precache_sound(fire_sounds[i])
    for(new 
i;i<sizeof precache_sounds;i++)
        
precache_sound(precache_sounds[i])
        
    
register_forward(FM_PrecacheEvent,"fw_precache_event_post",1)
    
mdl_shell=precache_model("models/shotgunshell.mdl")
}


//public cso_item_selected(id,itemid)
public zp_extra_item_selected(id,itemid)
{
    if(
item==itemid)
    {
        
drop_pri(id)
        
has_weapon[id]=true
        
new wpn=give_item(id,used_weapon)
        if(
wpn>0)
        {
            
engclient_cmd(id,used_weapon)
            
cs_set_weapon_ammo(wpn,get_pcvar_num(cvar_clip))
            
cs_set_user_bpammo (id,CSW_WEAPON,get_pcvar_num(cvar_clip)*get_pcvar_num(cvar_ammo))
            
mode[id]=mode_buckshot
            
/*#if defined anim_draw
            UTIL_PlayWeaponAnimation(id,anim_draw)
            #endif
            #if defined weapon_name
            message_begin(MSG_ONE,msg_weaponlist,_,id)
            write_string(has_weapon[id]?weapon_name:used_weapon)
            write_byte(5)
            write_byte(32)
            write_byte(-1)
            write_byte(-1)
            write_byte(0)
            write_byte(5)
            write_byte(CSW_WEAPON)
            write_byte(0)
            message_end()
            #endif*/
        
}
    }
}

public 
client_connect(id)
    
has_weapon[id]=false
 
public client_disconnect(id)
    
has_weapon[id]=false
 
public hevent_killed(id)
    
set_task(0.5,"reset_wpn",id+6666)

public 
zp_user_infected_post(id)
    
set_task(0.5,"reset_wpn",id+6666)
    
public 
reset_wpn(id)
    
has_weapon[id-6666]=false

public msg_death(msg_idmsg_destid)
{
    new 
weapon[33], attacker
    get_msg_arg_string
(4,weaponcharsmax(weapon))
    
attacker=get_msg_arg_int(1)
    if(
equal(weapon,"xm1014")&&get_user_weapon(attacker)==CSW_WEAPON&&has_weapon[attacker]&&is_user_connected(attacker))
            
set_msg_arg_string(4,death_message)
    return 
PLUGIN_CONTINUE
}

public 
fw_precache_event_post(type,name[])
{
    if(
equal("events/xm1014.sc",name))
    {
        
g_orig_event=get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
fw_playback_event(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if (
eventid!=g_orig_event||!in_primary_attack)
        return 
FMRES_IGNORED
    
if (!is_user_connected(invoker))
        return 
FMRES_IGNORED

    playback_event
(flags|FEV_HOSTONLY,invoker,eventid,delay,origin,angles,fparam1,fparam2,iParam1,iParam2,bParam1,bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_updateclientdata_post(id,sendwpns,cd_handle)
{
    if(!
is_user_alive(id)||get_user_weapon(id)!=CSW_WEAPON||!has_weapon[id])
        return 
FMRES_IGNORED
    
    set_cd
(cd_handle,CD_flNextAttack,get_gametime()+0.001)
    return 
FMRES_HANDLED
}

public 
switch_weapon(id)
{
    if(
has_weapon[id]&&get_user_weapon(id)!=CSW_WEAPON)
        
engclient_cmd(id,used_weapon)
}

public 
hevent_deploy_post(wpn)
{
    new 
id=pev(wpn,pev_owner)
    if(!
is_user_alive(id)||!has_weapon[id])
        return
    
#if defined draw_time
    
set_pdata_float(id,m_flNextAttack,draw_time,PLAYER_LINUX_XTRA_OFF)
    
#endif
    #if defined anim_draw
    
UTIL_PlayWeaponAnimation(id,anim_draw)
    
#endif
    #if defined weapon_name
    
message_begin(MSG_ONE,msg_weaponlist,_,id)
    
write_string(has_weapon[id]?weapon_name:used_weapon)
    
write_byte(5)
    
write_byte(32)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(0)
    
write_byte(5)
    
write_byte(CSW_WEAPON)
    
write_byte(0)
    
message_end()
    
#endif
}

public 
hevent_traceattack(ent,attacker,Float:damage,Float:dir[3],ptr,type)
{
    if(!
is_user_alive(attacker)||get_user_weapon(attacker)!=CSW_WEAPON||!has_weapon[attacker])
        return 
HAM_IGNORED
    
new id=attacker
    
new Float:endpos[3]
    
get_tr2(ptr,TR_vecEndPos,endpos)
    if(
mode[attacker]==mode_slug)
    {
        new 
nve[3]
        
get_user_origin(attacker,nve,3)
        
endpos[0]=float(nve[0])
        
endpos[1]=float(nve[1])
        
endpos[2]=float(nve[2])
        
set_tr2(ptr,TR_vecEndPos,endpos)
    }
    
    if(
pev_valid(ent))
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
engfunc(EngFunc_WriteCoord,endpos[0])
        
engfunc(EngFunc_WriteCoord,endpos[1])
        
engfunc(EngFunc_WriteCoord,endpos[2])
        
write_byte(GUNSHOT_DECALS[random_num(0,(sizeof GUNSHOT_DECALS)-1)])
        
write_short(ent)
        
message_end()
    }
    else
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
engfunc(EngFunc_WriteCoord,endpos[0])
        
engfunc(EngFunc_WriteCoord,endpos[1])
        
engfunc(EngFunc_WriteCoord,endpos[2])
        
write_byte(GUNSHOT_DECALS[random_num(0,(sizeof GUNSHOT_DECALS)-1)])
        
message_end()
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
engfunc(EngFunc_WriteCoord,endpos[0])
        
engfunc(EngFunc_WriteCoord,endpos[1])
        
engfunc(EngFunc_WriteCoord,endpos[2])
        
write_short(attacker)
        
write_byte(GUNSHOT_DECALS[random_num(0,(sizeof GUNSHOT_DECALS)-1)])
        
message_end()
    }
    
    if(
shell[id]==7)
        
shell[id]=0
    shell
[id]++
    
    if(
shell[id]>1)
        return 
HAM_IGNORED
    
//Shell
    
new Float:player_origin[3], Float:origin[3], Float:origin2[3], Float:gunorigin[3], Float:oldangles[3], Float:v_forward[3], Float:v_forward2[3], Float:v_up[3], Float:v_up2[3], Float:v_right[3], Float:v_right2[3], Float:viewoffsets[3];
    
pev(id,pev_v_angleoldangles)
    
pev(id,pev_origin,player_origin)
    
pev(idpev_view_ofsviewoffsets)
    
    
engfunc(EngFunc_MakeVectorsoldangles)
    
    
global_get(glb_v_forwardv_forward)
    
global_get(glb_v_upv_up)
    
global_get(glb_v_rightv_right)
    
    
global_get(glb_v_forwardv_forward2)
    
global_get(glb_v_upv_up2)
    
global_get(glb_v_rightv_right2)
    
    
xs_vec_add(player_originviewoffsetsgunorigin)
    
    
xs_vec_mul_scalar(v_forwardrandom_float(9.5,10.5), v_forward)
    
xs_vec_mul_scalar(v_right,random_float(-12.5,-13.5), v_right)
    
xs_vec_mul_scalar(v_up, -3.7v_up)
    
    
xs_vec_mul_scalar(v_forward210.0v_forward2)
    
xs_vec_mul_scalar(v_right23.0v_right2)
    
xs_vec_mul_scalar(v_up2, -4.0v_up2)
    
    
xs_vec_add(gunoriginv_forwardorigin)
    
xs_vec_add(gunoriginv_forward2origin2)
    
xs_vec_add(originv_rightorigin)
    
xs_vec_add(origin2v_right2origin2)
    
xs_vec_add(originv_uporigin)
    
xs_vec_add(origin2v_up2origin2)
    
    new 
Float:velocity[3]
    
get_speed_vector(origin2originrandom_float(120.0160.0), velocity)
    
    new 
angle random_num(0360)
    
    new 
Float:origin3[3]
    
origin3 origin
    
    xs_vec_mul_scalar
(v_forward3.9v_forward);
    
xs_vec_add(originv_forwardorigin);

    
    for(new 
i<= 32i++)
    {
        if(!
is_user_connected(i)) continue
        
        if(!
is_user_alive(i) && pev(ipev_iuser2) == id && pev(ipev_iuser1) == 4)
        {
            
message_begin(MSG_ONESVC_TEMPENTITY_i)
            
write_byte(TE_MODEL)
            
write_coord_f(origin3[0])
            
write_coord_f(origin3[1])
            
write_coord_f(origin3[2])
            
write_coord_f(velocity[0])
            
write_coord_f(velocity[1])
            
write_coord_f(velocity[2])
            
write_angle(angle)
            
write_short(mdl_shell)
            
write_byte(2)
            
write_byte(30)
            
message_end()    
        }
        else
        {
            
message_begin(MSG_ONE_UNRELIABLESVC_TEMPENTITY_i)
            
write_byte(TE_MODEL)
            
write_coord_f(origin[0])
            
write_coord_f(origin[1])
            
write_coord_f(origin[2])
            
write_coord_f(velocity[0])
            
write_coord_f(velocity[1])
            
write_coord_f(velocity[2])
            
write_angle(angle)
            
write_short(mdl_shell)
            
write_byte(2)
            
write_byte(30)
            
message_end()    
        }
    }
    
//Knockback
    
if(is_user_alive(ent)&&zp_get_user_zombie(ent))
    {
        new 
Float:velocity[3]
        
pev(entpev_velocityvelocity)
        
xs_vec_mul_scalar(dir,damage,dir)
        
xs_vec_mul_scalar(dir,get_pcvar_float(cvar_knockback),dir)
        
xs_vec_add(velocitydir,dir)
        
set_pev(ent,pev_velocity,dir)
    }
    return 
HAM_IGNORED
}

stock get_speed_vector(const Float:origin1[3], const Float:origin2[3], Float:speedFloat:new_velocity[3])
{
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed speed / (new_velocity[0] * new_velocity[0] + new_velocity[1] * new_velocity[1] + new_velocity[2] * new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
    
    
return 1;
}

public 
hevent_damage(idinflictorattackerFloat:damage)
{
    if(
is_user_alive(attacker)&&damage!=0.0&&get_user_weapon(attacker)==CSW_WEAPON&&has_weapon[attacker])
    {
        
SetHamParamFloat(4,damage*get_pcvar_float(cvar_dmgx))
    }
}

public 
replace_weapon_models(id)
{
    if(
is_user_alive(id)&&get_user_weapon(id)==CSW_WEAPON&&has_weapon[id])
    {
        
set_pev(idpev_viewmodel2,v_model)
        
set_pev(idpev_weaponmodel2,p_model)
    }
}

public 
event_curwpn(id)
{
    new 
wpn=get_user_weapon(id)
    if(
is_user_alive(id)&&has_weapon[id]&&wpn==CSW_WEAPON)
    {
        
replace_weapon_models(id)
        if(
last_wpn[id]!=wpn)
        {
            
#if defined anim_draw
            
UTIL_PlayWeaponAnimation(id,anim_draw)
            
#endif            
        
}
        else
        {
            new 
ent=fm_find_ent_by_owner(-1,used_weapon,id)
            if(!
ent)
                return 
PLUGIN_CONTINUE
            
new Float:delay,Float:m_delay
            
new Float:rof
            
if(mode[id]==mode_buckshot)
                
rof=get_pcvar_float(cvar_rof)
            else
                
rof=get_pcvar_float(cvar_rof2)
            
            
            
delay=get_pdata_float(ent,46,WEAP_LINUX_XTRA_OFF)*rof
            m_delay
=get_pdata_float(ent,47,WEAP_LINUX_XTRA_OFF)*rof
            
if(delay>0.0)
            {
                
set_pdata_float(ent,46,delay,WEAP_LINUX_XTRA_OFF)
                
set_pdata_float(ent,47,m_delay,WEAP_LINUX_XTRA_OFF)
            }
        }        
    }
    
last_wpn[id]=get_user_weapon(id)
    return 
PLUGIN_HANDLED
}

public 
fw_setmodel(entmodel[])
{
    if(!
is_valid_ent(ent))
        return 
FMRES_IGNORED
    
new classname[33]
    
entity_get_string(entEV_SZ_classnameclassnamecharsmax(classname))
    if(!
equal(classname"weaponbox"))
        return 
FMRES_IGNORED
    
new owner=entity_get_edict(ent,EV_ENT_owner)
    if(
equal(model"models/w_xm1014.mdl"))
    {
        new 
weaponid=find_ent_by_owner(-1,used_weaponent)
        if(!
is_valid_ent(weaponid))
            return 
FMRES_IGNORED
        
if(has_weapon[owner])
        {
            
entity_set_int(weaponid,EV_INT_impulseWEAPONKEY)
            
has_weapon[owner]=false
            entity_set_model
(ent,w_model)
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
hevent_atp(item,id)  
{
    if(!
is_user_alive(id))
        return
    if(
entity_get_int(item,EV_INT_impulse)==WEAPONKEY||has_weapon[id])
    {
        
has_weapon[id]=true
        entity_set_int
(item,EV_INT_impulse,0)
    }
    
//http://wiki.amxmodx.org/CS_WeaponList_Message_Dump
    #if defined weapon_name
    
message_begin(MSG_ONE,msg_weaponlist,_,id)
    
write_string(has_weapon[id]?weapon_name:used_weapon)
    
write_byte(5)
    
write_byte(32)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(0)
    
write_byte(5)
    
write_byte(CSW_WEAPON)
    
write_byte(0)
    
message_end()
    
#endif
}

public 
hevent_usetank_post(entity,caller,activator,use_type)
{
    if(
use_type==0&&is_user_connected(caller)&&get_user_weapon(caller)==CSW_WEAPON&&has_weapon[caller])
    {
        
replace_weapon_models(caller)
    }
}

public 
hevent_primary_attack(ent)
{
    
in_primary_attack=1
    
new id pev(ent,pev_owner)
    new 
clip,ammo
    get_user_weapon
(id,clip,ammo)
    if(
get_user_weapon(id)==CSW_WEAPON&&has_weapon[id]&&clip>0)
    {
        
pev(id,pev_punchangle,cl_pushangle[id])
        new 
shootanims[2]=anim_shoot
        UTIL_PlayWeaponAnimation
(id,random_num(shootanims[0],shootanims[1]))
        
emit_sound(idCHAN_WEAPON,fire_sounds[random_num(0,(sizeof fire_sounds)-1)], 1.0ATTN_NORM0PITCH_NORM)
    }
    return 
HAM_IGNORED
}
 
public 
hevent_primary_attack_post(ent)
{
    
in_primary_attack=0
    
new id=pev(ent,pev_owner)
    new 
clip,ammo
    get_user_weapon
(id,clip,ammo)
    if(
has_weapon[id]&&clip>0)
    {
        new 
Float:push[3]
        
pev(id,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[id],push)
        
xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil),push)
        
xs_vec_add(push,cl_pushangle[id],push)
        
set_pev(id,pev_punchangle,push)
    }
    return 
HAM_IGNORED
}

public 
hevent_postframe(ent)
{
    new 
id=pev(ent,pev_owner)
    if(!
is_user_connected(id)||!has_weapon[id])
        return 
HAM_IGNORED
 
    
new Float:nextattack=get_pdata_float(id,m_flNextAttack,PLAYER_LINUX_XTRA_OFF)
    new 
bpammo=cs_get_user_bpammo(idCSW_WEAPON)
    new 
clip=get_pdata_int(ent,m_iClip,WEAP_LINUX_XTRA_OFF)
    new 
inreload=get_pdata_int(ent,m_fInReloadWEAP_LINUX_XTRA_OFF
 
    if(
inreload&&nextattack<= 0.0 )
    {
        new 
j=min(get_pcvar_num(cvar_clip)-clip,bpammo)
        
set_pdata_int(ent,m_iClip,clip+j,WEAP_LINUX_XTRA_OFF)
        
cs_set_user_bpammo(idCSW_WEAPONbpammo-j)
        
set_pdata_int(ent,m_fInReload0,WEAP_LINUX_XTRA_OFF)
        
in_reload[id]=0
    
}
    return 
HAM_IGNORED
}
 
public 
hevent_reload(ent)
{
    new 
id=pev(ent,pev_owner)
    if(!
is_user_connected(id)||!has_weapon[id])
        return 
HAM_IGNORED
    wpn_clip
[id] = -1
  
    
new bpammo=cs_get_user_bpammo(idCSW_WEAPON)
    new 
clip=get_pdata_int(ent,m_iClip,WEAP_LINUX_XTRA_OFF)
 
    if(
bpammo<=0||clip>=get_pcvar_num(cvar_clip))
        return 
HAM_SUPERCEDE
    wpn_clip
[id]=clip
    in_reload
[id]=1
    
#if defined anim_reload
    
UTIL_PlayWeaponAnimation(id,anim_reload)
    
#endif
    
return HAM_SUPERCEDE
}
 
public 
hevent_reload_post(ent)
{
    new 
id=pev(ent,pev_owner)
    if(!
is_user_connected(id)||!has_weapon[id])
        return 
HAM_IGNORED
 
    
new bpammo=cs_get_user_bpammo(idCSW_WEAPON)
    new 
clip=get_pdata_int(ent,m_iClip,WEAP_LINUX_XTRA_OFF)
    if(
bpammo<=0||clip>=get_pcvar_num(cvar_clip))
        return 
HAM_SUPERCEDE
 
    set_pdata_int
(ent,m_iClip,wpn_clip[id],WEAP_LINUX_XTRA_OFF)
    
set_pdata_float(ent,m_flTimeWeaponIdle,reload_time,WEAP_LINUX_XTRA_OFF)
    
set_pdata_float(id,m_flNextAttack,reload_time,PLAYER_LINUX_XTRA_OFF)
    
set_pdata_int(ent,m_fInReload,1,WEAP_LINUX_XTRA_OFF)
    
    return 
HAM_SUPERCEDE
}

//Stocks
stock UTIL_PlayWeaponAnimation(id,sequence)
{
    
set_pev(id,pev_weaponanim,sequence)
    
    
message_begin(MSG_ONE_UNRELIABLE,SVC_WEAPONANIM,.player=id)
    
write_byte(sequence)
    
write_byte(pev(id,pev_body))
    
message_end()
}

stock drop_pri(id)
{
    new const 
priwpns[][] = {
        
"weapon_shield",
        
"weapon_scout",
        
"weapon_xm1014",
        
"weapon_mac10",
        
"weapon_aug",
        
"weapon_ump45",
        
"weapon_sg550",
        
"weapon_galil",
        
"weapon_famas",
        
"weapon_awp",
        
"weapon_mp5navy",
        
"weapon_m249",
        
"weapon_m3",
        
"weapon_m4a1",
        
"weapon_tmp",
        
"weapon_g3sg1",
        
"weapon_sg552",
        
"weapon_ak47",
        
"weapon_p90"
    
}
    for(new 
0sizeof priwpnsj++)
    {
        
engclient_cmd(id,"drop"priwpns[j])
    }



08/24/2014 - 082:03: [AMXX] Run time error 19 (plugin "zp_skull11.amxx") - debug not enabled!
L 08/24/2014 - 082:03: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 08/24/2014 - 084:47: Plugin called message_begin with an invalid message id (0).
L 08/24/2014 - 084:47: [AMXX] Run time error 10 (plugin "zp_skull11.amxx") (native "message_begin") - debug not enabled!
L 08/24/2014 - 084:47: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 08/24/2014 - 087:08: Start of error session.
Rx3toofan is offline