Esl Admin ESP 2.9  [На сервере]

Плагины и дополнения / Plugins and add-ons

Модераторы: Dame-danners, Longipongeoos

Аватар пользователя
vol.team-servers
Администратор
Сообщений: 73
Зарегистрирован: 12 апр 2017, 14:05

Esl Admin ESP 2.9  [На сервере]

Сообщение vol.team-servers » 09 июл 2021, 12:50

Исходный код

Код: Выбрать все

#include <sourcemod>
#include <sendproxy>

#pragma semicolon 1
#pragma newdecls required

#define IsValidClient(%0)                 (1 <= %0 <= MaxClients && IsClientInGame(%0) && !IsFakeClient(%0))
#define PLUGIN_VERSION "2.9"

int iFlag;
bool bEnableWeaponGlow;

ConVar sv_competitive_official_5v5,
    mp_weapons_glow_on_ground;

public Plugin myinfo = {
    name        = "CS:GO Esl Admin ESP (mmcs.pro)",
    author      = "SAZONISCHE",
    description = "ESP/WH for Admins",
    version     = PLUGIN_VERSION,
    url         = "https://mmcs.pro/"
};

public void OnPluginStart() {
    if(GetEngineVersion() != Engine_CSGO)
        SetFailState("This plugin works only on CS:GO. Disabling plugin...");

    if(GetConVarInt(FindConVar("sv_parallel_send")) == 1)
        SetFailState("Please set convar sv_parallel_send to 0. Disabling plugin...");
    if(GetConVarInt(FindConVar("sv_parallel_sendsnapshot")) == 1)
        SetFailState("Please set convar sv_parallel_sendsnapshot to 0. Disabling plugin...");
    if(GetConVarInt(FindConVar("sv_parallel_packentities")) == 1)
        SetFailState("Please set convar sv_parallel_packentities to 0. Disabling plugin...");

    CreateConVar("sm_esl_adminesp_version", PLUGIN_VERSION, "Version of CS:GO Esl Admin ESP", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);

    ConVar CVAR;
    (CVAR = CreateConVar("sm_esl_adminesp_flag", "d", "Admin flag, blank=any flag", FCVAR_NOTIFY)).AddChangeHook(OnCvarChanged);
    OnCvarChanged(CVAR, NULL_STRING, NULL_STRING);
    (CVAR = CreateConVar("sm_esl_adminesp_weapons_glow_on_ground", "1", "Enable glow weapons on ground", 0, true, 0.0, true, 1.0)).AddChangeHook(OnCvarChanged);
    OnCvarChanged(CVAR, NULL_STRING, NULL_STRING);
    AutoExecConfig(true, "esl_admin_esp");

    sv_competitive_official_5v5 = FindConVar("sv_competitive_official_5v5");
    mp_weapons_glow_on_ground = FindConVar("mp_weapons_glow_on_ground");

    AutoExecConfig(true, "esl_admin_esp");
   
    HookEvent("player_death", ReloadEvent);
    HookEvent("player_team", ReloadEvent);
    HookEvent("player_spawn", ReloadEvent);
    HookEvent("player_spawned", ReloadEvent); // дебилизм валв происходит только после pending team или в данный момент (обязательно дублировать если используем player_spawn)
}

public void OnClientDisconnect(int client) {
    if (!IsFakeClient(client))
        SetEspHook(client, false);
}

public void OnCvarChanged(ConVar convar, const char[] oldValue, const char[] newValue) {
    char convar_name[32];
    convar.GetName(convar_name, sizeof(convar_name));
    if (StrEqual(convar_name, "sm_esl_adminesp_flag")) {
        char szFlag[16];
        convar.GetString(szFlag, sizeof(szFlag));
        iFlag = ReadFlagString(szFlag);

        for (int client = 1; client <= GetMaxHumanPlayers(); client++) {
            if (IsValidClient(client)) {
                SetEspHook(client, false);
                SetEspClient(client, false);
            }
        }

    } else if (StrEqual(convar_name, "sm_esl_adminesp_weapons_glow_on_ground")) {
        bEnableWeaponGlow = convar.BoolValue;
    }
}

public Action ReloadEvent(Event event, const char[] name, bool dontBroadcast) {
    int client = GetClientOfUserId(event.GetInt("userid"));
    if (IsValidClient(client)) {
        int bits = GetUserFlagBits(client);
        switch (name[7]) {
            case 'd':{
                if(bits & (iFlag|ADMFLAG_ROOT)) {
                    SetEspHook(client, true);
                    SetEspClient(client, true);
                }
            }
            case 't':{
                int team = event.GetInt("team");
                if (team >= 2 && IsPlayerAlive(client)) {
                    SetEspHook(client, false);
                    SetEspClient(client, false);
                } else if (team <= 1 && (bits & (iFlag|ADMFLAG_ROOT))) {
                    SetEspHook(client, false);
                    SetEspClient(client, true);
                } else if (bits & (iFlag|ADMFLAG_ROOT)) {
                    SetEspHook(client, true);
                    SetEspClient(client, true);
                }
            }
            case 's':{
                if (IsPlayerAlive(client)) {
                    SetEspHook(client, false);
                    if (bits & (iFlag|ADMFLAG_ROOT))
                        SetEspClient(client, false);
                }
            }
        }
    }
    return Plugin_Continue;
}

public bool SetEspHook(int client, bool value) {
    if (value) {
        if (!SendProxy_IsHooked(client, "m_iTeamNum"))
            SendProxy_Hook(client, "m_iTeamNum", Prop_Int, Set_Esp);
    } else {
        if (SendProxy_IsHooked(client, "m_iTeamNum"))
            SendProxy_Unhook(client, "m_iTeamNum", Set_Esp);
    }
}

public bool SetEspClient(int client, bool value) {
    if(bEnableWeaponGlow)
        mp_weapons_glow_on_ground.ReplicateToClient(client, value ? "1" : "0");
    sv_competitive_official_5v5.ReplicateToClient(client, value ? "1" : "0");
}

public Action Set_Esp(int entity, const char[] PropName, int &iValue, int element) {
    if (iValue) {
        iValue = 1;
        return Plugin_Changed;
    }
    return Plugin_Continue;
}

Установка
Скомпилируйте плагин, перетащив файл исходника (esl_admin_esp.sp) мышью на (addons/sourcemod/scripting/spcomp.exe).
Скопируйте скомпилированный файл esl_admin_esp.smx в директорию: addons/sourcemod/plugins
Скопируйте файл расширения sendproxy.ext.2.csgo.so в директорию: addons/sourcemod/extensions
Скопируйте файл геймдаты sendproxy.txt в директорию: addons/sourcemod/gamedata
Полностью отключив сервер распаковать содержимое архива в папку csgo

Настройки
sm_esl_adminesp_flag // Флаг игрока для доступа к ESP
sm_esl_adminesp_weapons_glow_on_ground // Включение подсветки дропнутого оружия на земле

Требования
SendProxy Manager (вложено в архив)
Команды
Клавиша X в наблюдении | Вкл/Выкл
либо spec_show_xray 1/0 | Вкл/Выкл
Вложения
esl_esp.zip
(542.17 KiB) Загружено 90 раз

Вернуться в «SourceMod»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость