Raised This Month: $ Target: $400
 0% 

Buy balrog [Solved]


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
SaBBa
Member
Join Date: Dec 2012
Old 06-10-2016 , 11:13   Buy balrog [Solved]
Reply With Quote #1

hello, i have balrog11 plugin for normal mod, i can get balrog with command admin_get_balrog11, i want to make so, that players can buy it, for example say /balrog and you get it for 10000$
can anyone help?

here is code
PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Balrog-XI"
#define VERSION "2.0"
#define AUTHOR "Dias"
#define SUPPORT FOR NORMAL MODE "Conspiracy"

#define V_MODEL "models/v_balrog11_2.mdl"
#define P_MODEL "models/p_balrog11.mdl"
#define W_MODEL "models/w_balrog11.mdl"

#define CSW_BALROG11 CSW_XM1014
#define weapon_balrog11 "weapon_xm1014"

#define OLD_W_MODEL "models/w_xm1014.mdl"
#define OLD_EVENT "events/xm1014.sc"
#define WEAPON_SECRETCODE 1982

#define DRAW_TIME 0.75
#define DAMAGE 32
#define FIRE_DAMAGE 200
#define BPAMMO 56

#define CHARGE_COND_AMMO 4
#define MAX_SPECIAL_AMMO 7
#define SPECIALSHOOT_DELAY 0.35
#define FIRE_SPEED 1
#define RADIUS 600
#define FIRE_CLASSNAME "balrog11_fire"
#define SYSTEM_CLASSNAME "balrog11_firesystem"

// Fire Start
#define WEAPON_ATTACH_F 30.0
#define WEAPON_ATTACH_R 10.0
#define WEAPON_ATTACH_U -5.0

// OFFSET
const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83
const m_flNextPrimaryAttack    46
const m_flNextSecondaryAttack    47

// Weapon bitsums
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)
const 
SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
        
new const 
WeaponSounds[5][] = 
{
    
"weapons/balrog11-1.wav",
    
"weapons/balrog11-2.wav",
    
"weapons/balrog11_draw.wav",
    
"weapons/balrog11_insert.wav",
    
"weapons/balrog11_charge.wav"
}

new const 
WeaponResources[4][] =
{
    
"sprites/flame_puff01.spr",
    
"sprites/weapon_balrog11.txt",
    
"sprites/640hud3_2.spr",
    
"sprites/640hud89_2.spr"
}

enum
{
    
B11_ANIM_IDLE 0,
    
B11_ANIM_SHOOT,
    
B11_ANIM_SHOOT_SPECIAL,
    
B11_ANIM_INSERT,
    
B11_ANIM_AFTER_RELOAD,
    
B11_ANIM_START_RELOAD,
    
B11_ANIM_DRAW
}

new 
g_had_balrog11[33], g_holding_attack[33], g_Shoot_Count[33], g_SpecialAmmo[33]
new 
g_old_weapon[33], g_event_balrog11g_Msg_StatusIcong_smokepuff_idg_ham_botg_MaxPlayers

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
    
    
register_think(FIRE_CLASSNAME"fw_Think")
    
register_touch(FIRE_CLASSNAME"*""fw_Touch")
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)    
    
register_forward(FM_PlaybackEvent"fw_PlaybackEvent")    
    
    
    
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack")
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack")    
    
    
RegisterHam(Ham_Item_AddToPlayerweapon_balrog11"fw_Item_AddToPlayer_Post"1)
    
RegisterHam(Ham_Item_PostFrameweapon_balrog11"fw_Item_PostFrame")
    
RegisterHam(Ham_Item_Deployweapon_balrog11"fw_Item_Deploy_Post"1)
    
    
g_Msg_StatusIcon get_user_msgid("StatusIcon")
    
g_MaxPlayers get_maxplayers()
    
    
register_clcmd("admin_get_balrog11""Get_Balrog11"ADMIN_RCON)
    
register_clcmd("weapon_balrog11""hook_weapon")

}

public 
plugin_precache()
{
    
engfunc(EngFunc_PrecacheModelV_MODEL)
    
engfunc(EngFunc_PrecacheModelP_MODEL)
    
engfunc(EngFunc_PrecacheModelW_MODEL)
    
    new 
i
    
for(0sizeof(WeaponSounds); i++)
        
engfunc(EngFunc_PrecacheSoundWeaponSounds[i])
    for(
0sizeof(WeaponResources); i++)
    {
        if(
== 1engfunc(EngFunc_PrecacheGenericWeaponResources[i])
        else 
engfunc(EngFunc_PrecacheModelWeaponResources[i])
    }
    
    
register_forward(FM_PrecacheEvent"fw_PrecacheEvent_Post"1)    
    
g_smokepuff_id engfunc(EngFunc_PrecacheModel"sprites/wall_puff1.spr")
}

public 
client_putinserver(id)
{
    if(!
g_ham_bot && is_user_bot(id))
    {
        
g_ham_bot 1
        set_task
(0.1"do_register"id)
    }
}

public 
do_register(id)
{
    
RegisterHamFromEntity(Ham_TraceAttackid"fw_TraceAttack")
}

public 
fw_PrecacheEvent_Post(type, const name[])
{
    if(
equal(OLD_EVENTname))
        
g_event_balrog11 get_orig_retval()
}

public 
Get_Balrog11(id)
{
    
g_had_balrog11[id] = 1
    g_old_weapon
[id] = 0
    g_holding_attack
[id] = 0
    g_Shoot_Count
[id] = 0
    g_SpecialAmmo
[id] = 0
    
    fm_give_item
(idweapon_balrog11)
    
cs_set_user_bpammo(idCSW_BALROG11BPAMMO)
    
    
update_ammo(id)
    
update_specialammo(idg_SpecialAmmo[id], g_SpecialAmmo[id] > 0)
}

public 
Remove_Balrog11(id)
{
    
update_specialammo(idg_SpecialAmmo[id], 0)
        
    
g_had_balrog11[id] = 0
    g_old_weapon
[id] = 0
    g_holding_attack
[id] = 0
    g_Shoot_Count
[id] = 0
    g_SpecialAmmo
[id] = 0    
}

public 
hook_weapon(id)
{
    
engclient_cmd(idweapon_balrog11)
    return 
PLUGIN_HANDLED
}

public 
Event_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return    
    
    if(
g_had_balrog11[id] && (get_user_weapon(id) == CSW_BALROG11 && g_old_weapon[id] != CSW_BALROG11))
    { 
// Balrog Draw
        
set_weapon_anim(idB11_ANIM_DRAW)
        
set_player_nextattack(idDRAW_TIME)
        
        
update_specialammo(idg_SpecialAmmo[id], g_SpecialAmmo[id] > 0)
    } else if(
get_user_weapon(id) != CSW_BALROG11 && g_old_weapon[id] == CSW_BALROG11) {
        
update_specialammo(idg_SpecialAmmo[id], 0)
    }
    
    
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id))
        return
    if(
get_user_weapon(id) != CSW_BALROG11 || !g_had_balrog11[id])
        return
        
    static 
NewButtonNewButton get_uc(uc_handleUC_Buttons)
    static 
OldButtonOldButton pev(idpev_oldbuttons)
    
    if(
NewButton IN_ATTACK)
    {
        if(!
g_holding_attack[id]) g_holding_attack[id] = 1
    
} else if(NewButton IN_ATTACK2) {
        
SpecialShoot_Handle(id)
    } else {
        if(
OldButton IN_ATTACK)
        {
            if(
g_holding_attack[id]) 
            {
                
g_holding_attack[id] = 0
                g_Shoot_Count
[id] = 0
            
}
        }
    }
}

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_BALROG11)
        
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED
        
        
if(g_had_balrog11[id])
        {
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
set_pev(weaponpev_iuser4g_SpecialAmmo[id])
            
engfunc(EngFunc_SetModelentityW_MODEL)
            
            
Remove_Balrog11(id)
            
            return 
FMRES_SUPERCEDE
        
}
    }

    return 
FMRES_IGNORED;
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
FMRES_IGNORED    
    
if(get_user_weapon(id) == CSW_BALROG11 && g_had_balrog11[id])
        
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
    
    return 
FMRES_HANDLED
}

public 
fw_PlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if (!
is_user_connected(invoker))
        return 
FMRES_IGNORED        
    
if(get_user_weapon(invoker) == CSW_BALROG11 && g_had_balrog11[invoker] && eventid == g_event_balrog11)
    {
        
engfunc(EngFunc_PlaybackEventflags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)    

        if(
g_holding_attack[invoker]) g_Shoot_Count[invoker]++
        else 
g_Shoot_Count[invoker] = 0
        
        
if(g_Shoot_Count[invoker] >= CHARGE_COND_AMMO)
        {
            
g_Shoot_Count[invoker] = 0
            
            
if(g_SpecialAmmo[invoker] < MAX_SPECIAL_AMMO
            {
                
update_specialammo(invokerg_SpecialAmmo[invoker], 0)
                
g_SpecialAmmo[invoker]++
                
update_specialammo(invokerg_SpecialAmmo[invoker], 1)
                
                
emit_sound(invokerCHAN_ITEMWeaponSounds[4], 1.0ATTN_NORM0PITCH_NORM)
            }
        }
        
        
set_weapon_anim(invokerB11_ANIM_SHOOT)
        
emit_sound(invokerCHAN_WEAPONWeaponSounds[0], 1.0ATTN_NORM0PITCH_LOW)    

        return 
FMRES_SUPERCEDE
    
}
    
    return 
FMRES_HANDLED
}

public 
fw_Think(iEnt)
{
    if(!
pev_valid(iEnt)) 
        return
    
    static 
Float:fFrameFloat:fNextThinkFloat:fScale
    pev
(iEntpev_framefFrame)
    
pev(iEntpev_scalefScale)
    
    
// effect exp
    
static iMoveTypeiMoveType pev(iEntpev_movetype)
    if (
iMoveType == MOVETYPE_NONE)
    {
        
fNextThink 0.0015
        fFrame 
+= random_float(0.250.75)
        
fScale += 0.01
        
        
if(fFrame 21.0)
        {
            
engfunc(EngFunc_RemoveEntityiEnt)
            return
        }
    } else {
        
fNextThink 0.045
        
        fFrame 
+= random_float(0.51.0)
        
fScale += 0.001
        
        fFrame 
floatmin(21.0fFrame)
        
fScale floatmin(1.5fFrame)
    }
    
    
set_pev(iEntpev_framefFrame)
    
set_pev(iEntpev_scalefScale)
    
set_pev(iEntpev_nextthinkhalflife_time() + fNextThink)
    
    
// time remove
    
static Float:fTimeRemove
    pev
(iEntpev_fuser1fTimeRemove)
    if(
get_gametime() >= fTimeRemove)
    {
        static 
Float:Amountpev(iEntpev_renderamtAmount)
        if(
Amount <= 5.0)
        {
            
engfunc(EngFunc_RemoveEntityiEnt)
            return
        } else {
            
Amount -= 5.0
            set_pev
(iEntpev_renderamtAmount)
        }
    }
}

public 
fw_Touch(entid)
{
    if(!
pev_valid(ent))
        return
        
    if(
pev_valid(id))
    {
        static 
Classname[32]
        
pev(idpev_classnameClassnamesizeof(Classname))
        
        if(
equal(ClassnameFIRE_CLASSNAME)) return
    }
        
    
set_pev(entpev_movetypeMOVETYPE_NONE)
    
set_pev(entpev_solidSOLID_NOT)
}

public 
fw_TraceAttack(EntAttackerFloat:DamageFloat:Dir[3], ptrDamageType)
{
    if(!
is_user_alive(Attacker))
        return 
HAM_IGNORED    
    
if(get_user_weapon(Attacker) != CSW_BALROG11 || !g_had_balrog11[Attacker])
        return 
HAM_IGNORED
        
    
static Float:flEnd[3], Float:vecPlane[3]
    
    
get_tr2(ptrTR_vecEndPosflEnd)
    
get_tr2(ptrTR_vecPlaneNormalvecPlane)        
        
    if(!
is_user_alive(Ent))
    {
        
make_bullet(AttackerflEnd)
        
fake_smoke(Attackerptr)
    }
        
    
SetHamParamFloat(3float(DAMAGE))    

    return 
HAM_HANDLED    
}

public 
fw_Item_AddToPlayer_Post(entid)
{
    if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
    {
        
g_had_balrog11[id] = 1
        
        set_pev
(entpev_impulse0)
        
g_SpecialAmmo[id] = pev(entpev_iuser4)
    }            
    
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("WeaponList"), _id)
    
write_string((g_had_balrog11[id] == "weapon_balrog11" "weapon_xm1014"))
    
write_byte(5)
    
write_byte(32)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(0)
    
write_byte(12)
    
write_byte(CSW_BALROG11)
    
write_byte(0)
    
message_end()
}

public 
fw_Item_PostFrame(ent)
{
    static 
idid fm_cs_get_weapon_ent_owner(ent)
    if (!
pev_valid(id))
        return

    if(!
g_had_balrog11[id])
        return
        
    if(
get_pdata_int(ent55OFFSET_LINUX_WEAPONS) == 1set_weapon_anim(idB11_ANIM_INSERT)
}

public 
fw_Item_Deploy_Post(ent)
{
    static 
idid fm_cs_get_weapon_ent_owner(ent)
    if (!
pev_valid(id))
        return

    if(!
g_had_balrog11[id])
        return
        
    
set_pev(idpev_viewmodel2V_MODEL)
    
set_pev(idpev_weaponmodel2P_MODEL)
}

public 
update_ammo(id)
{
    if(!
is_user_alive(id))
        return
    
    static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BALROG11)
    if(!
pev_valid(weapon_ent)) return
    
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
    
write_byte(1)
    
write_byte(CSW_BALROG11)
    
write_byte(cs_get_weapon_ammo(weapon_ent))
    
message_end()
    
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
    
write_byte(1)
    
write_byte(cs_get_user_bpammo(idCSW_BALROG11))
    
message_end()
}

