[ARMA] problema con el model del arma
#1
Buenas, presento un problema con el arma Dual Beretta Gunslinger que me paso de modo zp a modo normal, el problema (bug) es que da todos los models (w_ y p_) menos el "v_". Acá dejo el code

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
#include <cstrike>
 
// Mofiying Plugin Info Will Violate CopyRight///
#define PLUGIN "Dual Beretta GunsLinger"   /////
#define VERSION "1.0"                     /////
#define AUTHOR "ZinoZack47"              /////
/////////////////////////////////////////////
 
#define GK_WEAPONKEY                    854647
 
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_pPlayer                       41
#define m_iId                           43
#define m_fKnown                        44
#define m_flNextPrimaryAttack           46
#define m_flNextSecondaryAttack         47
#define m_flTimeWeaponIdle              48
#define m_iClip                         51
#define m_fInReload                     54
#define m_iShotsFired                   64
#define PLAYER_LINUX_XTRA_OFF           5
#define m_flNextAttack                  83
#define m_pActiveItem                   373
 
#define GK_DRAW_TIME                    1.0
#define GK_RELOAD_TIME                  2.0
 
#define CSW_GK                          CSW_DEAGLE
#define weapon_gk                       "weapon_deagle"
 
#define GK_EXP_CLASSNAME                "GK_EXP"
#define GK_SHADOW_CLASSNAME             "GK_SENPAI"
#define GK_FASTEFFECT_CLASSNAME         "GK_STALKER"
#define GK_HANDS_CLASSNAME              "GK_HANDS"
 
enum (+= 47)
{
    
GK_TASK_FIX 85969147,
    
GK_TASK_RESET,
    
GK_TASK_LAST
}
 
enum
{
    
MODE_RIGHT 0,
    
MODE_LEFT,
    
MODE_SKILL1,
    
MODE_SKILL2,
    
MODE_SKILL3,
    
MODE_SKILL4,
    
MODE_SKILL5,
    
MODE_SKILL_LAST
}
 
enum
{
    
GK_IDLE 0,
    
GK_IDLE2,
    
GK_SHOOT,
    
GK_SHOOT_LAST,
    
GK_SHOOT2,
    
GK_SHOOT2_LAST,
    
GK_RELOAD,
    
GK_RELOAD2,
    
GK_DRAW,
    
GK_DRAW2,
    
GK_SKILL1,
    
GK_SKILL2,
    
GK_SKILL3,
    
GK_SKILL4,
    
GK_SKILL5,
    
GK_SKILL_LAST
}
 
new 
GK_V_MODEL[64] = "models/z47_gunkata/v_gunkata.mdl"
new GK_P_MODEL[64] = "models/z47_gunkata/p_gunkata.mdl"
new GK_P_MODEL2[64] = "models/z47_gunkata/p_gunkata2.mdl"
new GK_W_MODEL[64] = "models/z47_gunkata/w_gunkata.mdl"
 
new const GK_Sounds[][] = 
{
    
"weapons/z47_gunkata/gunkata_idle.wav",
    
"weapons/z47_gunkata/gunkata-1.wav",
    
"weapons/z47_gunkata/gunkata_draw.wav",
    
"weapons/z47_gunkata/gunkata_draw2.wav",
    
"weapons/z47_gunkata/gunkata_reload.wav",
    
"weapons/z47_gunkata/gunkata_reload2.wav",
    
"weapons/z47_gunkata/gunkata_reload2.wav",
    
"weapons/z47_gunkata/gunkata_skill_01.wav",
    
"weapons/z47_gunkata/gunkata_skill_02.wav",
    
"weapons/z47_gunkata/gunkata_skill_03.wav",
    
"weapons/z47_gunkata/gunkata_skill_04.wav",
    
"weapons/z47_gunkata/gunkata_skill_05.wav",
    
"weapons/z47_gunkata/gunkata_skill_last.wav",
    
"weapons/z47_gunkata/gunkata_skill_last_exp.wav"
}
 
new const 
GK_Effects[][] = 
{
    
"models/z47_gunkata/ef_gunkata.mdl",
    
"models/z47_gunkata/ef_hole.mdl",
    
"models/z47_gunkata/ef_gunkata_man.mdl"
}
 
new const 
GK_Sprites[][] = 
{
    
"sprites/weapon_gunkata.txt",
    
"sprites/640hud18.spr",
    
"sprites/640hud176.spr"
}
 
new const 
GK_MUZZLEFLASH[64] = "sprites/muzzleflash77.spr"
 
new const GUNSHOT_DECALS[] = { 4142434445 }
 
const 
pev_life pev_fuser1
 
new cvar_dmg_gkcvar_recoil_gkg_itemidcvar_clip_gkcvar_gk_ammocvar_one_roundcvar_cooldown_gkcvar_radius_gk
new g_maxplayersg_orig_event_gkg_IsInPrimaryAttackg_iClipg_clip_counter[33]
new 
Float:cl_pushangle[33][3], m_iBlood[2], g_HitGroup[33]
new 
g_has_gk[33], g_clip_ammo[33], g_gk_TmpClip[33], g_current_mode[33]
new 
g_MsgWeaponListg_MsgCurWeapong_nCurWeapon[33][2]
new 
g_Muzzleflash[33], g_Muzzleflash_Ent[2], Float:g_Delay[33]
 
const 
SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
 
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
 
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
register_event("HLTV""Event_NewRound""a""1=0""2=0")
 
    
RegisterHam(Ham_Item_Deployweapon_gk"fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttackweapon_gk"fw_GunKata_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttackweapon_gk"fw_GunKata_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrameweapon_gk"fw_GunKata_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reloadweapon_gk"fw_GunKata_Reload")
    
RegisterHam(Ham_Weapon_Reloadweapon_gk"fw_GunKata_Reload_Post"1)
    
RegisterHam(Ham_Item_AddToPlayerweapon_gk"fw_GunKata_AddToPlayer")
    
RegisterHam(Ham_Weapon_WeaponIdleweapon_gk"fw_GunKata_WeaponIdle_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack"1)
    
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)
 
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_Think"fw_Think")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fw_PlaybackEvent")
    
register_forward(FM_AddToFullPack"fw_AddToFullPack_post"1)
    
register_forward(FM_CheckVisibility"fw_CheckVisibility")
 
    
cvar_clip_gk register_cvar("zp_dualberetta_clip""36")
    
cvar_gk_ammo register_cvar("zp_dualberetta_ammo""180")
    
