Anti-Spam FlashLight

Anti-Spam FlashLight 1.31

Нет прав для скачивания
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
В связи с тем, что я мусор этого форума (слова неугомона), предоставляю вам две реализации данного плагина, более лучшие, как кажется на мой взгляд.
Первый вариант моего неизвестного друга, преимущество в том, что не юзает никаких синков, работает точно так же:
Код:
#pragma semicolon 1

#include <amxmodx>
#include <reapi>

const gmsgFlashlight = 68;

new Float:mp_flashlight_reload;
new Float:g_flNextFlashLightTime[MAX_CLIENTS + 1];

public plugin_init()
{
    register_plugin("Anti-spam Flashlight", "1.0", "unknown");

    register_message(gmsgFlashlight, "@MSG_Flashlight");

    bind_pcvar_float(register_cvar("mp_flashlight_reload", "1.5"), mp_flashlight_reload);
}

@MSG_Flashlight(iMsgId, iDest, iPlayer)
{
    new Float:flTime = get_gametime();

    if (!get_msg_arg_int(1))
    {
        g_flNextFlashLightTime[iPlayer] = flTime + mp_flashlight_reload;
        return;
    }

    if (g_flNextFlashLightTime[iPlayer] > flTime)
    {
        rh_emit_sound2(iPlayer, 0, CHAN_ITEM, "common/null.wav");

        set_entvar(iPlayer, var_effects, get_entvar(iPlayer, var_effects) & ~EF_DIMLIGHT);

        set_msg_arg_int(1, ARG_BYTE, 0);
    }
}
Второй вариант мой, отличается от ТС'шного тем, что если вы флудите кнопкой, то вы не можете его использовать, но как только прекратил, то можете (если в промежуточное время вы нажимете кнопку, то добавляется время для след.нажатия), на мой взгляд именно так должен работать "анти-спам":
Код:
#pragma semicolon 1

#include <amxmodx>
#include <reapi>

new Float:mp_flashlight_delay_add;
new Float:g_flNextFlashLightTime[MAX_CLIENTS + 1];

public plugin_init()
{
    register_plugin("Anti-spam Flashlight", "1.0", "whore");

    bind_pcvar_float(register_cvar("mp_flashlight_delay_add", "0.5"), mp_flashlight_delay_add);

    RegisterHookChain(RG_CBasePlayer_ImpulseCommands, "@CBasePlayer__ImpulseCommands_Pre", false);
}

@CBasePlayer__ImpulseCommands_Pre(iPlayer)
{
    if (get_entvar(iPlayer, var_impulse) != 100)
        return HC_CONTINUE;

    new Float:flTime = get_gametime();

    if (g_flNextFlashLightTime[iPlayer] > flTime)
    {
        g_flNextFlashLightTime[iPlayer] = flTime + mp_flashlight_delay_add;

        set_entvar(iPlayer, var_impulse, 0);

        return HC_BREAK;
    }

    g_flNextFlashLightTime[iPlayer] = flTime + mp_flashlight_delay_add;

    return HC_CONTINUE;
}

Ждем лайт версию с 4 переменными и массивом.
 

Download all Attachments

Последнее редактирование:
Сообщения
327
Реакции
289
Помог
9 раз(а)
rh_emit_sound2(iPlayer, 0, CHAN_ITEM, "common/null.wav");
Вот я осел.. Как же не додумался пустой звук отправить.. Зря целый час вчера потерял с этим пиликаньем, в итоге бросил)
Второй вариант- не катит. Слишком много импульсов дергается впустую
 

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

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