ReHLDS/ReAPI [1.0.7] Vampire

den4ik

Пользователь
Регистрация
8 Июл 2017
Сообщения
72
Симпатии
11
Пол
Мужской
#41
To be or not to be,
не выдает, точнее в начале выдает потом нет, от чего зависит не понятно
 

kasperch1k

Постоялец
Регистрация
8 Июн 2017
Сообщения
166
Симпатии
42
Пол
Мужской
#42
вот обнова версия 1.0.8-3
Fix Fix.. Stable v.
Код:
#include <amxmodx>
#include <reapi>

#define VERSION "1.0.8-3"

/******** НАСТРОЙКИ ********/
#define BLOCK_MAPS             // Блокировка вампира на определённых картах. (Чтобы выключить закоментируйте: //#define BLOCK_MAPS)
//#define FLAG_ACCESS (ADMIN_BAN|ADMIN_LEVEL_H)    // Выдавать только указанным флагам. (Чтобы выключить закоментируйте: //#define FLAG_ACCESS)

//#define FFA_MODE             // Поддержка CSDM FFA.    (Default: off)
#define HP_BODY    14.0         // Кол-во hp за убийство.    (Default: 10.0)
#define HP_HS    19.0         // Кол-во hp за убийство в голову.    (Default: 15.0)
#define HP_MAX    100.0         // Максимальное Кол-во hp. (Выше этого значения hp прибавлять не будет).    (Default: 100.0)

#define KILL_SOUND             // Вкл\Выкл - Воспроизведения звука, получения хп (Чтобы выключить закоментируйте: //#define KILL_SOUND)
#if defined KILL_SOUND
    #define SOUND "buttons/bell1.wav"    // Звук.
#endif

#define HUD_MESSAGE         // HUD Сообщение о прибавке hp. (Чтобы выключить закоментируйте: //#define HUD_MESSAGE)

// Настройки HUD
#define MSGHUD "+%.0f ХП"    // Текст Hud сообщения о прибавление ХП (Default: Добавлено: +%.0f ХП)
#define HUD_Y    0.52        // HUD сообщения, координаты по Y
#define HUD_X    0.51        // HUD сообщения, координаты по X

public plugin_init() {
    #if defined BLOCK_MAPS
        new curmap[64]; get_mapname(curmap, charsmax(curmap));
        new dir[64]; get_localinfo("amxx_configsdir", dir, charsmax(dir));
        new file[128]; formatex(file, charsmax(file), "%s/vampire_block_maps.ini", dir);
        new bool:stop, file_id = fopen(file, "rt");
        
        if(!file_exists(file)) {
            new error[100];
            log_to_file("addons/amxmodx/logs/reVampire-error.txt", "Отсутствует файл (vampire_block_maps.ini), в папке: %s", dir);
            formatex(error, charsmax(error), "Cannot load customization file (vampire_block_maps.ini), in the folder: %s!", dir);
            set_fail_state(error);
            return;
        }
        
        if(file_id) {
            while(!feof(file_id)) {
                new buffer[64];
                fgets(file_id, buffer, charsmax(buffer)); trim(buffer);
                
                server_print("^n|============================================|");
                server_print("|=== Loading Block maps reVampir %s ===|", VERSION);
                server_print("|============================================|^n");
                
                if(!buffer[0] || buffer[0] == ';' || buffer[0] == '/') continue;
                if(!equali(buffer, curmap)) continue;
                
                stop = true;
                break;
            }
            fclose(file_id);
        }
        if(stop) pause("ad");
    #endif
    
    register_plugin("re Vampir", VERSION, "MakapoH , AcE");
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true);
}

public CBasePlayer_Killed_Post(const victim, killer, iGib) {
    if (!is_user_connected(killer)) return;

    if (victim == killer || get_member(victim, m_bKilledByBomb)) return;

    #if !defined FFA_MODE
        if (get_member(victim, m_iTeam) == get_member(killer, m_iTeam)) return;
    #endif

    #if defined FLAG_ACCESS
        if (!(get_user_flags(killer) & FLAG_ACCESS)) return;
    #endif
    
    static Float:killer_HP, Float:TempHP;
    killer_HP = get_entvar(killer, var_health);
    TempHP = get_member(victim, m_bHeadshotKilled) ? HP_HS : HP_BODY;
    
    if(!(killer_HP < HP_MAX)) return;
    
    #if defined KILL_SOUND
        emit_sound(killer, 0, SOUND, 1.0, 1.0, 0, 100);
    #endif
    
    #if defined HUD_MESSAGE
        static SyncHudMsg;
        if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj();
        set_hudmessage(0, 255, 0, HUD_Y, HUD_X, 0, 6.0, 2.0);
        ShowSyncHudMsg(killer, SyncHudMsg, MSGHUD, TempHP);
    #endif
    
    set_entvar(killer, var_health, ((killer_HP += TempHP) > HP_MAX) ? HP_MAX : killer_HP);
}
 

MakapoH.

Разработчик
Регистрация
8 Июн 2017
Сообщения
147
Симпатии
95
Пол
Мужской
#43
AcE, зачем проверку на жертву убрал? "Ошибки" в консоль могут посыпаться
 

Анатолий

Постоялец
Регистрация
8 Июн 2017
Сообщения
501
Симпатии
164
Пол
Мужской
#44
AcE, зачем проверку на жертву убрал? "Ошибки" в консоль могут посыпаться
вроде я не убирал ничего) у меня лично так:
Код:
#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif

#define FFA_MODE             // Поддержка CSDM FFA.
#define HP_BODY 10.0             // Кол-во hp за убийство.
#define HP_HS 15.0             // Кол-во hp за убийство в голову.
#define HP_MAX 100.0             // Максимальное Кол-во hp. (Выше этого значения hp прибавлять не будет)
#define KILL_SOUND             // Звук при убийстве противника.
#define HUD_MESSAGE             // HUD Сообщение о прибавке hp. (Если у игрока hp = HP_MAX то сообщения не будет)
#define SCREEN_FADE             // Мерцание экрана при убийстве. (Если игрок слепой то мерцать не будет)
#define USE_FADE_MESSAGE 1         // Метод доставки. 0 - MSG_ONE. 1 - MSG_ONE_UNRELIABLE.
//#define FLAG_ACCESS ADMIN_LEVEL_H    // Выдавать только указанным флагам. Можно выдавать сразу нескольким (ADMIN_BAN|ADMIN_LEVEL_H) Если не нужно то закомментируйте.
//#define BLOCK_MAPS             // Блокировка вампира на определённых картах. Создайте фаил vampire_block_maps.ini и запишите туда карты. (Блокировка накладывается только на выдачу HP и сообщение! Остальные функции плагина будут работать без изменений)

new g_Connected
#define IsUserValid(%1) (1 <= %1 <= 32)
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

#if defined SCREEN_FADE
new g_MsgScreenFade
#endif

#if defined BLOCK_MAPS
new bool:gBlockMaps
public plugin_precache()
{
    if (IsBlockMap())
    {
        gBlockMaps = true
        return
    }
}
#endif

public plugin_init()
{
    register_plugin("RE Vampire", "1.0.9", "MakapoH, AcE, REVO")
    RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true)

    #if defined SCREEN_FADE
    g_MsgScreenFade = get_user_msgid("ScreenFade")
    #endif
}

public client_putinserver(id) return set_bit(g_Connected, id)
public client_disconnected(id) return reset_bit(g_Connected, id)

public CBasePlayer_Killed_Post(const victim, killer, iGib)
{
    static live
    live = is_user_alive(killer)
    if (!get_bit(g_Connected, killer) && !live && is_user_ignore(killer))
        return

    if (!IsUserValid(killer) || !IsUserValid(victim) || killer == victim || get_member(victim, m_bKilledByBomb))
        return

    #if !defined FFA_MODE
    if (get_member(victim, m_iTeam) == get_member(killer, m_iTeam))
        return
    #endif

    #if defined FLAG_ACCESS
    if (!(get_user_flags(killer) & FLAG_ACCESS))
        return
    #endif

    #if defined BLOCK_MAPS
    if (gBlockMaps)
    {
    #endif
        static Float:killer_HP, Float:TempHP
        killer_HP = get_entvar(killer, var_health)
        TempHP = get_member(victim, m_bHeadshotKilled) ? HP_HS : HP_BODY

        #if defined HUD_MESSAGE
        if (killer_HP < HP_MAX)
        {
            static SyncHudMsg
            if (!SyncHudMsg) SyncHudMsg = CreateHudSyncObj()
            set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 6.0, 2.0)
            ShowSyncHudMsg(killer, SyncHudMsg, "Добавлено +%.0f ХП", TempHP)
        }
        #endif

        set_entvar(killer, var_health, ((killer_HP += TempHP) > HP_MAX) ? HP_MAX : killer_HP)
    #if defined BLOCK_MAPS
    }
    #endif

    #if defined KILL_SOUND
    client_cmd(killer, "spk buttons/bell1")
    #endif

    #if defined SCREEN_FADE
    if (get_gametime() >= Float:get_member(killer, m_blindStartTime) + Float:get_member(killer, m_blindFadeTime))
    {
        #if USE_FADE_MESSAGE == 0
        message_begin(MSG_ONE, g_MsgScreenFade, .player = killer)
        #endif
        #if USE_FADE_MESSAGE == 1
        message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, .player = killer)
        #endif
        write_short(1<<10); write_short(1<<11); write_short(0x0000); write_byte(0)
        write_byte(0); write_byte(200); write_byte(75); message_end()
    }
    #endif
}

#if defined BLOCK_MAPS
stock IsBlockMap()
{
    new got_line, line_num, len
    new cfgdir[400], cfgpath[400], mapname[40], txt[400]
    get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir))
    rh_get_mapname(mapname, 40 -1)
    format(cfgpath, 400, "%s/vampire_block_maps.ini", cfgdir)
    if (file_exists(cfgpath))
    {
        got_line = read_file(cfgpath, line_num, txt, 400 -1, len)
        while(got_line > 0)
        {
            if (!strcmp(txt, mapname))
                return 0
            line_num ++
            got_line = read_file(cfgpath, line_num, txt, 400 -1, len)
        }
    }
    return 1
}
#endif

is_user_ignore(id)
    return is_user_bot(id) || is_user_hltv(id)
Ошибок нет!)