Anti-Spam FlashLight

Anti-Spam FlashLight 1.31

Нет прав для скачивания
Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
Leo_BH, поле "Установка" не заполнена, смотрите, как его заполняют другие участники форума
Вкладка "исходный код" не занесено в бб-код "Код"
Версия в шапке ресурса не совпадает с версией в исходнике
 
Сообщения
496
Реакции
621
Помог
16 раз(а)
Достаточно давно использую этот плагин, откуда взял - не помню.
[ 31] AntiSpam FlashLight 1.2a Leo_[BH] flashlight_no_s running
Полезен тем, что иногда особо одарённые начинают быстро переключать фонарик, в итоге в прямой видимости может просаживаться фпс.
 
Сообщения
350
Реакции
73
Помог
1 раз(а)
Gudaus, ты одобряешь код? об этом скриптере просто плохие отзывы кругом. Мало кто хочет ставить его плагины :crazy:
 
Сообщения
496
Реакции
621
Помог
16 раз(а)
GALAXY, я такими вещами не занимаюсь. На мой сугубо непрофессиональный взгляд всё в порядке.
 
Сообщения
2,288
Реакции
1,739
Помог
31 раз(а)
Полезен тем, что иногда особо одарённые начинают быстро переключать фонарик, в итоге в прямой видимости может просаживаться фпс.
Такие люди еще существуют?)
 
Сообщения
2,751
Реакции
3,014
Помог
61 раз(а)
Тут ошибаться толком негде.
 
Последнее редактирование модератором:
Сообщения
67
Реакции
85
Gudaus, ты одобряешь код? об этом скриптере просто плохие отзывы кругом. Мало кто хочет ставить его плагины :crazy:
Рассадниками "плохих отзывов" являются как раз люди, которые любят поливать грязью других, и не только меня. При чем многие из них, даже писать плагины толком не обучены, но несколько функций знают, и всем это стараются показать.
плагин г*вно
Имейте своё мнение, а не пересказывайте их цитаты.
Я прекрасно понимаю, что оптимизация кода - это процесс, которым можно заниматься очень долго. А вариант, который первым приходит в голову для реализации конкретной идеи далеко не всегда является лучшим. Всегда есть место для совершенства.
Самая лучшая оптимизация как раз есть в бесплатных продуктах с открытым исходным кодом, где любой знающий человек может подсказать авторам, как можно было бы решить конкретную задачу более оптимальным способом. Именно этот принцип совместной открытой разработки дает возможность создать в конечном счете продукт, оптимизация которого будет на достойном уровне. Ведь, как говориться, одна голова хорошо, а две лучше.
Адекватную критику, когда конкретно указывают как тебе можно улучшить свой код я одобряю, так как никто не совершенный, и это действительно полезно всем
Но, как у нас иногда бывает, вместо того, чтобы подсказать автору, где можно улучшить оптимизацию, начинают орать во всю "плагин г*вно, аффтар дно". Не понимаю даже, почему таких людей слушают, когда даже никакие технические аргументы не представлены. Странно, но на alliedmods я такого не видел...
Я давно уже пишу плагины под заказ. И ~98% отзывов положительные. Но я редко посещаю форумы, со мной связуются непосредственно через email/vk/discord и почти все отзывы находятся на моём ресурсе, где я и прощу их оставлять своим клиентам после исполнения заказа.
Подлинные негативные отзывы про меня есть. Их очень мало. Это скорее вызвано большими ожиданиями от заказчика. Иногда тем, что я якобы кому-то должен сделать больше, чем было обсуждённо до оплаты. Частично бывает и моей вине. Если работаешь много, то как минимум несколько недовольных клиентов будет, везде не без этого.
Если негативные отзывы относятся к тому, что я якобы кидала и обманываю людей - это клевета и ложь.
Если мне внесли предоплату, то я всегда исполняю то, что было указано заказчиком в ТЗ.
В крайнем случае, могу вернуть часть денег обратно.
Часть своих плагинов я делал специально для продажи. Да, я делал плагины для своего сервера и решил их продавать за реальные деньги. У некоторых редких личностей от этого видимо что-то бомбит, мол, "Как это ты на этом г**** еще и зарабатываешь? Я ж то лучше тебя плагины пишу. Я код твой хоть не видел, но я то знаю!"
Иногда, это банальная зависть от того, что я чего-то добился, а не ты. Иногда просто несчастные люди, которые поливают грязью других. Таким людям можно только посочувствовать.
Наверное, моя ошибка была в том, что я слишком рано начал давать объявления про услуги о написании плагинов. И хоть я уже чувстовал себя уверенно в написании некоторых плагинов, на то время, я очень мало публиковал своих плагинов и по большому счёту моё портфолио состояло из платных плагинов из моего магазина. Если, на то время (~2015 год), пошерстить интернет по запросу о моих плагинах, вы бы нашли с бесплатных только самые простейшие плагины. Плагины, написанные мною под заказ нигде мною не публиковались, и сам факт разработки и описания функций плагина оставался в тайне. Так и вышло, что у публичном доступе плагинов, соответствующим моим навыкам, не было тогда. От этого и зародилась первая волна негатива в мою сторону. Стоит ли указывать, что самый "активный участник волны" в последствии получил бан на форуме за другие "заслуги"? Позже я уже стал активнее публиковать свои бесплатные плагины, многие с которых основывались на своих идеях. Но платные плагины остались.

Извините, если с кого-то задел, но накипело уже. Особо убивают фразы типа:
все говорят/везде говорят/кругом говорят
Кто такие все? Где это везде/кругом? Где ваше мнение? Вы что-то заказывали у меня, чтобы утверждать это?
И даже если вы ничего не утверждаете, вы просто распространяете ложную информацию.


И последнее, я прекрасно понимаю, что адекватным личностям, если им нечего сказать, они просто промолчат. Спасибо вам и за это.
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
В таком варианте задержка не в использовании фонарика, а в использовании команды impulse. Это означает, что и выключить фонарик можно будет не ранее значения квара. Очень неудобно, когда нужно кратковременно и одиночно "моргнуть".
Можно поймать момент выключения фонарика и уже там установить время следующего использования.
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
zhorzh78, можно сделать еще и так)
Код:
#include <amxmodx>
#include <reapi>

new pcvar_reload_flashlight
new Float:BlockTime[33];
new bool:g_bUseFlashLight[33];

public plugin_init()
{
    register_plugin("AntiSpam FlashLight", "1.31", "Leo_[BH]")
  
    pcvar_reload_flashlight = register_cvar("flashlight_reload", "1.5")
  
    RegisterHookChain(GamedllFunc_CBasePlayer:RG_CBasePlayer_ImpulseCommands, "RG_ImpulseCommand", 0);
}

public RG_ImpulseCommand(id)
{
    if(get_entvar(id, var_impulse) != 100) return 0
    if(g_bUseFlashLight[id])
    {
        g_bUseFlashLight[id] = false;
        return 0;
    }
  
    new Float:gametime = get_gametime()
  
    if(BlockTime[id] <= gametime)
    {
        BlockTime[id] = gametime + get_pcvar_float(pcvar_reload_flashlight)
        g_bUseFlashLight[id] = false;
        return 0
    }
  
    return 1
}

public client_connect(id)
{
    BlockTime[id] = 0.0;
    g_bUseFlashLight[id] = false;
}
зы: надо руки обламывать за релиз с return 0/1, есть константы, они придуманы не просто так, для красоты...
 
Последнее редактирование:
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
zhorzh78, можно сделать еще и так)
Код:
#include <amxmodx>
#include <reapi>

new pcvar_reload_flashlight
new Float:BlockTime[33];
new bool:g_bUseFlashLight[33];

public plugin_init()
{
    register_plugin("AntiSpam FlashLight", "1.31", "Leo_[BH]")
 
    pcvar_reload_flashlight = register_cvar("flashlight_reload", "1.5")
 
    RegisterHookChain(GamedllFunc_CBasePlayer:RG_CBasePlayer_ImpulseCommands, "RG_ImpulseCommand", 0);
}

public RG_ImpulseCommand(id)
{
    if(get_entvar(id, var_impulse) != 100) return 0
    if(g_bUseFlashLight[id])
    {
        g_bUseFlashLight[id] = false;
        return 0;
    }
 
    new Float:gametime = get_gametime()
 
    if(BlockTime[id] <= gametime)
    {
        BlockTime[id] = gametime + get_pcvar_float(pcvar_reload_flashlight)
        return 0
    }
 
    return 1
}

public client_connect(id)
{
    BlockTime[id] = 0.0;
    g_bUseFlashLight[id] = false;
}
зы: надо руки обламывать за релиз с return 0/1, есть константы, они придуманы не просто так, для красоты...
поправь логику))) в твоем варианте if(g_bUseFlashLight[id]) никогда не сработает)
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Sonyx, fixed
и вообще, это тупо пример)
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
neygomon, кст нет смысла еще 1 переменную вводить - достаточно вовремя обнулять BlockTime и сравнивать с 0.0
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Sonyx, вариаций можно налепить много...
суть будет одна.
да и переменная никак серверу не навредит(несколько байт памяти потратит только, кек)
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
neygomon, давай тогда уж 2 бесполезных переменных, раз со временем работать не умеем.
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Кст, учитывая, что хук вызывается каждый фрейм можно и битами поиграться
 
Сообщения
265
Реакции
315
Помог
10 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Sonyx, биты не сильно дадут + в производительность)
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Раз уж все так завелись, то тогда и я что то да напишу. Проверка на включен ли фонарик
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L5876

Кст, учитывая, что хук вызывается каждый фрейм можно и битами поиграться
Не совсем каждый фрейм. https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L6507

И если уж хочется сильно оптимизировать, тогда нужно вынести в апи данный метод https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/multiplay_gamerules.cpp#L4189
19 Дек 2018
А еще очень интересно взглянуть сюда
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L6869
 

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

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