public 
update_specialammo(idAmmoOn)
{
    static 
AmmoSprites[33]
    
format(AmmoSpritessizeof(AmmoSprites), "number_%d"Ammo)
      
    
message_begin(MSG_ONE_UNRELIABLEg_Msg_StatusIcon, {0,0,0}, id)
    
write_byte(On)
    
write_string(AmmoSprites)
    
write_byte(42// red
    
write_byte(212// green
    
write_byte(255// blue
    
message_end()
}

public 
SpecialShoot_Handle(id)
{
    if(
get_pdata_float(id835) > 0.0)
        return
    if(
g_SpecialAmmo[id] <= 0)
        return        

    
create_fake_attack(id)    
    
    
// Shoot Handle
    
set_player_nextattack(idSPECIALSHOOT_DELAY)
    
set_weapons_timeidle(idCSW_BALROG11SPECIALSHOOT_DELAY)
    
    
update_specialammo(idg_SpecialAmmo[id], 0)
    
g_SpecialAmmo[id]--
    
update_specialammo(idg_SpecialAmmo[id], g_SpecialAmmo[id] > 0)
    
    
set_weapon_anim(idB11_ANIM_SHOOT_SPECIAL)
    
emit_sound(idCHAN_WEAPONWeaponSounds[1], 1.0ATTN_NORM0PITCH_LOW)
    
    
Create_FireSystem(id1)
    
set_task(0.25"Check_RadiusDamage"id)
}

public 
Check_RadiusDamage(id)
{
    if(!
is_user_alive(id))
        return
    static 
Float:Origin[3], Float:MyOrigin[3], Float:DamageMultiFloat:DmgMulti
    pev
(idpev_originMyOrigin)
    for(new 
0g_MaxPlayersi++)
    {
        if(!
is_user_alive(i))
            continue
        if(
id == i)
            continue
        
pev(ipev_originOrigin)
        if(!
is_in_viewcone(idOrigin1))
            continue
        if(
entity_range(idi) > float(RADIUS))
            continue
            
        
DmgMulti 1.1;
        
DamageMulti entity_range(idi) / float(RADIUS)
        
DmgMulti -= DamageMulti
        
        ExecuteHamB
(Ham_TakeDamagei0idfloat(FIRE_DAMAGE), DMG_BURN)
    }
}

public 
create_fake_attack(id)
{
    static 
weapon
    weapon 
fm_find_ent_by_owner(-1"weapon_knife"id)
    
    if(
pev_valid(weapon)) ExecuteHamB(Ham_Weapon_PrimaryAttackweapon)
}

public 
Create_FireSystem(idOffSet)
{
    const 
MAX_FIRE 8
    
static Float:StartOrigin[3], Float:TargetOrigin[MAX_FIRE][3], Float:Speed[MAX_FIRE]

    
// Get Target
    
    // -- Left
    
get_position(id100.0,    random_float(-10.0, -30.0), WEAPON_ATTACH_UTargetOrigin[0]); Speed[0] = 210.0 float(FIRE_SPEED)
    
get_position(id100.0random_float(-10.0, -20.0), WEAPON_ATTACH_UTargetOrigin[1]); Speed[1] = 240.0 float(FIRE_SPEED)
    
get_position(id100.0random_float(-10.0, -10.0), WEAPON_ATTACH_UTargetOrigin[2]); Speed[2] = 300.0 float(FIRE_SPEED)

    
// -- Center
    
get_position(id100.00.0WEAPON_ATTACH_UTargetOrigin[3]); Speed[3] = 200.0 float(FIRE_SPEED)
    
get_position(id100.00.0WEAPON_ATTACH_UTargetOrigin[4]); Speed[4] = 200.0 float(FIRE_SPEED)
    
    
// -- Right
    
get_position(id100.0random_float(10.010.0), WEAPON_ATTACH_UTargetOrigin[5]); Speed[5] = 150.0 float(FIRE_SPEED)
    
get_position(id100.0random_float(10.020.0) , WEAPON_ATTACH_UTargetOrigin[6]); Speed[6] = 180.0 float(FIRE_SPEED)
    
get_position(id100.0,    random_float(10.030.0), WEAPON_ATTACH_UTargetOrigin[7]); Speed[7] = 210.0 float(FIRE_SPEED)
    for(new 
0MAX_FIREi++)
    {
        
// Get Start
        
get_position(idrandom_float(30.040.0), 0.0WEAPON_ATTACH_UStartOrigin)
        
Create_Fire(idStartOriginTargetOrigin[i], Speed[i], OffSet)
    }
}

public 
Create_Fire(idFloat:Origin[3], Float:TargetOrigin[3], Float:SpeedOffset)
{
    static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"env_sprite"))
    if(!
pev_valid(Ent)) return
    
    static 
Float:Velocity[3]

    
// Set info for ent
    
set_pev(Entpev_movetypeMOVETYPE_FLY)
    
set_pev(Entpev_rendermodekRenderTransAdd)
    
set_pev(Entpev_renderamt75.0)
    
set_pev(Entpev_fuser1get_gametime() + 0.75)    // time remove
    
set_pev(Entpev_scalerandom_float(0.250.75))
    
set_pev(Entpev_nextthinkhalflife_time() + 0.05)
    
    
entity_set_string(EntEV_SZ_classnameFIRE_CLASSNAME)
    
engfunc(EngFunc_SetModelEntWeaponResources[0])
    
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
    
set_pev(Entpev_maxsFloat:{1.01.01.0})
    
set_pev(Entpev_originOrigin)
    
set_pev(Entpev_gravity0.01)
    
set_pev(Entpev_solidSOLID_TRIGGER)
    
set_pev(Entpev_frame0.0)
    
set_pev(Entpev_ownerid)
    
set_pev(Entpev_iuser4Offset)
    
    
get_speed_vector(OriginTargetOriginSpeed 3.0Velocity)
    
set_pev(Entpev_velocityVelocity)
}

stock make_bullet(idFloat:Origin[3])
{
    
// Find target
    
new decal random_num(4145)
    const 
loop_time 2
    
    
static BodyTarget
    get_user_aiming
(idTargetBody999999)
    
    if(
is_user_connected(Target))
        return
    
    for(new 
0loop_timei++)
    {
        
// Put decal on "world" (a wall)
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_byte(decal)
        
message_end()
        
        
// Show sparcles
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_GUNSHOTDECAL)
        
engfunc(EngFunc_WriteCoordOrigin[0])
        
engfunc(EngFunc_WriteCoordOrigin[1])
        
engfunc(EngFunc_WriteCoordOrigin[2])
        
write_short(id)
        
write_byte(decal)
        
message_end()
    }
}

