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

need help at cyclone code.


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Carbonzxc
Member
Join Date: Sep 2015
Old 03-15-2016 , 13:05   need help at cyclone code.
Reply With Quote #1

hope that correct section for that. im using cyclone (for zp) from dias but my players using it for gain money. theyre shooting each other to gain money with it. i need a way to edit/remove that at source code. shortly, need to disable gain money from teammates by shooting them.

code is :http://www.heypasteit.com/clip/2IU9
Carbonzxc is offline
SkumTomteN
Veteran Member
Join Date: Oct 2013
Location: Asgard
Old 03-15-2016 , 14:56   Re: need help at cyclone code.
Reply With Quote #2

Quote:
Originally Posted by Carbonzxc View Post
hope that correct section for that. im using cyclone (for zp) from dias but my players using it for gain money. theyre shooting each other to gain money with it. i need a way to edit/remove that at source code. shortly, need to disable gain money from teammates by shooting them.

code is :http://www.heypasteit.com/clip/2IU9
That code is private, no support from me
__________________
Contact: Steam
Videos: Youtube
SkumTomteN is offline
Artifact
Veteran Member
Join Date: Jul 2010
Old 03-15-2016 , 20:07   Re: need help at cyclone code.
Reply With Quote #3

Quote:
Originally Posted by SkumTomteN View Post
That code is private, no support from me
Here, now it's public
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <zombieplague>

#define PLUGIN "[CSO] Weapon: Cyclone"
#define VERSION "1.0"
#define AUTHOR "Dias Pendragon"

#define CSW_CYCLONE CSW_DEAGLE
#define weapon_cyclone "weapon_deagle"

#define OLD_W_MODEL "models/w_deagle.mdl"
#define WEAPON_SECRETCODE 20042014

#define V_MODEL "models/v_sfpistol.mdl"
#define P_MODEL "models/p_sfpistol.mdl"
#define W_MODEL "models/w_sfpistol.mdl"

#define DAMAGE 18
#define CLIP 50
#define BPAMMO 200

#define TIME_DRAW 0.75
#define TIME_RELOAD 2.5
#define TIME_ATTACKDELAY 0.025 // 0.085
#define TIME_ATTACKEND 0.5

new const WeaponSounds[7][] =
{
    
"weapons/sfpistol_shoot1.wav",
    
"weapons/sfpistol_shoot_start.wav",
    
"weapons/sfpistol_shoot_end.wav",
    
"weapons/sfpistol_idle.wav",
    
"weapons/sfpistol_draw.wav",
    
"weapons/sfpistol_clipin.wav",
    
"weapons/sfpistol_clipout.wav"
}

new const 
WeaponResources[4][] =
{
    
"sprites/weapon_sfpistol.txt",
    
"sprites/640hud12_2.spr",
    
"sprites/640hud104_2.spr",
    
"sprites/ef_smoke_poison.spr"
}

enum
{
    
CYCLONE_ANIM_IDLE 0,
    
CYCLONE_ANIM_SHOOT,
    
CYCLONE_ANIM_SHOOT_END,
    
CYCLONE_ANIM_RELOAD,
    
CYCLONE_ANIM_DRAW
}

enum
{
    
CYCLONE_STATE_IDLE 0,
    
CYCLONE_STATE_ATTACKING,
    
CYCLONE_STATE_ENDING
}

// 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))

new g_Had_Cycloneg_Beam_SprIdg_Burn_SprIdg_Cyclone
new g_Clip[33], g_WeaponState[33], Float:g_AttackSound[33], Float:g_CheckAmmo[33]
new 
g_MsgWeaponListg_MsgCurWeapon

public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)        
    
register_forward(FM_CmdStart"fw_CmdStart")    
    
register_forward(FM_SetModel"fw_SetModel")

    
RegisterHam(Ham_Item_Deployweapon_cyclone"fw_Item_Deploy_Post"1)    
    
RegisterHam(Ham_Item_AddToPlayerweapon_cyclone"fw_Item_AddToPlayer_Post"1)
    
RegisterHam(Ham_Item_PostFrameweapon_cyclone"fw_Item_PostFrame")    
    
RegisterHam(Ham_Weapon_Reloadweapon_cyclone"fw_Weapon_Reload")
    
RegisterHam(Ham_Weapon_Reloadweapon_cyclone"fw_Weapon_Reload_Post"1)        
    
    
g_MsgWeaponList get_user_msgid("WeaponList")
    
g_MsgCurWeapon get_user_msgid("CurWeapon")
    
    
g_Cyclone zp_register_extra_item("Cyclone"15ZP_TEAM_HUMAN)
    
    
//register_clcmd("admin_get_cyclone", "Get_Cyclone", ADMIN_KICK)
    
register_clcmd("weapon_sfpistol""Weapon_Hook")
}

public 
plugin_precache()
{
    
engfunc(EngFunc_PrecacheModelV_MODEL)
    
engfunc(EngFunc_PrecacheModelP_MODEL)
    
engfunc(EngFunc_PrecacheModelW_MODEL)
    
    for(new 
0sizeof(WeaponSounds); i  )
        
engfunc(EngFunc_PrecacheSoundWeaponSounds[i])
    for(new 
0sizeof(WeaponResources); i  )
    {
        if(
== 0engfunc(EngFunc_PrecacheGenericWeaponResources[i])
        else if(
== 3g_Burn_SprId engfunc(EngFunc_PrecacheModelWeaponResources[i])
        else 
engfunc(EngFunc_PrecacheModelWeaponResources[i])

    }
    
    
g_Beam_SprId =  engfunc(EngFunc_PrecacheModel"sprites/laserbeam.spr")
}

public 
zp_extra_item_selected(idItemID)
{
    if(
ItemID == g_CycloneGet_Cyclone(id)
}

public 
zp_user_infected_post(idRemove_Cyclone(id)

public 
Get_Cyclone(id)
{
    
g_WeaponState[id] = CYCLONE_STATE_IDLE
    Set_BitVar
(g_Had_Cycloneid)
    
    
give_item(idweapon_cyclone)
    
    static 
EntEnt fm_get_user_weapon_entity(idCSW_CYCLONE)
    if(
pev_valid(Ent)) cs_set_weapon_ammo(EntCLIP)
    
    
cs_set_user_bpammo(idCSW_CYCLONEBPAMMO)
    
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEg_MsgCurWeapon, {000}, id)
    
write_byte(1)
    
write_byte(CSW_CYCLONE)
    
write_byte(CLIP)
    
message_end()
}

public 
Remove_Cyclone(id)
{
    
UnSet_BitVar(g_Had_Cycloneid)
}

public 
Weapon_Hook(id)
{
    
engclient_cmd(idweapon_cyclone)
    return 
PLUGIN_HANDLED
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(id) == CSW_CYCLONE && Get_BitVar(g_Had_Cycloneid))
        
set_cd(cd_handleCD_flNextAttackget_gametime()   0.001

    return 
FMRES_HANDLED
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(id) != CSW_CYCLONE || !Get_BitVar(g_Had_Cycloneid))    
        return 
FMRES_IGNORED
        
    
static NewButtonNewButton get_uc(uc_handleUC_Buttons)
    static 
OldButtonOldButton pev(idpev_oldbuttons)
    if(
NewButton IN_ATTACK)
    {
        
NewButton &= ~IN_ATTACK
        set_uc
(uc_handleUC_ButtonsNewButton)
        
        if(
get_pdata_float(id835) > 0.0)
            return 
FMRES_IGNORED
            
        Cyclone_AttackHandle
(id0)
    } else {
        if((
OldButton IN_ATTACK))
        {
            if(
g_WeaponState[id] == CYCLONE_STATE_ATTACKING)
            {
                
g_WeaponState[id] = CYCLONE_STATE_ENDING
                Cyclone_AttackHandle
(id1)
            }
        }
    }
    
    return 
FMRES_IGNORED
}

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_cycloneentity)
        
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED;
        
        if(
Get_BitVar(g_Had_CycloneiOwner))
        {
            
UnSet_BitVar(g_Had_CycloneiOwner)
        
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
engfunc(EngFunc_SetModelentityW_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED;
}

public 
fw_Item_Deploy_Post(Ent)
{
    if(
pev_valid(Ent) != 2)
        return
    static 
IdId get_pdata_cbase(Ent414)
    if(
get_pdata_cbase(Id373) != Ent)
        return
    if(!
Get_BitVar(g_Had_CycloneId))
        return
    
    
set_pev(Idpev_viewmodel2V_MODEL)
    
set_pev(Idpev_weaponmodel2P_MODEL)
    
    
Set_WeaponAnim(IdCYCLONE_ANIM_DRAW)
    
set_pdata_float(Id83TIME_DRAW5)
}

public 
fw_Item_AddToPlayer_Post(entid)
{
    if(!
pev_valid(ent))
        return 
HAM_IGNORED
        
    
if(pev(entpev_impulse) == WEAPON_SECRETCODE)
    {
        
Set_BitVar(g_Had_Cycloneid)
        
set_pev(entpev_impulse0)
    }        
    
    
message_begin(MSG_ONE_UNRELIABLEg_MsgWeaponList_id)
    
write_string(Get_BitVar(g_Had_Cycloneid) ? "weapon_sfpistol" weapon_cyclone)
    
write_byte(8)
    
write_byte(200)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(1)
    
write_byte(1)
    
write_byte(CSW_CYCLONE)
    
write_byte(0)
    
message_end()    

    return 
HAM_HANDLED    
}

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

        
set_pdata_int(ent51iClip   temp14)
        
cs_set_user_bpammo(idCSW_CYCLONEbpammo 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_Cycloneid))
        return 
HAM_IGNORED

    g_Clip
[id] = -1
        
    
static BPAmmoBPAmmo cs_get_user_bpammo(idCSW_CYCLONE)
    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_Cycloneid))
        return 
HAM_IGNORED
        
    
if((get_pdata_int(ent544) == 1))
    { 
// Reload
        
if(g_Clip[id] == -1)
            return 
HAM_IGNORED
        
        set_pdata_int
(ent51g_Clip[id], 4)
        
Set_WeaponAnim(idCYCLONE_ANIM_RELOAD)
        
        
set_pdata_float(id83TIME_RELOAD5)
        
set_pdata_float(ent48TIME_RELOAD   1.04)
    }
    
    return 
HAM_HANDLED
}

public 
Cyclone_AttackHandle(idPass)
{
    static 
EntEnt fm_get_user_weapon_entity(idCSW_CYCLONE)
    if(!
pev_valid(Ent)) return
    
    if(!
Pass)
    {
        if(
cs_get_weapon_ammo(Ent) <= 0)
        {
            if(
g_WeaponState[id] == CYCLONE_STATE_IDLE)
            {
                
set_pdata_float(id831.05)
                return
            } else if(
g_WeaponState[id] == CYCLONE_STATE_ATTACKING) {
                
Set_WeaponAnim(idCYCLONE_ANIM_SHOOT_END)
                
emit_sound(idCHAN_WEAPONWeaponSounds[2], 1.0ATTN_NORM0PITCH_NORM)
                
                
g_WeaponState[id] = CYCLONE_STATE_IDLE
                
                
// Reload
                
Set_WeaponAnim(idCYCLONE_ANIM_RELOAD)
                
set_pdata_int(Ent5414)
                
set_pdata_float(id83TIME_RELOAD5)
                
set_pdata_float(Ent48TIME_RELOAD   1.04)
                
                return
            }
        }
            
        if(
get_gametime() - 0.085 g_CheckAmmo[id])
        {
            
cs_set_weapon_ammo(Entcs_get_weapon_ammo(Ent) - 1)
            
g_CheckAmmo[id] = get_gametime()
        }
        
set_pdata_float(id83TIME_ATTACKDELAY5)
    }
    
    
// Main Event
    
switch(g_WeaponState[id])
    {
        case 
CYCLONE_STATE_IDLE
        {
            
Set_WeaponAnim(idCYCLONE_ANIM_SHOOT)
            
emit_sound(idCHAN_WEAPONWeaponSounds[1], 1.0ATTN_NORM0PITCH_NORM)
            
            
g_WeaponState[id] = CYCLONE_STATE_ATTACKING
            g_AttackSound
[id] = get_gametime() - 5.0
        
}
        case 
CYCLONE_STATE_ATTACKING:
        {
            
Set_WeaponAnim(idCYCLONE_ANIM_SHOOT)
            
            if(
get_gametime() - 4.0 g_AttackSound[id])
            {
                
emit_sound(idCHAN_WEAPONWeaponSounds[0], 1.0ATTN_NORM0PITCH_NORM)
                
g_AttackSound[id] = get_gametime()
            }
            
            
Create_Laser(idEnt)
        }
        case 
CYCLONE_STATE_ENDING:
        {
            
Set_WeaponAnim(idCYCLONE_ANIM_SHOOT_END)
            
emit_sound(idCHAN_WEAPONWeaponSounds[2], 1.0ATTN_NORM0PITCH_NORM)
            
            
g_WeaponState[id] = CYCLONE_STATE_IDLE
            set_pdata_float
(id83TIME_ATTACKEND5)
        }
    }
}

public 
Create_Laser(idEnt)
{
    static 
Float:StartOrigin[3], Float:EndOrigin[3], Float:EndOrigin2[3]
    
    
Stock_Get_Postion(id40.07.5, -5.0StartOrigin)
    
Stock_Get_Postion(id4096.00.00.0EndOrigin)
    
    static 
TrResultTrResult create_tr2()
    
engfunc(EngFunc_TraceLineStartOriginEndOriginDONT_IGNORE_MONSTERSidTrResult
    
    
// Calc
    
get_weapon_attachment(idEndOrigin)
    
global_get(glb_v_forwardEndOrigin2)
    
    
xs_vec_mul_scalar(EndOrigin21024.0EndOrigin2)
    
xs_vec_add(EndOriginEndOrigin2EndOrigin2)

    
get_tr2(TrResultTR_vecEndPosEndOrigin)
    
get_tr2(TrResultTR_vecPlaneNormalEndOrigin2)
    
    
// Create Laser
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMENTPOINT)
    
write_short(id 0x1000)
    
engfunc(EngFunc_WriteCoordEndOrigin[0])
    
engfunc(EngFunc_WriteCoordEndOrigin[1])
    
engfunc(EngFunc_WriteCoordEndOrigin[2])
    
write_short(g_Beam_SprId)
    
write_byte(0)
    
write_byte(0)
    
write_byte(1)
    
write_byte(10)
    
write_byte(0)
    
write_byte(41)
    
write_byte(164)
    
write_byte(0)
    
write_byte(255)
    
write_byte(0)
    
message_end()        
    
    
xs_vec_mul_scalar(EndOrigin22.5EndOrigin2)
    
xs_vec_add(EndOriginEndOrigin2EndOrigin2)

    
// Create Burn Effect
    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordEndOrigin2[0])
    
engfunc(EngFunc_WriteCoordEndOrigin2[1])
    
engfunc(EngFunc_WriteCoordEndOrigin2[2])
    
write_short(g_Burn_SprId)    // sprite index
    
write_byte(2)    // scale in 0.1's
    
write_byte(30)    // framerate
    
write_byte(TE_EXPLFLAG_NODLIGHTS TE_EXPLFLAG_NOPARTICLES TE_EXPLFLAG_NOSOUND)    // flags
    
message_end()
    
    
// Take Damage
    
static HitHit get_tr2(TrResultTR_pHit)
    if(
is_user_alive(Hit)) do_attack(idHit0float(DAMAGE))
    
    
// Free
    
free_tr2(TrResult)
}

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 Set_WeaponAnim(idAnim)
{
    
set_pev(idpev_weaponanimAnim)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(Anim)
    
write_byte(pev(idpev_body))
    
message_end()
}

stock Stock_Get_Postion(id,Float:forw,Float:rightFloat:up,Float:vStart[])
{
    static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    
    
pev(idpev_originvOrigin)
    
pev(idpev_view_ofs,vUp//for player
    
xs_vec_add(vOrigin,vUp,vOrigin)
    
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
    
    
angle_vector(vAngle,ANGLEVECTOR_FORWARD,vForward//or use EngFunc_AngleVectors
    
angle_vector(vAngle,ANGLEVECTOR_RIGHT,vRight)
    
angle_vector(vAngle,ANGLEVECTOR_UP,vUp)
    
    
vStart[0] = vOrigin[0]   vForward[0] * forw   vRight[0] * right   vUp[0] * up
    vStart
[1] = vOrigin[1]   vForward[1] * forw   vRight[1] * right   vUp[1] * up
    vStart
[2] = vOrigin[2]   vForward[2] * forw   vRight[2] * right   vUp[2] * up



do_attack(AttackerVictimInflictorFloat:fDamage)
{
    
fake_player_trace_attack(AttackerVictimfDamage)
    
fake_take_damage(AttackerVictimfDamageInflictor)
}

fake_player_trace_attack(iAttackeriVictim, &Float:fDamage)
{
    
// get fDirection
    
new Float:fAngles[3], Float:fDirection[3]
    
pev(iAttackerpev_anglesfAngles)
    
angle_vector(fAnglesANGLEVECTOR_FORWARDfDirection)
    
    
// get fStart
    
new Float:fStart[3], Float:fViewOfs[3]
    
pev(iAttackerpev_originfStart)
    
pev(iAttackerpev_view_ofsfViewOfs)
    
xs_vec_add(fViewOfsfStartfStart)
    
    
// get aimOrigin
    
new iAimOrigin[3], Float:fAimOrigin[3]
    
get_user_origin(iAttackeriAimOrigin3)
    
IVecFVec(iAimOriginfAimOrigin)
    
    
// TraceLine from fStart to AimOrigin
    
new ptrptr create_tr2() 
    
engfunc(EngFunc_TraceLinefStartfAimOriginDONT_IGNORE_MONSTERSiAttackerptr)
    new 
pHitpHit get_tr2(ptrTR_pHit)
    new 
iHitgroupiHitgroup get_tr2(ptrTR_iHitgroup)
    new 
Float:fEndPos[3]
    
get_tr2(ptrTR_vecEndPosfEndPos)

    
// get target & body at aiming
    
new iTargetiBody
    get_user_aiming
(iAttackeriTargetiBody)
    
    
// if aiming find target is iVictim then update iHitgroup
    
if (iTarget == iVictim)
    {
        
iHitgroup iBody
    
}
    
    
// if ptr find target not is iVictim
    
else if (pHit != iVictim)
    {
        
// get AimOrigin in iVictim
        
new Float:fVicOrigin[3], Float:fVicViewOfs[3], Float:fAimInVictim[3]
        
pev(iVictimpev_originfVicOrigin)
        
pev(iVictimpev_view_ofsfVicViewOfs
        
xs_vec_add(fVicViewOfsfVicOriginfAimInVictim)
        
fAimInVictim[2] = fStart[2]
        
fAimInVictim[2]  = get_distance_f(fStartfAimInVictim) * floattanfAngles[0] * 2.0degrees )
        
        
// check aim in size of iVictim
        
new iAngleToVictimiAngleToVictim get_angle_to_target(iAttackerfVicOrigin)
        
iAngleToVictim abs(iAngleToVictim)
        new 
Float:fDisfDis 2.0 get_distance_f(fStartfAimInVictim) * floatsinfloat(iAngleToVictim) * 0.5degrees )
        new 
Float:fVicSize[3]
        
pev(iVictimpev_size fVicSize)
        if ( 
fDis <= fVicSize[0] * 0.5 )
        {
            
// TraceLine from fStart to aimOrigin in iVictim
            
new ptr2ptr2 create_tr2() 
            
engfunc(EngFunc_TraceLinefStartfAimInVictimDONT_IGNORE_MONSTERSiAttackerptr2)
            new 
pHit2pHit2 get_tr2(ptr2TR_pHit)
            new 
iHitgroup2iHitgroup2 get_tr2(ptr2TR_iHitgroup)
            
            
// if ptr2 find target is iVictim
            
if ( pHit2 == iVictim && (iHitgroup2 != HIT_HEAD || fDis <= fVicSize[0] * 0.25) )
            {
                
pHit iVictim
                iHitgroup 
iHitgroup2
                get_tr2
(ptr2TR_vecEndPosfEndPos)
            }
            
            
free_tr2(ptr2)
        }
        
        
// if pHit still not is iVictim then set default HitGroup
        
if (pHit != iVictim)
        {
            
// set default iHitgroup
            
iHitgroup HIT_GENERIC
            
            
new ptr3ptr3 create_tr2() 
            
engfunc(EngFunc_TraceLinefStartfVicOriginDONT_IGNORE_MONSTERSiAttackerptr3)
            
get_tr2(ptr3TR_vecEndPosfEndPos)
            
            
// free ptr3
            
free_tr2(ptr3)
        }
    }
    
    
// set new Hit & Hitgroup & EndPos
    
set_tr2(ptrTR_pHitiVictim)
    
set_tr2(ptrTR_iHitgroupiHitgroup)
    
set_tr2(ptrTR_vecEndPosfEndPos)

    
// ExecuteHam
    
fake_trake_attack(iAttackeriVictimfDamagefDirectionptr)
    
    
// free ptr
    
free_tr2(ptr)
}

stock fake_trake_attack(iAttackeriVictimFloat:fDamageFloat:fDirection[3], iTraceHandleiDamageBit = (DMG_NEVERGIB DMG_BULLET))
{
    
ExecuteHamB(Ham_TraceAttackiVictimiAttackerfDamagefDirectioniTraceHandleiDamageBit)
}

stock fake_take_damage(iAttackeriVictimFloat:fDamageiInflictoriDamageBit = (DMG_NEVERGIB DMG_BULLET))
{
    
ExecuteHamB(Ham_TakeDamageiVictimiInflictoriAttackerfDamageiDamageBit)
}

stock get_angle_to_target(id, const Float:fTarget[3], Float:TargetSize 0.0)
{
    new 
Float:fOrigin[3], iAimOrigin[3], Float:fAimOrigin[3], Float:fV1[3]
    
pev(idpev_originfOrigin)
    
get_user_origin(idiAimOrigin3// end position from eyes
    
IVecFVec(iAimOriginfAimOrigin)
    
xs_vec_sub(fAimOriginfOriginfV1)
    
    new 
Float:fV2[3]
    
xs_vec_sub(fTargetfOriginfV2)
    
    new 
iResultiResult get_angle_between_vectors(fV1fV2)
    
    if (
TargetSize 0.0)
    {
        new 
Float:fTanfTan TargetSize get_distance_f(fOriginfTarget)
        new 
fAngleToTargetSizefAngleToTargetSize floatroundfloatatan(fTandegrees) )
        
iResult -= (iResult 0) ? fAngleToTargetSize : -fAngleToTargetSize
    
}
    
    return 
iResult
}

stock get_angle_between_vectors(const Float:fV1[3], const Float:fV2[3])
{
    new 
Float:fA1[3], Float:fA2[3]
    
engfunc(EngFunc_VecToAnglesfV1fA1)
    
engfunc(EngFunc_VecToAnglesfV2fA2)
    
    new 
iResultiResult floatround(fA1[1] - fA2[1])
    
iResult iResult 360
    iResult 
= (iResult 180) ? (iResult 360) : iResult
    
    
return iResult

__________________
Artifact is offline
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 18:24.


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