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

weapon does not drop


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
felipemilralze
Senior Member
Join Date: Jul 2011
Location: Brazil
Old 11-05-2015 , 11:08   weapon does not drop
Reply With Quote #1

Help me, that weapon it is dropping but remains on Gun slot

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zp50_core>
#include <zp50_items>
#include <xs>

#define PLUGIN "[ZP] Extra: Skull-4"
#define VERSION "1.0"
#define AUTHOR "KORD_12.7"

#pragma semicolon 1
#pragma ctrlchar '\'

//**********************************************
//* Weapon Settings.                           *
//**********************************************

// Main
#define WEAPON_NAME             "weapon_skull4"
#define WEAPON_REFERANCE        "weapon_ak47"
#define WEAPON_MAX_CLIP            45
#define WEAPON_DEFAULT_AMMO        90
#define WEAPON_MAX_SPEED        220.0

#define WEAPON_MULTIPLIER_DAMAGE     1.5

#define WEAPON_TIME_NEXT_IDLE         2.03
#define WEAPON_TIME_NEXT_ATTACK     0.0955
#define WEAPON_TIME_DELAY_DEPLOY     1.23
#define WEAPON_TIME_DELAY_RELOAD     3.43

#define ZP_ITEM_NAME            "VIP Skull4" 
#define ZP_ITEM_COST            25

// Models
#define MODEL_WORLD        "models/w_skull4.mdl"
#define MODEL_VIEW        "models/v_skull4.mdl"
#define MODEL_PLAYER        "models/p_skull4.mdl"
#define MODEL_SHELL        "models/rshell.mdl"

// Sounds
#define SOUND_FIRE        "weapons/skull4_shoot1.wav"
#define SOUND_DRAW        "weapons/skull4_draw.wav"
#define SOUND_CLIPIN        "weapons/skull4_clipin.wav"
#define SOUND_CLIPOUT        "weapons/skull4_clipout.wav"

// Sprites
#define WEAPON_HUD_TXT        "sprites/weapon_skull4.txt"
#define WEAPON_HUD_SPR_1    "sprites/640hud7.spr"
#define WEAPON_HUD_SPR_2    "sprites/640hud87.spr"

// Animation
#define ANIM_EXTENSION        "dualpistols"

// Animation sequences
enum
{    
    
ANIM_IDLE,
    
ANIM_RELOAD,
    
ANIM_DRAW,
    
ANIM_SHOOT_RIGHT,
    
ANIM_SHOOT_LEFT
};

//**********************************************
//* Some macroses.                             *
//**********************************************

#define MDLL_Spawn(%0)            dllfunc(DLLFunc_Spawn, %0)
#define MDLL_Touch(%0,%1)        dllfunc(DLLFunc_Touch, %0, %1)

#define SET_MODEL(%0,%1)        engfunc(EngFunc_SetModel, %0, %1)
#define SET_ORIGIN(%0,%1)        engfunc(EngFunc_SetOrigin, %0, %1)

#define PRECACHE_MODEL(%0)        engfunc(EngFunc_PrecacheModel, %0)
#define PRECACHE_SOUND(%0)        engfunc(EngFunc_PrecacheSound, %0)
#define PRECACHE_GENERIC(%0)        engfunc(EngFunc_PrecacheGeneric, %0)

#define MESSAGE_BEGIN(%0,%1,%2,%3)    engfunc(EngFunc_MessageBegin, %0, %1, %2, %3)
#define MESSAGE_END()            message_end()

#define WRITE_ANGLE(%0)            engfunc(EngFunc_WriteAngle, %0)
#define WRITE_BYTE(%0)            write_byte(%0)
#define WRITE_COORD(%0)            engfunc(EngFunc_WriteCoord, %0)
#define WRITE_STRING(%0)        write_string(%0)
#define WRITE_SHORT(%0)            write_short(%0)

#define INSTANCE(%0)            ((%0 == -1) ? 0 : %0)

//**********************************************
//* PvData Offsets.                            *
//**********************************************

// Linux extra offsets
#define extra_offset_weapon        4
#define extra_offset_player        5

// CWeaponBox
#define m_rgpPlayerItems_CWeaponBox    34

// CBasePlayerItem
#define m_pPlayer            41
#define m_pNext                42

// CBasePlayerWeapon
#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_iDirection            60
#define m_flAccuracy            62
#define m_iShotsFired            64
#define m_fWeaponState            74

// CBaseMonster
#define m_flNextAttack            83

// CBasePlayer
#define m_iFOV                363
#define m_rgpPlayerItems_CBasePlayer    367
#define m_pActiveItem            373
#define m_rgAmmo_CBasePlayer        376
#define m_szAnimExtention        492

#define IsValidPev(%0) (pev_valid(%0) == 2)

//**********************************************
//* Let's code our weapon.                     *
//**********************************************

#define VIPACCES ADMIN_IMMUNITY

Weapon_OnPrecache()
{
    
PRECACHE_MODEL(MODEL_VIEW);
    
PRECACHE_MODEL(MODEL_WORLD);
    
PRECACHE_MODEL(MODEL_PLAYER);
    
PRECACHE_MODEL(MODEL_SHELL);
    
    
PRECACHE_SOUND(SOUND_FIRE);
    
PRECACHE_SOUND(SOUND_DRAW);
    
PRECACHE_SOUND(SOUND_CLIPIN);
    
PRECACHE_SOUND(SOUND_CLIPOUT);
    
    
PRECACHE_GENERIC(WEAPON_HUD_TXT);
    
PRECACHE_GENERIC(WEAPON_HUD_SPR_1);
    
PRECACHE_GENERIC(WEAPON_HUD_SPR_2);
}

Weapon_OnSpawn(const iItem)
{
    
// Setting world model.
    
SET_MODEL(iItemMODEL_WORLD);
}

Weapon_OnDeploy(const iItem, const iPlayer, const iClip, const iAmmoPrimary)
{
    
#pragma unused iClip, iAmmoPrimary
    
    
static iszViewModel;
    if (
iszViewModel || (iszViewModel engfunc(EngFunc_AllocStringMODEL_VIEW)))
    {
        
set_pev_string(iPlayerpev_viewmodel2iszViewModel);
    }
    
    static 
iszPlayerModel;
    if (
iszPlayerModel || (iszPlayerModel engfunc(EngFunc_AllocStringMODEL_PLAYER)))
    {
        
set_pev_string(iPlayerpev_weaponmodel2iszPlayerModel);
    }
    
    
set_pdata_string(iPlayerm_szAnimExtention 4ANIM_EXTENSION, -1extra_offset_player 4);
    
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_TIME_DELAY_DEPLOYextra_offset_weapon);
    
set_pdata_float(iPlayerm_flNextAttackWEAPON_TIME_DELAY_DEPLOYextra_offset_player);

    
Weapon_SendAnim(iPlayerANIM_DRAW);
}

Weapon_OnHolster(const iItem, const iPlayer, const iClip, const iAmmoPrimary)
{
    
#pragma unused iPlayer, iClip, iAmmoPrimary
    
    // Cancel any reload in progress.
    
set_pdata_int(iItemm_fInReload0extra_offset_weapon);
}

Weapon_OnIdle(const iItem, const iPlayer, const iClip, const iAmmoPrimary)
{
    
#pragma unused iClip, iAmmoPrimary
    
    
ExecuteHamB(Ham_Weapon_ResetEmptySoundiItem);

    if (
get_pdata_int(iItemm_flTimeWeaponIdleextra_offset_weapon) > 0.0)
    {
        return;
    }
    
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_TIME_NEXT_IDLEextra_offset_weapon);
    
Weapon_SendAnim(iPlayerANIM_IDLE);
}

Weapon_OnReload(const iItem, const iPlayer, const iClip, const iAmmoPrimary)
{
    if (
min(WEAPON_MAX_CLIP iClipiAmmoPrimary) <= 0)
    {
        return;
    }

    if (
get_pdata_int(iPlayerm_iFOVextra_offset_player) != 90)
    {
        
Weapon_OnSecondaryAttack(iItemiPlayeriClipiAmmoPrimary);
    }
    
    
set_pdata_int(iItemm_iClip0extra_offset_weapon);
    
    
ExecuteHam(Ham_Weapon_ReloadiItem);
    
    
set_pdata_int(iItemm_iClipiClipextra_offset_weapon);
    
    
set_pdata_float(iPlayerm_flNextAttackWEAPON_TIME_DELAY_RELOADextra_offset_player);
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_TIME_DELAY_RELOADextra_offset_weapon);
    
    
Weapon_SendAnim(iPlayerANIM_RELOAD);
}

Weapon_OnPrimaryAttack(const iItem, const iPlayer, const iClip, const iAmmoPrimary)
{
    
#pragma unused iAmmoPrimary

    
CallOrigFireBullets3(iItemiPlayer);
    
    if (
iClip <= 0)
    {
        return;
    }
    
    static 
iFlagsiAnimDesired
    static 
iWeaponStateiShellModelIndex
    
    static 
szAnimation[64], FloatvecVelocity[3];
    
    
#define WEAPONSTATE_ELITE_LEFT (1 << 3)
    
    
if (!iShellModelIndex)
    {
        
iShellModelIndex PRECACHE_MODEL(MODEL_SHELL);
    }
    
    
iFlags pev(iPlayerpev_flags);
    
iWeaponState get_pdata_int(iItemm_fWeaponStateextra_offset_weapon);
    
    if (
iWeaponState WEAPONSTATE_ELITE_LEFT)
    {    
        
iWeaponState &= ~ WEAPONSTATE_ELITE_LEFT;
        
        
Weapon_SendAnim(iPlayerANIM_SHOOT_LEFT);
        
EjectBrass(iPlayeriShellModelIndex1, .flForwardScale 12.0, .flRightScale = -16.0);
        
        
formatex(szAnimationcharsmax(szAnimation), iFlags FL_DUCKING "crouch_shoot_%s" "ref_shoot_%s"ANIM_EXTENSION);
    }
    else
    {
        
iWeaponState |= WEAPONSTATE_ELITE_LEFT;
        
        
Weapon_SendAnim(iPlayerANIM_SHOOT_RIGHT);
        
EjectBrass(iPlayeriShellModelIndex1, .flForwardScale 8.0);
        
        
formatex(szAnimationcharsmax(szAnimation), iFlags FL_DUCKING "crouch_shoot2_%s" "ref_shoot2_%s"ANIM_EXTENSION);
    }
    
    if ((
iAnimDesired lookup_sequence(iPlayerszAnimation)) == -1)
    {
        
iAnimDesired 0;
    }
    
    
pev(iPlayerpev_velocityvecVelocity);
    
set_pev(iPlayerpev_sequenceiAnimDesired);
    
    
set_pdata_int(iItemm_fWeaponStateiWeaponStateextra_offset_weapon);
    
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_TIME_NEXT_IDLEextra_offset_weapon);
    
set_pdata_float(iItemm_flNextPrimaryAttackWEAPON_TIME_NEXT_ATTACKextra_offset_weapon);
    
set_pdata_float(iItemm_flNextSecondaryAttackWEAPON_TIME_NEXT_ATTACKextra_offset_weapon);
    
    
emit_sound(iPlayerCHAN_WEAPONSOUND_FIRE0.9ATTN_NORM0PITCH_NORM);
    
    if (
xs_vec_len(vecVelocity) > 0)
    {
        
Weapon_KickBack(iItemiPlayer1.50.450.2250.056.52.57);
    }
    else if (!(
iFlags FL_ONGROUND))
    {
        
Weapon_KickBack(iItemiPlayer2.01.00.50.359.06.05);
    }
    else if (
iFlags FL_DUCKING)
    {
        
Weapon_KickBack(iItemiPlayer0.90.350.150.0255.51.59);
    }
    else
    {
        
Weapon_KickBack(iItemiPlayer1.00.3750.1750.03755.751.758);
    }
}

Weapon_OnSecondaryAttack(const iItem, const iPlayer, const iClip, const iAmmoPrimary)
{
    
#pragma unused iClip, iAmmoPrimary

    
set_pdata_float(iItemm_flNextSecondaryAttack0.3extra_offset_weapon);
    
set_pdata_int(iPlayerm_iFOVget_pdata_int(iPlayerm_iFOVextra_offset_player) == 90 55 90extra_offset_player);
}

//*********************************************************************
//*           Don't modify the code below this line unless            *
//*               you know _exactly_ what you are doing!!!             *
//*********************************************************************

new g_iItemID;
new 
g_iszWeaponKey;
new 
g_msgWeaponList;

new 
g_iForwardDecalIndex;
new 
g_iForwardRegUserMsg;

#define IsCustomItem(%0) (pev(%0, pev_impulse) == g_iszWeaponKey)

public plugin_precache()
{
    
Weapon_OnPrecache();
    
    
g_iszWeaponKey engfunc(EngFunc_AllocStringWEAPON_NAME);
    
g_iForwardDecalIndex register_forward(FM_DecalIndex"FakeMeta_DecalIndex_Post"true);
    
    if ((
g_msgWeaponList get_user_msgid("WeaponList")))
    {
        
register_message(g_msgWeaponList"MsgHook_WeaponList");
    }
    else
    {
        
g_iForwardRegUserMsg register_forward(FM_RegUserMsg"FakeMeta_RegUserMsg_Post"true);
    }
    
    
state TraceAttack_Disabled;
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
g_iItemID zp_items_register(ZP_ITEM_NAMEZP_ITEM_COST);
    
    
unregister_forward(FM_DecalIndexg_iForwardDecalIndextrue);
    
unregister_forward(FM_RegUserMsgg_iForwardRegUserMsgtrue);
    
    
// Weaponbox
    
RegisterHam(Ham_Spawn,         "weaponbox",         "HamHook_Weaponbox_Spawn_Post"true);
    
    
// Hook and change damage to entities
    
RegisterHam(Ham_TraceAttack,    "func_breakable",    "HamHook_Entity_TraceAttack"false);
    
RegisterHam(Ham_TraceAttack,    "hostage_entity",    "HamHook_Entity_TraceAttack"false);
    
RegisterHam(Ham_TraceAttack,    "info_target",         "HamHook_Entity_TraceAttack"false);
    
RegisterHam(Ham_TraceAttack,    "player",         "HamHook_Entity_TraceAttack"false);
    
    
// Item (weapon) hooks
    
RegisterHam(Ham_Item_Deploy,        WEAPON_REFERANCE"HamHook_Item_Deploy_Post",    true);
    
RegisterHam(Ham_Item_Holster,        WEAPON_REFERANCE"HamHook_Item_Holster",    false);
    
RegisterHam(Ham_Item_AddToPlayer,    WEAPON_REFERANCE"HamHook_Item_AddToPlayer",    false);
    
RegisterHam(Ham_Item_PostFrame,        WEAPON_REFERANCE"HamHook_Item_PostFrame",    false);
    
RegisterHam(Ham_CS_Item_GetMaxSpeed,    WEAPON_REFERANCE"HamHook_Item_GetMaxSpeed",    false);
    
    
RegisterHam(Ham_Weapon_Reload,        WEAPON_REFERANCE"HamHook_Item_Reload",        false);
    
RegisterHam(Ham_Weapon_WeaponIdle,    WEAPON_REFERANCE"HamHook_Item_WeaponIdle",    false);
    
RegisterHam(Ham_Weapon_PrimaryAttack,    WEAPON_REFERANCE"HamHook_Item_PrimaryAttack",    false);
    
    
// Block client weapon here
    
register_forward(FM_UpdateClientData,    "FakeMeta_UpdateClientData_Post"true);
}

public 
zp_fw_items_select_pre(iditemidignorecost)
{
    if (
itemid != g_iItemID)
    {
        return 
ZP_ITEM_AVAILABLE;
    }
        
    if (
zp_core_is_zombie(id))
    {
        return 
ZP_ITEM_DONT_SHOW;
    }

    if(!(
get_user_flags(id) & VIPACCES))
        return 
ZP_ITEM_NOT_AVAILABLE;
        
    return 
ZP_ITEM_AVAILABLE;
}
    
public 
zp_fw_items_select_post(iditemidignorecost)
{
    if (
itemid == g_iItemID)
    {
        
Weapon_Give(id);
    }
}

//**********************************************
//* Block client weapon.                       *
//**********************************************

public FakeMeta_UpdateClientData_Post(const iPlayer, const iSendWeapons, const CD_Handle)
{
    static 
iActiveItem;
    
    if (!
IsValidPev(iPlayer))
    {
        return 
FMRES_IGNORED;
    }
    
    
iActiveItem get_pdata_cbase(iPlayerm_pActiveItemextra_offset_player);
    
    if (!
IsValidPev(iActiveItem) || !IsCustomItem(iActiveItem))
    {
        return 
FMRES_IGNORED;
    }
    
    
set_cd(CD_HandleCD_flNextAttackget_gametime() + 0.001);
    return 
FMRES_IGNORED;
}

//**********************************************
//* Item (weapon) hooks.                       *
//**********************************************

    #define _call.%0(%1,%2) \
                                
\
    
Weapon_On%0                        \
    (                            \
        %
1,                         \
        %
2,                        \
                                \
        
get_pdata_int(%1m_iClipextra_offset_weapon),    \
                                \
        
GetAmmoInventory(%2PrimaryAmmoIndex(%1))    \
    ) 

    
public 
HamHook_Item_GetMaxSpeed(const iItem)
{
    if (!
IsValidPev(iItem) || !IsCustomItem(iItem))
    {
        return 
HAM_IGNORED;
    }
    
    
SetHamReturnFloat(WEAPON_MAX_SPEED);
    return 
HAM_SUPERCEDE;
}

public 
HamHook_Item_Deploy_Post(const iItem)
{
    new 
iPlayer
    
    if (!
CheckItem(iItemiPlayer))
    {
        return 
HAM_IGNORED;
    }
    
    
_call.Deploy(iItemiPlayer);
    return 
HAM_IGNORED;
}

public 
HamHook_Item_Holster(const iItem)
{
    new 
iPlayer
    
    if (!
CheckItem(iItemiPlayer))
    {
        return 
HAM_IGNORED;
    }
    
    
set_pev(iPlayerpev_viewmodel0);
    
set_pev(iPlayerpev_weaponmodel0);
    
    
_call.Holster(iItemiPlayer);
    return 
HAM_SUPERCEDE;
}

public 
HamHook_Item_WeaponIdle(const iItem)
{
    static 
iPlayer
    
    if (!
CheckItem(iItemiPlayer))
    {
        return 
HAM_IGNORED;
    }

    
_call.Idle(iItemiPlayer);
    return 
HAM_SUPERCEDE;
}

public 
HamHook_Item_Reload(const iItem)
{
    static 
iPlayer
    
    if (!
CheckItem(iItemiPlayer))
    {
        return 
HAM_IGNORED;
    }
    
    
_call.Reload(iItemiPlayer);
    return 
HAM_SUPERCEDE;
}

public 
HamHook_Item_PrimaryAttack(const iItem)
{
    static 
iPlayer
    
    if (!
CheckItem(iItemiPlayer))
    {
        return 
HAM_IGNORED;
    }
    
    
_call.PrimaryAttack(iItemiPlayer);
    return 
HAM_SUPERCEDE;
}

public 
HamHook_Item_PostFrame(const iItem)
{
    static 
iButtoniPlayer
    
    if (!
CheckItem(iItemiPlayer))
    {
        return 
HAM_IGNORED;
    }
    
    
// Complete reload
    
if (get_pdata_int(iItemm_fInReloadextra_offset_weapon))
    {
        new 
iClip        get_pdata_int(iItemm_iClipextra_offset_weapon); 
        new 
iPrimaryAmmoIndex    PrimaryAmmoIndex(iItem);
        new 
iAmmoPrimary        GetAmmoInventory(iPlayeriPrimaryAmmoIndex);
        new 
iAmount        min(WEAPON_MAX_CLIP iClipiAmmoPrimary);
        
        
set_pdata_int(iItemm_iClipiClip iAmountextra_offset_weapon);
        
set_pdata_int(iItemm_fInReloadfalseextra_offset_weapon);

        
SetAmmoInventory(iPlayeriPrimaryAmmoIndexiAmmoPrimary iAmount);
    }
    
    
// Call secondary attack
    
if ((iButton pev(iPlayerpev_button)) & IN_ATTACK2 
        
&& get_pdata_float(iItemm_flNextSecondaryAttackextra_offset_weapon) < 0.0)
    {
        
_call.SecondaryAttack(iItemiPlayer);
        
set_pev(iPlayerpev_buttoniButton & ~IN_ATTACK2);
    }
    
    return 
HAM_IGNORED;
}

//**********************************************
//* Fire Bullets.                              *
//**********************************************

CallOrigFireBullets3(const iItem, const iPlayer)
{
    static 
msgDeathMsg;
    
    static 
iForwardDeathMsg;
    static 
iForwardTraceLine;
    static 
iForwardPlaybackEvent;
    
    static 
FloatvecPuncheAngle[3];
    
    if (!
msgDeathMsg)
    {
        
msgDeathMsg get_user_msgid("DeathMsg");
    }
    
    
state TraceAttack_Enabled;
    
    
iForwardDeathMsg register_message(msgDeathMsg"MsgHook_Death");
    
iForwardTraceLine register_forward(FM_TraceLine"FakeMeta_TraceLine_Post"true);
    
iForwardPlaybackEvent register_forward(FM_PlaybackEvent"FakeMeta_PlaybackEvent"false);

    
pev(iPlayerpev_punchanglevecPuncheAngle);
    
    
ExecuteHam(Ham_Weapon_PrimaryAttackiItem);
    
    
set_pev(iPlayerpev_punchanglevecPuncheAngle);
    
    
unregister_message(msgDeathMsgiForwardDeathMsg);
    
unregister_forward(FM_TraceLineiForwardTraceLinetrue);
    
unregister_forward(FM_PlaybackEventiForwardPlaybackEventfalse);
    
    
state TraceAttack_Disabled;
}

public 
FakeMeta_TraceLine_Post(const FloatvecTraceStart[3], const FloatvecTraceEnd[3], const fNoMonsters, const iEntToSkip, const iTrace)
{
    static 
FloatvecEndPos[3];
    
    
get_tr2(iTraceTR_vecEndPosvecEndPos);
    
engfunc(EngFunc_TraceLinevecEndPosvecTraceStartfNoMonstersiEntToSkip0);
    
    
UTIL_GunshotDecalTrace(0);
    
UTIL_GunshotDecalTrace(iTracetrue);
}

public 
MsgHook_Death()
{
    static 
szTruncatedWeaponName[32];
    
    if (
szTruncatedWeaponName[0] == EOS)
    {
        
copy(szTruncatedWeaponNamecharsmax(szTruncatedWeaponName), WEAPON_NAME);
        
replace(szTruncatedWeaponNamecharsmax(szTruncatedWeaponName), "weapon_""");
    }
    
    
set_msg_arg_string(4szTruncatedWeaponName);
}

public 
HamHook_Entity_TraceAttack(const iEntity, const iAttacker, const FloatflDamage) <TraceAttack_Enabled>
{
    
SetHamParamFloat(3flDamage WEAPON_MULTIPLIER_DAMAGE);
}

public 
HamHook_Entity_TraceAttack(const iEntity, const iAttacker, const FloatflDamage) <TraceAttack_Disabled>

    
/* Do notning */
}

public 
FakeMeta_PlaybackEvent()
{
    return 
FMRES_SUPERCEDE;
}

//**********************************************
//* Brass ejection.                            *
//**********************************************

EjectBrass(const iPlayer, const iModelIndex, const iBounce, const Float:flUpScale = -9.0, const FloatflForwardScale 16.0, const FloatflRightScale 0.0)
{
    static 
imsgBrass;
    
    static 
FloatvecUp[3]; 
    static 
FloatvecRight[3]; 
    static 
FloatvecForward[3]; 
    
    static 
FloatvecAngle[3];
    static 
FloatvecOrigin[3];
    static 
FloatvecViewOfs[3];
    static 
FloatvecVelocity[3];
    
    
pev(iPlayerpev_v_anglevecAngle);
    
pev(iPlayerpev_punchanglevecOrigin);
    
    
xs_vec_add(vecAnglevecOriginvecOrigin);
    
engfunc(EngFunc_MakeVectorsvecOrigin);
    
    
pev(iPlayerpev_originvecOrigin);
    
pev(iPlayerpev_view_ofsvecViewOfs);
    
pev(iPlayerpev_velocityvecVelocity);
    
    
global_get(glb_v_upvecUp);
    
global_get(glb_v_rightvecRight);
    
global_get(glb_v_forwardvecForward);
    
    for (
03i++)
    {
        
vecOrigin[i] = vecOrigin[i] + vecViewOfs[i] + vecForward[i] * flForwardScale vecUp[i] * flUpScale vecRight[i] * flRightScale;
        
vecVelocity[i] = vecVelocity[i] + vecForward[i] * 25.0 vecUp[i] * random_float(100.0150.0) + vecRight[i] * random_float(50.070.0);
    }
    
    if (
msgBrass || (msgBrass get_user_msgid("Brass")))
    {
        
MESSAGE_BEGIN(MSG_PVSmsgBrassvecOrigin0);
        
WRITE_BYTE(/* dummy */);
        
WRITE_COORD(vecOrigin[0]);
        
WRITE_COORD(vecOrigin[1]);
        
WRITE_COORD(vecOrigin[2]);
        
WRITE_COORD(0.0 /* dummy */);
        
WRITE_COORD(0.0 /* dummy */);
        
WRITE_COORD(0.0 /* dummy */);
        
WRITE_COORD(vecVelocity[0]);
        
WRITE_COORD(vecVelocity[1]);
        
WRITE_COORD(vecVelocity[2]);
        
WRITE_ANGLE(vecAngle[1]);
        
WRITE_SHORT(iModelIndex);
        
WRITE_BYTE(iBounce);
        
WRITE_BYTE(/* dummy */);
        
WRITE_BYTE(iPlayer);
        
MESSAGE_END();
    }
}

//**********************************************
//* Kick back.                                 *
//**********************************************

Weapon_KickBack(const iItem, const iPlayerFloatupBaseFloatlateralBase, const FloatupMod, const FloatlateralModFloatupMaxFloatlateralMax, const directionChange)
{
    static 
iDirection
    static 
iShotsFired
    
    static 
FloatvecPunchangle[3];
    
pev(iPlayerpev_punchanglevecPunchangle);
    
    if ((
iShotsFired get_pdata_int(iItemm_iShotsFiredextra_offset_weapon)) != 1)
    {
        
upBase += iShotsFired upMod;
        
lateralBase += iShotsFired lateralMod;
    }
    
    
upMax *= -1.0;
    
vecPunchangle[0] -= upBase;
 
    if (
upMax >= vecPunchangle[0])
    {
        
vecPunchangle[0] = upMax;
    }
    
    if ((
iDirection =  get_pdata_int(iItemm_iDirectionextra_offset_weapon)))
    {
        
vecPunchangle[1] += lateralBase;
        
        if (
lateralMax vecPunchangle[1])
        {
            
vecPunchangle[1] = lateralMax;
        }
    }
    else
    {
        
lateralMax *=  -1.0;
        
vecPunchangle[1] -= lateralBase;
        
        if (
lateralMax vecPunchangle[1])
        {
            
vecPunchangle[1] = lateralMax;
        }
    }
    
    if (!
random_num(0directionChange))
    {
        
set_pdata_int(iItemm_iDirection, !iDirectionextra_offset_weapon);
    }
    
    
set_pev(iPlayerpev_punchanglevecPunchangle);
}

//**********************************************
//* Create and check our custom weapon.        *
//**********************************************

Weapon_Create(const FloatvecOrigin[3] = {0.00.00.0}, const FloatvecAngles[3] = {0.00.00.0})
{
    new 
iWeapon;

    static 
iszAllocStringCached;
    if (
iszAllocStringCached || (iszAllocStringCached engfunc(EngFunc_AllocStringWEAPON_REFERANCE)))
    {
        
iWeapon engfunc(EngFunc_CreateNamedEntityiszAllocStringCached);
    }
    
    if (!
IsValidPev(iWeapon))
    {
        return 
FM_NULLENT;
    }
    
    
MDLL_Spawn(iWeapon);
    
SET_ORIGIN(iWeaponvecOrigin);
    
    
set_pdata_int(iWeaponm_iClipWEAPON_MAX_CLIPextra_offset_weapon);

    
set_pev_string(iWeaponpev_classnameg_iszWeaponKey );
    
set_pev(iWeaponpev_impulseg_iszWeaponKey);
    
set_pev(iWeaponpev_anglesvecAngles);
    
    
Weapon_OnSpawn(iWeapon);
    
    return 
iWeapon;
}

Weapon_Give(const iPlayer)
{
    if (!
IsValidPev(iPlayer))
    {
        return 
FM_NULLENT;
    }
    
    new 
iWeaponFloatvecOrigin[3];
    
pev(iPlayerpev_originvecOrigin);
    
    if ((
iWeapon Weapon_Create(vecOrigin)) != FM_NULLENT)
    {
        
Player_DropWeapons(iPlayerExecuteHamB(Ham_Item_ItemSlotiWeapon));

        
set_pev(iWeaponpev_spawnflagspev(iWeaponpev_spawnflags) | SF_NORESPAWN);
        
MDLL_Touch(iWeaponiPlayer);
        
        
SetAmmoInventory(iPlayerPrimaryAmmoIndex(iWeapon), WEAPON_DEFAULT_AMMO);
        
        return 
iWeapon;
    }
    
    return 
FM_NULLENT;
}

Player_DropWeapons(const iPlayer, const iSlot)
{
    new 
szWeaponName[32], iItem get_pdata_cbase(iPlayerm_rgpPlayerItems_CBasePlayer iSlotextra_offset_player);

    while (
IsValidPev(iItem))
    {
        
pev(iItempev_classnameszWeaponNamecharsmax(szWeaponName));
        
engclient_cmd(iPlayer"drop"szWeaponName);

        
iItem get_pdata_cbase(iItemm_pNextextra_offset_weapon);
    }
}

Weapon_SendAnim(const iPlayer, const iAnim)
{
    
set_pev(iPlayerpev_weaponanimiAnim);

    
MESSAGE_BEGIN(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {0.00.00.0}, iPlayer);
    
WRITE_BYTE(iAnim);
    
WRITE_BYTE(0);
    
MESSAGE_END();
}

boolCheckItem(const iItem, &iPlayer)
{
    if (!
IsValidPev(iItem) || !IsCustomItem(iItem))
    {
        return 
false;
    }
    
    
iPlayer get_pdata_cbase(iItemm_pPlayerextra_offset_weapon);
    
    if (!
IsValidPev(iPlayer))
    {
        return 
false;
    }
    
    return 
true;
}

//**********************************************
//* Decals.                                    *
//**********************************************

new Array: g_hDecals;

public 
FakeMeta_DecalIndex_Post()
{
    if (!
g_hDecals)
    {
        
g_hDecals ArrayCreate(11);
    }
    
    
ArrayPushCell(g_hDecalsget_orig_retval());
}

UTIL_GunshotDecalTrace(const iTrace, const boolbIsGunshot false)
{
    static 
iHit;
    static 
iMessage;
    static 
iDecalIndex;
    
    static 
FloatflFraction
    static 
FloatvecEndPos[3];
    
    
iHit INSTANCE(get_tr2(iTraceTR_pHit));
    
    if (
iHit  && !IsValidPev(iHit) || (pev(iHitpev_flags) & FL_KILLME))
    {
        return;
    }
    
    if (
pev(iHitpev_solid) != SOLID_BSP && pev(iHitpev_movetype) != MOVETYPE_PUSHSTEP)
    {
        return;
    }
    
    
iDecalIndex ExecuteHamB(Ham_DamageDecaliHit0);
    
    if (
iDecalIndex || iDecalIndex >=  ArraySize(g_hDecals))
    {
        return;
    }
    
    
iDecalIndex ArrayGetCell(g_hDecalsiDecalIndex);
    
    
get_tr2(iTraceTR_flFractionflFraction);
    
get_tr2(iTraceTR_vecEndPosvecEndPos);
    
    if (
iDecalIndex || flFraction >= 1.0)
    {
        return;
    }
    
    if (
bIsGunshot)
    {
        
iMessage TE_GUNSHOTDECAL;
    }
    else
    {
        
iMessage TE_DECAL;
        
        if (
iHit != 0)
        {
            if (
iDecalIndex 255)
            {
                
iMessage TE_DECALHIGH;
                
iDecalIndex -= 256;
            }
        }
        else
        {
            
iMessage TE_WORLDDECAL;
            
            if (
iDecalIndex 255)
            {
                
iMessage TE_WORLDDECALHIGH;
                
iDecalIndex -= 256;
            }
        }
    }
    
    
MESSAGE_BEGIN(MSG_BROADCASTSVC_TEMPENTITY, {0.00.00.0}, 0);
    
WRITE_BYTE(iMessage);
    
WRITE_COORD(vecEndPos[0]);
    
WRITE_COORD(vecEndPos[1]);
    
WRITE_COORD(vecEndPos[2]);
    
    if (
bIsGunshot)
    {
        
WRITE_SHORT(iHit);
        
WRITE_BYTE(iDecalIndex);
    }
    else 
    {
        
WRITE_BYTE(iDecalIndex);
        
        if (
iHit)
        {
            
WRITE_SHORT(iHit);
        }
    }
    
    
MESSAGE_END();
}

//**********************************************
//* Weapon list update.                        *
//**********************************************

public FakeMeta_RegUserMsg_Post(const szMsg[])
{
    if (!
strcmp(szMsg"WeaponList"))
    {
        
register_message((g_msgWeaponList get_orig_retval()), "MsgHook_WeaponList");
    }
}

public 
HamHook_Item_AddToPlayer(const iItem, const iPlayer)
{
    if (!
IsValidPev(iItem) || !IsValidPev(iPlayer))
    {
        return 
HAM_IGNORED;
    }

    
MsgHook_WeaponList(g_msgWeaponListiItemiPlayer);
    
    return 
HAM_IGNORED;
}

public 
MsgHook_WeaponList(const iMsgID, const iMsgDest, const iMsgEntity)
{
    static 
arrWeaponListData[8];
    
    if (
iMsgEntity)
    {
        
MESSAGE_BEGIN(MSG_ONEiMsgID, {0.00.00.0}, iMsgEntity);
        
WRITE_STRING(IsCustomItem(iMsgDest) ? WEAPON_NAME WEAPON_REFERANCE);
        
        for (new 
isizeof arrWeaponListDataai++)
        {
            
WRITE_BYTE(arrWeaponListData[i]);
        }
        
        
MESSAGE_END();
    }
    else
    {
        new 
szWeaponName[32];
        
get_msg_arg_string(1szWeaponNamecharsmax(szWeaponName));
        
        if (!
strcmp(szWeaponNameWEAPON_REFERANCE))
        {
            for (new 
isizeof arrWeaponListDataai++)
            {
                
arrWeaponListData[i] = get_msg_arg_int(2);
            }
        }
    }
}

//**********************************************
//* Weaponbox world model.                     *
//**********************************************

new g_iForwardSetModel;

public 
HamHook_Weaponbox_Spawn_Post(const iWeaponBox)
{
    if (!
IsValidPev(iWeaponBox))
    {
        return 
HAM_IGNORED;
    }
    
    new 
iPlayer pev(iWeaponBoxpev_owner);
    
    if (!
IsValidPev(iPlayer))
    {
        return 
HAM_IGNORED;
    }
    
    
g_iForwardSetModel register_forward(FM_SetModel"FakeMeta_SetModel");
    
    return 
HAM_IGNORED;
}

public 
FakeMeta_SetModel(const iWeaponBox)
{
    
unregister_forward(FM_SetModelg_iForwardSetModel);
    
    if (!
IsValidPev(iWeaponBox))
    {
        return 
FMRES_IGNORED;
    }
    
    
#define MAX_ITEM_TYPES    6
    
    
for (new iiItemMAX_ITEM_TYPESi++)
    {
        
iItem get_pdata_cbase(iWeaponBoxm_rgpPlayerItems_CWeaponBox iextra_offset_weapon);
        
        if (
IsValidPev(iItem) && IsCustomItem(iItem))
        {
            
SET_MODEL(iWeaponBoxMODEL_WORLD);
            return 
FMRES_SUPERCEDE;
        }
    }
    
    return 
FMRES_IGNORED;
}

//**********************************************
//* Ammo Inventory.                            *
//**********************************************

PrimaryAmmoIndex(const iItem)
{
    return 
get_pdata_int(iItemm_iPrimaryAmmoTypeextra_offset_weapon);
}

GetAmmoInventory(const iPlayer, const iAmmoIndex)
{
    if (
iAmmoIndex == -1)
    {
        return -
1;
    }

    return 
get_pdata_int(iPlayerm_rgAmmo_CBasePlayer iAmmoIndexextra_offset_player);
}

SetAmmoInventory(const iPlayer, const iAmmoIndex, const iAmount)
{
    if (
iAmmoIndex == -1)
    {
        return 
0;
    }

    
set_pdata_int(iPlayerm_rgAmmo_CBasePlayer iAmmoIndexiAmountextra_offset_player);
    return 
1;

felipemilralze is offline
Send a message via MSN to felipemilralze Send a message via Skype™ to felipemilralze
CrazY.
Veteran Member
Join Date: May 2015
Location: SP, Brazil
Old 11-07-2015 , 06:46   Re: weapon does not drop
Reply With Quote #2

[bp]
Eu vi que você é BR, não entendi muito bem o problema, pode explicar de novo?

[en]
I did not understand what the problem is, please explain again.
__________________








CrazY. is offline
felipemilralze
Senior Member
Join Date: Jul 2011
Location: Brazil
Old 11-07-2015 , 07:27   Re: weapon does not drop
Reply With Quote #3

Está arma drop em nova rodada porem permanece no slot 1
felipemilralze is offline
Send a message via MSN to felipemilralze Send a message via Skype™ to felipemilralze
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 13:14.


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