Участник
Пользователь
- Сообщения
- 63
- Реакции
- 39
Hello i am using gunxpmod + umbrella swarm. I get an Problem, the upgrade works, but when u respawned or next round starts then you lost the design of the model and get the original XM014 back. I hope anyone can help me to fix this problem. I dont use zombie plague... here is the code and then gxm_shop inc file what i am using.
i tried to remove complete:
Problem is still there.
Include File:
Код:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <gxm_shop>
#define PLUGIN "Balrog-XI"
#define VERSION "1.0"
#define AUTHOR "KaimyneliS"
#define V_MODEL "models/gunxp/v_balrog11_2.mdl"
#define P_MODEL "models/gunxp/p_balrog11.mdl"
#define W_MODEL "models/gunxp/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 1.0
#define DAMAGE 52
#define FIRE_DAMAGE 500
#define BPAMMO 56
#define CHARGE_COND_AMMO 4
#define MAX_SPECIAL_AMMO 7
#define SPECIALSHOOT_DELAY 0.35
#define FIRE_SPEED 750
#define FIRE_CLASSNAME "balrog11_fire"
#define SYSTEM_CLASSNAME "balrog11_firesystem"
// 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_balrog11
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
new ItemIndex;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_forward(FM_Think, "fw_Think")
register_forward(FM_Touch, "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()
ItemIndex = gxm_register_gun("Balrog-XI (XM1014)", 4200, 40, 0, 0, "CSW_XM1014")
}
public gxm_gun_selected(id, itemid) {
if(ItemIndex == itemid)
{
g_had_balrog11[id] = true;
}
}
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 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 zp_extra_item_selected(id, itemid)
{
if(itemid == g_balrog11) Get_Balrog11(id)
}
public zp_user_infected_post(id) Remove_Balrog11(id)
public zp_round_ended()
{
for(new i = 0; i < g_MaxPlayers; i++)
Remove_Balrog11(i)
}
public Get_Balrog11(id)
{
if(!is_user_alive(id))
return
drop_weapons(id, 1)
Remove_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(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)
}
public Remove_Balrog11(id)
{
if(!is_user_connected(id))
return
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_NORM)
return FMRES_SUPERCEDE
}
return FMRES_HANDLED
}
public fw_Think(ent)
{
if(!pev_valid(ent))
return
static Classname[32]; pev(ent, pev_classname, Classname, sizeof(Classname))
if(equal(Classname, FIRE_CLASSNAME))
{
static Float:fFrame; pev(ent, pev_frame, fFrame)
fFrame += 1.5
fFrame = floatmin(21.0, fFrame)
set_pev(ent, pev_frame, fFrame)
set_pev(ent, pev_nextthink, get_gametime() + 0.05)
// time remove
static Float:fTimeRemove, Float:Amount
pev(ent, pev_fuser1, fTimeRemove)
pev(ent, pev_renderamt, Amount)
if(get_gametime() >= fTimeRemove)
{
Amount -= 10.0
set_pev(ent, pev_renderamt, Amount)
if(Amount <= 15.0) engfunc(EngFunc_RemoveEntity, ent)
}
} else if(equal(Classname, SYSTEM_CLASSNAME)) {
static Float:Origin[3], Float:Scale
pev(ent, pev_origin, Origin)
pev(ent, pev_scale, Scale)
Scale += 0.1
Scale = floatmin(1.5, Scale)
set_pev(ent, pev_scale, Scale)
Create_Fire(pev(ent, pev_owner), Origin, Scale, 0.0)
set_pev(ent, pev_nextthink, get_gametime() + 0.05)
// time remove
static Float:fTimeRemove
pev(ent, pev_fuser1, fTimeRemove)
if(get_gametime() >= fTimeRemove) engfunc(EngFunc_RemoveEntity, ent)
}
}
public fw_Touch(ent, id)
{
if(!pev_valid(ent))
return
static Classname[32]
pev(ent, pev_classname, Classname, sizeof(Classname))
if(!equal(Classname, SYSTEM_CLASSNAME))
return
if(pev_valid(id))
{
static Classname2[32]
pev(id, pev_classname, Classname2, sizeof(Classname2))
if(equal(Classname2, SYSTEM_CLASSNAME) || equal(Classname2, FIRE_CLASSNAME)) return
else if(is_user_alive(id))
{
if(pev(ent, pev_iuser3) == 1 && cs_get_user_team(id) != CS_TEAM_T) ExecuteHamB(Ham_TakeDamage, id, 0, pev(ent, pev_owner), float(FIRE_DAMAGE) / random_float(3.0, 5.0), DMG_BULLET)
else if(pev(ent, pev_iuser3) == 2 && cs_get_user_team(id) != CS_TEAM_CT) ExecuteHamB(Ham_TakeDamage, id, 0,pev(ent, pev_owner), float(FIRE_DAMAGE) / random_float(3.0, 5.0), DMG_BULLET)
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) / random_float(1.5, 2.5))
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_NORM)
Create_FireSystem(id)
}
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)
{
static Float:StartOrigin[3], Float:EndOrigin[5][3]
get_weapon_attachment(id, StartOrigin, 40.0)
// Left
get_position(id, 512.0, -140.0, 0.0, EndOrigin[0])
get_position(id, 512.0, -70.0, 0.0, EndOrigin[1])
// Center
get_position(id, 512.0, 0.0, 0.0, EndOrigin[2])
// Right
get_position(id, 512.0, 70.0, 0.0, EndOrigin[3])
get_position(id, 512.0, 140.0, 0.0, EndOrigin[4])
// Create Fire
for(new i = 0; i < 5; i++) Create_System(id, StartOrigin, EndOrigin[i], float(FIRE_SPEED))
}
public Create_System(id, Float:StartOrigin[3], Float:EndOrigin[3], Float:Speed)
{
static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
// set info for ent
set_pev(Ent, pev_movetype, MOVETYPE_FLY)
set_pev(Ent, pev_rendermode, kRenderTransAdd)
set_pev(Ent, pev_renderamt, 0.0)
set_pev(Ent, pev_fuser1, get_gametime() + 0.75) // time remove
set_pev(Ent, pev_scale, 0.1)
set_pev(Ent, pev_nextthink, get_gametime() + 0.05)
set_pev(Ent, pev_classname, SYSTEM_CLASSNAME)
engfunc(EngFunc_SetModel, Ent, WeaponResources[0])
set_pev(Ent, pev_mins, Float:{-16.0, -16.0, -16.0})
set_pev(Ent, pev_maxs, Float:{16.0, 16.0, 16.0})
set_pev(Ent, pev_origin, StartOrigin)
set_pev(Ent, pev_gravity, 0.01)
set_pev(Ent, pev_solid, SOLID_TRIGGER)
set_pev(Ent, pev_owner, id)
static Team;
if(cs_get_user_team(id) == CS_TEAM_T) Team = 1
else if(cs_get_user_team(id) == CS_TEAM_CT) Team = 2
set_pev(Ent, pev_iuser3, Team)
set_pev(Ent, pev_frame, 0.0)
static Float:Velocity[3]
get_speed_vector(StartOrigin, EndOrigin, Speed, Velocity)
set_pev(Ent, pev_velocity, Velocity)
}
public Create_Fire(id, Float:Origin[3], Float:Scale, Float:Frame)
{
static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
// set info for ent
set_pev(Ent, pev_movetype, MOVETYPE_FLY)
set_pev(Ent, pev_rendermode, kRenderTransAdd)
set_pev(Ent, pev_renderamt, 255.0)
set_pev(Ent, pev_fuser1, get_gametime() + 0.1) // time remove
set_pev(Ent, pev_scale, Scale)
set_pev(Ent, pev_nextthink, get_gametime() + 0.05)
set_pev(Ent, pev_classname, FIRE_CLASSNAME)
engfunc(EngFunc_SetModel, Ent, WeaponResources[0])
set_pev(Ent, pev_mins, Float:{-10.0, -10.0, -10.0})
set_pev(Ent, pev_maxs, Float:{10.0, 10.0, 10.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_owner, id)
set_pev(Ent, pev_frame, Frame)
}
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)
}
}
}
i tried to remove complete:
Код:
public zp_user_infected_post(id) Remove_Balrog11(id)
public zp_round_ended()
{
for(new i = 0; i < g_MaxPlayers; i++)
Remove_Balrog11(i)
}
Include File:
Код:
#if defined _gxm_shop_included
#endinput
#endif
#define _gxm_shop_included
native gxm_register_gun( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_item( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_pistol( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_knife( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
native gxm_register_grenade( const Name[ ], const XP, const Level = 0, const VIP = 0, const Round = 0, const Type[ ] = 0);
forward gxm_gun_selected( Player, ItemIndex);
forward gxm_item_selected( Player, ItemIndex);
forward gxm_pistol_selected( Player, ItemIndex);
forward gxm_knife_selected( Player, ItemIndex);
forward gxm_grenade_selected( Player, ItemIndex);