Настройка стартового лута в DayZ Standalone

Внимание!!!!!!!! Данный мануал актуален на эксперементальной ветке 0.63 патча.

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

Ближе к делу. Нам нужны следующие файлы миссии

  • init.c — лежит в корне дефолтной миссии dayzOffline.chernarusplus
  • types.xml лежит в папке db стандартной миссии, этот файл нам нужен в информативных целях, там мы будем искать имена предметов которые хотим прописать

types.xml за что он отвечает

Этот файл отвечает за параметры предметов при спавне.
Для наших целей нам нужно взять только значение type name.
Остальные параметры пока не совсем понятно как и на что влияют, лучше подождать документацию.

Далее нам нужно открыть файл init.c

 
	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
/*
player.RemoveAllItems();
EntityAI item = player.GetInventory().CreateInInventory(topsArray.GetRandomElement());
EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemEnt;
		ItemBase itemBs;
		
		itemEnt = player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(4);
		SetRandomHealth(itemEnt);

		itemEnt = player.GetInventory().CreateInInventory("RoadFlare");
		itemBs = ItemBase.Cast(itemEnt);
	}

Из этого куска кода мы можем увидеть как прописываются при респавне 4 тряпки и фаер. Давайте добавим в старт лут рюкзак,куртку,ACOG,M4,Патроны,магазин,ножик,покушать и попить. Находим все имена нужных нам предметов в файле types.xml
— AliceBag_Camo
— ACOGOptic
— M4A1
— M4_CarryHandleOptic
— M4_OEBttstck
— M4_PlasticHndgrd
— Mag_STANAG_30Rnd
— AmmoBox_556x45_20Rnd
— Ammo_556x45
— M65Jacket_Khaki
— Machete
— CombatKnife
— TacticalBaconCan_Opened
— WaterBottle

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

Для каждого предмета нам нужно прописать 2 строчки

itemEnt = player.GetInventory().CreateInInventory("Rag");
itemBs = ItemBase.Cast(itemEnt);

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

itemBs.SetQuantity(4); //сколько предметов будет в стаке\пачке, если значение не указывать будет максимальное значение к примеру стак патронов максимум 20шт, значит 20 и заспавнится или 4 патрона как указано тут

Плучилось у нас следующее

 
	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{

		player.RemoveAllItems(); //удаляем все предметы

		EntityAI itemEnt;
		ItemBase itemBs;
		//начинаем добавлять предметы
		itemEnt = player.GetInventory().CreateInInventory("AliceBag_Black");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("M65Jacket_Khaki");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("ACOGOptic");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("M4A1");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("M4_CarryHandleOptic");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("M4_OEBttstck");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("M4_PlasticHndgrd");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("Mag_STANAG_30Rnd");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("AmmoBox_556x45_20Rnd");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("Ammo_556x45");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(20);
		
		itemEnt = player.GetInventory().CreateInInventory("Ammo_556x45");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(20);
		
		itemEnt = player.GetInventory().CreateInInventory("Ammo_556x45");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(20);
		
		itemEnt = player.GetInventory().CreateInInventory("Ammo_556x45");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(20);
		
		itemEnt = player.GetInventory().CreateInInventory("Ammo_556x45");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(20);
		
		itemEnt = player.GetInventory().CreateInInventory("Ammo_556x45");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(20);
		
		itemEnt = player.GetInventory().CreateInInventory("Machete");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("CombatKnife");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("TacticalBaconCan_Opened");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("TacticalBaconCan_Opened");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("TacticalBaconCan_Opened");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("WaterBottle");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("Rag");
		itemBs = ItemBase.Cast(itemEnt);
		itemBs.SetQuantity(4);
		SetRandomHealth(itemEnt);

		itemEnt = player.GetInventory().CreateInInventory("RoadFlare");
		itemBs = ItemBase.Cast(itemEnt);

	}

Результат после смерти у нас полный инвентарь полезностей

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *