Применить цвет к модельке игрока

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #1
Я тут нарыл старый плагин на покраску игроков, он чет не робит.
Я знаю тут есть умельцы, кто подскажет в чем траблы, игра CS:GO.
C-подобный:
#include <cstrike>

#define TEAM_CT 3
#define TEAM_T 2

public Plugin: myinfo = {
        name = "Team Colors",
        author = "Arkarr + r3dw3r3w0lf + Friskybitch",
        description = "Colorize player model depending on which team they are.",
        version = "1.1",
        url = "http://www.sourcemod.net/"
};

public OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn); 
}

public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
        
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    
    if(IsPlayerAlive(client))
    {
        switch (GetClientTeam(client))
    {
        case TEAM_CT: SetEntityRenderColor(client, 0, 0, 255);
        case TEAM_T: SetEntityRenderColor(client, 255, 0, 0);
    }
    }
}
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Я тут нарыл старый плагин на покраску игроков, он чет не робит.
Я знаю тут есть умельцы, кто подскажет в чем траблы, игра CS:GO.
C-подобный:
#include <cstrike>

#define TEAM_CT 3
#define TEAM_T 2

public Plugin: myinfo = {
        name = "Team Colors",
        author = "Arkarr + r3dw3r3w0lf + Friskybitch",
        description = "Colorize player model depending on which team they are.",
        version = "1.1",
        url = "http://www.sourcemod.net/"
};

public OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
      
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
  
    if(IsPlayerAlive(client))
    {
        switch (GetClientTeam(client))
    {
        case TEAM_CT: SetEntityRenderColor(client, 0, 0, 255);
        case TEAM_T: SetEntityRenderColor(client, 255, 0, 0);
    }
    }
}
Можно попробовать так
C++:
public Plugin  myinfo = {
        name = "Team Colors",
        author = "Arkarr + r3dw3r3w0lf + Friskybitch",
        description = "Colorize player model depending on which team they are.",
        version = "1.1",
        url = "http://www.sourcemod.net/"
};

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action:Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid")), team;
   
    if(IsPlayerAlive(client))
    {
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #3
Можно попробовать так
C++:
public Plugin  myinfo = {
        name = "Team Colors",
        author = "Arkarr + r3dw3r3w0lf + Friskybitch",
        description = "Colorize player model depending on which team they are.",
        version = "1.1",
        url = "http://www.sourcemod.net/"
};

public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action:Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid")), team;
  
    if(IsPlayerAlive(client))
    {
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}

не работает почему-то
 

Fleeeshi

Добрая душа
Сообщения
231
Реакции
202
Значит что то другое перебивает цвет
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Игра ксго?
Сообщения автоматически склеены:

Версия с таймером, для заддержки
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    CreateTimer(2.0, Timer_OnSpawn, GetEventInt(event, "userid"));
}

public Action Timer_OnSpawn(Handle timer, any client)
{
    client = GetClientOfUserId(client);

    if(IsPlayerAlive(client))
    {
        int team;
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}
 

Вложения

  • Screenshot_14.png
    Screenshot_14.png
    173.2 КБ · Просмотры: 80

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #7
Игра ксго?
Сообщения автоматически склеены:

Версия с таймером, для заддержки
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    CreateTimer(2.0, Timer_OnSpawn, GetEventInt(event, "userid"));
}

public Action Timer_OnSpawn(Handle timer, any client)
{
    client = GetClientOfUserId(client);

    if(IsPlayerAlive(client))
    {
        int team;
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}

Я понял. Возникает конфликт с плагином SpawnProtection. Мейби задержку стоит увеличить.

C-подобный:
L 04/30/2020 - 15:50:22: [SM] Exception reported: Client 8 is not in game
L 04/30/2020 - 15:50:22: [SM] Blaming: colorteams.smx
L 04/30/2020 - 15:50:22: [SM] Call stack trace:
L 04/30/2020 - 15:50:22: [SM]   [0] IsPlayerAlive
L 04/30/2020 - 15:50:22: [SM]   [1] Line 15, C:\Users\September-PC\Desktop\COMPILE 1.10\colorteams.sp::Timer_OnSpawn
 

xek

Рыба клоун
Сообщения
1,652
Реакции
637
Я понял. Возникает конфликт с плагином SpawnProtection. Мейби задержку стоит увеличить.

C-подобный:
L 04/30/2020 - 15:50:22: [SM] Exception reported: Client 8 is not in game
L 04/30/2020 - 15:50:22: [SM] Blaming: colorteams.smx
L 04/30/2020 - 15:50:22: [SM] Call stack trace:
L 04/30/2020 - 15:50:22: [SM]   [0] IsPlayerAlive
L 04/30/2020 - 15:50:22: [SM]   [1] Line 15, C:\Users\September-PC\Desktop\COMPILE 1.10\colorteams.sp::Timer_OnSpawn
Как то получилось разрулить конфликт? Видимо такая же проблема
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    CreateTimer(2.0, Timer_OnSpawn, GetEventInt(event, "userid"));
}

public Action Timer_OnSpawn(Handle timer, any client)
{
    client = GetClientOfUserId(client);

    if(IsClientAuthorized(client) && IsClientInGame(client) && IsPlayerAlive(client))
    {
        int team;
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}
 

xek

Рыба клоун
Сообщения
1,652
Реакции
637
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    CreateTimer(2.0, Timer_OnSpawn, GetEventInt(event, "userid"));
}

public Action Timer_OnSpawn(Handle timer, any client)
{
    client = GetClientOfUserId(client);

    if(IsClientAuthorized(client) && IsClientInGame(client) && IsPlayerAlive(client))
    {
        int team;
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}
Стоит защита в бай зоне, там ставится так же цвет и прозрачность. Вот когда любой из игроков залетает туда, у всех пропадает цвет до конца раунда соответственно.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
так значит нуно фиксить плагин защиты на зоне покупки
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #13
C++:
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    CreateTimer(2.0, Timer_OnSpawn, GetEventInt(event, "userid"));
}

public Action Timer_OnSpawn(Handle timer, any client)
{
    client = GetClientOfUserId(client);

    if(IsClientAuthorized(client) && IsClientInGame(client) && IsPlayerAlive(client))
    {
        int team;
          SetEntityRenderMode(client, RENDER_TRANSCOLOR);
        if((team = GetClientTeam(client)) == 3) SetEntityRenderColor(client, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(client, 255, 0, 0);
    }
}

Спасибо, я таймер поставил на 6 секунд, это решает проблему с защитой на спавне)
 

Z-RAY-Z

Участник
Сообщения
775
Реакции
243
А можно версию, чтобы каждые Х секунд к игрокам цвет применялся?
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
А можно версию, чтобы каждые Х секунд к игрокам цвет применялся?
C++:
public void OnMapStart()
{
    CreateTimer(1.0, Timer_SetColor, _, TIMER_REPEAT);
}

public Action Timer_SetColor(Handle timer)
{
    for(int i = 1; i <= Maxis; i++) if(IsiAuthorized(i) && IsiInGame(i) && IsPlayerAlive(i))
    {
        static int team;
        SetEntityRenderMode(i, RENDER_TRANSCOLOR);
        if((team = GetiTeam(i)) == 3) SetEntityRenderColor(i, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(i, 255, 0, 0);
    }
}
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
C++:
public void OnMapStart()
{
    CreateTimer(1.0, Timer_SetColor, _, TIMER_REPEAT);
}

public Action Timer_SetColor(Handle timer)
{
    for(int i = 1; i <= Maxis; i++) if(IsiAuthorized(i) && IsiInGame(i) && IsPlayerAlive(i))
    {
        static int team;
        SetEntityRenderMode(i, RENDER_TRANSCOLOR);
        if((team = GetiTeam(i)) == 3) SetEntityRenderColor(i, 0, 0, 255);
        else if(team == 2) SetEntityRenderColor(i, 255, 0, 0);
    }
}
Вот так и появляется утечка памяти
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,569
Реакции
5,071
всего-то при каждой смене карты
Мелочь =)
 

benso

кодер-дурачок
Сообщения
85
Реакции
17
C-подобный:
#pragma semicolon 1
#pragma tabsize 0
#include <sourcemod>
#include <sdktools>

public Plugin myinfo =
{
    name = "AllModelsRed",
    author = "Tomiks (vk.com/tomiksofficial)",
    version = "1.0"
}

public void OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
}

public void Event_RoundStart(Event event, const char[] name, bool dB)
{
    CreateTimer(10.5, ready, _, TIMER_FLAG_NO_MAPCHANGE);
}

public Action ready(Handle timer)
{
    for(int i = 1; i <= MaxClients; ++i)
    {
        if(IsClientInGame(i) && IsFakeClient(i))
        {
            SetEntityRenderColor(i, 255, 0, 0, 255);
        }
    }
}
Есть ещё такой плагин,кидали в своё время.
Сообщения автоматически склеены:

В своё время я подправил спавнпротект,чтобы после того,как защита закончилось,игроков красило не в transparent(без цвета),а в красный.
Можно туда-же дописать проверку на команды и всё)
 
Сверху Снизу