Перейти к содержимому

Настройка

Настройки находятся в config.lua. Файлы, которые взаимодействуют с вашим фреймворком, инвентарём и ресурсом таргета, оставлены открытыми, поэтому сервер, работающий иначе, может адаптировать их, не трогая зашифрованное ядро.


Файл или папкаЗа что отвечаетОткрыт?
config.luaВсе настройки на этой странице, функция уведомлений, предметы и ароматыОткрыт
locales/*.luaВсе тексты: меню, подписи таргета, сообщения. Один файл на языкОткрыт
server_functions.luaПолучение игрока, добавление, удаление и проверка предметов, регистрация используемых предметов, колбэк списка ароматов и ReduceStressОткрыт
client/client_functions.luaЧтение данных игрока и проверка работы для меню настройкиОткрыт
target/target.luaВсе опции таргета на кальянах и мебели для ox_target и qb-targetОткрыт
client/client.lua, server/server.lua, locale.luaРазмещение, шланг, дым, владение и запасыЗашифрованы
html/Меню настройки: index.html, style.css, script.jsОбычные файлы
inventory_items/Готовые определения предметов для ESX, ox_inventory и QBCoreСправочные
inventory_images/Одна иконка на каждый предметАссеты
mic_hookah_prop/stream/Десять моделей кальяновАссеты, отдельный ресурс

ПараметрЧто делаетПо умолчанию
Config.LocaleЯзыкen
Config.Frameworkesx, qbcore или qboxesx
Config.ESXResourceNameНазвание папки ESXes_extended
Config.QBResourceNameНазвание папки QBCoreqb-core
Config.QBoxResourceNameНазвание папки QBoxqbx_core
Config.Targetox_target или qb-targetox_target
Config.QBTargetResourceNameНазвание папки qb-targetqb-target
Config.InventoryImagePathОткуда меню настройки загружает иконки ароматовnui://ox_inventory/web/images/

ПараметрЧто делаетПо умолчанию
Config.AdminGroupsГруппы, которые могут открыть меню любого кальяна или мебели и забрать их. false означает, что админом считается каждыйfalse
Config.AllowedJobsРаботы, которым разрешено открывать меню настройки. false означает любую работуfalse

Из коробки любой может управлять чужим кальяном. Чтобы каждый кальян принадлежал игроку, который его поставил, перечислите группы вашего персонала в Config.AdminGroups — например, admin и superadmin. На ESX список сопоставляется с группой игрока; на QBCore и QBox — с полем permission игрока.

Когда список задан:

КтоOpen Setup MenuЗабратьGrab Hose
Игрок, поставивший кальянда (если его работа разрешена)дада
Админская группада (если его работа разрешена)дада
Все остальныенетнетда

Config.AllowedJobs защищает только меню настройки. Любой может взять шланг и курить зажжённый кальян.


ПараметрЧто делаетПо умолчанию
Config.MaxActiveTimeЧто означает «полный» для угля и воды. Один hookah_coal или hookah_water заполняет до этого значения1800
Config.ConsumptionPerPuffСколько каждая затяжка снимает с charcoal и water10 и 10
Config.MaxPuffsPerSessionВычисляется из двух значений выше (1800 ÷ 10 = 180). Для справки; скрипт его не читает180
Config.MaxHoseDistanceМетры, на которые растягивается шланг до разрыва3.5
Config.MaxSimultaneousUsersПредполагаемое ограничение на число людей, курящих один кальян4
Config.StressВызывает ReduceStress при каждой затяжкеtrue

Кальян не прогорает по таймеру: уголь и вода уменьшаются только тогда, когда кто-то делает затяжку. Когда что-то одно доходит до нуля, кальян гаснет и его нужно пополнить.

ReduceStress в server_functions.lua получает серверный ID игрока при каждой затяжке, если включён Config.Stress. Функция поставляется пустой, с закомментированными примерами: клиентское событие, экспорт или серверное событие из вашего ресурса стресса или HUD. Поместите туда свой вызов.


ПараметрЧто делаетПо умолчанию
Config.ParticleКакая частица используется: dict и namescr_recartheft / scr_wheel_burnout
Config.VapeExhaleРазмер дыма0.5

В конфиге эти два параметра помечены как «не менять, если вы не знаете, что делаете». Каждое облако держится три секунды и показывается игрокам в радиусе 150 метров.


Полные списки находятся на странице 🎒 Предметы.

Config.HookahItems — название предмета → модель. Чтобы добавить кальян, модель должна стримиться (например, в mic_hookah_prop/stream/ с записью в его .ytyp), затем добавьте строку сюда и предмет в ваш инвентарь.

Config.PlaceableProps — название предмета → propModel, type (furniture) и isChair. Подойдёт любой проп из базовой игры. Укажите isChair = true для всего, что должно предлагать Sit Down.

Config.Flavors — название предмета → настройки:

ПолеЧто делает
LabelНазвание, показываемое в меню настройки
SmokeColorЦвет дыма R, G, B
ScreenEffectНазвание экранного эффекта GTA, проигрываемого курильщику, или false, если эффекта нет
EffectDurationСколько секунд длится экранный эффект

Рядом с Config.Flavors в конфиге есть ссылка на список названий экранных эффектов. Чтобы добавить аромат, скопируйте запись, задайте ей новое название предмета и добавьте предмет и его иконку в ваш инвентарь.


Config.Notify в config.lua отправляет все сообщения: ShowNotification на ESX, Functions.Notify на QBCore и QBox, иначе — консоль. Замените его тело, чтобы использовать свой ресурс уведомлений.


В locales/ поставляются одиннадцать файлов: en, es, fr, de, it, pt, ru, cn, nl, pl, tr. Выберите нужный в Config.Locale.

В комментарии над Config.Locale упоминается и jp, но японского файла в комплекте нет; при его установке появится «Locale [jp] does not exist».

Каждый файл охватывает меню настройки, подписи таргета и сообщения. Несколько слов прописаны прямо в Lua, а не в файлах локалей: подсказки размещения (Rotate Right, Rotate Left, Height Up, Height Down, Place Prop, Cancel), «You are already placing an object» и «None» для пустого аромата.

Чтобы добавить язык: скопируйте locales/en.lua, замените ключ в начале на ваш код и переведите. Манифест подгружает всё из locales/ сам, так что регистрировать больше ничего не нужно. Укажите Config.Locale, выполните refresh и перезапустите ресурс.


Что изменитьЧто править
Собственный фреймворкОбъект фреймворка внизу config.lua и функции в server_functions.lua и client/client_functions.lua
Другой инвентарьAddItem, RemoveItem и HasItem в server_functions.lua, а также регистрацию используемых предметов ниже них
Другой таргетtarget/target.lua — списки опций общие, отличаются только два вызова addModel / AddTargetModel
Подписи, иконки или дистанция таргетаtarget/target.lua для иконок и дистанции, locales/ для подписей
Правила по работамCheckJobAccess в client/client_functions.lua

На QBCore и QBox при запущенном ox_inventory server_functions.lua также регистрирует каждый кальян и предмет мебели через собственный хук использования ox_inventory — как запасной вариант для конфигураций, где мост предметов QBCore не передаёт использование дальше.


Клавиша или командаКогдаЧто делает
EС кальяном в рукахНачинает размещение
XС кальяном в рукахУбирает кальян, не размещая
Колёсико мышиРазмещениеПоворачивает превью
Стрелка вверх / внизРазмещениеПоднимает или опускает превью
EРазмещениеСтавит кальян
XРазмещениеОтменяет
EСо шлангом зажжённого кальянаДелает затяжку
X («Hookah - Stand Up X»)СидяВстаёт. Можно переназначить в настройках клавиш FiveM каждого игрока
/hookah:chair:stand_upСидяТо же самое, командой