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

CurrentWeapon X Ham_Item_Deploy [HELP]


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
MeliMeli
Senior Member
Join Date: Apr 2022
Location: Brazil
Old 04-26-2023 , 18:03   CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #1

Hello people, I have a doubt as to how to change a model of a gun. Of course, Ham_Item_Deploy is the best option from what I've seen in several posts researching. But I'm in doubt about a plugin because it uses CurrentWeapon and Ham_item_deploy.

First:

PHP Code:
register_event("CurWeapon","CurrentWeapon","be","1=1"
In this event he:

PHP Code:
public CurrentWeapon(id)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_AWP || !g_has_sniper[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_sniper[id])
          
iSpeed get_pcvar_float(cvar_spd_sniper)
     
     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)
          }
     }

But he also uses Ham_Item_Deploy:

PHP Code:
    for (new 1sizeof WEAPONENTNAMESi++)
    if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
  
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)
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_AWP:
        {
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id))
                return
            
            if(
g_has_sniper[id])
            {
                
set_pev(idpev_viewmodel2sniper_V_MODEL)
                
set_pev(idpev_weaponmodel2sniper_P_MODEL)
                if(
oldweap[id] != CSW_AWP
                {
                    
UTIL_PlayWeaponAnimation(idsniper_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)

                    
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
                    
write_string("weapon_sniperultra")
                    
write_byte(4)
                    
write_byte(90)
                    
write_byte(-1)
                    
write_byte(-1)
                    
write_byte(0)
                    
write_byte(16)
                    
write_byte(CSW_AWP)
                    
message_end()
                }
            }
        }
    }
    
oldweap[id] = weaponid

I noticed that if I remove the curweapon event, in the WeaponPickup event the sniper model defaults. Shouldn't ham_item_deploy switch? And also, currentweapon doesn't change the model every time the weapon is updated, so what is ham_item_deploy going to do?

And worse, will there be 2 functions working to change the model?

Last edited by MeliMeli; 04-26-2023 at 18:03.
MeliMeli is offline
Celena Luna
Veteran Member
Join Date: Aug 2013
Location: Nagazora
Old 04-26-2023 , 21:05   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #2

Ham_Item_Deploy will execte right at the moment you switch to that weapon which is guarantee for the plugin to replace the default models.

Meanwhile, CurWeapon will execute and check almost every secs/frames you holding the weapon but there is still a chance it missed the timing when you pickup/switch weapon. Think it is like a set_task with loop b.
__________________
My plugin:

Last edited by Celena Luna; 04-26-2023 at 21:05.
Celena Luna is offline
MeliMeli
Senior Member
Join Date: Apr 2022
Location: Brazil
Old 04-27-2023 , 09:37   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #3

So, but isn't it bad to have those 2 in the code? unfortunately I couldn't remove the curweapon because the moment the player picks up the weapon the model is the default CS, you would need to change it hands and go back for the model of it to appear

So I no longer have any idea what else to do
MeliMeli is offline
Celena Luna
Veteran Member
Join Date: Aug 2013
Location: Nagazora
Old 04-27-2023 , 13:44   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #4

Quote:
Originally Posted by MeliMeli View Post
So, but isn't it bad to have those 2 in the code? unfortunately I couldn't remove the curweapon because the moment the player picks up the weapon the model is the default CS, you would need to change it hands and go back for the model of it to appear

So I no longer have any idea what else to do
I feel like you did something wrong which cause I have never encounter any problem with Ham_Item_Deploy

PHP Code:
public fw_Item_Deploy_Post(Ent)
{
    if(
pev_valid(Ent) != 2)
        return
    static 
IdId get_pdata_cbase(Ent414)
    if(
get_pdata_cbase(Id373) != Ent)
        return
    if(!
Get_BitVar(g_Had_WeaponId))
        return
    
    
set_pev(Idpev_viewmodel2szWeaponModel[MODEL_V])
    
set_pev(Idpev_weaponmodel2szWeaponModel[MODEL_P])
    
Set_WeaponAnim(IdANIM_DRAW)

__________________
My plugin:
Celena Luna is offline
Jhob94
AMX Mod X Donor
Join Date: Jul 2012
Old 04-27-2023 , 15:55   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #5

Quote:
Originally Posted by MeliMeli View Post
So, but isn't it bad to have those 2 in the code? unfortunately I couldn't remove the curweapon because the moment the player picks up the weapon the model is the default CS, you would need to change it hands and go back for the model of it to appear

So I no longer have any idea what else to do
Post the whole code. You doing something wrong if it ignores Item Deploy.
Maybe the player doesn't have g_has_sniper[id] on the moment item deploy is called.

Btw the code is really poorly coded. It works but.. At what cost?
__________________
Jhob94 is offline
MeliMeli
Senior Member
Join Date: Apr 2022
Location: Brazil
Old 04-27-2023 , 16:20   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #6

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 skull5_WEAPONKEY         814
#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 skull5_RELOAD_TIME 2.0
#define skull5_SHOOT1         1
#define skull5_SHOOT2         2
#define skull5_RELOAD         3
#define skull5_DRAW         4

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

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

new 
skull5_V_MODEL[64] = "models/SKULL5/v_skull5.mdl"
new skull5_P_MODEL[64] = "models/SKULL5/p_skull5.mdl"
new skull5_W_MODEL[64] = "models/SKULL5/w_skull5.mdl"

new const GUNSHOT_DECALS[] = { 4142434445 }

new 
cvar_dmg_skull5cvar_recoil_skull5g_itemid_skull5cvar_clip_skull5cvar_spd_skull5cvar_skull5_ammo
new g_MaxPlayersg_orig_event_skull5g_IsInPrimaryAttack
new Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_has_skull5[33], g_clip_ammo[33], g_skull5_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: skull5""1.0""Crock / =) (Poprogun4ik) / LARS-DAY[BR]EAKER")
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_sg550""fw_skull5_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_sg550""fw_skull5_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_sg550""fw_skull5_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrame"weapon_sg550""skull5_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reload"weapon_sg550""skull5_Reload")
    
RegisterHam(Ham_Weapon_Reload"weapon_sg550""skull5_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_skull5 register_cvar("zp_skull5_dmg""1.31")
    
cvar_recoil_skull5 register_cvar("zp_skull5_recoil""0.84")
    
cvar_clip_skull5 register_cvar("zp_skull5_clip""24")
    
cvar_spd_skull5 register_cvar("zp_skull5_spd""1.03")
    
cvar_skull5_ammo register_cvar("zp_skull5_ammo""240")
    
    
g_itemid_skull5 zp_register_extra_item("Skull-5"65ZP_TEAM_HUMAN)
    
g_MaxPlayers get_maxplayers()
    
gmsgWeaponList get_user_msgid("WeaponList")
}

public 
plugin_precache()
{
    
precache_model(skull5_V_MODEL)
    
precache_model(skull5_P_MODEL)
    
precache_model(skull5_W_MODEL)
    for(new 
0sizeof Fire_Soundsi++)
    
precache_sound(Fire_Sounds[i])    
    
precache_sound("weapons/SKULL5/skull5_clipin.wav")
    
precache_sound("weapons/SKULL5/skull5_clipout.wav")
    
precache_sound("weapons/SKULL5/skull5_boltpull.wav")
    
precache_sound("weapons/SKULL5/skull5_draw.wav")
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")
    
precache_generic("sprites/weapon_skull5.txt")
       
precache_generic("sprites/640hud57.spr")
        
precache_generic("sprites/640hud7.spr")
    
        
register_clcmd("weapon_skull5""weapon_hook")    

    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}

public 
weapon_hook(id)
{
        
engclient_cmd(id"weapon_sg550")
        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_SG550) return
    
    if(!
g_has_skull5[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_skull5[id] = false
}

public 
plugin_natives ()
{
    
register_native("give_weapon_skull5""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_skull5(id)
}

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

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

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

public 
zp_user_infected_post(id)
{
    if (
zp_get_user_zombie(id))
    {
        
g_has_skull5[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_sg550.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_sg550"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED
    
        
if(g_has_skull5[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYskull5_WEAPONKEY)
            
            
g_has_skull5[iOwner] = false
            
            entity_set_model
(entityskull5_W_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
give_skull5(id)
{
    
drop_weapons(id1)
    new 
iWep2 give_item(id,"weapon_sg550")
    if( 
iWep2 )
    {
        
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_skull5))
        
cs_set_user_bpammo (idCSW_SG550get_pcvar_num(cvar_skull5_ammo))    
        
UTIL_PlayWeaponAnimation(idskull5_DRAW)
        
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)

        
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_skull5")
        
write_byte(4)
        
write_byte(90)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(16)
        
write_byte(CSW_SG550)
        
message_end()
    }
    
g_has_skull5[id] = true
}

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

    
give_skull5(id)
}

public 
fw_skull5_AddToPlayer(skull5id)
{
    if(!
is_valid_ent(skull5) || !is_user_connected(id))
        return 
HAM_IGNORED
    
    
if(entity_get_int(skull5EV_INT_WEAPONKEY) == skull5_WEAPONKEY)
    {
        
g_has_skull5[id] = true
        
        entity_set_int
(skull5EV_INT_WEAPONKEY0)

        
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_skull5")
        
write_byte(4)
        
write_byte(90)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(16)
        
write_byte(CSW_SG550)
        
message_end()
        
        return 
HAM_HANDLED
    
}
    else
    {
        
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_sg550")
        
write_byte(4)
        
write_byte(90)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(16)
        
write_byte(CSW_SG550)
        
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_SG550 || !g_has_skull5[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_skull5[id])
          
iSpeed get_pcvar_float(cvar_spd_skull5)
     
     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_SG550:
        {
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id))
                return
            
            if(
g_has_skull5[id])
            {
                
set_pev(idpev_viewmodel2skull5_V_MODEL)
                
set_pev(idpev_weaponmodel2skull5_P_MODEL)
                if(
oldweap[id] != CSW_SG550
                {
                    
UTIL_PlayWeaponAnimation(idskull5_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)

                    
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
                    
write_string("weapon_skull5")
                    
write_byte(4)
                    
write_byte(90)
                    
write_byte(-1)
                    
write_byte(-1)
                    
write_byte(0)
                    
write_byte(16)
                    
write_byte(CSW_SG550)
                    
message_end()
                }
            }
        }
    }
    
oldweap[id] = weaponid
}

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

public 
fw_skull5_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_skull5[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_skull5) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_skull5_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_skull5[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_skull5),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(skull5_SHOOT1skull5_SHOOT2))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_SG550)
        {
            if(
g_has_skull5[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_skull5))
        }
    }
}

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"sg550") && get_user_weapon(iAttacker) == CSW_SG550)
    {
        if(
g_has_skull5[iAttacker])
            
set_msg_arg_string(4"sg550")
    }
    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 
skull5_ItemPostFrame(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_skull5[id])
          return 
HAM_IGNORED

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

     new 
iBpAmmo cs_get_user_bpammo(idCSW_SG550)
     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_SG550iBpAmmo-j)
        
         
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
         
fInReload 0
     
}
     return 
HAM_IGNORED
}

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

     
if (!g_has_skull5[id])
          return 
HAM_IGNORED

     
static iClipExtra

     
if(g_has_skull5[id])
          
iClipExtra get_pcvar_num(cvar_clip_skull5)

     
g_skull5_TmpClip[id] = -1

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

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE

     
if (iClip >= iClipExtra)
          return 
HAM_SUPERCEDE

     g_skull5_TmpClip
[id] = iClip

     
return HAM_IGNORED
}

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

    
if (!g_has_skull5[id])
        return 
HAM_IGNORED

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

    set_pdata_int
(weapon_entitym_iClipg_skull5_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdleskull5_RELOAD_TIMEWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttackskull5_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(idskull5_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)
          }
     }

MeliMeli is offline
Jhob94
AMX Mod X Donor
Join Date: Jul 2012
Old 04-27-2023 , 16:44   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #7

On public give_skull(id) set the bool g_has_skull5[id] true before give the item.
This is terribly coded btw, if you running many plugins like this and you have full server you can say RIP Cpu and expect some crashes
__________________
Jhob94 is offline
MeliMeli
Senior Member
Join Date: Apr 2022
Location: Brazil
Old 04-27-2023 , 17:03   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #8

Actually I think it's just that and another that a bad coding like that

I think CPU is no problem if the machine is very good, not that I should be sloppy and use any plugin. Do you know anywhere with good coders?

And thanks for the suggestion, I like this weapon, but unfortunately I didn't find an optimized version of it
MeliMeli is offline
Jhob94
AMX Mod X Donor
Join Date: Jul 2012
Old 04-27-2023 , 17:08   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #9

A place with good coders is here. But zombie plugins are usually a mess like that. Most people don’t care as long as it works. Then they come here asking why their servers crash
__________________
Jhob94 is offline
MeliMeli
Senior Member
Join Date: Apr 2022
Location: Brazil
Old 04-27-2023 , 17:35   Re: CurrentWeapon X Ham_Item_Deploy [HELP]
Reply With Quote #10

True, xd, I saw your name and remembered you here, you used the photo of some guy using a bow, I used a plugin of yours to precache, very good, good to know it's back
MeliMeli 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 19:17.


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