Ползвам кода по-долу, който постоянно показва в радара на играчите какво е състоянието на бомбата(С4): ако е изпусната от терорист например, дава "метрите" до там къде е паднала, ако е заложена: къде(на коя база) и след колко секунди ще избухне! Проблема е обаче, че след залагане така написан кода винаги показва(не ми е ясно защо), че е заложена само на база "В" ?!
Може ли да бъде оправен този проблем, но така, че дори и да се преинсталира сървъра - плъгина пак да си работи точно?
Благодаря!
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#define REFRESH_DELAY 0.2
#define UnitsToMeters(%1) (%1 * 0.0254)
new Float:gflLastCheck[ 33 ];
new bool:IsBombPlanted
new HandleHudSyncObject, gMaxPlayers
new UsedBombSite
new pointnum, g_c4timer
public plugin_init()
{
register_plugin("C4 Huds", "0.1", "N" )
pointnum = get_cvar_pointer("mp_c4timer");
register_logevent("Logevent_RoundEnd", 2, "1&Restart_Round_");
register_logevent("Logevent_RoundEnd" , 2, "1=Round_End")
register_logevent("Logevent_RoundStart", 2, "1=Round_Start");
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
register_event("TextMsg", "Event_NewRound", "a", "2=#Game_Commencing")
RegisterHam( Ham_Player_PostThink, "player", "bacon_PostThink" );
HandleHudSyncObject = CreateHudSyncObj()
gMaxPlayers = get_maxplayers( );
}
public Logevent_RoundStart()
{
g_c4timer = -1;
remove_task(652450);
IsBombPlanted = false;
}
public bacon_PostThink( id )
{
if( is_user_alive( id ) /*&& get_user_team( id ) == 1*/ )
{
new Float:flGameTime = get_gametime( );
if( flGameTime - gflLastCheck[ id ] > REFRESH_DELAY )
{
new iEntity = find_ent_by_class( -1, "weapon_c4" ), iWeaponBox;
if( iEntity > 0 && (iWeaponBox = entity_get_edict( iEntity, EV_ENT_owner )) > gMaxPlayers && is_valid_ent( iWeaponBox ) )
{
set_hudmessage( 0, 200, 0, 0.01, 0.13, 0, 6.0, REFRESH_DELAY );
ShowSyncHudMsg( id, HandleHudSyncObject, "C4 Distance: %.0f m", UnitsToMeters( entity_range( id, iWeaponBox ) ) );
gflLastCheck[ id ] = flGameTime;
}
}
}
}
public dispTime()
{
if(!IsBombPlanted)
{
remove_task(652450);
return;
}
if(g_c4timer >= 0)
{
if(g_c4timer > 13) set_hudmessage(0, 150, 0, 0.01, 0.13, 0, 1.0, 1.0, 0.01, 0.01, -1);
else if(g_c4timer > 7) set_hudmessage(150, 150, 0, 0.01, 0.13, 0, 1.0, 1.0, 0.01, 0.01, -1);
else set_hudmessage(150, 0, 0, 0.01, 0.13, 0, 1.0, 1.0, 0.01, 0.01, -1);
ShowSyncHudMsg(0, HandleHudSyncObject, "Warning - C4^nBombSite: %s^nTimer: %d",UsedBombSite == 1 ? "A" :"B", g_c4timer)
--g_c4timer;
}
}
public bomb_planted(id)
{
set_bombsite(id)
IsBombPlanted = true
g_c4timer = get_pcvar_num(pointnum);
dispTime()
set_task(1.0, "dispTime", 652450, "", 0, "b");
}
public set_bombsite(id)
{
new Float:origin[3];
pev(id,pev_origin,origin);
new ent = -1
while((ent = find_ent_in_sphere(ent,origin,300.0)))
{
if(ent == 6)
UsedBombSite = 0
else if (ent == 43)
UsedBombSite = 1
}
}
public bomb_explode()
{
IsBombPlanted = false
remove_task(652450);
}
public bomb_defused()
{
IsBombPlanted = false
remove_task(652450);
}
public Logevent_RoundEnd()
{
IsBombPlanted = false
g_c4timer = -1;
remove_task(652450);
}
public Event_NewRound()
{
IsBombPlanted = false
}