Raised This Month: $ Target: $400
 0% 

Solved Weapon HUD Problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
hellmonja
Senior Member
Join Date: Oct 2015
Old 10-11-2015 , 03:04   Weapon HUD Problem
Reply With Quote #1

hello! I wonder if any of you can help with a problem that kept me up all night. I just started trying to script and I always wanted to add weapons on CS 1.6. Honestly, i'm just borrowing codes to as my means. The weapon code, as you will see below, is from Sneaky.amxx with codes from MeRcyLeZZ's Napalm Nade for the price. I'm now trying to add custom weapon hud sprites which I got from ArkShine but it is not working properly. The keeps showing a different hud sprite that is totally unrelated to the code (it's not even in the precache).

I opted to paste the whole thing, given the nature of mashing codes together you might want to take a look at the whole thing:

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "M134 Vulcan Minigun"
#define VERSION "1.0"
#define AUTHOR "Sneaky.amxx | GlobalModders.net for more plugins!"

#define V_MODEL "models/v_vulcan.mdl"
#define P_MODEL "models/p_vulcan.mdl"
#define W_MODEL "models/w_vulcan.mdl"

#define CSW_BASEDON CSW_M249
#define weapon_basedon "weapon_m249"

#define DAMAGE 23
#define CLIP 125
#define BPAMMO 200
#define SPEED 0.5
#define RECOIL 0.5
#define RELOAD_TIME 4.0
#define PRICE 7200

#define SHOOT_ANIM random_num(1, 2)
#define DRAW_ANIM 4
#define RELOAD_ANIM 3

#define BODY_NUM 0

#define WEAPON_SECRETCODE 156847
#define WEAPON_EVENT "events/m249.sc"
#define OLD_W_MODEL "models/w_m249.mdl"

#define FIRE_SOUND "weapons/vulcan-1.wav"

new MsgIndexWeaponList;  
new 
g_Weapong_ZoomFloat:g_ZoomTime[33]
new 
g_Had_Weapong_Old_Weapon[33], Float:g_Recoil[33][3], g_Clip[33]
new 
g_weapon_eventg_ShellIdg_SmokePuff_SprId
new g_HamBotg_Msg_CurWeapong_msgMoneyg_msgBlinkAcct
const OFFSET_CSMONEY 115

// MACROS
#define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
#define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
#define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))

public plugin_precache()
{
    
engfunc(EngFunc_PrecacheModelV_MODEL)
    
engfunc(EngFunc_PrecacheModelP_MODEL)
    
engfunc(EngFunc_PrecacheModelW_MODEL)
    
engfunc(EngFunc_PrecacheSoundFIRE_SOUND)
    
    
precache_generic"sprites/weapon_vulcan.txt" );  
    
precache_generic"sprites/640hudap01.spr" );  
    
precache_generic"sprites/w_view.spr" );  
    
    
g_SmokePuff_SprId engfunc(EngFunc_PrecacheModel"sprites/wall_puff1.spr")
    
g_ShellId engfunc(EngFunc_PrecacheModel"models/rshell.mdl")    
    
    
register_forward(FM_PrecacheEvent"fw_PrecacheEvent_Post"1)
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
    
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)    
    
register_forward(FM_PlaybackEvent"fw_PlaybackEvent")    
    
register_forward(FM_SetModel"fw_SetModel")    
    
register_forward(FM_CmdStart"fw_CmdStart")
    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack_World")
    
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Player")
    
RegisterHam(Ham_Weapon_PrimaryAttackweapon_basedon"fw_Weapon_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttackweapon_basedon"fw_Weapon_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m249""fw_Item_AddToPlayer_Post"1)
    
RegisterHamHam_Item_ItemSlot"weapon_m249""OnItemSlotM249" ); 
    
RegisterHam(Ham_Weapon_Reloadweapon_basedon"fw_Weapon_Reload")
    
RegisterHam(Ham_Weapon_Reloadweapon_basedon"fw_Weapon_Reload_Post"1)
    
RegisterHam(Ham_Item_PostFrameweapon_basedon"fw_Item_PostFrame")        
        
  
    
g_msgMoney get_user_msgid("Money")
    
g_msgBlinkAcct get_user_msgid("BlinkAcct")
    
g_Msg_CurWeapon get_user_msgid("CurWeapon")
    
register_concmd("vulcan""Get_Weapon")
    
register_clcmd("say /vulcan""Get_Weapon")
    
register_clcmd"weapon_basedon""ClientCommand_SelectVulcan" );  
    
MsgIndexWeaponList get_user_msgid"WeaponList" );
}

public 
fw_PrecacheEvent_Post(type, const name[])
{
    if(
equal(WEAPON_EVENTname))
        
g_weapon_event get_orig_retval()        
}

public 
ClientCommand_SelectVulcan( const client )  
{  
    
engclient_cmdclient"weapon_m249" );  


public 
client_putinserver(id)
{
    if(!
g_HamBot && is_user_bot(id))
    {
        
g_HamBot 1
        set_task
(0.1"Do_RegisterHam"id)
    }
}

public 
Do_RegisterHam(id)
{
    
RegisterHamFromEntity(Ham_TraceAttackid"fw_TraceAttack_Player")    
}

public 
zbheroex_weapon_bought(idItemID)
{
    if(
ItemID == g_WeaponGet_Weapon(id)
}

public 
zbheroex_weapon_remove(idItemID)
{
    if(
ItemID == g_WeaponRemove_Weapon(id)
}

public 
Get_Weapon(id)
{
    if(!
is_user_alive(id))
        return
    
    
// Check that player has the money
    
if (fm_get_user_money(id) < PRICE)
    {
        
client_print(idprint_center"#Cstrike_TitlesTXT_Not_Enough_Money")
        
        
// Blink money
        
message_begin(MSG_ONE_UNRELIABLEg_msgBlinkAcct_id)
        
write_byte(2// times
        
message_end()
        
        return
    }
        
    
UnSet_BitVar(g_Zoomid)
    
Set_BitVar(g_Had_Weaponid)
    
fm_give_item(idweapon_basedon)    
    
    
// Set Ammo
    
static EntEnt fm_get_user_weapon_entity(idCSW_BASEDON)
    if(
pev_valid(Ent)) cs_set_weapon_ammo(EntCLIP)
    
    
cs_set_user_bpammo(idCSW_BASEDONBPAMMO)
    
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEg_Msg_CurWeapon, {000}, id)
    
write_byte(1)
    
write_byte(CSW_BASEDON)
    
write_byte(CLIP)
    
message_end()
        
// Calculate new money amount
    
static newmoney
    newmoney 
fm_get_user_money(id) - PRICE
    
    
// Update money offset
    
fm_set_user_money(idnewmoney)
    
    
// Update money on HUD
    
message_begin(MSG_ONEg_msgMoney_id)
    
write_long(newmoney// amount
    
write_byte(1// flash
    
message_end()
}

public 
Remove_Weapon(id)
{
    
UnSet_BitVar(g_Had_Weaponid)
}

public 
Event_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return
    
    static 
CSWIDCSWID read_data(2)
    
    if((
CSWID == CSW_BASEDON && g_Old_Weapon[id] != CSW_BASEDON) && Get_BitVar(g_Had_Weaponid))
    {
        
set_pev(idpev_viewmodel2V_MODEL)
        
set_pev(idpev_weaponmodel2"")
        
        
set_weapon_anim(idDRAW_ANIM)
        
Draw_NewWeapon(idCSWID)
    } else if((
CSWID == CSW_BASEDON && g_Old_Weapon[id] == CSW_BASEDON) && Get_BitVar(g_Had_Weaponid)) {
        static 
EntEnt fm_get_user_weapon_entity(idCSW_BASEDON)
        if(!
pev_valid(Ent))
        {
            
g_Old_Weapon[id] = get_user_weapon(id)
            return
        }
        
        
set_pdata_float(Ent46get_pdata_float(Ent464) * SPEED4)
    } else if(
CSWID != CSW_BASEDON && g_Old_Weapon[id] == CSW_BASEDONDraw_NewWeapon(idCSWID)
    
    
g_Old_Weapon[id] = get_user_weapon(id)
}

public 
Draw_NewWeapon(idCSW_ID)
{
    if(
CSW_ID == CSW_BASEDON)
    {
        static 
ent
        ent 
fm_get_user_weapon_entity(idCSW_BASEDON)
        
        if(
pev_valid(ent) && Get_BitVar(g_Had_Weaponid))
        {
            
set_pev(entpev_effectspev(entpev_effects) &~ EF_NODRAW
            
engfunc(EngFunc_SetModelentP_MODEL)    
            
set_pev(entpev_bodyBODY_NUM)
        }
    } else {
        static 
ent
        ent 
fm_get_user_weapon_entity(idCSW_BASEDON)
        
        if(
pev_valid(ent)) set_pev(entpev_effectspev(entpev_effects) | EF_NODRAW)             
    }
    
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(id) == CSW_BASEDON && Get_BitVar(g_Had_Weaponid))
        
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
    
    return 
FMRES_HANDLED
}

public 
fw_PlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if (!
is_user_connected(invoker))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(invoker) != CSW_BASEDON || !Get_BitVar(g_Had_Weaponinvoker))
        return 
FMRES_IGNORED
    
if(eventid != g_weapon_event)
        return 
FMRES_IGNORED
    
    engfunc
(EngFunc_PlaybackEventflags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    
    
set_weapon_anim(invokerSHOOT_ANIM)
    
emit_sound(invokerCHAN_WEAPONFIRE_SOUNDVOL_NORMATTN_NORM0PITCH_NORM)
    
    
Eject_Shell(invokerg_ShellId0.0)
        
    return 
FMRES_SUPERCEDE
}

public 
fw_SetModel(entitymodel[])
{
    if(!
pev_valid(entity))
        return 
FMRES_IGNORED
    
    
static Classname[32]
    
pev(entitypev_classnameClassnamesizeof(Classname))
    
    if(!
equal(Classname"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    iOwner 
pev(entitypev_owner)
    
    if(
equal(modelOLD_W_MODEL))
    {
        static 
weaponweapon fm_find_ent_by_owner(-1weapon_basedonentity)
        
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED;
        
        if(
Get_BitVar(g_Had_WeaponiOwner))
        {
            
Remove_Weapon(iOwner)
            
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
engfunc(EngFunc_SetModelentityW_MODEL)
            
set_pev(entitypev_bodyBODY_NUM)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED;
}

public 
fw_TraceAttack_World(VictimAttackerFloat:DamageFloat:Direction[3], PtrDamageBits)
{
    if(!
is_user_connected(Attacker))
        return 
HAM_IGNORED    
    
if(get_user_weapon(Attacker) != CSW_BASEDON || !Get_BitVar(g_Had_WeaponAttacker))
        return 
HAM_IGNORED
        
    
static Float:flEnd[3], Float:vecPlane[3]
    
    
get_tr2(PtrTR_vecEndPosflEnd)
    
get_tr2(PtrTR_vecPlaneNormalvecPlane)        
        
    
Make_BulletHole(AttackerflEndDamage)
    
Make_BulletSmoke(AttackerPtr)

    
SetHamParamFloat(3float(DAMAGE))
    
    return 
HAM_IGNORED
}

public 
fw_TraceAttack_Player(VictimAttackerFloat:DamageFloat:Direction[3], PtrDamageBits)
{
    if(!
is_user_connected(Attacker))
        return 
HAM_IGNORED    
    
if(get_user_weapon(Attacker) != CSW_BASEDON || !Get_BitVar(g_Had_WeaponAttacker))
        return 
HAM_IGNORED
        
    SetHamParamFloat
(3float(DAMAGE))

    return 
HAM_IGNORED
}

public 
fw_Weapon_PrimaryAttack(Ent)
{
    static 
idid pev(Entpev_owner)
    
pev(idpev_punchangleg_Recoil[id])
    
    return 
HAM_IGNORED
}

public 
fw_Weapon_PrimaryAttack_Post(Ent)
{
    static 
idid pev(Entpev_owner)
    
    if(
Get_BitVar(g_Had_Weaponid))
    {
        static 
Float:Push[3]
        
pev(idpev_punchanglePush)
        
xs_vec_sub(Pushg_Recoil[id], Push)
        
        
xs_vec_mul_scalar(PushRECOILPush)
        
xs_vec_add(Pushg_Recoil[id], Push)
        
set_pev(idpev_punchanglePush)
    }
}

public 
fw_Item_AddToPlayer_Post(const item, const player)
{
    if( 
pev_validitem ) && is_user_aliveplayer ) ) // just for safety.  
    
{  
        
message_beginMSG_ONEMsgIndexWeaponList, .player player );  
        {  
            
write_string"weapon_basedon" );  // WeaponName  
            
write_byte);                   // PrimaryAmmoID  
            
write_byte200 );                   // PrimaryAmmoMaxAmount  
            
write_byte( -);                   // SecondaryAmmoID  
            
write_byte( -);                   // SecondaryAmmoMaxAmount  
            
write_byte);                    // SlotID (0...N)  
            
write_byte);                    // NumberInSlot (1...N)  
            
write_byteCSW_M249 );            // WeaponID  
            
write_byte);                    // Flags  
        
}  
        
message_end();  
    }  
}

public 
OnItemSlotM249( const item )  
{  
    
SetHamReturnInteger);  
    return 
HAM_SUPERCEDE;  
}  

public 
fw_Item_PostFrame(ent)
{
    if(!
pev_valid(ent))
        return 
HAM_IGNORED
    
    
static id
    id 
pev(entpev_owner)
    
    if(
is_user_alive(id) && Get_BitVar(g_Had_Weaponid))
    {    
        static 
Float:flNextAttackflNextAttack get_pdata_float(id835)
        static 
bpammobpammo cs_get_user_bpammo(idCSW_BASEDON)
        static 
iClipiClip get_pdata_int(ent514)
        static 
fInReloadfInReload get_pdata_int(ent544)
        
        if(
fInReload && flNextAttack <= 0.0)
        {
            static 
temp1temp1 min(CLIP iClipbpammo)

            
set_pdata_int(ent51iClip temp14)
            
cs_set_user_bpammo(idCSW_BASEDONbpammo temp1)        
            
            
set_pdata_int(ent5404)
            
            
fInReload 0
        
}        
    }
    
    return 
HAM_IGNORED    
}

public 
fw_Weapon_Reload(ent)
{
    static 
idid pev(entpev_owner)
    if(!
is_user_alive(id))
        return 
HAM_IGNORED
    
if(!Get_BitVar(g_Had_Weaponid))
        return 
HAM_IGNORED
    
    g_Clip
[id] = -1
    
    
static bpammobpammo cs_get_user_bpammo(idCSW_BASEDON)
    static 
iClipiClip get_pdata_int(ent514)
    
    if(
bpammo <= 0) return HAM_SUPERCEDE
    
    
if(iClip >= CLIP) return HAM_SUPERCEDE        
        
    g_Clip
[id] = iClip

    
return HAM_HANDLED
}

public 
fw_Weapon_Reload_Post(ent)
{
    static 
idid pev(entpev_owner)
    if(!
is_user_alive(id))
        return 
HAM_IGNORED
    
if(!Get_BitVar(g_Had_Weaponid))
        return 
HAM_IGNORED

    
if (g_Clip[id] == -1)
        return 
HAM_IGNORED
    
    set_pdata_int
(ent51g_Clip[id], 4)
    
set_pdata_int(ent5414)
    
    
set_weapon_anim(idRELOAD_ANIM)
    
set_pdata_float(id83RELOAD_TIME5)

    return 
HAM_HANDLED
}

stock Make_BulletHole(idFloat:Origin[3], Float:Damage)
{
    
// Find target
    
static DecalDecal random_num(4145)
    static 
LoopTime
    
    if(
Damage 100.0LoopTime 2
    
else LoopTime 1
    
    
for(new 0LoopTimei++)
    {
        
// Put decal on "world" (a wall)
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_byte(Decal)
        
message_end()
        
        
// Show sparcles
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_short(id)
        
write_byte(Decal)
        
message_end()
    }
}

public 
Make_BulletSmoke(idTrResult)
{
    static 
Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
    
    get_weapon_attachment
(idvecSrc)
    
global_get(glb_v_forwardvecEnd)
    
    
xs_vec_mul_scalar(vecEnd8192.0vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)

    
get_tr2(TrResultTR_vecEndPosvecSrc)
    
get_tr2(TrResultTR_vecPlaneNormalvecEnd)
    
    
xs_vec_mul_scalar(vecEnd2.5vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)
    
    
TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
    TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
    TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES
    
    engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYvecEnd0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordvecEnd[0])
    
engfunc(EngFunc_WriteCoordvecEnd[1])
    
engfunc(EngFunc_WriteCoordvecEnd[2] - 10.0)
    
write_short(g_SmokePuff_SprId)
    
write_byte(2)
    
write_byte(50)
    
write_byte(TE_FLAG)
    
message_end()
}


stock hook_ent2(entFloat:VicOrigin[3], Float:speedFloat:multitype)
{
    static 
Float:fl_Velocity[3]
    static 
Float:EntOrigin[3]
    static 
Float:EntVelocity[3]
    
    
pev(entpev_velocityEntVelocity)
    
pev(entpev_originEntOrigin)
    static 
Float:distance_f
    distance_f 
get_distance_f(EntOriginVicOrigin)
    
    static 
Float:fl_Timefl_Time distance_f speed
    
static Float:fl_Time2fl_Time2 distance_f / (speed multi)
    
    if(
type == 1)
    {
        
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time2) * 1.5
        fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time2) * 1.5
        fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time        
    
} else if(type == 2) {
        
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time2) * 1.5
        fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time2) * 1.5
        fl_Velocity
[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
    
}

    
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
    
set_pev(entpev_velocityfl_Velocity)
}

stock get_weapon_attachment(idFloat:output[3], Float:fDis 40.0)

    static 
Float:vfEnd[3], viEnd[3
    
get_user_origin(idviEnd3)  
    
IVecFVec(viEndvfEnd
    
    static 
Float:fOrigin[3], Float:fAngle[3]
    
    
pev(idpev_originfOrigin
    
pev(idpev_view_ofsfAngle)
    
    
xs_vec_add(fOriginfAnglefOrigin
    
    static 
Float:fAttack[3]
    
    
xs_vec_sub(vfEndfOriginfAttack)
    
xs_vec_sub(vfEndfOriginfAttack
    
    static 
Float:fRate
    
    fRate 
fDis vector_length(fAttack)
    
xs_vec_mul_scalar(fAttackfRatefAttack)
    
    
xs_vec_add(fOriginfAttackoutput)
}

stock Eject_Shell(idShell_ModelIndexFloat:Time// By Dias
{
    static 
EntEnt get_pdata_cbase(id3735)
    if(!
pev_valid(Ent))
        return

        
set_pdata_int(Ent57Shell_ModelIndex4)
        
set_pdata_float(id111get_gametime() + Time)
}

stock set_weapon_anim(idanim)
{
    if(!
is_user_alive(id))
        return
    
    
set_pev(idpev_weaponanimanim)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(anim)
    
write_byte(pev(idpev_body))
    
message_end()
}
// Get User Money
stock fm_get_user_money(id)
{
    return 
get_pdata_int(idOFFSET_CSMONEY);
}

// Set User Money
stock fm_set_user_money(idamount)
{
    
set_pdata_int(idOFFSET_CSMONEYamount);
}

public 
OnItemSlotM249( const item )  
{  
    
SetHamReturnInteger(1);  
    return 
HAM_SUPERCEDE;  

And here's what "weapon_vulcan.txt" contains in case anyone is interested:

PHP Code:
3
weapon           640 640hudap01    0     90    170    45
weapon_s        640 640hudap01    0    135    170    45
ammo              640 w_view       109     25    107    24 
Thank you. Please feel free to ask me any questions. I will answer them as best I can...

UPDATE
nevermind, I've solved it at last! i was even able add a walk speed modifier. thanks anyways...

Last edited by hellmonja; 06-25-2017 at 04:24. Reason: solved
hellmonja 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 22:04.


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