Дропнутое Оружие удаляеться через время
Но почему Дропнутая Бомба сразу удаляеться с Земли на Линуксе?
Прошу помощи,что-бы оставалась всегда лежать...
P.S.На Виндовсе всё впорядке ( не удаляеться )
- Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define STEP 10.0
#define VERTICAL_SPEED 20.0
#define HORISONTAL_SPEED 60.0
#define EXCLUDE_BOMB
enum (+= 1) {
STATUS_NONE = 0,
STATUS_EFFECT,
STATUS_KILL
}
new g_CvarTimeout;
#if defined EXCLUDE_BOMB
#include <cstrike>
new giStartEnt, giMaxEntities
#endif
public plugin_init() {
register_plugin("Remove Drop Weapon", "0.3", "GordonFreeman & F@nt0M");
register_forward(FM_SetModel, "CWeaponBox_SetModel")
RegisterHam(Ham_Think,"weaponbox","fw_WeaponBoxThink")
RegisterHam(Ham_Think, "item_thighpack", "fw_WeaponBoxThink")
RegisterHam(Ham_Think,"weapon_shield","fw_WeaponBoxThink")
g_CvarTimeout = register_cvar("weapon_time", "30.0");
#if defined EXCLUDE_BOMB
giStartEnt = get_maxplayers() + 1
giMaxEntities = global_get( glb_maxEntities )
#endif
}
public CWeaponBox_SetModel(const ent) {
if(!pev_valid(ent))
return FMRES_IGNORED;
static szClassName[32]
pev(ent, pev_classname, szClassName, charsmax(szClassName))
if(equal(szClassName, "weaponbox")) {
#if defined EXCLUDE_BOMB
new i
for( i = giStartEnt; i < giMaxEntities; i++ ) {
// search for an entity that is owned by the weaponbox, this should be a weapon_* entity
if( pev_valid(i) && pev( i, pev_owner ) == ent ) {
if( cs_get_weapon_id(i) == CSW_C4 )
return FMRES_IGNORED;
else
break;
}
}
#endif
set_pev(ent, pev_impulse, STATUS_NONE);
set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_CvarTimeout));
}
else if(equal(szClassName, "item_thighpack")) {
set_pev(ent, pev_impulse, STATUS_NONE);
set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_CvarTimeout));
}
else if(equal(szClassName, "weapon_shield")) {
set_task( 0.1, "ChangeNextThinkTime", ent )
}
return FMRES_IGNORED;
}
public ChangeNextThinkTime( const ent ) {
/* 100 ms is too big time comparing with server FPS.
So we must make sure that shield entity still exists. */
if( pev_valid(ent) ) {
static szClassName[32]
pev(ent, pev_classname, szClassName, charsmax(szClassName))
if(equal(szClassName, "weapon_shield")) {
set_pev(ent, pev_impulse, STATUS_NONE);
set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_CvarTimeout));
}
}
}
public fw_WeaponBoxThink(ent) {
if (!pev_valid(ent)) {
return HAM_IGNORED;
}
switch(pev(ent, pev_impulse)) {
case STATUS_NONE:{
set_pev(ent, pev_movetype, MOVETYPE_FLY);
set_pev(ent, pev_solid, SOLID_NOT);
set_pev(ent, pev_rendermode, kRenderTransAlpha);
set_pev(ent, pev_renderamt, 100.0);
set_pev(ent, pev_velocity, Float:{0.0, 0.0, VERTICAL_SPEED});
set_pev(ent, pev_avelocity, Float:{0.0, HORISONTAL_SPEED, 0.0})
set_pev(ent, pev_impulse, STATUS_EFFECT);
}
case STATUS_EFFECT: {
if (pev(ent, pev_renderamt) > 0.0) {
set_pev(ent, pev_renderamt, floatmax(0.0, pev(ent, pev_renderamt) - STEP));
} else {
set_pev(ent, pev_flags, FL_KILLME);
set_pev(ent, pev_impulse, STATUS_KILL);
}
}
}
set_pev(ent,pev_nextthink,get_gametime() + 0.1)
return HAM_SUPERCEDE;
}