Информация о файле
Цель этого плагина - восстановить возможность бросания оружия игроками в мир и подбирание его обратно / переоснащение отдельных слотов инвентаря. Это позволяет обращаться с оружием аналогично другим играм на движке Source, таким как CS.
Считаю важным отметить, что цель этого плагина не в том, чтобы давать игрокам произвольное оружие (фальсифицированный инвентарь) для произвольных классов, а просто возвращать игрокам оружие, которое они уже имеют, контролируемым образом, как это можно ожидать от других игр Valve.
Ограничения по классам оружия также не затронуты! Вы не сможете экипировать скаутов ракетными пусковыми установками с помощью этого плагина.
Для игроков идея проста:
- Используйте вашу клавишу "бросить предмет" (по умолчанию bind L dropitem), чтобы бросить ваше активное оружие (флаг CTF с приоритетом). Чтобы подобрать предмет обратно, используйте вашу клавишу действия (по умолчанию H) или, для более надежного подбора, используйте привязку к "+use". Если не отключено, вы также можете просто подойти к оружию, чтобы подобрать его, если у вас нет другого оружия в том же слоте.
- Если вам нужна только библиотека для других плагинов, вы можете установить sm_tf2dropweapon_enabled 0, чтобы установить плагин в режим библиотеки и отключить всю интерактивность / функциональность для игрока.
Для разработчиков плагинов:
- Используя этот плагин, вы можете бросать оружие, поднимать любое tf_dropped_weapon для игрока, восстанавливать слоты инвентаря из текущего инвентаря игрока, экипировать стоковые предметы для игроков по желанию, даже по названию оружия; или реагировать на бросание и подбор оружия. См. файл включения для получения дополнительной информации.
- Этот плагин также частично восстанавливает SDKHook_WeaponDrop (я думаю) и SDKHook_DropWeapon native (bypassHooks должен быть false).
Переменные и команды:
sm_tf2dropweapon_supresscleanup 0. По умолчанию игра проверяет режим игры и удаляет уже существующее оружие перед созданием нового. Установите 1, чтобы отключить эту проверку. sm_tf2dropweapon_usetopickup 1. По умолчанию ключ для подбора оружия имеет проблемы. Установите 1, чтобы разрешить использование +use для подбора оружия. sm_tf2dropweapon_pickupany 1. Существуют некоторые ограничения для подбора оружия. Установите 1, чтобы игнорировать их. Примечание: Установка в единицу использует переосуществление, которое может быть более подвержено обновлениям игровых данных, поэтому попробуйте 0, если у вас возникают проблемы. sm_tf2dropweapon_touchpickup 1. Установите 1, чтобы подбирать оружие, которое подходит для слота, который в данный момент пуст. sm_tf2dropweapon_enabled 1. Включает sm_dropweapon / sm_pickupweapon, привязку dropitem и подбор по приближению. Установите 0, если вы только что получили этот плагин в качестве библиотеки. // Следующие команды использовались для тестирования, но не стесняйтесь включить их для ваших игроков: sm_dropweapon. Бросить ваше оружие. sm_pickupweapon. Посмотрите на оружие сначала. sm_giveweapon ADMFLAG_CHEATS. Использование: (<оружие>|<класс> <слот> ['stock']). Дает игроку оружие. Используйте либо имя класса оружия, либо имя класса игрока и слот. Для класса и слота дает из снаряжения. Если указано "stock", используется стоковое оружие. sm_dwgive ADMFLAG_CHEATS. То же самое, что и sm_giveweapon. Просто более короткий псевдоним, который не должен конфликтовать с другими плагинами выдачи оружия.
Обзор нативов / преобразований
// Реагировать на бросание оружия forward Action TF2DW_OnClientDropWeapon(int client, int weapon) // Слушать, когда оружие было брошено forward void TF2DW_OnClientDropWeaponPost(int client, int droppedWeapon) // Реагировать на подбор оружия forward Action TF2DW_OnClientPickupWeapon(int client, int droppedWeapon) // Слушать, когда оружие было подобрано forward void TF2DW_OnClientPickupWeapon(int client, int weapon) // Заставить игрока бросить оружие в указанный слот снаряжения native int TF2DW_DropWeaponLoadoutSlot(int client, int loadoutSlot) // Экипировать игрока оружием на основе имени класса оружия и активного класса игрока (сток) native int TF2DW_GiveWeaponByClassname(int client, const char[] classname) // Экипировать игрока оружием на основе слота оружия и активного класса игрока (использует снаряжение, если stockItem равно true) native int TF2DW_GiveWeaponForLoadoutSlot(int client, int loadoutSlot, bool stockItem=false) // Создать брошенное оружие в мире на основе имени класса оружия и указанного класса игрока native int TF2DW_CreateDroppedWeaponByClassname(const char[] classname, TFClassType class, const float position[3]) // Создать брошенное оружие в мире на основе снаряжения игрока, класса игрока и слота оружия native int TF2DW_CreateDroppedWeaponFromLoadout(int client, TFClassType class, int slot, const float position[3]) // Получить индекс определения стокового предмета для заданного класса игрока и слота снаряжения native int TF2DW_GetStockWeaponItemDef(TFClassType class, int slot) // Получить максимальный размер обоймы и боеприпасов по умолчанию для оружия на основе данных о классе игрока и атрибутов предмета native bool TF2DW_GetWeaponDefaultMaxClipAndAmmo(int itemDef, TFClassType playerClass=TFClass_Unknown, int& maxClip=0, int& maxAmmo=0)
Зависимости:
- TF Econ Data
- TF2Utils
- TF2PlayerClassData
- По желанию используйте TF2 Gravity Hands, чтобы предотвратить возможность игроков без оружия стать в положение "A-posing".