Botmap memo temp

Botmap memo temp for Dayz

#
-


#
-


#
Интелект -зачем он нужен.
1. суть функции интелект это смена поведения бота в любой момент времени, через триггер, через другой интелект
например можно сделать 4 интелекта которые будут путевыми точками выстроены во круг зданий и зациклить их друг на друге через запятую
тем самым юнит будет случным образом выбирать где ходить
2. Если задать "дойти до конца" и вписать все интелекты мы получим что после полного круга он начнет выполнять 1 из 4 интелектов
3. Если выбрать "сменить интелект через" мы получим что через 1 минуту он случайным образом выберет интелект побежит уже по его точкам
4. Интелект можно сменить через триггеры вписав имя бота и новый интелект



интелект, он, сменить, можно, мы, получим, бота, Если, Интелект, интелекты, выбирать, полного, ходить, вписать, дойти
интелект, он, сменить, можно, мы, получим, бота, Если, Интелект, интелекты, выбирать, полного, ходить, вписать, дойти
интелект, он, сменить, можно, мы, получим, бота, Если, Интелект, интелекты, выбирать, полного, ходить, вписать, дойти
интелект, он, сменить, можно, мы, получим, бота, Если, Интелект, интелекты, выбирать, полного, ходить, вписать, дойти
#
-


#
-


#
-


#
-


#
Как пользоваться мастерской


#
1. (скрин1) Заходим в мастерскую и в разделе сайт выбираем нужную миссию и нажимаем 1 раз загрузить.
2. (скрин2) Заходим в раздел загрузить и выбираем "другие"
3.(скрин2) Выбираем например раздел юнит или интелект и что то еще и нажимаем открыть - мы попадаем в папку автора и нам нужно загрузить все от этого автора
4.(скрин3) Загружаем в клиент все от этого автора проходится по каждой ячейки и нажимаем загрузить
5.(скрин4) все загруженные будут появляться слева
6.(скрин5) кроме сетов и диалогов они появляются в своих разделах так как они не отмечаются на карте.
7.(скрин6) Все объекты что на карте при загрузки скрыты для выделения, нужно через шифт выделить 1 и последнюю с лева и нажать 1 раз на красный значек и они будут сразу выделены на карте и могут быть передвинуты через зажатие левой кнопки мыши(зажать 2 секунды и отпустить)


#
8. В описании будет инструкция Dayz как запустить правильно эвент


#
-


#
[eng]
How to use the workshop
1. (screenshot1) We go to the workshop and in the site section select the desired mission and click download once.
2. (screen2) Go to the download section and select "other"
3.(screen2) For example, select the unit or intellect section and something else and click open - we get into the author's folder and we need to download everything from this author
4.(screen3) We load everything from this author into the client, go through each cell and click download
5.(screen4) all downloaded will appear on the left
6.(screen5) in addition to sets and dialogues, they appear in their sections, since they are not marked on the map.
7. (screen 6) All objects that are on the map are hidden for selection when loading, you need to select 1 and the last from the left through the shift and click 1 time on the red icon and they will be immediately selected on the map and can be moved by holding the left mouse button (hold down 2 seconds and release)
8. The description will contain instructions on how to run the event correctly


#
-


#








#
Трейдеры(еще в разработке)


#
1. Создаешь цены и условия покупки и продажи.
2. Создаешь юнита
3. Создаешь диалог где в выборе есть торговать
4. Создает контейнер в котором ставишь режим нельзя забрать и положить на 10 000 слотов


#
Как работает трейдер:
Принцип бартера то есть выбираешь что бот покупает и что продает,
1.Если просто выбрать лут то это стандартный бартер 1 вещь за другую.
2. Если покупать выбрать только например патроны или деньги - то получается стандартный трейдер - он сам не чего не создает так как весь лут он берет из своего контейнера.
3. Можно через триггеры или поинты спавнить в нутри контейнера лут или создать бота который будет искать лут или забирать у игроков. и приносить в этот контейнер.


#
-


#
-


#





#
Принцип работы мода, что нужно понять чтоб с ботмап стало работать проще:
1. Есть 2 мода- клиентский и серверный.
а) Клиентский это настройка юнитов, триггеров, сетов и тд.
б) серверный это выполнение настроек сохраненных клиентом.
То есть пока вы не нажмете сохранить вся информация будет только на клиенте и нельзя заспавнить будет так как спавн делает сервер Dayz не клиент.
2. У главного администратор(тот который 1 в списке admin.txt) есть единственного права на 2 функции:
а) Заспавнить при старте сервера Dayz - то есть создание юнита, триггера, контейнера и тд при старте сервера.
б) Сменить автора и управлять файлами других авторов, эта функция полезна не только когда у вас много админов и чтоб они не трогали файлы друг друга но и на этом принципе работает мастерская.


#
-


#
-


#
-


#
-


#
-


#
-


#
Как сделать чоб бот взял лут с земли и положил его в контейнер
1. Создаем контейнер - запоминаем его класс - container_50
2. Создаем бота выставляем тип ходьбы "дойти до конца" так как у нас всего 2 понта будет (для 3 и больше можно любой тип использовать)
3. Создаем понит поднятия нужного лута с земли и помещение его в инвентарь.
4. Создаем поинт переноса лута из инвентаря в контейнер и вписываем его класс container_50
5. Готово.



Создаем, контейнер, тип, класс, container_, лута, земли, любой, можно, использовать, пт, нятия, нужного, инвентарь, инвентаря
Создаем, контейнер, тип, класс, container_, лута, земли, любой, можно, использовать, пт, нятия, нужного, инвентарь, инвентаря
Создаем, контейнер, тип, класс, container_, лута, земли, любой, можно, использовать, пт, нятия, нужного, инвентарь, инвентаря
Создаем, контейнер, тип, класс, container_, лута, земли, любой, можно, использовать, пт, нятия, нужного, инвентарь, инвентаря
Создаем, контейнер, тип, класс, container_, лута, земли, любой, можно, использовать, пт, нятия, нужного, инвентарь, инвентаря
Создаем, контейнер, тип, класс, container_, лута, земли, любой, можно, использовать, пт, нятия, нужного, инвентарь, инвентаря
#
How to make a bot take loot from the ground and put it in a container
Create a container - remember its class - container_50
We create a bot and set the type of walk to "reach the end" since we will only have 2 show-offs(for 3 or more, any type can be used)
We create a pony to pick up the desired loot from the ground and place it in inventory.
Create a point for transferring loot from the inventory to the container and enter its class container_50
Ready.



create, container, loot, its, container_, type, inventory, class, bot, pony, pick, used, any, can, desired
create, container, loot, its, container_, type, inventory, class, bot, pony, pick, used, any, can, desired
create, container, loot, its, container_, type, inventory, class, bot, pony, pick, used, any, can, desired
create, container, loot, its, container_, type, inventory, class, bot, pony, pick, used, any, can, desired
create, container, loot, its, container_, type, inventory, class, bot, pony, pick, used, any, can, desired
create, container, loot, its, container_, type, inventory, class, bot, pony, pick, used, any, can, desired
#
-


#
- Мои сохраненные диалоги файлов -
Добавить - добавляет диалог.
Удалить - удаляет диалог.
Редактировать - редактирует диалог.
Сохранить - сохраняет диалог на сервер.
Закрыть - закрывает меню диалогов.


#
- Создать - Редактировать - диалог:
Автор - Тот на чьем прифеле будет диалог
Название - Название диалога на английском которое нужно будет вписать в юнита.
Текст Игрока - Текст игрока который появится при типе 2
Текст Бота - который появится после в приветствии бота.
Тип Диалога - 1 и 2 тип(1 аля ведьмак, 2 аля персона)
Спавнить при запуске сервера Dayz - обязательное значение чтоб увидеть этот диалог.


#
- Диалог - Structure:
Добавить - добавляет под диалог
Добавить в- добавляет под под диалог
Удалить - удаляет под диалог
Редактировать - редактирует под диалог
Закрыть - закрывает меню без сохранения.


#
- Создать - редактировать под диалог - Основное:
Название - просто название выводится в списке
Текст Игрока - то что выбирает игрок
Текст Бота - то что показывается в типе 2 ответ бота.


#
- Создать - редактировать под диалог - Кондиция:
Задание -
Имеется задание - если есть задание у игрока то под диалог показывается.
Условия задания выполнены - если задание на лут и лут есть в инвентаре или руках.
Всегда отображать - отображается или нет этот под диалог


#
- Создать - редактировать под диалог - Действие 1:
Сменить интеллект - меняет интеллект бота
Сменить диалог - меняет диалог бота
Сменить Трейдера - меняет меню трейдера - не реализовано.
Вызвать функцию - не реализовано
Назначить игрока лидером - боту выдает группу игрока(группа игрока это его стим айди) и бот ходит и защищает игрока.
Назначить таргет целью - бот начинает считать игрока целью
Покинуть группу - бот покидает группу игрока и возвращается в свою
Открыть меню торговли - показывает меню торговли - не реализовано.
Задание - ищет задание у игрока
Выдать задание - выдает задание игроку по полю "задание"
Выдать награду - выдает награду игроку за задание в поле "задание"
Сбросить задание - удаляет задание игрока в поле "задание"


#
- Создать - редактировать под диалог - Действие 2:
Открыть диалог - открывает другой диалог удобно если под диалогов много и таким образом диалогов может быть бесконечно
Назад - возвращает на тот же выбор что нажат
Назад назад - возвращает на 1 ступень назад.
Начало - возвращает в начало
Закрыть диалог - закрывает диалог.


#
---------------------------------------------


#
- Создать триггер - Основное:
- - Автор.
- - Название.
- - Координаты.
- - Тип формы.
- - Ось Х
- - Ось Y
- - Угол
- - Высота срабатывания - высота формы по оси Z то есть высота при которой если в небе кто то пролетит так же на него сработает по условию.
- - Тип - Статический установлен и может сменить позицию только если его заспавнили внутри другого триггера или поинта, динамический привязан к координатам бота чье имя написано
- - Имя Бота
- - Смещение высоты - по умолчанию координата бота это координата на уровне ступней.


#
- - Повторное выполнение в триггере - если в условиях выставлено поиск объекта, количества или других условий которые не требуют изменений то триггер будет выполняться бесконечно через каждый промежуток времени установленный здесь.
- - Задержка перед запуском - через сколько триггер начнет работает после спавна.
- - Авто удаление триггера после - через сколько удалить триггер после спавна.
- - Координаты смещены по цели - цент триггера смещается на координату таргета на который сработало условие
- - Координаты смещены случайным образом
- - Спавнить при запуске сервера.


#
- Создать триггер - Условие:
- - Активируется на ... - на кого сработает триггер в 3 блоках ниже, учитывайте букву в скобках
- - - A- животное
- - - Z - зомби
- - - P - Player
- - - B - Бот
- - Зашел - Зашел в область триггера
- - Боевая стойка - встал в боевую стойку удара или прицеливания
- - Выбросил предмет - использовал бросок на предмет - связан с полем предметы
- - Сдвинулся с места - расстояние до центра триггера изменилось
- - Отслеживание Анимации - у предметов проверяется еще и анимация и выполняется при совпадении условий.
-
- - Вышел - вышел из облости триггера
- - Получил урон
- - Взял Предмет - поднял предмет с земли
- - Предмет в инвентаре - есть ли предмет в инвентаре проверяется поле предметы
- - Объекты внутри - проверяется количество объектов внутри триггера
-
- - Выстрелил - выстрелил из оружия.
- - Активировал вейпоинт - бот наступил на вейпоинт с именем в поле "уникальное имя вейпоинта"
- - Убрал предмет - поднял предмет с земли
- - Пуля - пуля попала в область триггера - таргет тот кто выстрелил
- - Цель - если у бота есть цели на них срабатывает триггер.
-
- - Умер
- - Обновился слот рук - если в руках появилось что то новое или пропало.
-
- - Убил - и выбор кого.
- - Нанес урон -и выбор кого.
- - Количество объектов - цифра количество живых внутри триггера, при 0 он срабатывает сразу при спавне и повторяется по условию "Повторное выполнение в триггере"
- - Предметы - список предметов на которые срабатывает триггер по условию, (выбросил, взял, в инвентаре, убрал, обновил слот рук)


#
- - Анимация предмета - анимация предмета имя анимации и положение
- - Объекты - имя объекта на которого сработает триггер(нужен класс)
- - Анимация объекта(если у объекта есть нужная анимация и её положение)
- - Уникальное имя вейпоинта - для поля "Активировал вейпоинт"
- - Активные квесты - имя квеста который есть у игрока
- - Активные слоты - активные слоты, например в руках что то есть или есть повязка или на голове есть что то.


#
- Создать триггер - Действие таргета:
- - Повреждать - нанести урон
- - Сменить интеллект - сменить интеллект на бота
- - Сменить диалог - сменить диалог на бота
- - Симптом - на таргет передать симптом из списка
- - Убить
- - Убить бота
- - Удалить бота
- - Телепортировать в
- - Заспавнить в инвентарь - лут.


#
- Создать триггер - Действие ботов:
- - Имя бота - через запятую
- - Повреждать
- - Сменить интеллект
- - Сменить диалог
- - Симптом
- - Убить
- - Удалить бота
- - Пропустить вейпоинт
- - Назначит таргет целью - по условию на кого реагирует триггер становится целью для всех ботов кто в списке имя бота
- - Сброс назначенных целей - обнуляет список целей
- - Назначить таргет целью - всем кто в триггере- все боты кто в триггеры получают цель того кто выполнил условия триггера
- - Стрелять по координатам - центра триггера или по смещению центра
- - Количество выстрелов


#
- Создать триггер - Другие действия:
- - Создать юнитов - создает ботов по списку
- - В координате триггера
- - Заспавнить контейнер - нужно имя класса.
- - В координате триггера
- - Удалить контейнер - нужно имя класса внутри триггера
- - Заспанвить объект
- - В координате триггера
- - Координаты
- - Анимация объекта
- - Удалить объект


#
- - Заспавнить триггер - имя триггера или триггеров через запятую
- - В координате триггера
- - Спавн при старте сервера Dayz - после спавна триггера с этим параметром он будет спавниться после рестарта сервера.
- - Удалить триггер - если поле пустое триггер удалит сам себя после выполнения
- - Вызвать функцию - пока не реализовано.
- - Объекты - имена классов
- - Анимация объекта - меняет анимацию нужному объекту
- - Объект телепорт в
- - Предметы телепорт в - предметы из условий.


#
- - Проиграть звук - если звук больше 1 выполняется случайный из списка
- - Выдать задание - имя задания из раздела квесты.
- - Удалить задание - имя задания из раздела квесты.
- - Спавн при запуске сервера, после выполнения триггера сохраняется эти данные то есть если триггер заспавнил не запуск сервера Dayz а другой триггер или поинт с включенным сохранением после выполнении он будет спавниться при старте сервера Dayz
- - Отправить сообщение - в чат


#
-


#
-


#
-


#
- Мои сохраненные файлы задания
- - Добавить
- - Удалить
- - Редактировать
- - Сохранить - если файл не сохранить то файл не будет работать
- - Закрыть.


#
- Создать и редактировать задание
- - Автор
- - Название - название на аглийском
- - Тип задания
- - - Принести предмет - задание будет выполнено когда у игрока в руках или инвентаре будет предмет нужный и в диалоге выбрано выполнить задание.
- - - Простое задание - если в диалоге выбрано выполнить задание.
- - Принести предмет - имя класса предмета
- - Награда - имя класса предмета
- - Спавнить при запуске сервера. - обязательный параметр если нужно включить задание в том числе и без рестарта.


#
- Мои сохраненные файлы сетов
- - Добавить
- - Удалить
- - Редактировать - если нажать редактировать сет, сменить имя и сохранить, то старый сет можно загрузить из загрузок в итоге это способ копирования сета
- - Сохранить
- - Закрыть


#
- Создание и редактирование сета:
- - Название
- - Поиск - ищетпо имени класса или описанию
- - Найденные предметы - кнопка добавить добавляет если в инвентаре у бота есть место, кнопка "C" копирует в буфер имя класса.
- - Одетые предметы - учитывайте очередность для оружия, сначала спавниться само оружие потом его обвесы
- - Автор
- - Тип
- - - Юнит - лут будет спавниться на юните при спавне.
- - - Контейнер - в контейнере.
- - - Машина - спавнится в инвентаре
- - - Лодка - спавнится в инвентаре
- - - Вертолет - спавнится в инвентаре
- - М-Ж он же класс - чтоб определить вместимость если и внешний вид.


#
- Удаление объектов на сервере
- - Поле с типами объектов
- - - Поле с типом "все" показывает всех кто заспавнен через мод, система dayz сделана так что нельзя заспавнить юнита с таким же именем если на сервере Dayz уже есть живой юнит с таким именем. так же почти со всеми пунктами.
- - - Поле Задание - показывает все задание которые взяты у игроков - можно удалять их если вы решили обнулить задание, не показывается в поле "все"


#
Как отловить зажигание Roadflare фальш файера на земле

- в тригере
- - условие
- - - объекты - Roadflare
- - - анимация Burning 0
фальфаер должен быть на земле и гореть


#
Как отловить зажигание Roadflare фальшфайера в руках

- в триггере
- - условие
- - - Активировать на Player
- - - Предмет в инвентаре
- - - Отслеживания анимации
- - - Предметы - Roadflare
- - - Анимация предмета Burning 0


#
Галочки в триггере которые не нагружают сервер Dayz вообще так как отслеживаются на стороне клиента, можно ставить хоть 1000 хоть на 10 000 метров, нагрузка будет только когда сработает триггер только в момент срабатывания:
- Игрок:
- - Зашел
- - вышел
- - активный слот
- - предмет в инвентаре
- - анимация предмета
- - сдвинулся с места
- - метка

- Эвенты выполняются только когда событие случается так же не нагружают сервер Dayz пока не случится событие хоть 1000 хоть на 10 000 метров, нагрузка будет только сработает эвент для выполнения триггера
- - убил
- - умер
- - получил урон


#
Анимация для вертолета - топливо это "toplivo" если через триггер изменить её в обьекте вертолет верт снова будет заправленным
лучше сделать по принципу бесконечного триггера с задержкой в 30 минут
делаешь динамический триггер пишешь имя бота к кому привязать

повторное выполнение триггера 30 минут
условие "объекты внутри животные" - число 0
в другие действия объект, анимация объекта имя toplivo значение 100

а да у верта сделана такая иерархия если бот за штурвалом то 2 пилот не может управлять вертом
боту делаете бессмертие в верту в принципе лучше бы тоже...(через конфиг вертов)

и получаем не убиваемый верт такси


#
новые теги для "вызвать функцию"
target - как правило на кого выполняется триггер
parent - противоположный target - или если убийца target то parent убитый и на оборот и тд
child - если target это техника то child Это 1 пилот если нет то 2 пилот
hands - руки или target , или parent , или child
crewarray - массив всех кто в техники если техника target или parent или child
itemarray массив контейнера если лут target или parent или child или hands
это для отдельного выполнения функции мода
Botfunctions
Aifunctions

например
Botfunctions.Add_Task_Server("kill",uid,"76561198197506368",1);
kill - имя метки
uid - айди того кто получает
"76561198197506368" - автор метки
1 - номер для метки

но надо знать UID того а значит надо выполнить перед меткой этот код

PlayerBase user = PlayerBase.Cast(child);
PlayerIdentity identity=user.GetIdentity();
string uid=identity.GetPlainId();


да это сложнее нажатия кнопки но это быстрее чем ждать когда мы добавим нужный вам вариант выполнения
я буду добавлять еще параметры и примеры


#
коэффициент точности работает по принципу увеличения разброса от точки попадания
то есть
точка грудь
далее идет формула
offset_distance = (100/offset) * (distance / maxDistance)
где
offset - число которое ты вводишь в поле коэффициент
distance - дистанция до цели
maxDistance - дистанция видимости

грубо говоря
offset = 6
distance = 100
maxDistance = 700
100 / 6 = 16
100 / 700 = 0.14
16 * 0.14 = 2 метра

далее идет рандом от -2 метров до +2 метров выбирается случайная точка и бот туда кладет пулю
есть шанс что будет 0 и тогда промаха не будет есть шанс что будет 10 раз -2 то всегда 1 точку - рандом штука случаноая 😄


#
для новой версии
for(int i=0;iвыкинуть всех игроков из транспорта - ловить транспорт через объект


#
в ново версии
выполнить звук только для 1 игрока
;|EffectSound sound = SEffectManager.PlaySound("landmineActivate_SoundSet",target.GetPosition(), 0, 0, false);sound.SetAutodestroy(true);


#
бесконечное тиканье мины(хз зачем но в друг)
;|TrapBase trap =TrapBase.Cast(spawn);trap.StartActivate(target);


#
Вызов еекспешена трейдер меню
ExpansionTraderObjectBase trader = ExpansionMarketModule.GetTraderFromObject(bot);
ExpansionMarketModule.s_Instance.StartTrading(trader, user.GetIdentity());


#
Botfunctions.Inject_AI(target,"bot1","76561197991576958"); - сделать нпс ботом
Botfunctions.Unload_AI(target); - убрать из нпс бота
объект SurvivorBase


#
как сделать чтоб бот ходил когда ты в него вселился
1. вселяешься в бота
2. выполняешь target.PlayerSelectedsib=true;
3. выполнишь назначить интеллект
пока только ходить может - анимацию бота ты не видишь бот не может стрелять
но если выбрать призрака бота и включить вид от 3-го лица то мы получаем аналог камеры которая как по рельсам едет
для съемок роликов как вариант


#
По гранатам
пишем в функции
spawn.OnActivatedByItem(spawn); взорвется сразу в момент спавна (в других действиях в объектах указываем любую гранату даже дымовую)
target.OnActivatedByItem(target); если нужно через кондицию в объектах включить гранаты разбросанные уже


#
учитывайте что target должен быть PlayerBase а значит если будет ошибка то нужно перед таргетом сделать
PlayerBase user_target = PlayerBase.Cast(target); и использовать user_target

Сменить группу бота на стимайди игрока тем самым сделать его главным и боты будут следовать за ним
target.SetGroup("76561198197506368");


#
Назначить игроку группу бота где 111 это группа
target.SetGroupLeader("111");


#
target.ExitGroup(); - убрать у игрока группу бота, стандартная группа игрока это его стим айди


#
Пример триггера который через чат спавнит что нужно админу

1 в триггере включаем текстовые сообщения на частичное совпадение

в вызов функции пишем

PlayerBase user = PlayerBase.Cast(target);PlayerIdentity identity=user.GetIdentity();string uid=identity.GetPlainId();if(uid=="76561197991576958"){GetGame().CreateObjectEx(text_array[1], target.GetPosition(), ECE_PLACE_ON_SURFACE);}

когда юзер со стим айди 76561197991576958 пишет в чат
spawn svd под ногами у него появляется svd
вариаций много но 1 из примернов такой


#
в голосовых сетах работает:
умер
получил урон
получил урон от союзника
убегает от врага
ранил врага
ранил или убил врага
вступил в группу
покинул группу
сменился интеллект
услышал шум


#
PlayerBase user_target = PlayerBase.Cast(target);user_target .SetGroupLeader("111");

PlayerBase user_target = PlayerBase.Cast(target);user_target.ExitGroup();


#
-


#
-


#
Для стройки - чтоб были все детали или для спавна авто с деталями

в разделе объект пишем класс
Fence - стена
Watchtower - вышка
ShelterSite - шалаш
в ввозов функции пишем
spawn.OnDebugSpawn();


#
-


#
-


#
Нюансы трейдера
1. боту нужен диалог и галочка торговля
2 контейнер в который он складывает и берет лут (контейнер именной)
3 в диалогах вызов меню торговли и имя трейд меню

по меню
цена покупки - это цена с которой игрок покупает лут
цена продажи - цена с которой игрок продает лут(покупку ставьте чуть выше чем продажу) коэффициента нет и он не нужен
урон покупки - урон продажи - это уровень повреждения с которым бот может купить или продать лут
лимит покуки - лимит продажи - нужен для 2 параметров - ну чтоб бот не покупал лута много одного типа
и 2 это связан с лимит коэффициент - это проценты
суть его в том что если поставить
цену 100 за акм
лимит 5
коэффициент 50 -
то 1 товар он купит и продаст по 100
2 товар по 90
3 по 80
4 по 70
5 по 60

то есть цена будет и на покупку и на продажу падать до того процента(но не включительно его)

если поставить 0% кооф лимита то
последняя цена будет соизмерима "почти бесплатно"
а 100% отключит уменьшение цены
на продажу работает так же

если у бота 1 акм а цена стоит 100 то он продаст его по 100
но если у бота 2 акм а лимит например 5 с кооф лимитом 0%
он продаст его по 80 а если 5 акмов у бота то 1 он продаст по цене 20, 2 по 40, 3 по 60, 4 по 80 а 5 по 100



по, це, он, то, лимит, даст, меню, бота, дажи, не, дажу, акм, нн, лут, коэффициент
#
еще нюанс по ценам
1. можно использовать базовый классы для цены - если akm_base поставить цену то все акамы будут иметь цену это и не надо для каждого писать цену
2. цена, кооф, лимиты связаны с кнопкой "адд сел" "адд бай" и влияет сразу на весь товар в списке то есть если вы хотите в поиске указать bottl то в списке появятся вся вода(она може быть в разном базовом классе так что 1 вариант не пригодится) и когда вы нажимаете адд сел или бай то все из списика добавиться с указанной ценой и условиями по урону и лимитам - это способ оч быстро добавить кучу цен на однотипные шмотки например которые имеют разные базовые классы
3 поиск по типу - если поставить галочку и указать например akm он покажет все классы этого базового класса но нужно писать именно akm_base чтоб он нашел такой базовый класс и показал все его подклассы



то, классы, цену, адд, по, он, писать, бай, указать, вы, списке, не, мер, сел, базовый
то, классы, цену, адд, по, он, писать, бай, указать, вы, списке, не, мер, сел, базовый
#
пока 2 меню торговли но буду "ретекстуры" в теме ретекстур где можно будет двигать их менять местами и картинки свои ставить - добавлю инструкцию



местами, менять, их, картинки, свои, инструкцию, добавлю, ставить, двигать, будет, но, торговли, меню, буду, ретекстуры
местами, менять, их, картинки, свои, инструкцию, добавлю, ставить, двигать, будет, но, торговли, меню, буду, ретекстуры
#
SurvivorBase - в обьекты - чтоб по кд срабатывало на всех игроков в триггере


#
радиусе 200 метров все зомби бежать к таргету
в вызов функции пишем строку:

NoiseSystem m_noise = GetGame().GetNoiseSystem();ref NoiseParams m_NoisePar = new NoiseParams();m_NoisePar.LoadFromPath("cfgAmmo RGD5Grenade_Ammo NoiseExplosion");m_noise.AddNoiseTarget(target.GetPosition(),10,m_NoisePar,1.0);


#
Определить что на игроке наручники
слот - руки
предмет HandcuffsLocked


#
Порядок наследования в скриптах кассов

class Object extends IEntity
class ObjectTyped extends Object
class Entity extends ObjectTyped
class EntityAI extends Entity
class Man extends EntityAI
class Human extends Man
class DayZPlayer extends Human
class DayZPlayerImplement extends DayZPlayer
class ManBase extends DayZPlayerImplement
class PlayerBase extends ManBase
class PlayerBaseClient extends PlayerBase
class SurvivorBase extends PlayerBaseClient


#
Способ сменить таргета через вызов функций

trigger.m_InheritTrigger_temp=parent;


#
остановить спавн триггера через вызов функций
trigger.m_spawn_trigger=false;


#
в вызове функции
GetGame().ObjectDelete(child);

удаляет объект по условию триггера "предмет в инвентаре"


#
Таргет становится владельцем заспанненого контейнера он же класс spawn в триггере
Botfunctions.SetTraider_Container_Guid(spawn,target.GetIdentity().GetPlainId());
...
target.GetIdentity().GetPlainId() - это получение стим айди
spawn - это сам контейнер так как если прописать контйенер в других действиях он автоматом в класс spawn перекидывается для вызова функций


#
Botfunctions.MoveItemAll(otkda,kuda,typeName,count,typeAction,slot_otkuda,slot_kuda)
otkda - агент откуда брать лут
kuda - агент куда кидать
typeName - класс лута который нужно перекинуть, например "akm" или ""
count - колличество лута сколько кидать, если нужен весь ставьте больше.
typeAction - тип перекидывания - 0 - это лут в месте с лутом в нутри например куртки, 1 весь лут отдельно.
slot_otkuda - слот лута откуда брать, например слот рюкзака на игроке
slot_kuda - слот лута куда кидать


#
GetMoveItemAll(otkda,typeName,typeAction,slot) - выдает количество лута у контейнера любого
otkda -агент контейнера
typeName - тип лута например "akm"
typeAction - не нужно, значение 0
slot- если нужен конкретный слот, если нет то ""


#
как через вызов функций разблокировать слот у стройки

Fence fence = Fence.Cast( target );fence.GetInventory().SetSlotLock( InventorySlots.GetSlotIdFromString("Att_CombinationLock"), false );

условие объект Fence


#
Если в вызове функций написать

trigger.m_spawn_trigger=false;
то триггер не будет спавнить новый триггер если его обернуть в иф то это получиться аналог кондиции


#
"Head","Shoulder","Melee","Headgear","Mask","Eyewear","Hands","LeftHand","Gloves","Armband","Vest","Body","Back","Hips","Legs","Feet","Splint_Right"
имена слотов


#
в триггере

$profile:/BotMap_sib/base/111.json


куда файл класть(папку создать можно любую да и место в приципе любое)
DayZServer2\instance_dayzserver\BotMap_sib\base\111.json


#
удалить и переместить обьект HouseNoDestruct


#
удалить здание
GetDayZGame().GetSuppressedObjectManagerTemp().Suppress(target);

восстановить после рестарта(но вроде как не до конца на сервере Dayz надо его спавнить)
GetDayZGame().GetSuppressedObjectManagerTemp().Unsupress(target);


#
Как проверять включена ли рация, фальшфаер да и любой предмет который можно включить

условие активный слот, предмет и имя класса, в вызове функции

if(child.GetCompEM().IsSwitchedOn()==false)trigger.m_spawn_trigger=false;

и в других действиях заспавнить триггер
если предмет в нужном слоте не включен то триггер сработает но не заспавнит следующий

child это как parent или trigger только более редкое отлавливание, в данном случаи
триггер - это игрок
перента - нет
а child - это рация


#
чтобы получить номер волны используем
child.GetTunedFrequency().ToString()
пример будет
91.3