stock fake_smoke(idtrace_result)
{
    static 
Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
    
    get_weapon_attachment
(idvecSrc)
    
global_get(glb_v_forwardvecEnd)
    
    
xs_vec_mul_scalar(vecEnd8192.0vecEnd)
    
xs_vec_add(vecSrcvecEndvecEnd)

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

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

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

stock set_weapon_anim(idanim)
{
    if(!
is_user_alive(id))
        return
        
    
set_pev(idpev_weaponanimanim)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
    
write_byte(anim)
    
write_byte(0)
    
message_end()    
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != PDATA_SAFE)
        return -
1
    
    
return get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS)
}

stock set_player_nextattack(idFloat:nexttime)
{
    if(!
is_user_alive(id))
        return
        
    
set_pdata_float(idm_flNextAttacknexttime5)
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
    if(!
is_user_alive(id))
        return
        
    static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
    if(!
pev_valid(entwpn)) 
        return
        
    
set_pdata_float(entwpn46TimeIdleOFFSET_LINUX_WEAPONS)
    
set_pdata_float(entwpn47TimeIdleOFFSET_LINUX_WEAPONS)
    
set_pdata_float(entwpn48TimeIdle 0.5OFFSET_LINUX_WEAPONS)
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
    static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
    
    
pev(idpev_originvOrigin)
    
pev(idpev_view_ofsvUp//for player
    
xs_vec_add(vOriginvUpvOrigin)
    
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
    
    
angle_vector(vAngle,ANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
    
angle_vector(vAngle,ANGLEVECTOR_RIGHTvRight)
    
angle_vector(vAngle,ANGLEVECTOR_UPvUp)
    
    
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
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
    
    
return 1;
}

// Drop primary/secondary weapons
stock drop_weapons(iddropwhat)
{
    
// Get user weapons
    
static weapons[32], numiweaponid
    num 
// reset passed weapons count (bugfix)
    
get_user_weapons(idweaponsnum)
    
    
// Loop through them and drop primaries or secondaries
    
for (0numi++)
    {
        
// Prevent re-indexing the array
        
weaponid weapons[i]
        
        if ((
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
        {
            
// Get weapon entity
            
static wname[32]
            
get_weaponname(weaponidwnamecharsmax(wname))

            
// Player drops the weapon and looses his bpammo
            
engclient_cmd(id"drop"wname)
            
cs_set_user_bpammo(idweaponid0)
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/ 
Sorry for my english
__________________

Last edited by SaBBa; 06-10-2016 at 19:27.
SaBBa is offline
mlibre
Veteran Member
Join Date: Nov 2015
Location: return PLUGIN_CONTINUE
Old 06-10-2016 , 18:41   Re: Buy balrog [Help]
Reply With Quote #2

hello try this

PHP Code:
public plugin_init() 

    
//..

    
register_cvar("amx_balrog11_cost""10000")
    
register_clcmd("say /balrog""Get_Balrog11"

//..
public Get_Balrog11(id
{
    if(
g_had_balrog11[id])
    {
        
client_print(id3"[AMXX] You already have Balrog11")
        
        return 
PLUGIN_HANDLED
    
}
    else if (
cs_get_user_money(id) >= get_cvar_num("amx_balrog11_cost") ) 
    {
        
cs_set_user_money(idcs_get_user_money(id) - get_cvar_num("amx_balrog11_cost") )
    
        
g_had_balrog11[id] = 
        g_old_weapon
[id] = 
        g_holding_attack
[id] = 
        g_Shoot_Count
[id] = 
        g_SpecialAmmo
[id] = 
     
        fm_give_item
(idweapon_balrog11
        
cs_set_user_bpammo(idCSW_BALROG11BPAMMO
     
        
update_ammo(id
        
update_specialammo(idg_SpecialAmmo[id], g_SpecialAmmo[id] > 0
    }
    else {
        
client_print(id3"[AMXX] You need money ^"$%d^" to buy Balrog11"get_cvar_num("amx_balrog11_cost") )
    }
    
    return 
PLUGIN_CONTINUE


public 
client_connect(idRemove_Balrog11(id

public 
client_disconnect(idRemove_Balrog11(id
mlibre is offline
Senzor
Member
Join Date: Nov 2012
Location: Romania
Old 06-10-2016 , 19:09   Re: Buy balrog [Help]
Reply With Quote #3

Hello, ty for your help @mlibre i will post him the full code , added your code in it maybe he doesn't know how.
Code:
#include <amxmodx> 
#include <engine> 
#include <fakemeta> 
#include <fakemeta_util> 
#include <hamsandwich> 
#include <cstrike> 

#define PLUGIN "Balrog-XI" 
#define VERSION "2.0" 
#define AUTHOR "Dias" 
#define SUPPORT FOR NORMAL MODE "Conspiracy" 

#define V_MODEL "models/v_balrog11_2.mdl" 
#define P_MODEL "models/p_balrog11.mdl" 
#define W_MODEL "models/w_balrog11.mdl" 

#define CSW_BALROG11 CSW_XM1014 
#define weapon_balrog11 "weapon_xm1014" 

#define OLD_W_MODEL "models/w_xm1014.mdl" 
#define OLD_EVENT "events/xm1014.sc" 
#define WEAPON_SECRETCODE 1982 

#define DRAW_TIME 0.75 
#define DAMAGE 32 
#define FIRE_DAMAGE 200 
#define BPAMMO 56 

#define CHARGE_COND_AMMO 4 
#define MAX_SPECIAL_AMMO 7 
#define SPECIALSHOOT_DELAY 0.35 
#define FIRE_SPEED 1 
#define RADIUS 600 
#define FIRE_CLASSNAME "balrog11_fire" 
#define SYSTEM_CLASSNAME "balrog11_firesystem" 

// Fire Start 
#define WEAPON_ATTACH_F 30.0 
#define WEAPON_ATTACH_R 10.0 
#define WEAPON_ATTACH_U -5.0 

// OFFSET 
const PDATA_SAFE = 2 
const OFFSET_LINUX_WEAPONS = 4 
const OFFSET_WEAPONOWNER = 41 
const m_flNextAttack = 83 
const m_flNextPrimaryAttack    = 46 
const m_flNextSecondaryAttack    = 47 

// Weapon bitsums 
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) 
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE) 
         
new const WeaponSounds[5][] =  
{ 
    "weapons/balrog11-1.wav", 
    "weapons/balrog11-2.wav", 
    "weapons/balrog11_draw.wav", 
    "weapons/balrog11_insert.wav", 
    "weapons/balrog11_charge.wav" 
} 

new const WeaponResources[4][] = 
{ 
    "sprites/flame_puff01.spr", 
    "sprites/weapon_balrog11.txt", 
    "sprites/640hud3_2.spr", 
    "sprites/640hud89_2.spr" 
} 

enum 
{ 
    B11_ANIM_IDLE = 0, 
    B11_ANIM_SHOOT, 
    B11_ANIM_SHOOT_SPECIAL, 
    B11_ANIM_INSERT, 
    B11_ANIM_AFTER_RELOAD, 
    B11_ANIM_START_RELOAD, 
    B11_ANIM_DRAW 
} 

new g_had_balrog11[33], g_holding_attack[33], g_Shoot_Count[33], g_SpecialAmmo[33] 
new g_old_weapon[33], g_event_balrog11, g_Msg_StatusIcon, g_smokepuff_id, g_ham_bot, g_MaxPlayers 

public plugin_init() 
{ 
	register_plugin(PLUGIN, VERSION, AUTHOR) 

	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") 

	register_think(FIRE_CLASSNAME, "fw_Think") 
	register_touch(FIRE_CLASSNAME, "*", "fw_Touch") 
	register_forward(FM_CmdStart, "fw_CmdStart") 
	register_forward(FM_SetModel, "fw_SetModel") 
	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)     
	register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")     

	RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack") 
	RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")     

	RegisterHam(Ham_Item_AddToPlayer, weapon_balrog11, "fw_Item_AddToPlayer_Post", 1) 
	RegisterHam(Ham_Item_PostFrame, weapon_balrog11, "fw_Item_PostFrame") 
	RegisterHam(Ham_Item_Deploy, weapon_balrog11, "fw_Item_Deploy_Post", 1) 

	g_Msg_StatusIcon = get_user_msgid("StatusIcon") 
	g_MaxPlayers = get_maxplayers() 

	register_clcmd("admin_get_balrog11", "Get_Balrog11", ADMIN_RCON) 
	register_clcmd("weapon_balrog11", "hook_weapon")
	register_cvar("amx_balrog11_cost", "10000") 
	register_clcmd("say /balrog", "Get_Balrog11")
}

public plugin_precache() 
{ 
    engfunc(EngFunc_PrecacheModel, V_MODEL) 
    engfunc(EngFunc_PrecacheModel, P_MODEL) 
    engfunc(EngFunc_PrecacheModel, W_MODEL) 
     
    new i 
    for(i = 0; i < sizeof(WeaponSounds); i++) 
        engfunc(EngFunc_PrecacheSound, WeaponSounds[i]) 
    for(i = 0; i < sizeof(WeaponResources); i++) 
    { 
        if(i == 1) engfunc(EngFunc_PrecacheGeneric, WeaponResources[i]) 
        else engfunc(EngFunc_PrecacheModel, WeaponResources[i]) 
    } 
     
    register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)     
    g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr") 
} 

public client_putinserver(id) 
{ 
    if(!g_ham_bot && is_user_bot(id)) 
    { 
        g_ham_bot = 1 
        set_task(0.1, "do_register", id) 
    } 
}

public client_connect(id)
{
Remove_Balrog11(id)  
}

public client_disconnect(id)
{
Remove_Balrog11(id)
}

public do_register(id) 
{ 
    RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack") 
} 

public fw_PrecacheEvent_Post(type, const name[]) 
{ 
    if(equal(OLD_EVENT, name)) 
        g_event_balrog11 = get_orig_retval() 
} 

public Get_Balrog11(id)  
{ 
    if(g_had_balrog11[id]) 
    { 
        client_print(id, 3, "[AMXX] You already have Balrog11") 
         
        return PLUGIN_HANDLED 
    } 
    else if (cs_get_user_money(id) >= get_cvar_num("amx_balrog11_cost") )  
    { 
        cs_set_user_money(id, cs_get_user_money(id) - get_cvar_num("amx_balrog11_cost") ) 
     
        g_had_balrog11[id] = 1  
        g_old_weapon[id] = 0  
        g_holding_attack[id] = 0  
        g_Shoot_Count[id] = 0  
        g_SpecialAmmo[id] = 0  
      
        fm_give_item(id, weapon_balrog11)  
        cs_set_user_bpammo(id, CSW_BALROG11, BPAMMO)  
      
        update_ammo(id)  
        update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0)  
    } 
    else { 
        client_print(id, 3, "[AMXX] You need money ^"$%d^" to buy Balrog11", get_cvar_num("amx_balrog11_cost") ) 
    } 
     
    return PLUGIN_CONTINUE 
}

public Remove_Balrog11(id) 
{ 
    update_specialammo(id, g_SpecialAmmo[id], 0) 
         
    g_had_balrog11[id] = 0 
    g_old_weapon[id] = 0 
    g_holding_attack[id] = 0 
    g_Shoot_Count[id] = 0 
    g_SpecialAmmo[id] = 0     
} 

public hook_weapon(id) 
{ 
    engclient_cmd(id, weapon_balrog11) 
    return PLUGIN_HANDLED 
} 

public Event_CurWeapon(id) 
{ 
    if(!is_user_alive(id)) 
        return     
     
    if(g_had_balrog11[id] && (get_user_weapon(id) == CSW_BALROG11 && g_old_weapon[id] != CSW_BALROG11)) 
    { // Balrog Draw 
        set_weapon_anim(id, B11_ANIM_DRAW) 
        set_player_nextattack(id, DRAW_TIME) 
         
        update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) 
    } else if(get_user_weapon(id) != CSW_BALROG11 && g_old_weapon[id] == CSW_BALROG11) { 
        update_specialammo(id, g_SpecialAmmo[id], 0) 
    } 
     
    g_old_weapon[id] = get_user_weapon(id) 
} 

public fw_CmdStart(id, uc_handle, seed) 
{ 
    if(!is_user_alive(id)) 
        return 
    if(get_user_weapon(id) != CSW_BALROG11 || !g_had_balrog11[id]) 
        return 
         
    static NewButton; NewButton = get_uc(uc_handle, UC_Buttons) 
    static OldButton; OldButton = pev(id, pev_oldbuttons) 
     
    if(NewButton & IN_ATTACK) 
    { 
        if(!g_holding_attack[id]) g_holding_attack[id] = 1 
    } else if(NewButton & IN_ATTACK2) { 
        SpecialShoot_Handle(id) 
    } else { 
        if(OldButton & IN_ATTACK) 
        { 
            if(g_holding_attack[id])  
            { 
                g_holding_attack[id] = 0 
                g_Shoot_Count[id] = 0 
            } 
        } 
    } 
} 

public fw_SetModel(entity, model[]) 
{ 
    if(!pev_valid(entity)) 
        return FMRES_IGNORED 
     
    static Classname[64] 
    pev(entity, pev_classname, Classname, sizeof(Classname)) 
     
    if(!equal(Classname, "weaponbox")) 
        return FMRES_IGNORED 
     
    static id 
    id = pev(entity, pev_owner) 
     
    if(equal(model, OLD_W_MODEL)) 
    { 
        static weapon 
        weapon = fm_get_user_weapon_entity(entity, CSW_BALROG11) 
         
        if(!pev_valid(weapon)) 
            return FMRES_IGNORED 
         
        if(g_had_balrog11[id]) 
        { 
            set_pev(weapon, pev_impulse, WEAPON_SECRETCODE) 
            set_pev(weapon, pev_iuser4, g_SpecialAmmo[id]) 
            engfunc(EngFunc_SetModel, entity, W_MODEL) 
             
            Remove_Balrog11(id) 
             
            return FMRES_SUPERCEDE 
        } 
    } 

    return FMRES_IGNORED; 
} 

public fw_UpdateClientData_Post(id, sendweapons, cd_handle) 
{ 
    if(!is_user_alive(id) || !is_user_connected(id)) 
        return FMRES_IGNORED     
    if(get_user_weapon(id) == CSW_BALROG11 && g_had_balrog11[id]) 
        set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)  
     
    return FMRES_HANDLED 
} 

public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) 
{ 
    if (!is_user_connected(invoker)) 
        return FMRES_IGNORED         
    if(get_user_weapon(invoker) == CSW_BALROG11 && g_had_balrog11[invoker] && eventid == g_event_balrog11) 
    { 
        engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)     

        if(g_holding_attack[invoker]) g_Shoot_Count[invoker]++ 
        else g_Shoot_Count[invoker] = 0 
         
        if(g_Shoot_Count[invoker] >= CHARGE_COND_AMMO) 
        { 
            g_Shoot_Count[invoker] = 0 
             
            if(g_SpecialAmmo[invoker] < MAX_SPECIAL_AMMO)  
            { 
                update_specialammo(invoker, g_SpecialAmmo[invoker], 0) 
                g_SpecialAmmo[invoker]++ 
                update_specialammo(invoker, g_SpecialAmmo[invoker], 1) 
                 
                emit_sound(invoker, CHAN_ITEM, WeaponSounds[4], 1.0, ATTN_NORM, 0, PITCH_NORM) 
            } 
        } 
         
        set_weapon_anim(invoker, B11_ANIM_SHOOT) 
        emit_sound(invoker, CHAN_WEAPON, WeaponSounds[0], 1.0, ATTN_NORM, 0, PITCH_LOW)     

        return FMRES_SUPERCEDE 
    } 
     
    return FMRES_HANDLED 
} 

public fw_Think(iEnt) 
{ 
    if(!pev_valid(iEnt))  
        return 
     
    static Float:fFrame, Float:fNextThink, Float:fScale 
    pev(iEnt, pev_frame, fFrame) 
    pev(iEnt, pev_scale, fScale) 
     
    // effect exp 
    static iMoveType; iMoveType = pev(iEnt, pev_movetype) 
    if (iMoveType == MOVETYPE_NONE) 
    { 
        fNextThink = 0.0015 
        fFrame += random_float(0.25, 0.75) 
        fScale += 0.01 
         
        if(fFrame > 21.0) 
        { 
            engfunc(EngFunc_RemoveEntity, iEnt) 
            return 
        } 
    } else { 
        fNextThink = 0.045 
         
        fFrame += random_float(0.5, 1.0) 
        fScale += 0.001 
         
        fFrame = floatmin(21.0, fFrame) 
        fScale = floatmin(1.5, fFrame) 
    } 
     
    set_pev(iEnt, pev_frame, fFrame) 
    set_pev(iEnt, pev_scale, fScale) 
    set_pev(iEnt, pev_nextthink, halflife_time() + fNextThink) 
     
    // time remove 
    static Float:fTimeRemove 
    pev(iEnt, pev_fuser1, fTimeRemove) 
    if(get_gametime() >= fTimeRemove) 
    { 
        static Float:Amount; pev(iEnt, pev_renderamt, Amount) 
        if(Amount <= 5.0) 
        { 
            engfunc(EngFunc_RemoveEntity, iEnt) 
            return 
        } else { 
            Amount -= 5.0 
            set_pev(iEnt, pev_renderamt, Amount) 
        } 
    } 
} 

public fw_Touch(ent, id) 
{ 
    if(!pev_valid(ent)) 
        return 
         
    if(pev_valid(id)) 
    { 
        static Classname[32] 
        pev(id, pev_classname, Classname, sizeof(Classname)) 
         
        if(equal(Classname, FIRE_CLASSNAME)) return 
    } 
         
    set_pev(ent, pev_movetype, MOVETYPE_NONE) 
    set_pev(ent, pev_solid, SOLID_NOT) 
} 

public fw_TraceAttack(Ent, Attacker, Float:Damage, Float:Dir[3], ptr, DamageType) 
{ 
    if(!is_user_alive(Attacker)) 
        return HAM_IGNORED     
    if(get_user_weapon(Attacker) != CSW_BALROG11 || !g_had_balrog11[Attacker]) 
        return HAM_IGNORED 
         
    static Float:flEnd[3], Float:vecPlane[3] 
     
    get_tr2(ptr, TR_vecEndPos, flEnd) 
    get_tr2(ptr, TR_vecPlaneNormal, vecPlane)         
         
    if(!is_user_alive(Ent)) 
    { 
        make_bullet(Attacker, flEnd) 
        fake_smoke(Attacker, ptr) 
    } 
         
    SetHamParamFloat(3, float(DAMAGE))     

    return HAM_HANDLED     
} 

public fw_Item_AddToPlayer_Post(ent, id) 
{ 
    if(pev(ent, pev_impulse) == WEAPON_SECRETCODE) 
    { 
        g_had_balrog11[id] = 1 
         
        set_pev(ent, pev_impulse, 0) 
        g_SpecialAmmo[id] = pev(ent, pev_iuser4) 
    }             
     
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id) 
    write_string((g_had_balrog11[id] == 1 ? "weapon_balrog11" : "weapon_xm1014")) 
    write_byte(5) 
    write_byte(32) 
    write_byte(-1) 
    write_byte(-1) 
    write_byte(0) 
    write_byte(12) 
    write_byte(CSW_BALROG11) 
    write_byte(0) 
    message_end() 
} 

public fw_Item_PostFrame(ent) 
{ 
    static id; id = fm_cs_get_weapon_ent_owner(ent) 
    if (!pev_valid(id)) 
        return 

    if(!g_had_balrog11[id]) 
        return 
         
    if(get_pdata_int(ent, 55, OFFSET_LINUX_WEAPONS) == 1) set_weapon_anim(id, B11_ANIM_INSERT) 
} 

public fw_Item_Deploy_Post(ent) 
{ 
    static id; id = fm_cs_get_weapon_ent_owner(ent) 
    if (!pev_valid(id)) 
        return 

    if(!g_had_balrog11[id]) 
        return 
         
    set_pev(id, pev_viewmodel2, V_MODEL) 
    set_pev(id, pev_weaponmodel2, P_MODEL) 
} 

public update_ammo(id) 
{ 
    if(!is_user_alive(id)) 
        return 
     
    static weapon_ent; weapon_ent = fm_get_user_weapon_entity(id, CSW_BALROG11) 
    if(!pev_valid(weapon_ent)) return 
     
    engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id) 
    write_byte(1) 
    write_byte(CSW_BALROG11) 
    write_byte(cs_get_weapon_ammo(weapon_ent)) 
    message_end() 
     
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id) 
    write_byte(1) 
    write_byte(cs_get_user_bpammo(id, CSW_BALROG11)) 
    message_end() 
} 

public update_specialammo(id, Ammo, On) 
{ 
    static AmmoSprites[33] 
    format(AmmoSprites, sizeof(AmmoSprites), "number_%d", Ammo) 
       
    message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id) 
    write_byte(On) 
    write_string(AmmoSprites) 
    write_byte(42) // red 
    write_byte(212) // green 
    write_byte(255) // blue 
    message_end() 
} 

public SpecialShoot_Handle(id) 
{ 
    if(get_pdata_float(id, 83, 5) > 0.0) 
        return 
    if(g_SpecialAmmo[id] <= 0) 
        return         

    create_fake_attack(id)     
     
    // Shoot Handle 
    set_player_nextattack(id, SPECIALSHOOT_DELAY) 
    set_weapons_timeidle(id, CSW_BALROG11, SPECIALSHOOT_DELAY) 
     
    update_specialammo(id, g_SpecialAmmo[id], 0) 
    g_SpecialAmmo[id]-- 
    update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) 
     
    set_weapon_anim(id, B11_ANIM_SHOOT_SPECIAL) 
    emit_sound(id, CHAN_WEAPON, WeaponSounds[1], 1.0, ATTN_NORM, 0, PITCH_LOW) 
     
    Create_FireSystem(id, 1) 
    set_task(0.25, "Check_RadiusDamage", id) 
} 

public Check_RadiusDamage(id) 
{ 
    if(!is_user_alive(id)) 
        return 
    static Float:Origin[3], Float:MyOrigin[3], Float:DamageMulti, Float:DmgMulti 
    pev(id, pev_origin, MyOrigin) 
    for(new i = 0; i < g_MaxPlayers; i++) 
    { 
        if(!is_user_alive(i)) 
            continue 
        if(id == i) 
            continue 
        pev(i, pev_origin, Origin) 
        if(!is_in_viewcone(id, Origin, 1)) 
            continue 
        if(entity_range(id, i) > float(RADIUS)) 
            continue 
             
        DmgMulti = 1.1; 
        DamageMulti = entity_range(id, i) / float(RADIUS) 
        DmgMulti -= DamageMulti 
         
        ExecuteHamB(Ham_TakeDamage, i, 0, id, float(FIRE_DAMAGE), DMG_BURN) 
    } 
} 

public create_fake_attack(id) 
{ 
    static weapon 
    weapon = fm_find_ent_by_owner(-1, "weapon_knife", id) 
     
    if(pev_valid(weapon)) ExecuteHamB(Ham_Weapon_PrimaryAttack, weapon) 
} 

public Create_FireSystem(id, OffSet) 
{ 
    const MAX_FIRE = 8 
    static Float:StartOrigin[3], Float:TargetOrigin[MAX_FIRE][3], Float:Speed[MAX_FIRE] 

    // Get Target 
     
    // -- Left 
    get_position(id, 100.0,    random_float(-10.0, -30.0), WEAPON_ATTACH_U, TargetOrigin[0]); Speed[0] = 210.0 * float(FIRE_SPEED) 
    get_position(id, 100.0, random_float(-10.0, -20.0), WEAPON_ATTACH_U, TargetOrigin[1]); Speed[1] = 240.0 * float(FIRE_SPEED) 
    get_position(id, 100.0, random_float(-10.0, -10.0), WEAPON_ATTACH_U, TargetOrigin[2]); Speed[2] = 300.0 * float(FIRE_SPEED) 

    // -- Center 
    get_position(id, 100.0, 0.0, WEAPON_ATTACH_U, TargetOrigin[3]); Speed[3] = 200.0 * float(FIRE_SPEED) 
    get_position(id, 100.0, 0.0, WEAPON_ATTACH_U, TargetOrigin[4]); Speed[4] = 200.0 * float(FIRE_SPEED) 
     
    // -- Right 
    get_position(id, 100.0, random_float(10.0, 10.0), WEAPON_ATTACH_U, TargetOrigin[5]); Speed[5] = 150.0 * float(FIRE_SPEED) 
    get_position(id, 100.0, random_float(10.0, 20.0) , WEAPON_ATTACH_U, TargetOrigin[6]); Speed[6] = 180.0 * float(FIRE_SPEED) 
    get_position(id, 100.0,    random_float(10.0, 30.0), WEAPON_ATTACH_U, TargetOrigin[7]); Speed[7] = 210.0 * float(FIRE_SPEED) 
    for(new i = 0; i < MAX_FIRE; i++) 
    { 
        // Get Start 
        get_position(id, random_float(30.0, 40.0), 0.0, WEAPON_ATTACH_U, StartOrigin) 
        Create_Fire(id, StartOrigin, TargetOrigin[i], Speed[i], OffSet) 
    } 
} 

public Create_Fire(id, Float:Origin[3], Float:TargetOrigin[3], Float:Speed, Offset) 
{ 
    static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite")) 
    if(!pev_valid(Ent)) return 
     
    static Float:Velocity[3] 

    // Set info for ent 
    set_pev(Ent, pev_movetype, MOVETYPE_FLY) 
    set_pev(Ent, pev_rendermode, kRenderTransAdd) 
    set_pev(Ent, pev_renderamt, 75.0) 
    set_pev(Ent, pev_fuser1, get_gametime() + 0.75)    // time remove 
    set_pev(Ent, pev_scale, random_float(0.25, 0.75)) 
    set_pev(Ent, pev_nextthink, halflife_time() + 0.05) 
     
    entity_set_string(Ent, EV_SZ_classname, FIRE_CLASSNAME) 
    engfunc(EngFunc_SetModel, Ent, WeaponResources[0]) 
    set_pev(Ent, pev_mins, Float:{-1.0, -1.0, -1.0}) 
    set_pev(Ent, pev_maxs, Float:{1.0, 1.0, 1.0}) 
    set_pev(Ent, pev_origin, Origin) 
    set_pev(Ent, pev_gravity, 0.01) 
    set_pev(Ent, pev_solid, SOLID_TRIGGER) 
    set_pev(Ent, pev_frame, 0.0) 
    set_pev(Ent, pev_owner, id) 
    set_pev(Ent, pev_iuser4, Offset) 
     
    get_speed_vector(Origin, TargetOrigin, Speed * 3.0, Velocity) 
    set_pev(Ent, pev_velocity, Velocity) 
} 

stock make_bullet(id, Float:Origin[3]) 
{ 
    // Find target 
    new decal = random_num(41, 45) 
    const loop_time = 2 
     
    static Body, Target 
    get_user_aiming(id, Target, Body, 999999) 
     
    if(is_user_connected(Target)) 
        return 
     
    for(new i = 0; i < loop_time; i++) 
    { 
        // Put decal on "world" (a wall) 
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
        write_byte(TE_WORLDDECAL) 
        engfunc(EngFunc_WriteCoord, Origin[0]) 
        engfunc(EngFunc_WriteCoord, Origin[1]) 
        engfunc(EngFunc_WriteCoord, Origin[2]) 
        write_byte(decal) 
        message_end() 
         
        // Show sparcles 
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
        write_byte(TE_GUNSHOTDECAL) 
        engfunc(EngFunc_WriteCoord, Origin[0]) 
        engfunc(EngFunc_WriteCoord, Origin[1]) 
        engfunc(EngFunc_WriteCoord, Origin[2]) 
        write_short(id) 
        write_byte(decal) 
        message_end() 
    } 
} 

stock fake_smoke(id, trace_result) 
{ 
    static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG 
     
    get_weapon_attachment(id, vecSrc) 
    global_get(glb_v_forward, vecEnd) 
     
    xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd) 
    xs_vec_add(vecSrc, vecEnd, vecEnd) 

    get_tr2(trace_result, TR_vecEndPos, vecSrc) 
    get_tr2(trace_result, TR_vecPlaneNormal, vecEnd) 
     
    xs_vec_mul_scalar(vecEnd, 2.5, vecEnd) 
    xs_vec_add(vecSrc, vecEnd, vecEnd) 
     
    TE_FLAG |= TE_EXPLFLAG_NODLIGHTS 
    TE_FLAG |= TE_EXPLFLAG_NOSOUND 
    TE_FLAG |= TE_EXPLFLAG_NOPARTICLES 
     
    engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0) 
    write_byte(TE_EXPLOSION) 
    engfunc(EngFunc_WriteCoord, vecEnd[0]) 
    engfunc(EngFunc_WriteCoord, vecEnd[1]) 
    engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0) 
    write_short(g_smokepuff_id) 
    write_byte(2) 
    write_byte(50) 
    write_byte(TE_FLAG) 
    message_end() 
} 

stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) 
{  
    new Float:vfEnd[3], viEnd[3]  
    get_user_origin(id, viEnd, 3)   
    IVecFVec(viEnd, vfEnd)  
     
    new Float:fOrigin[3], Float:fAngle[3] 
     
    pev(id, pev_origin, fOrigin)  
    pev(id, pev_view_ofs, fAngle) 
     
    xs_vec_add(fOrigin, fAngle, fOrigin)  
     
    new Float:fAttack[3] 
     
    xs_vec_sub(vfEnd, fOrigin, fAttack) 
    xs_vec_sub(vfEnd, fOrigin, fAttack)  
     
    new Float:fRate 
     
    fRate = fDis / vector_length(fAttack) 
    xs_vec_mul_scalar(fAttack, fRate, fAttack) 
     
    xs_vec_add(fOrigin, fAttack, output) 
} 

stock set_weapon_anim(id, anim) 
{ 
    if(!is_user_alive(id)) 
        return 
         
    set_pev(id, pev_weaponanim, anim) 
     
    message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id) 
    write_byte(anim) 
    write_byte(0) 
    message_end()     
} 

stock fm_cs_get_weapon_ent_owner(ent) 
{ 
    if (pev_valid(ent) != PDATA_SAFE) 
        return -1 
     
    return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) 
} 

stock set_player_nextattack(id, Float:nexttime) 
{ 
    if(!is_user_alive(id)) 
        return 
         
    set_pdata_float(id, m_flNextAttack, nexttime, 5) 
} 

stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle) 
{ 
    if(!is_user_alive(id)) 
        return 
         
    static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId) 
    if(!pev_valid(entwpn))  
        return 
         
    set_pdata_float(entwpn, 46, TimeIdle, OFFSET_LINUX_WEAPONS) 
    set_pdata_float(entwpn, 47, TimeIdle, OFFSET_LINUX_WEAPONS) 
    set_pdata_float(entwpn, 48, TimeIdle + 0.5, OFFSET_LINUX_WEAPONS) 
} 

stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[]) 
{ 
    static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3] 
     
    pev(id, pev_origin, vOrigin) 
    pev(id, pev_view_ofs, vUp) //for player 
    xs_vec_add(vOrigin, vUp, vOrigin) 
    pev(id, pev_v_angle, vAngle) // 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 
} 

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) 
{ 
    new_velocity[0] = origin2[0] - origin1[0] 
    new_velocity[1] = origin2[1] - origin1[1] 
    new_velocity[2] = origin2[2] - origin1[2] 
    new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2])) 
    new_velocity[0] *= num 
    new_velocity[1] *= num 
    new_velocity[2] *= num 
     
    return 1; 
} 

