ReHLDS/ReAPI Unreal Mini Damager

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Очередной плагин отображения урона.


Версия плагина:
1.2


Особенности отличающие данный плагин от других:

* Отображает смертельный выстрел
* Отображает урон в режиме наблюдения.
* Возможность установить отдельно флаги для дамагера, и урона по невидимым.


Ничего лишнего.

Исходный код:

UNREAL MINI DAMAGER BY KARAULOV:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <reapi>

#define PLUGIN "Unreal Mini Damager"
#define VERSION "1.2"
#define AUTHOR "Karaulov"

new g_hSyncObjAttacker;
new g_hSyncObjTarget;

new bool:g_bDmgEnabled[50] = {true, ...};

// Установите флаг для доступа к дамагеру
//#define DAMAGE_FLAG ADMIN_RESERVATION

// Установите флаг для тех кто будет видеть урон через стены
//#define INVISIBLED_FLAG ADMIN_BAN

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_clcmd("say /damager","toggle_damager",_,"Вкл/выкл damager");
    register_clcmd("say_team /damager","toggle_damager",_,"Вкл/выкл damager");
    g_hSyncObjAttacker = CreateHudSyncObj();
    g_hSyncObjTarget = CreateHudSyncObj();
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "TakeDamage_Post", true);
}

public toggle_damager(id){
    g_bDmgEnabled[id] = !g_bDmgEnabled[id];
    set_hudmessage(0, 100, 200, -1.0, 0.55, 0, 0.1, 2.0, 0.02, 0.02, -1);
    show_hudmessage(id, "Отображение урона %s", g_bDmgEnabled[id] ? "ВКЛЮЧЕНО" : "ВЫКЛЮЧЕНО");
}

public client_putinserver(id)
{
    g_bDmgEnabled[id] = true;
}

public print_damage_to_spectators(attacker,target,damage)
{
    new iPlayers[32], iNum, specPlayer;
    get_players(iPlayers, iNum,"bch") ;
    for(new i = 0; i < iNum; i++)
    {
        specPlayer = iPlayers[i];
        new specTarget = get_entvar(specPlayer, var_iuser2);
        if( specTarget == attacker )
        {
            set_hudmessage(0, 50, 200, -1.0, 0.45, 0, 0.1, 2.5, 0.02, 0.02, 2);
            if (is_user_alive(target))
            {
                ShowSyncHudMsg(specPlayer, g_hSyncObjAttacker, "%i^n", damage);
            }
            else
            {
                ShowSyncHudMsg(specPlayer, g_hSyncObjAttacker, "%i - СМЕРТЕЛЬНЫЙ^n",damage);
            }       
        }
        else if( specTarget == target )
        {
            set_hudmessage(200, 20, 20, -1.0, 0.55, 0, 0.1, 2.5, 0.02, 0.02, 3);
            if (is_user_alive(target))
            {
                ShowSyncHudMsg(specPlayer, g_hSyncObjTarget, "%i^n", damage);
            }
            else
            {
                ShowSyncHudMsg(specPlayer, g_hSyncObjTarget, "%i - СМЕРТЕЛЬНЫЙ^n",damage);
            }       
        }
    }
}

public print_damage_to_player(attacker,target,damage)
{
    new bool:bIsAttackerConnected = is_user_connected(attacker) > 0;
    new bool:bIsTargetConnected = is_user_connected(target) > 0;
    
#if defined INVISIBLED_FLAG   
    new bool:bIsVisibled = true;
    if (bIsAttackerConnected && bIsTargetConnected)
        bIsVisibled = is_user_visibled(attacker,target);
#endif

    if (attacker != target && bIsAttackerConnected && g_bDmgEnabled[attacker])
    {
#if defined DAMAGE_FLAG
        if (get_user_flags(attacker) & DAMAGE_FLAG)
#endif
#if defined INVISIBLED_FLAG
        if (bIsVisibled || get_user_flags(attacker) & INVISIBLED_FLAG)
#endif
        {
            set_hudmessage(0, 50, 200, -1.0, 0.45, 0, 0.1, 2.5, 0.02, 0.02, 2);
            if (is_user_alive(target))
            {
                ShowSyncHudMsg(attacker, g_hSyncObjAttacker, "%i^n", damage);
            }
            else
            {
                ShowSyncHudMsg(attacker, g_hSyncObjAttacker, "%i - СМЕРТЕЛЬНЫЙ^n",damage);
            }
        }
    }
    
    if (bIsTargetConnected && g_bDmgEnabled[target])
    {
#if defined DAMAGE_FLAG
        if (get_user_flags(target) & DAMAGE_FLAG)
#endif
        {
            set_hudmessage(200, 20, 20, -1.0, 0.55, 0, 0.1, 2.5, 0.02, 0.02, 3);
            if (is_user_alive(target))
            {
                ShowSyncHudMsg(target, g_hSyncObjTarget, "%i^n", damage);
            }
            else
            {
                ShowSyncHudMsg(target, g_hSyncObjTarget, "%i - СМЕРТЕЛЬНЫЙ^n",damage);
            }
        }
    }
}

public TakeDamage_Post(const pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
{
    new iDamage = floatround(flDamage);
    if (iDamage > 1)
    {
        print_damage_to_player(pevAttacker,pevVictim,iDamage);
        print_damage_to_spectators(pevAttacker,pevVictim,iDamage);
    }
}

stock bool:is_user_visibled(const pevAttacker, const pevVictim)
{
    static Float:f_vRes[3];
    new Float:f_vOrigAttacker[3], Float:f_vOrigVictim[3];
    get_entvar(pevAttacker,var_origin,f_vOrigAttacker);
    get_entvar(pevVictim,var_origin,f_vOrigVictim);
    return trace_line(pevAttacker, f_vOrigAttacker, f_vOrigVictim, f_vRes) == pevVictim;
}
Скриншот
TJkCxS[1].jpg
 
Последнее редактирование:

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
962
Симпатии
680
Пол
Мужской
А обязательно засунуть "Mini" к названию? Помню одного человека который делал так же, но только он добавил "Lite"
 

Nelpsen

Пользователь
Регистрация
9 Июл 2017
Сообщения
59
Симпатии
27
Пол
Мужской
Vaqtincha, Unreal еще главное не забыть
 
  • Haha
Симпатии: ZXC

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Vaqtincha, mini еще не занято, а ultimate и lite уже заняты
 

Mers

Пользователь
Регистрация
9 Апр 2020
Сообщения
108
Симпатии
3
Это нормально если дамагер записывает vault файл?
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
Mers, нету в этом дамагере ничего такого
 

Mers

Пользователь
Регистрация
9 Апр 2020
Сообщения
108
Симпатии
3
Vaqtincha, mini еще не занято, а ultimate и lite уже заняты
Подскажи пожалуйста как убрать показ урона от гранат?
Mers, нету в этом дамагере ничего такого
Прости но я не про этот дамагер, на этом форуме нашел, подсказали как пофиксить чтоб грены не показали урон, установил и за год ровно сегодня заметил vault файл от него размером в 5 мегабайт почти. Вот и вопрос возник, нафига и для чего он это делает))
 

Mers

Пользователь
Регистрация
9 Апр 2020
Сообщения
108
Симпатии
3
Подскажи пожалуйста как убрать показ урона от гранат?

Прости но я не про этот дамагер, на этом форуме нашел, подсказали как пофиксить чтоб грены не показали урон, установил и за год ровно сегодня заметил vault файл от него размером в 5 мегабайт почти. Вот и вопрос возник, нафига и для чего он это делает))
И по тиммейтам показ урона как можно оффнуть?
 

Kobra

Пользователь
Регистрация
24 Июн 2017
Сообщения
20
Симпатии
5
Пол
Мужской
Sadly it shows the damage dealt to teammates...even tho friendlyfire is 0
 

rustamsadikov

Пользователь
Регистрация
3 Окт 2021
Сообщения
7
Симпатии
1
BugFix:
 if (!rg_is_player_can_takedamage(pevVictim, pevAttacker))
        return;
 

Эдик

Пользователь
Регистрация
14 Фев 2023
Сообщения
2
Симпатии
0
Доброго времени суток. Помоги убрать урон со своей команды когда стреляешь по своим показывает урон путает игроков на сервере
Доброго времени суток. Помоги убрать урон со своей команды когда стреляешь по своим показывает урон путает игроков
Mers, нету в этом дамагере ничего такого
 

Эдик

Пользователь
Регистрация
14 Фев 2023
Сообщения
2
Симпатии
0
Подаскажите на какую строчку код вставить этот
if (!rg_is_player_can_takedamage(pevVictim, pevAttacker))
return;
Не понимаю куда чтоб дамагер не видно было когда стреляешь по свои не показывал
 
Сверху Снизу