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

Solved [Help] Weapon Drop


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Thew_ConFiger
Member
Join Date: Apr 2019
Old 01-23-2021 , 06:58   [Help] Weapon Drop
Reply With Quote #1

Hello .How can i make this weapon undroppable (Players cant drop this weapon )
PHP Code:
#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Tornado"
#define VERSION "1.0"
#define AUTHOR "GenDa"

#define CustomItem(%0) (pev(%0, pev_impulse) == WEAPON_KEY)


#define m_rgpPlayerItems_CWeaponBox 34


#define m_pPlayer 41
#define m_pNext 42
#define m_iId 43


#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47
#define m_flTimeWeaponIdle 48
#define m_iPrimaryAmmoType 49
#define m_iClip 51
#define m_fInReload 54
#define m_iWeaponState 74
#define m_flNextReload 75


#define m_flNextAttack 83


#define m_rpgPlayerItems 367
#define m_pActiveItem 373
#define m_rgAmmo 376
#define m_szAnimExtention 492

#define ANIM_IDLE 2
#define ANIM_ATTACK 5
#define ANIM_ATTACK_END 11
#define ANIM_ATTACK_EMPTY 8
#define ANIM_RELOAD 14
#define ANIM_DRAW 19

#define ANIM_IDLE_TIME 6.04
#define ANIM_RELOAD_TIME 3.54
#define ANIM_DRAW_TIME 1.37

#define WEAPON_KEY 40
#define WEAPON_TORN "weapon_aug"
#define WEAPON_NEW "weapon_tornado"
#define WEAPON_LASER "sprites/tornado-laser.spr"

#define WEAPON_ITEM_NAME "Tornado"
#define WEAPON_ITEM_COST 0

#define WEAPON_MODEL_V "models/v_tornado.mdl"
#define WEAPON_MODEL_P "models/p_tornado.mdl"
#define WEAPON_MODEL_W "models/w_tornado.mdl"
#define WEAPON_SOUND_S "weapons/tornado-3.wav"
#define WEAPON_SOUND_E "weapons/tornado-shoot_end.wav"
#define WEAPON_BODY 0

#define WEAPON_CLIP 70
#define WEAPON_AMMO 210
#define WEAPON_RATE 0.09
#define WEAPON_RECOIL 0.3
#define WEAPON_DAMAGE 1.1

new g_AllocString_Vg_AllocString_Pg_AllocString_E
new HamHook:g_fw_TraceAttack[4]
new 
g_iMsgID_Weaponlist
new iSpriteIndexTrail
public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR);
    
RegisterHam(Ham_Item_DeployWEAPON_TORN"fw_Item_Deploy_Post"1);
    
RegisterHam(Ham_Item_HolsterWEAPON_TORN"fw_Item_Holster_Post"1);
    
RegisterHam(Ham_Item_PostFrameWEAPON_TORN"fw_Item_PostFrame");
    
RegisterHam(Ham_Item_AddToPlayerWEAPON_TORN"fw_Item_AddToPlayer_Post"1);
    
    
RegisterHam(Ham_Weapon_ReloadWEAPON_TORN"fw_Weapon_Reload");
    
RegisterHam(Ham_Weapon_WeaponIdleWEAPON_TORN"fw_Weapon_WeaponIdle");
    
RegisterHam(Ham_Weapon_PrimaryAttackWEAPON_TORN"fw_Weapon_PrimaryAttack");
    
    
g_fw_TraceAttack[0] = RegisterHam(Ham_TraceAttack"func_breakable""fw_TraceAttack");
    
g_fw_TraceAttack[1] = RegisterHam(Ham_TraceAttack"info_target",    "fw_TraceAttack");
    
g_fw_TraceAttack[2] = RegisterHam(Ham_TraceAttack"player",         "fw_TraceAttack");
    
g_fw_TraceAttack[3] = RegisterHam(Ham_TraceAttack"hostage_entity""fw_TraceAttack");
    
fm_ham_hook(false);
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1);
    
register_forward(FM_PlaybackEvent"fw_PlaybackEvent");
    
register_forward(FM_SetModel"fw_SetModel");
    
g_iMsgID_Weaponlist get_user_msgid("WeaponList");
    
register_clcmd(WEAPON_NEW"HookSelect");
}
public 
plugin_precache() {
    
g_AllocString_V engfunc(EngFunc_AllocStringWEAPON_MODEL_V);
    
g_AllocString_P engfunc(EngFunc_AllocStringWEAPON_MODEL_P);
    
g_AllocString_E engfunc(EngFunc_AllocStringWEAPON_TORN);
    
iSpriteIndexTrail engfunc(EngFunc_PrecacheModelWEAPON_LASER);
    
engfunc(EngFunc_PrecacheModelWEAPON_MODEL_V);
    
engfunc(EngFunc_PrecacheModelWEAPON_MODEL_P);
    
engfunc(EngFunc_PrecacheModelWEAPON_MODEL_W);

    new const 
WPN_SOUND[][] = {
        
"weapons/tornado_clipin.wav",
        
"weapons/tornado_clipout.wav",
        
"weapons/tornado_draw.wav"
    
}
    for(new 
0sizeof WPN_SOUND;i++) engfunc(EngFunc_PrecacheSoundWPN_SOUND[i]);
    
engfunc(EngFunc_PrecacheSoundWEAPON_SOUND_S);
    
engfunc(EngFunc_PrecacheSoundWEAPON_SOUND_E);
    
precache_generic("sprites/weapon_tornado.txt")
precache_generic("sprites/640hud149.spr")
precache_generic("sprites/640hud17.spr")
// Get
    
register_clcmd("tornado""give_weapon")
}
public 
plugin_natives() {
    
register_native("tornado""give_weapon"1);
}
public 
HookSelect(iPlayer) {
    
engclient_cmd(iPlayerWEAPON_TORN);
    return 
PLUGIN_HANDLED;
}
public 
give_weapon(iPlayer) {
    static 
iEntiEnt engfunc(EngFunc_CreateNamedEntityg_AllocString_E);
    if(
iEnt <= 0) return 0;
    
set_pev(iEntpev_spawnflagsSF_NORESPAWN);
    
set_pev(iEntpev_impulseWEAPON_KEY);
    
ExecuteHam(Ham_SpawniEnt);
    
UTIL_DropWeapon(iPlayer1);
    if(!
ExecuteHamB(Ham_AddPlayerItemiPlayeriEnt)) {
        
engfunc(EngFunc_RemoveEntityiEnt);
        return 
0;
    }
    
ExecuteHamB(Ham_Item_AttachToPlayeriEntiPlayer);
    
set_pdata_int(iEntm_iClipWEAPON_CLIP4);
    new 
iAmmoType m_rgAmmo +get_pdata_int(iEntm_iPrimaryAmmoType4);
    if(
get_pdata_int(iPlayerm_rgAmmo5) < WEAPON_AMMO)
    
set_pdata_int(iPlayeriAmmoTypeWEAPON_AMMO5);
    
emit_sound(iPlayerCHAN_ITEM"items/gunpickup2.wav"VOL_NORMATTN_NORM0PITCH_NORM);
    return 
1;
}
public 
fw_Item_Deploy_Post(iItem) {
    if(!
CustomItem(iItem)) return;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayer4);
    
set_pev_string(iPlayerpev_viewmodel2g_AllocString_V);
    
set_pev_string(iPlayerpev_weaponmodel2g_AllocString_P);
    
set_pdata_string(iPlayerm_szAnimExtention 4"m249", -120);
    
UTIL_SendWeaponAnim(iPlayerANIM_DRAW);
    
set_pdata_float(iPlayerm_flNextAttackANIM_DRAW_TIME5);
    
set_pdata_float(iItemm_flTimeWeaponIdleANIM_DRAW_TIME4);
    
set_pdata_float(iItemm_flNextReload0.04);
    
set_pdata_int(iItemm_iWeaponState04);
}
public 
fw_Item_Holster_Post(iItem) {
    if(!
CustomItem(iItem)) return HAM_IGNORED;
    new 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayer4);
    
emit_sound(iPlayerCHAN_WEAPON"common/null.wav"1.0ATTN_NORM0PITCH_NORM);
    return 
HAM_IGNORED;
}
public 
fw_Item_PostFrame(iItem) {
    if(!
CustomItem(iItem)) return HAM_IGNORED;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayer4);
    if(
get_pdata_int(iItemm_fInReload4) == 1) {
        static 
iClipiClip get_pdata_int(iItemm_iClip4);
        static 
iAmmoTypeiAmmoType m_rgAmmo get_pdata_int(iItemm_iPrimaryAmmoType4);
        static 
iAmmoiAmmo get_pdata_int(iPlayeriAmmoType5);
        static 
jmin(WEAPON_CLIP iClipiAmmo);
        
set_pdata_int(iItemm_iClipiClip+j4);
        
set_pdata_int(iPlayeriAmmoTypeiAmmo-j5);
        
set_pdata_int(iItemm_fInReload04);
    }
    if(!(
pev(iPlayerpev_oldbuttons) & IN_ATTACK)) {
        if(
get_pdata_int(iItemm_iWeaponState4) == 1) {
            
set_pdata_int(iItemm_iWeaponState04);
            
emit_sound(iPlayerCHAN_WEAPONWEAPON_SOUND_EVOL_NORMATTN_NORM0PITCH_NORM);
            
UTIL_SendWeaponAnim(iPlayerANIM_ATTACK_END);
            
set_pdata_float(iItemm_flTimeWeaponIdle0.74);
            
set_pdata_float(iItemm_flNextReload0.04);
            
set_pdata_float(iPlayerm_flNextAttack0.75);
        }
    }
    return 
HAM_IGNORED;
}
public 
fw_Item_AddToPlayer_Post(iItemiPlayer) {
    switch(
pev(iItempev_impulse)) {
        case 
WEAPON_KEYs_weaponlist(iPlayertrue);
        case 
0s_weaponlist(iPlayerfalse);
    }
}
public 
fw_Weapon_Reload(iItem) {
    if(!
CustomItem(iItem)) return HAM_IGNORED;
    static 
iClipiClip get_pdata_int(iItemm_iClip4);
    if(
iClip >= WEAPON_CLIP) return HAM_SUPERCEDE;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayer4);
    static 
iAmmoTypeiAmmoType m_rgAmmo get_pdata_int(iItemm_iPrimaryAmmoType4);
    if(
get_pdata_int(iPlayeriAmmoType5) <= 0) return HAM_SUPERCEDE

    set_pdata_int
(iItemm_iClip04);
    
ExecuteHam(Ham_Weapon_ReloadiItem);
    
set_pdata_int(iItemm_iClipiClip4);
    
set_pdata_float(iItemm_flNextPrimaryAttackANIM_RELOAD_TIME4);
    
set_pdata_float(iItemm_flNextSecondaryAttackANIM_RELOAD_TIME4);
    
set_pdata_float(iItemm_flTimeWeaponIdleANIM_RELOAD_TIME4);
    
set_pdata_float(iPlayerm_flNextAttackANIM_RELOAD_TIME5);

    
UTIL_SendWeaponAnim(iPlayerANIM_RELOAD);
    return 
HAM_SUPERCEDE;
}
public 
fw_Weapon_WeaponIdle(iItem) {
    if(!
CustomItem(iItem) || get_pdata_float(iItemm_flTimeWeaponIdle4) > 0.0) return HAM_IGNORED;
    
UTIL_SendWeaponAnim(get_pdata_cbase(iItemm_pPlayer4), ANIM_IDLE);
    
set_pdata_float(iItemm_flTimeWeaponIdleANIM_IDLE_TIME4);
    return 
HAM_SUPERCEDE;
}
public 
fw_Weapon_PrimaryAttack(iItem) {
    if(!
CustomItem(iItem)) return HAM_IGNORED;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayer4);
    if(
get_pdata_int(iItemm_iClip4) == 0) {
        
ExecuteHam(Ham_Weapon_PlayEmptySoundiItem);
        
set_pdata_float(iItemm_flNextPrimaryAttack0.24);
        if(
pev(iPlayerpev_weaponanim) != ANIM_ATTACK_EMPTY) {
            
UTIL_SendWeaponAnim(iPlayerANIM_ATTACK_EMPTY);
        }
        return 
HAM_SUPERCEDE;
    }
    static 
fw_TraceLinefw_TraceLine register_forward(FM_TraceLine"fw_TraceLine_Post"1);
    
fm_ham_hook(true);
    
state FireBulletsEnabled;
    
ExecuteHam(Ham_Weapon_PrimaryAttackiItem);
    
state FireBulletsDisabled;
    
unregister_forward(FM_TraceLinefw_TraceLine1);
    
fm_ham_hook(false);
    static 
Float:vecPunchangle[3];
    static 
Float:vecOrigin[3]; fm_get_aim_origin(iPlayervecOrigin);

    
pev(iPlayerpev_punchanglevecPunchangle);
    
vecPunchangle[0] *= WEAPON_RECOIL;
    
vecPunchangle[1] *= WEAPON_RECOIL;
    
vecPunchangle[2] *= WEAPON_RECOIL;
    
set_pev(iPlayerpev_punchanglevecPunchangle);
    if(
get_pdata_float(iItemm_flNextReload4) <= get_gametime()) {
        
emit_sound(iPlayerCHAN_WEAPONWEAPON_SOUND_SVOL_NORMATTN_NORM0PITCH_NORM);
        
set_pdata_float(iItemm_flNextReloadget_gametime() + 10.04);
    }
    if(
pev(iPlayerpev_weaponanim) != ANIM_ATTACK) {
        
UTIL_SendWeaponAnim(iPlayerANIM_ATTACK);
    }

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(TE_BEAMENTPOINT);
    
write_short(iPlayer 0x1000);
    
engfunc(EngFunc_WriteCoordvecOrigin[0]);
    
engfunc(EngFunc_WriteCoordvecOrigin[1]);
    
engfunc(EngFunc_WriteCoordvecOrigin[2]);
    
write_short(iSpriteIndexTrail);
    
write_byte(0); // framestart
    
write_byte(1); // framerate
    
write_byte(2); // life
    
write_byte(10); // width
    
write_byte(3); // noise
    
write_byte(0); // red
    
write_byte(128); // green
    
write_byte(255); // blue
    
write_byte(200); // brightness
    
write_byte(10); // speed
    
message_end();

    
set_pdata_int(iItemm_iWeaponState14);
    
set_pdata_float(iItemm_flNextPrimaryAttackWEAPON_RATE4);
    
set_pdata_float(iItemm_flTimeWeaponIdle0.54);

    return 
HAM_SUPERCEDE;
}
public 
fw_PlaybackEvent() <FireBulletsEnabled> { return FMRES_SUPERCEDE; }
public 
fw_PlaybackEvent() <FireBulletsDisabled> { return FMRES_IGNORED; }
public 
fw_PlaybackEvent() <> { return FMRES_IGNORED; }
public 
fw_TraceAttack(iVictimiAttackerFloat:flDamage) {
    if(!
is_user_connected(iAttacker)) return;
    static 
iItemiItem get_pdata_cbase(iAttackerm_pActiveItem5);
    if(
iItem <= || !CustomItem(iItem)) return;
        
SetHamParamFloat(3flDamage WEAPON_DAMAGE);
}
public 
fw_UpdateClientData_Post(iPlayerSendWeaponsCD_Handle) {
    if(
get_cd(CD_HandleCD_DeadFlag) != DEAD_NO) return;
    static 
iItemiItem get_pdata_cbase(iPlayerm_pActiveItem5);
    if(
iItem <= || !CustomItem(iItem)) return;
    
set_cd(CD_HandleCD_flNextAttack999999.0);
}
public 
fw_SetModel(iEnt) {
    static 
iszClassname[32], iItem
    
pev(iEntpev_classnameszClassname31);
    if(!
equal(szClassname"weaponbox")) return FMRES_IGNORED;
    for(
06i++) {
        
iItem get_pdata_cbase(iEntm_rgpPlayerItems_CWeaponBox i4);
        if(
iItem && CustomItem(iItem)) {
            
engfunc(EngFunc_SetModeliEntWEAPON_MODEL_W);
            
set_pev(iEntpev_bodyWEAPON_BODY);
            return 
FMRES_SUPERCEDE;
        }
    }
    return 
FMRES_IGNORED;
}
public 
fw_TraceLine_Post(const Float:flOrigin1[3], const Float:flOrigin2[3], iFragiIgnoretr) {
    if(
iFrag IGNORE_MONSTERS) return FMRES_IGNORED;
    static 
pHitpHit get_tr2(trTR_pHit);
    if(
pHit 0) {
        if(
pev(pHitpev_solid) != SOLID_BSP) return FMRES_IGNORED;
    }
    return 
FMRES_IGNORED;
}
public 
fm_ham_hook(bool:on) {
    if(
on) {
        
EnableHamForward(g_fw_TraceAttack[0]);
        
EnableHamForward(g_fw_TraceAttack[1]);
        
EnableHamForward(g_fw_TraceAttack[2]);
        
EnableHamForward(g_fw_TraceAttack[3]);
    }
    else {
        
DisableHamForward(g_fw_TraceAttack[0]);
        
DisableHamForward(g_fw_TraceAttack[1]);
        
DisableHamForward(g_fw_TraceAttack[2]);
        
DisableHamForward(g_fw_TraceAttack[3]);
    }
}
stock UTIL_SendWeaponAnim(iPlayeriSequence) {
    
set_pev(iPlayerpev_weaponanimiSequence);
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_iPlayer);
    
write_byte(iSequence);
    
write_byte(0);
    
message_end();
}
stock UTIL_DropWeapon(iPlayeriSlot) {
    static 
iEntityiNextszWeaponName[32]; 
    
iEntity get_pdata_cbase(iPlayerm_rpgPlayerItems iSlot5);
    if(
iEntity 0) {       
                do{
                        
iNext get_pdata_cbase(iEntitym_pNext4)
                        if(
get_weaponname(get_pdata_int(iEntitym_iId4), szWeaponName31)) {  
                                
engclient_cmd(iPlayer"drop"szWeaponName);
            }
                } while(( 
iEntity iNext) > 0);
    }
}
//  4,  90, -1, -1, 0, 14,8,  0, // weapon_aug
stock s_weaponlist(iPlayerbool:on) {
    
message_begin(MSG_ONEg_iMsgID_Weaponlist_iPlayer);
    
write_string(on WEAPON_NEW WEAPON_TORN);
    
write_byte(4);
    
write_byte(on WEAPON_AMMO 90);
    
write_byte(-1);
    
write_byte(-1);
    
write_byte(0);
    
write_byte(14);
    
write_byte(8);
    
write_byte(0);
    
message_end();


Last edited by Thew_ConFiger; 01-23-2021 at 07:45.
Thew_ConFiger is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 01-23-2021 , 07:41   Re: [Help] Weapon Drop
Reply With Quote #2

By hooking the "drop" command and returning PLUGIN_HANDLED when the player is holding the weapon.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Thew_ConFiger
Member
Join Date: Apr 2019
Old 01-23-2021 , 07:45   Re: [Help] Weapon Drop
Reply With Quote #3

Oh nice idea . thank you very much bro
Thew_ConFiger is offline
Reply


Thread Tools
Display Modes

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

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

Forum Jump


All times are GMT -4. The time now is 11:49.


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