Снова Spawn Place...

Тема в разделе "Требуется", создана пользователем Xummuk97, 19 май 2016.

  1. Xummuk97

    Xummuk97

    Сообщения:
    205
    Симпатии:
    21
    Всем привет! Недавно дополнил 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;
    }
    }
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.552
    Симпатии:
    1.987
    CS:GO или CS:S? Даже в предыдущей теме не указано... А ведь для первой игры фикс может быть очень прост.
     
  3. Xummuk97

    Xummuk97

    Сообщения:
    205
    Симпатии:
    21
    Для игры: Counter-Strike Source.
     
    Tesloz нравится это.
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.552
    Симпатии:
    1.987
    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""Сколько сек защищать игрока после рождения"_true1.0), ChangeCvar_ProtectSec);
        
    spawn_protect_sec GetConVarFloat(spawn_protect);
        
    HookEvent("player_spawn"player_spawn);
        
    HookEvent("round_start"EventRoundStartEventHookMode_PostNoCopy);
    }

    public 
    ChangeCvar_ProtectSec(Handle:convarString: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 
    1<= MaxClients; ++i)
        {
            if(
    IsClientInGame(i) && IsPlayerAlive(i)) ProtectPlayer(i);
        }
    }

    ProtectPlayer(client)
    {
        
    OnClientDisconnect_Post(client);
        
    SetEntProp(clientProp_Data"m_takedamage"0);
        
    SetNewColor(client0255075);
        
    spawn_protect_timer[client] = CreateTimer(spawn_protect_secStopProtectclient);
    }

    SetNewColor(clientrgba)
    {
        
    SetEntityRenderMode(clientRENDER_TRANSCOLOR);
        
    SetEntityRenderColor(clientrgba);
    }

    public 
    Action:StopProtect(Handle:timerany:client)
    {
        
    spawn_protect_timer[client] = INVALID_HANDLE;
        if (
    IsPlayerAlive(client))
        {
            
    SetEntProp(clientProp_Data"m_takedamage"2);
            
    SetNewColor(client255255255255);
        }
        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 нравится это.
  5. Xummuk97

    Xummuk97

    Сообщения:
    205
    Симпатии:
    21
    Спасибо тебе огромное :)