Иконка ресурса

Ядро плагина Effect Calculator 1.0

Нет прав для скачивания
Поддерживаемые игры
  1. CS: Source (OrangeBox)
  2. CS: Source (v34)
  3. CS: GO
  4. Team Fortress 2
  5. DOD: Source
  6. L4D 1 & 2
Цель плагина: исключить конфликты\недочеты в скорости/уроне/гравитации игрока
Плагин был написан даже избежать конфликтов плагинов, устанавливающих свою скорость игрокам, часто в итоге ухудшая ситуацию
Он позволяет сторонним плагинам просчитывать отдельные множители и добавлять свои эффекты в процентном соотношении (1 плагин дает +20% скорости, другой +30%, итого у игрока +50% скорости)
Работает он не только со скоростью, а с любыми своего рода "эффектами"

Как работает?
Для каждого "эффекта" (коэффициента) просчитываются свои множители (каждый множитель путем сложения значений других плагинов) и перемножаются
Допустим:
Эффект "Урон" имеет 2 множителя: 'Базовый" и "Дополнительный", все они по-умолчанию - 1.0
Есть 3 плагина:
Первый плагин увеличивает множитель "Базовый" на 0.2 (+60%)
Второй плагин увеличивает множитель "Базовый" на 0.3 (+40%)
Третий плагин уменьшает множитель "Дополнительный" на 0.25 (-25%)
Итоговый множитель эффекта "Урон" просчитывается следующим образом: (1.0 + 0.4 + 0.6) * (1.0 - 0.25) = 1.5 (150%)
Значение этого эффекта можно использовать в стороннем плагине, например для того же изменения урона (Умножать урон на те же 1.5, например)
Не поняли? Попробуйте прочитать это: https://hlmod.ru/threads/effect-calculator.53498/post-478495

Это все очень интересно, но есть на что посмотреть?
Да! Я несколько часов провел за написанием тестовых плагинов (а мог бы готовиться к ЕГЭ)
Также данные плагины (как и само ядро) спокойно реагирует на sm plugins refresh, а это значит, что загрузив сначала ядро, вы можете спокойно загружать/выгружать остальные плагины
В комплекте есть несколько плагинов на урон:
Сам основной плагин (plugins/disabled/effect_damage.smx), он запускает просчет множителя урона и умножает его
Плагины-бусты:
  • Увеличение урона от огня (plugins/disabled/ecalctest/damage_burn.smx)
    Увеличивает основной урон на 100%

  • Увеличение урона при хп меньше 50 (plugins/disabled/ecalctest/damage_lowhealth.smx)
    Увеличивает основной урон на 100%

  • Увеличение урона за террориста (plugins/disabled/ecalctest/damate_t.smx)
    Увеличивает основной урон на 100%

  • Умножение урона на общий множитель урона противника (plugins/disabled/ecalc/damate_copycat.smx)
    Мое любимое: Имея админ-флаг b, введя !damage_copycat, ваш урон умножается на множитель урона противника
    Снайперам с бустами будет не легко
Сам основной плагин (plugins/disabled/effect_speed.smx), он запускает просчет множителя скорости и устанавливает его при спавне игрока
Плагины-бусты:
  • Увеличивает скорость за террориста (plugins/disabled/ecalctest/speed_t.smx)
    Увеличивает скорость передвижения за террориста на 20%

  • Увеличивает скорость с ножом в руках (plugins/disabled/ecalctest/speed_speed.smx)
    Увеличивает скорость передвижения за террориста на 30%
    Также пересчитывает скорость игрока при любой смене оружия

  • VIP-Модуль скорость от R1KO, модифицированный под ядро (plugins/disabled/VIP_ECalc_Speed.smx)
    Оригинал: https://hlmod.ru/resources/vip-speed.162/
    Увеличивает скорость передвижения на N при режиме ++
    Умножает скорость передвижения игрока в N раз при обычном режиме
    Подробнее о режимах работы читайте в оригинальной теме
    Без ядра плагин будет работать в обычном режиме
    Также недостающие файлы качать с оригинала

Ага, но я программист, программирую тостеры, как мне быть? Я тоже так хочу!
Для вас собраны исходники тестовых плагинов, описанных выше (+ я немного расписал VIP_ECalc_Speed.sp)
Также для вас есть библиотека (effectcalc.inc) с примерно понятным описанием на моем не совсем хорошем английском языке
Также для вас прямо здесь, прямо сейчас русифицированная версия:
PHP:
/***
* ПОСМОТРИТЕ СНАЧАЛА ПРИМЕРЫ
*
* Terms:
*    "Эффект" - Имя просчета "Множителей" "эффекта" и дальнейшее их перемножение
*    "Множитель" - "Этап", значение, которое будет перемножено с остальными "множителями" одного "эффекта"
*
* Также ядру не требуется регистрация "эффектов" или "множителей"
* Он делает это автоматически
* Ядро имеет авто-отчистку множителей без хуков при старте карты (Но не эффектов!)
* Так что вам не нужно удалять ваш хук при выгрузке плагина: висеть ничего не будет
*
* Удачи
***/

/***
*    Hook callback typeset
***/
typeset ECalc_HookCallBack    {
    function void (any[] data, int size, float &value);
}

/***
*    ECalc_Hook            Отлов просчета множителя
*
*    @param    effect        Имя эффекта
*    @param    mult_name    Имя множителя (одинаковые множители суммируются)
*    @param    func        Callback хука (смотреть ECalc_HookCallBack)
*    @param    remove        Если истина - хук будет удален из множителя
*
*    @no return
***/
native void ECalc_Hook(const char[] effect, const char[] mult_name, ECalc_HookCallBack func, bool remove = false);

/***
*    ECalc_Run            Просчет конечного множителя эффекта
*
*    @param    effect        ID эффекта (так будет чуточку быстрее)
*    @param    data        Массив данных (опционально)
*    @param    size        Размер массива
*
*    @return    multiplier    Конечный множитель эффекта
**/
native float ECalc_Run(int effect, any[] data = NULL_VECTOR, int size = 0);

/***
*    ECalc_GetEffect        Возвращает ID эффекта
*
*    @param    effect        Имя эффекта
*
*    @return                ID эффекта для ECalc_Run
***/
native int ECalc_GetEffect(const char[] effect);

/***
*    ECalc_Run2            Аналог ECalc_Run2, но использует имя эффекта
*                        Можете использовать, если вам лень расписывать плагин
*                        Ядро имеет быстрый поиск по карте строк, так что разницы особой нету
*
*    @param    effect        Имя эффекта
*    @param    data        Массив данных
*    @param    size        Размер массива
*
*    @return    multiplier    Final multiplier of this effect, ready to use
**/
stock float ECalc_Run2(const char[] effect, any[] data = NULL_VECTOR, int size = 0)
{
    return ECalc_Run(ECalc_GetEffect(effect), data, size)
}

public SharedPlugin __pl_effectcalc =
{
    name = "effectcalc",
    file = "effectcalc.smx",
#if defined REQUIRE_PLUGIN
    required = 1,
#else
    required = 0,
#endif
}

#if !defined REQUIRE_PLUGIN
public void __pl_effectcalc_SetNTVOptional()
{
    MarkNativeAsOptional("ECalc_Hook");
    MarkNativeAsOptional("ECalc_Run");
    MarkNativeAsOptional("ECalc_GetEffect");
}
#endif
Требования
SourceMod
Установка
Переместить plugins/effectcalc.smx в addons/sourcemod/plugins/
Переместить по желанию плагины из plugins/disabled/в addons/sourcemod/plugins
Ввести в консоль sm plugins refresh
Автор
inklesspen
Скачивания
79
Просмотры
1,511
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя inklesspen

Сверху