Players remaining - modify

  • Автор темы Автор темы CSLover
  • Дата начала Дата начала

CSLover

Участник
Сообщения
60
Реакции
5
Помог
2 раз(а)
Баллы
8
This plugin shows in real time how many CTs and how many terrorists are still alive.
Код:
#include <amxmodx>
#include <amxmisc>
 
#if AMXX_VERSION_NUM < 183
    #tryinclude <dhudmessage>
    #include <cstrike>
    #define client_disconnected(%1) client_disconnect(%1)
    #define get_pcvar_bool(%1) bool:get_pcvar_num(%1)
#endif
 
#define PLUGIN_NAME             "Players Remaining"
#define PLUGIN_VERSION          "1.0.0"
#define PLUGIN_AUTHOR           "gabuch2"
 
#pragma semicolon   1
 
#define TASK_ID 5756184
 
new g_cvarEnabled, g_cvarColorRed, g_cvarColorBlue, g_cvarColorGreen, g_cvarHorPos, g_cvarVerPos, g_cvarEffects, g_cvarFxTime, g_cvarHoldTime, g_cvarFadeInTime, g_cvarFadeOutTime;
new bool:g_bEnabled;
new g_iColorRed, g_iColorGreen, g_iColorBlue, g_iEffects;
new Float:g_fHorPos, Float:g_fVerPos, Float:g_fFxTime, Float:g_fHoldTime, Float:g_fFadeInTime, Float:g_fFadeOutTime;
#if AMXX_VERSION_NUM < 183
new g_iTerrorNum;
new g_iCTNum;
#endif
 
public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
    #if AMXX_VERSION_NUM < 183
    g_cvarEnabled = register_cvar("amx_pr_enabled", "1");
    g_cvarColorRed = register_cvar("amx_pr_color_red", "125");
    g_cvarColorGreen = register_cvar("amx_pr_color_green", "100");
    g_cvarColorBlue = register_cvar("amx_pr_color_blue", "0");
    g_cvarHorPos = register_cvar("amx_pr_pos_horizontal", "-1.0");
    g_cvarVerPos = register_cvar("amx_pr_pos_vertical", "0.01");
    g_cvarEffects = register_cvar("amx_pr_effects", "0.01");
    g_cvarFxTime = register_cvar("amx_pr_effects_time", "0");
    g_cvarHoldTime = register_cvar("amx_pr_time_hold", "0.6");
    g_cvarFadeInTime = register_cvar("amx_pr_time_fadein", "0.7");
    g_cvarFadeOutTime = register_cvar("amx_pr_time_fadeout", "0.7");
    set_task(1.0, "Task_CacheData182", _, _, _, "b");
    #else
    g_cvarEnabled = create_cvar("amx_pr_enabled", "1", FCVAR_NONE, "Enables Players Remaining.", true, 0.0, true, 1.0);
    g_cvarColorRed = create_cvar("amx_pr_color_red", "125", FCVAR_NONE, "Determines the red color of the hint message.", true, 0.0, true, 255.0);
    g_cvarColorGreen = create_cvar("amx_pr_color_green", "100", FCVAR_NONE, "Determines the green color of the hint message.", true, 0.0, true, 255.0);
    g_cvarColorBlue = create_cvar("amx_pr_color_blue", "0", FCVAR_NONE, "Determines the blue color of the hint message.", true, 0.0, true, 255.0);
    g_cvarHorPos = create_cvar("amx_pr_pos_horizontal", "-1.0", FCVAR_NONE, "Determines the horizontal position of the hint message.", true, -1.0, true, 1.0);
    g_cvarVerPos = create_cvar("amx_pr_pos_vertical", "0.01", FCVAR_NONE, "Determines the vertical position of the hint message.", true, -1.0, true, 1.0);
    g_cvarEffects = create_cvar("amx_pr_effects", "0.01", FCVAR_NONE, "Determines the effect of the hint message. (0:no effects 1:flashing 2:printing letter by letter)", true, 0.0, true, 2.0);
    g_cvarFxTime = create_cvar("amx_pr_effects_time", "0", FCVAR_NONE, "Determines how long should the effect last, if any", true, 0.0);
    g_cvarHoldTime = create_cvar("amx_pr_time_hold", "0.6", FCVAR_NONE, "Determines how long should the hint message should last", true, 0.0);
    g_cvarFadeInTime = create_cvar("amx_pr_time_fadein", "0.7", FCVAR_NONE, "Determines how long should the message take to fade in", true, 0.0);
    g_cvarFadeOutTime = create_cvar("amx_pr_time_fadeout", "0.7", FCVAR_NONE, "Determines how long should the message take to fade out", true, 0.0);
 
    register_cvar("amx_pr_version", PLUGIN_VERSION, FCVAR_SERVER);
 
    hook_cvar_change(g_cvarEnabled, "CvarChanged");
    hook_cvar_change(g_cvarColorRed, "CvarChanged");
    hook_cvar_change(g_cvarColorGreen, "CvarChanged");
    hook_cvar_change(g_cvarColorBlue, "CvarChanged");
    hook_cvar_change(g_cvarHorPos, "CvarChanged");
    hook_cvar_change(g_cvarVerPos, "CvarChanged");
    hook_cvar_change(g_cvarEffects, "CvarChanged");
    hook_cvar_change(g_cvarFxTime, "CvarChanged");
    hook_cvar_change(g_cvarHoldTime, "CvarChanged");
    hook_cvar_change(g_cvarFadeInTime, "CvarChanged");
    hook_cvar_change(g_cvarFadeOutTime, "CvarChanged");
    #endif
}
 
public plugin_cfg()
{
    CacheConVars();
}
 
public CvarChanged(cvarHandle, const szOldValue[], const szNewValue[])
{
    CacheConVars();
}
 
CacheConVars()
{
    g_bEnabled = get_pcvar_bool(g_cvarEnabled);
    if(g_bEnabled)
    {
        g_iColorRed = get_pcvar_num(g_cvarColorRed);
        g_iColorGreen = get_pcvar_num(g_cvarColorGreen);
        g_iColorBlue = get_pcvar_num(g_cvarColorBlue);
        g_iEffects = get_pcvar_num(g_cvarEffects);
        g_fHorPos = get_pcvar_float(g_cvarHorPos);
        g_fVerPos = get_pcvar_float(g_cvarVerPos);
        g_fFxTime = get_pcvar_float(g_cvarFxTime);
        g_fHoldTime = get_pcvar_float(g_cvarHoldTime);
        g_fFadeInTime = get_pcvar_float(g_cvarFadeInTime);
        g_fFadeOutTime = get_pcvar_float(g_cvarFadeOutTime);
 
        EnableTimers();
    }
    else
        DisableTimers();
}
 
EnableTimers()
{
    for(new iClient = 0; iClient < get_maxplayers(); iClient++)
    {
        if(is_user_connected(iClient) && !is_user_bot(iClient) && !task_exists(TASK_ID+iClient))
            set_task(1.0, "Task_ShowHint", TASK_ID+iClient, _, _, "b");
    }
}
 
DisableTimers()
{
    for(new iClient = 0; iClient < get_maxplayers(); iClient++)
    {
        if(task_exists(TASK_ID+iClient))
            remove_task(TASK_ID+iClient);
    }
}
 
public client_putinserver(iClient)
{
    if(!is_user_bot(iClient) && !task_exists(TASK_ID+iClient))
        set_task(1.0, "Task_ShowHint", TASK_ID+iClient, _, _, "b");
}
 
public client_disconnected(iClient)
{
    if(task_exists(TASK_ID+iClient))
        remove_task(TASK_ID+iClient);
}
 
public Task_ShowHint(iTaskId)
{
    new iClient = iTaskId-TASK_ID;
    if(is_user_alive(iClient))
    {
        #if defined _dhudmessage_included || AMXX_VERSION_NUM > 183
        set_dhudmessage(g_iColorRed, g_iColorGreen, g_iColorBlue, g_fHorPos, g_fVerPos, g_iEffects, g_fFxTime, g_fHoldTime, g_fFadeInTime, g_fFadeOutTime);
        #else
        set_hudmessage(g_iColorRed, g_iColorGreen, g_iColorBlue, g_fHorPos, g_fVerPos, g_iEffects, g_fFxTime, g_fHoldTime, g_fFadeInTime, g_fFadeOutTime, -1);
        #endif
        #if AMXX_VERSION_NUM < 183
        #if defined _dhudmessage_included
        show_dhudmessage(iClient, "%d CTs vs %i Ts", g_iCTNum, g_iTerrorNum);
        #else
        show_hudmessage(iClient, "%d CTs vs %i Ts", g_iCTNum, g_iTerrorNum);
        #endif
        #else
        show_dhudmessage(iClient, "%d CTs vs %i Ts", get_playersnum_ex(GetPlayers_ExcludeDead | GetPlayers_MatchTeam, "CT"), get_playersnum_ex(GetPlayers_ExcludeDead | GetPlayers_MatchTeam, "TERRORIST"));
        #endif
    }
}
 
#if AMXX_VERSION_NUM < 183
public Task_CacheData182()
{
    //honestly, I don't care about 182 support it should've been deprecated a long time ago
    //but this rather inneficient method should provide the same functionality
    CacheConVars();
    if(g_bEnabled)
    {
        g_iCTNum = 0;
        g_iTerrorNum = 0;
        for(new iClient = 0; iClient < get_maxplayers(); iClient++)
        {
            if(is_user_alive(iClient))
            {
                if(cs_get_user_team(iClient) == CS_TEAM_CT)
                    g_iCTNum++;
                else if(cs_get_user_team(iClient) == CS_TEAM_T)
                    g_iTerrorNum++;
            }
        }
    }
}
#endif

Can someone modify it so that it only appears during the match?

So it should only be visible after freeze time, and up until the last player is killed.

Maybe this could be combined as well, because then the current score would still be visible.
I’m making an automix server, that’s where I would need it.

Thank you very much for your help.
 
Последнее редактирование модератором:

Кто просматривает тему

Назад
Верх