Spawn Protect

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

Метки:
  1. Xummuk97

    Xummuk97

    Сообщения:
    205
    Симпатии:
    21
    Всем привет!
    Столкнулся с такой проблемой: если возродиться, то защита опять срабатывает.
    Можете сделать так, чтобы защита больше не появлялась после 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;
    }
    }
    Заранее спасибо. :)
    --- Добавлено позже ---
    Никто не знает как это сделать?!
     
    Последнее редактирование: 14 май 2016
  2. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.573
    Симпатии:
    1.153
    @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""Сколько сек защищать игрока после рождения"_true1.0);
        
    HookEvent("player_spawn"player_spawn);
        
    HookEvent("round_start"EventRoundStartEventHookMode_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(clientProp_Data"m_takedamage"0);
            
    SetNewColor(client0255075);
            
    spawn_protect_timer[client] = CreateTimer(GetConVarFloat(spawn_protect_sec), StopProtectclient);
        }
    }

    public 
    EventRoundStart(Handle:event, const String:name[], bool:silent)

          
    iRaundTimeStart GetTime();
    }

    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(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;
        }
    }
     
    Последнее редактирование: 15 май 2016
    Xummuk97 нравится это.
  3. Xummuk97

    Xummuk97

    Сообщения:
    205
    Симпатии:
    21
    Ошибка.
    //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 ...
     
  4. AlmazON

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

    Сообщения:
    4.592
    Симпатии:
    1.998
    Заменить на:
    PHP:
    iRaundTimeStart GetTime();
     
    Xummuk97 нравится это.
  5. Xummuk97

    Xummuk97

    Сообщения:
    205
    Симпатии:
    21
    Спасибо Серый и AlmazON :)
     
  6. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.573
    Симпатии:
    1.153
  7. 666FoX666

    666FoX666

    Сообщения:
    629
    Симпатии:
    61
  8. Drumanid

    Drumanid Дилетант

    Сообщения:
    573
    Симпатии:
    196