cvar_dmg_gk register_cvar("zp_dualberetta_dmg""200")
    
cvar_recoil_gk register_cvar("zp_dualberettak_recoil""0.06")
    
cvar_one_round register_cvar("zp_dualberetta_one_round""0")
    
cvar_radius_gk register_cvar("zp_dualberetta_radius""300")
    
cvar_cooldown_gk register_cvar("zp_dualberetta_mode_cooldown""45.0")
 
    
g_MsgWeaponList get_user_msgid("WeaponList")
    
g_MsgCurWeapon get_user_msgid("CurWeapon")
 
    
register_clcmd("weapon_gunkata""select_gunkata")
    
g_maxplayers get_maxplayers()
}
 
public 
plugin_precache()
{
    
precache_model(GK_V_MODEL)
    
precache_model(GK_P_MODEL)
    
precache_model(GK_P_MODEL2)
    
precache_model(GK_W_MODEL)
 
    for(new 
0sizeof(GK_Sounds); i++)
        
precache_sound(GK_Sounds[i])    
    
    for(new 
0sizeof(GK_Sprites); i++)
        
precache_generic(GK_Sprites[i])
 
    for(new 
0sizeof(GK_Effects); i++)
        
precache_model(GK_Effects[i])
 
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")
    
    
precache_model(GK_MUZZLEFLASH)
 
    
g_Muzzleflash_Ent[MODE_RIGHT] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
engfunc(EngFunc_SetModelg_Muzzleflash_Ent[MODE_RIGHT], GK_MUZZLEFLASH)
    
set_pev(g_Muzzleflash_Ent[MODE_RIGHT], pev_scale0.1)
    
set_pev(g_Muzzleflash_Ent[MODE_RIGHT], pev_rendermodekRenderTransTexture)
    
set_pev(g_Muzzleflash_Ent[MODE_RIGHT], pev_renderamt0.0)
 
    
g_Muzzleflash_Ent[MODE_LEFT] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
engfunc(EngFunc_SetModelg_Muzzleflash_Ent[MODE_LEFT], GK_MUZZLEFLASH)
    
set_pev(g_Muzzleflash_Ent[MODE_LEFT], pev_scale0.1)
    
set_pev(g_Muzzleflash_Ent[MODE_LEFT], pev_rendermodekRenderTransTexture)
    
set_pev(g_Muzzleflash_Ent[MODE_LEFT], pev_renderamt0.0)
 
    
register_forward(FM_PrecacheEvent"fw_PrecacheEvent_Post"1)
 
}
 
public 
plugin_natives ()
{
    
register_native("give_weapon_gk""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_gunkata(id)
}
 
public 
select_gunkata(id)
{
    
engclient_cmd(idweapon_gk)
    return 
PLUGIN_HANDLED
}
 
public 
fw_PrecacheEvent_Post(type, const name[])
{
    new 
weapon[32], event_gk[64]
    
    
copy(weaponcharsmax(weapon), weapon_gk)
    
replace(weaponcharsmax(weapon), "weapon_""")
 
    
formatex(event_gkcharsmax(event_gk), "events/%s.sc"weapon)
 
    if (
equal(event_gkname))
    {
        
g_orig_event_gk get_orig_retval()
        return 
FMRES_HANDLED
    
}
 
    return 
FMRES_IGNORED
}
 
public 
Event_NewRound()
{
    for(new 
id 0id <= g_maxplayersid++)
    {
        if(!
g_has_gk[id])
 
        if(
get_pcvar_num(cvar_one_round))
            
remove_gunkata(id)
    }
}
 
public 
zp_user_humanized_post(id)
    
remove_gunkata(id)
 
 
public 
client_disconnect(id)
    
remove_gunkata(id)
 
public 
zp_user_infected_post(id)
    
remove_gunkata(id)
 
 
public 
fw_SetModel(entitymodel[])
{
    if(!
pev_valid(entity))
        return 
FMRES_IGNORED
 
    
static classname[33], weapon[32], old_gk[64]
    
pev(entitypev_classnameclassnamecharsmax(classname))
 
    if(!
equal(classname"weaponbox"))
        return 
FMRES_IGNORED
 
    copy
(weaponcharsmax(weapon), weapon_gk)
    
replace(weaponcharsmax(weapon), "weapon_""")
 
    
formatex(old_gkcharsmax(old_gk), "models/w_%s.mdl"weapon)
 
    static 
owner
    owner 
pev(entitypev_owner)
 
    if(
equal(modelold_gk))
    {
        static 
StoredWepID
        
        StoredWepID 
fm_find_ent_by_owner(-1weapon_gkentity)
    
        if(!
pev_valid(StoredWepID))
            return 
FMRES_IGNORED
    
        
if(g_has_gk[owner])
        {
            
set_pev(StoredWepIDpev_impulseGK_WEAPONKEY)
 
            
remove_gunkata(owner)
 
            
engfunc(EngFunc_SetModelentityGK_W_MODEL)
                        
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}
 
public 
give_gunkata(id)
{
    
drop_weapons(id2)
 
    
g_has_gk[id] = true
    g_current_mode
[id] = MODE_RIGHT
 
    fm_give_item
(idweapon_gk)
    
    static 
weaponweapon fm_get_user_weapon_entity(idCSW_GK)
 
    if(!
pev_valid(weapon))
        return
 
    
cs_set_weapon_ammo(weaponget_pcvar_num(cvar_clip_gk)) 
 
    
message_begin(MSG_ONE_UNRELIABLEg_MsgWeaponList, .player id)
    
write_string("weapon_gunkata")
    
write_byte(8)
    
write_byte(35)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(1
    
write_byte(1)
    
write_byte(CSW_GK)
    
write_byte(0)
    
message_end()
    
    
message_begin(MSG_ONE_UNRELIABLEg_MsgCurWeapon, {000}, id)
    
write_byte(1)
    
write_byte(CSW_GK)
    
write_byte(get_pcvar_num(cvar_clip_gk))
    
message_end()
 
    
cs_set_user_bpammo (idCSW_GKget_pcvar_num(cvar_gk_ammo))
}
 
public 
remove_gunkata(id)
{
    
remove_task(id+GK_TASK_RESET)
    
remove_task(id+GK_TASK_FIX)
    
remove_task(id+GK_TASK_RESET)
    
g_has_gk[id] = false
    g_current_mode
[id] = MODE_RIGHT
    g_clip_counter
[id] = 0
}
 
public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return 
HAM_IGNORED
 
    
new g_currentweapon get_user_weapon(iAttacker)
 
    if(
g_currentweapon != CSW_GK || !g_has_gk[iAttacker])
        return 
HAM_IGNORED
 
    
if(is_user_alive(iEnt))
    {
        
g_HitGroup[iAttacker] = get_tr2(ptrTR_iHitgroup)
        return 
HAM_IGNORED
    
}
 
    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
 
    if(
iEnt)
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
engfunc(EngFunc_WriteCoordflEnd[0])
        
engfunc(EngFunc_WriteCoordflEnd[1])
        
engfunc(EngFunc_WriteCoordflEnd[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)
        
engfunc(EngFunc_WriteCoordflEnd[0])
        
engfunc(EngFunc_WriteCoordflEnd[1])
        
engfunc(EngFunc_WriteCoordflEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
message_end()
    }
 
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_GUNSHOTDECAL)
    
engfunc(EngFunc_WriteCoordflEnd[0])
    
engfunc(EngFunc_WriteCoordflEnd[1])
    
engfunc(EngFunc_WriteCoordflEnd[2])
    
write_short(iAttacker)
    
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
    
message_end()
 
    return 
HAM_IGNORED
}
 
public 
zp_extra_item_selected(iditemid)
{
    if(
itemid != g_itemid)
        return
 
    
give_gunkata(id)
}
 
public 
fw_GunKata_AddToPlayer(itemid)
{
    if(!
pev_valid(item))
        return 
HAM_IGNORED
 
    
switch(pev(itempev_impulse))
    {
        case 
0:
        {
            
message_begin(MSG_ONEg_MsgWeaponList, .player id)
            
write_string(weapon_gk)
            
write_byte(8)
            
write_byte(35)
            
write_byte(-1)
            
write_byte(-1)
            
write_byte(1)
            
write_byte(1)
            
write_byte(CSW_GK)
            
write_byte(0)
            
message_end()
            
            return 
HAM_IGNORED
        
}
        case 
GK_WEAPONKEY:
        {
            
g_has_gk[id] = true
            
            message_begin
(MSG_ONEg_MsgWeaponList, .player id)
            
write_string("weapon_gunkata")
            
write_byte(8)
            
write_byte(35)
            
write_byte(-1)
            
write_byte(-1)
            
write_byte(1)
            
write_byte(1)
            
write_byte(CSW_GK)
            
write_byte(0)
            
message_end()
            
set_pev(itempev_impulse0)
            
            return 
HAM_HANDLED
        
}
    }
 
    return 
HAM_IGNORED
}
 
public 
fw_Item_Deploy_Post(weapon_ent)
{
    if(
pev_valid(weapon_ent) != 2)
        return
 
    static 
id
    id 
fm_cs_get_weapon_ent_owner(weapon_ent)
    
    if(
get_pdata_cbase(idm_pActiveItem) != weapon_ent)
        return
 
    if(!
g_has_gk[id])
        return
 
    
set_pev(idpev_viewmodel2GK_V_MODEL)
    
set_pev(idpev_weaponmodel2GK_P_MODEL)
 
    switch(
g_current_mode[id])
    {
        case 
MODE_RIGHT:fm_play_weapon_animation(idGK_DRAW)
        case 
MODE_LEFT:fm_play_weapon_animation(idGK_DRAW2)
    }
 
    
fm_set_weapon_idle_time(idweapon_gkGK_DRAW_TIME)
    
set_pdata_string(id, (492) * 4"dualpistols", -20)
}
 
public 
fw_GunKata_WeaponIdle_Post(gk)
{
    if(
pev_valid(gk) != 2)
        return 
HAM_IGNORED
 
    
new id fm_cs_get_weapon_ent_owner(gk)
    
    if(
get_pdata_cbase(idm_pActiveItem) != gk)
        return 
HAM_IGNORED
 
    
if (!g_has_gk[id])
        return 
HAM_IGNORED;
 
    if(
get_pdata_float(gkm_flTimeWeaponIdleWEAP_LINUX_XTRA_OFF) < 0.1)
    {
        switch(
g_current_mode[id])
        {
            case 
MODE_RIGHTfm_play_weapon_animation(idGK_IDLE)
            case 
MODE_LEFTfm_play_weapon_animation(idGK_IDLE2)
        }
 
        
set_pdata_float(gkm_flTimeWeaponIdle20.0WEAP_LINUX_XTRA_OFF)
        
set_pdata_string(id, (492) * 4"dualpistols", -20)
    }
 
    return 
HAM_IGNORED
}
 
public 
CurrentWeapon(id)
{
    new 
weapon read_data(2)
    new 
ammo read_data(3
 
    if(
weapon != CSW_GK || !g_has_gk[id])
    {
        if(
task_exists(id+GK_TASK_RESET))
        {
            
remove_task(id+GK_TASK_RESET)
            
g_current_mode[id] = MODE_RIGHT
            g_clip_counter
[id] = 0
        
}
        return
    }
 
    if(
g_current_mode[id] >= MODE_SKILL1)
        return
 
    static 
Float:iSpeedEnt
    Ent 
fm_find_ent_by_owner(-1weapon_gkid)
 
    if(
g_clip_counter[id] == || g_clip_counter[id] == 5)
        
iSpeed 0.5
    
else
        
iSpeed 0.1
 
    
if(Ent)
    {
        
set_pdata_float(Entm_flNextPrimaryAttackiSpeedWEAP_LINUX_XTRA_OFF)
        
set_pdata_float(Entm_flNextSecondaryAttackiSpeedWEAP_LINUX_XTRA_OFF)
    }
 
    
Check_Counter(idweaponammo)
}
 
public 
fw_UpdateClientData_Post(idSendWeaponsCD_Handle)
{
    if(!
is_user_alive(id) || get_user_weapon(id) != CSW_GK || !g_has_gk[id])
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackget_gametime() + 0.001)
    return 
FMRES_HANDLED
}
 
public 
fw_GunKata_PrimaryAttack(Weapon)
{
    new 
id get_pdata_cbase(Weaponm_pPlayerWEAP_LINUX_XTRA_OFF)
    
    if (!
g_has_gk[id])
        return 
HAM_IGNORED
 
    g_IsInPrimaryAttack 
1
    pev
(id,pev_punchanglecl_pushangle[id])
 
    
set_pdata_int(Weaponm_iShotsFired, -1)
 
    
g_clip_ammo[id] = cs_get_weapon_ammo(Weapon)
    
g_iClip cs_get_weapon_ammo(Weapon)
 
    return 
HAM_IGNORED
}
 
public 
fw_PlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if (
eventid != g_orig_event_gk || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
    
if (!(<= invoker <= g_maxplayers))
        return 
FMRES_IGNORED
 
    engfunc
(EngFunc_PlaybackEventflags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}
 
public 
fw_GunKata_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new id get_pdata_cbase(Weaponm_pPlayerWEAP_LINUX_XTRA_OFF)
    
    if(!
is_user_alive(id))
        return 
HAM_IGNORED
 
    
new szClipszAmmo
    get_user_weapon
(idszClipszAmmo)
 
    if(
g_iClip <= cs_get_weapon_ammo(Weapon))
        return 
HAM_IGNORED
 
    
if(g_current_mode[id] <= MODE_LEFT)
        
remove_task(id+GK_TASK_RESET)
 
    if(
g_has_gk[id])
    {
        if (!
g_clip_ammo[id])
            return 
HAM_IGNORED
 
        
new Float:push[3]
 
        
pev(id,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[id],push)
 
        
xs_vec_mul_scalar(pushg_current_mode[id] > MODE_LEFT get_pcvar_float(cvar_recoil_gk) : 0.0push)
        
xs_vec_add(pushcl_pushangle[id], push)
        
set_pev(id,pev_punchanglepush)
 
        if(
g_current_mode[id] == MODE_SKILL3 || g_current_mode[id] == MODE_SKILL4)
        {
            if(
g_current_mode[id] == MODE_SKILL3)
                
g_Muzzleflash[id] = 1
            
else
                
g_Muzzleflash[id] = 2
            
            
return HAM_IGNORED
        
}
 
        if (
g_current_mode[id] > MODE_LEFT)
            return 
HAM_IGNORED
 
        
if(g_clip_counter[id] <= 2)
        {
            if(
g_clip_counter[id] == 2)
            {
                
g_Muzzleflash[id] = 1
                fm_play_weapon_animation
(idGK_SHOOT_LAST)
                
g_current_mode[id] = MODE_LEFT
                fm_set_weapon_idle_time
(idweapon_gk0.5)
            }
            else
            {
                
g_current_mode[id] = MODE_RIGHT
                g_Muzzleflash
[id] = 1
                fm_play_weapon_animation
(idGK_SHOOT)
            }
        }
        else
        {
            if(
g_clip_counter[id] == 5)
            {
                
g_Muzzleflash[id] = 2
                fm_play_weapon_animation
(idGK_SHOOT2_LAST)
                
g_current_mode[id] = MODE_RIGHT
                fm_set_weapon_idle_time
(idweapon_gk0.5)
                
set_task(0.3"fix_counter"id+GK_TASK_FIX)
                
            }
            else 
            {
                
g_Muzzleflash[id] = 2
                g_current_mode
[id] = MODE_LEFT
                fm_play_weapon_animation
(idGK_SHOOT2)
            }
        }
 
        
emit_sound(idCHAN_WEAPONGK_Sounds[1], VOL_NORMATTN_NORM0PITCH_NORM)
    }
 
    return 
HAM_IGNORED
}
 
public 
fix_counter(id)
{
    
id -= GK_TASK_FIX
    
    
if(is_user_alive(id))
        
g_clip_counter[id] = 0
}
 
public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_GK)
        {
            if(
g_has_gk[attacker] && g_current_mode[attacker] < MODE_SKILL1)
            {   
                switch(
g_HitGroup[attacker])
                {
                    case 
HIT_HEADdamage get_pcvar_num(cvar_dmg_gk) * 1.5
                    
case HIT_LEFTARM .. HIT_RIGHTLEGdamage get_pcvar_num(cvar_dmg_gk) * 0.75
                    
case HIT_CHESTHIT_STOMACHdamage float(get_pcvar_num(cvar_dmg_gk))
                }
 
                
SetHamParamFloat(4damage)     
            }
        }
    }
}
 
public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
TruncatedWeapon[33], iAttackeriVictimweapon[32]
    
    
copy(weaponcharsmax(weapon), weapon_gk)
    
replace(weaponcharsmax(weapon), "weapon_""")
 
    
get_msg_arg_string(4TruncatedWeaponcharsmax(TruncatedWeapon))
 
    
iAttacker get_msg_arg_int(1)
    
iVictim get_msg_arg_int(2)
 
    if(!
is_user_connected(iAttacker) || iAttacker == iVictim)
        return 
PLUGIN_CONTINUE
 
    
if(equal(TruncatedWeaponweapon) && get_user_weapon(iAttacker) == CSW_GK && g_has_gk[iAttacker])
            
set_msg_arg_string(4"gunkata")
 
    return 
PLUGIN_CONTINUE
}
 
public 
fw_GunKata_ItemPostFrame(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
 
    if (!
is_user_connected(id))
        return 
HAM_IGNORED
 
    
if (!g_has_gk[id])
        return 
HAM_IGNORED
 
    
static iClipExtra
 
    iClipExtra 
get_pcvar_num(cvar_clip_gk)
    new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)
 
    new 
iBpAmmo cs_get_user_bpammo(idCSW_GK)
    new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)
    new 
iButton pev(idpev_button)
 
    new 
fInReload get_pdata_int(weapon_entitym_fInReloadWEAP_LINUX_XTRA_OFF
 
    if(
fInReload && flNextAttack <= 0.0 && g_current_mode[id] < MODE_SKILL1)
    {
        new 
min(iClipExtra iClipiBpAmmo)
 
        
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
        
cs_set_user_bpammo(idCSW_GKiBpAmmo-j)
 
        
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
        
fInReload 0
    
}
 
    new 
FloatflDelay get_pcvar_float(cvar_cooldown_gk)
 
    if(
get_gametime() - flDelay >= g_Delay[id])
        
GunKata_Dance(idweapon_entityiButton)
 
    return 
HAM_IGNORED
}
 
public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
FMRES_IGNORED    
    
    
static CurButton
    CurButton 
get_uc(uc_handleUC_Buttons)
    
    if(
g_current_mode[id] < MODE_SKILL1)
        return 
FMRES_IGNORED
    
    
if(CurButton IN_ATTACK)
    {
        
CurButton &= ~IN_ATTACK
        set_uc
(uc_handleUC_ButtonsCurButton)
    }
 
    return 
FMRES_IGNORED
}
 
public 
GunKata_Dance(idweapon_entityiButton)
{
    if(
get_pdata_float(idm_flNextAttack) > 0.0)
        return
 
    if(
get_pdata_float(weapon_entitym_flNextSecondaryAttackWEAP_LINUX_XTRA_OFF) <= 0.0 && iButton IN_ATTACK2 && iButton & ~IN_ATTACK)
    {
        
set_pev(idpev_weaponmodel2GK_P_MODEL2)
        
        new 
gk_range get_pcvar_num(cvar_radius_gk)
        
        
make_stalker(id)
 
        switch(
g_current_mode[id])
        {
            case 
MODE_RIGHT .. MODE_LEFT:
            {
                
g_current_mode[id] = MODE_SKILL1
                remove_task
(id+GK_TASK_RESET)
                
fm_play_weapon_animation(idGK_SKILL1)
                
make_senpai(id0)
                
emit_sound(idCHAN_WEAPONGK_Sounds[7], VOL_NORMATTN_NORM0PITCH_NORM)
                
fm_set_weapon_idle_time(idweapon_gk0.5)
                
gk_slash(idget_pcvar_num(cvar_dmg_gk) * 2gk_range)
                
set_task(1.5"reset_mode"id+GK_TASK_RESET)
            }
            case 
MODE_SKILL1:
            {
                
g_current_mode[id] = MODE_SKILL2
                remove_task
(id+GK_TASK_RESET)
                
fm_play_weapon_animation(idGK_SKILL2)
                
make_senpai(id1)
                
emit_sound(idCHAN_WEAPONGK_Sounds[8], VOL_NORMATTN_NORM0PITCH_NORM)
                
fm_set_weapon_idle_time(idweapon_gk0.5)
                
gk_slash(idget_pcvar_num(cvar_dmg_gk) * 2gk_range)
                
set_task(1.5"reset_mode"id+GK_TASK_RESET)
            }
            case 
MODE_SKILL2:
            {
                
g_current_mode[id] = MODE_SKILL3
                remove_task
(id+GK_TASK_RESET)
                
fm_play_weapon_animation(idGK_SKILL3)
                
ExecuteHamB(Ham_Weapon_PrimaryAttackweapon_entity)
                
make_senpai(id2)
                
emit_sound(idCHAN_WEAPONGK_Sounds[9], VOL_NORMATTN_NORM0PITCH_NORM)
                
fm_set_weapon_idle_time(idweapon_gk1.0)
                
gk_slash(idget_pcvar_num(cvar_dmg_gk) * 2gk_range)
                
set_task(1.5"reset_mode"id+GK_TASK_RESET)
            }
            case 
MODE_SKILL3:
            {
                
g_current_mode[id] = MODE_SKILL4
                remove_task
(id+GK_TASK_RESET)
                
fm_play_weapon_animation(idGK_SKILL4)
                
make_senpai(id3)
                
emit_sound(idCHAN_WEAPONGK_Sounds[10], VOL_NORMATTN_NORM0PITCH_NORM)
                
set_task(0.5"last_effect"id+GK_TASK_LAST)
                
fm_set_weapon_idle_time(idweapon_gk1.0)
                
gk_slash(idget_pcvar_num(cvar_dmg_gk) * 2gk_range)
                
set_task(1.5"reset_mode"id+GK_TASK_RESET)
            }
            case 
MODE_SKILL4:
            {
                
g_current_mode[id] = MODE_SKILL5
                remove_task
(id+GK_TASK_RESET)
                
fm_play_weapon_animation(idGK_SKILL5)
                
make_senpai(id4)
                
emit_sound(idCHAN_WEAPONGK_Sounds[11], VOL_NORMATTN_NORM0PITCH_NORM)
                
fm_set_weapon_idle_time(idweapon_gk0.5)
                
gk_slash(idget_pcvar_num(cvar_dmg_gk) * 2gk_range)
                
set_task(1.0"reset_mode"id+GK_TASK_RESET)
            }
            case 
MODE_SKILL5:
            {
                
g_current_mode[id] = MODE_SKILL_LAST
                remove_task
(id+GK_TASK_RESET)
                
fm_play_weapon_animation(idGK_SKILL_LAST)
                
make_senpai(id5)
                
set_task(0.4"last_effect"id+GK_TASK_LAST)
                
fm_set_weapon_idle_time(idweapon_gk0.5)
                
gk_slash(idget_pcvar_num(cvar_dmg_gk) * 2gk_range)
                
set_task(1.0"reset_mode"id+GK_TASK_RESET)
            }
        }
    }
}
 
public 
gk_slash(iddamagerange)
{
    new 
temp[2], weapon get_user_weapon(idtemp[0], temp[1])
    
    if (
weapon != CSW_GK || !g_has_gk[id])
        return
    
    if(
g_current_mode[id] < MODE_SKILL1)
        return
 
    static 
Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3]
    
pev(idpev_v_angleangles)
    
engfunc(EngFunc_MakeVectorsangles)
    
global_get(glb_v_forwardv_forward)
    
global_get(glb_v_rightv_right)
    
global_get(glb_v_upv_up)
 
    
pev(idpev_originplayer_origin)
    
pev(idpev_view_ofsplayer_view_offset)
    
xs_vec_add(player_originplayer_view_offsetgun_position)
    
    
xs_vec_mul_scalar(v_right0.0v_right)
 
    if ((
pev(idpev_flags) & FL_DUCKING) == FL_DUCKING)
        
xs_vec_mul_scalar(v_up6.0v_up)
    else
        
xs_vec_mul_scalar(v_up, -2.0v_up)
 
    
xs_vec_add(gun_positionv_forwardorigin)
    
xs_vec_add(originv_rightorigin)
    
xs_vec_add(originv_uporigin)
        
    
vSrc[0] = origin[0]
    
vSrc[1] = origin[1]
    
vSrc[2] = origin[2]
 
    static 
Float:flOrigin[3] , Float:flDistance Float:originplayer[3]
    
    for(new 
victim 0victim <= g_maxplayersvictim++)
    {
        if(
is_user_alive(victim) && victim != id && get_user_team(victim) != get_user_team(id))
        {
            
pev(victimpev_originflOrigin)
            
pev(idpev_originoriginplayer)
 
            if(!
get_can_see(flOriginoriginplayer))
                continue
        
            
flDistance get_distance_f(vSrcflOrigin)   
                
            if(
flDistance <= float(range))
            {   
                new 
Float:dmg float(damage)
                
                
ExecuteHamB(Ham_TakeDamagevictim id iddmgDMG_BULLET)      
                
make_blood(victimdmg)
            }
        }
    }
    
}
 
public 
last_effect(id)
{
    
id -= GK_TASK_LAST
 
    
if(get_user_weapon(id) != CSW_GK || !g_has_gk[id])
        return
 
    new 
weapon_entity fm_find_ent_by_owner(-1weapon_gkid)
 
    switch(
g_current_mode[id])
    {
        case 
MODE_SKILL4ExecuteHamB(Ham_Weapon_PrimaryAttackweapon_entity)
        case 
MODE_SKILL_LASTcreate_explosion(id)
    }
}
 
stock make_stalker(id)
{
    if(
g_current_mode[id] < MODE_SKILL1)
        return
 
    new 
Float:flOrigin[3]
    
    
pev(idpev_originflOrigin)
 
    new 
gk_stalker engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target")) 
 
    if(!
pev_valid(gk_stalker))
        return
 
    
set_pev(gk_stalkerpev_classnameGK_FASTEFFECT_CLASSNAME)
 
    
engfunc(EngFunc_SetOrigingk_stalkerflOrigin)
 
    
set_pev(gk_stalkerpev_movetypeMOVETYPE_FOLLOW)
 
    
set_pev(gk_stalkerpev_aimentid)
 
    
engfunc(EngFunc_SetModelgk_stalkerGK_Effects[0])
 
    
set_pev(gk_stalkerpev_solidSOLID_NOT)
 
    
set_pev(gk_stalkerpev_animtimeget_gametime())
    
    
set_pev(gk_stalkerpev_framerate1.0)
    
    
set_pev(gk_stalkerpev_sequence1)
 
    
set_pev(gk_stalkerpev_nextthinkget_gametime() + 1.0)
}
 
stock make_senpai(idanim)
{
    if(
get_user_weapon(id) != CSW_GK || !g_has_gk[id])
        return
 
    new 
Float:flOrigin[3], Float:flAimOrigin[3], iButton 
    
    pev
(idpev_originflOrigin)
    
fm_get_aim_origin(idflAimOrigin)
    
iButton pev(idpev_button)
 
    new 
gk_senpai engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target")) 
 
    if(!
pev_valid(gk_senpai))
        return
 
    
set_pev(gk_senpaipev_classnameGK_SHADOW_CLASSNAME)
 
    
engfunc(EngFunc_SetOrigingk_senpaiflOrigin)
 
    
fm_set_aim(gk_senpaiflAimOrigin)
 
    
engfunc(EngFunc_SetModelgk_senpaiGK_Effects[2])
 
    
set_pev(gk_senpaipev_solidSOLID_NOT)
 
    
set_pev(gk_senpaipev_animtime2.0)
    
    
set_pev(gk_senpaipev_framerate1.0)
    
    
iButton IN_DUCK set_pev(gk_senpaipev_sequenceanim 6) : set_pev(gk_senpaipev_sequenceanim)
 
    
set_pev(gk_senpaipev_lifeget_gametime() + 2.0)
 
    
set_pev(gk_senpaipev_nextthinkget_gametime() + 1.0)
 
}
 
public 
create_explosion(id)
{
    if(
get_user_weapon(id) != CSW_GK || !g_has_gk[id])
        return
 
    new 
Float:flOrigin[3]
 
    
pev(idpev_originflOrigin)
 
    new 
gk_hole engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target")) 
 
    if(!
pev_valid(gk_hole))
        return
 
    
set_pev(gk_holepev_classnameGK_EXP_CLASSNAME)
    
    
engfunc(EngFunc_SetModelgk_holeGK_Effects[1])
 
    
engfunc(EngFunc_SetOrigingk_holeflOrigin)
 
    
set_pev(gk_holepev_solidSOLID_NOT)
 
    
set_pev(gk_holepev_scaleget_pcvar_num(cvar_radius_gk) / 10000)
 
    
set_pev(gk_holepev_animtimeget_gametime())
 
    
set_pev(gk_holepev_framerate1.0)
    
    
set_pev(gk_holepev_sequence1)
 
    
set_pev(gk_holepev_lifeget_gametime() + 0.5)
 
    
set_pev(gk_holepev_nextthinkget_gametime() + 0.1)
 
    
emit_sound(idCHAN_WEAPONGK_Sounds[13], VOL_NORMATTN_NORM0PITCH_NORM)
 
    static 
victim
    victim 
= -1
    
    
while ((victim engfunc(EngFunc_FindEntityInSpherevictimflOriginfloat(get_pcvar_num(cvar_radius_gk)))) != 0)
    {
        if (!
is_user_alive(victim) || victim == id || get_user_team(victim) == get_user_team(id))
            continue
        
        new 
Float:vec[3]
        new 
Float:oldvelo[3]
 
        
pev(victimpev_velocityoldvelo)
        
        
fm_create_velocity_vector(victimidvec)
        
        
vec[0] += oldvelo[0]
        
vec[1] += oldvelo[1]
        
        
set_pev(victimpev_velocityvec)
    }
}
 
stock fm_get_aim_origin(indexFloat:origin[3])
{
    new 
Float:start[3], Float:view_ofs[3];
    
pev(indexpev_originstart);
    
pev(indexpev_view_ofsview_ofs);
    
xs_vec_add(startview_ofsstart);
 
    new 
Float:dest[3];
    
pev(indexpev_v_angledest);
    
engfunc(EngFunc_MakeVectorsdest);
    
global_get(glb_v_forwarddest);
    
xs_vec_mul_scalar(dest9999.0dest);
    
xs_vec_add(startdestdest);
 
    
engfunc(EngFunc_TraceLinestartdest0index0);
    
get_tr2(0TR_vecEndPosorigin);
 
    return 
1;
}
 
stock fm_set_aim(entFloat:origin[3])
{
    static 
Float:ent_origin[3], Float:angles[3]
 
    
pev(entpev_originent_origin)
    
    
xs_vec_sub(originent_originorigin)
 
    
xs_vec_normalize(originorigin)
 
    
vector_to_angle(originangles)
    
    
angles[0] = 0.0
    
    set_pev
(entpev_anglesangles)
}
 
public 
fw_Think(ent)
{
    if(!
pev_valid(ent))     
        return 
FMRES_IGNORED
 
    
new ClassName[32]
    
pev(entpev_classnameClassNamecharsmax(ClassName))
 
    if(
equal(ClassNameGK_EXP_CLASSNAME))
    {
        if(
pev(entpev_life) - get_gametime() <= 0)
        {
            
set_pev(entpev_flagsFL_KILLME)
            
engfunc(EngFunc_RemoveEntityent)
            return 
FMRES_IGNORED
        
}
    }
    else if(
equal(ClassNameGK_SHADOW_CLASSNAME))
    {
        if(
pev(entpev_life) - get_gametime() <= 0)
        {
            
set_pev(entpev_flagsFL_KILLME)
            
engfunc(EngFunc_RemoveEntityent)
            return 
FMRES_IGNORED
        
}
    }
    else if(
equal(ClassNameGK_FASTEFFECT_CLASSNAME))
    {
        static 
id
        id 
pev(entpev_aiment)
 
        if(
g_current_mode[id] < MODE_SKILL1)
        {
            
set_pev(entpev_flagsFL_KILLME)
            
engfunc(EngFunc_RemoveEntityent)
            return 
FMRES_IGNORED
        
}
    }
    else if(
equal(ClassNameGK_HANDS_CLASSNAME))
    {
        static 
id
        id 
pev(entpev_aiment)
 
        if(
g_current_mode[id] < MODE_SKILL1)
        {
            
set_pev(entpev_flagsFL_KILLME)
            
engfunc(EngFunc_RemoveEntityent)
            return 
FMRES_IGNORED
        
}
    }
 
    
set_pev(entpev_nextthinkget_gametime() + 0.1)
 
    return 
FMRES_IGNORED
}
 
public 
reset_mode(id)
{
    
id -= GK_TASK_RESET
 
    
new weapon_entity fm_find_ent_by_owner(-1weapon_gkid)
 
    if(
get_user_weapon(id) != CSW_GK || !g_has_gk[id])
        return
 
    if(
g_current_mode[id] == MODE_SKILL_LAST)
    {
        
g_current_mode[id] = MODE_RIGHT
        g_clip_counter
[id] = 0
        ExecuteHamB
(Ham_Weapon_Reloadweapon_entity)
    }
 
    else
    {
        
g_current_mode[id] = MODE_RIGHT
        g_clip_counter
[id] = 0
        ExecuteHamB
(Ham_Item_Deployweapon_entity)
    }
 
    
g_Delay[id] = get_gametime()
    
set_pev(idpev_weaponmodel2GK_P_MODEL)
}
 
stock get_can_see(Float:ent_origin[3], Float:target_origin[3])
{
    new 
Float:hit_origin[3]
    
fm_trace_line(-1ent_origintarget_originhit_origin)                        
 
    if (!
vector_distance(hit_origintarget_origin))
        return 
1
 
    
return 0
}
 
stock make_blood(id Float:Damage)
{
    new 
bloodColor ExecuteHam(Ham_BloodColorid)
    new 
Float:origin[3]
    
pev(idpev_originorigin)
 
    if (
bloodColor == -1)
        return
 
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BLOODSPRITE)
    
write_coord(floatround(origin[0]))
    
write_coord(floatround(origin[1]))
    
write_coord(floatround(origin[2]))
    
write_short(m_iBlood[1])
    
write_short(m_iBlood[0])
    
write_byte(bloodColor)
    
write_byte(min(max(3floatround(Damage)/5), 16))
    
message_end()
}
 
public 
fw_GunKata_Reload(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
 
    if (!
is_user_connected(id))
        return 
HAM_IGNORED
 
    
if (!g_has_gk[id])
        return 
HAM_IGNORED
 
    
if(g_current_mode[id] >= MODE_SKILL1)
        return 
HAM_SUPERCEDE
 
    
static iClipExtra
 
    
if(g_has_gk[id])
        
iClipExtra get_pcvar_num(cvar_clip_gk)
 
    
g_gk_TmpClip[id] = -1
 
    
new iBpAmmo cs_get_user_bpammo(idCSW_GK)
    new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)
 
    if (
iBpAmmo <= 0)
        return 
HAM_SUPERCEDE
 
    
if (iClip >= iClipExtra)
        return 
HAM_SUPERCEDE
 
    g_gk_TmpClip
[id] = iClip
 
    
return HAM_IGNORED
}
 
public 
fw_GunKata_Reload_Post(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED
 
    
if (!g_has_gk[id])
        return 
HAM_IGNORED
 
    
if (g_gk_TmpClip[id] == -1)
        return 
HAM_IGNORED
 
    set_pdata_int
(weapon_entitym_iClipg_gk_TmpClip[id], WEAP_LINUX_XTRA_OFF)
 
    
fm_set_weapon_idle_time(idweapon_gkGK_RELOAD_TIME)
 
    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF
 
    switch(
g_current_mode[id])
    {
        case 
MODE_RIGHTfm_play_weapon_animation (idGK_RELOAD)
        case 
MODE_LEFT:
        {
            
fm_play_weapon_animation (idGK_RELOAD2)
            
g_current_mode[id] = MODE_RIGHT
            g_clip_counter
[id] = 0
        
}
    }
 
    
set_pdata_string(id, (492) * 4"dualpistols", -20)
    
    return 
HAM_IGNORED
}
 
public 
fw_CheckVisibility(iEntitypSet)
{
    if(
iEntity != g_Muzzleflash_Ent[MODE_RIGHT] || iEntity != g_Muzzleflash_Ent[MODE_LEFT]) 
        return 
FMRES_IGNORED
 
    forward_return
(FMV_CELL1)
    return 
FMRES_SUPERCEDE
}
 
public 
fw_AddToFullPack_post(esStateiEiEntiHostiHostFlagsiPlayerpSet)
{
    static 
Float:flOrigin[3]
    
pev(iPlayerpev_originflOrigin)
 
    if(
iEnt == g_Muzzleflash_Ent[MODE_RIGHT])
    {
        if(
g_Muzzleflash[iHost] == 1)
        {
            
set_es(esStateES_Framefloat(random_num(02)))
                
            
set_es(esStateES_RenderModekRenderTransAdd)
            
set_es(esStateES_RenderAmt255.0)
            
            
g_Muzzleflash[iHost] = 0
        
}
            
        
set_es(esStateES_SkiniHost)
        
set_es(esStateES_BodyMODE_RIGHT 1)
        
set_es(esStateES_AimEntiHost)
        
set_es(esStateES_MoveTypeMOVETYPE_FOLLOW)
    }
    else if (
iEnt == g_Muzzleflash_Ent[MODE_LEFT])
    {
        if(
g_Muzzleflash[iHost] == 2)
        {
            
set_es(esStateES_Framefloat(random_num(02)))
                
            
set_es(esStateES_RenderModekRenderTransAdd)
            
set_es(esStateES_RenderAmt255.0)
            
            
g_Muzzleflash[iHost] = 0
        
}
            
        
set_es(esStateES_SkiniHost)
        
set_es(esStateES_BodyMODE_LEFT 2)
        
set_es(esStateES_AimEntiHost)
        
set_es(esStateES_MoveTypeMOVETYPE_FOLLOW)
    }
    if(
fm_is_ent_classname(iEntGK_SHADOW_CLASSNAME) && fm_entity_range(iEntiHost) <= 10.0)
    {
        
set_es(esStateES_RenderModekRenderTransAdd)
        
set_es(esStateES_RenderAmt0.0)
    }
}
 
 
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 fm_set_weapon_idle_time(id, const class[], Float:IdleTime)
{
    static 
weapon_ent
    weapon_ent 
fm_find_ent_by_owner(-1, class, id)
 
    if(!
pev_valid(weapon_ent))
        return
 
    
set_pdata_float(weapon_entm_flNextPrimaryAttackIdleTimeWEAP_LINUX_XTRA_OFF)
    
set_pdata_float(weapon_entm_flNextSecondaryAttackIdleTimeWEAP_LINUX_XTRA_OFF)
    
set_pdata_float(weapon_entm_flTimeWeaponIdleIdleTime 0.50WEAP_LINUX_XTRA_OFF)
}
 
stock fm_play_weapon_animation(const id, const Sequence)
{
    
set_pev(idpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player id)
    
write_byte(Sequence)
    
write_byte(pev(idpev_body))
    
message_end()
}
 
stock fm_find_ent_by_owner(index, const classname[], ownerjghgtype 0)
{
    new 
strtype[11] = "classname"ent index;
 
    switch (
jghgtype)
    {
        case 
1strtype "target";
        case 
2strtype "targetname";
    }
 
    while ((
ent engfunc(EngFunc_FindEntityByStringentstrtypeclassname)) && pev(entpev_owner) != owner) {}
 
    return 
ent;
}
 
stock fm_give_item(index, const item[])
{
    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))
        return 
0;
 
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringitem));
    
    if (!
pev_valid(ent))
        return 
0;
 
    new 
Float:origin[3];
    
pev(indexpev_originorigin);
    
set_pev(entpev_originorigin);
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN);
    
dllfunc(DLLFunc_Spawnent);
 
    new 
save pev(entpev_solid);
    
dllfunc(DLLFunc_Touchentindex);
    if (
pev(entpev_solid) != save)
        return 
ent;
 
    
engfunc(EngFunc_RemoveEntityent);
 
    return -
1;
}
 
stock Check_Counter(idweaponammo)
{
    if(
g_nCurWeapon[id][0] != weapon)
    {  
        
g_nCurWeapon[id][0] = weapon  
        g_nCurWeapon
[id][1] = ammo
        
return  
    }  
 
    if(
g_nCurWeapon[id][1] < ammo)
    {  
        
g_nCurWeapon[id][1] = ammo  
        
return
    }
 
    if(
g_nCurWeapon[id][1] == ammo)
        return
 
    
g_nCurWeapon[id][0] = weapon 
    g_nCurWeapon
[id][1] = ammo
 
    g_clip_counter
[id]++
}
 
stock fm_create_velocity_vector(victimattackerFloat:velocity[3])
{
    if(
victim <= g_maxplayers)
    {
        if(!
is_user_alive(attacker) || victim == attacker || get_user_team(victim) == get_user_team(attacker))
        return 
0;
 
        new 
Float:vicorigin[3], Float:attorigin[3]
 
        
pev(victimpev_originvicorigin)
        
pev(attackerpev_originattorigin)
        
        new 
Float:origin2[3]
 
        
origin2[0] = vicorigin[0] - attorigin[0]
        
origin2[1] = vicorigin[1] - attorigin[1]
        
        new 
Float:largestnum
        
        
if(floatabs(origin2[0]) > largestnum)
            
largestnum floatabs(origin2[0])
        
        if(
floatabs(origin2[1]) > largestnum)
            
largestnum floatabs(origin2[1])
        
        
origin2[0] /= largestnum
        origin2
[1] /= largestnum
        
        velocity
[0] = (origin2[0] * (200.0 1000)) / floatround(fm_entity_range(victimattacker))
        
velocity[1] = (origin2[1] * (200.0 1000)) / floatround(fm_entity_range(victimattacker))
        
        if(
velocity[0] <= 20.0 || velocity[1] <= 20.0)
            
velocity[2] = random_float(200.0 275.0)
    }
    return 
1;
}
 
stock fm_get_user_weapon_entity(idwid 0)
{
    new 
weap widclipammo;
    if (!
weap && !(weap get_user_weapon(idclipammo)))
        return 
0;
 
    if(!
pev_valid(weap))
        return 
0
 
    
new class[32];
    
get_weaponname(weap, class, sizeof class - 1);
 
    return 
fm_find_ent_by_owner(-1, class, id);
}
 
stock fm_trace_line(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3])
{
    
engfunc(EngFunc_TraceLinestartendignoreent == -0ignoreent0);
 
    new 
ent get_tr2(0TR_pHit);
    
get_tr2(0TR_vecEndPosret);
 
    return 
pev_valid(ent) ? ent 0;
}
 
stock Float:fm_entity_range(ent1ent2)
{
    new 
Float:origin1[3], Float:origin2[3]
    
    
pev(ent1pev_originorigin1)
    
pev(ent2pev_originorigin2)
 
    return 
get_distance_f(origin1origin2)
}
 
stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
 
    
set_pev(entitypev_renderfxfx);
    
set_pev(entitypev_rendercolorRenderColor);
    
set_pev(entitypev_rendermoderender);
    
set_pev(entitypev_renderamtfloat(amount));
 
    return 
1;
}
 
stock bool:fm_is_ent_classname(index, const classname[])
{
    if (!
pev_valid(index))
        return 
false;
 
    new class[
32];
    
pev(indexpev_classname, class, sizeof class - 1);
 
    if (
equal(class, classname))
        return 
true;
 
    return 
false;
}
 
stock drop_weapons(iddropwhat)
{
     static 
weapons[32], numiweaponid
     num 
0
     get_user_weapons
(idweaponsnum)
     
     for (
0numi++)
     {
          
weaponid weapons[i]
          
          if (
dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
          {
               static 
wname[32]
               
get_weaponname(weaponidwnamesizeof wname 1)
               
engclient_cmd(id"drop"wname)
          }
     }

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)