Поиск Damager с функцией выключения через чат.

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
606
Симпатии
126
Всем привет. Помогите найти Damager с функцией выключения через чат. Облазил интернет чот ни чо не нашол хотя на некоторых серверах видел такую штуковину.
Вот какой бы я хотел что б такая штуковина была.
PHP:
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define USE_CHECK_VISIBLE_ENT // Закомментируйте эту строку, если не хотите использовать проверку видимости игрока перед отображением урона

#if !defined USE_CHECK_VISIBLE_ENT
    #define CONSIDER_MEAT_MAPS // Закомментируйте эту строку, если не хотите принудительно активировать проверку видимости игрока на "мясных" картах
    
    new bool:g_bMeatMap;
#endif

new g_pHudSyncObj1;
new g_pHudSyncObj2;

public plugin_init()
{
    register_plugin("Damager", "0.1b", "Subb98");
    register_event("Damage", "EventDamage", "b", "2!0", "3=0", "4!0");
    g_pHudSyncObj1 = CreateHudSyncObj();
    g_pHudSyncObj2 = CreateHudSyncObj();
}

#if defined CONSIDER_MEAT_MAPS
public plugin_cfg()
{
    new const szMapTypes[][] = {"aim_", "awp_", "fy_"}; // Типы карт, которые будут считаться "мясными" (по умолчанию "aim_", "awp_", "fy_")
    new szMapname[32];
    get_mapname(szMapname, charsmax(szMapname));
    for(new i; i < sizeof szMapTypes; i++)
    {
        if(equali(szMapname, szMapTypes[i], strlen(szMapTypes[i])))
        {
            g_bMeatMap = true;
            break;
        }
    }
}
#endif

public EventDamage(const id)
{
    static pAttacker, iDamage;
    pAttacker = get_user_attacker(id), iDamage = read_data(2);
    #if defined USE_CHECK_VISIBLE_ENT
    if(is_user_connected(pAttacker) && pAttacker != id && fm_is_ent_visible(pAttacker, id))
    #else
    if(is_user_connected(pAttacker) && pAttacker != id && g_bMeatMap ? fm_is_ent_visible(pAttacker, id) : 1>0)
    #endif
    {
        set_hudmessage(0, _, 200, _, 0.55, _, _, 1.0, _, 0.0, -1);
        ShowSyncHudMsg(pAttacker, g_pHudSyncObj1, "%d", iDamage);
    }
    if(is_user_connected(id))
    {
        set_hudmessage(255, 0, _, 0.45, -1.0, _, _, 1.0, _, 0.0, -1);
        ShowSyncHudMsg(id, g_pHudSyncObj2, "%s%d", id == pAttacker ? "-" : "", iDamage);
    }
}

// Thanks to ConnorMcLeod (https://forums.alliedmods.net/showpost.php?p=1580992&postcount=10)
stock bool:fm_is_ent_visible(const id, const pEnt, const bool:bIgnoreMonsters = false)
{
    new Float:fStart[3], Float:fDestination[3], Float:fFraction;
    pev(id, pev_origin, fStart);
    pev(id, pev_view_ofs, fDestination);
    fStart[0] += fDestination[0];
    fStart[1] += fDestination[1];
    fStart[2] += fDestination[2];
    pev(pEnt, pev_origin, fDestination);
    engfunc(EngFunc_TraceLine, fStart, fDestination, bIgnoreMonsters, id, 0);
    get_tr2(0, TR_flFraction, fFraction);
    if(fFraction > 0.97)
    {
        return true;
    }
    return false;
}
P.S плагины с закрытым кодом прошу не предлагать,
 
K

kapangaIII

new bool:as[33];

register_clcmd("say /dmg", "oz");

public oz(id)as[id]=!as[id];

В коннекте, as[id]=false;


if(is_user_connected(id))
->
if(is_user_connected(id) && !as[id])
 

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
606
Симпатии
126
, спасибо большое.[DOUBLEPOST=1522490036][/DOUBLEPOST], можете мне помочь чуть у меня приступ рукожопства :D и некоторие функции не знаю куда засунуть то что знал то поправил а дальше голова не варит.
PHP:
#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define USE_CHECK_VISIBLE_ENT // Закомментируйте эту строку, если не хотите использовать проверку видимости игрока перед отображением урона

#if !defined USE_CHECK_VISIBLE_ENT
    #define CONSIDER_MEAT_MAPS // Закомментируйте эту строку, если не хотите принудительно активировать проверку видимости игрока на "мясных" картах
    
    new bool:g_bMeatMap;
    new bool:as[33];
#endif

new g_pHudSyncObj1;
new g_pHudSyncObj2;

public plugin_init()
{
    register_plugin("Damager", "0.1b", "Subb98");
    register_event("Damage", "EventDamage", "b", "2!0", "3=0", "4!0");
    register_clcmd("say /dmg", "oz");
    g_pHudSyncObj1 = CreateHudSyncObj();
    g_pHudSyncObj2 = CreateHudSyncObj();
}

#if defined CONSIDER_MEAT_MAPS
public plugin_cfg()
{
    new const szMapTypes[][] = {"aim_", "awp_", "fy_"}; // Типы карт, которые будут считаться "мясными" (по умолчанию "aim_", "awp_", "fy_")
    new szMapname[32];
    get_mapname(szMapname, charsmax(szMapname));
    for(new i; i < sizeof szMapTypes; i++)
    {
        if(equali(szMapname, szMapTypes[i], strlen(szMapTypes[i])))
        {
            g_bMeatMap = true;
            break;
        }
    }
}
#endif

public EventDamage(const id)
{
    static pAttacker, iDamage;
    pAttacker = get_user_attacker(id), iDamage = read_data(2);
    #if defined USE_CHECK_VISIBLE_ENT
    if(is_user_connected(pAttacker) && pAttacker != id && fm_is_ent_visible(pAttacker, id))
    #else
    if(is_user_connected(pAttacker) && pAttacker != id && g_bMeatMap ? fm_is_ent_visible(pAttacker, id) : 1>0)
    #endif
    {
        set_hudmessage(0, _, 200, _, 0.55, _, _, 1.0, _, 0.0, -1);
        ShowSyncHudMsg(pAttacker, g_pHudSyncObj1, "%d", iDamage);
    }
    if(is_user_connected(id) && !as[id])
    {
        set_hudmessage(255, 0, _, 0.45, -1.0, _, _, 1.0, _, 0.0, -1);
        ShowSyncHudMsg(id, g_pHudSyncObj2, "%s%d", id == pAttacker ? "-" : "", iDamage);
    }
}

// Thanks to ConnorMcLeod (https://forums.alliedmods.net/showpost.php?p=1580992&postcount=10)
stock bool:fm_is_ent_visible(const id, const pEnt, const bool:bIgnoreMonsters = false)
{
    new Float:fStart[3], Float:fDestination[3], Float:fFraction;
    pev(id, pev_origin, fStart);
    pev(id, pev_view_ofs, fDestination);
    fStart[0] += fDestination[0];
    fStart[1] += fDestination[1];
    fStart[2] += fDestination[2];
    pev(pEnt, pev_origin, fDestination);
    engfunc(EngFunc_TraceLine, fStart, fDestination, bIgnoreMonsters, id, 0);
    get_tr2(0, TR_flFraction, fFraction);
    if(fFraction > 0.97)
    {
        return true;
    }
    return false;
}
 
Сверху Снизу