Создание таймера

Broudy Rose

Участник
Сообщения
157
Реакции
22
Господи, прочитал статей 5 по созданию таймера на SP, так ничего и не получилось сделать :/

Сделайте, пожалуйста, чтобы SetEntityRenderColor красил только через Х секунд после SpawnEvent.

Сил уже нет, уже вариаций 20 перепробовал)

PHP:
#include <sourcemod>
#include <cstrike>

//CT
new Handle:h_Red = INVALID_HANDLE;
new Handle:h_Green = INVALID_HANDLE;
new Handle:h_Blue = INVALID_HANDLE;
new Handle:h_Alpha = INVALID_HANDLE;
//T
new Handle:h_RedT = INVALID_HANDLE;
new Handle:h_GreenT = INVALID_HANDLE;
new Handle:h_BlueT = INVALID_HANDLE;
new Handle:h_AlphaT = INVALID_HANDLE;

public Plugin:myinfo =
{
    name = "Team_Colors",
    author = "ShadowDragon",
    description = "Change Team Colors"
};

public OnPluginStart()
{
    //convar
    h_Red = CreateConVar("sm_Red", "0", "255 = strong 0 = non");
    h_Green = CreateConVar("sm_Green", "0", "255 = strong 0 = non");
    h_Blue = CreateConVar("sm_Blue", "255", "255 = strong 0 = non");
    h_Alpha = CreateConVar("sm_Alpha", "255", "255 = strong 0 = non");

    h_RedT = CreateConVar("sm_RedT", "255", "255 = strong 0 = non");
    h_GreenT = CreateConVar("sm_GreenT", "0", "255 = strong 0 = non");
    h_BlueT = CreateConVar("sm_BlueT", "0", "255 = strong 0 = non");
    h_AlphaT = CreateConVar("sm_AlphaT", "255", "255 = strong 0 = non");

    HookEvent("player_spawn",SpawnEvent);
}

public Action:SpawnEvent(Handle:event,const String:name[],bool:dontBroadcast)
{
    new client_id = GetEventInt(event, "userid");
    new client = GetClientOfUserId(client_id);
    //spawn color
    if (GetClientTeam(client) == CS_TEAM_CT)
    {    
        new Red = GetConVarInt(h_Red);
        new Green = GetConVarInt(h_Green);
        new Blue = GetConVarInt(h_Blue);
        new Alpha = GetConVarInt(h_Alpha);
        SetEntityRenderColor(client, Red, Green, Blue, Alpha);
    }
    
    if (GetClientTeam(client) == CS_TEAM_T)
    {
        new RedT = GetConVarInt(h_RedT);
        new GreenT = GetConVarInt(h_GreenT);
        new BlueT = GetConVarInt(h_BlueT);
        new AlphaT = GetConVarInt(h_AlphaT);
        SetEntityRenderColor(client, RedT, GreenT, BlueT, AlphaT);
    }
}


P.S. Возможен ли из-за него краш сервера?
Мне кажется сервер падает из-за этого плагина.
В нём могут быть ошибки?
Вроде и так простой код
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@giSh5297, он говорит тебе, что ты забыл использовать таймер.

PHP:
#include <sourcemod>
#include <cstrike>

//CT
new Handle:h_Red = INVALID_HANDLE;
new Handle:h_Green = INVALID_HANDLE;
new Handle:h_Blue = INVALID_HANDLE;
new Handle:h_Alpha = INVALID_HANDLE;
//T
new Handle:h_RedT = INVALID_HANDLE;
new Handle:h_GreenT = INVALID_HANDLE;
new Handle:h_BlueT = INVALID_HANDLE;
new Handle:h_AlphaT = INVALID_HANDLE;

public Plugin:myinfo =
{
    name = "Team_Colors",
    author = "ShadowDragon",
    description = "Change Team Colors"
};

public OnPluginStart()
{
    //convar
    h_Red = CreateConVar("sm_Red", "0", "255 = strong 0 = non");
    h_Green = CreateConVar("sm_Green", "0", "255 = strong 0 = non");
    h_Blue = CreateConVar("sm_Blue", "255", "255 = strong 0 = non");
    h_Alpha = CreateConVar("sm_Alpha", "255", "255 = strong 0 = non");

    h_RedT = CreateConVar("sm_RedT", "255", "255 = strong 0 = non");
    h_GreenT = CreateConVar("sm_GreenT", "0", "255 = strong 0 = non");
    h_BlueT = CreateConVar("sm_BlueT", "0", "255 = strong 0 = non");
    h_AlphaT = CreateConVar("sm_AlphaT", "255", "255 = strong 0 = non");

    HookEvent("player_spawn",SpawnEvent);
}

public SpawnEvent(Handle:event,const String:name[],bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if(!client)
        return;
   
    CreateTimer(0.1, Timer_PostSpawn, GetClientUserId(client));
}

public Action:Timer_PostSpawn(Handle:timer, any:userid)
{
    new client = GetClientOfUserId(userid);
    if(!client || !IsClientInGame(client) || !IsPlayerAlive(client))
        return Plugin_Stop;
   
    switch(GetClientTeam(client))
    {
        case CS_TEAM_T:
        {
            new RedT = GetConVarInt(h_RedT);
            new GreenT = GetConVarInt(h_GreenT);
            new BlueT = GetConVarInt(h_BlueT);
            new AlphaT = GetConVarInt(h_AlphaT);
           
            SetEntityRenderMode(client, RENDER_TRANSCOLOR);
            SetEntityRenderColor(client, RedT, GreenT, BlueT, AlphaT);
        }
       
        case CS_TEAM_CT:
        {
            new Red = GetConVarInt(h_Red);
            new Green = GetConVarInt(h_Green);
            new Blue = GetConVarInt(h_Blue);
            new Alpha = GetConVarInt(h_Alpha);
           
            SetEntityRenderMode(client, RENDER_TRANSCOLOR);
            SetEntityRenderColor(client, Red, Green, Blue, Alpha);
        }
    }
   
    return Plugin_Stop;
}
Но вряд ли сервер будет из-за этого падать.
 
Последнее редактирование:

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
@Саша Шеин, как получится сделать таймер, если он его даже не создаёт? Если пытаешься сделать, то покажи как делаешь, а мы поправим.
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
Оффтоп
Ну просто человек не очень хотел показывать свои ошибки или настолько надоело, что даже не подумал об этом..
 
Сверху Снизу