Настройка
Поведение задаётся в config.lua. Всё, что затрагивает ваш фреймворк, ваши уведомления или то, что на самом деле делает эффект, находится в папке bridge/, которая оставлена открытой именно для этого.
Какой файл за что отвечает
Заголовок раздела «Какой файл за что отвечает»| Файл или папка | За что отвечает | Открыт? |
|---|---|---|
config.lua | Все настройки с этой страницы и список вейпов | Открыт |
locales/*.lua | Тексты уведомлений, по одному файлу на язык | Открыт |
bridge/client_bridge.lua | Определение фреймворка на клиенте, уведомления, индикатор выполнения и что делает каждый эффект | Открыт |
bridge/server_bridge.lua | Определение фреймворка на сервере, удаление закончившегося вейпа, проверка инвентаря и хук стресса OnVapePuff | Открыт |
bridge/stress.lua | Старая копия хука стресса. Манифест её не загружает; вместо этого правьте server_bridge.lua | Открыт |
client/client.lua | Доставание вейпа, затяжка, дым и его синхронизация | Escrow |
server.lua | Регистрирует каждый вейп как используемый предмет и передаёт дым другим игрокам | Escrow |
html/ | Индикатор выполнения: index.html, style.css, script.js | Обычные файлы |
stream/ | Десять моделей вейпов и def_props.ytyp | Ассеты |
inventory_items/ | Готовые определения предметов для ESX, ox_inventory и QBCore | Справочные |
inventory_images/ | Одна иконка на каждый предмет | Ассеты |
Общие настройки
Заголовок раздела «Общие настройки»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Locale | Язык уведомлений | en |
Config.ShowNotifications | Показывать ли уведомления вообще. Выключено — значит никаких сообщений «достал», «кулдаун», «пусто» и о способностях | false |
Config.EnableMaxPuffs | Вейпы заканчиваются после количества затяжек puffs | true |
Config.RemoveVapeCommand | Команда чата, которая убирает вейп | vape |
Config.PuffKey | Клавиша затяжки по умолчанию | E |
Config.DisableCombatButtons | Блокирует боевые кнопки (атака и прицеливание), пока выходит дым | true |
Config.Stress | Вызывает хук стресса при каждой затяжке (см. Стресс) | true |
Config.PuffKey — это значение по умолчанию. Затяжка — это привязка клавиши FiveM с названием «Vape Puff», поэтому каждый игрок может изменить её в Settings › Key Bindings › FiveM, а когда у игрока привязка уже сохранена, изменение Config.PuffKey на неё больше не влияет.
Здоровье, броня и скорость
Заголовок раздела «Здоровье, броня и скорость»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.SpeedVapeInfiniteStamina | Выносливость не расходуется во время эффекта скорости | true |
Config.StaticHealth | false: каждая затяжка здоровья добавляет Config.Health. true: затяжка поднимает здоровье до Config.Health, если оно ниже | false |
Config.Health | Добавляемое значение или уровень, до которого поднимается здоровье. При статической настройке используйте 101–200 — шкала здоровья в игре | 10 |
Config.StaticArmor | Та же идея для брони: добавить или поднять до | false |
Config.Armor | Добавляемое значение или уровень, до которого поднимается броня (до 100) | 10 |
Здоровье всегда удерживается в пределах от 100 до 200, броня — не выше 100.
| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.VapeExhale | Размер частицы дыма | 0.4 |
Config.SmokeOpacity | Насколько плотен дым, от 0.0 до 1.0 | 1.0 |
Config.SmokeDelay | Секунды между анимацией затяжки и появлением дыма | 1.5 |
Config.Particle | Какая частица используется: dict и name. По умолчанию — дым от пробуксовки из scr_recartheft | scr_recartheft / scr_wheel_burnout |
Config.SmokeOffset | Откуда начинается дым относительно головы: PosX, PosY, PosZ, RotX, RotY, RotZ | 0.05, 0.0, 0.5, 0, 0, 0 |
Каждое облако держится 1,5 секунды и показывается игрокам в радиусе 30 метров.
Вейпы — Config.Vapes
Заголовок раздела «Вейпы — Config.Vapes»Каждая запись — это название предмета → настройки. Полный список поставляемых вейпов — на странице 🎒 Предметы.
| Поле | Что делает |
|---|---|
prop | Какая модель в руке: mic_black, mic_blue, mic_green, mic_lightblue, mic_orange, mic_pink, mic_purple, mic_red, mic_white, mic_yellow |
Label | Название, используемое на индикаторе выполнения |
SmokeColor | Цвет R, G, B либо слово Rainbow для переливающихся цветов |
Cooldown | Секунды до того, как этим вейпом снова можно будет затянуться |
puffs | Количество затяжек, после которых вейп заканчивается, а один экземпляр удаляется из инвентаря |
EffectDuration | Сколько секунд действует способность. 0 для вкусов |
ShowProgress | Показывать индикатор выполнения, пока действует способность. Выключено у всех поставляемых вейпов |
SpeedMultiplier | Только для speed_vape (бег) и carspeed_vape (двигатель) |
power | Необязательно. Список эффектов, которые выполняются вместе, у каждого своё число (см. ниже) |
Какой эффект у вейпа
Заголовок раздела «Какой эффект у вейпа»Эффект определяется названием предмета. invisibility_vape делает вас невидимым, потому что он называется invisibility_vape; любое другое название без списка power — это вкус.
Названия эффектов, которые понимает bridge: invisibility_vape, speed_vape, superjump_vape, teleport_vape, invincibility_vape, health_vape (или health), armor_vape (или armor), carspeed_vape, freeze_vape, gravity_vape — а также random_vape, который выбирает один из остальных.
Комбинирование эффектов через power
Заголовок раздела «Комбинирование эффектов через power»Задайте вейпу список power, и при каждой затяжке он выполнит все эффекты из него, как бы ни назывался вейп. Число рядом с каждым эффектом — это его длительность в секундах, кроме health и armor, где это значение. vape_custom в конфиге — рабочий пример: здоровье 10, броня 10, скорость на 10 секунд.
Добавление вейпа
Заголовок раздела «Добавление вейпа»- Скопируйте существующую запись в
Config.Vapesи дайте ей новое название предмета. - Выберите
prop,SmokeColor,puffsиCooldown. Для способности либо используйте одно из названий эффектов выше как название предмета, либо добавьте списокpower. - Добавьте предмет в инвентарь так же, как остальные, вместе с иконкой.
- Выполните
refresh, затемrestart mic_vape.
Дополнительные эффекты, которые понимает bridge
Заголовок раздела «Дополнительные эффекты, которые понимает bridge»freeze_vape (вы не можете двигаться) и gravity_vape (низкая гравитация, медленное движение) обрабатываются в bridge/client_bridge.lua, а их определения предметов уже лежат в inventory_items/, но записей в Config.Vapes у них нет. Добавьте запись для каждого — скопируйте superjump_vape и переименуйте — и они заработают.
transform_vape тоже есть в файлах предметов, но ему нужен список Config.TransformAnimals, которого в поставляемом конфиге нет. Не трогайте его, пока не будете готовы написать этот список и проверить его.
При Config.Stress = true каждая затяжка вызывает OnVapePuff в bridge/server_bridge.lua с серверным ID игрока. «Из коробки» эта функция лишь выводит строку в консоль сервера. Внутри неё лежат закомментированные примеры для метаданных QBCore и esx_status: раскомментируйте подходящий или вызовите здесь собственный HUD или ресурс стресса.
Если вы не используете стресс, задайте Config.Stress = false, и консоль останется тихой.
В locales/ лежат девять файлов: en, de, es, fr, it, pl, pt, ru, tr. Выберите один через Config.Locale.
Строка car_speed — она показывается, когда срабатывает вейп скорости машины — в поставляемых файлах читается как «No waypoint set!». Перепишите её в вашем языковом файле.
Чтобы добавить язык: скопируйте locales/en.lua, измените ключ в начале на ваш код, переведите и добавьте файл и в client_scripts, и в server_scripts в fxmanifest.lua. Укажите Config.Locale, выполните refresh и перезапустите ресурс.
Всё, что зависит от вашего сервера, находится в bridge/.
| Файл | Что менять там |
|---|---|
bridge/client_bridge.lua | ShowNotification — направьте сообщения в ваш собственный ресурс уведомлений. Код эффектов — измените, что делает способность, или добавьте новое название эффекта. ShowProgressBar / HideProgressBar — для индикатора |
bridge/server_bridge.lua | OnVapePuff для стресса. Удаление закончившегося вейпа и проверка, остался ли предмет у игрока, — адаптируйте эти две функции для инвентаря, который не использует собственные функции предметов ESX или QBCore |
Оба файла находят фреймворк одинаково: es_extended, если он запущен, иначе qb-core — именно так определяется и QBox, через совместимость с QBCore. Для другого фреймворка добавьте ветку там и в двух функциях предметов рядом.
Команды и клавиши
Заголовок раздела «Команды и клавиши»| Команда или клавиша | Что делает | Где задаётся |
|---|---|---|
| Использовать предмет | Достаёт вейп; повторное использование убирает его | Инвентарь |
| E («Vape Puff») | Делает затяжку | Config.PuffKey, затем настройки клавиш каждого игрока |
/vape | Убирает вейп | Config.RemoveVapeCommand |
Вейп также убирается, если предмета больше нет у игрока; ресурс проверяет это каждые 2,5 секунды.