TheRunningMan
Участник
- Сообщения
- 147
- Реакции
- 10
И снова здравствуйте!))
В общем, очень давно уже пытаюсь сделать плагин Zombie Reloaded убивающий живых людей если время раунда вышло, но в первом моем коде, на тестовом сервере все норм, на котором надо не пашет, второй код, тоже самое, хотя и получился гораздо проще, сейчас я уже близок к истине, но есть баги, такие как убийство после начала раунда, или чуть раньше чем надо.....
Короче я уже не могу))) Придется выложить код, чтобы разобраться, хотя мне этого не очень хочется))
Тамеры меня доканали, надо с ними разобраться че кого, также у меня есть другой плагин , суть которого заключается в том, что зомбы имеют один Отравленный дротик(мое название:) ) , который они кидают в человека, при этом у жертвы, искажается экран, меняется разными цветами, НО и очень больше НО очень часто бывает что если тебя травят, то эфект искажения то появляется то исчезает, либо вообще сам эфект отравления мелькнет на секунду и все, как будто таймер запустился и тут же убился...
В общем, очень давно уже пытаюсь сделать плагин Zombie Reloaded убивающий живых людей если время раунда вышло, но в первом моем коде, на тестовом сервере все норм, на котором надо не пашет, второй код, тоже самое, хотя и получился гораздо проще, сейчас я уже близок к истине, но есть баги, такие как убийство после начала раунда, или чуть раньше чем надо.....
Короче я уже не могу))) Придется выложить код, чтобы разобраться, хотя мне этого не очень хочется))
PHP:
public OnPluginStart()
{
HookEvent("round_freeze_end", RoundStart);
HookEvent("round_end", roundend);
HookEvent("player_spawn", pspawn);
}
public Action:RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
getroundtime = (GetConVarFloat(FindConVar("mp_roundtime"))*60.0);
fakeround = (getroundtime - 2.0);
timekill =false;
for(new j = 1; j <= MaxClients; j++)
{
if (IsClientInGame(j))
{
if (IsPlayerAlive(j))
{
TimerKill[j] = CreateTimer(fakeround, Kill, j);
PrintToChat (j, "Timer");
}
}
}
PrintToChatAll ("getroundtime %f", getroundtime);
PrintToChatAll ("fakeround %f",fakeround);
}
public pspawn(Handle:event,const String:name[],bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (IsClientInGame(client))
{
if (IsPlayerAlive(client))
{
if (ZR_IsClientHuman(client))
{
if (TimerKill[client] != INVALID_HANDLE) {
KillTimer(TimerKill[client]);
TimerKill[client] = INVALID_HANDLE;
}
}
}
}
}
public Action: Kill(Handle:timer, any: client)
{
KillHumans();
}
KillHumans()
{
KillAllTimers();
if (timekill == true)
{
for(new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i))
{
if (IsPlayerAlive(i))
{
if(ZR_IsClientZombie(i))
{
SlapPlayer(i, 0, false);
PrintToChat(i,"Slap 0");
}else
{
SlapPlayer(i, 300, false);
PrintToChat(i,"Slap 300");
}
}
}
}
}
}
KillAllTimers()
{
for(new c = 1; c <= MaxClients; c++)
{
if (IsClientInGame(c))
{
if (IsPlayerAlive(c))
{
if (TimerKill[c] != INVALID_HANDLE) {
KillTimer(TimerKill[c]);
TimerKill[c] = INVALID_HANDLE;
}
}
}
}
timekill = true;
}
public roundend(Handle:event, const String:name[], bool:dontBroadcast)
{
KillAllTimers();
}
public OnClientDisconnect(client)
{
if (TimerKill[client] != INVALID_HANDLE) {
KillTimer(TimerKill[client]);
TimerKill[client] = INVALID_HANDLE;
}
}
Тамеры меня доканали, надо с ними разобраться че кого, также у меня есть другой плагин , суть которого заключается в том, что зомбы имеют один Отравленный дротик(мое название:) ) , который они кидают в человека, при этом у жертвы, искажается экран, меняется разными цветами, НО и очень больше НО очень часто бывает что если тебя травят, то эфект искажения то появляется то исчезает, либо вообще сам эфект отравления мелькнет на секунду и все, как будто таймер запустился и тут же убился...