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

amxx reapi [ACS] Weapon Control System 1.4.0.8

Нет прав для скачивания
Версия Дата выхода Скачиваний Оценка
1.4.0.8 13 0.00 звёзд 0 оценок
1.4.0.7 14 0.00 звёзд 0 оценок
1.4.0 49 0.00 звёзд 0 оценок
Исправлено:
  • Утечка памяти, поскольку динамические массивы и хэши после использования требуют ручного удаления данных - ArrayDestroy и TrieDestroy. Упустил этот момент, что приводило на нагруженном сервере к утечке памяти ~25КБ/мин.
Внимание! После обновления плагина требуется перезапуск сервера, и лучше не рестарт, а цикл "стоп-старт".
  • Нравится
Реакции: WILL_BE
Исправлено:
  • Исправлена ошибка с залипанием "вечной" разминки, такое происходило крайне редко. Сценарий ошибки удалось обнаружить лишь спустя полгода - игрок в 1 слоте выходил до окончания разминки.
  • Обновлен модуль RefsAPI до 1.0.3.6компилирован без SQL-менеджера и с пониженной версией GLIBC - для Арены).
  • Доработан функционал команды register_concmd("round_end", "cmd_round_end", ADMIN_RCON, "<delay> <id string> [#NUM]"), чтобы можно было перезапустить WCS с нужного раунда, например, в ночном режиме: round_end 0.5 3 #2 - перезапуск игры со второго раунда, без разминки.
  • Значительно оптимизирован код работы с кварами. Теперь все по феншую, как и с SQL:boast:
Положил в архив, в отдельную папку, ReGame 5.27.0.730-dev.

Спасибо, WILL_BE, за помощь!
  • Like a Boss
Реакции: WILL_BE
Исправлено:
  • Понижена требуемая версия ReAPI до 5.21, возможно, еще ниже...
  • Обновлен модуль RefsAPI до 1.0.3компилирован без SQL-менеджера и с пониженной версией GLIBC - для Арены)
  • Переработан код учета всех объектов
  • Исправлена ошибка в использовании реапишной is_nullent(), в результате чего много функций вызывалось по 2 раза
  • Восстановлена полная совместимость с AES и прочими плагинами, выдающими произвольное оружие игрокам в начале раунда
  • Обновлен файл конфига (рекомендую удалить старый, новый создается автоматически)
  • Обновлен словарь
  • Положил в архив, в отдельную папку, ReGame 5.27.0.730-dev собранную с последним фиксом s1lent-a, устраняющим причину крашей в UpdateClientData(edict_s const*, int, clientdata_s*), а также полностью восстанавливающий логику ReGame для гранат (появляется детач от игрока). Это не релиз, а промежуточный билд, который пока имеет косметический баг с бомбой - при ее установке вызывается 2 раза RemovePlayerItem(). В остальном все работает идеально, краши пропали. За что ему большое спасибо:good2:
  • Нравится
Реакции: IIIKuIIeP и yamusaka
Исправлено:
  • Ошибка с id = 0 в acs_check_filter_row, на функционал не влияла.
  • Баг AMXX со словарем в precache, при первом старте сервера.
  • Добавлены фиксы WILL_BE, в словаре и коде, у меня этих сценариев нет, а ему спасибо :good2:Если установить флаг 0x2 (добавить +2 к текущему значению) в значение квара acs_wcs_vipmenu_mode - VIP меню не будет открываться вне зоны спавна и после времени mp_buytime с выводом соответствующей ошибки.
  • Отключил accuracy_fix и перенес корректировку отдачи в модуль refsapi. Отдача теперь настраивается в acs_wcs.cfg.
  • Переключил работу с кварами на менеджер refsapi. Конфигурационный файл теперь создается корректно всегда, поддерживает UTF-8, сортирует квары, понимает изменения состава кваров в плагине и перегенерирует конфиг при необходимости с их текущими значениями, неиспользуемые или отключенные квары комментирует.
s1lent большое спасибо за терпение :blush2: и помощь в работе с кварами :good2:
В состав предыдущего архива 1.3.8.4 по ошибке положил тестовый модуль (скопировал не из той папки). Исправил, извините :blush2:

Кто скачал предыдущий архив - просто замените refsapi_amxx_i386.so на файл из этого архива. Все остальное осталось без изменения, включая версию.
Исправлено:
  • Округление величины воруемого здоровья до целого в item_vampire, чтобы не ползали трупы игроков с 1HP. Возникало из-за разночтений кого считать трупом в ReGame и ReHLDS.
  • "Сумашедшее" поведение ReGame при блокировке выдачи бомбы игрокам...
  • Загрузка словаря перенесена в секцию для инициализации нативов, чтобы при старте сервера правильно отображался текст таймера.
  • Все "тяжелые" операции вынесены в отдельный модуль AMXX - REFSAPI, который выполняет необходимые плагину операции без "циклов по циклу в цикле", в среднем, в 90 раз быстрее, чем ReAPI . Подключается путем добавления строки "refsapi" после "reapi" в файле ./amxmodx/configs/modules.ini
    Код:
    sockets
    mysql
    csx
    cstrike
    reapi
    refsapi
    Исходник модуля тут: https://github.com/jobmail/refsapi/
    Доступных нативов, пока, не много:
    Код:
    native rf_get_players_num(nums[] = 0, nums_size = 0, bool:only_teams = false);
    native rf_get_user_weapons(const id, ent[], ent_size);
    native rf_get_weaponname(const ent, name[], name_len);
    native rf_get_ent_by_class(const classname[], const id = 0, ent[], ent_size);
    native Float:rf_roundfloat(const Float:value, const precision = 0);
    native bool:rf_get_user_buyzone(const id);
Добавлено:
  • Изменен режим работы таймеров - поле delay всех фильтров. Если указать значение со знаком +N сработает за N секунд до конца раунда.
Добавлен новый раздел:
  • [SOUNDS] с префиксом ;* для прекеша различных звуков:
    Код:
    ; [SOUNDS]
    ; <name> <file_name>
    
    ;* "planted" "bombpl"
    ;* "defused" "bombdef"
    Файлы с расширением .wav необходимо положить в ./sound/wcs/
Добавлен новый элемент:
  • item_mission - выполняет проверку какая команда не выполняет свою миссию и запускает соответствующее событие ACS_ET_MAP_MISSION_TT (type = 8192) или ACS_ET_MAP_MISSION_СT (type = 16384). Можно, например, воспроизвести звук, включить таймер или как-нибудь наказать...
  • item_snd_* - воспроизводит звук с названием из раздела [SOUNDS], например, item_snd_bombpl. Через ":" можно уточнить команду получателя: 0 - все, 1 - TT, 2 - CT, 3 - команда отправителя (на ком сработало событие).
Добавлены новые события:
Код:
enum _:ACS_WCS_EVENT_TYPES {
    ACS_ET_ALL                  = -1,
    ACS_ET_NONE                 = 0,
    ACS_ET_KILL                 = 1,
    ACS_ET_KILL_HS              = 2,
    ACS_ET_KILL_HE              = 4,
    ACS_ET_KILL_KNIFE           = 8,
    ACS_ET_KILL_BOMB            = 16,
    ACS_ET_ROUND_START          = 32,
    ACS_ET_ROUND_END            = 64,
    ACS_ET_BOMB_PLANTING        = 128,
    ACS_ET_BOMB_PLANTED         = 256,
    ACS_ET_BOMB_DEFUSING        = 512,
    ACS_ET_BOMB_DEFUSED         = 1024,
    ACS_ET_WIN_TT               = 2048,
    ACS_ET_WIN_CT               = 4096,
    ACS_ET_MAP_MISSION_TT       = 8192,
    ACS_ET_MAP_MISSION_CT       = 16384,
    ACS_ET_KILL_SELF            = 32768,
}
Цифры - это значение поле type раздела [ADVANCED EVENTS]. Например, можно заменить стандартные звуки, так:
Код:
;% "Бомба установлена"    "256"    ""    ""    "3"    ""    "" "" "" ""    "item_snd_planted"            ""    ""    ""
;% "Разминировал бомбу"    "1024"    ""    ""    "3"    ""    "" "" "" ""    "item_snd_defused"            ""    ""    ""
Добавлены новые элементы:
  • item_evasion:X - уклонение от атаки противника с вероятностью X в %
  • item_vampire:X - вампиризм. Если X со знаком + - указывает процент от нанесенного урона преобразуемый в здоровье для атакующего, если со знаком - - тоже самое, только здоровье отнимется у атакующего (что-то вроде проклятья :rofl:), если знак не указан - абсалютное значение здоровья, которое добавится после убийства противника.
  • item_jump - супер-мега плавный мультиджамп, настроенный под колесики игровой мышки A4tech X7 и ноутбучной Logitech AnyWhere. bind mwheelup +jump, bind mwheeldown +jump - и пробуем скакать на ящики крутя колесико мышки. Чтобы запрыгнуть куда-нибудь под потолок, нужно крутить колесико "туда-сюда". Кто понимает что делает - можно задать параметры мультиджампа через item_jump:X, где X - число в следующем формате: BITS(0->32): 10(VELOCITY_Z) + 9(VELOCITY_Y) + 9(VELOCITY_X) + 4(MAX_COUNT). Если укажите это число со знаком +, указанные значения будут в %, если без указания знака - абсолютные величины скоростей.
  • item_bhop - авто BunnyHop или супер BunnyHop, если указать item_bhop:1. bind space +jump, зажимаете пробел и прыгаете... Спасибо, разработчикам ReGAME!:good2::ok:
  • В поле RECOIL для ножей (weapon_knife) возможно указать значение отличное от 1.0 для изменения расстояния атаки, в большую или меньшую сторону. Случайно увидел тему на форуме, fl0wer подсказал(-а) "как". Спасибо :-)
  • В поле EXP всех фильтров можно через : указать диаппазон скилла CSX. Например, 200-2000:130-150, если условие по опыту не требуется, а необходимо указать только скилл :130-150.
Исправлено:
  • Ошибка в фильтрах, при указании диапазонов с числами более 32768.
  • Наличие плагинов AES, CSX и GameCMS теперь определяется автоматически.

ВНИМАНИЕ! Изменился файл словаря и состав кваров, настройки подключения к GameCMS больше не нужно указывать. Переименуйте файл конфига и сгенерируйте новый.
Исправлено:
  • Баг с меню /killfader и /damager
    20240509181919_1.jpg
  • Модели p_, v_ и w_ можно теперь указывать поштучно, раньше для отображения необходимо было указывать одновременно p_ и v_ модели.
  • Совместимость с [ACS] Vote.
Спасибо, HAFAH9 :good2: за тестирование и найденные баги :pardon:
Исправлено:
  • Заголовок меню дамагера
  • VIP-меню закрывается при смерти игрока
  • Возможность открытия меню настроек say /damager и say /killfaider для мертвых и спектраторов
  • Нравится
Реакции: BJlagucJlaB
Добавлено:
  • Поддержка указания имени игрока (через макрос _nick:) или его STEAM_ID/VALVE_ID в поле maps всех фильтров, например, можно выдавать оружие или накладывать любые ограничения на определенного игрока
  • Добавлена поддержка выдачи 1 элемента из группы, для этого нужно указать в разделе [ADVANCED TASKS] в поле "delay" любое отрицательное значение - это и будет номер группы. У нас используется для выдачи ножей для игроков с разными флагами, которые могут пересекаться.
    Код:
    ;$ "Нож Girl" "0" "p" "" "1" "-1" "" "" "" "" "girlknife" "" "" ""
    ;$ "Нож Меценат" "0" "s" "" "1" "-1" "" "" "" "" "goldknife" "" "" ""
    ;$ "Нож ADMIN" "0" "u" "" "1" "-1" "" "" "" "" "adminknife" "" "" ""
    
    ; Комментарий: у Девушек есть флаги s и u, у Меценатов есть также флаг u. Задачи для группы выполняются до 1 совпадения, поэтому порядок элементов должен быть от более уникального к менее.
    
    ; Если бы не было групп то девушке бы выдавался 3 раза нож (у нее есть флаги из 3 строк), меценату 2 раза, а админу 1. Не знаю на сколько это понятно.

Добавлены элементы:
  • item_reload - мгновенная перезарядка всех оружий
  • item_fade - затемнение экрана, цвет, прозрачность, скорость нарастания и угасания эффекта регулируются указанием дополнительных параметров после ":" через пробел:
    Код:
    ;% "HS+KNIFE+разминка"    "10"    ""    ""    "1-2"    ""    ""    ""    ""    "item_hp:+70,item_fade:255 0 0 160 0.1 1.0"                                ""    ""    ""
  • item_killfader - затемняет экран при убийстве

Добавлены меню настроек:
  • say /damager или wcs_damager - отображает меню настройки дамагера для игрока. При любых настройках работает ТОЛЬКО ЕСЛИ игроку выдан элемент item_damager.
  • say /killfader или wcs_killfader - отображает меню настройки эффекта затемнения экран при убийстве для игрока. При любых настройках работает ТОЛЬКО ЕСЛИ игроку выдан элемент item_killfader. Украл функционал у плагина Алексеич -а.
Настройки менюшек находятся в файле словаря, который ОБНОВЛЕН. Также немного оптимизировал код и убрал 4 таймера для обработки элементов раздела [ADVANCED EVENTS]. Возможно что-то еще, уже не помню.

В процессе реализация элементов "вампирка", "double jump", "уменьшение урона (с вероятностью)", "анти-флеш". Все остальное вынесу в API, кому надо пусть добавляют сами.

2024-04-20_15-55-04.png2024-04-20_15-57-40.png
Сверху Снизу