Всем привет. Прошу помощи, не могу понять уже принцип, при мгновенном убийстве сервер идёт в ребут с ошибкой (map "deathrun_arctic") IndexOfEdict: bad entity
На покаубрал эту функцию, падений нет.
На покаубрал эту функцию, падений нет.
C++:
#include < amxmodx >
#include < reapi >
#include < dhudmessage >
#include < fakemeta >
#include <hamsandwich>
#include < dr_mode >
#define GAME_NAME "Шпион"
#define PERCENT_HEALTH 50
#define MG_KILL 20.0
new hash, Float: sOrigins[3], HookChain:gSpawned, gTrace, tId, Float: gKill;
public plugin_init(){
register_plugin("DR:Game Spy", "1.0", "PAffAEJIkA :3");
hash = dr_reg_game(GAME_NAME);
DisableHookChain(gSpawned = RegisterHookChain(RG_CBasePlayer_Spawn, "PlayerSpawned", 1));
new iEnt = rg_find_ent_by_class(-1, "info_player_start");
get_entvar(iEnt, var_origin, sOrigins);
}
public DR_Games(id, gameid){
if(hash == gameid){
dr_set_gameid(hash);
dr_set_button(false);
dr_set_bhop(true);
dr_set_block(hash, 4);
EnableHookChain(gSpawned);
gTrace = register_forward(FM_TraceLine, "fw_TraceLine_Post", 0);
tId = id;
start_game();
}
}
public DR_StopGame(gameid){
if(hash == gameid){
DisableHookChain(gSpawned);
unregister_forward(FM_TraceLine, gTrace);
set_invis(tId, false);
dr_set_active_shop(tId, true);
tId = false;
}
}
public start_game(){
new players[32], count;
get_players(players, count, "ach");
new szHealth = (count - 1) * PERCENT_HEALTH;
set_entvar(tId, var_health, float(szHealth));
for(new i = 0, player, TeamName: gTeam; i < count; i ++){
player = players[i];
gTeam = get_member(player, m_iTeam);
if(gTeam != TEAM_CT)
continue;
give_weapon(player);
}
set_invis(tId, true);
set_entvar(tId, var_origin, sOrigins);
dr_set_active_shop(tId, false);
gKill = 0.0;
set_dhudmessage(random_num(100, 255), random_num(100, 255), random_num(100, 255), -1.0, 0.25, 0, 6.0, 8.0, 1.0, 1.5);
show_dhudmessage(0, "На базу КТ попал шпион!");
}
public fw_TraceLine_Post (Float:v1[3], Float:v2[3], noMonsters, id){
if(id != tId)
return HC_CONTINUE;
client_print(id, print_center, "Мгновенное убийство[E]: %s", gKill == 0.0 ? "Доступно" : "Недоступно");
if(gKill > 0.0){
if(gKill < get_gametime())
gKill = 0.0;
else
return HC_CONTINUE;
}
if(~pev(id, pev_button) & IN_USE)
return HC_CONTINUE;
new tHit = get_tr(TR_pHit);
if(!(1 <= tHit < 33) || !is_user_alive(tHit))
return HC_CONTINUE;
gKill = get_gametime() + MG_KILL;
ExecuteHamB(Ham_Killed, tHit, id, 2);
return HC_CONTINUE;
}
public PlayerSpawned(id)
give_weapon(id);
set_invis(id, status){
if(status){
set_entvar(id, var_rendermode, kRenderFxGlowShell);
set_entvar(id, var_renderamt, 0);
}else{
set_entvar(id, var_rendermode, kRenderNormal);
set_entvar(id, var_renderamt, 100);
}
set_entvar(id, var_rendercolor, {0.0, 0.0, 0.0});
set_entvar(id, var_renderfx, kRenderFxGlowShell);
}
give_weapon(id){
if(!is_user_alive(id))
return;
rg_give_item(id, "weapon_usp", GT_APPEND);
rg_set_user_bpammo(id, WeaponIdType:CSW_USP, 200);
}