Снова Spawn Place...

Статус
В этой теме нельзя размещать новые ответы.

Xummuk97

Programmer
Сообщения
309
Реакции
75
Всем привет! Недавно дополнил Spawn Place этим - защита не действует, если прошло X секунд. В 1 раунде всё нормально, а во втором её просто нету(
Сделайте пожалуйста фикс плагина.
#pragma semicolon 1
#include <sourcemod>

public Plugin:myinfo =
{
name = "Spawn Protect",
author = "wS / Schmidt",
version = "1.1",
url = ""
};

new Handle:spawn_protect_timer[MAXPLAYERS + 1];
new Handle:spawn_protect_sec;
new iRaundTimeStart;

public OnPluginStart()
{
spawn_protect_sec = CreateConVar("spawn_protect_sec", "10", "Сколько сек защищать игрока после рождения", _, true, 1.0);
HookEvent("player_spawn", player_spawn);
HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy);
}

public player_spawn(Handle:event, const String:name[], bool:silent)
{
if(GetTime() < iRaundTimeStart+10)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
Kill_Protect_Timer(client);
SetEntProp(client, Prop_Data, "m_takedamage", 0);
SetNewColor(client, 0, 255, 0, 75);
spawn_protect_timer[client] = CreateTimer(GetConVarFloat(spawn_protect_sec), StopProtect, client);
}
}

public EventRoundStart(Handle:event, const String:name[], bool:silent)
{
iRaundTimeStart = GetTime();
}

SetNewColor(client, r, g, b, a)
{
SetEntityRenderMode(client, RENDER_TRANSCOLOR);
SetEntityRenderColor(client, r, g, b, a);
}

public Action:StopProtect(Handle:timer, any:client)
{
spawn_protect_timer[client] = INVALID_HANDLE;
if (IsPlayerAlive(client))
{
SetEntProp(client, Prop_Data, "m_takedamage", 2);
SetNewColor(client, 255, 255, 255, 255);
}
return Plugin_Stop;
}

public OnClientDisconnect(client)
{
Kill_Protect_Timer(client);
}

Kill_Protect_Timer(client)
{
if (spawn_protect_timer[client] != INVALID_HANDLE)
{
KillTimer(spawn_protect_timer[client]);
spawn_protect_timer[client] = INVALID_HANDLE;
}
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
В 1 раунде всё нормально, а во втором её просто нету
PHP:
#pragma semicolon 1
#include <sourcemod>

public Plugin:myinfo =
{
    name = "Spawn Protect",
    author = "wS / Schmidt",
    version = "1.1new",
    url = ""
};

new Handle:spawn_protect_timer[MAXPLAYERS + 1];
new Float:spawn_protect_sec;
new iRaundTimeStart;

public OnPluginStart()
{
	decl Handle:spawn_protect;
	HookConVarChange(spawn_protect = CreateConVar("spawn_protect_sec", "10", "Сколько сек защищать игрока после рождения", _, true, 1.0), ChangeCvar_ProtectSec);
	spawn_protect_sec = GetConVarFloat(spawn_protect);
	HookEvent("player_spawn", player_spawn);
	HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy);
}

public ChangeCvar_ProtectSec(Handle:convar, String:oldValue[], String:newValue[]) spawn_protect_sec = GetConVarFloat(convar);

public player_spawn(Handle:event, const String:name[], bool:silent)
{
	if(GetTime() < iRaundTimeStart)
	{
		ProtectPlayer(GetClientOfUserId(GetEventInt(event, "userid")));
	}
}

public EventRoundStart(Handle:event, const String:name[], bool:silent)
{
	iRaundTimeStart = GetTime() + 12;
	for (new i = 1; i <= MaxClients; ++i)
	{
		if(IsClientInGame(i) && IsPlayerAlive(i)) ProtectPlayer(i);
	}
}

ProtectPlayer(client)
{
	OnClientDisconnect_Post(client);
	SetEntProp(client, Prop_Data, "m_takedamage", 0);
	SetNewColor(client, 0, 255, 0, 75);
	spawn_protect_timer[client] = CreateTimer(spawn_protect_sec, StopProtect, client);
}

SetNewColor(client, r, g, b, a)
{
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, r, g, b, a);
}

public Action:StopProtect(Handle:timer, any:client)
{
    spawn_protect_timer[client] = INVALID_HANDLE;
    if (IsPlayerAlive(client))
    {
        SetEntProp(client, Prop_Data, "m_takedamage", 2);
        SetNewColor(client, 255, 255, 255, 255);
    }
    return Plugin_Stop;
}

public OnClientDisconnect_Post(client)
{
    if (spawn_protect_timer[client] != INVALID_HANDLE)
    {
        KillTimer(spawn_protect_timer[client]);
        spawn_protect_timer[client] = INVALID_HANDLE;
    }
}
 

Xummuk97

Programmer
Сообщения
309
Реакции
75
PHP:
#pragma semicolon 1
#include <sourcemod>

public Plugin:myinfo =
{
    name = "Spawn Protect",
    author = "wS / Schmidt",
    version = "1.1new",
    url = ""
};

new Handle:spawn_protect_timer[MAXPLAYERS + 1];
new Float:spawn_protect_sec;
new iRaundTimeStart;

public OnPluginStart()
{
    decl Handle:spawn_protect;
    HookConVarChange(spawn_protect = CreateConVar("spawn_protect_sec", "10", "Сколько сек защищать игрока после рождения", _, true, 1.0), ChangeCvar_ProtectSec);
    spawn_protect_sec = GetConVarFloat(spawn_protect);
    HookEvent("player_spawn", player_spawn);
    HookEvent("round_start", EventRoundStart, EventHookMode_PostNoCopy);
}

public ChangeCvar_ProtectSec(Handle:convar, String:oldValue[], String:newValue[]) spawn_protect_sec = GetConVarFloat(convar);

public player_spawn(Handle:event, const String:name[], bool:silent)
{
    if(GetTime() < iRaundTimeStart)
    {
        ProtectPlayer(GetClientOfUserId(GetEventInt(event, "userid")));
    }
}

public EventRoundStart(Handle:event, const String:name[], bool:silent)
{
    iRaundTimeStart = GetTime() + 12;
    for (new i = 1; i <= MaxClients; ++i)
    {
        if(IsClientInGame(i) && IsPlayerAlive(i)) ProtectPlayer(i);
    }
}

ProtectPlayer(client)
{
    OnClientDisconnect_Post(client);
    SetEntProp(client, Prop_Data, "m_takedamage", 0);
    SetNewColor(client, 0, 255, 0, 75);
    spawn_protect_timer[client] = CreateTimer(spawn_protect_sec, StopProtect, client);
}

SetNewColor(client, r, g, b, a)
{
    SetEntityRenderMode(client, RENDER_TRANSCOLOR);
    SetEntityRenderColor(client, r, g, b, a);
}

public Action:StopProtect(Handle:timer, any:client)
{
    spawn_protect_timer[client] = INVALID_HANDLE;
    if (IsPlayerAlive(client))
    {
        SetEntProp(client, Prop_Data, "m_takedamage", 2);
        SetNewColor(client, 255, 255, 255, 255);
    }
    return Plugin_Stop;
}

public OnClientDisconnect_Post(client)
{
    if (spawn_protect_timer[client] != INVALID_HANDLE)
    {
        KillTimer(spawn_protect_timer[client]);
        spawn_protect_timer[client] = INVALID_HANDLE;
    }
}
Спасибо тебе огромное :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу