Удаляем все что связано с ZombieReloaded и то что не нужно во все(имхо):
#include <zombiereloaded>
bool first;
public void Event_RoundStart(Event event, char[] name, bool dontBroadcast)
{
first = true;
}
public ZR_OnClientInfected(int client,int attacker, bool motherInfect, bool respawnOverride, bool respawn)
{
if(first)
{
// create glow models in first infection for prevent crash on round start (optimization)
first = false;
for( int i = 1; i <= MaxClients; i++ )
if (IsClientInGame(i) && IsPlayerAlive(i) && ZR_IsClientHuman(i))SetupGlowSkin(i);
}
// zombies dont need to have a glow model
UnhookGlow(client);
}
public ZR_OnClientHumanPost(int client, bool respawn, bool protect)
{
// remove and re create all glow models for prevent this bug https://forums.alliedmods.net/showthread.php?t=280484
for( int i = 1; i <= MaxClients; i++ )
if (IsClientInGame(i) && IsPlayerAlive(i) && ZR_IsClientHuman(i))
{
CPS_RemoveSkin(client);
SetupGlowSkin(i);
}
}
Заменить:
public void OnPluginStart()
{
CreateConVar("zr_glowing_version", DATA, "plugin info", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD);
HookEvent("round_start", Event_RoundStart);
}
>>
public void OnPluginStart()
{
CreateConVar("zr_glowing_version", DATA, "plugin info", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD);
}
//Who can see the glow if vaild
public Action OnSetTransmit_GlowSkin(int iSkin, int client)
{
/* if(CPS_HasSkin(client) && EntRefToEntIndex(CPS_GetSkin(client)) == iSkin)
{
return Plugin_Handled;
}*/
if (!IsPlayerAlive(client))
return Plugin_Handled;
if (ZR_IsClientZombie(client))
return Plugin_Continue;
return Plugin_Handled;
}
>>
//Who can see the glow if vaild
public Action OnSetTransmit_GlowSkin(int iSkin, int client)
{
/* if(CPS_HasSkin(client) && EntRefToEntIndex(CPS_GetSkin(client)) == iSkin)
{
return Plugin_Handled;
}*/
if (!IsPlayerAlive(client))
return Plugin_Handled;
return Plugin_Handled;
Дальше опять мой не любимый таймер, что б его...
Добавь в код, после всех манипуляций выше. (Нужно ли удалять таймер?)
Кое кто опять в теме отчитает :biggrin:
#define TimeStart 120.0 // Через 2 минуты будет включен glow effect CT
#define TimeEnd 10.0 // Через 10 секунд будет выключен glow effect CT
public void OnMapStart()
{
CreateTimer(TimeStart, TimerGlowStart, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); // Первый таймер(создание)
}
public Action TimerGlowStart(Handle timer)
{
for(int i = 1; i <= MaxClients; ++i) // Цикл игроков
{
if(IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3) // Проверка есть ли игрок в игре, жив ли он и играет ли за кт?
{
SetupGlowSkin(i); // Установили Glow effect
CreateTimer(TimeEnd, TimerGlowEnd, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); // Второй таймер (уничтожение)
}
}
}
public Action TimerGlowEnd(Handle timer)
{
for(int i = 1; i <= MaxClients; ++i)
{
if(IsClientInGame(i))
{
UnhookGlow(i); // Уничтожили glow effect
}
}
}
Сам код я не тестировал( не проверял на сервере, лень... ), но по идеи должно работать. Внесите поправки, если что не так :ab: