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

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
NickPS

DZMS проблема добавления драгоценных камней в ящики.

Доброго времени суток. Я пытаюсь добавить в ящики с лутом в миссиях DZMS 100% драгоценные камни в качестве "денежной" награды.

 

Возникли некоторые вопросы:
 
1) Правильно ли я делаю? И если нет, то как нужно сделать?
2) Как задавать координаты и что они значат? 
3) Может следует создать новый ящик? И если да, то как задать координаты рядом с текущим ящиком.
 
Пытался сделать указанным ниже способом, по образу и подобию, но камни так и не появляются.
Алгоритм в моей сборке уже был следующий. 
 
Шаг первый.
В файле миссии SM5.sqf создается ящик:
 
_crate = createVehicle ["RULaunchersBox",[(_coords select 0) - 14, _coords select 1,0],[], 0, "CAN_COLLIDE"];
[_crate,"weapons","money"] ExecVM DZMSBoxSetup;

Шаг второй.

Для этого идет обращение к файлу DZMSFunctions.sqf, в котором:

DZMSBoxSetup = "\z\addons\dayz_server\DZMS\Scripts\DZMSBox.sqf";

Шаг третий.

Из файла DZMSBox.sqf берется массив предметов:

 

//И тут тоже вопрос, что добавляется в массив private? Массивы, которые будут спавнится в ящиках?

private ["_crate","_type","_bpackList","_gshellList","_medical","_money","_moneyLarge","_scount","_sSelect","_item","_x","_ammo"];
_crate	=	_this select 0;
_type	=	_this select 1;
clearWeaponCargoGlobal _crate;
clearMagazineCargoGlobal _crate;

_money		    =	["ItemEmerald","ItemSapphire","ItemAmethyst"];
_moneyLarge	    =	["ItemSapphire","ItemAmethyst","ItemObsidian"];

if (_type == "money") then
	{
	  _scount	=	count _money;
	  for "_x" from 3 to 3 do
	      {
		_sSelect	=	floor(random _sCount);
		_item		=	_money select _sSelect;
		_crate addMagazineCargoGlobal [_item,1];
	      };
	};

if (_type == "moneyLarge") then
	{
	  _scount	=	count _money;
	  for "_x" from 3 to 3 do
	      {
		_sSelect	=	floor(random _sCount);
		_item		=	_money select _sSelect;
		_crate addMagazineCargoGlobal [_item,1];
	      };
	};

Спасибо заранее, за ваше внимание. =)

Edited by NickPS (see edit history)

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Идешь в dayz_server\DZMS\Scripts\, открываешь файл "DZMSBox.sqf", вставляешь туда где-нить вверху:

_moneyLarge = ["ItemEmerald","ItemRuby","ItemSapphire","ItemTopaz","ItemAmethyst","ItemCitrine","ItemObsidian"];

Ну, или, отредактируешь под себя.

Внизу этого файла находишь

///////////////////////////////////////////////////////////////////
// Epoch Money Crates
if (_type == "money") then {
	// load money
	_scount = count _money;
	for "_x" from 0 to 3 do {
		_sSelect = floor(random _sCount);
		_item = _money select _sSelect;
		_crate addMagazineCargoGlobal [_item,1];
	};
};

И ниже добавляешь:

if (_type == "moneyLarge") then {
	_sSelect = 0;
	{
		_item = _moneyLarge select _sSelect;
		_crate addMagazineCargoGlobal [_item,1];
		_sSelect = _sSelect + 1;
	} forEach _moneyLarge;
};

Сохраняешь, закрываешь.

Теперь в скриптах нужных тебе миссий ищешь где в ящики добавляется лут, что-то типа:

[_crate,"weapons"] ExecVM DZMSBoxSetup;

И прям под ним дописываешь:

[_crate,"moneyLarge"] ExecVM DZMSBoxSetup;

Всё.

Сохраняешь, перепаковываешь dayz_server.pbo, запускаешь.

Share this post


Link to post
Share on other sites





  • 0

Нашел небольшую ошибку.

Здесь:

if (_type == "moneyLarge") then
	{
	  _scount	=	count _money;

Должно быть:

if (_type == "moneyLarge") then
	{
	  _scount	=	count _moneyLarge;

Но не это главное. Я понял :good: , что ТАК не работает:

_crate = createVehicle ["RULaunchersBox",[(_coords select 0) - 14, _coords select 1,0],[], 0, "CAN_COLLIDE"];
[_crate,"weapons","money"] ExecVM DZMSBoxSetup;

Нужно для "weapons" и "money" создавать разные ящики.

Следовательно должно быть так:

_crate = createVehicle ["RULaunchersBox",[(_coords select 0) - 14, _coords select 1,0],[], 0, "CAN_COLLIDE"];
[_crate,"weapons"] ExecVM DZMSBoxSetup;
[_crate] call DZMSProtectObj;

_crate2 = createVehicle ["USBasicAmmunitionBox",[(_coords select 0) - 12, _coords select 1,0],[], 0, "CAN_COLLIDE"];
[_crate2,"weapons"] ExecVM DZMSBoxSetup;
[_crate2] call DZMSProtectObj;

//Где "RULaunchersBox" и "USBasicAmmunitionBox" - это типы ящиков.
//Так же, копируя, не забываем править с "_crate" на "_crate2".
//То же и с координатами. Например было "- 14", стало "- 12".

Но почему-то из массива:

_money		    =	["ItemEmerald","ItemSapphire","ItemAmethyst"];

Система берет только "ItemEmerald".

Я так понял проблема выбора одного, нескольких или первого, второго, третьего итемов кроется тут:

if (_type == "money") then
	{
	  _scount	=	count _money;
	  for "_x" from 3 to 3 do
	      {
		_sSelect	=	floor(random _sCount);
		_item		=	_money select _sSelect;
		_crate addMagazineCargoGlobal [_item,1];
	      };
	};

Дальше эксперимент встал. Не знаю что делать.  :crying:

  1.  
Edited by NickPS (see edit history)

Share this post


Link to post
Share on other sites
  • 0

у тебя какая версия DZMS?

Просто у меня в версии 1.1FIN нет "moneyLarge", да и вместо камней там массив из железок:

_money = ["ItemSilverBar","ItemSilverBar10oz","ItemGoldBar","ItemGoldBar10oz"];

Да и вообще не понимаю, зачем такие сложности.

_money = ["ItemEmerald","ItemRuby","ItemSapphire","ItemTopaz","ItemAmethyst","ItemCitrine","ItemObsidian"];

...

if (_type == "money") then {
   _scount = count _money;
   _sSelect = floor(random _sCount);
   _item  = _money select _sSelect;
   _crate addMagazineCargoGlobal [_item,1];
};

 

Edited by W0LF (see edit history)

Share this post


Link to post
Share on other sites
  • 0

 

у тебя какая версия DZMS?

Просто у меня в версии 1.1FIN нет "moneyLarge", да и вместо камней там массив из железок:

Да и вообще не понимаю, зачем такие сложности.

_money = ["ItemEmerald","ItemRuby","ItemSapphire","ItemTopaz","ItemAmethyst","ItemCitrine","ItemObsidian"];

...

if (_type == "money") then {
   _scount = count _money;
   _sSelect = floor(random _sCount);
   _item  = _money select _sSelect;
   _crate addMagazineCargoGlobal [_item,1];
};

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

П.С.: moneyLarge я добавлял сам.

П.С.: Т.е. в твоем варианте награда всегда будет фиксированая, правильно?

Edited by NickPS (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Да, всегда добавляется 1 случайный камень.

В твоем случае придется в КАЖДОМ файле миссии создавать отдельные ящики для "_money" и отдельно для "_moneyLarge".

Share this post


Link to post
Share on other sites
  • 0

Да, всегда добавляется 1 случайный камень.

 

А как тогда сделать, что бы весь массив появлялся. Замучался уже что-то добавлять или убирать, потом запускать сервер, присоединятся. Ждать миссию, и если она не работает, то все по новой. Как должен выглядить код, чтобы спавн был не одного рандомного камня, а всех вещей указанных в массиве. ЛИБО -money ЛИБО _moneyLarge. 

 

 

 

В твоем случае придется в КАЖДОМ файле миссии создавать отдельные ящики для "_money" и отдельно для "_moneyLarge".

 
Поэтому я и добавил массив _moneyLarge (большие деньги, большая награда) для сложных миссий. И конечно в ящике будет уже не _money, а  _moneyLarge. И два ящика для каждого массива мне не нужно. Но речь не об этом сейчас.
Edited by NickPS (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Так, давай ещё раз.

Тебе надо, чтобы на каких-то определенных миссиях в качестве награды выпадали камни.

Эти камни должны быть в общем ящике с миссии, или в отдельном?

В этом ящике должны быть только камни или там может быть ещё и оружие/патроны/дальномеры и т.д.?

Камень в этом ящике должен быть только один или все, перечисленные в массиве?

Share this post


Link to post
Share on other sites
  • 0

Так, давай ещё раз.

Тебе надо, чтобы на каких-то определенных миссиях в качестве награды выпадали камни.

Эти камни должны быть в общем ящике с миссии, или в отдельном?

В этом ящике должны быть только камни или там может быть ещё и оружие/патроны/дальномеры и т.д.?

Камень в этом ящике должен быть только один или все, перечисленные в массиве?

1) В легкой миссии спавнится отдельный ящик я массивом _money. (это я уже умею=)

2) В сложной миссии спавнится отдельный ящик я массивом _moneyLarge. (это я уже умею=)

3) Из массива _money спавнится ВЕСЬ список указанных там вещей.

4) Из массива _moneyLarge спавнится ВЕСЬ список указанных там вещей.

5) Если не сложно, то хотелось бы узнать как указать рандомное количество вещей из массива.

Спасибо большое, Wolf, что помогаешь.  :good:

Share this post


Link to post
Share on other sites
  • 0

Опять не понял:

 

5) Если не сложно, то хотелось бы узнать как указать рандомное количество вещей из массива.

Что ты имеешь ввиду?

Я правильно понимаю, что если в массиве 10 итемов, то тебе надо отспавнить рандомно от 1 до 10 итемов?

Share this post


Link to post
Share on other sites
  • 0

Опять не понял:

 

5) Если не сложно, то хотелось бы узнать как указать рандомное количество вещей из массива.

Что ты имеешь ввиду?

Я правильно понимаю, что если в массиве 10 итемов, то тебе надо отспавнить рандомно от 1 до 10 итемов?

Забей на пятый пункт. Забудь просто про него, я его для общего развития добавил. Нужно выполнить 1, 2, 3, 4 пункты. Я не знаю как.

 

Нужен код, который будет спавнить ВСЕ итемы из массива со 100% вероятностью.

Edited by NickPS (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By fedotovyasha
      не подключается к серверу и пишет что на сервере нету такого мода, хотя он там есть. Названия менял, другие моды все отключил, ничего не помогает. В батниках все прописано
    • By JustBullet
      Всем привет! :) Как я рад всех видеть снова, дошли руки до ковыряния станделона (если уже его можно так назвать).
       
      Что пытаюсь сделать:
      1. Создать Рюкзак.
      2. Создать Радио.
          - Положить Батарейку в Радио.
      3. Положить Радио(с Батареей) в Персональный слот Рюкзака.
      4. Дополнительно поместить Радио в слот быстрого доступа (на панель).
       
      EntityAI itemEnt_Bag = player.GetInventory().CreateInInventory("FurCourierBag"); // Создаем РЮКЗАК. EntityAI itemEnt_Radio = player.GetInventory().CreateInInventory("PersonalRadio"); // Создаем РАДИО. itemEnt_Radio.GetInventory().CreateAttachment("Battery9V"); // Помещаем в Радио Батарейку. itemEnt_Bag.GetInventory().CreateAttachment(itemEnt_Radio); // Помещаем в РЮКЗАК РАДИО. player.SetQuickBarEntityShortcut(itemEnt_Radio, 0, true); // Помещаем РАДИО на первый слот. тут возникает проблема, в четвертой строке, поскольку я помещаю Элемент Радио+Батарея в Рюкзак, а команда ожидает Строковый параметр (String). Проблема больше в незнании мной синтаксиса. Возможно и в логике построения. Вообщем прошу помощи разобраться с этой строчкой :)))
       
      п.с. так разумеется срабатывает но без батарейки:
      itemEnt_Bag.GetInventory().CreateAttachment("PersonalRadio"); // Помещаем в РЮКЗАК РАДИО. Каким параметром/командой я могу загнать Радио с батареей в персональный слот Рюкзака?
    • By Gromillla
      Доброго времени суток дамы и господа, и сразу к вопросу, в миссиях 2.2.5 версии, если боты "бандиты", то они скин игрока видят и реагируют на него, а если миссии с ботами "героями", то они скин игрока не видят. Скин  "RUS_Soldier_Marksman". Как соответственно решить эту проблему? Ошибок в РПТ нет.
    • By petpoleoo
      Ребят ваша помощь нужна,суть проблема такая,мент кидает гражданского в тюрьму а вместо той тюрьмы где он должен быть игрок в поле скачет в редакторе была в этом месте только одна метка sky drive но ее перенести пробывали 0 эмоций,кто сталкивался может какую мысль подкините идею как решить;)
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By SPIRT
      В общем после недавнего обновления BattleEye стало выкидывать из игры с ошибкой BattleEye типа вам нужно перезагрузить игру. Хочу поделиться тем что помогло мне . Сразу говорю винда у меня пиратская .Итак начнем .
      1.Отключаемся от интернета.
      2.Вырубаем антивирус полностью.
      3.Заходим в Панель управления -- Администрирование -- Службы -- ищем Защита программного обеспечения --- останавливаем ее.
      4.Дальше идем по адресу диск С Windows -- System32  там надо найти два файла C7483456-A289-439d-8115-601632D005A0  перед этими цифрами могут стоять еще цифры но это не важно , удаляем их.
      5. Обратно запускаем Защита программного обеспечения. В правом нижнем углу появится надпись  что ваша Windows не является лицензионной.
      6. Перезагружаем комп - и активируем нашу винду, я активировал программой Windows 7 Loader . 
       
      У меня процесс сошел с мертвой точки со второй активации  , но согласитесь это лучше чем переустанавливать Windows 7 или переходить с любимой системы на 10 винду . Кому поможет ставим +  врепу. 
       
      PS в параметрах папок и поиска не забываем выставить  показывать скрытые файлы и папки !
       
  • Our picks

×
×
  • 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.