Spawn Protect

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

Xummuk97

Programmer
Сообщения
309
Реакции
75
Всем привет!
Столкнулся с такой проблемой: если возродиться, то защита опять срабатывает.
Можете сделать так, чтобы защита больше не появлялась после 12 секунд, после начала раунда?
#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;

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


///


public player_spawn(Handle:event, const String:name[], bool:silent)
{
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);
}

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;
}
}
Заранее спасибо. :)
--- Добавлено позже ---
Никто не знает как это сделать?!
 
Последнее редактирование:

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
@Xummuk97, ну он и не рассчитан на один раз защиту, он защищает при каждом спавне игрока.

PHP:
#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+12)
    {
        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;
    }
}
 
Последнее редактирование:

Xummuk97

Programmer
Сообщения
309
Реакции
75
Ошибка.
//SourceMod Batch Compiler
// by the SourceMod Dev Team


//// spawn_protect.sp
// C:\servers\css\SURF\cstrike\addons\sourcemod\scripting\spawn_protect.sp(37)
: error 035: argument type mismatch (argument 1)
//
// 1 Error.
//
// Compilation Time: 0,33 sec
// ----------------------------------------

Press enter to exit ...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу