Raised This Month: $ Target: $400
 0% 

knockback problem + weapons problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
KhaledAwesome
Member
Join Date: Jul 2013
Old 01-10-2016 , 13:59   knockback problem + weapons problem
Reply With Quote #1

I have a problem in zp5.0.5
i have a knife that has a good knockback for zombies [knock/power : 20]

why zombies have no knockback when they touch the ground? + when they duck?
But there is knockback when they jump

i put the first zombie pain shock free [why only him can get knockback when on ground + duck?]

zombieclasses.ini

PHP Code:
[Classic Zombie]
NAME Classic
INFO 
= =Balanced=
MODELS zombie_classical
CLAWMODEL 
models/zombie_plague/v_knife_classical+shocker.mdl
HEALTH 
4000
SPEED 
250.00
GRAVITY 
0.85
KNOCKBACK 
2.00

[Шаман]
NAME Shaman
INFO 
Click \rE \yto scream
MODELS 
zombie_siners
CLAWMODEL 
models/zombie_plague/v_knife_siners.mdl
HEALTH 
2300
SPEED 
240.00
GRAVITY 
0.90
KNOCKBACK 
2.00

[Rage Zombie]
NAME Rage
INFO 
Very powerful zombie \r[VIP]
MODELS Rage
CLAWMODEL 
models/zombie_plague/v_rageknife.mdl
HEALTH 
3000
SPEED 
290.00
GRAVITY 
0.65
KNOCKBACK 
0.10

[Hunter]
NAME Hunter
INFO 
Click \rG \yto run very fast
MODELS 
zombie_hunter2
CLAWMODEL 
models/zombie_plague/v_zombieknife_hunter.mdl
HEALTH 
2000
SPEED 
260.00
GRAVITY 
1.14
KNOCKBACK 
2.00

[Banchee]
NAME Banchee
INFO 
Click \rG \yto Spawn Bats
MODELS 
witch_zombi_origin
CLAWMODEL 
models/zombie_plague/v_knife_witch_zombi.mdl
HEALTH 
1800
SPEED 
210.00
GRAVITY 
1.00
KNOCKBACK 
2.00

[Shock Zombie]
NAME Shocker
INFO 
Click \rG \yto shock
MODELS 
zombie_shocker
CLAWMODEL 
models/zombie_plague/v_knife_classical+shocker.mdl
HEALTH 
2000
SPEED 
0.95
GRAVITY 
1.00
KNOCKBACK 
2.00

[Trapper zombie]
NAME Trapper
INFO 
Click \rG \yto put a trap
MODELS 
zombie_trapper
CLAWMODEL 
models/zombie_plague/v_knife_zombietrapper.mdl
HEALTH 
2000
SPEED 
250.00
GRAVITY 
1.00
KNOCKBACK 
0.75 
zombieplague cfg

PHP Code:
// Pain Shock Free
// ---------------

zp_painshockfree_zombie 2            // Zombies are pain shock free [0-disabled // 1-enabled // 2-only first zombie // 3-only last zombie]
zp_painshockfree_human 0            // Humans are pain shock free [0-disabled // 1-enabled // 2-only last human]
zp_painshockfree_nemesis 0            // Nemesis is pain shock free
zp_painshockfree_survivor 1            // Survivor is pain shock free

// Knockback
// ---------

zp_knockback_damage 0                // Use damage on knockback calculation
zp_knockback_power 1                // Use weapon power on knockback calculation
zp_knockback_obey_class 1            // Use class multiplier on knockback calculation
zp_knockback_zvel 0                    // Should knockback affect vertical velocity
zp_knockback_ducking 1.00            // Knockback multiplier for crouched zombies [0-knockback disabled when ducking]
zp_knockback_distance 500            // Max distance for knockback to take effect
zp_knockback_nemesis 0.10            // Nemesis knockback multiplier [0-disable knockback for nemesis] 
-------------------------------------------------------------------------

Is it normal that when i buy a extra custom weapon , for example m200 [sniper] and win a round as a human
the m200 changes to AWP the next round?

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

#define ENG_NULLENT            -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define m200_WEAPONKEY         812
#define MAX_PLAYERS          32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

const USE_STOPPED 0
const OFFSET_ACTIVE_ITEM 373
const OFFSET_WEAPONOWNER 41
const OFFSET_LINUX 5
const OFFSET_LINUX_WEAPONS 4

#define WEAP_LINUX_XTRA_OFF        4
#define m_fKnown                    44
#define m_flNextPrimaryAttack         46
#define m_flTimeWeaponIdle            48
#define m_iClip                    51
#define m_fInReload                54
#define PLAYER_LINUX_XTRA_OFF    5
#define m_flNextAttack                83

#define m200_RELOAD_TIME    3.0
#define m200_SHOOT1        1
#define m200_SHOOT2        2
#define m200_RELOAD        4
#define m200_DRAW        5

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

new const Fire_Sounds[][] = { "weapons/m200.wav" }

new 
m200_V_MODEL[64] = "models/zm/v_m200.mdl"
new m200_P_MODEL[64] = "models/zm/p_m200.mdl"
new m200_W_MODEL[64] = "models/zm/w_m200.mdl"

new const GUNSHOT_DECALS[] = { 4142434445 }

new 
cvar_dmg_m200cvar_recoil_m200g_itemid_m200cvar_clip_m200cvar_spd_m200cvar_m200_ammo
new g_MaxPlayersg_orig_event_m200g_IsInPrimaryAttack
new Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_has_m200[33], g_clip_ammo[33], g_m200_TmpClip[33], oldweap[33]

new 
gmsgWeaponList

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new const 
WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
            
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
            
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
            
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
            
"weapon_ak47""weapon_knife""weapon_p90" }

public 
plugin_init()
{
    
register_plugin("[ZP] Extra: M200""1.0""LARS-DAY[BR]EAKER")
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_awp""fw_m200_AddToPlayer")
    
RegisterHam(Ham_Use"func_tank""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankmortar""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankrocket""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tanklaser""fw_UseStationary_Post"1)
    for (new 
1sizeof WEAPONENTNAMESi++)
    if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_awp""fw_m200_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_awp""fw_m200_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrame"weapon_awp""m200_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reload"weapon_awp""m200_Reload")
    
RegisterHam(Ham_Weapon_Reload"weapon_awp""m200_Reload_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fwPlaybackEvent")
    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_breakable""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_wall""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door_rotating""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_plat""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_rotating""fw_TraceAttack"1)

    
cvar_dmg_m200 register_cvar("zp_m200_dmg""1.0")
    
cvar_recoil_m200 register_cvar("zp_m200_recoil""0.95")
    
cvar_clip_m200 register_cvar("zp_m200_clip""10")
    
cvar_spd_m200 register_cvar("zp_m200_spd""1.0")
    
cvar_m200_ammo register_cvar("zp_m200_ammo""90")
    
    
g_itemid_m200 zp_register_extra_item("M200"35ZP_TEAM_HUMAN)
    
g_MaxPlayers get_maxplayers()
        
gmsgWeaponList get_user_msgid("WeaponList")
}

public 
plugin_precache()
{
    
precache_model(m200_V_MODEL)
    
precache_model(m200_P_MODEL)
    
precache_model(m200_W_MODEL)
    for(new 
0sizeof Fire_Soundsi++)
    
precache_sound(Fire_Sounds[i])    
    
precache_sound("weapons/m200_clipin.wav")
    
precache_sound("weapons/m200_clipout.wav")
    
precache_sound("weapons/m200_foley1.wav")
    
precache_sound("weapons/m200_foley2.wav")
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")
    
precache_generic"sprites/weapon_m200.txt" );
       
precache_generic"sprites/zm/640hud29.spr" );
        
precache_generic"sprites/zm/640hud7.spr" );    
    
        
register_clcmd("weapon_m200""weapon_hook")    
    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}

public 
weapon_hook(id)
{
    
engclient_cmd(id"weapon_awp")
    return 
PLUGIN_HANDLED
}

public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return

    new 
g_currentweapon get_user_weapon(iAttacker)

    if(
g_currentweapon != CSW_AWP) return
    
    if(!
g_has_m200[iAttacker]) return

    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
    
    if(
iEnt)
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
write_short(iEnt)
        
message_end()
    }
    else
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
message_end()
    }
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_GUNSHOTDECAL)
    
write_coord_f(flEnd[0])
    
write_coord_f(flEnd[1])
    
write_coord_f(flEnd[2])
    
write_short(iAttacker)
    
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
    
message_end()
}

public 
zp_user_humanized_post(id)
{
    
g_has_m200[id] = false
}

public 
plugin_natives ()
{
    
register_native("give_weapon_m200""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_m200(id)
}

public 
fwPrecacheEvent_Post(type, const name[])
{
    if (
equal("events/awp.sc"name))
    {
        
g_orig_event_m200 get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_m200[id] = false
}

public 
client_disconnect(id)
{
    
g_has_m200[id] = false
}

public 
zp_user_infected_post(id)
{
    if (
zp_get_user_zombie(id))
    {
        
g_has_m200[id] = false
    
}
}

public 
fw_SetModel(entitymodel[])
{
    if(!
is_valid_ent(entity))
        return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName))
        
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    
    iOwner 
entity_get_edict(entityEV_ENT_owner)
    
    if(
equal(model"models/w_awp.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_awp"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED
    
        
if(g_has_m200[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYm200_WEAPONKEY)
            
            
g_has_m200[iOwner] = false
            
            entity_set_model
(entitym200_W_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
give_m200(id)
{
    
drop_weapons(id1)
    new 
iWep2 give_item(id,"weapon_awp")
    if( 
iWep2 )
    {
        
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_m200))
        
cs_set_user_bpammo (idCSW_AWPget_pcvar_num(cvar_m200_ammo))    
        
UTIL_PlayWeaponAnimation(idm200_DRAW)
        
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)

                
message_begin(MSG_ONEgmsgWeaponList_id)
        
write_string("weapon_m200")
        
write_byte(1)
        
write_byte(30)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(2)
        
write_byte(CSW_AWP)
        
message_end()
    }
    
g_has_m200[id] = true
}

public 
zp_extra_item_selected(iditemid)
{
    if(
itemid != g_itemid_m200)
        return

    
give_m200(id)
}

public 
fw_m200_AddToPlayer(m200id)
{
    if(!
is_valid_ent(m200) || !is_user_connected(id))
        return 
HAM_IGNORED
    
    
if(entity_get_int(m200EV_INT_WEAPONKEY) == m200_WEAPONKEY)
    {
        
g_has_m200[id] = true
        entity_set_int
(m200EV_INT_WEAPONKEY0)

                
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_m200")
        
write_byte(1)
        
write_byte(30)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)   
        
write_byte(2
        
write_byte(CSW_AWP)
        
message_end() 
               
        return 
HAM_HANDLED
    
}
            else
    {
        
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_awp")
        
write_byte(1)
        
write_byte(30)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(2)
        
write_byte(CSW_AWP)
        
message_end()
    }
    return 
HAM_IGNORED
}

public 
fw_UseStationary_Post(entitycalleractivatoruse_type)
{
    if (
use_type == USE_STOPPED && is_user_connected(caller))
        
replace_weapon_models(callerget_user_weapon(caller))
}

public 
fw_Item_Deploy_Post(weapon_ent)
{
    static 
owner
    owner 
fm_cs_get_weapon_ent_owner(weapon_ent)
    
    static 
weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    
replace_weapon_models(ownerweaponid)
}

public 
CurrentWeapon(id)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_AWP || !g_has_m200[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_m200[id])
          
iSpeed get_pcvar_float(cvar_spd_m200)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_AWP:
        {
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id))
                return
            
            if(
g_has_m200[id])
            {
                
set_pev(idpev_viewmodel2m200_V_MODEL)
                
set_pev(idpev_weaponmodel2m200_P_MODEL)
                if(
oldweap[id] != CSW_AWP
                {
                    
UTIL_PlayWeaponAnimation(idm200_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)

                                        
message_begin(MSG_ONEgmsgWeaponList_id)
                    
write_string("weapon_m200")
                                
write_byte(1)
                                
write_byte(30)
                                
write_byte(-1)
                                
write_byte(-1)
                                
write_byte(0)   
                                
write_byte(2
                                
write_byte(CSW_AWP)
                                
message_end()
                }
            }
        }
    }
    
oldweap[id] = weaponid
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_AWP || !g_has_m200[Player]))
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_m200_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_m200[Player])
        return
    
    
g_IsInPrimaryAttack 1
    pev
(Player,pev_punchangle,cl_pushangle[Player])
    
    
g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public 
fwPlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if ((
eventid != g_orig_event_m200) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_m200_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    new 
szClipszAmmo
    get_user_weapon
(PlayerszClipszAmmo)
    
    if(!
is_user_alive(Player))
        return

    if(
g_has_m200[Player])
    {
        if (!
g_clip_ammo[Player])
            return

        new 
Float:push[3]
        
pev(Player,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[Player],push)
        
        
xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_m200),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        
emit_sound(PlayerCHAN_WEAPONFire_Sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(m200_SHOOT1m200_SHOOT2))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_AWP)
        {
            if(
g_has_m200[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_m200))
        }
    }
}

public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
szTruncatedWeapon[33], iAttackeriVictim
    
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
    
    
iAttacker get_msg_arg_int(1)
    
iVictim get_msg_arg_int(2)
    
    if(!
is_user_connected(iAttacker) || iAttacker == iVictim)
        return 
PLUGIN_CONTINUE
    
    
if(equal(szTruncatedWeapon"awp") && get_user_weapon(iAttacker) == CSW_AWP)
    {
        if(
g_has_m200[iAttacker])
            
set_msg_arg_string(4"awp")
    }
    return 
PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
    return 
get_pdata_cbase(idOFFSET_ACTIVE_ITEMOFFSET_LINUX)
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS)
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player)
    
write_byte(Sequence)
    
write_byte(pev(Playerpev_body))
    
message_end()
}

public 
m200_ItemPostFrame(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_m200[id])
          return 
HAM_IGNORED

     
static iClipExtra
     
     iClipExtra 
get_pcvar_num(cvar_clip_m200)
     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_AWP)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     new 
fInReload get_pdata_int(weapon_entitym_fInReloadWEAP_LINUX_XTRA_OFF

     if( 
fInReload && flNextAttack <= 0.0 )
     {
         new 
min(iClipExtra iClipiBpAmmo)
    
         
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
         
cs_set_user_bpammo(idCSW_AWPiBpAmmo-j)
        
         
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
         
fInReload 0
     
}
     return 
HAM_IGNORED
}

public 
m200_Reload(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_m200[id])
          return 
HAM_IGNORED

     
static iClipExtra

     
if(g_has_m200[id])
          
iClipExtra get_pcvar_num(cvar_clip_m200)

     
g_m200_TmpClip[id] = -1

     
new iBpAmmo cs_get_user_bpammo(idCSW_AWP)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE

     
if (iClip >= iClipExtra)
          return 
HAM_SUPERCEDE

     g_m200_TmpClip
[id] = iClip

     
return HAM_IGNORED
}

public 
m200_Reload_Post(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED

    
if (!g_has_m200[id])
        return 
HAM_IGNORED

    
if (g_m200_TmpClip[id] == -1)
        return 
HAM_IGNORED

    set_pdata_int
(weapon_entitym_iClipg_m200_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdlem200_RELOAD_TIMEWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttackm200_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(idm200_RELOAD)

    return 
HAM_IGNORED
}

stock drop_weapons(iddropwhat)
{
     static 
weapons[32], numiweaponid
     num 
0
     get_user_weapons
(idweaponsnum)
     
     for (
0numi++)
     {
          
weaponid weapons[i]
          
          if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
          {
               static 
wname[32]
               
get_weaponname(weaponidwnamesizeof wname 1)
               
engclient_cmd(id"drop"wname)
          }
     }

-------------------------------------------------------------------------

Lets say i bought a pumpkin grenade and i won a human round + i still have a pumpkin but not used

the next round the pumpkin goes and i cant buy another using ammo packs :S why ?

PHP Code:
/*
    Plugin generated by AMXX-Studio
    
    Plugin: Pumpkin Grenade
    Creator: Chrescoe1    //Cluster code used from http://forum.zombielite.ru/index.php?/topic/81-clustergrenade/ by Alexander.3
    Version: 3.0
    
    Changelog:
    v1.0 - First released
    v2.0 - Little Fixed - Optimization
    v3.0 - Too many fixed from ZP - Little Optimization
    
    Visit to ZombieLite.ru
*/

#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>

#define PLUGIN "Pumpkin Grenade"
#define VERSION "3.0"
#define AUTHOR "Chrescoe1"

#define ZombiePlague    //if you don't use ZombiePlague - delete this line!

#if defined ZombiePlague
#include <zombieplague>
#endif

//Resource
new const v_model_pumpkin[] =     "models/v_pumpkin.mdl"
new const p_model_pumpkin[] =     "models/p_pumpkin.mdl"
new const w_model_pumpkin[] =     "models/w_pumpkin.mdl"
new const cluster_models[] =    "models/w_pumpkinSmall3.mdl"
new const g_soundexpl[] =         "weapons/pump_exp.wav"
new const blast_sprite[] =     "sprites/shockwave.spr"
new const cluster_trail[] =    "sprites/laserbeam.spr"    
new const exp_sprite[] =         "sprites/pumpkin_exp.spr"

//Settings
const Float:expl_damage =  45.0 // سًîي يàيîٌèىûé مًàيàٍîé
const Float:expl_damage_ent 60.0 // سًîي يàيîٌèىûé هيٍèٍè \ يïِ
const Float:expl_radius =  200.0 // ذàنèٌَ ًَîيà مًàيàٍû
const Float:cluster_damage 13.0 // سًîي يàيîٌèىûé îٌêîëêàىè
const Float:cluster_damage_ent 20.0 // سًîي يàيîٌèىûé هيٍèٍè \ يïِ
const Float:cluster_radius 120.0 // ذàنèٌَ ًَîيà îٌêîëîê

const cluster_num_min 10 // جèي êîë-âî îٌêîëêîâ
const cluster_num_max 20 // جàêٌ êîë-âî îٌêîëêîâ
const Float:cluster_rad_min =  200.0 // جèي ًàنèٌَ ًàçëهٍà îٌêîëîê
const Float:cluster_rad_max =  300.0 // جàêٌ ًàنèٌَ ًàçëهٍà îٌêîëîê
const Float:cluster_up_min =  250.0 // جèي âçë¸ٍ îٌêîëêîâ ââهًُ
const Float:cluster_up_max =  350.0 // جàêٌ âçë¸ٍ îٌêîëêîâ ââهًُ

#define weapon_name "weapon_hegrenade"
#define Bomb_Classname "Pumpkin_Grenade"
#define Cluster_Classname "Pumpkin_ClusterBomb"
#define weaponlist_name "weapon_pumpkin"
#define weaponlist_original "weapon_hegrenade"


#if defined ZombiePlague
new g_itemid_pumpkin
#endif

new bool:g_has_pumpkin[32]
new 
g_sprRing,spriteexpl,g_Trail
new Msg_Weaponlist,Msg_ScreenShake,Msg_ScreenFade
public plugin_precache()
{
    
precache_generic"sprites/weapon_pumpkin.txt" )
    
precache_generic"sprites/640hud41.spr" )
    
precache_generic"sprites/640hud7.spr" )

    
precache_sound"weapons/pump_deploy.wav" )
    
precache_sound"weapons/pump_in.wav" )
    
precache_sound"weapons/pump_throw.wav" )
    
    
precache_model(w_model_pumpkin)
    
precache_model(v_model_pumpkin)
    
precache_model(p_model_pumpkin)
    
precache_model(cluster_models)
    
precache_sound(g_soundexpl)
    
    
spriteexpl    precache_model(exp_sprite)
    
g_Trail        precache_model(cluster_trail)
    
g_sprRing    precache_model(blast_sprite)
}
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
Msg_Weaponlist get_user_msgid("WeaponList")
    
Msg_ScreenShake get_user_msgid("ScreenShake")
    
Msg_ScreenFade get_user_msgid("ScreenFade")
    
    
//Ham
    
RegisterHam(Ham_Item_AddToPlayerweapon_name"Ham_AddToPlayer_Post"1)
    
RegisterHam(Ham_Item_Deployweapon_name"Ham_Item_Deploy_Post"1)
    
    
//Fakemeta
    
register_forward(FM_SetModel"Fakemeta_SetModel")
    
register_forward(FM_Touch"Fakemeta_Touch")
    
    
//Hook Weapon
    
register_clcmd(weaponlist_name"hook_weapon")
    
    
#if defined ZombiePlague
        //Register item in ZP
        
g_itemid_pumpkin zp_register_extra_item("Pumpkin Grenade"5ZP_TEAM_HUMAN)
    
#else
        //Get with chat command
        
register_clcmd("say /get_pumpkin","zp_extra_item_selected")
    
#endif
    // Add your code here...
}
public 
zp_extra_item_selected(id,itemid)
{
    
#if defined ZombiePlague
    
if(itemid!=g_itemid_pumpkin)return PLUGIN_HANDLED
    
if(g_has_pumpkin[id])return ZP_PLUGIN_HANDLED
    
#endif
    
g_has_pumpkin[id]=true
    give_item
(idweapon_name)
    return 
PLUGIN_HANDLED
}
public 
hook_weapon(id){client_cmd(id,weaponlist_original);return PLUGIN_HANDLED;}

//Ham
public Ham_AddToPlayer_Post(entid)
{
    if(!
pev_valid(ent))return HAM_IGNORED    
    
//Update WeaponList
    
message_begin(MSG_ONE_UNRELIABLEMsg_Weaponlist_id)
    
write_string(g_has_pumpkin[id]? weaponlist_name weaponlist_original)
    
write_byte(12)
    
write_byte(1)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(3)
    
write_byte(1)
    
write_byte(CSW_HEGRENADE)
    
write_byte(24)
    
message_end()            
    return 
HAM_HANDLED        
}
public 
Ham_Item_Deploy_Post(ent)
{
    if(!
pev_valid(ent))return
    
    new 
id get_pdata_cbase(ent414)
    
    if (
is_user_alive(id))
    if(
g_has_pumpkin[id])
    {
        
set_pev(idpev_viewmodel2v_model_pumpkin)
        
set_pev(idpev_weaponmodel2p_model_pumpkin)
    }
}
//Fakemeta
public Fakemeta_SetModel(ent, const Model[])
{
    if(!
pev_valid(ent))return FMRES_IGNORED
    
if(equal(Model"models/w_hegrenade.mdl"))    //If model HE Grenade
    
{
        new 
id pev(entpev_owner)
        if(
g_has_pumpkin[id])    //if owner has bomb
        
{
            
Trail(ent,g_Trail,12,8,255,155,55,255)
            
set_pev(entpev_classnameBomb_Classname)    //Set classname    
            
set_pev(entpev_dmgtime9999999.0)        //Block Explode
            
engfunc(EngFunc_SetModelentw_model_pumpkin)    //Change Model
            
g_has_pumpkin[id]=false                //Remove bomb on player

            
return FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED    
}
public 
Fakemeta_Touch(enttouch)
{
    if(!
pev_valid(ent))return HAM_IGNORED
    
    
new EntClassname[32],TouchClassname[32]
    
pev(entpev_classnameEntClassnamesizeof(EntClassname))
    
    if(
pev_valid(touch))
        
pev(touchpev_classnameTouchClassnamesizeof(TouchClassname))
    
    if(
equal(EntClassnameBomb_Classname))
    {
        if(
pev_valid(touch))
        {
            if(
equal(TouchClassnameCluster_Classname))return HAM_SUPERCEDE
            
if(equal(TouchClassnameBomb_Classname))return HAM_SUPERCEDE
        
}
        
Pumpkin_Explode(ent)
        return 
HAM_SUPERCEDE
    
}
    
    if(
equal(EntClassnameCluster_Classname))
    {
        if(
pev_valid(touch))
        {
            if(
equal(TouchClassnameCluster_Classname))return HAM_SUPERCEDE
            
if(equal(TouchClassnameBomb_Classname))return HAM_SUPERCEDE
        
}
        
Cluster_Explode(ent)
        return 
HAM_SUPERCEDE
    
}
    return 
HAM_IGNORED
}
//Public Func
public Pumpkin_Explode(ent)
{
    new 
Float:ExpOrigin[3],ownerpev(entpev_owner)
    
pev(ent,pev_origin,ExpOrigin)
        
    
engfunc(EngFunc_EmitSoundentCHAN_WEAPON,g_soundexpl1.0ATTN_NORM0PITCH_NORM)
    
    
//Explode    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYExpOrigin0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordExpOrigin[0])
    
engfunc(EngFunc_WriteCoordExpOrigin[1])
    
engfunc(EngFunc_WriteCoordExpOrigin[2]+50.0)
    
write_short(spriteexpl)
    
write_byte(30)
    
write_byte(10)
    
write_byte(0)
    
message_end()
    
    
ExplodeDecals(ExpOrigin)
    
Light(ExpOrigin,45,250,150,50,15)    
    
Ring(ExpOrigin,20,80)
    
Ring(ExpOrigin,40,60)
    
Ring(ExpOrigin,60,40)
    
Ring(ExpOrigin,80,20)
    
    static 
victim = -1
    
while((victim engfunc(EngFunc_FindEntityInSpherevictimExpOriginexpl_radius)) != 0)
    {
        if(
victim>0&&pev(victimpev_takedamage)!=DAMAGE_NO&&pev(victimpev_solid)!=SOLID_NOT)
        {    
            if(
is_user_connected(victim))
            {
                
#if defined ZombiePlague
                
if(zp_get_user_zombie(victim))
                
#else
                
if(get_user_team(victim)!=get_user_team(owner))
                
#endif
                    
ExecuteHamB(Ham_TakeDamagevictimentowner,expl_damage DMG_NERVEGAS),
                    
ScreenFadeAndShake(victim)
            }
            else 
ExecuteHamB(Ham_TakeDamagevictimentowner,expl_damage_ent DMG_NERVEGAS)
        }
    }
    
    
//Make Cluster Grenade
    //Code by Alexander.3 - http://forum.zombielite.ru/index.php?/topic/81-clustergrenade/
    
for (new i=0;i<random_num(cluster_num_min,cluster_num_max); i++)
    {    
        new 
bomb            
        bomb 
engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))    // رîçنàهى ‎يٍèٍè
        
engfunc(EngFunc_SetOriginbombExpOrigin)    // سٌٍàيàâëèâàهى êîîًنèيàٍû نëے ٌîçنàييîé ‎يٍèٍè
        
engfunc(EngFunc_SetModelbombcluster_models)    // سٌٍàيàâëèâàهى ىîنهëüêَ
        
set_pev(bombpev_solidSOLID_TRIGGER)        // رîëèنيîٌٍü ٌٍàâèى يà TRGGGER, ÷ٍî لû يه âçًûâàëèٌü ًàيüّه يَويîمî âًهىهيè
        
set_pev(bombpev_classnameCluster_Classname)    // سٌٍàيàâëèâàهى ClassName نëے ïًîâهًêè â Touch ‎âهيٍه
        
set_pev(bombpev_movetypeMOVETYPE_TOSS)    // سٌٍàيàâëèâàهى MOVETYPE_TOSS
        
set_pev(bombpev_ownerpev(entpev_owner))    // سٌٍàيàâëèâàهى èينهêٌ èمًîêà نëے ‎يٍèٍè
        
Util_PlayAnimation(bomb,1,0.6)    //Play Anim
        // ذàلîٍà ٌ ًàçلًîٌîى, لَنهٍ ًàينîىيàے â ïًهنهëه ëèىèٍà.
        
new Float:velocity[3]
        
velocity[0] = random_float(-random_float(cluster_rad_min,cluster_rad_max), random_float(cluster_rad_min,cluster_rad_max))    
        
velocity[1] = random_float(-random_float(cluster_rad_min,cluster_rad_max), random_float(cluster_rad_min,cluster_rad_max))    
        
velocity[2] = random_float(-random_float(cluster_rad_min,cluster_rad_max), random_float(cluster_rad_min,cluster_rad_max))+ random_float(cluster_up_min,cluster_up_max)
        
        
// سٌٍàيàâëèâàهى ٌèëَ ًàçëهٍà îٌêîëîê
        
set_pev(bombpev_velocityvelocity)
        
        new 
FloatAngles[3]
        
Angles[1]=random_float(0.0,360.0)
        
set_pev(bomb,pev_angles,Angles)
        
        
Trail(bomb,g_Trail,4,4,255,155,55,255)
    }
    
//And remove pumkin...
    
if(pev_valid(ent))engfunc(EngFunc_RemoveEntityent)
}
public 
Cluster_Explode(ent)
{
    if (!
pev_valident ))return
    
    new 
Float:ExpOrigin[3],victim = -1
    
    pev
(entpev_originExpOrigin)
    
    
Ring(ExpOrigin,20,40)
    
Ring(ExpOrigin,40,20)
    
Light(ExpOrigin,15,250,150,50,15)
    
    
//Explode
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYExpOrigin0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordExpOrigin[0])
    
engfunc(EngFunc_WriteCoordExpOrigin[1])
    
engfunc(EngFunc_WriteCoordExpOrigin[2] + 15.0)
    
write_short(spriteexpl)
    
write_byte(5)
    
write_byte(10)
    
write_byte(0)
    
message_end()
    
    while((
victim engfunc(EngFunc_FindEntityInSpherevictimExpOrigincluster_radius)) != 0)
    {
        if(
victim>0&&pev(victimpev_takedamage)!=DAMAGE_NO&&pev(victimpev_solid)!=SOLID_NOT)
        {    
            if(
is_user_connected(victim))
            {
                
#if defined ZombiePlague
                
if(zp_get_user_zombie(victim))
                
#else
                
if(get_user_team(victim)!=get_user_team(pev(ent,pev_owner)))
                
#endif
                    
ExecuteHamB(Ham_TakeDamagevictimentpev(ent,pev_owner),cluster_damage DMG_NERVEGAS),
                    
ScreenFadeAndShake(victim)
            }
            else 
ExecuteHamB(Ham_TakeDamagevictimentpev(ent,pev_owner),cluster_damage_ent DMG_NERVEGAS)
        }
    }
    if(
pev_valid(ent))engfunc(EngFunc_RemoveEntityent)    //and remove entity
}
//Stocks
stock Trail(ent,sprite,life,size,R,G,B,F)
{
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BEAMFOLLOW)
        
write_short(ent)
        
write_short(sprite)
        
write_byte(life)
        
write_byte(size)
        
write_byte(R)
        
write_byte(G)
        
write_byte(B)
        
write_byte(F)
        
message_end()
}
stock ExplodeDecals(Float:Origin[3])
{
    
engfunc(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
    
write_byte(TE_WORLDDECAL)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_byte(engfunc(EngFunc_DecalIndex,"{scorch3"))
    
message_end()
}

stock Light(Float:Origin[3],RAD,R,G,B,Life)
{
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_DLIGHT)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_byte(RAD)    //Radius
    
write_byte(R)    // r
    
write_byte(G)    // g
    
write_byte(B)    // b
    
write_byte(Life)    //Life
    
write_byte(10)
    
message_end() 
}
stock Ring(Float:flOrigin[3],Size,width)
{
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflOrigin0)
    
write_byte(TE_BEAMCYLINDER)            // TE id
    
engfunc(EngFunc_WriteCoordflOrigin[0])        // x
    
engfunc(EngFunc_WriteCoordflOrigin[1])        // y
    
engfunc(EngFunc_WriteCoordflOrigin[2]-20.0)        // z
    
engfunc(EngFunc_WriteCoordflOrigin[0])        // x axis
    
engfunc(EngFunc_WriteCoordflOrigin[1])        // y axis
    
engfunc(EngFunc_WriteCoordflOrigin[2] + Size)    // z axis
    
write_short(g_sprRing)     // sprite
    
write_byte(0)         // startframe
    
write_byte(0)         // framerate
    
write_byte(10)         // life
    
write_byte(width)     // width
    
write_byte(0)         // noise
    
write_byte(255)         // red
    
write_byte(155)         // green
    
write_byte(55)         // blue
    
write_byte(255)         // brightness
    
write_byte(0)         // speed
    
message_end()
}
stock ScreenFadeAndShake(victim)
{
    
// ScreenShake        
    
message_begin(MSG_ONE_UNRELIABLEMsg_ScreenShake, {0,0,0}, victim)
    
write_short(1<<14)
    
write_short((1<<12) * 8)
    
write_short((2<<12) * 7)
    
message_end()
            
    
//ScreenFade
    
message_begin(MSG_ONE_UNRELIABLEMsg_ScreenFade_victim)
    
write_short(6<<8)
    
write_short(6<<10)
    
write_short(1<<1)
    
write_byte(255)
    
write_byte(155)
    
write_byte(55)
    
write_byte(255)
    
message_end()    
}
stock Util_PlayAnimation(indexsequenceFloatframerate 1.0)
{
      
set_pev(indexpev_animtimeget_gametime())
      
set_pev(indexpev_framerate,  framerate)
      
set_pev(indexpev_frame0.0)
      
set_pev(indexpev_sequencesequence)

Help me with those ^^ only , sorry im a newbie/noobie be patient with me please
KhaledAwesome is offline
KhaledAwesome
Member
Join Date: Jul 2013
Old 01-13-2016 , 08:34   Re: knockback problem + weapons problem
Reply With Quote #2

At least , what to do with the knockback?
KhaledAwesome is offline
Depresie
Veteran Member
Join Date: Nov 2013
Old 01-22-2016 , 20:29   Re: knockback problem + weapons problem
Reply With Quote #3

Knockback >

for ducking -> zp_knockback_ducking, look for this cvar in the zombie plague.cfg
for jumping -> the velocity of the entities is lesser while on ground, on your words, the ground reduces the knockback

painshock -> it's not knockback, it is slowing the entity, not pushing it back

Weapon fix ->
Find and delete this line
Code:
public zp_user_humanized_post(id)
{
    g_has_m200[id] = false
}
__________________

Last edited by Depresie; 01-22-2016 at 20:37.
Depresie is offline
Reply



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

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

Forum Jump


All times are GMT -4. The time now is 02:55.


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