Cambiar tipo de balas
#1
Buenas, quisiera saber como hago para cambiar el tipo de balas de un arma especial ejemplo

La thunderbolt al comprarla me da 30 balas raras xD pero si le pongo infinita se bug.

Quiero saber como hago para que salga

1|30 balas y que la BPAMMO sea infinita, porfavor.
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#2
Te refieres a este:
--->>>
Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <zombieplague>

#define PLUGIN "[Mileage] Primary: Thunderbolt"
#define VERSION "2014"
#define AUTHOR "Dias"

#define DAMAGE 600
#define DEFAULT_AMMO 20
#define RELOAD_TIME 2.67

#define CSW_THUNDERBOLT CSW_AWP
#define weapon_thunderbolt "weapon_awp"
#define old_event "events/awp.sc"
#define old_w_model "models/w_awp.mdl"
#define WEAPON_SECRETCODE 4234234

#define SUBMODEL 11
#define V_MODEL "models/v_sfsniperF.mdl"
#define P_MODEL "models/p_primary.mdl"
#define W_MODEL "models/w_primary.mdl"

new const WeaponSounds[2][] = 
{
    
"weapons/sfsniper-1.wav",
    
"weapons/sfsniper_insight1.wav"
    
//"weapons/sfsniper_zoom.wav",
    //"weapons/sfsniper_idle.wav",
    //"weapons/sfsniper_draw.wav"
}

/*
new const WeaponResources[4][] = 
{
    "sprites/weapon_sfsniperF.txt",
    "sprites/640hud2_2.spr",
    "sprites/640hud10_2.spr",
    "sprites/640hud81_2.spr"
}*/

enum
{
    
TB_ANIM_IDLE 0,
    
TB_ANIM_SHOOT,
    
TB_ANIM_DRAW
}

enum
{
    
ZOOM_NONE 0,
    
ZOOM_ACT
}

// 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_Thunderbolt
new g_Had_Thunderboltg_Zoom[33], g_OldWeapon[33]
new 
g_IsAlive
new Float:CheckDelay[33], g_TempAttack
new g_Msg_CurWeapong_Msg_AmmoX
new g_Beam_SprIdg_HamBot_Registerg_Event_Thunderbolt

public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
    
register_event("DeathMsg""Event_Death""a")
    
    
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")
    
register_forward(FM_EmitSound"fw_EmitSound")
    
register_forward(FM_TraceLine"fw_TraceLine")
    
register_forward(FM_TraceHull"fw_TraceHull")
    
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)
    
RegisterHam(Ham_Item_AddToPlayerweapon_thunderbolt"fw_AddToPlayer_Post"1)
    
RegisterHam(Ham_Item_Deployweapon_thunderbolt"fw_Item_Deploy_Post"1)    
    
RegisterHam(Ham_Weapon_WeaponIdleweapon_thunderbolt"fw_Weapon_WeaponIdle_Post"1)
    
//RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_awp", "fw_Weapon_SecondaryAttack")
    
    
g_Msg_CurWeapon get_user_msgid("CurWeapon")
    
g_Msg_AmmoX get_user_msgid("AmmoX")    
    
    
register_clcmd("weapon_sfsniperF""CLCMD_HookWeapon")
    
g_Thunderbolt zp_register_extra_item("Thunderbolt"0ZP_TEAM_HUMAN)
}

public 
zp_extra_item_selected(iditemid)
{
    
// Check if the selected item matches any of our registered ones
    
if (itemid == g_ThunderboltGet_Thunderbolt(id)
}

public 
plugin_precache()
{
    
precache_model(V_MODEL)
    
precache_model(P_MODEL)
    
precache_model(W_MODEL)
    
    for(new 
0sizeof(WeaponSounds); i++) 
        
engfunc(EngFunc_PrecacheSoundWeaponSounds[i])
    
/*
    for(new i = 0; i < sizeof(WeaponResources); i++)
    {
        if(i == 0) engfunc(EngFunc_PrecacheGeneric, WeaponResources[0])
        else engfunc(EngFunc_PrecacheModel, WeaponResources[i])
    }*/
    
    
g_Beam_SprId =  engfunc(EngFunc_PrecacheModel"sprites/laserbeam.spr")
}

public 
client_putinserver(id)
{
    if(
is_user_bot(id) && !g_HamBot_Register)
    {
        
g_HamBot_Register 1
        set_task
(0.1"Do_RegisterHamBot"id)
    }
    
    
UnSet_BitVar(g_TempAttackid)
    
UnSet_BitVar(g_IsAliveid)
}

public 
Do_RegisterHamBot(id)
{
    
RegisterHamFromEntity(Ham_Spawnid"fw_PlayerSpawn_Post"1)
}

public 
fw_PrecacheEvent_Post(type, const name[])
{
    if(
equal(old_eventname)) g_Event_Thunderbolt get_orig_retval()
}

public 
plugin_natives ()
{
    
register_native("Get_Thunderbolt""Mileage_WeaponGet"1)
    
register_native("Refill_Thunderbolt""Mileage_WeaponRefillAmmo"1)
}

public 
Mileage_WeaponGet(id)
{
    
Get_Thunderbolt(id)
}

public 
Mileage_WeaponRefillAmmo(id)
{
    
Refill_Thunderbolt(id)
}

public 
Mileage_WeaponRemove(id)
{
    
Remove_Thunderbolt(id)
}

public 
Refill_Thunderbolt(id)
{
    
cs_set_user_bpammo(idCSW_THUNDERBOLTDEFAULT_AMMO)
}

public 
Get_Thunderbolt(id)
{
    
g_Zoom[id] = ZOOM_NONE
    Set_BitVar
(g_Had_Thunderboltid)
    
    
give_item(idweapon_thunderbolt)
    
    static 
weapon_entweapon_ent fm_find_ent_by_owner(-1weapon_thunderboltid)
    if(
pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent10)
    
    
cs_set_user_bpammo(idCSW_THUNDERBOLTDEFAULT_AMMO)
}

public 
Remove_Thunderbolt(id)
{
    
g_Zoom[id] = ZOOM_NONE
    UnSet_BitVar
(g_Had_Thunderboltid)
}

public 
Event_CurWeapon(id)
{
    static 
CSWIDCSWID read_data(2)
    static 
SubModelSubModel SUBMODEL
    
    
if((CSWID == CSW_THUNDERBOLT && g_OldWeapon[id] != CSW_THUNDERBOLT) && Get_BitVar(g_Had_Thunderboltid))
    {
        if(
SubModel != -1Draw_NewWeapon(idCSWID)
        
UpdateAmmo(id, -1cs_get_user_bpammo(idCSW_THUNDERBOLT))
    } else if((
CSWID == CSW_THUNDERBOLT && g_OldWeapon[id] == CSW_THUNDERBOLT) && Get_BitVar(g_Had_Thunderboltid)) {
        if(
cs_get_user_zoom(id) == 1)
        {
            
set_pev(idpev_viewmodel2V_MODEL)
        } else if(
cs_get_user_zoom(id) == || cs_get_user_zoom(id) == 3) {
            
set_pev(idpev_viewmodel2"")
        }
        
        
UpdateAmmo(id, -1cs_get_user_bpammo(idCSW_THUNDERBOLT))
    } else if(
CSWID != CSW_THUNDERBOLT && g_OldWeapon[id] == CSW_THUNDERBOLT) {
        if(
SubModel != -1Draw_NewWeapon(idCSWID)
    }
    
    
g_OldWeapon[id] = get_user_weapon(id)
}

public 
Draw_NewWeapon(idCSW_ID)
{
    if(
CSW_ID == CSW_THUNDERBOLT)
    {
        static 
ent
        ent 
fm_get_user_weapon_entity(idCSW_THUNDERBOLT)
        
        if(
pev_valid(ent) && Get_BitVar(g_Had_Thunderboltid))
        {
            
set_pev(entpev_effectspev(entpev_effects) &~ EF_NODRAW
            
engfunc(EngFunc_SetModelentP_MODEL)    
            
set_pev(entpev_bodySUBMODEL)
        }
    } else {
        static 
ent
        ent 
fm_get_user_weapon_entity(idCSW_THUNDERBOLT)
        
        if(
pev_valid(ent)) set_pev(entpev_effectspev(entpev_effects) | EF_NODRAW)             
    }
    
}

public 
Event_Death()
{
    static 
VictimVictim read_data(2)
    
UnSet_BitVar(g_IsAliveVictim)
}

public 
CLCMD_HookWeapon(id)
{
    
engclient_cmd(idweapon_thunderbolt)
    return
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
Get_BitVar(g_IsAliveid))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(id) == CSW_THUNDERBOLT && Get_BitVar(g_Had_Thunderboltid))
        
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(
eventid != g_Event_Thunderbolt)
        return 
FMRES_IGNORED
    
if(!Get_BitVar(g_IsAliveinvoker))
        return 
FMRES_IGNORED        
    
if(get_user_weapon(invoker) != CSW_THUNDERBOLT || !Get_BitVar(g_Had_Thunderboltinvoker))
        return 
FMRES_IGNORED
    
    engfunc
(EngFunc_PlaybackEventflags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)

    return 
FMRES_SUPERCEDE
}

public 
fw_SetModel(entitymodel[])
{
    if(!
pev_valid(entity))
        return 
FMRES_IGNORED
    
    
static Classname[64]
    
pev(entitypev_classnameClassnamesizeof(Classname))
    
    if(!
equal(Classname"weaponbox"))
        return 
FMRES_IGNORED
    
    
static id
    id 
pev(entitypev_owner)
    
    if(
equal(modelold_w_model))
    {
        static 
weapon
        weapon 
fm_get_user_weapon_entity(entityCSW_THUNDERBOLT)
        
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED
        
        
if(Get_BitVar(g_Had_Thunderboltid))
        {
            
UnSet_BitVar(g_Had_Thunderboltid)
            
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
set_pev(weaponpev_iuser4cs_get_user_bpammo(idCSW_THUNDERBOLT))
            
            
engfunc(EngFunc_SetModelentityW_MODEL)
            
set_pev(entitypev_bodySUBMODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED;
}

public 
fw_CmdStart(idUcHandleSeed)
{
    if(!
Get_BitVar(g_IsAliveid))
        return
    if(
get_user_weapon(id) != CSW_THUNDERBOLT || !Get_BitVar(g_Had_Thunderboltid))
        return
    if(
get_pdata_float(id835) > 0.0)
        return
    
    static 
CurButtonCurButton get_uc(UcHandleUC_Buttons)
    if(
CurButton IN_ATTACK)
    {
        
CurButton &= ~IN_ATTACK
        set_uc
(UcHandleUC_ButtonsCurButton)
        
        if(
get_gametime() - RELOAD_TIME CheckDelay[id])
        {
            
Thunderbolt_Shooting(id)
            
CheckDelay[id] = get_gametime()
        }
    }
}

public 
fw_EmitSound(idchannel, const sample[], Float:volumeFloat:attnflagspitch)
{
    if(!
Get_BitVar(g_IsAliveid))
        return 
FMRES_IGNORED
    
if(!Get_BitVar(g_TempAttackid))
        return 
FMRES_IGNORED
        
    
if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
    {
        if(
sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')
            return 
FMRES_SUPERCEDE
        
if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't')
        {
            if (
sample[17] == 'w')  return FMRES_SUPERCEDE
            
else  return FMRES_SUPERCEDE
        
}
        if (
sample[14] == 's' && sample[15] == 't' && sample[16] == 'a')
            return 
FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED
}

public 
fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monsteridhandle)
{
    if(!
Get_BitVar(g_IsAliveid))
        return 
FMRES_IGNORED
    
if(!Get_BitVar(g_TempAttackid))
        return 
FMRES_IGNORED
    
    
static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    
    
pev(idpev_originfOrigin)
    
pev(idpev_view_ofsview_ofs)
    
xs_vec_add(fOriginview_ofsvecStart)
    
pev(idpev_v_anglev_angle)
    
    
engfunc(EngFunc_MakeVectorsv_angle)
    
get_global_vector(GL_v_forwardv_forward)

    
xs_vec_mul_scalar(v_forward0.0v_forward)
    
xs_vec_add(vecStartv_forwardvecEnd)
    
    
engfunc(EngFunc_TraceLinevecStartvecEndignored_monsteridhandle)
    
    return 
FMRES_SUPERCEDE
}

public 
fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monsterhullidhandle)
{
    if(!
Get_BitVar(g_IsAliveid))
        return 
FMRES_IGNORED
    
if(!Get_BitVar(g_TempAttackid))
        return 
FMRES_IGNORED
    
    
static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]
    
    
pev(idpev_originfOrigin)
    
pev(idpev_view_ofsview_ofs)
    
xs_vec_add(fOriginview_ofsvecStart)
    
pev(idpev_v_anglev_angle)
    
    
engfunc(EngFunc_MakeVectorsv_angle)
    
get_global_vector(GL_v_forwardv_forward)
    
    
xs_vec_mul_scalar(v_forward0.0v_forward)
    
xs_vec_add(vecStartv_forwardvecEnd)
    
    
engfunc(EngFunc_TraceHullvecStartvecEndignored_monsterhullidhandle)
    
    return 
FMRES_SUPERCEDE
}

public 
fw_PlayerSpawn_Post(idSet_BitVar(g_IsAliveid)
public 
fw_AddToPlayer_Post(entid)
{
    if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
    {
        
Set_BitVar(g_Had_Thunderboltid)
        
cs_set_user_bpammo(idCSW_THUNDERBOLTpev(entpev_iuser4))
        
        
set_pev(entpev_impulse0)
    }            
    
    
/*
    message_begin(MSG_ONE_UNRELIABLE, g_Msg_WeaponList, _, id)
    write_string((Get_BitVar(g_Had_Thunderbolt, id) ? "weapon_sfsniperF" : "weapon_awp"))
    write_byte(1)
    write_byte(30)
    write_byte(-1)
    write_byte(-1)
    write_byte(0)
    write_byte(2)
    write_byte(CSW_THUNDERBOLT)
    write_byte(0)
    message_end()*/
}

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_ThunderboltId))
        return
    
    static 
SubModelSubModel SUBMODEL
    
    set_pev
(Idpev_viewmodel2V_MODEL)
    
set_pev(Idpev_weaponmodel2SubModel != -"" P_MODEL)
    
    
Set_WeaponAnim(IdTB_ANIM_DRAW)
    
remove_task(Id+111)
}

public 
fw_Weapon_WeaponIdle_Post(Ent)
{
    if(
pev_valid(Ent) != 2)
        return 
HAM_IGNORED    
    
static IdId get_pdata_cbase(Ent414)
    if(
get_pdata_cbase(Id373) != Ent)
        return 
HAM_IGNORED    
    
if(!Get_BitVar(g_Had_ThunderboltId))
        return 
HAM_IGNORED    

    
if(get_pdata_float(Ent484) <= 0.1
    {
        
Set_WeaponAnim(IdTB_ANIM_IDLE)
        
set_pdata_float(Ent4820.04)
    }
    
    return 
HAM_IGNORED    
}

public 
fw_Weapon_SecondaryAttack(Ent)
{
    static 
IdId get_pdata_cbase(Ent414)
    
//if(get_pdata_cbase(Id, 373) != Ent)
        //return HAM_IGNORED    
    
if(!Get_BitVar(g_Had_ThunderboltId))
        return 
HAM_IGNORED    
        
    
return HAM_SUPERCEDE
}

public 
Thunderbolt_Shooting(id)
{
    if(
cs_get_user_bpammo(idCSW_THUNDERBOLT) <= 0)
        return
        
    
Set_BitVar(g_TempAttackid)
    static 
EntEnt fm_get_user_weapon_entity(idCSW_KNIFE)
    if(
pev_valid(Ent)) ExecuteHamB(Ham_Weapon_PrimaryAttackEnt)
    
UnSet_BitVar(g_TempAttackid)
    
    
g_Zoom[id] = cs_get_user_zoom(id)
    
cs_set_user_zoom(idCS_SET_NO_ZOOM1)
    
cs_set_user_bpammo(idCSW_THUNDERBOLTcs_get_user_bpammo(idCSW_THUNDERBOLT) - 1)
    
    
set_task(RELOAD_TIME 0.15"Set_SniperModel"id+111)
    
    
Set_WeaponAnim(idTB_ANIM_SHOOT)
    
emit_sound(idCHAN_WEAPONWeaponSounds[0], 1.00.4094 random_num(015))
    
    
Make_FakePunch(id)
    
    
// Set Idle
    
Ent fm_get_user_weapon_entity(idCSW_THUNDERBOLT)
    if(
pev_valid(Ent)) 
    {
        
set_pdata_float(id83RELOAD_TIME5)
        
        
set_pdata_float(Ent46RELOAD_TIME4)
        
set_pdata_float(Ent47RELOAD_TIME4)
        
set_pdata_float(Ent48RELOAD_TIME 0.254)
    }
        
    
Check_Damage(id)
        
    
// Set Bullet reject
    
set_pdata_float(id1110.0)
}

public 
Set_SniperModel(id)
{
    
id -= 111
    
if(!is_user_alive(id))
        return
    if(!
Get_BitVar(g_Had_Thunderboltid))
        return
        
    
cs_set_user_zoom(idg_Zoom[id], 1)
}

public 
Make_FakePunch(id)
{
    static 
Float:PunchAngles[3]
    
PunchAngles[0] = random_float(-3.5, -7.0)
    
    
set_pev(idpev_punchanglePunchAngles)
}

public 
Check_Damage(id)
{
    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_TraceLineStartOriginEndOriginIGNORE_MONSTERSidTrResult
    
get_tr2(TrResultTR_vecEndPosEndOrigin2)
    
free_tr2(TrResult)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMPOINTS)
    
engfunc(EngFunc_WriteCoordStartOrigin[0])
    
engfunc(EngFunc_WriteCoordStartOrigin[1])
    
engfunc(EngFunc_WriteCoordStartOrigin[2])
    
engfunc(EngFunc_WriteCoordEndOrigin2[0])
    
engfunc(EngFunc_WriteCoordEndOrigin2[1])
    
engfunc(EngFunc_WriteCoordEndOrigin2[2])
    
write_short(g_Beam_SprId)
    
write_byte(0)
    
write_byte(0)
    
write_byte(10)
    
write_byte(25)
    
write_byte(0)
    
write_byte(0)
    
write_byte(0)
    
write_byte(200)
    
write_byte(200)
    
write_byte(0)
    
message_end()    

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPARKS//TE_SPARKS
    
engfunc(EngFunc_WriteCoordEndOrigin2[0])
    
engfunc(EngFunc_WriteCoordEndOrigin2[1])
    
engfunc(EngFunc_WriteCoordEndOrigin2[2])
    
message_end()    
    
    
DealDamage(idStartOriginEndOrigin2)    
}

public 
DealDamage(idFloat:Start[3], Float:End[3])
{
    static 
TrResultTrResult create_tr2()
    
    
// Trace First Time
    
engfunc(EngFunc_TraceLineStartEndDONT_IGNORE_MONSTERSidTrResult
    new 
pHit1pHit1 get_tr2(TrResultTR_pHit)
    static 
Float:End1[3]; get_tr2(TrResultTR_vecEndPosEnd1)
    
    if(
is_user_alive(pHit1)) 
    {
        
do_attack(idpHit10float(DAMAGE) * 1.5)
        
engfunc(EngFunc_TraceLineEnd1EndDONT_IGNORE_MONSTERSpHit1TrResult
    } else 
engfunc(EngFunc_TraceLineEnd1EndDONT_IGNORE_MONSTERS, -1TrResult
    
    
// Trace Second Time
    
new pHit2pHit2 get_tr2(TrResultTR_pHit)
    static 
Float:End2[3]; get_tr2(TrResultTR_vecEndPosEnd2)
    
    if(
is_user_alive(pHit2)) 
    {
        
do_attack(idpHit20float(DAMAGE) * 1.5)
        
engfunc(EngFunc_TraceLineEnd2EndDONT_IGNORE_MONSTERSpHit2TrResult
    } else 
engfunc(EngFunc_TraceLineEnd2EndDONT_IGNORE_MONSTERS, -1TrResult
    
    
// Trace Third Time
    
new pHit3pHit3 get_tr2(TrResultTR_pHit)
    static 
Float:End3[3]; get_tr2(TrResultTR_vecEndPosEnd3)
    
    if(
is_user_alive(pHit3)) 
    {
        
do_attack(idpHit30float(DAMAGE) * 1.5)
        
engfunc(EngFunc_TraceLineEnd3EndDONT_IGNORE_MONSTERSpHit3TrResult
    } else 
engfunc(EngFunc_TraceLineEnd3EndDONT_IGNORE_MONSTERS, -1TrResult
    
    
// Trace Fourth Time
    
new pHit4pHit4 get_tr2(TrResultTR_pHit)
    if(
is_user_alive(pHit4)) do_attack(idpHit40float(DAMAGE) * 1.5)

    
free_tr2(TrResult)
}

public 
UpdateAmmo(IdAmmoBpAmmo)
{
    static 
weapon_entweapon_ent fm_get_user_weapon_entity(IdCSW_THUNDERBOLT)
    if(
pev_valid(weapon_ent))
    {
        if(
BpAmmo 0cs_set_weapon_ammo(weapon_ent1)
        else 
cs_set_weapon_ammo(weapon_ent0)
    }
    
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEg_Msg_CurWeapon, {000}, Id)
    
write_byte(1)
    
write_byte(CSW_THUNDERBOLT)
    
write_byte(-1)
    
message_end()
    
    
message_begin(MSG_ONE_UNRELIABLEg_Msg_AmmoX_Id)
    
write_byte(1)
    
write_byte(BpAmmo)
    
message_end()
    
    
cs_set_user_bpammo(IdCSW_THUNDERBOLTBpAmmo)
}

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
}

stock Set_UserFov(idFOV)
{
    if(!
is_user_connected(id))
        return
        
    
set_pdata_int(id363FOV5)
    
set_pev(idpev_fovFOV)


Whatever Prueba este:
--->>>
Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>

#define ENG_NULLENT            -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define sfgun_WEAPONKEY     861
#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 sfgun_RELOAD_TIME     3.0
#define sfgun_RELOAD        1
#define sfgun_DRAW            2
#define sfgun_SHOOT1        3
#define sfgun_SHOOT2        4

#define write_coord_f(%1)    engfunc(EngFunc_WriteCoord,%1)

new const Fire_Sounds[][] = { "weapons/sfgun_shoot1.wav" }

new 
sfgun_V_MODEL[64] = "models/v_sfgun.mdl"
new sfgun_P_MODEL[64] = "models/p_sfgun.mdl"
new sfgun_W_MODEL[64] = "models/w_sfgun.mdl"

new const GUNSHOT_DECALS[] = { 4142434445 }

new 
cvar_dmg_sfguncvar_recoil_sfguncvar_clip_sfguncvar_spd_sfguncvar_sfgun_ammo
new g_MaxPlayersg_orig_event_sfgung_IsInPrimaryAttack
new Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_has_sfgun[33], g_clip_ammo[33], g_sfgun_TmpClip[33], oldweap[33]
new 
gmsgWeaponList

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 
WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
            
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
            
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
            
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
            
"weapon_ak47""weapon_knife""weapon_p90" }

public 
plugin_init()
{
    
register_plugin("[ZP] Extra: Blaster [SFGUN]""1.0""Crock / =) (Poprogun4ik) / TeRKe")
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_mp5navy""fw_sfgun_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)
    for (new 
1sizeof WEAPONENTNAMESi++)
    if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_mp5navy""fw_sfgun_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_mp5navy""fw_sfgun_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrame"weapon_mp5navy""sfgun_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reload"weapon_mp5navy""sfgun_Reload")
    
RegisterHam(Ham_Weapon_Reload"weapon_mp5navy""sfgun_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")
    
    
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)

    
cvar_dmg_sfgun register_cvar("zp_sfgun_dmg""5.5")
    
cvar_recoil_sfgun register_cvar("zp_sfgun_recoil""1.0")
    
cvar_clip_sfgun register_cvar("zp_sfgun_clip""45")
    
cvar_spd_sfgun register_cvar("zp_sfgun_spd""1.0")
    
cvar_sfgun_ammo register_cvar("zp_sfgun_ammo""200")
    
    
register_clcmd("say /sfgun""give_sfgun")
    
    
g_MaxPlayers get_maxplayers()
    
gmsgWeaponList get_user_msgid("WeaponList")
}

public 
plugin_precache()
{
    
precache_model(sfgun_V_MODEL)
    
precache_model(sfgun_P_MODEL)
    
precache_model(sfgun_W_MODEL)
    for(new 
0sizeof Fire_Soundsi++)
    
precache_sound(Fire_Sounds[i])    
    
precache_sound("weapons/sfgun_clipin.wav")
    
precache_sound("weapons/sfgun_clipout.wav")
    
precache_sound("weapons/sfgun_draw.wav")
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")
    
precache_generic("sprites/weapon_sfgun.txt")
    
precache_generic("sprites/640hud58.spr")
    
    
register_clcmd("weapon_sfgun""weapon_hook")    

    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}

public 
weapon_hook(id)
{
        
engclient_cmd(id"weapon_mp5navy")
        return 
PLUGIN_HANDLED
}

public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return

    new 
g_currentweapon get_user_weapon(iAttacker)

    if(
g_currentweapon != CSW_MP5NAVY) return
    
    if(!
g_has_sfgun[iAttacker]) return

    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
    
    if(
iEnt)
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[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)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
message_end()
    }
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_GUNSHOTDECAL)
    
write_coord_f(flEnd[0])
    
write_coord_f(flEnd[1])
    
write_coord_f(flEnd[2])
    
write_short(iAttacker)
    
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
    
message_end()
}

/*public zp_user_humanized_post(id)
{
    g_has_sfgun[id] = false
}*/

public plugin_natives ()
{
    
register_native("give_weapon_sfgun""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_sfgun(id)
}

public 
fwPrecacheEvent_Post(type, const name[])
{
    if (
equal("events/mp5n.sc"name))
    {
        
g_orig_event_sfgun get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_sfgun[id] = false
}

public 
client_disconnect(id)
{
    
g_has_sfgun[id] = false
}

/*public user_post(id)
{
    if (admin_get_user_counter_terrorist(id))
    {
        g_has_sfgun[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_mp5.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_mp5navy"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED
    
        
if(g_has_sfgun[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYsfgun_WEAPONKEY)
            
            
g_has_sfgun[iOwner] = false
            
            entity_set_model
(entitysfgun_W_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
give_sfgun(id)
{
    
drop_weapons(id1)
    new 
iWep2 give_item(id,"weapon_mp5navy")
    if( 
iWep2 )
    {
        
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_sfgun))
        
cs_set_user_bpammo (idCSW_MP5NAVYget_pcvar_num(cvar_sfgun_ammo))    
        
UTIL_PlayWeaponAnimation(idsfgun_DRAW)
        
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
        
        
message_begin(MSG_ONEgmsgWeaponList_id)
        
write_string("weapon_sfgun")
        
write_byte(10)
        
write_byte(120)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(7)
        
write_byte(CSW_MP5NAVY)
        
message_end()

    }
    
g_has_sfgun[id] = true
}

/*public zp_extra_item_selected(id, itemid)
{
    if(itemid != g_itemid_sfgun)
        return

    give_sfgun(id)
}*/

public fw_sfgun_AddToPlayer(sfgunid)
{
    if(!
is_valid_ent(sfgun) || !is_user_connected(id))
        return 
HAM_IGNORED
    
    
if(entity_get_int(sfgunEV_INT_WEAPONKEY) == sfgun_WEAPONKEY)
    {
        
g_has_sfgun[id] = true
        
        entity_set_int
(sfgunEV_INT_WEAPONKEY0)
        
        
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_sfgun")
        
write_byte(10)
        
write_byte(120)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(7)
        
write_byte(CSW_MP5NAVY)
        
message_end()

        return 
HAM_HANDLED
    
}
        else
    {
        
message_begin(MSG_ONEgmsgWeaponList, {0,0,0}, id)
        
write_string("weapon_mp5navy")
        
write_byte(10)
        
write_byte(120)
        
write_byte(-1)
        
write_byte(-1)
        
write_byte(0)
        
write_byte(7)
        
write_byte(CSW_MP5NAVY)
        
message_end()
    }
    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))

     if(
read_data(2) != CSW_MP5NAVY || !g_has_sfgun[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_sfgun[id])
          
iSpeed get_pcvar_float(cvar_spd_sfgun)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_MP5NAVY:
        {
                
            if(
g_has_sfgun[id])
            {
                
set_pev(idpev_viewmodel2sfgun_V_MODEL)
                
set_pev(idpev_weaponmodel2sfgun_P_MODEL)
                if(
oldweap[id] != CSW_MP5NAVY
                {
                    
UTIL_PlayWeaponAnimation(idsfgun_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
                    
                    
message_begin(MSG_ONEgmsgWeaponList_id)
                    
write_string("weapon_sfgun")
                    
write_byte(10)
                    
write_byte(120)
                    
write_byte(-1)
                    
write_byte(-1)
                    
write_byte(0)   
                    
write_byte(7
                    
write_byte(CSW_MP5NAVY)
                    
message_end()
                }
            }
        }
    }
    
oldweap[id] = weaponid
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY || !g_has_sfgun[Player]))
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_sfgun_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_sfgun[Player])
        return
    
    
g_IsInPrimaryAttack 1
    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_sfgun) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_sfgun_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    new 
szClipszAmmo
    get_user_weapon
(PlayerszClipszAmmo)
    
    if(!
is_user_alive(Player))
        return

    if(
g_has_sfgun[Player])
    {
        if (!
g_clip_ammo[Player])
            return

        new 
Float:push[3]
        
pev(Player,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[Player],push)
        
        
xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_sfgun),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        
emit_sound(PlayerCHAN_WEAPONFire_Sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(sfgun_SHOOT1sfgun_SHOOT2))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_MP5NAVY)
        {
            if(
g_has_sfgun[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_sfgun))
        }
    }
}

public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
szTruncatedWeapon[33], iAttackeriVictim
    
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
    
    
iAttacker get_msg_arg_int(1)
    
iVictim get_msg_arg_int(2)
    
    if(!
is_user_connected(iAttacker) || iAttacker == iVictim)
        return 
PLUGIN_CONTINUE
    
    
if(equal(szTruncatedWeapon"mp5navy") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
    {
        if(
g_has_sfgun[iAttacker])
            
set_msg_arg_string(4"mp5navy")
    }
    return 
PLUGIN_CONTINUE
}

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()
}

public 
sfgun_ItemPostFrame(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_sfgun[id])
          return 
HAM_IGNORED

     
static iClipExtra
     
     iClipExtra 
get_pcvar_num(cvar_clip_sfgun)
     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_MP5NAVY)
     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(iClipExtra iClipiBpAmmo)
    
         
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
         
cs_set_user_bpammo(idCSW_MP5NAVYiBpAmmo-j)
        
         
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
         
fInReload 0
     
}
     return 
HAM_IGNORED
}

public 
sfgun_Reload(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_sfgun[id])
          return 
HAM_IGNORED

     
static iClipExtra

     
if(g_has_sfgun[id])
          
iClipExtra get_pcvar_num(cvar_clip_sfgun)

     
g_sfgun_TmpClip[id] = -1

     
new iBpAmmo cs_get_user_bpammo(idCSW_MP5NAVY)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE

     
if (iClip >= iClipExtra)
          return 
HAM_SUPERCEDE

     g_sfgun_TmpClip
[id] = iClip

     
return HAM_IGNORED
}

public 
sfgun_Reload_Post(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED

    
if (!g_has_sfgun[id])
        return 
HAM_IGNORED

    
if (g_sfgun_TmpClip[id] == -1)
        return 
HAM_IGNORED

    set_pdata_int
(weapon_entitym_iClipg_sfgun_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdlesfgun_RELOAD_TIMEWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttacksfgun_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(idsfgun_RELOAD)

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

[Imagen: jrXxqRT.png]
*Maper Del Cstrike* - *Estudiante De Sistema*
(03/09/2018, 08:32 PM)Skylar escribió: Obviamente, no va a hablar con super pro para que le mueva el thread
(04/01/2019, 05:12 PM)Pan Bimbo (? escribió: QUE HICISTE QUE??????? YO QUERIA LA PLACA DE VIDEO PORQUE LA TIRASTE CTM
(15/01/2019, 04:08 AM)FreDDy escribió:
(15/01/2019, 03:45 AM)Hernandez escribió: Qué más dan las palabras si a donde vayas están en tetas protestando sin sentido

No todas salen en tetas y no todas protestan sin sentido. Estás generalizando algo que sólo unas pocas lo hacen a diferencia de las muchas que realmente tienen un motivo para protestar.
(17/01/2019, 12:34 PM)totopizza escribió: el orden de los factores no altera el producto xD
(23/01/2019, 01:10 AM)GoldenCosta escribió:
Cita:E visto que este ZP , ESTA AQUI EN EL FORO PERO NO ES EL ORIGINAL POR QUE? , LE FALTAN MILES DE COSAS ESTA BUGEADO , LE FALTAN CÓDIGOS NI SE IMAGINAN , BUENO EL MOD ESTE SE VENDE POR 70 DOLARES , ACEPTO PAYPAL Y EN PESOS CHILENOS $42.584
ya esta publicado.... y 70 us en arg son 2625,35 pesos... estas loco con esa guita neel mantiene el foro por 2 años
(23/01/2019, 01:17 AM)Skylar escribió:
(22/01/2019, 10:30 PM)el_juan_fail escribió:
(22/01/2019, 10:03 AM)Neeeeeeeeeel.- escribió: Por favor subir las cosas al foro y no links a blogs externos. Solamente en caso de que haya recursos que no se pudiesen subir por un tema de tamaño, poenr un link de descarga directo (tipo mega) de los recursos y subir los plugins y demás archivos livianos al foro.

deberia ponerle en un link mediante el mediafire o mega o link externo lo que sea pero no es bueno dejar cosa agregada sin descargar solo por el blog no se puede se puede bajar el recurso o que haya sido creado disculpa neeeeel. estaba leyendose las reglas u.uMario

Dijiste lo mismo que dijo Neeel!
(27/02/2019, 08:00 PM)Sugisaki escribió:
(27/02/2019, 05:37 PM)Pan Bimbo (? escribió:
(27/02/2019, 12:06 AM)luxor xD escribió: Hola, si precacheo algo en un plugin, no es necesario precachearlo en otro plugin?

Si yo cargo una caja en un camion, mi amigo puede cargar la MISMA caja en el camion?, y no porque ya esta cargada.
[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
(14/03/2019, 10:26 PM)KrR10VnZl escribió: en Venezuela aprendes a ser desde bombas molotov hasta velas, es algo así como supervivencia al desnudo jaja
(18/04/2019, 11:04 PM)Jose88 escribió:
(18/04/2019, 09:55 PM)Hypnotize escribió: arriba marica

papa me va perdonar pero aquí no sale ningún download. solo sale esto

Código PHP:
PDNiños Ratas eviten sacar el autor jaja.
REMOVIDO POR TUTOR Y SLOWHACK
(21/04/2019, 09:38 AM)SHENK! =D escribió: ASDASD

Si nos organizamos cojemos todos.
(11/08/2019, 05:11 PM)Cr3470r escribió: Todo Software es crackeable ... No importa cuantas validaciones hagan, la ventaja siempre la tenemos nosotros ...
(28/07/2015, 09:34 PM)Nazi.- escribió: :ohgodwhy buen aporte

PD: situación sentimental: Sin internetOh god why

Sigue así Proud

(28/02/2020, 12:23 AM)Skylar escribió:
(27/02/2020, 11:28 PM)4evergaming escribió: Ya me puse como autor y lo subi a mi empresa


Abrazos

FIX
Responder
#3
mmm, yo pido es con la thunderbolt, ese de la SFGUN no me sirve, es que ando editando el ZTH y esa thunderbolt siempre jode

ese de la thunderbolt, me da 20 balas, pero tiene un bug, si activo el unlimited ammo de ZTH esa se bug al disparar me pone 20 balas, vuelvo a disparar me pone 21, y al gastar las 20 balas se bug y no dispara

a eso me refierpo
Si no te gusta algo, cámbialo. Si no lo puedes cambiar, cambia la forma en que piensas sobre ello <3
Responder
#4
(25/08/2018, 02:46 PM)Saber escribió: mmm, yo pido es con la thunderbolt, ese de la SFGUN no me sirve, es que ando editando el ZTH y esa thunderbolt siempre jode

ese de la thunderbolt, me da 20 balas, pero tiene un bug, si activo el unlimited ammo de ZTH esa se bug al disparar me pone 20 balas, vuelvo a disparar me pone 21, y al gastar las 20 balas se bug y no dispara

a eso me refierpo

Verga Oh god why

Pd: nunca me a pasado ese bug con esa arma, aunque deje de usarlo y la remplace por la railcannon o la thanatos-7 Whatever

[Imagen: Gcdh8Ez.jpg]

Pd2: Aparte para que pones munición infinita a las arma en el servidor, eso es mantequilla Roflmao Roflmao
[Imagen: jrXxqRT.png]
*Maper Del Cstrike* - *Estudiante De Sistema*
(03/09/2018, 08:32 PM)Skylar escribió: Obviamente, no va a hablar con super pro para que le mueva el thread
(04/01/2019, 05:12 PM)Pan Bimbo (? escribió: QUE HICISTE QUE??????? YO QUERIA LA PLACA DE VIDEO PORQUE LA TIRASTE CTM
(15/01/2019, 04:08 AM)FreDDy escribió:
(15/01/2019, 03:45 AM)Hernandez escribió: Qué más dan las palabras si a donde vayas están en tetas protestando sin sentido

No todas salen en tetas y no todas protestan sin sentido. Estás generalizando algo que sólo unas pocas lo hacen a diferencia de las muchas que realmente tienen un motivo para protestar.
(17/01/2019, 12:34 PM)totopizza escribió: el orden de los factores no altera el producto xD
(23/01/2019, 01:10 AM)GoldenCosta escribió:
Cita:E visto que este ZP , ESTA AQUI EN EL FORO PERO NO ES EL ORIGINAL POR QUE? , LE FALTAN MILES DE COSAS ESTA BUGEADO , LE FALTAN CÓDIGOS NI SE IMAGINAN , BUENO EL MOD ESTE SE VENDE POR 70 DOLARES , ACEPTO PAYPAL Y EN PESOS CHILENOS $42.584
ya esta publicado.... y 70 us en arg son 2625,35 pesos... estas loco con esa guita neel mantiene el foro por 2 años
(23/01/2019, 01:17 AM)Skylar escribió:
(22/01/2019, 10:30 PM)el_juan_fail escribió:
(22/01/2019, 10:03 AM)Neeeeeeeeeel.- escribió: Por favor subir las cosas al foro y no links a blogs externos. Solamente en caso de que haya recursos que no se pudiesen subir por un tema de tamaño, poenr un link de descarga directo (tipo mega) de los recursos y subir los plugins y demás archivos livianos al foro.

deberia ponerle en un link mediante el mediafire o mega o link externo lo que sea pero no es bueno dejar cosa agregada sin descargar solo por el blog no se puede se puede bajar el recurso o que haya sido creado disculpa neeeeel. estaba leyendose las reglas u.uMario

Dijiste lo mismo que dijo Neeel!
(27/02/2019, 08:00 PM)Sugisaki escribió:
(27/02/2019, 05:37 PM)Pan Bimbo (? escribió:
(27/02/2019, 12:06 AM)luxor xD escribió: Hola, si precacheo algo en un plugin, no es necesario precachearlo en otro plugin?

Si yo cargo una caja en un camion, mi amigo puede cargar la MISMA caja en el camion?, y no porque ya esta cargada.
[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
(14/03/2019, 10:26 PM)KrR10VnZl escribió: en Venezuela aprendes a ser desde bombas molotov hasta velas, es algo así como supervivencia al desnudo jaja
(18/04/2019, 11:04 PM)Jose88 escribió:
(18/04/2019, 09:55 PM)Hypnotize escribió: arriba marica

papa me va perdonar pero aquí no sale ningún download. solo sale esto

Código PHP:
PDNiños Ratas eviten sacar el autor jaja.
REMOVIDO POR TUTOR Y SLOWHACK
(21/04/2019, 09:38 AM)SHENK! =D escribió: ASDASD

Si nos organizamos cojemos todos.
(11/08/2019, 05:11 PM)Cr3470r escribió: Todo Software es crackeable ... No importa cuantas validaciones hagan, la ventaja siempre la tenemos nosotros ...
(28/07/2015, 09:34 PM)Nazi.- escribió: :ohgodwhy buen aporte

PD: situación sentimental: Sin internetOh god why

Sigue así Proud

(28/02/2020, 12:23 AM)Skylar escribió:
(27/02/2020, 11:28 PM)4evergaming escribió: Ya me puse como autor y lo subi a mi empresa


Abrazos

FIX
Responder
#5
Que hermosa ortografía.
Responder
#6
(25/08/2018, 03:25 PM)Hernandez escribió: Que hermosa ortografía.

"futuro ingeniero en sistemas" y no sabe escribir RoflmaoRoflmao
Responder
#7
(25/08/2018, 03:07 PM)El pirucho XP-007 escribió: [Imagen: Gcdh8Ez.jpg]

madre hack willy, idlansito
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#8
el jueves me diagnosticaron astigmatismo y por leer "avilidades" me van a diagnosticar miopía
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#9
Código PHP:
printf("amena%ca"pirucho 115 122); 
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)