Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
DrTauren

[DayZ Group Management (DZGM)] - Управление группами игроков

Рекомендованные сообщения

люди добрые у когонибудь не завалялось редми от старого груп менеджмента ? версия с broadcaster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах



в какой папке находится "Открываем ваш init.sqf" ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в какой папке находится "Открываем ваш init.sqf" ?

mpmissions /ВАША ПАПКА,

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не появляется миню у радио, ошибок нету в рпт

 

class ExtraRc {
	class ItemRadio	{
		class GroupManagement {
			text = "Настройки группы";
			script = "execVM 'dzgm\loadGroupManagement.sqf'";
		};
	};
	class Binocular_Vector  {
		class viewdistanceTitle {
			text = "Настроить дальность";
			script = "systemChat('Change View Distance Locally. Click on one of the distance options');";
		};
		class distance400m {
			text = "400 Meters";
			script = "setViewDistance 400; systemChat('ViewDistance: 400');";
		};
		class distance600m {
			text = "600 Meters";
			script = "setViewDistance 600; systemChat('ViewDistance: 600');";
		};
		class distance800m {
			text = "800 Meters";
			script = "setViewDistance 800; systemChat('ViewDistance: 800');";
		};
		class distance1000m {
			text = "1000 Meters";
			script = "setViewDistance 1000; systemChat('ViewDistance: 1000');";
		};
		class distance1250m {
			text = "1250 Meters";
			script = "setViewDistance 1250; systemChat('ViewDistance: 1250');";
		};
		class distance1500m {
			text = "1500 Meters";
			script = "setViewDistance 1500; systemChat('ViewDistance: 1500');";
		};
		class distance2000m {
			text = "2000 Meters";
			script = "setViewDistance 2000; systemChat('ViewDistance: 2000'); systemChat('Warning: Higher the view distance Lower the FPS');";
		};
		class distance3000m {
			text = "3000 Meters";
			script = "setViewDistance 3000; systemChat('ViewDistance: 3000'); systemChat('Warning: Higher the view distance Lower the FPS');";
		};
	};
};  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

не появляется миню у радио, ошибок нету в рпт

Смотри в клиентском рпт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все отлично работает !!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Собственно всем известный и отлично работающий скрипт по создания групп игроков. Попросил перевести пользователь форума, так что получайте   :tounge1:

P.S. В приватном разделе выложена локализация для данного скрипта (перевод всех файлов)

 

 

attachicon.gifseiezb.jpg

 

 

Особенности и описание:

  • Это портированная версия с Wasteland мода
  • Стабильно работает на Epoch 1.0.5.1, DayZ 1.8.4.1 и Overwatch 0.2.5​
  • Члены группы видят ники и иконки друг-друга на расстоянии до 2.5 км
  • Ники можно скрыть при помощи кнопки left-win
  • Члены группы могут использовать чат группы (ранее был бесполезен). Причём работают как письменные, так и голосовые сообщения
  • Только лидер может приглашать в группу, кикать из неё и распускать саму группу
  • Игрок, которого приглашают, не должен быть в другой группе
  • Группа сохраняется в профиль игрока. Вы остаётесь в группе даже после рестарта\смены скина\смерти

Прежде всего качаем архив  :wink1: attachicon.gifDZGM-master.zip

 

Инструкция:

1) Открываем ваш init.sqf и находим эту строку:

_playerMonitor = [] execVM "\z\addons\dayz_code\system\player_monitor.sqf";

и добавляем этот код ниже:

execVM "dzgm\init.sqf";

 

 

2) Если у вас нет кастомного compiles.sqf:

 

 

  1. В init.sqf находим:
    call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";
  2. Добавляем этот код ниже:
    call compile preprocessFileLineNumbers "custom\compiles.sqf";
  3. В папке миссии создаём папку custom, в которой делаем файл compiles.sqf с таким содержимым:
    if (!isDedicated) then {
       player_switchModel = compile preprocessFileLineNumbers "custom\player_switchModel.sqf";
    };

 

 

 

 

3) Если у вас нет кастомного player_switchModel.sqf:

 

 

  1. Распаковываем файл dayz_code.pbo, который находится в папке @DayZ_Epoch\addons
  2. Копируем файл player_switchModel.sqf из \dayz_code\compile\ в папку custom, что мы сделали в папке миссии
  3. В файле compiles.sqf в директории  !isDedicated вставляем этот код:
    player_switchModel = compile preprocessFileLineNumbers "custom\player_switchModel.sqf";
  4. Если у вас уже есть такая линия, то замените её на новую (которую мы сделали). Иначе может появиться ошибка, не позволяющая нормально запустить сервер.

 

 

 

 

4) В файле player_switchModel.sqf находим эту строку:

 _oldUnit = player;

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

_oldGroup = group player;

 

 

5) Там же находим эту строку:

selectPlayer _newUnit;

И добавляем после неё:

if ((count units _oldGroup > 1) && {!isNil "PVDZE_plr_LoginRecord"}) then {
    [_newUnit] join _oldGroup;
    if (count units _group < 1) then {deleteGroup _group;};
};

 

 

6) Если у вас @DayZ 1.8.4.1 или @Overwatch (НЕ @Overpoch), то в коде выше это:

PVDZE_plr_LoginRecord

вам нужно заменить на это:

PVDZ_plr_LoginRecord

 

 

7) В самый конец этого же файла вставьте код:

_savedGroup = profileNamespace getVariable["savedGroup",[]];
player setVariable ["savedGroup",_savedGroup,true];
player setVariable ["purgeGroup",0,true];

 

 

8) Выбираем свой мод и следуем инструкции ↓

Для Epoch:

 

 

  1. Если у вас нет кастомного dayz_spaceInterrupt.sqf:

    А) В файл compiles.sqf в секцию !isDedicated добавить:

    dayz_spaceInterrupt = compile preprocessFileLineNumbers "custom\dayz_spaceInterrupt.sqf";
    Если у вас уже есть такая линия в файле, то замените её на нашу

    Б) Файл dayz_spaceInterrupt скопируйте из папки dayz_code\actions в папку custom, что в нашей папке миссии

     

     

  2. В конце файла dayz_spaceInterrupt найдите это кусок строки:
    _handled
    И прямо над ним добавьте этот код:
    if (_dikCode == 0xDB) then {
        if (tagName) then {tagName = false;titleText ["Group name tags OFF","PLAIN DOWN"];titleFadeOut 4;} else {tagName = true;titleText ["Group name tags ON","PLAIN DOWN"];titleFadeOut 4;};
        _handled = true;
    };
    
    if (_dikCode in actionKeys "TacticalView") then {_handled = true;};

 

 

Для DayZ 1.8.4.1:

 

 

Раскомментируйте первые три строки в файле dzgm\init.sqf, который лежит в архиве

 

 

Для Overwatch:

 

 

dayz_spaceInterrupt тут это просто функция в файле compiles.sqf. Так что просто скопируйте эту функцию в ваш кастомный compiles.sqf и выполните последнее указание из текста для Epoch под спойлером выше.

 

 

 

 

9) Если у вас нет кастомного ui_selectSlot.sqf:

 

 

  1. Копируем файл ui_selectSlot.sqf из dayz_code\compile в папку custom в вашей папке с миссией
  2. В файл ui_selectSlot.sqf добавьте этот код: (ниже цикла, но выше строки: _pos set [3,_height];. Примерно на 57 строке)
    _erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);
       _erc_numActions = (count _erc_cfgActions);
       if (isClass _erc_cfgActions) then {
         for "_j" from 0 to (_erc_numActions - 1) do
         {
           _menu =  _parent displayCtrl (1600 + _j + _numActions);
           _menu ctrlShow true;
           _config =  (_erc_cfgActions select _j);
           _text =  getText (_config >> "text");
           _script =  getText (_config >> "script");
           _height = _height + (0.025 * safezoneH);
           uiNamespace setVariable ['uiControl', _control];
           _menu ctrlSetText _text;
           _menu ctrlSetEventHandler ["ButtonClick",_script];
         };
       };
  3. В файле compiles.sqf в секции !isDedicated добавить это:
    player_selectSlot = compile preprocessFileLineNumbers "custom\ui_selectSlot.sqf";
  4. Если вы уже имеете строку player_selectSlot, то замените её нашей
  5. В самый низ description.ext добавьте:
    #include "custom\extra_rc.hpp"
  6. В папке custom что в папке вашей миссии, сделайте файл extra_rc.hpp с таким содержимым:
    class ExtraRc {
      class ItemRadio {
         class GroupManagement {
            text = "Group Management";
            script = "execVM 'dzgm\loadGroupManagement.sqf'";
         };
       };
    };
    

     

  7. Если у вас уже есть класс ExtraRc, то вместо последнего пункта просто добавьте в него всё кроме первой и последней строки предыдущего кода, то есть это:
    class ItemRadio {
         class GroupManagement {
            text = "Group Management";
            script = "execVM 'dzgm\loadGroupManagement.sqf'";
         };
    };
    Если и класс  ItemRadio есть, то добавьте в него это код:
    class GroupManagement {
            text = "Group Management";
            script = "execVM 'dzgm\loadGroupManagement.sqf'";
         };
    

     

  8. Для DayZ 1.8.4.1:

    Если в вашем description.ext уже есть такая строка:

    #include "\z\addons\dayz_code\gui\description.hpp"
    То замените её содержимым этого файла (дословный перевод. Точно не понял что автор имел ввиду  :smiling:)

 

 

 

 

10) Если в вашем description.ext уже есть класс RscTitles, то:

 

 

  1. Выше этого самого класса добавьте этот код:
    #include "dzgm\defines.hpp"
  2. Внутри этого  самого класса добавьте это:
    #include "dzgm\icons.hpp"

 

 

Если у вас ещё нет RscTitles, то в самый низ description.ext добавьте:

#include "dzgm\defines.hpp"
class RscTitles
{
    #include "dzgm\icons.hpp"
};

 

 

11) Вниз вашего descripton.ext добавьте:

#include "dzgm\groupManagement.hpp"

 

 

12) Папку dzgm из архива, приложенного выше, копируем в папку вашей миссии

 

 

13) В самый низ файла dayz_server\init\server_functions.sqf добавляем этот код:

currentInvites = [];
publicVariable "currentInvites";
"currentInvites" addPublicVariableEventHandler {publicVariable "currentInvites";};

 

 

Для владельцев InfiSTAR:

  • В AHConfig.sqf в раздел ALLOWED_Dialogs добавьте: 55510. Выглядеть должно примерно так:
    _ALLOWED_Dialogs = [-1,106, ... ,55510];
  • В файле AH.sqf найдите и удалите эти операторы:

     

     

    playableUnits = [player]; (повторяется в файле два раза)

    lbsetpicture='no';

    lbSetData='no';

    createMarkerLocal='no';

    setMarkerTextLocal='no';

    setMarkerTypeLocal='no';

    setMarkerColorLocal='no';

     

  • Найдите и удалите эти строки в разделе FNCRestored check (_FRC)

     

     

    'lbsetpicture',

    'lbSetData',

    'createMarkerLocal',

    'setMarkerTextLocal',

    'setMarkerTypeLocal',

    'setMarkerColorLocal',

     

  • В этом же файле находим: admin_fnc_esp = {

    И выше добавляем это:

    #include "dzgmAdminESPicons.sqf"
  • Файл dzgmAdminESPicons.sqf из архива скопируйте в папку dayz_server\init

 

Фильтры:

В файле publicvariable.txt (находится в папке фильтров BattlEye) найдите первую линию, которая начинается с этого:

5 "" !...

или этого:

5 !...

и в конец этой строки добавьте:

!="currentInvites"

P.S. Фильтры последних версий античита InfiSTAR уже включают в себя это исправление

 

 

Вот, собственно, и всё  :smiling: 

Потратил на перевод и оформление этого гайда много времени, так что не откажусь от заслуженного плюса в репу  :embarrased:

а если у меня Rsc Titles в другом файле (в Icon.h)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

В этом же файле находим: admin_fnc_esp = {

я не нашол этой строки помогите что делать, куда в AH.sqf вставлять #include "dzgmAdminESPicons.sqf"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я не нашол этой строки помогите что делать, куда в AH.sqf вставлять #include "dzgmAdminESPicons.sqf"

там ДОЛЖНА быть такая строчка, у вас же в админке esp работает? Ищите по слову esp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

там ДОЛЖНА быть такая строчка, у вас же в админке esp работает? Ищите по слову esp

СПС нашел))) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То что надо, поставлю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не могу скачать архив. Пишет: "Запрашиваемый вами прикрепленный файл не найден."

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не могу скачать архив. Пишет: "Запрашиваемый вами прикрепленный файл не найден."

https://github.com/ebaydayz/DZGM

Походу после переезда форума на новый хост, все сломалось))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
​После установки DZGM,конфликт со скриптом радиации http://s-platoon.ru/index.php?/topic/1686-radioaktivnye-obekty/


В логах РПТ :
20:31:20 Error in expression <; 
{
_Dr_hx = 0; 
_zr = player distance _x;   
if (_zr < (if (isnil {_x getvaria>
20:31:20   Error position: <_x;   
if (_zr < (if (isnil {_x getvaria>
20:31:20   Error Undefined variable in expression: _x
20:31:20 File mpmissions\__cur_mp.Chernarus\radiation.sqf, line 12
20:31:20 Error in expression <ts","_Dr_hx","_zr","_dam"];
_rad_obj = [b1,b2]; 
b4 setvariable ["rad",2000]; 
_>
20:31:20   Error position: <b1,b2]; 
b4 setvariable ["rad",2000]; 
_>
20:31:20   Error Undefined variable in expression: b1
20:31:20 File mpmissions\__cur_mp.Chernarus\radiation.sqf, line 2

 



Как исправить?
Изменено пользователем sanek327 (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, гайд отличный) работает как часы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

https://github.com/ebaydayz/DZGM

Походу после переезда форума на новый хост, все сломалось))

Давно уже всё починили. Всё работает как часы  :smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

чёт у меня анти чит банит всех 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чет нужно настроить чучуть) и какая версия инфи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чет нужно настроить чучуть) и какая версия инфи?

с этого сайта слитая ) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят в чем может быть проблема? все отлично работает до того момента пока не подтверждаешь присоединение к группе. Выскакивает серая  надпись  в нижней части экрана "такой группы не существует" в логе чисто. Перепроверил по гайду несколько раз, все везде прописано правильно. Может у кого была подобная проблема??

P.S.

При чем если отключить инфи то всё работает. По гайду что касается инфи все условия выполнены.

Изменено пользователем Chaser (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в логе чисто.

А в логе на клиенте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В логе клиента :

Error Undefined variable in expression: _name
File mpmissions\__CUR_MP.Napf\dzgm\loadGroupManagement.sqf, line 67
Error in expression <шение в группу от<br/>%1",_name]);
} else {
_groupAcceptInvite ctr>
Error position: <_name]);
} else {
_groupAcceptInvite ctr>

 

сам файлик:

 

disableSerialization;
				
private ["_i","_dialog","_playerListBox","_groupListBox","_namestr","_index","_groupInvite","_groupKick","_groupDisband","_groupLeaveButton","_name","_units"];

closeDialog 0;
_i="createDialog";createDialog "GroupManagement";			
_dialog = findDisplay 55510;
groupManagmentActive = true;
_playerListBox = _dialog displayCtrl 55511;
_groupListBox = _dialog displayCtrl 55512;
_groupInvite = _dialog displayCtrl 55514;
_groupKick = _dialog displayCtrl 55515;
_groupDisband = _dialog displayCtrl 55516;
_groupLeaveButton = _dialog displayCtrl 55517;
_groupAcceptInvite = _dialog displayCtrl 55518;
_groupDeclineInvite = _dialog displayCtrl 55519;
_groupInviteText = _dialog displayCtrl 55520;
_groupInvite ctrlShow false;
_groupKick ctrlShow false;
_groupDisband ctrlShow false;
_groupLeaveButton ctrlShow false;
_groupDeclineInvite ctrlShow false;
_groupAcceptInvite ctrlShow false;
_hasInvite = false;
{
	if (!isNull _x) then {
		if (getPlayerUID _x != "") then {
			_namestr = name _x;             
			_index = _playerListBox lbAdd _namestr;
			_playerListBox lbSetData [_index,str(_x)];
		};
	};	    
} count playableUnits;

while {groupManagmentActive} do {
    {if (_x select 1 == getPlayerUID player) then {_hasInvite = true};} forEach currentInvites;
    
	_units = units group player;
    if (count _units > 1) then {
        if (player == leader group player) then {
			_groupDisband ctrlShow true;
            _groupKick ctrlShow true;
			_groupLeaveButton ctrlShow true;  		
        } else {
			_groupLeaveButton ctrlShow true;    
        };
    } else {
    	_groupKick ctrlShow false;
		_groupDisband ctrlShow false;
		_groupLeaveButton ctrlShow false;  	
    };
    
    if (_hasInvite) then {
        _groupInviteText ctrlShow true;
        _groupAcceptInvite ctrlShow true;
        _groupDeclineInvite ctrlShow true;
        {
			_invite = _x;
			if (_invite select 1 == getPlayerUID player) then {
				{
					if (!isNull _x) then {
						if (_invite select 0 == getPlayerUID _x) then {_name = name _x;};
					};
				} count playableUnits;
			};
		} forEach currentInvites;
        _groupInviteText ctrlSetStructuredText parseText (format ["Приглашение в группу от<br/>%1",_name]);
    } else {
    	_groupAcceptInvite ctrlShow false;
        _groupDeclineInvite ctrlShow false;
        _groupInviteText ctrlShow false; 
    };
    {
		if (!isNull _x) then {
			if ((getPlayerUID _x != "") && (alive _x)) then {
				_namestr = name _x;             
				_index = _groupListBox lbAdd _namestr;
				_groupListBox lbSetData [_index,str(_x)];
			};
		};
    } count _units;
     
	uiSleep 0.5;
    _hasInvite = false;
    lbClear _groupListBox;
	if (!dialog) then {groupManagmentActive = false;};

 

 

Изменено пользователем Chaser (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • Автор: CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
    • Автор: 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: 123new
      Много вопросов на данную тему наблюдаю от новичков, попробую прояснить немного сей вопрос.
       
      Предположим. что вы уже знаете на каких координатах вам надо спавнить определенное здание или объект\животное\бота, с каким углом поворота. И так. эта тема для вас.
       
      Сразу делаю пометку, метод, который добавили нам разработчики игры в патче 1.15, очень хорошо описал наш товарищ в сообщении форума:
      Рекоммендую вам использовать именно его!
      Ниже опубликованы старые методы.
       
      Если вы с расставили их с модифицированной версии Offline (Offline by Arksenor это называется), то вы получили и нашли код вида:
      GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13260.040039 0.0 3670.984131").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13262.756836 0.0 3645.180176").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13265.441406 0.0 3619.531982").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13268.124023 0.0 3593.995361").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13270.844727 0.0 3568.186523").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13273.514648 0.0 3542.561279").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13276.195313 0.0 3517.048828").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13278.399414 0.0 3496.097900").SetOrientation("-96.000000 0.000000 0.000000"); Здесь (по примеру первой строки) 1 значение в скобках - id постройки/объекта, 2 значение - координаты в формате X Y Z, разделенные пробелом, 3 - значение поворота примерно в том же формате.
      Как это делать в Offline - статья от автора Offine:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Add-custom-objects-to-your-server-or-mission
       
      И так, инструкция:
      1. Добавляем в начало init.c файла в вашей mpmissions следующий код:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\spawn_buildings.c" 2. Создаем в папке вашей активной mpmissions файлик spawn_buildings.c и заполняем его следующей информацией.
      void SpawnObject( string type, vector position, vector orientation ) { private string NameBlockLog = "[CreateObject] "; private string InfoLog = ""; if(type != "") { auto obj = GetGame().CreateObject( type, "0 0 0" ); if(obj) { if ((position[0] != 0) && (position[1] != 0) && (position[2] != 0)) { obj.SetPosition( position ); obj.SetOrientation( orientation ); obj.Update(); if (obj.CanAffectPathgraph()) { obj.SetAffectPathgraph(true, false); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, obj); } InfoLog = "[Type: '" + obj.GetType() + "' Position: '" + obj.GetPosition().ToString() + "' Orientation: '" + obj.GetOrientation().ToString() + "']"; Write_Log(NameBlockLog + " Object has been created successfully! Info " + InfoLog); } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed position. Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed type. Info " + InfoLog); } } void Write_Log(string message) { Print(String(message)); } 3. Открываем созданный нами файл,  и в конце файла дописываем следующее:
      void SpawnAirfeeldBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } void SpawnKrasnoBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } Где после void - название функции идет, а между открытыми скобками вызов спавна самих зданий на указанных координатах.
      На примере 1 строки:
      Land_CementWorks_ExpeditionB - id постройки (type)
      13251.875000 0.0 3748.525879 - координаты в формате X Y Z
      -96.000000 0.000000 0.000000 - значение поворота в формате X Y Z
      Внимание: id постройки и координаты в примере указаны не верные и требуют подключения дополнительной модификации для корректной работы!!! Координаты не соответствуют названию функции!!!
      4. открываем в MpMissions в папке с вашей активной миссией init.c и перед ЗАКРЫВАЮЩЕЙ скобкой '}' дописываем нужную нам функцию (это будет активация спавна на карте):
      SpawnAirfeeldBuildings(); 5. Готово, Запускайте сервер, и в scripts.log вы увидите процедуру спавна ваших зданий и увидите, спавнятся ли они на карте или нет.
      Можно написать конечно и более готовую, универсальную систему спавна на карте со считыванием конфигурации из файла, но я считаю это лишним.
       
      Как заполнить добавленные здания лутом на карте:
      вариант 1:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Enable-loot-for-custom-placed-objects
      вариант 2: вручную заполнить xml-файл  mapgrouppos.xml в mpmssions данными о местоположении зданий, где rpy - значение поворота здания в формате Z Y X
       
      С помощью данной статьи вы можете разместить любой элемент игры(постройку, животное, зомби, бота), доступный к спавну через любую модификацию-админ. панель. Очень полезный мод в этом смысле BuilderItems, с его помощью можно творить поистину интересные локации!
    • Автор: Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.