Top Bomber

Top Bomber 0.2.0

Нет прав для скачивания

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
Albertosik добавил(а) новый ресурс:

Top Bomber - Выдают бомбу одному из трёх лучших террористов за раунд

Данный плагин каждый раунд, выдаёт бомбу одному из трёх лучших террористов. В конфиге можно настроить, с какого раунда начать, выдавать бомбу.
Узнать больше об этом ресурсе...
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Top boomer сначала прочитал :crazy:
Предложение: сделать не трём лучшим, а n (по дефолту 3) лучшим.
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
А счетчик раундов и получение смертей/фрагов используя реапи нельзя получить?
12 Июн 2021
Да и наличие бомбы у игрока, скорее всего, проще проверить используя мембер m_bHasC4, а не перебором через натив rg_has_item_by_name
12 Июн 2021
Ну или сразу индекс бомбера получить, используя m_iC4Guy (последнее проверять надо)
 
Последнее редактирование:

Albertio

скриптизёр
Сообщения
336
Реакции
393
Предупреждения
5
Помог
7 раз(а)
d3m37r4, вот счётчик раунда понятно можно, а как фраги и смерти получить? Наличие бомбы тоже изменю по твоему совету.
Nordic Warrior, сегодня как раз юзер один отписал на счёт ошибки, я забыл что есть карты без бомбплейса, вообщем ошибки в логе - исправлю xD
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
Javekson, какие проблемы должны возникнуть?
 
Сообщения
1,015
Реакции
818
Помог
10 раз(а)
d3m37r4, rs обнулит же var_frags, m_iDeaths, тогда уже смысла не будет в этом плагине, так игрок набил 5 фрагов, обнулил счет, но он будет не в топе уже и бомбу не получит. Не буду утверждать за get_user_deaths и get_user_frags, но думаю что будет такой же смысл. Лучше уж самостоятельно проводить подсчет фрагов и смертей, наверное.
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
Javekson, что в этом такого?) Ну обнулил один чел себе статистику и ладно.
 
Сообщения
1,015
Реакции
818
Помог
10 раз(а)
d3m37r4, так потеряется смысл идеи самого плагина Top Bomber, я считаю
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
Код:
#include <amxmodx>
#include <reapi>

public stock const PluginName[]     = "Top bomber";
public stock const PluginVersion[]     = "0.0.1";
public stock const PluginAuthor[]     = "d3m37r4";

new RoundNum;

#define m_iCurrentRound     (get_member_game(m_iTotalRoundsPlayed) + 1)

public plugin_init() {
// for AMXX 1.9.0 and older
#if AMXX_VERSION_NUM < 200 || (AMXX_VERSION_NUM == 200 && AMXX_VERSION_LOCAL_REV_NUM < 5412)
    register_plugin(PluginName, PluginVersion, PluginAuthor);
#endif

    bind_pcvar_num(create_cvar(
        .name = "amx_topbomber_round",
        .string = "2",
        .flags = FCVAR_SERVER,
        .description = "Round from which to start determining",
        .has_min = true,
        .min_val = 0.0
    ), RoundNum);

    RegisterHookChain(RG_CBasePlayer_MakeBomber, "CBasePlayer_MakeBomber_Pre", false);
    // RegisterHookChain(RG_CBasePlayer_MakeBomber, "CBasePlayer_MakeBomber_Post", true);
}

public CBasePlayer_MakeBomber_Pre(const id) {
    if(RoundNum > m_iCurrentRound) {
        return HC_CONTINUE;
    }

    if(!is_user_connected(id)) {
        return HC_CONTINUE;
    }

    new bestPlayer, Float:maxKdRatio;
    for(new player = 1, Float:kdRatio, Float:frags; player <= MaxClients; player++) {
        if(!is_user_alive(player)) {
            continue;
        }

        if(get_member(player, m_iTeam) != TEAM_TERRORIST) {
            continue;
        }

        frags = get_entvar(player, var_frags);
        if(frags) {
            kdRatio = frags/Float:get_member(player, m_iDeaths);
        }

        if(kdRatio > maxKdRatio) {
            maxKdRatio = kdRatio;
            bestPlayer = player;
        }
    }

    if(id != bestPlayer) {
        SetHookChainArg(1, ATYPE_INTEGER, bestPlayer);
    }
    return HC_CONTINUE;
}

// public CBasePlayer_MakeBomber_Post(const id) {
//     log_amx("Round: %d | CBasePlayer_MakeBomber_Post | player %n (id = %d) was made a bomber", m_iCurrentRound, id, id);
// }
P.S. Для более точного определения наилучшего игрока, лучше всё же работать с игровой статистикой, как сказал Javekson
Оттуда можно будет вытянуть победы игрока за террористов, кол-во установок бомбы, выигранные раунды и т.п. (что можно будет добавить по аналогии в код, что приведен выше).
Если кто-то фапает на гибкость плагина, методы можно еще и отключаемыми сделать (привет пружинщику).
 
Последнее редактирование:

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
Albertosik, у тебя не постхук юзается, а пре, в обнове. И cstrike уже не юзается, но подключен. Таски в 1 секунду хз зачем.
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
Albertosik, если уж решил пре хук мейкбомбер использовать, используй правильно. Тебе в нем нужно индекс бомбера переназначить и подсунуть значение (пример я уже выше кидал), которое твоя "функция" get_top_bomber должна выдать. Танцев костыльных с rg_give_item и rg_transfer_c4 не надо делать.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу