AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved What's i do wrong ? (https://forums.alliedmods.net/showthread.php?t=293147)

yas17sin 01-24-2017 07:54

What's i do wrong ?
 
Hi all

i made a croosbow gun and all work fine but i have some problem with models.

when i buy the gun i can't see his models but when i drop it in the ground i can see it ( here is what i mean ) : http://prntscr.com/dzomcg

and here is the code :

PHP Code:

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
enum
{
anim_idle,
anim_reload,
anim_draw,
anim_shoot1,
anim_shoot2,
anim_shoot3
}
#define ENG_NULLENT        -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define WEAPONKEY 33
#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 RELOAD_TIME 2.0
#define wId CSW_G3SG1
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 
Fire_snd[] = {"sound/crossbow/crossbow_shoot1.wav"}
new const 
went[] ={"weapon_g3sg1"}
new const 
GUNSHOT_DECALS[] = { 4142434445 }
new 
hk416_V_MODEL[64] = "models/v_crossbow_cso.mdl"
new hk416_P_MODEL[64] = "models/p_crossbow_cso.mdl"
new hk416_W_MODEL[64] = "models/w_crossbow_cso.mdl"
new cvar_dmg_hk416cvar_clip_hk416cvar_hk416_ammo
new g_has_hk416[33]
new 
g_MaxPlayersg_orig_event_hk416g_clip_ammo[33]
new 
Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_hk416_TmpClip[33]
public 
plugin_init()
{
    
register_plugin("[CS 1.6] CROSSBOW""1.0""yas17sin")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayerwent"fw_hk416_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)
    
RegisterHam(Ham_Item_Deploywent"fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttackwent"fw_hk416_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttackwent"fw_hk416_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFramewent"hk416__ItemPostFrame");
    
RegisterHam(Ham_Weapon_Reloadwent"hk416__Reload");
    
RegisterHam(Ham_Weapon_Reloadwent"hk416__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")
    
cvar_dmg_hk416 register_cvar("CrossBow_dmg""80")
    
cvar_clip_hk416 register_cvar("CrossBow_clip""35")
    
cvar_hk416_ammo register_cvar("CrossBow_ammo""380")
    
    
register_clcmd("get_cbow""give_hk416")
    
    
g_MaxPlayers get_maxplayers()
}
public 
plugin_precache()
{
    
precache_model(hk416_V_MODEL)
    
precache_model(hk416_P_MODEL)
    
precache_model(hk416_W_MODEL)
    
precache_sound(Fire_snd)
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")
    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}
public 
fwPrecacheEvent_Post(type, const name[])
{
    if (
equal("events/g3sg1.sc"name))
    {
        
g_orig_event_hk416 get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_hk416[id] = false
}
public 
client_disconnect(id)
{
    
g_has_hk416[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_g3sg1.mdl"))
    {
        static 
iStoredSVDID
        iStoredSVDID 
find_ent_by_owner(ENG_NULLENTwententity)
        if(!
is_valid_ent(iStoredSVDID))
            return 
FMRES_IGNORED;
        if(
g_has_hk416[iOwner])
        {
            
entity_set_int(iStoredSVDIDEV_INT_WEAPONKEYWEAPONKEY)
            
g_has_hk416[iOwner] = false
            entity_set_model
(entityhk416_W_MODEL)
            return 
FMRES_SUPERCEDE;
        }
    }
    return 
FMRES_IGNORED;
}
public 
give_hk416(id)
{
    
drop_weapons(id1);
    new 
iWep2 give_item(id,went)
    if( 
iWep2 )
    {
    
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_hk416))
    
cs_set_user_bpammo (idwIdget_pcvar_num(cvar_hk416_ammo))
    }
    
g_has_hk416[id] = true;
}

public 
fw_hk416_AddToPlayer(hk416id)
{
    if(!
is_valid_ent(hk416) || !is_user_connected(id))
        return 
HAM_IGNORED;
    if(
entity_get_int(hk416EV_INT_WEAPONKEY) == WEAPONKEY)
    {
        
g_has_hk416[id] = true
        entity_set_int
(hk416EV_INT_WEAPONKEY0)
        return 
HAM_HANDLED;
    }
    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))
}
replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
wId:
        {
            if (
is_user_connected(id) || is_user_alive(id))
                return;
            if(
g_has_hk416[id])
            {
                
set_pev(idpev_viewmodel2hk416_V_MODEL)
                
set_pev(idpev_weaponmodel2hk416_P_MODEL)
            }
        }
    }
}
public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
  if(!
is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_hk416[Player])
  return 
FMRES_IGNORED
  set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
  return 
FMRES_HANDLED
}
public 
fw_hk416_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    if (!
g_has_hk416[Player])
        return;
    
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_hk416))
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
        return 
FMRES_IGNORED
    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}
public 
fw_hk416_PrimaryAttack_Post(Weapon)
{    new 
Player get_pdata_cbase(Weapon414)
    new 
szClipszAmmo
    get_user_weapon
(PlayerszClipszAmmo)
    if(
Player && Player 33)
    {
    if(
g_has_hk416[Player])
    {
    if(
szClip 0)emit_sound(PlayerCHAN_WEAPONFire_sndVOL_NORMATTN_NORM0PITCH_NORM)
    }
    if(
g_has_hk416[Player])
    {
        new 
Float:push[3]
        
pev(Player,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[Player],push)
        
xs_vec_mul_scalar(push,0.6,push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        if (!
g_clip_ammo[Player])
            return
        
UTIL_PlayWeaponAnimation(Playerrandom_num(1,3))
        
make_blood_and_bulletholes(Player)
    }
    }
}
public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == wId)
        {
            if(
g_has_hk416[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_hk416))
        }
    }
}
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()
}
stock make_blood_and_bulletholes(id)
{
    new 
aimOrigin[3], targetbody
    get_user_origin
(idaimOrigin3)
    
get_user_aiming(idtargetbody)
    if(
target && target <= g_MaxPlayers && !is_user_alive(target))
    {
        new 
Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3]
        
pev(idpev_originfStart)
        
velocity_by_aim(id64fVel)
        
fStart[0] = float(aimOrigin[0])
        
fStart[1] = float(aimOrigin[1])
        
fStart[2] = float(aimOrigin[2])
        
fEnd[0] = fStart[0]+fVel[0]
        
fEnd[1] = fStart[1]+fVel[1]
        
fEnd[2] = fStart[2]+fVel[2]
        new 
res
        engfunc
(EngFunc_TraceLinefStartfEnd0targetres)
        
get_tr2(resTR_vecEndPosfRes)
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_BLOODSPRITE)
        
write_coord(floatround(fStart[0]))
        
write_coord(floatround(fStart[1]))
        
write_coord(floatround(fStart[2]))
        
write_shortm_iBlood ])
        
write_shortm_iBlood ] )
        
write_byte(70)
        
write_byte(random_num(1,2))
        
message_end()
    }
    else if(!
is_user_connected(target))
    {
        if(
target)
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_DECAL)
            
write_coord(aimOrigin[0])
            
write_coord(aimOrigin[1])
            
write_coord(aimOrigin[2])
            
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
            
write_short(target)
            
message_end()
        }
        else
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
            
write_byte(TE_WORLDDECAL)
            
write_coord(aimOrigin[0])
            
write_coord(aimOrigin[1])
            
write_coord(aimOrigin[2])
            
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
            
message_end()
        }
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
write_coord(aimOrigin[0])
        
write_coord(aimOrigin[1])
        
write_coord(aimOrigin[2])
        
write_short(id)
        
write_byte(GUNSHOT_DECALS[random_num 0sizeof GUNSHOT_DECALS -) ] )
        
message_end()
    }
}
public 
hk416__ItemPostFrame(weapon_entity) {
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED;
    if (!
g_has_hk416[id])
        return 
HAM_IGNORED;
    new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)
    new 
iBpAmmo cs_get_user_bpammo(idwId);
    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(get_pcvar_num(cvar_clip_hk416) - iClipiBpAmmo)
        
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
        
cs_set_user_bpammo(idwIdiBpAmmo-j);
        
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
        
fInReload 0
    
}
    return 
HAM_IGNORED;
}
public 
hk416__Reload(weapon_entity) {
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED;
    if (!
g_has_hk416[id])
        return 
HAM_IGNORED;
    
g_hk416_TmpClip[id] = -1;
    new 
iBpAmmo cs_get_user_bpammo(idwId);
    new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)
    if (
iBpAmmo <= 0)
        return 
HAM_SUPERCEDE;
    if (
iClip >= get_pcvar_num(cvar_clip_hk416))
        return 
HAM_SUPERCEDE;
    
g_hk416_TmpClip[id] = iClip;
    return 
HAM_IGNORED;
}
public 
hk416__Reload_Post(weapon_entity) {
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED;
    if (!
g_has_hk416[id])
        return 
HAM_IGNORED;
    if (
g_hk416_TmpClip[id] == -1)
        return 
HAM_IGNORED;
    
set_pdata_int(weapon_entitym_iClipg_hk416_TmpClip[id], WEAP_LINUX_XTRA_OFF)
    
set_pdata_float(weapon_entitym_flTimeWeaponIdleRELOAD_TIMEWEAP_LINUX_XTRA_OFF)
    
set_pdata_float(idm_flNextAttackRELOAD_TIMEPLAYER_LINUX_XTRA_OFF)
    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)
    
UTIL_PlayWeaponAnimation(id4)
    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)
          }
     }



edon1337 01-24-2017 08:22

Re: What's i do wrong ?
 
You have to use Ham_Item_Deploy to change models.

yas17sin 01-24-2017 08:25

Re: What's i do wrong ?
 
i already using it.

PRoSToTeM@ 01-24-2017 09:38

Re: What's i do wrong ?
 
wtf is this?
if (is_user_connected(id) || is_user_alive(id))
return;

yas17sin 01-24-2017 12:12

Re: What's i do wrong ?
 
Quote:

Originally Posted by PRoSToTeM@ (Post 2489463)
wtf is this?
if (is_user_connected(id) || is_user_alive(id))
return;

oops, i didn't notice that cuz i make this plugin with an .exe application called "Sma Weapon Generator.exe" and it make weapon for zombie plague so i make a one for zombie then i change it that's why this problem. ( it have some error )

edon1337 01-24-2017 17:18

Re: What's i do wrong ?
 
Quote:

Originally Posted by yas17sin (Post 2489438)
i already using it.

Why are you using FM_SetModel then ?

yas17sin 01-24-2017 17:36

Re: What's i do wrong ?
 
Quote:

Originally Posted by yas17sin (Post 2489519)
oops, i didn't notice that cuz i make this plugin with an .exe application called "Sma Weapon Generator.exe" and it make weapon for zombie plague so i make a one for zombie then i change it that's why this problem. ( it have some error )



All times are GMT -4. The time now is 20:58.

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