Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a theme in the appropriate section
    No need to write everything in the chat!
  • Sell or buy?

    Use the services of a guarantor
    We will make your transaction safe
  • Don't want a BAN?

    Please read our rules
    Don't disturb the order
  • Visit the market

    There you can sell or buy
    Everything related to game servers
DrTauren

DZAI 2.2.1 для DayZ EPOCH 1.0.6.1

Recommended Posts

DZAI создана простой, легко настраиваемой, лёгкой в установке системой. Она создана для работы с любыми DayZ-модами и картами.

Особенности системы:

  • Статичный спавн ботов - в городах, деревнях, на военных базах
  • Динамический спавн ботов - спавнятся рандомно по всей карте. Могут появиться где угодно и когда угодно
  • Патрули на воздушной технике - патрули также появляются рандомно. Пешие игроки имеют маленький шанс быть обнаруженными, но игрокам на какой-либо технике повезло гораздо меньше :smilingimp:
  • Сухопутные патрули на технике - появляются так же рандомно, курсируют по дорогам между городами и деревнями
  • Собственноручно настраиваемые патрули - спавните ботов и различные патрули в нужных вам местах. Например на ваших кастомных военных базах
  • Боты используют только лутабельное оружие - вы можете подобрать любое оружие с убитого бота без каких-либо проблем, т.к. их лут генерируется с учётоб таблиц лута вашего мода. Чем реже лут у бота, тем он опасней (автор имеет ввиду скилл бота)
  • Система жизней - боты имеют столько же жизней, как игрок. Точно так же могут упасть без сознания. Так что лучше стрелять по головам

 

 

Установка:
1) Качаем архив: 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

2) Распаковываем наш dayz_server.pbo, затем открываем файл server_monitor.sqf

3) Находим строку:

allowConnection = true;

и добавляем над ней эту:

[] call compile preprocessFileLineNumbers "\z\addons\dayz_server\DZAI\init\dzai_initserver.sqf";

4) Копируем папку DZAI из скаченного архива в корень нашего dayz_server
5) Настроить работу системы под себя вы можете в этом файле: DZAI\init\dzai_config.sqf

Share this post


Link to post
Share on other sites





Если на сервере 100 из 100(например) допустимых транспортных средств, то патрули на  ТС перестают спавнится:

18:33:29 "DZAI Debug: Attempting to place 2 random spawns on the map..."
18:33:29 "DZAI Debug: Random spawn 1 of 2 placed at [6149.63,12654.3,0] (Retries: 1)."
18:33:32 "DZAI Debug: Random spawn 2 of 2 placed at [7046.63,11093.4,0] (Retries: 1)."
18:33:46 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.815731.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!
18:34:11 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.817966.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!
18:34:36 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.821452.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!

=====
С открытыми ТС тоже не понятно.

Делал так:

if(DZAI_vehLock) then {_vehicle setVehicleLock "LOCKED";} else {_vehicle setVehicleLock "OPEN";};

ТС открыты, но спавнятся и закрытые без экипажа.

После каждого рестарта всё по разному. Щас убрал половину ТС с карты, а патрули всё равно не появляются.

Edited by Димас (see edit history)

Share this post


Link to post
Share on other sites
3 часа назад, Димас сказал:

Если на сервере 100 из 100(например) допустимых транспортных средств, то патрули на  ТС перестают спавнится:


18:33:29 "DZAI Debug: Attempting to place 2 random spawns on the map..."
18:33:29 "DZAI Debug: Random spawn 1 of 2 placed at [6149.63,12654.3,0] (Retries: 1)."
18:33:32 "DZAI Debug: Random spawn 2 of 2 placed at [7046.63,11093.4,0] (Retries: 1)."
18:33:46 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.815731.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!
18:34:11 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.817966.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!
18:34:36 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.821452.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!

=====
С открытыми ТС тоже не понятно.

Делал так:


if(DZAI_vehLock) then {_vehicle setVehicleLock "LOCKED";} else {_vehicle setVehicleLock "OPEN";};

ТС открыты, но спавнятся и закрытые без экипажа.

После каждого рестарта всё по разному. Щас убрал половину ТС с карты, а патрули всё равно не появляются.

у меня вообще не спавнятся

подозреваю эти миссии уже не торт

Edited by Miduznya (see edit history)

Share this post


Link to post
Share on other sites

Miduznya DZAI не миссии, а патрули. В конфигах DZAI есть дебаг отображение. Включите его и смотрите почему не работает.

Share this post


Link to post
Share on other sites
4 минуты назад, TheFirstNoob сказал:

Miduznya DZAI не миссии, а патрули. В конфигах DZAI есть дебаг отображение. Включите его и смотрите почему не работает.

Вы об этом?

// Включить или отключить ведение журнала событий для arma2oaserver.rpt. Установка уровня отладки. 0: нет выходных данных отладки, 1: основной вывод отладки, 2: расширенный отладочный вывод. (По умолчанию: 0)
// Отладочный вывод может помочь в поиске дополнительной информации о фоновом поведении DZAI. Этот вывод полезен при обращении за помощью в отношении ошибок или неожиданного поведения.
DZAI_debugLevel = 2;

Если да, то вот результаты:

:33:29 "DZAI Debug: Attempting to place 2 random spawns on the map..."
18:33:29 "DZAI Debug: Random spawn 1 of 2 placed at [6149.63,12654.3,0] (Retries: 1)."
18:33:32 "DZAI Debug: Random spawn 2 of 2 placed at [7046.63,11093.4,0] (Retries: 1)."
18:33:46 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.815731.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!
18:34:11 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.817966.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!
18:34:36 UnExpected call of CreateVehicle for 'Logic', pos(0.000000.2,0.821452.2,0.000000.2). Vehicles with brain cannot be created using 'createVehicle'!

 

Share this post


Link to post
Share on other sites

Я понимаю что это патрули, я включил только хелики патрули но их все равно нет, пешие есть но они особо и  не нужны

DZMS-DayZMissionSystem-master все нормально работает я проверял!

извиняюсь все работает перепроверил!

Edited by Miduznya (see edit history)

Share this post


Link to post
Share on other sites

Внесу небольшой вклад: переведено на русский язык с пояснениями 

Может кому-то и надо будет
dzai_config.sqf //Файл настройки ботов и т.д.

Скрытый текст

 


diag_log "[DZAI] Reading DZAI configuration file.";

/*	Настройки DZAI.
--------------------------------------------------------------------------------------------------------------------*/

//Включить или отключить лог в arma2oaserver.rpt. Установка уровня отладки. 0: Нет лога, 1: Основной лог, 2: Расширенный лог. (Default: 0)
//Вывод отладочной информации может помочь найти дополнительную информацию о фоновом поведении DZAI. Это полезно для выявления ошибок и непредвиденного поведения.
DZAI_debugLevel = 2;

//Частота обновления монитора в журнале RPT в секундах. Монитор периодически сообщает количество макс / текущие единицы AI и динамический спавн триггеров в журнале RPT. (Default: 300, 0 = Disable reporting)	
DZAI_monitorRate = 300;

//Включить или выключить проверку таблиц Имя Класса (classname) используемого по DZAI. Если недействительные записи найдены, они будут удалены и внесены в журнал регистрации RPT. 
//Если эта функция отключена, любые неверные имена классов не будут удалены и клиенты могут потерпеть крах, если есть AI с недействительными предметами. Отключить только если предыдущая проверка не показывает неверные имена классов. (Default: true).	
DZAI_verifyTables = true;

//Включить спавн на сервере объектов/зданий обычно спавнящихся на клиентской стороне DayZ CfgTownGenerator. Предотвращает AI от ходьбы / стрельбы через мусор и другие объекты. (Default: true)	
//Если запускается DayZ Mod ("vanilla DayZ") или DayZ Overwatch, рекомендуется включить эту опцию, т.к. много дополнительных зданий обрабатываются в CfgTownGenerator. Не используется с Epoch.	
//Не включать во избежании задвоения объектов!																																				  
DZAI_objPatch = false;

//Минимальное время в секундах, которое должно пройти, прежде чем каждый труп AI или уничтоженный транспорт будет очищен с помощью планировщика задач DZAI. DZAI не будет убирать тела/транспортные средства, если есть рядом игрок. (Default: 900).	
//Примечание: Другие сценарии очистки могут мешать очистке мертвых AI / транспортных средств!	
DZAI_cleanupDelay = 300;

//Включить автоматическое обнаружение DayZ модов на сервере. Если дополнительная поддержка существует для модов, DZAI будет загружать дополнительные имена классов (пример: оружие, скины или другие предметы) 
//Дополнительная поддержка существует для следующих модов DayZ: Epoch, Overwatch, Unleashed, Hunting Grounds, 2017. (Default: true)
DZAI_modAutoDetect = true;


/*	Настройки ботов AI.
--------------------------------------------------------------------------------------------------------------------*/

//Расширенные настройки системы здоровья AI. . 
//Если включено, AI будут использовать систему 12000 крови DayZ, могут быть без сознания и Tasered и могут самостоятельно использовать пакет крови / морфин. Если этот параметр отключен, AI будут использовать по умолчанию обработку повреждений Arma 2. (Default: true)
DZAI_useHealthSystem = true;

//Минимальное и максимальное количество крови AI на каждую единицу. Каждый отдельный бот будет иметь рандомизированный уровень крови в пределах этого диапазона. Верхний предел: 12000 крови  (Default: [10000,12000])
//Примечание: Не действует, если DZAI_useHealthSystem = false
DZAI_unitBloodLevel = [10000,20000];

//Количество крови восстанавливающееся из full self-heal. Треть от общего количества восстанавливается 3 раза каждые 3 секунды. Примечание: Относится к пехотным AI единицам. (Default: 6000)
//Примечание: Не действует, если DZAI_useHealthSystem = false
DZAI_unitHealAmount = 10000;

//Ниже этого уровня крови, AI может принять решение, чтобы излечить себя до количества, указанного в DZAI_unitHealAmount. Исцелению требуется 9 секунд до полного завершения и может быть прервано. (Default: 5000)
//Примечание: Не действует, если DZAI_useHealthSystem = false
DZAI_lowBloodLevel = 10000;

//Включить или отключить реагирование зомби на выстрелы AI. Никакого эффекта, если DZAI_zombieEnemy = false. Включение этой опции может повлиять на производительность сервера, т.к. скрипт запускается для каждой выпущенной пули AI. 
//Примечание: AI не могут быть атакованы или повреждены зомби. (Default: false)	
DZAI_weaponNoise = false;

//Если включено, группа AI попытается разыскать игрока, ответственного за убийство члена группы. Игрокам с радиостанциями будет дано текстовое предупреждение, если AI будут преследовать. (Default: true)
DZAI_findKiller = true;	

//Если спавн ПНВ низкий или вовсе нету, тогда можно дать AI временные ПНВ, только если они спавнятся с weapongrade 1 или выше (только во время ночных часов). Временные ПНВ являются нелутабельными и будут удалены в момент смерти. (Default: false).	
DZAI_tempNVGs = true;	

//Количество humanity, чтобы вознаградить игрока за убийство AI. (Default: 0)	
DZAI_humanityGain = 100;	

//Если включено, игрокам с радиостанциями будет дано текстовое предупреждение, если их преследует группа AI. (Default: true)
DZAI_radioMsgs = true;

//Если включено, последнему оставшемуся в живых боту из группы будет увеличен немного навык (Skill). Не влияет, если бот заспавнился в одиночку. (Default: false)
DZAI_lastManStanding = true;


/*DZAI настройки на стороне аддон клиента. 
** Примечание **: Эти настройки требуют DZAI на стороне аддон клиента для установки в файл миссии ПБО, для того чтобы работать.
--------------------------------------------------------------------------------------------------------------------*/

//Включить использование на стороне клиента радио аддон для радиограмм вместо метода дистанционного выполнения. (Default: false)
DZAI_clientRadio = true;

//Включить или отключить AI враждебность к зомби. Если включено, AI единицы заспавненые DZAI будет атаковать близлежащих зомби. (Default: false)
DZAI_zombieEnemy = false;	

//Максимальное расстояние (в метрах) для AI лидера группы для обнаружения зомби. Увеличение диапазона за пределы умолчания может негативно сказаться на производительности сервера. (Default: 150)	
DZAI_zDetectRange = 150;

//Включение или отключение сообщения о смерти AI. Сообщения будут отправлены только игроку, ответственного за убийство бота. Сообщения будут отправлены в системный чата в формате "(Unit name) was killed." (Default: false)
DZAI_deathMessages = true;	

/*	Статические параметры спавна AI.
--------------------------------------------------------------------------------------------------------------------*/

//Включить или выключить статический спавн AI. Если включено, AI точки спавна будут генерироваться в городах, поселках и других предопределенных областях. Не влияет на пользовательский спавн. (Default: true).
DZAI_staticAI = true;

//Установить минимальное и максимальное время ожидания в секундах на респаун группы AI после того, как все AI были убиты. Применяется для статического AI и пользовательского спавна AI. (Default: Min 300, Max 600).	
DZAI_respawnTimeMin = 300;
DZAI_respawnTimeMax = 600;

//Время в секундах, прежде чем AI удалятся, когда ни один из игроков не присутствует в зоне триггера. Применяется для статического AI и пользовательского спавна AI. (Default: 120)	
DZAI_despawnWait = 120;

//Пределы респавна. Установить -1 для неограниченного респавна. (Default: -1 for each).
DZAI_respawnLimit0 = -1; //Предел респавна для низкого уровня AI находящихся в малозначительных облостях (Default: -1)
DZAI_respawnLimit1 = -1; //Предел респавна для среднего уровня AI находящихся в городах и других облостях средней значимости (Default: -1)
DZAI_respawnLimit2 = -1; //Предел респавна для высокого уровня AI находящихся в местах с военным лутом (Default: -1)
DZAI_respawnLimit3 = -1; //Предел респавна для очень высокого уровня AI находящихся в местах с очень хорошим военным лутом (Default: -1)

//Spawn probabilities
DZAI_spawnChance0 = 0.40;	//Шанс респавна для низкого уровня AI находящихся в малозначительных облостях (По умолчанию: 0.40)
DZAI_spawnChance1 = 0.60;	//Шанс респавна для среднего уровня AI находящихся в городах и других облостях средней значимости (По умолчанию: 0.60)
DZAI_spawnChance2 = 0.80;	//Шанс респавна для высокого уровня AI находящихся в местах с военным лутом (По умолчанию: 0.80)
DZAI_spawnChance3 = 0.90;	//Шанс респавна для очень высокого уровня AI находящихся в местах с очень хорошим военным лутом (По умолчанию: 0.90)


/*	Динамические параметры спавна AI.
--------------------------------------------------------------------------------------------------------------------*/

//Включение или отключение динамического спавна AI. Если включен, точки спавна AI будут созданы для случайно выбранных игроков с рандомизированным интервалом. (Default: true)	
DZAI_dynAISpawns = false;

//Время (в секундах), необходимое для достижения максимальной вероятности спавна для каждого игрока, после чего вероятность сбрасывается до 0%. Меньшее число = Более частый спавн, Больше = Реже. (Recommended range: 1200-2700, Default: 1800)
DZAI_maxSpawnTime = 2700;

//Время (в секундах), чтобы каждый игрок сохранил максимальную вероятность спавна. (Default: 1800).
DZAI_keepMaxSpawnTime = 1800;

//Вероятность для динамического AI активно охотиться на выбранного игрока. Если проверка вероятности не удалась, динамический AI будет патрулировать местность, а не охотится. (Default: 0.50)
DZAI_huntingChance = 0.50;

//Вероятность отправить первый доступный AI вертолет, чтобы укрепить динамическую группу AI. Никакого эффекта, если DZAI_maxHeliPatrols = 0. (Default: 0.50)
DZAI_heliReinforceChance = 0.50;

//Массив области черного списка маркеров. Игроки в пределах маркеров областей не будут целями для динамического спавна AI (Example: ["BlacklistArea1","BlacklistArea2","BlacklistArea3"])
//Epoch: DZAI автоматически настроит 200м-радиус вокруг каждого трейдера.
DZAI_dynAreaBlacklist = [];

//Время ожидания до удаления всех единиц AI в динамической области триггера, когда ни один из игроков не присутствует. (Default: 120)
DZAI_dynDespawnWait = 120;

//Включение или отключение спавна динамических свободных зон с 600м радиусом вокруг спавна игроков. (Default: false)
DZAI_freshSpawnSafeArea = true;


/*	Настройки спавна ботов (функция в разработке)
--------------------------------------------------------------------------------------------------------------------*/		

//Максимальное количество помещенных рандомных(случайных) спавнов на карте
DZAI_maxRandomSpawns = 100;

//Время, чтобы ждать, прежде чем despawning все единицы ИИ в случайной области появления, когда никакие игроки не присутствуют. (По умолчанию: 120)
DZAI_randDespawnWait = 120;

//Массив областей черного списка. Игроки в маркерных зонах не будут нацелены на случайные ИИ-спавны (например: ["BlacklistArea1","BlacklistArea2","BlacklistArea3"])
//Epoch: DZAI автоматически настроит области черного списка на 200 м вокруг каждой области трейдера.
//Совет. Чтобы использовать области динамического чернового списка для областей случайного порождения черного списка, просто установите DZAI_randAreaBlacklist = DZAI_dynAreaBlacklist;
DZAI_randAreaBlacklist = [];


/*	Настройки воздушных транспортных патрулей AI. Эти патрули будут случайным образом перемещаться между различными городами и поселками.
--------------------------------------------------------------------------------------------------------------------*/

//Глобальное максимальное количество активных AI патрулей на воздушных транспортных средствах. Установите в 0 для отключения. (Default: 0).	
DZAI_maxHeliPatrols = 3;

//Минимальное и максимальное время ожидания в секундах, чтобы возродить патруль AI после того, как транспортное средство было уничтожено или отключено. (Default: Min 600, Max 900).
DZAI_respawnTMinA = 600;
DZAI_respawnTMaxA = 900;

//Имена классов воздушного транспорта с максимальным количеством каждого типа на спавн. Например: [["UH1H_DZ",1]]
DZAI_heliList = [
	//с пулеметами
	["UH1H_DZ",1],
	["CH_47F_EP1",1],
	["MH60S",1],
	["UH60M_EP1",1],
	["UH1H_DZ2",1],
	["Mi17_DZ",1]
];

//Уровень сложности воздушных транспортных средств патрульных единиц. На уровень сложности также влияет снаряжение AI. Возможные значения: 0 to 3 (Default: 3)
DZAI_heliUnitLevel = 3;

//Максимальное количество наводчиков летательного аппарата. Ограничено реальным количеством доступных мест для наводчика. (Default: 2)
DZAI_heliGunnerUnits = 3;

//Укажите оружие для воздушных транспортных средств, которые без оружия по умолчанию. DZAI будет вооружать эти воздушные транспортные средства, в соответствии с указанным оружием на каждое транспортное средство. 
//Имена классов оружия проверяются. Если имя класса является недействительным (запрещены или отсутствует), то оно не будет добавлено в транспортное средство. 
//Формат: Каждая строка, содержащая имя класса транспорта будет оснащена оружием из соответствующей строки в разделе оружия. DZAI автоматически выберет тип патронов.
DZAI_airWeapons = [
	//Имена классов воздушного транспорта (Не забывайте: нет запятой для последней записи!)
	["Helicopter1_Example_Classname","Helicopter2_Example_Classname"]
	,
	//Имена классов оружия (Не забывайте: нет запятой для последней записи!)
	["Helicopter1_Example_Weapon","Helicopter2_Example_Weapon"]
];


/*AI Land vehicle patrol settings. These AI vehicles will randomly travel between different cities and towns.
--------------------------------------------------------------------------------------------------------------------*/	

//Глобальное максимальное количество активных AI патрулей наземных транспортных средств. Установите в 0 для отключения. (Default: 0).	
DZAI_maxLandPatrols = 5;

//Минимальное и максимальное время ожидания в секундах, чтобы возродить патруль AI после того, как транспортное средство было уничтожено или отключено. (Default: Min 600, Max 900).
DZAI_respawnTMinL = 600;
DZAI_respawnTMaxL = 900;

//Имена классов наземных транспортных средств с максимальным количеством каждого типа на спавн. Например: [["UAZ_Unarmed_TK_EP1",1]]
DZAI_vehList = [
	//с пулеметами:
	["HMMWV_Armored",1],
	["LandRover_Special_CZ_EP1",1],	  
	["UAZ_MG_CDF",1],
	["Offroad_DSHKM_Gue",1],
	["Pickup_PK_GUE",1]
];

//Уровень сложности наземных транспортных средств патрульных единиц. На уровень сложности также влияет снаряжение AI. Возможные значения: 0 to 3 (Default: 3)
DZAI_vehUnitLevel = 3;

//Максимальное количество наводчиков наземного аппарата. Ограничено реальным количеством доступных мест для наводчика. (Default: 1)
DZAI_vehGunnerUnits = 2;

//Максимальное количество грузовых единиц наземного транспортного средства. Ограничено реальным количеством доступных мест. (Default: 3)
DZAI_vehCargoUnits = 4;


/*	Настройки транспорта AI (Воздушный & Наземный)
--------------------------------------------------------------------------------------------------------------------*/

//Массив области черного списка маркеров. Игроки в пределах маркеров областей не будут целями для наземных транспортных средств. (Пример: ["BlacklistArea1","BlacklistArea2","BlacklistArea3"])
//Примечание: Транспортные средства могут пройти через эти районы, но не будет делать остановки, если враги не встречаются.
DZAI_waypointBlacklist = [];


/*	Настройки выбора оружия AI
--------------------------------------------------------------------------------------------------------------------*/

//True: Динамически генерировать список оружия AI от CfgBuildingLoot (DayZ таблица лута). 
//False: Используйте таблицы заданного оружия, расположенные ближе к концу этого файла. (Default: true).
//Рекомендуется включить DZAI_verifyTables если эта опция установлена в false. 
DZAI_dynamicWeaponList = true;

//Определяет, читает ли DZAI по умолчанию DayZ таблицы лута для генерации динамического оружия AI или из пользовательских таблиц лута. (Default: false)
//Не влияет, если DZAI_dynamicWeaponList = false. Если DZAI не может найти пользовательские таблицы лута, то будут использоваться таблицы лута по умолчанию. 
//Если лут в таблицах не найден, DZAI будет использовать таблицы с готовым оружием.
DZAI_customLootTables = true;

//Список названий классов оружия, которые AI никогда не должны использовать. По умолчанию, AI может нести любое лутабельное оружие. (Только если DZAI_dynamicWeaponList = true)  
//Пример: DZAI_banAIWeapons = ["M107_DZ","BAF_AS50_scoped"] удалит M107 и AS50 из таблиц оружия AI, если список динамического оружия включен. 
//Примечание: Рекомендуется добавить все имена классов оружия ближнего боя в этот список, т.к. AI имеют проблемы с использованием оружия ближнего боя. 
//Предварительно запрещенное оружие по DZAI: "Crossbow_DZ","Crossbow","MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeBaseball","MeleeBaseBallBat","MeleeBaseBallBatBarbed","MeleeBaseBallBatNails"
DZAI_banAIWeapons = ["M107_DZ","BAF_AS50_scoped"];	

//Список пусковых типов оружия для среднего / высокого уровня AI для использования (по умолчанию, weapongrade 1/2/3), пример: ["M136"]. Если оставить пустым, AI не будут использовать пусковое оружие. (Default: [])
//Если AI столкнуться с бронированным транспортом игрока, они будут переключаться на случайно выбранный пусковой тип оружия. 
//Добавленные имена классов оружия здесь проверяются, если DZAI_verifyTables = true. Примечание: Launcher оружия удаляются у AI после смерти.
DZAI_launcherTypes = ["M136"];	

//Список AI weapongrades, которым разрешено использовать пусковые виды оружия. Отдельные пользовательские weapongrade уровни могут быть добавлены, чтобы использоваться. (Default: [1,2,3])
DZAI_launcherLevels = [1,2,3];	

//Предел количества пусковых типов оружия, чтобы добавить для каждой группы AI. Группы не могут иметь больше пусковых установок оружия, чем их weapongrade значение. (Default: 1).
DZAI_launchersPerGroup = 1;


/*	Настройки количества лута AI
--------------------------------------------------------------------------------------------------------------------*/

//Количество из выбора изделий медицинского назначения (Инвентарь)
DZAI_invmedicals = 1;

//Количество из выбора съедобных предметов (Инвентарь) 
DZAI_invedibles = 1;	

//Количество из выбора изделий медицинского назначения (Рюкзак)	
DZAI_bpmedicals = 0; 

//Количество из выбора съедобных предметов (Рюкзак)	
DZAI_bpedibles = 0;	

//Максимальное количество предметов выбранных из DZAI_MiscItemS таблицы.	
DZAI_numMiscItemS = 0;	

//Максимальное количество предметов выбранных из DZAI_MiscItemL таблицы.	
DZAI_numMiscItemL = 0;	


/*	Настройки вероятности лута AI
--------------------------------------------------------------------------------------------------------------------*/

//Шанс для добавления каждого медицинского предмета.
DZAI_chanceMedicals = 0.70;	

//Шанс для добавления каждого съедобного предмета.	
DZAI_chanceEdibles = 0.70;

//Шанс для добавления каждого случайного предмета из DZAI_MiscItemS таблицы.	
DZAI_chanceMiscItemS = 0.0;

//Шанс для добавления каждого случайного предмета из DZAI_MiscItemL таблицы.	
DZAI_chanceMiscItemL = 0.0;	


/*AI weapon/skill вероятности (gradeChances должны добавить до 1.00) - [Civilian, Military, MilitarySpecial, HeliCrash]
//Примечание: AI с более высоким качеством вооружения также будут иметь более высокие параметры навыков.
--------------------------------------------------------------------------------------------------------------------*/

//equipType level 0 - AI будут использовать пистолеты или винтовки, а иногда и общие боевое оружие.
DZAI_gradeChances0 = [0.90,0.10,0.00,0.00];	

//equipType level 1 - AI имеют общие винтовки, многие будут иметь общее боевое оружие. Очень редко, AI появятся с полноценным военным или helicrash оружием.	
DZAI_gradeChances1 = [0.65,0.30,0.04,0.01];	

//equipType level 2 - AI несут военное оружие, а иногда и полноценные военные оружия.	
DZAI_gradeChances2 = [0.15,0.65,0.15,0.05];

//equipType level 3 - Все AI будет нести по крайней мере военное оружие. Многие будут оснащены полноценным военным оружием. Примечание: Воздушные и наземные транспортные патрули используют equipType уровень 3.	
DZAI_gradeChances3 = [0.00,0.50,0.35,0.15];	

//equipType level "dynamic" - Weapongrade шансы на динамический спавн AI. Большинство динамических AI будут нести низкосортные военные оружия, некоторые из них будут нести полноценный военный лут.
DZAI_gradeChancesDyn = [0.00,0.88,0.09,0.03];	


/*
Настройки мастерства AI
Уровень умения: Описание 
0-1: от низкого до среднего опытный AI. Наиболее распространенный тип AI. Предназначены что бы бросать вызов игрокам. 
2-3: высококвалифицированные AI. Нечасто / редкий тип AI которых можно найти в местах с военной добычей. Предназначены убивать игроков. 
Подсказка: Лучший способ быстро настроить AI является изменение значений aimingAccuracy. Для всех типов квалификации, выше число = лучше навык.
*/

//Настройки мастерства AI уровня 0 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.50
DZAI_skill0 = [
	["aimingAccuracy",0.10,0.125],
	["aimingShake",0.50,0.59],
	["aimingSpeed",0.50,0.59],
	["endurance",0.50,0.59],
	["spotDistance",0.50,0.59],
	["spotTime",0.50,0.59],
	["courage",0.50,0.59],
	["reloadSpeed",0.50,0.59],
	["commanding",0.60,0.69],
	["general",0.60,0.69]
];

//Настройки мастерства AI уровня 1 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.60
DZAI_skill1 = [	
	["aimingAccuracy",0.125,0.15],
	["aimingShake",0.60,0.69],
	["aimingSpeed",0.60,0.69],
	["endurance",0.60,0.69],
	["spotDistance",0.60,0.69],
	["spotTime",0.60,0.69],
	["courage",0.60,0.69],
	["reloadSpeed",0.60,0.69],
	["commanding",0.70,0.79],
	["general",0.70,0.79]
];

//Настройки мастерства AI уровня 2 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.70
DZAI_skill2 = [	
	["aimingAccuracy",0.175,0.225],
	["aimingShake",0.70,0.79],
	["aimingSpeed",0.70,0.79],
	["endurance",0.70,0.79],
	["spotDistance",0.70,0.79],
	["spotTime",0.70,0.79],
	["courage",0.70,0.79],
	["reloadSpeed",0.70,0.79],
	["commanding",0.80,0.89],
	["general",0.80,0.89]
];

//Настройки мастерства AI уровня 3 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.80
DZAI_skill3 = [	
	["aimingAccuracy",0.225,0.250],
	["aimingShake",0.80,0.89],
	["aimingSpeed",0.80,0.89],
	["endurance",0.80,0.89],
	["spotDistance",0.80,0.89],
	["spotTime",0.80,0.89],
	["courage",0.80,0.89],
	["reloadSpeed",0.80,0.89],
	["commanding",0.90,0.99],
	["general",0.90,0.99]
];


/*
	Дополнительные настройки мастерства AI могут быть определены (DZAI_skill4 - DZAI_skill9) для соответствующего уровня пользовательских weapongrade, используя тот же формат что выше. 
	Примечание: Если пользовательские weapongrade используются без определения соответствующих пользовательских настроек навыков, вместо этого будут использоваться настройки DZAI_skill3
	Инструкция: заменить "nil" на массив квалификации. См. выше заданные массивы квалификации для примера. 
	Пользовательские AI настройки мастерства могут быть использованы только с пользовательским спавном (спавн, созданный с помощью функции DZAI_spawn).
*/

//weapongrade 4 skills
DZAI_skill4 = nil; 

//weapongrade 5 skills
DZAI_skill5 = nil; 

//weapongrade 6 skills
DZAI_skill6 = nil; 

//weapongrade 7 skills
DZAI_skill7 = nil; 

//weapongrade 8 skills
DZAI_skill8 = nil;

//weapongrade 9 skills
DZAI_skill9 = nil; 


/*
	AI оружие, лут, и настройки экипировки
	
	DZAI сначала загрузит таблицы ClassName определенные ниже, изменить настройки в соответствии с DayZ карты / мод.
	
	Пример: DZAI будет всегда первым загружать таблицы ClassName определенные ниже, а затем, если DayZ Epoch обнаружен DZAI будет добавлять или заменять параметры, указанные в \world_classname_configs\epoch\dayz_epoch.sqf. 
	
*/

//По умолчанию таблицы оружия - DZAI использует ТОЛЬКО эти таблицы, если список динамического оружия (DZAI_dynamicWeaponList) отключен, в противном случае они игнорируются и перезаписываются, если он включен. 
//Примечание: Низкий уровень AI (weapongrade 0) может использовать пистолеты, перечисленные в DZAI_Pistols0 или DZAI_Pistols1. Средний / высокий уровень AI (weapongrade 1+) будут нести пистолеты, но не использовать их - они будут использовать винтовочное оружие.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Pistols0 = ["Makarov_DZ","M1911_DZ","Revolver_DZ"]; 					//Weapongrade 0 pistols
DZAI_Pistols1 = ["M9_DZ","M9_SD_DZ","Makarov_SD_DZ","PDW_DZ","G17_FL_DZ"]; 	//Weapongrade 1 pistols
DZAI_Pistols2 = ["M9_SD_DZ","Makarov_SD_DZ","PDW_DZ","G17_FL_DZ"]; 			//Weapongrade 2 pistols
DZAI_Pistols3 = ["M9_SD_DZ","Makarov_SD_DZ","PDW_DZ","G17_FL_DZ"]; 			//Weapongrade 3 pistols

DZAI_Rifles0 = ["LeeEnfield_DZ","Winchester1866_DZ","MR43_DZ","CZ550_DZ","LeeEnfield_DZ","Winchester1866_DZ","MR43_DZ"]; //Weapongrade 0 rifles
DZAI_Rifles1 = ["M16A2_DZ","M16A2_GL_DZ","AK74_DZ","M4A1_CCO_DZ","AK74_Kobra_DZ","AKS74U_DZ","AKM_DZ","M24_DZ","M1014_DZ","DMR_DZ","M4A1_DZ","M14_CCO_DZ","Remington870_FL_DZ","MP5_DZ","MP5_SD_DZ","M4A3_CCO_EP1"]; //Weapongrade 1 rifles
DZAI_Rifles2 = ["M16A2_DZ","M16A2_GL_DZ","M249_DZ","AK74_DZ","M4A1_CCO_DZ","AK74_Kobra_DZ","AKS74U_DZ","AKM_DZ","M24_DZ","SVD_Gh_DZ","M1014_DZ","DMR_DZ","M4A1_DZ","M14_CCO_DZ","Remington870_FL_DZ","M240_DZ","M4A1_AIM_SD_camo","M16A4_ACOG_DZ","M4A1_HWS_GL_camo","Mk48_CCO_DZ","M4A3_CCO_EP1","Sa58V_RCO_EP1","Sa58V_CCO_EP1","M40A3_Gh_DZ","SA58_DZ","SA58_DZ"]; //Weapongrade 2 rifles
DZAI_Rifles3 = ["FNFAL_DZ","FN_FAL_ANPVS4_DZE","Mk48_CCO_DZ","M249_DZ","L85_Holo_DZ","G36C_DZ","G36C_camo","G36A_Camo_DZ","G36K_Camo_DZ","AKM_DZ","AKS74U_DZ","M14_CCO_DZ","Bizon_SD_DZ","DMR_DZ","RPK74_DZ"]; //Weapongrade 3 rifles

	
/*
	Пользовательские таблицы оружия могут быть определены ниже этой линии (DZAI_Rifles4 - DZAI_Rifles9) для соответствующего уровня пользовательских weapongrade, используя тот же формат что выше. 
	Примечание: Если пользовательские weapongrade используются без определения соответствующего пользовательского массива оружия, вместо этого будет использоваться массив DZAI_Rifles3
	Инструкция: Заменить "nil" с нужного массива оружия. См. выше массивы оружия для примера о том, как определить пользовательские таблицы оружия. 
	Пользовательские таблицы оружия могут быть использованы только с пользовательским спавном (спавн, созданный с помощью функции DZAI_spawn).
*/

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Rifles4 = nil; //weapongrade 4 weapons
DZAI_Rifles5 = nil; //weapongrade 5 weapons
DZAI_Rifles6 = nil; //weapongrade 6 weapons
DZAI_Rifles7 = nil; //weapongrade 7 weapons
DZAI_Rifles8 = nil; //weapongrade 8 weapons
DZAI_Rifles9 = nil; //weapongrade 9 weapons


//Имена классов скинов AI. DZAI будет использовать любой из этих имен классов для спавна AI. Примечание: Дополнительные скины могут быть включены в моде на-основе одной карты или - см. папки в \world_classname_configs
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_BanditTypes = ["Skin_Bandit2_DZ", "Skin_GUE_Commander_DZ", "Skin_GUE_Soldier_2_DZ", "Skin_GUE_Soldier_CO_DZ", "Skin_GUE_Soldier_Crew_DZ", "Skin_GUE_Soldier_Sniper_DZ", "Skin_Ins_Soldier_GL_DZ", "Skin_TK_INS_Soldier_EP1_DZ", "Skin_TK_INS_Warlord_EP1_DZ", "Skin_Bandit1_DZ"];


//Типы рюкзаков AI (для уровней weapongrade 0-3)
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Backpacks0 = ["DZ_Patrol_Pack_EP1","DZ_Czech_Vest_Pouch","DZ_Assault_Pack_EP1"];
DZAI_Backpacks1 = ["DZ_Patrol_Pack_EP1","DZ_Czech_Vest_Pouch","DZ_Assault_Pack_EP1","DZ_British_ACU","DZ_TK_Assault_Pack_EP1","DZ_CivilBackpack_EP1","DZ_ALICE_Pack_EP1"];
DZAI_Backpacks2 = ["DZ_CivilBackpack_EP1","DZ_British_ACU","DZ_Backpack_EP1"];
DZAI_Backpacks3 = ["DZ_CivilBackpack_EP1","DZ_Backpack_EP1"];


//Еда AI / Медицинские предметы. DZAI_Edibles: Питьевые и пищевые элементы. DZAI_Medicals1: Список общих медицинских предметов, которые будут добавлены в инвентарь AI. DZAI_Medicals2: Список всех медицинских предметов, доступных только в больницах, которые будут добавлены в рюкзак AI.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Edibles = ["ItemSodaCoke", "ItemSodaPepsi", "ItemWaterbottle", "FoodCanSardines", "FoodCanBakedBeans", "FoodCanFrankBeans", "FoodCanPasta", "ItemWaterbottleUnfilled","ItemWaterbottleBoiled","FoodmuttonCooked","FoodchickenCooked","FoodBaconCooked","FoodRabbitCooked","FoodbaconRaw","FoodchickenRaw","FoodmuttonRaw","foodrabbitRaw","FoodCanUnlabeled","FoodPistachio","FoodNutmix","FoodMRE"];
DZAI_Medicals1 = ["ItemBandage", "ItemPainkiller"];
DZAI_Medicals2 = ["ItemPainkiller", "ItemMorphine", "ItemBandage", "ItemBloodbag", "ItemAntibiotic","ItemEpinephrine"];


//Разные типы предметов для AI. DZAI_MiscItemS: Список случайных малоценных предметов. DZAI_MiscItemL: Список случайных полу-ценных / полезные вещи.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_MiscItemS = ["ItemHeatpack", "HandRoadFlare", "HandChemBlue", "HandChemRed", "HandChemGreen","SmokeShell","TrashTinCan","TrashJackDaniels","ItemSodaEmpty"];
DZAI_MiscItemL = ["ItemJerrycan", "PartWheel", "PartEngine", "PartFueltank", "PartGlass", "PartVRotor","PartWoodPile"];


//AI toolbelt предметы. Toolbelt добавляются в инвентарь AI при смерти. Формат: [имя класса предмета, вероятность]
//Weapongrade уровень 0-1 AI будут использовать DZAI_tools0 таблицу, weapongrade уровень 2-3 AI будут использовать DZAI_tools1 таблицу. Пользовательский спавн AI будут использовать DZAI_tools1 таблицу. 
//ПРИМЕЧАНИЕ: Не удаляйте элементы из этого списка, установите нулевой шанс. Добавлять элементы Только в конец массива, а не в середину.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_tools0 = [["ItemFlashlight",0.65],["ItemWatch",0.65],["ItemKnife",0.50],["ItemCompass",0.40],["ItemMap",0.35],["ItemMatchbox",0.15],["ItemFlashlightRed",0.05]];
DZAI_tools1 = [["ItemFlashlight",0.75],["ItemWatch",0.75],["ItemKnife",0.75],["ItemCompass",0.75],["ItemMap",0.70],["ItemMatchbox",0.40],["ItemFlashlightRed",0.10]];


//AI используемые типы Toolbelt предметов. Эти предметы будут добавлены в инвентарь AI при создании бота и могут быть использованы AI. Формат: [имя класса предмета, вероятность]
//Weapongrade уровень 0-1 AI будут использовать DZAI_gadgets0 таблицу, weapongrade уровень 2-3 AI будут использовать DZAI_gadgets1 таблицу. Пользовательский спавн AI будут использовать DZAI_gadgets1 таблицу. 
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_gadgets0 = [["binocular",0.40],["NVGoggles",0.00]];
DZAI_gadgets1 = [["binocular",0.60],["NVGoggles",0.05]];


//НЕ РЕДАКТИРОВАТЬ НИЖЕ
diag_log "[DZAI] DZAI configuration file loaded.";

 

 

 

 

настройки делайте под себя или за основу стандар

это мой рабочий код

+ если помог 

Edited by Miduznya (see edit history)

Share this post


Link to post
Share on other sites
12 часа назад, Miduznya сказал:

Внесу небольшой вклад:

Может кому-то и надо будет
dzai_config.sqf

  Скрыть содержимое

 



diag_log "[DZAI] Reading DZAI configuration file.";

/*	Настройки DZAI.
--------------------------------------------------------------------------------------------------------------------*/

//Включить или отключить лог в arma2oaserver.rpt. Установка уровня отладки. 0: Нет лога, 1: Основной лог, 2: Расширенный лог. (Default: 0)
//Вывод отладочной информации может помочь найти дополнительную информацию о фоновом поведении DZAI. Это полезно для выявления ошибок и непредвиденного поведения.
DZAI_debugLevel = 2;

//Частота обновления монитора в журнале RPT в секундах. Монитор периодически сообщает количество макс / текущие единицы AI и динамический спавн триггеров в журнале RPT. (Default: 300, 0 = Disable reporting)	
DZAI_monitorRate = 300;

//Включить или выключить проверку таблиц Имя Класса (classname) используемого по DZAI. Если недействительные записи найдены, они будут удалены и внесены в журнал регистрации RPT. 
//Если эта функция отключена, любые неверные имена классов не будут удалены и клиенты могут потерпеть крах, если есть AI с недействительными предметами. Отключить только если предыдущая проверка не показывает неверные имена классов. (Default: true).	
DZAI_verifyTables = true;

//Включить спавн на сервере объектов/зданий обычно спавнящихся на клиентской стороне DayZ CfgTownGenerator. Предотвращает AI от ходьбы / стрельбы через мусор и другие объекты. (Default: true)	
//Если запускается DayZ Mod ("vanilla DayZ") или DayZ Overwatch, рекомендуется включить эту опцию, т.к. много дополнительных зданий обрабатываются в CfgTownGenerator. Не используется с Epoch.	
//Не включать во избежании задвоения объектов!																																				  
DZAI_objPatch = false;

//Минимальное время в секундах, которое должно пройти, прежде чем каждый труп AI или уничтоженный транспорт будет очищен с помощью планировщика задач DZAI. DZAI не будет убирать тела/транспортные средства, если есть рядом игрок. (Default: 900).	
//Примечание: Другие сценарии очистки могут мешать очистке мертвых AI / транспортных средств!	
DZAI_cleanupDelay = 300;

//Включить автоматическое обнаружение DayZ модов на сервере. Если дополнительная поддержка существует для модов, DZAI будет загружать дополнительные имена классов (пример: оружие, скины или другие предметы) 
//Дополнительная поддержка существует для следующих модов DayZ: Epoch, Overwatch, Unleashed, Hunting Grounds, 2017. (Default: true)
DZAI_modAutoDetect = true;


/*	Настройки ботов AI.
--------------------------------------------------------------------------------------------------------------------*/

//Расширенные настройки системы здоровья AI. . 
//Если включено, AI будут использовать систему 12000 крови DayZ, могут быть без сознания и Tasered и могут самостоятельно использовать пакет крови / морфин. Если этот параметр отключен, AI будут использовать по умолчанию обработку повреждений Arma 2. (Default: true)
DZAI_useHealthSystem = true;

//Минимальное и максимальное количество крови AI на каждую единицу. Каждый отдельный бот будет иметь рандомизированный уровень крови в пределах этого диапазона. Верхний предел: 12000 крови  (Default: [10000,12000])
//Примечание: Не действует, если DZAI_useHealthSystem = false
DZAI_unitBloodLevel = [10000,20000];

//Количество крови восстанавливающееся из full self-heal. Треть от общего количества восстанавливается 3 раза каждые 3 секунды. Примечание: Относится к пехотным AI единицам. (Default: 6000)
//Примечание: Не действует, если DZAI_useHealthSystem = false
DZAI_unitHealAmount = 10000;

//Ниже этого уровня крови, AI может принять решение, чтобы излечить себя до количества, указанного в DZAI_unitHealAmount. Исцелению требуется 9 секунд до полного завершения и может быть прервано. (Default: 5000)
//Примечание: Не действует, если DZAI_useHealthSystem = false
DZAI_lowBloodLevel = 10000;

//Включить или отключить реагирование зомби на выстрелы AI. Никакого эффекта, если DZAI_zombieEnemy = false. Включение этой опции может повлиять на производительность сервера, т.к. скрипт запускается для каждой выпущенной пули AI. 
//Примечание: AI не могут быть атакованы или повреждены зомби. (Default: false)	
DZAI_weaponNoise = false;

//Если включено, группа AI попытается разыскать игрока, ответственного за убийство члена группы. Игрокам с радиостанциями будет дано текстовое предупреждение, если AI будут преследовать. (Default: true)
DZAI_findKiller = true;	

//Если спавн ПНВ низкий или вовсе нету, тогда можно дать AI временные ПНВ, только если они спавнятся с weapongrade 1 или выше (только во время ночных часов). Временные ПНВ являются нелутабельными и будут удалены в момент смерти. (Default: false).	
DZAI_tempNVGs = true;	

//Количество humanity, чтобы вознаградить игрока за убийство AI. (Default: 0)	
DZAI_humanityGain = 100;	

//Если включено, игрокам с радиостанциями будет дано текстовое предупреждение, если их преследует группа AI. (Default: true)
DZAI_radioMsgs = true;

//Если включено, последнему оставшемуся в живых боту из группы будет увеличен немного навык (Skill). Не влияет, если бот заспавнился в одиночку. (Default: false)
DZAI_lastManStanding = true;


/*DZAI настройки на стороне аддон клиента. 
** Примечание **: Эти настройки требуют DZAI на стороне аддон клиента для установки в файл миссии ПБО, для того чтобы работать.
--------------------------------------------------------------------------------------------------------------------*/

//Включить использование на стороне клиента радио аддон для радиограмм вместо метода дистанционного выполнения. (Default: false)
DZAI_clientRadio = true;

//Включить или отключить AI враждебность к зомби. Если включено, AI единицы заспавненые DZAI будет атаковать близлежащих зомби. (Default: false)
DZAI_zombieEnemy = false;	

//Максимальное расстояние (в метрах) для AI лидера группы для обнаружения зомби. Увеличение диапазона за пределы умолчания может негативно сказаться на производительности сервера. (Default: 150)	
DZAI_zDetectRange = 150;

//Включение или отключение сообщения о смерти AI. Сообщения будут отправлены только игроку, ответственного за убийство бота. Сообщения будут отправлены в системный чата в формате "(Unit name) was killed." (Default: false)
DZAI_deathMessages = true;	

/*	Статические параметры спавна AI.
--------------------------------------------------------------------------------------------------------------------*/

//Включить или выключить статический спавн AI. Если включено, AI точки спавна будут генерироваться в городах, поселках и других предопределенных областях. Не влияет на пользовательский спавн. (Default: true).
DZAI_staticAI = true;

//Установить минимальное и максимальное время ожидания в секундах на респаун группы AI после того, как все AI были убиты. Применяется для статического AI и пользовательского спавна AI. (Default: Min 300, Max 600).	
DZAI_respawnTimeMin = 300;
DZAI_respawnTimeMax = 600;

//Время в секундах, прежде чем AI удалятся, когда ни один из игроков не присутствует в зоне триггера. Применяется для статического AI и пользовательского спавна AI. (Default: 120)	
DZAI_despawnWait = 120;

//Пределы респавна. Установить -1 для неограниченного респавна. (Default: -1 for each).
DZAI_respawnLimit0 = -1; //Предел респавна для низкого уровня AI находящихся в малозначительных облостях (Default: -1)
DZAI_respawnLimit1 = -1; //Предел респавна для среднего уровня AI находящихся в городах и других облостях средней значимости (Default: -1)
DZAI_respawnLimit2 = -1; //Предел респавна для высокого уровня AI находящихся в местах с военным лутом (Default: -1)
DZAI_respawnLimit3 = -1; //Предел респавна для очень высокого уровня AI находящихся в местах с очень хорошим военным лутом (Default: -1)

//Spawn probabilities
DZAI_spawnChance0 = 0.40;	//Шанс респавна для низкого уровня AI находящихся в малозначительных облостях (По умолчанию: 0.40)
DZAI_spawnChance1 = 0.60;	//Шанс респавна для среднего уровня AI находящихся в городах и других облостях средней значимости (По умолчанию: 0.60)
DZAI_spawnChance2 = 0.80;	//Шанс респавна для высокого уровня AI находящихся в местах с военным лутом (По умолчанию: 0.80)
DZAI_spawnChance3 = 0.90;	//Шанс респавна для очень высокого уровня AI находящихся в местах с очень хорошим военным лутом (По умолчанию: 0.90)


/*	Динамические параметры спавна AI.
--------------------------------------------------------------------------------------------------------------------*/

//Включение или отключение динамического спавна AI. Если включен, точки спавна AI будут созданы для случайно выбранных игроков с рандомизированным интервалом. (Default: true)	
DZAI_dynAISpawns = false;

//Время (в секундах), необходимое для достижения максимальной вероятности спавна для каждого игрока, после чего вероятность сбрасывается до 0%. Меньшее число = Более частый спавн, Больше = Реже. (Recommended range: 1200-2700, Default: 1800)
DZAI_maxSpawnTime = 2700;

//Время (в секундах), чтобы каждый игрок сохранил максимальную вероятность спавна. (Default: 1800).
DZAI_keepMaxSpawnTime = 1800;

//Вероятность для динамического AI активно охотиться на выбранного игрока. Если проверка вероятности не удалась, динамический AI будет патрулировать местность, а не охотится. (Default: 0.50)
DZAI_huntingChance = 0.50;

//Вероятность отправить первый доступный AI вертолет, чтобы укрепить динамическую группу AI. Никакого эффекта, если DZAI_maxHeliPatrols = 0. (Default: 0.50)
DZAI_heliReinforceChance = 0.50;

//Массив области черного списка маркеров. Игроки в пределах маркеров областей не будут целями для динамического спавна AI (Example: ["BlacklistArea1","BlacklistArea2","BlacklistArea3"])
//Epoch: DZAI автоматически настроит 200м-радиус вокруг каждого трейдера.
DZAI_dynAreaBlacklist = [];

//Время ожидания до удаления всех единиц AI в динамической области триггера, когда ни один из игроков не присутствует. (Default: 120)
DZAI_dynDespawnWait = 120;

//Включение или отключение спавна динамических свободных зон с 600м радиусом вокруг спавна игроков. (Default: false)
DZAI_freshSpawnSafeArea = true;


/*	Настройки спавна ботов (функция в разработке)
--------------------------------------------------------------------------------------------------------------------*/		

//Максимальное количество помещенных рандомных(случайных) спавнов на карте
DZAI_maxRandomSpawns = 100;

//Время, чтобы ждать, прежде чем despawning все единицы ИИ в случайной области появления, когда никакие игроки не присутствуют. (По умолчанию: 120)
DZAI_randDespawnWait = 120;

//Массив областей черного списка. Игроки в маркерных зонах не будут нацелены на случайные ИИ-спавны (например: ["BlacklistArea1","BlacklistArea2","BlacklistArea3"])
//Epoch: DZAI автоматически настроит области черного списка на 200 м вокруг каждой области трейдера.
//Совет. Чтобы использовать области динамического чернового списка для областей случайного порождения черного списка, просто установите DZAI_randAreaBlacklist = DZAI_dynAreaBlacklist;
DZAI_randAreaBlacklist = [];


/*	Настройки воздушных транспортных патрулей AI. Эти патрули будут случайным образом перемещаться между различными городами и поселками.
--------------------------------------------------------------------------------------------------------------------*/

//Глобальное максимальное количество активных AI патрулей на воздушных транспортных средствах. Установите в 0 для отключения. (Default: 0).	
DZAI_maxHeliPatrols = 3;

//Минимальное и максимальное время ожидания в секундах, чтобы возродить патруль AI после того, как транспортное средство было уничтожено или отключено. (Default: Min 600, Max 900).
DZAI_respawnTMinA = 600;
DZAI_respawnTMaxA = 900;

//Имена классов воздушного транспорта с максимальным количеством каждого типа на спавн. Например: [["UH1H_DZ",1]]
DZAI_heliList = [
	//с пулеметами
	["UH1H_DZ",1],
	["CH_47F_EP1",1],
	["MH60S",1],
	["UH60M_EP1",1],
	["UH1H_DZ2",1],
	["Mi17_DZ",1]
];

//Уровень сложности воздушных транспортных средств патрульных единиц. На уровень сложности также влияет снаряжение AI. Возможные значения: 0 to 3 (Default: 3)
DZAI_heliUnitLevel = 3;

//Максимальное количество наводчиков летательного аппарата. Ограничено реальным количеством доступных мест для наводчика. (Default: 2)
DZAI_heliGunnerUnits = 3;

//Укажите оружие для воздушных транспортных средств, которые без оружия по умолчанию. DZAI будет вооружать эти воздушные транспортные средства, в соответствии с указанным оружием на каждое транспортное средство. 
//Имена классов оружия проверяются. Если имя класса является недействительным (запрещены или отсутствует), то оно не будет добавлено в транспортное средство. 
//Формат: Каждая строка, содержащая имя класса транспорта будет оснащена оружием из соответствующей строки в разделе оружия. DZAI автоматически выберет тип патронов.
DZAI_airWeapons = [
	//Имена классов воздушного транспорта (Не забывайте: нет запятой для последней записи!)
	["Helicopter1_Example_Classname","Helicopter2_Example_Classname"]
	,
	//Имена классов оружия (Не забывайте: нет запятой для последней записи!)
	["Helicopter1_Example_Weapon","Helicopter2_Example_Weapon"]
];


/*AI Land vehicle patrol settings. These AI vehicles will randomly travel between different cities and towns.
--------------------------------------------------------------------------------------------------------------------*/	

//Глобальное максимальное количество активных AI патрулей наземных транспортных средств. Установите в 0 для отключения. (Default: 0).	
DZAI_maxLandPatrols = 5;

//Минимальное и максимальное время ожидания в секундах, чтобы возродить патруль AI после того, как транспортное средство было уничтожено или отключено. (Default: Min 600, Max 900).
DZAI_respawnTMinL = 600;
DZAI_respawnTMaxL = 900;

//Имена классов наземных транспортных средств с максимальным количеством каждого типа на спавн. Например: [["UAZ_Unarmed_TK_EP1",1]]
DZAI_vehList = [
	//с пулеметами:
	["HMMWV_Armored",1],
	["LandRover_Special_CZ_EP1",1],	  
	["UAZ_MG_CDF",1],
	["Offroad_DSHKM_Gue",1],
	["Pickup_PK_GUE",1]
];

//Уровень сложности наземных транспортных средств патрульных единиц. На уровень сложности также влияет снаряжение AI. Возможные значения: 0 to 3 (Default: 3)
DZAI_vehUnitLevel = 3;

//Максимальное количество наводчиков наземного аппарата. Ограничено реальным количеством доступных мест для наводчика. (Default: 1)
DZAI_vehGunnerUnits = 2;

//Максимальное количество грузовых единиц наземного транспортного средства. Ограничено реальным количеством доступных мест. (Default: 3)
DZAI_vehCargoUnits = 4;


/*	Настройки транспорта AI (Воздушный & Наземный)
--------------------------------------------------------------------------------------------------------------------*/

//Массив области черного списка маркеров. Игроки в пределах маркеров областей не будут целями для наземных транспортных средств. (Пример: ["BlacklistArea1","BlacklistArea2","BlacklistArea3"])
//Примечание: Транспортные средства могут пройти через эти районы, но не будет делать остановки, если враги не встречаются.
DZAI_waypointBlacklist = [];


/*	Настройки выбора оружия AI
--------------------------------------------------------------------------------------------------------------------*/

//True: Динамически генерировать список оружия AI от CfgBuildingLoot (DayZ таблица лута). 
//False: Используйте таблицы заданного оружия, расположенные ближе к концу этого файла. (Default: true).
//Рекомендуется включить DZAI_verifyTables если эта опция установлена в false. 
DZAI_dynamicWeaponList = true;

//Определяет, читает ли DZAI по умолчанию DayZ таблицы лута для генерации динамического оружия AI или из пользовательских таблиц лута. (Default: false)
//Не влияет, если DZAI_dynamicWeaponList = false. Если DZAI не может найти пользовательские таблицы лута, то будут использоваться таблицы лута по умолчанию. 
//Если лут в таблицах не найден, DZAI будет использовать таблицы с готовым оружием.
DZAI_customLootTables = true;

//Список названий классов оружия, которые AI никогда не должны использовать. По умолчанию, AI может нести любое лутабельное оружие. (Только если DZAI_dynamicWeaponList = true)  
//Пример: DZAI_banAIWeapons = ["M107_DZ","BAF_AS50_scoped"] удалит M107 и AS50 из таблиц оружия AI, если список динамического оружия включен. 
//Примечание: Рекомендуется добавить все имена классов оружия ближнего боя в этот список, т.к. AI имеют проблемы с использованием оружия ближнего боя. 
//Предварительно запрещенное оружие по DZAI: "Crossbow_DZ","Crossbow","MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeBaseball","MeleeBaseBallBat","MeleeBaseBallBatBarbed","MeleeBaseBallBatNails"
DZAI_banAIWeapons = ["M107_DZ","BAF_AS50_scoped"];	

//Список пусковых типов оружия для среднего / высокого уровня AI для использования (по умолчанию, weapongrade 1/2/3), пример: ["M136"]. Если оставить пустым, AI не будут использовать пусковое оружие. (Default: [])
//Если AI столкнуться с бронированным транспортом игрока, они будут переключаться на случайно выбранный пусковой тип оружия. 
//Добавленные имена классов оружия здесь проверяются, если DZAI_verifyTables = true. Примечание: Launcher оружия удаляются у AI после смерти.
DZAI_launcherTypes = ["M136"];	

//Список AI weapongrades, которым разрешено использовать пусковые виды оружия. Отдельные пользовательские weapongrade уровни могут быть добавлены, чтобы использоваться. (Default: [1,2,3])
DZAI_launcherLevels = [1,2,3];	

//Предел количества пусковых типов оружия, чтобы добавить для каждой группы AI. Группы не могут иметь больше пусковых установок оружия, чем их weapongrade значение. (Default: 1).
DZAI_launchersPerGroup = 1;


/*	Настройки количества лута AI
--------------------------------------------------------------------------------------------------------------------*/

//Количество из выбора изделий медицинского назначения (Инвентарь)
DZAI_invmedicals = 1;

//Количество из выбора съедобных предметов (Инвентарь) 
DZAI_invedibles = 1;	

//Количество из выбора изделий медицинского назначения (Рюкзак)	
DZAI_bpmedicals = 0; 

//Количество из выбора съедобных предметов (Рюкзак)	
DZAI_bpedibles = 0;	

//Максимальное количество предметов выбранных из DZAI_MiscItemS таблицы.	
DZAI_numMiscItemS = 0;	

//Максимальное количество предметов выбранных из DZAI_MiscItemL таблицы.	
DZAI_numMiscItemL = 0;	


/*	Настройки вероятности лута AI
--------------------------------------------------------------------------------------------------------------------*/

//Шанс для добавления каждого медицинского предмета.
DZAI_chanceMedicals = 0.70;	

//Шанс для добавления каждого съедобного предмета.	
DZAI_chanceEdibles = 0.70;

//Шанс для добавления каждого случайного предмета из DZAI_MiscItemS таблицы.	
DZAI_chanceMiscItemS = 0.0;

//Шанс для добавления каждого случайного предмета из DZAI_MiscItemL таблицы.	
DZAI_chanceMiscItemL = 0.0;	


/*AI weapon/skill вероятности (gradeChances должны добавить до 1.00) - [Civilian, Military, MilitarySpecial, HeliCrash]
//Примечание: AI с более высоким качеством вооружения также будут иметь более высокие параметры навыков.
--------------------------------------------------------------------------------------------------------------------*/

//equipType level 0 - AI будут использовать пистолеты или винтовки, а иногда и общие боевое оружие.
DZAI_gradeChances0 = [0.90,0.10,0.00,0.00];	

//equipType level 1 - AI имеют общие винтовки, многие будут иметь общее боевое оружие. Очень редко, AI появятся с полноценным военным или helicrash оружием.	
DZAI_gradeChances1 = [0.65,0.30,0.04,0.01];	

//equipType level 2 - AI несут военное оружие, а иногда и полноценные военные оружия.	
DZAI_gradeChances2 = [0.15,0.65,0.15,0.05];

//equipType level 3 - Все AI будет нести по крайней мере военное оружие. Многие будут оснащены полноценным военным оружием. Примечание: Воздушные и наземные транспортные патрули используют equipType уровень 3.	
DZAI_gradeChances3 = [0.00,0.50,0.35,0.15];	

//equipType level "dynamic" - Weapongrade шансы на динамический спавн AI. Большинство динамических AI будут нести низкосортные военные оружия, некоторые из них будут нести полноценный военный лут.
DZAI_gradeChancesDyn = [0.00,0.88,0.09,0.03];	


/*
Настройки мастерства AI
Уровень умения: Описание 
0-1: от низкого до среднего опытный AI. Наиболее распространенный тип AI. Предназначены что бы бросать вызов игрокам. 
2-3: высококвалифицированные AI. Нечасто / редкий тип AI которых можно найти в местах с военной добычей. Предназначены убивать игроков. 
Подсказка: Лучший способ быстро настроить AI является изменение значений aimingAccuracy. Для всех типов квалификации, выше число = лучше навык.
*/

//Настройки мастерства AI уровня 0 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.50
DZAI_skill0 = [
	["aimingAccuracy",0.10,0.125],
	["aimingShake",0.50,0.59],
	["aimingSpeed",0.50,0.59],
	["endurance",0.50,0.59],
	["spotDistance",0.50,0.59],
	["spotTime",0.50,0.59],
	["courage",0.50,0.59],
	["reloadSpeed",0.50,0.59],
	["commanding",0.60,0.69],
	["general",0.60,0.69]
];

//Настройки мастерства AI уровня 1 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.60
DZAI_skill1 = [	
	["aimingAccuracy",0.125,0.15],
	["aimingShake",0.60,0.69],
	["aimingSpeed",0.60,0.69],
	["endurance",0.60,0.69],
	["spotDistance",0.60,0.69],
	["spotTime",0.60,0.69],
	["courage",0.60,0.69],
	["reloadSpeed",0.60,0.69],
	["commanding",0.70,0.79],
	["general",0.70,0.79]
];

//Настройки мастерства AI уровня 2 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.70
DZAI_skill2 = [	
	["aimingAccuracy",0.175,0.225],
	["aimingShake",0.70,0.79],
	["aimingSpeed",0.70,0.79],
	["endurance",0.70,0.79],
	["spotDistance",0.70,0.79],
	["spotTime",0.70,0.79],
	["courage",0.70,0.79],
	["reloadSpeed",0.70,0.79],
	["commanding",0.80,0.89],
	["general",0.80,0.89]
];

//Настройки мастерства AI уровня 3 (мастерство, минимальный навык, максимальный уровень навыка). Базовый уровень квалификации: 0.80
DZAI_skill3 = [	
	["aimingAccuracy",0.225,0.250],
	["aimingShake",0.80,0.89],
	["aimingSpeed",0.80,0.89],
	["endurance",0.80,0.89],
	["spotDistance",0.80,0.89],
	["spotTime",0.80,0.89],
	["courage",0.80,0.89],
	["reloadSpeed",0.80,0.89],
	["commanding",0.90,0.99],
	["general",0.90,0.99]
];


/*
	Дополнительные настройки мастерства AI могут быть определены (DZAI_skill4 - DZAI_skill9) для соответствующего уровня пользовательских weapongrade, используя тот же формат что выше. 
	Примечание: Если пользовательские weapongrade используются без определения соответствующих пользовательских настроек навыков, вместо этого будут использоваться настройки DZAI_skill3
	Инструкция: заменить "nil" на массив квалификации. См. выше заданные массивы квалификации для примера. 
	Пользовательские AI настройки мастерства могут быть использованы только с пользовательским спавном (спавн, созданный с помощью функции DZAI_spawn).
*/

//weapongrade 4 skills
DZAI_skill4 = nil; 

//weapongrade 5 skills
DZAI_skill5 = nil; 

//weapongrade 6 skills
DZAI_skill6 = nil; 

//weapongrade 7 skills
DZAI_skill7 = nil; 

//weapongrade 8 skills
DZAI_skill8 = nil;

//weapongrade 9 skills
DZAI_skill9 = nil; 


/*
	AI оружие, лут, и настройки экипировки
	
	DZAI сначала загрузит таблицы ClassName определенные ниже, изменить настройки в соответствии с DayZ карты / мод.
	
	Пример: DZAI будет всегда первым загружать таблицы ClassName определенные ниже, а затем, если DayZ Epoch обнаружен DZAI будет добавлять или заменять параметры, указанные в \world_classname_configs\epoch\dayz_epoch.sqf. 
	
*/

//По умолчанию таблицы оружия - DZAI использует ТОЛЬКО эти таблицы, если список динамического оружия (DZAI_dynamicWeaponList) отключен, в противном случае они игнорируются и перезаписываются, если он включен. 
//Примечание: Низкий уровень AI (weapongrade 0) может использовать пистолеты, перечисленные в DZAI_Pistols0 или DZAI_Pistols1. Средний / высокий уровень AI (weapongrade 1+) будут нести пистолеты, но не использовать их - они будут использовать винтовочное оружие.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Pistols0 = ["Makarov_DZ","M1911_DZ","Revolver_DZ"]; 					//Weapongrade 0 pistols
DZAI_Pistols1 = ["M9_DZ","M9_SD_DZ","Makarov_SD_DZ","PDW_DZ","G17_FL_DZ"]; 	//Weapongrade 1 pistols
DZAI_Pistols2 = ["M9_SD_DZ","Makarov_SD_DZ","PDW_DZ","G17_FL_DZ"]; 			//Weapongrade 2 pistols
DZAI_Pistols3 = ["M9_SD_DZ","Makarov_SD_DZ","PDW_DZ","G17_FL_DZ"]; 			//Weapongrade 3 pistols

DZAI_Rifles0 = ["LeeEnfield_DZ","Winchester1866_DZ","MR43_DZ","CZ550_DZ","LeeEnfield_DZ","Winchester1866_DZ","MR43_DZ"]; //Weapongrade 0 rifles
DZAI_Rifles1 = ["M16A2_DZ","M16A2_GL_DZ","AK74_DZ","M4A1_CCO_DZ","AK74_Kobra_DZ","AKS74U_DZ","AKM_DZ","M24_DZ","M1014_DZ","DMR_DZ","M4A1_DZ","M14_CCO_DZ","Remington870_FL_DZ","MP5_DZ","MP5_SD_DZ","M4A3_CCO_EP1"]; //Weapongrade 1 rifles
DZAI_Rifles2 = ["M16A2_DZ","M16A2_GL_DZ","M249_DZ","AK74_DZ","M4A1_CCO_DZ","AK74_Kobra_DZ","AKS74U_DZ","AKM_DZ","M24_DZ","SVD_Gh_DZ","M1014_DZ","DMR_DZ","M4A1_DZ","M14_CCO_DZ","Remington870_FL_DZ","M240_DZ","M4A1_AIM_SD_camo","M16A4_ACOG_DZ","M4A1_HWS_GL_camo","Mk48_CCO_DZ","M4A3_CCO_EP1","Sa58V_RCO_EP1","Sa58V_CCO_EP1","M40A3_Gh_DZ","SA58_DZ","SA58_DZ"]; //Weapongrade 2 rifles
DZAI_Rifles3 = ["FNFAL_DZ","FN_FAL_ANPVS4_DZE","Mk48_CCO_DZ","M249_DZ","L85_Holo_DZ","G36C_DZ","G36C_camo","G36A_Camo_DZ","G36K_Camo_DZ","AKM_DZ","AKS74U_DZ","M14_CCO_DZ","Bizon_SD_DZ","DMR_DZ","RPK74_DZ"]; //Weapongrade 3 rifles

	
/*
	Пользовательские таблицы оружия могут быть определены ниже этой линии (DZAI_Rifles4 - DZAI_Rifles9) для соответствующего уровня пользовательских weapongrade, используя тот же формат что выше. 
	Примечание: Если пользовательские weapongrade используются без определения соответствующего пользовательского массива оружия, вместо этого будет использоваться массив DZAI_Rifles3
	Инструкция: Заменить "nil" с нужного массива оружия. См. выше массивы оружия для примера о том, как определить пользовательские таблицы оружия. 
	Пользовательские таблицы оружия могут быть использованы только с пользовательским спавном (спавн, созданный с помощью функции DZAI_spawn).
*/

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Rifles4 = nil; //weapongrade 4 weapons
DZAI_Rifles5 = nil; //weapongrade 5 weapons
DZAI_Rifles6 = nil; //weapongrade 6 weapons
DZAI_Rifles7 = nil; //weapongrade 7 weapons
DZAI_Rifles8 = nil; //weapongrade 8 weapons
DZAI_Rifles9 = nil; //weapongrade 9 weapons


//Имена классов скинов AI. DZAI будет использовать любой из этих имен классов для спавна AI. Примечание: Дополнительные скины могут быть включены в моде на-основе одной карты или - см. папки в \world_classname_configs
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_BanditTypes = ["Skin_Bandit2_DZ", "Skin_GUE_Commander_DZ", "Skin_GUE_Soldier_2_DZ", "Skin_GUE_Soldier_CO_DZ", "Skin_GUE_Soldier_Crew_DZ", "Skin_GUE_Soldier_Sniper_DZ", "Skin_Ins_Soldier_GL_DZ", "Skin_TK_INS_Soldier_EP1_DZ", "Skin_TK_INS_Warlord_EP1_DZ", "Skin_Bandit1_DZ"];


//Типы рюкзаков AI (для уровней weapongrade 0-3)
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Backpacks0 = ["DZ_Patrol_Pack_EP1","DZ_Czech_Vest_Pouch","DZ_Assault_Pack_EP1"];
DZAI_Backpacks1 = ["DZ_Patrol_Pack_EP1","DZ_Czech_Vest_Pouch","DZ_Assault_Pack_EP1","DZ_British_ACU","DZ_TK_Assault_Pack_EP1","DZ_CivilBackpack_EP1","DZ_ALICE_Pack_EP1"];
DZAI_Backpacks2 = ["DZ_CivilBackpack_EP1","DZ_British_ACU","DZ_Backpack_EP1"];
DZAI_Backpacks3 = ["DZ_CivilBackpack_EP1","DZ_Backpack_EP1"];


//Еда AI / Медицинские предметы. DZAI_Edibles: Питьевые и пищевые элементы. DZAI_Medicals1: Список общих медицинских предметов, которые будут добавлены в инвентарь AI. DZAI_Medicals2: Список всех медицинских предметов, доступных только в больницах, которые будут добавлены в рюкзак AI.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_Edibles = ["ItemSodaCoke", "ItemSodaPepsi", "ItemWaterbottle", "FoodCanSardines", "FoodCanBakedBeans", "FoodCanFrankBeans", "FoodCanPasta", "ItemWaterbottleUnfilled","ItemWaterbottleBoiled","FoodmuttonCooked","FoodchickenCooked","FoodBaconCooked","FoodRabbitCooked","FoodbaconRaw","FoodchickenRaw","FoodmuttonRaw","foodrabbitRaw","FoodCanUnlabeled","FoodPistachio","FoodNutmix","FoodMRE"];
DZAI_Medicals1 = ["ItemBandage", "ItemPainkiller"];
DZAI_Medicals2 = ["ItemPainkiller", "ItemMorphine", "ItemBandage", "ItemBloodbag", "ItemAntibiotic","ItemEpinephrine"];


//Разные типы предметов для AI. DZAI_MiscItemS: Список случайных малоценных предметов. DZAI_MiscItemL: Список случайных полу-ценных / полезные вещи.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_MiscItemS = ["ItemHeatpack", "HandRoadFlare", "HandChemBlue", "HandChemRed", "HandChemGreen","SmokeShell","TrashTinCan","TrashJackDaniels","ItemSodaEmpty"];
DZAI_MiscItemL = ["ItemJerrycan", "PartWheel", "PartEngine", "PartFueltank", "PartGlass", "PartVRotor","PartWoodPile"];


//AI toolbelt предметы. Toolbelt добавляются в инвентарь AI при смерти. Формат: [имя класса предмета, вероятность]
//Weapongrade уровень 0-1 AI будут использовать DZAI_tools0 таблицу, weapongrade уровень 2-3 AI будут использовать DZAI_tools1 таблицу. Пользовательский спавн AI будут использовать DZAI_tools1 таблицу. 
//ПРИМЕЧАНИЕ: Не удаляйте элементы из этого списка, установите нулевой шанс. Добавлять элементы Только в конец массива, а не в середину.
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_tools0 = [["ItemFlashlight",0.65],["ItemWatch",0.65],["ItemKnife",0.50],["ItemCompass",0.40],["ItemMap",0.35],["ItemMatchbox",0.15],["ItemFlashlightRed",0.05]];
DZAI_tools1 = [["ItemFlashlight",0.75],["ItemWatch",0.75],["ItemKnife",0.75],["ItemCompass",0.75],["ItemMap",0.70],["ItemMatchbox",0.40],["ItemFlashlightRed",0.10]];


//AI используемые типы Toolbelt предметов. Эти предметы будут добавлены в инвентарь AI при создании бота и могут быть использованы AI. Формат: [имя класса предмета, вероятность]
//Weapongrade уровень 0-1 AI будут использовать DZAI_gadgets0 таблицу, weapongrade уровень 2-3 AI будут использовать DZAI_gadgets1 таблицу. Пользовательский спавн AI будут использовать DZAI_gadgets1 таблицу. 
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DZAI_gadgets0 = [["binocular",0.40],["NVGoggles",0.00]];
DZAI_gadgets1 = [["binocular",0.60],["NVGoggles",0.05]];


//НЕ РЕДАКТИРОВАТЬ НИЖЕ
diag_log "[DZAI] DZAI configuration file loaded.";

 

 

 

настройки делайте под себя или за основу стандар

это мой рабочий код

+ если помог 

 

Плюсануть то не жалко. Но вкраце можно ведь описать конфиг, в чем особенность ? Лично я ВАУ ВАУ не увидел, но интерес есть. 

Edited by Plut (see edit history)

Share this post


Link to post
Share on other sites
1 час назад, Plut сказал:

 

Плюсануть то не жалко. Но вкраце можно ведь описать конфиг, в чем особенность ? Лично я ВАУ ВАУ не увидел, но интерес есть. 

на русском он че тут не заметного, вау тут и не будет, просто не у всех есть возможность понять англ. язык

а я выложил может кому надо :geek:

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

Edited by Miduznya (see edit history)

Share this post


Link to post
Share on other sites
4 часа назад, Miduznya сказал:

на русском он че тут не заметного, вау тут и не будет, просто не у всех есть возможность понять англ. язык

а я выложил может кому надо :geek:

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

Дружище, ну не туда я смотрел) За русский лови + конечно. За пояснения так же. Я новенький в скриптах для дейза и посему ко всему со всей серьезностью отношусь.  А по поводу какать - здесь не прав, сейчас или спустя месяц это понадобится многим. s-platoon нравится поисковикам, так что твой труд еще многие увидят. 

Share this post


Link to post
Share on other sites

Ошибка в серверном rpt:

10:11:45 Error in expression <
};
} forEach DZAI_tableChecklist;

if (DZAI_extendedVerify) then {
{
if (
!(_x >
10:11:45   Error position: <DZAI_extendedVerify) then {
{
if (
!(_x >
10:11:45   Error Undefined variable in expression: dzai_extendedverify
10:11:45 File z\addons\dayz_server\DZAI\scripts\verifyTables.sqf, line 67

 

Share this post


Link to post
Share on other sites

Ошибка в серверном rpt:

Error in expression <rivate ["_sum"];
_sum = ((_dstX * _dstX)/(_sizeX * _sizeX)) + ((_dstY * _dstY)/(>
 1:27:09   Error position: </(_sizeX * _sizeX)) + ((_dstY * _dstY)/(>
 1:27:09   Error Zero divisor
 1:27:09 File z\addons\dayz_server\DZAI\shk_pos\shk_pos_fnc_isinellipse.sqf, line 48

Просто забивает серверный rpt спамом.

Ошибка деления на 0
Как быть?

Share this post


Link to post
Share on other sites

Правильно ли я понял, что по умолчанию воздушные патрули отключены и чтобы их включить нужно:

//Global maximum number of active AI air vehicle patrols. Set at 0 to disable (Default: 0).                            
DZAI_maxHeliPatrols = 0;

Поменять на количество техники, которая будет спавниться?

Share this post


Link to post
Share on other sites
10 часов назад, Fockus сказал:

Правильно ли я понял, что по умолчанию воздушные патрули отключены и чтобы их включить нужно:


//Global maximum number of active AI air vehicle patrols. Set at 0 to disable (Default: 0).                            
DZAI_maxHeliPatrols = 0;

Поменять на количество техники, которая будет спавниться?

Да, правильно понял, так же и с наземными патрулями. 

Share this post


Link to post
Share on other sites
11 час назад, Ник сказал:

Да, правильно понял, так же и с наземными патрулями. 

Где наземных отключить? Найти не могу, только динамические и статические настройки спавна вижу

Share this post


Link to post
Share on other sites
9 часов назад, Fockus сказал:

Где наземных отключить? Найти не могу, только динамические и статические настройки спавна вижу

DZAI_maxLandPatrols = 0;

Share this post


Link to post
Share on other sites
15 часов назад, Ник сказал:

DZAI_maxLandPatrols = 0;

Так это же патрули на транспорте, нет?

 


//Global maximum number of active AI land vehicle patrols. Set at 0 to disable (Default: 0).	
DZAI_maxLandPatrols = 10;

//Set minimum and maximum wait time in seconds to respawn an AI vehicle patrol after vehicle is destroyed or disabled. (Default: Min 600, Max 900).
DZAI_respawnTMinL = 600;
DZAI_respawnTMaxL = 900;

//Classnames of land vehicle types to use, with the maximum amount of each type to spawn.
DZAI_vehList = [
	["UAZ_Unarmed_TK_EP1",5],
	["SUV_TK_CIV_EP1",5]

 

Share this post


Link to post
Share on other sites
В 26.07.2017 в 01:08, Fockus сказал:

Так это же патрули на транспорте, нет?

 



//Global maximum number of active AI land vehicle patrols. Set at 0 to disable (Default: 0).	
DZAI_maxLandPatrols = 10;

//Set minimum and maximum wait time in seconds to respawn an AI vehicle patrol after vehicle is destroyed or disabled. (Default: Min 600, Max 900).
DZAI_respawnTMinL = 600;
DZAI_respawnTMaxL = 900;

//Classnames of land vehicle types to use, with the maximum amount of each type to spawn.
DZAI_vehList = [
	["UAZ_Unarmed_TK_EP1",5],
	["SUV_TK_CIV_EP1",5]

 

а они не на земле ездят?))

Share this post


Link to post
Share on other sites
1 час назад, Gromillla сказал:

а они не на земле ездят?))

Не, мне нужно только пеших отключить, а на транспорте чтобы ездили

Share this post


Link to post
Share on other sites
2 часа назад, Fockus сказал:

Не, мне нужно только пеших отключить, а на транспорте чтобы ездили

DZAI_staticAI = false;

DZAI_dynAISpawns = false;

DZAI_maxRandomSpawns = 0;

Share this post


Link to post
Share on other sites
6 часов назад, Ник сказал:

DZAI_staticAI = false;

DZAI_dynAISpawns = false;

DZAI_maxRandomSpawns = 0;

спасиб, всё работает

Share this post


Link to post
Share on other sites

создал сервер все работало. Установил DZAI-master при запуске сервера вылетает.  Прекращение работы программ

  Имя события проблемы:    APPCRASH
  Имя приложения:    arma2oaserver.exe
  Версия приложения:    1.63.131.129
  Отметка времени приложения:    5575921d
  Имя модуля с ошибкой:    ntdll.dll
  Версия модуля с ошибкой:    6.1.7601.23864
  Отметка времени модуля с ошибкой:    595fa490
  Код исключения:    c0000005
  Смещение исключения:    0003a7bf
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Дополнительные сведения 1:    0a9e
  Дополнительные сведения 2:    0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:    0a9e
  Дополнительные сведения 4:    0a9e372d3b4ad19135b953a78882e789

 

кто знает в чем проблема?

Share this post


Link to post
Share on other sites

Привет народ.Я новенький в вопросе скриптов,поэтому нужна помощь.Дело вот в чем : Нужно поставить одинаковый уровень сложности (на пеших ботов,на транспорте,вертолетах).никак не разберусь как это сделать.помогите плз.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By 123new
      Здравствуйте, дорогие друзья и посетители сайта. В данной теме я распишу как создать свой "чистый" сервер на основе первых официальных серверных файлов игры, доступных каждому в steam для тех, кто приобрел эту замечательную игру. Для тех, кто не приобретал ее, не расстраивайтесь, добавлю зеркала на файлы.
      И так, приступим.
       
      Системные требования игры:
      https://s-platoon.ru/topic/7014-polnaya-dokumentaciya-servernyh-faylov-dayz-standalone-dayz-server-files-documentation/?do=findComment&comment=61219
       
      Нам понадобятся:
      1. Notepad++ https://notepad-plus-plus.org/download
      2. Официальные серверные файлы игры со steam. Скачать  их можно:
      В Steam из раздела 'инструменты' , выбрав DayZ Server и нажав 'установить' Вручную через утилиту SteamCMD:
      3. Официальный клиент игры из steam: https://store.steampowered.com/app/221100/DayZ/
      4. "Настроенная конфигурация серверной части игры" и батник для старта сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      И так, приступим.
      Копируем папку со скачанными серверными файлами игры (папку DayZServer ) в отдельную папку. В пути и имени папки не должно быть пробелов и русских символов. Саму новую папку можно назвать как хотите, я же назову ее MyServer. Распаковываем архив с "Настроенной конфигурацией серверной части игры" в папку с серверными файлами (папка MyServer). Получим что-то типа такого: Далее мы работаем уже только внутри папки MyServer Открываем в Notepad++ файл server.cfg в папке Instance_1.  Настраиваем его, комментарии к настройке на русском в файле имеются.
      При особой необходимости вы можете свериться с serverDZ.cfg в корневой папке сервера, это оригинальный файл конфигурации, предоставленный разработчиками. Также, можете прочитать информацию из официальной документации с переводом в теме вот этой(смотрите во 2 сообщении указанной темы). Плюсом есть пояснения в конце гайда! Открываем в Notepad++ файлы BEServer.cfg  и BEServer_x64.cfg в папке Instance_1\Battleye в папке сервера. Настраиваем параметры, содержимое обоих файлов должно быть идентичным.
      Параметры:
      RConPassword - Устанавливает пароль для подключения RCon инструментов  (инструмент удаленного администрирования, таких как BEC/Dart).
      RestrictRCon - Включает\отключает RCon-функции (кик\бан\ограничение подключения) (0 для отключения органичений)
      MaxPing - устанавливает ограничение на сервере по пингу
      В примере, уже имеющемся у вас, 12345678 - rcon-пароль сервера, 500 - максимальный пинг, разрешенный battleye для игры на сервере, RestrictRCon 0 - разрешить подключение с RCon-клиентов с правами кика и бана (0 - разрешено все, 1 - запрещен кик и бан, только отправка в чат). Запускаем !!!Start_server.bat и наш сервер запустится. Запускаем клиент игры со steam, находим наш сервер вручную по ip и порту, либо имени сервера.
      Если сервер запущен на том же компьютере, где и игра, и на стандартном порту 2302, то поумолчанию поиск выполняется по 127.0.0.1:2302
      Если сервер запущен на другом компьютере, то вместо 127.0.0.1 будет ip адрес компьютера, где запущен сервер, или его доменное имя. Например, myserver.com:2302 или 178.123.22.12:2302
      ВАЖНО: если сервер запущен на другом компьютере, отличном от компьютера где запущена игра, то для доступа на сервер игроков необходимо иметь "внешний" выделенный ip-адрес и открытый порт сервера!
      Сменить порт сервера можно в !!!Start_server.bat (Notepad++ для редактирования),  параметр запуска сервера -port= Более подробно по параметрам запуска читайте ниже. Для выключения сервера рекоммендуется пользоваться !!!Server_kill.bat файлом, созданным в соответствии с рекоммендациями разработчиков игры и официальной документацией.  
      Разъяснения по параметрам запуска сервера игры (для !!!Start_server.bat ):
      Разъяснения по конфигурационному файлу сервера игры (для serverDZ.cfg ):
       
      Crack SmartSteamEmu v. 1.4.3 данной версии клиента игры и сервера:
      Скачать с Zippyshare.com: https://www64.zippyshare.com/v/mHmPweqg/file.html
      Скачать с Mega.nz: https://mega.nz/#!rnZBXK4b!KRrJm6obcJjUlzMpEPNQ3R8sy2z0pP-0Myb_ao4TVhg
      Скачать с yandex.disk: https://yadi.sk/d/4xSF1dSt6XN41g
      Инструкция по установке есть в архиве, дублирую:
       
      Дополнительно:
      Для работы с Battleye, кика и бана игроков используйте ip-адрес и порт сервера, и любой rcon-клиент с паролем из BEServer_x64.cfg
      Для работы BEC файл BEServer.cfg должен быть идентичным по содержанию BEServer_x64.cfg иначе программа не будет работать!
      База данных (storage) теперь хранится по пути: mpmissions\dayzOffline.chernarusplus\storage_{номер instance с cfg сервера}
      В базе данных также хранится файл с сохранениями игроков на сервере с именем players.db
      Если вы не находите свой сервер в списке серверов игры во вкладке Community, проверьте на доступность и открытость извне игровой порт, а также порты steam и steamquery (см. cfg файл сервера). Сервера с crack не отобразятся там.
       
      Вот и все, приятной игры на сервере!
       
       
    • By DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • By 123new
      И так, ребятки, вот вам небольшая 'полезняшка' от меня, и совершенно бесплатно!
       
      Описание:
      Скрипт, добавляющий админу сервера возможность указывать для каждого игрока индивидуальный скин спавна, его персональную точку спавна и один из имеющихся на сервере стартовых наборов с лутом, которые можно составить самим. Если указано несколько точек спавна и/или наборов лута, то будет выбран один из предложенных вариантов рандомно. Также, любой из названных параметров можно отключить в скрипте и сделать его стандартным, как он есть поумолчанию на сервере. Дополнительно - есть возможность назначить  свой набор стартового лута для всех игроков на сервере не из списка скрипта!
       
      Нам понадобится:
      1. Сервер DayZ 1.0, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума и понимания того, что мы делаем, и как прописывается лут на новом языке enfusion
       
      Установка:
      Перед установкой: Обратите внимание, что имя 'стандартной' миссии сервера при загрузки со Steam называется: 'dayzOffline.chernarusplus'. На хостингах имя этой папки может отличаться. Если это так, то вам в информации ниже необходимо заменить 'dayzOffline.chernarusplus' на имя вашей  папки миссии сервера, иначе вы не сможете запустить сервер игры!
      1. По пути:
      {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\ создать папку 'CustomSpawnPlayerConfig' и поместить в созданную нами папку 3 файла
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      или создать их самим со следующим содержанием:
      Script.c
      /* Описание: Скрипт выдачи индивидуального стартового лута, скина игрока и точек спавна Автор: 123new Установка: 1. По пути: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\ создать папку 'CustomSpawnPlayerConfig' и поместить в нее 3 файла скрипта: Script.c Sets.c init_mod.c 2. В файле: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c в самом верху файла добавить: #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c" 3. В папке, обозначенной параметром запуска сервера '-profile=', поместить файл с именем CustomSpawnPlayerConfig.txt и заполнить его данными по следующему формату: UID|Skin_player|sets_numbers|points_spawns где UID - это steam64id от профиля игрока в steam Skin_player - точный id скина игрока (можно указать 0 для отключения опции) sets_numbers - номер сета со стартовым лутом (можно указать несколько через ';', указать один всего, либо указать 0 для отключения опции) points_spawns - координаты спавна игрока на карте в формате 'x y z' (можно указать несколько через ';', указать всего одну точку, либо указать 0 для отключения опции) Пример: 76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379 76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941 76561198141889253|SurvivorM_Oliver|0|0 4. В файле Sets.c в папке: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше) Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет! P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!! Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c */ class CustomSpawnPlayerConfig { private string Location_Directory_config = "$profile:"; // Расположение папки с конфигом скрипта private string Location_filename_config = "CustomSpawnPlayerConfig.txt"; // имя файла с конфигом скрипта private string default_log_block_name = "[CustomSpawnPlayerConfig] "; // Стандартный блок скрипта для идентификации с script.log private string disable_read_parameter = "0"; // Стандартное значение (без кавычек) для обозначения в файле конфига скрипта неиспользование параметра private string block_split_parameters_config = "|"; // Символ, обозначающий разделение параметров при чтении файла конфига private string block_split_multi_parameters_config = ";"; // Символ, обозначающий перечисление в одной ячейке параметра нескольких параметров при чтении файла конфига private bool enabled_loading_custom_spawnpoints = true; // Параметр, включающий и отключающий возможность использования приватной точки спавна для каждого игрока. В случае отключения кастомная точка спавна будет отключена для всех поумолчанию, вне зависимости от данных в конфиге! private bool enabled_loading_custom_sets = true; // Параметр, включающий и отключающий возможность использования приватного сета для каждого игроков. В случае отключения выдача сетов будет отключена для всех поумолчанию, вне зависимости от данных в конфиге, будет выдаваться только сет для всех игроков! private bool enabled_loading_custom_skins = true; // Параметр, включающий и отключающий возможность использования индивидуального стартового скина игрока для каждого игрока. В случае отключения эта возможность будет отключена для всех поумолчанию, вне зависимости от данных в конфиге! // ------------------------------------------------------------ // ---------------- NEXT CODE DON'T EDIT ----------------- // ------------------------------------------------------------ ref map<string, ref array<vector>> players_spawnpoints = new map<string, ref array<vector> >; ref map<string, ref array<int>> players_sets = new map<string, ref array<int> >; ref map<string, string> players_skins = new map<string, string>; private bool enabled_loaded_successfull_config = false; string Log_CustomSpawnPlayerConfig_GetDateTime() { private int year, month, day, hour, minute, second; GetYearMonthDay(year, month, day); GetHourMinuteSecond(hour, minute, second); string returned_message = "[" + day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2) + " - " + hour.ToStringLen(2) + "." + minute.ToStringLen(2) + "." + second.ToStringLen(2) + "] "; return returned_message; } bool Check_coords_disable(vector coord) { private bool ret_zn = false; private float pos_x = coord[0]; private float pos_y = coord[1]; private float pos_z = coord[2]; if ((pos_x == 0.0) & (pos_y == 0.0) & (pos_z == 0.0)) { ret_zn = true; } return ret_zn; } vector Set_Read_coords_disable() { return Vector(0.0, 0.0, 0.0); } void CustomSpawnPlayerConfig() { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + "CustomSpawnPlayerConfig initialize start!"); Read_Update_Config(); } void ~CustomSpawnPlayerConfig() { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + "CustomSpawnPlayerConfig work end, class closed!"); } void Read_Update_Config() { private string name_block_work = "[ReadAndUpdateSettings] "; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + " Started Reading config!"); private array<string> readed_lines_config = ReadFileConfig(); private bool check_normal_read = AnaliseFileConfig(readed_lines_config); if (check_normal_read) { LoadFileConfig(readed_lines_config); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "config readed successfull!"); enabled_loaded_successfull_config = true; } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "config read failed, work script disabled for players!"); enabled_loaded_successfull_config = false; } } array<string> ReadFileConfig() { private string name_block_work = "[ReadFileConfig] "; private array<string> readed_lines_config = new array<string>; readed_lines_config.Clear(); if (FileExist ( (Location_Directory_config + Location_filename_config) ) ) { private string line_content; FileHandle file = OpenFile((Location_Directory_config + Location_filename_config), FileMode.READ); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Open file config: " + (Location_Directory_config + Location_filename_config)); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { readed_lines_config.Insert( line_content); } CloseFile(file); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! CAN'T OPEN FILE CONFIG : " + (Location_Directory_config + Location_filename_config)); } //readed_lines_config.Debug(); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! CAN'T FOUND FILE CONFIG OR DIRECTORY: " + (Location_Directory_config + Location_filename_config)); } return readed_lines_config; } bool AnaliseFileConfig(array<string> readed_lines_config) { private bool return_zn = true; private string name_block_work = "[AnaliseFileConfig] "; if (readed_lines_config.Count() > 0) { foreach (string line : readed_lines_config) { if (line.Contains(block_split_parameters_config)) { private array<string> splited_line = new array<string>; line.Split( block_split_parameters_config, splited_line ); if (splited_line.Count() == 4) { private string UID_player = splited_line.Get(0); private string default_skin_player = splited_line.Get(1); private string sets_numbers_player = splited_line.Get(2); private string points_spawn_player = splited_line.Get(3); if ((UID_player == "") || (default_skin_player == "") || (sets_numbers_player == "") || (points_spawn_player == "")) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Lines in Readed file is not correct, please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Readed file is have incorrect count parameters with a tag '" + block_split_parameters_config + "', please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Readed file can't have a tag '" + block_split_parameters_config + "', please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Config file is empty, fix your config script!"); return_zn = false; } return return_zn; } void LoadFileConfig(array<string> readed_lines_config) { private string name_block_work = "[LoadFileConfig] "; players_spawnpoints.Clear(); players_sets.Clear(); players_skins.Clear(); foreach (string line : readed_lines_config) { private array<string> splited_line = new array<string>; splited_line.Clear(); line.Split( block_split_parameters_config, splited_line ); private string UID_player = splited_line.Get(0); private string default_skin_player = splited_line.Get(1); private string sets_numbers_player = splited_line.Get(2); private string points_spawn_player = splited_line.Get(3); private array<vector> temp_players_spawnpoints = new array<vector>; temp_players_spawnpoints.Clear(); array<int> temp_players_sets = new array<int>; temp_players_sets.Clear(); array<string> temp_players_spawnpoints_string = new array<string>; temp_players_spawnpoints_string.Clear(); array<string> temp_players_sets_string = new array<string>; temp_players_sets_string.Clear(); if (points_spawn_player.Contains(block_split_multi_parameters_config)) { points_spawn_player.Split( block_split_multi_parameters_config, temp_players_spawnpoints_string ); } else { temp_players_spawnpoints_string.Insert(points_spawn_player); } foreach (string line_spawnpoint : temp_players_spawnpoints_string) { if (line_spawnpoint == disable_read_parameter) { temp_players_spawnpoints.Insert(Set_Read_coords_disable()); } else { temp_players_spawnpoints.Insert(line_spawnpoint.ToVector()); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Generated massive for " + UID_player + " with " + temp_players_spawnpoints.Count().ToString() + " spawnpoints."); if (sets_numbers_player.Contains(block_split_multi_parameters_config)) { sets_numbers_player.Split( block_split_multi_parameters_config, temp_players_sets_string ); } else { temp_players_sets_string.Insert(sets_numbers_player); } foreach (string line_set : temp_players_sets_string) { if (line_set == disable_read_parameter) { temp_players_sets.Insert(0); } else { temp_players_sets.Insert(line_set.ToInt()); } } if (default_skin_player == disable_read_parameter) { default_skin_player = "0"; } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Generated massive for " + UID_player + " with " + temp_players_sets.Count().ToString() + " sets."); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Detected for " + UID_player + " skin " + default_skin_player); players_spawnpoints.Insert(UID_player,temp_players_spawnpoints); players_sets.Insert(UID_player,temp_players_sets); players_skins.Insert(UID_player,default_skin_player); } } vector Load_And_Check_Spawnpoints(PlayerIdentity identity, vector pos_default) { private string name_block_work = "[Load_And_Check_Spawnpoints] "; private vector retun_pos = pos_default; if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_spawnpoints) { if ((players_spawnpoints.Count() > 0) && (enabled_loaded_successfull_config)) { if (players_spawnpoints.Contains(UID_P)) { private array<vector> readed_lines_config = new array<vector>; readed_lines_config = players_spawnpoints.Get(UID_P); private vector retun_pos_check = readed_lines_config.GetRandomElement(); if (Check_coords_disable(retun_pos_check)) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private spawn point. Will be used default spawn point!"); } else { retun_pos = retun_pos_check; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private spawn point: " + retun_pos.ToString()); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private spawnpoint for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private spawnpoints is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal spawnpoints from config file script!"); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn point: " + retun_pos.ToString()); return retun_pos; } string Load_And_Check_SpawnSkin_Player(PlayerIdentity identity, string characterName) { private string name_block_work = "[SelectStartSkinPlayer] "; private string retun_skin = characterName; if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_skins) { if (players_skins.Count() > 0) { if (players_skins.Contains(UID_P)) { private string readed_skin = players_skins.Get(UID_P); if (readed_skin == "0") { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private skin setting, will be used default setting game!"); } else { retun_skin = readed_skin; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private skin setting: " + retun_skin); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private skin setting for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private skin setting is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal skin player settings from config file script!"); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used skin: " + retun_skin); return retun_skin; } void Load_And_Check_StartLoadout(PlayerBase player) { private string name_block_work = "[SelectStartSetPlayer] "; private int use_set_id = -1; private PlayerIdentity identity = player.GetIdentity(); if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_sets) { if ((players_sets.Count() > 0) && (enabled_loaded_successfull_config)) { if (players_sets.Contains(UID_P)) { private array<int> readed_lines_config = new array<int>; readed_lines_config.Clear(); readed_lines_config = players_sets.Get(UID_P); private int chek_use_set_id = readed_lines_config.GetRandomElement(); if (chek_use_set_id == 0) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private set numbers. Will be used default set player! "); } else { use_set_id = chek_use_set_id; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private set number is: " + use_set_id.ToString()); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private sets for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private sets is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal loadout sets player settings from config file script! Will be used default loadout!"); } if (use_set_id >= 0) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn set with number is: " + use_set_id.ToString()); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn default start set without number. "); } StartSetsPlayers.StartSetsPlayer(player, use_set_id); } } private array<EntityAI> GetItemListinobject(PlayerBase player,EntityAI item, bool check_player) { array<EntityAI> EntityAI_list_items = new array<EntityAI>; EntityAI_list_items.Clear(); int attIdx = 0; int attCount = 0; EntityAI item_in_object; if ((player) && (check_player)) { attCount = player.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { item_in_object = player.GetInventory().GetAttachmentFromIndex(attIdx); if ( item_in_object.IsItemBase() ) { EntityAI_list_items.Insert(item_in_object); } } } if ((item) && !check_player) { attCount = item.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { item_in_object = item.GetInventory().GetAttachmentFromIndex(attIdx); if ( item_in_object.IsItemBase() ) { EntityAI_list_items.Insert(item_in_object); } } } return EntityAI_list_items; } void RemoveAllItems (PlayerBase player) { private array<EntityAI> ItemListPlayer = new array<EntityAI>; private array<EntityAI> ItemsForDelete = new array<EntityAI>; private EntityAI itemInHands_player = player.GetHumanInventory().GetEntityInHands(); if (itemInHands_player != NULL) { if (player.CanDropEntity(itemInHands_player) && player.GetHumanInventory().CanRemoveEntityInHands()) { // Print("ItemForDelete: " + itemInHands_player.ToString()); ItemsForDelete.Insert(itemInHands_player); } } ItemListPlayer = GetItemListinobject(player,NULL,true); if (ItemListPlayer.Count() > 0) { foreach(EntityAI ItemPlayer: ItemListPlayer) { private array<EntityAI> ItemInItemInInventory = GetItemListinobject(NULL,ItemPlayer,false); private CargoBase cargo = ItemPlayer.GetInventory().GetCargo(); if(cargo) { if (cargo.GetItemCount() > 0) { for (int f = 0; f < cargo.GetItemCount(); f++) { if(cargo.GetItem(f)) { ItemsForDelete.Insert(cargo.GetItem(f)); } } } } if (ItemInItemInInventory.Count() > 0) { foreach(EntityAI items_temp: ItemInItemInInventory) { if(items_temp) { ItemsForDelete.Insert(items_temp); } } } if(ItemPlayer) { ItemsForDelete.Insert(ItemPlayer); } } } if (ItemsForDelete.Count() > 0) { foreach(EntityAI item_temp: ItemsForDelete) { if(item_temp) { GetGame().ObjectDelete(item_temp); } } } } }; Sets.c
      class StartSetsPlayersConfig { void StartSetsPlayer(PlayerBase player,int use_set_id) { EntityAI itemCreated = NULL; EntityAI itemCreated1 = NULL; ItemBase itemCasted = NULL; switch( use_set_id ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1) { case 1: //Set with number 1 (Сет с номером 1) { My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку itemCreated = player.GetInventory().CreateInInventory("CoyoteBag_Green"); // Выдаем рюкзак и записываем в переменную itemCreated if (itemCreated) // Проверяем, создался ли рюкзак. Если он создался, переменная itemCreated будет не пуста и проверка пройдет { SetRandomHealthItem(itemCreated); // Выдаем рюкзаку рандомное качество itemCreated1 = itemCreated.GetInventory().CreateInInventory("Apple"); // Добавляем в инвентарь созданного рюкзака яблоко и записываем в переменную itemCreated1 if (itemCreated1) // Проверяем, создалось ли яблоко в рюкзаке, яблоко у нас с переменной itemCreated1 { SetRandomHealthItem(itemCreated1); // Выдаем яблоку рандомное качество } itemCreated1 = NULL; // Обнуляем значение переменной после работы с ней, чтобы следующая проверка прошла корректно itemCreated1 = itemCreated.GetInventory().CreateInInventory("Rag"); // Выдаем игроку бинты в рюкзак и записываем в переменную itemCreated1 if (itemCreated1) // Проверяем, создались ли бинты в рюкзаке, они у нас с переменной itemCreated1 { itemCasted = ItemBase.Cast(itemCreated1); // Выполняем преобразование в другой класс для работы с нужной нам функцией, поскольку в классе EntityAI нет нужной нам функции SetQuantity, а в подклассе ItemBase она есть. Предмет при этом так и остается один и тот же! itemCasted.SetQuantity(4); // Определяем количество для созданных бинтов как 4 штуки SetRandomHealthItem(itemCreated); // Выдаем бинтам рандомное качество, функция работает с классом EntityAI (см. в конфе файла) } } // переменную itemCreated не обнуляем далее, поскольку мы ее не используем в проверке ниже. itemCreated = player.GetInventory().CreateInInventory("TTSKOPants"); // Выдаем игроку штаны itemCreated = player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); // Выдаем игроку куртку itemCreated = player.GetInventory().CreateInInventory("CombatBoots_Black"); // Выдаем игроку обувь //itemCasted = ItemBase.Cast(itemCreated); // Строка не нужна, закоментирована. используется для изменения класса EntityAI в ItemBase (чтобы нужные операции были доступны) itemCreated = player.GetInventory().CreateInInventory("CombatKnife"); // Выдаем игроку ножик в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("FNX45"); // Выдаем игроку FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре itemCreated = NULL; // Обнуляем значение переменной после работы с ней, нужно если мы будем использовать ее далее itemCreated = player.GetHumanInventory().CreateInHands("akm"); // Выдаем игроку AKM в руки if (itemCreated) // Проверяем, создался ли АКМ { itemCreated.GetInventory().CreateAttachment( "PSO11Optic" ); // Выдаем игроку на AKM оптику ПСО 11 и крепим itemCreated.GetInventory().CreateAttachment( "AK_WoodBttstck" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим itemCreated.GetInventory().CreateAttachment( "AK_WoodHndgrd" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим itemCreated.GetInventory().CreateAttachment( "AK_Suppressor" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим } break; } case 2: //Set with number 2 (Сет с номером 2) { break; } case 3: //Set with number 3 (Сет с номером 3) { break; } case 4: //Set with number 4 (Сет с номером 4) { break; } case 5: //Set with number 5 (Сет с номером 5) { break; } case 6: //Set with number 6 (Сет с номером 6) { break; } default: //Default starting spawn set (Сет поумолчанию для всех игроков, если хотите назначить - добавляйте здесь!) { //My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку break; } } } void SetRandomHealthItem(EntityAI itemCreated) { if ( itemCreated ) { private int rndHlt = Math.RandomInt(55,100); itemCreated.SetHealth("","",rndHlt); } } } init_mod.c
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\Script.c" #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\Sets.c" ref CustomSpawnPlayerConfig My_Custom_Spawn_Parameters = new CustomSpawnPlayerConfig(); ref StartSetsPlayersConfig StartSetsPlayers = new StartSetsPlayersConfig(); modded class CustomMission { override void OnInit () { super.OnInit(); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(My_Custom_Spawn_Parameters.Read_Update_Config, 120000, true); // Обновление настроек скрипта кастомных спавнов, 1 минута = 60000 } override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { pos = My_Custom_Spawn_Parameters.Load_And_Check_Spawnpoints(identity, pos); characterName = My_Custom_Spawn_Parameters.Load_And_Check_SpawnSkin_Player(identity, characterName); super.CreateCharacter(identity, pos, ctx, characterName); return m_player; } override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { super.StartingEquipSetup(player, clothesChosen); My_Custom_Spawn_Parameters.Load_And_Check_StartLoadout(player); } }  

       
      2. В файле:
      {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c в самом верху файла добавить:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c" Чтобы получилось примерно так

       
      3. В папке, обозначенной параметром запуска сервера '-profile=', поместить файл с именем CustomSpawnPlayerConfig.txt
      и заполнить его данными по следующему формату:
      UID|Skin_player|sets_numbers|points_spawns где UID - это steam64id от профиля игрока в steam
      Skin_player - точный id скина игрока (можно указать 0 для отключения опции)
      sets_numbers - номер сета со стартовым лутом (можно указать несколько через ';', указать один всего, либо указать 0 для отключения опции)
      points_spawns - координаты спавна игрока на карте в формате 'x y z' (можно указать несколько через ';', указать всего одну точку, либо указать 0 для отключения опции)
      Пример:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379 76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941 76561198141889253|SurvivorM_Oliver|0|0  
      4. В файле Sets.c в папке:
      {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты
      ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше)
      Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет!
       
      P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!!
       
      Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в:
              {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c
              {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c
       
      Благодарности: Товарищу Mizev за его первоначальные гайды в группе VK при появлении в сети серверной части игры
       
       
×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.