// Drop primary/secondary weapons 
stock drop_weapons(id, dropwhat) 
{ 
    // Get user weapons 
    static weapons[32], num, i, weaponid 
    num = 0 // reset passed weapons count (bugfix) 
    get_user_weapons(id, weapons, num) 
     
    // Loop through them and drop primaries or secondaries 
    for (i = 0; i < num; i++) 
    { 
        // Prevent re-indexing the array 
        weaponid = weapons[i] 
         
        if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))) 
        { 
            // Get weapon entity 
            static wname[32] 
            get_weaponname(weaponid, wname, charsmax(wname)) 

            // Player drops the weapon and looses his bpammo 
            engclient_cmd(id, "drop", wname) 
            cs_set_user_bpammo(id, weaponid, 0) 
        } 
    } 
} 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE 
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } 
*/
Senzor is offline
SaBBa
Member
Join Date: Dec 2012
Old 06-10-2016 , 19:25   Re: Buy balrog [Help]
Reply With Quote #4

thanks guys, i had small bug with DM mod
just removed this
PHP Code:
if(g_had_balrog11[id]) 
    { 
        
client_print(id3"[AMXX] You already have Balrog11"
         
        return 
PLUGIN_HANDLED 
    

    else 
now works perfect, thanks a lot
__________________

Last edited by SaBBa; 06-10-2016 at 19:26.
SaBBa 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 15:13.


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