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

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

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

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

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

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

Версия 2.9

Исходный код

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

#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) Загружено 675 раз

Аватар пользователя
Longipongeoos
Сообщений: 199
Зарегистрирован: 12 апр 2017, 16:50

Re: Esl Admin ESP 2.9

Сообщение Longipongeoos » 17 май 2024, 14:45

Версия 3.2

Описание:
После последних обновлений был урезан опционал квара mp_teammates_are_enemies (подсветка игроков перестала работать в CS:GO)
Я нашел квар sv_competitive_official_5v5 , который стал заменой, но работал он только в наблюдателях. Решением для реализации работы квара в командах T и CT стало SendProxy Manager и смена m_iTeamNum.
Исходный код

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

#include <sourcemod>
#include <sendproxy>

#pragma semicolon 1
#pragma newdecls required

#define PLUGIN_VERSION "3.2"

int iFlag;
bool bEnableWeaponGlow;

ConVar sv_competitive_official_5v5,
   mp_weapons_glow_on_ground,
   sv_parallel_send,
   sv_parallel_sendsnapshot,
   sv_parallel_packentities,
   sm_esl_adminesp_flag,
   sm_esl_adminesp_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...");

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

   (sm_esl_adminesp_flag = CreateConVar("sm_esl_adminesp_flag", "d", "Admin flag, blank=any flag", FCVAR_NOTIFY)).AddChangeHook(OnCvarChanged);
   OnCvarChanged(sm_esl_adminesp_flag, NULL_STRING, NULL_STRING);
   (sm_esl_adminesp_weapons_glow_on_ground = CreateConVar("sm_esl_adminesp_weapons_glow_on_ground", "1", "Enable glow weapons on ground", 0, true, 0.0, true, 1.0)).AddChangeHook(OnCvarChanged);
   OnCvarChanged(sm_esl_adminesp_weapons_glow_on_ground, 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");

   (sv_parallel_send = FindConVar("sv_parallel_send")).AddChangeHook(OnCvarChanged);
   OnCvarChanged(sv_parallel_send, NULL_STRING, NULL_STRING);
   (sv_parallel_sendsnapshot = FindConVar("sv_parallel_sendsnapshot")).AddChangeHook(OnCvarChanged);
   OnCvarChanged(sv_parallel_sendsnapshot, NULL_STRING, NULL_STRING);
   (sv_parallel_packentities = FindConVar("sv_parallel_packentities")).AddChangeHook(OnCvarChanged);
   OnCvarChanged(sv_parallel_packentities, NULL_STRING, NULL_STRING);

   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) {
   if (convar == 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 (convar == sm_esl_adminesp_weapons_glow_on_ground) {
      bEnableWeaponGlow = convar.BoolValue;
   } else if (convar == sv_parallel_send && StringToInt(newValue) == 1) {
      convar.IntValue = 0;
   } else if (convar == sv_parallel_sendsnapshot && StringToInt(newValue) == 1) {
      convar.IntValue = 0;
   } else if (convar == sv_parallel_packentities && StringToInt(newValue) == 1) {
      convar.IntValue = 0;
   }
}

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;
}

stock bool IsValidClient(int client) {
   return 0 < client && client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client);
}

Требования
SendProxy Manager (вложено в архив)
Переменные
sm_esl_adminesp_flag // Флаг игрока для доступа к ESP
sm_esl_adminesp_weapons_glow_on_ground // Включение подсветки дропнутого оружия на земле

Команды
Клавиша X в наблюдении | Вкл/Выкл, либо spec_show_xray 1/0 | Вкл/Выкл
Установка
Полностью отключив сервер распаковать содержимое архива в папку csgo
Вложения
esl_esp.zip
(542.17 KiB) Загружено 600 раз


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

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

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