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
alex_good_kaban

Настройка Workbench, DayZDiag_x64, Упаковка модов (Изменение скриптов без перезагрузки игры)

Recommended Posts

Что вы узнаете в этом руководстве:

- Установка и настройка Workbench с нуля
- Установка инструментариев Dayz Tolls, Mikera tools
- Создание своего первого мода
- Отладка этого мода в игре
- Изменение мода без перезагрузки

Что нужно для начала работ:

1. Установленная игра DayZ https://store.steampowered.com/agecheck/app/221100/
2. Установленный сервер DayZhttps://store.steampowered.com/agecheck/app/221100/
3. Установленный DayZ Toolshttps://store.steampowered.com/app/830640/DayZ_Tools/
4. Установленный Visual Studio Code или Notepad ++(советую первый вариант, бонус в конце статьи)
5. Установить пакет инструментов от Mikera (галочками отмечено в спойлере) - https://mikero.bytex.digital/Downloads

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

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


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

1. Создание диска Р и распаковка файлов игры

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

 

Оригинал статьи - https://community.bistudio.com/wiki/DayZ:Modding_Basics
Диск Р - это виртуальный диск который в обязательном порядке должен быть создан для работы со своими модификациями (модами)
Для создания диска Р и дальнейшей работы с ним потребуется место на жестком диске не менее 50 гб (распакованная игра весит порядка 15 Гб).
Исходя из этого диск С для работы мы не рассматриваем. Выбираем диск в котором у вас достаточно места. Допустим диск D. В нем создаем папку Pdrive. 
У меня получился такой путь D:\PDrive
Теперь открываем DayZ Tools и прописываем путь до папки Pdrive, ставить галочку напротив Startup of the Tools (Диск будет автоматически монтироваться при запуске DayZ Tools)
Так же ниже проверяем правильно ли указан путь до установленной игры DayZ, если нет то снимаем галочку и указываем верную директорию.
 

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

image.png.0bced1ebcfcdfe902eb9bba7b16e832e.png 

Далее там же в Dayz Tools нажимаем вкладку Tools и выбираем Mount Drive P - Наш виртуальный диск смонтирован!
Теперь находим приложение dayz2p, запускаем и указываем диск P. 
Жмем Enter и ждем окончания распаковки файлов игры на диск Р (время распаковки занимает от 5 мин и более)
Можете использовать DayZ Tools для распаковки игры (Tools/Extract Game Data), но советую использовать dayz2p так как все конфиги будут сразу разбинарены.
После выполнения распаковки вы можете наблюдать на диске Р все файлы игры

 



2. Создание первого мода

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

 

Приступим к созданию своего первого мода.
На диске Р создадим папку GGmod (Никогда не используйте в названии мода и классов боле 2х заглавных букв - Mikera не запакует ваш мод)
Создаем папку Scripts, в папке Scripts создаем папку 4_World, в папке 4_World создаем папку GGscript  (P:\GGmod \Scripts\4_World\GGscript  ).
В дальнейшем папка GGscript в 4_World облегчит нам поиск наших скриптов через Workbench
Создаем файл config.cpp в корне нашего мода (P:\GGmod \config.cpp)
Открываем config.cpp через Visual Studio Code (или Notepad++)  и вставляем код

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


class CfgPatches
{
	class GGmod
	{
		requiredAddons[] =
		{
			// ""  //Если вы делаете ретекстур или изменяете скрипт здесь указываются классы модов которые нам требуется изменить
		};
	};
};

class CfgMods
{
	class GGmod
	{
		type = "mod";

		class defs
		{
			class worldScriptModule
			{
				значение = "";
				файлы[] = { "GGmod/Scripts/4_World" }; //Путь до нашей папки 4_World со скриптами
			};
		};
	};
};

 


Сохраняем config.cpp и закрываем его.
Теперь перейдем к созданию своего первого скрипта.
В папке GGscript  создаем файл moddedPlayerBase.c  (P:\GGmod \Scripts\4_World\GGscript\moddedPlayerBase.c). Название скрипта можете указывать совершенно любое латиницей оно ни на что не влияет.
Открываем moddedPlayerBase.c через Visual Studio Code (или Notepad++)  и вставляем  наш первый скрипт
 

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


modded class PlayerBase	// указываем что модифицируем оригинальный класс игры PlayerBase
{
	override void OnJumpStart()	// переопределяем существующий метод OnJumpStart
	{
		super.OnJumpStart();			// вызываем исходный метод обратного вызова, чтобы ничего не сломать
		Print("Мой первый мод, Ура!!!");	// вызываем Print с указанным текстом 
	}
}

 


Сохраняем moddedPlayerBase.c и закрываем его.
На этом этапе мы создали наш первый мод без запаковки в PBO. Который будет выводит в script логи текст "Мой первый мод, Ура!!!" каждый раз когда мы будем прыгать игровым персонажем.

 



3. Упаковка в PBO
На данном этапе мы забываем окончательно о существовании Addon Builder встроенного в DayZ Tools.
Используйте pboProject для запаковки модов - он показывает абсолютно все допущенные ошибки, кроме ошибок в скриптах.

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

 

На диске P создаем папку @MyMod и папку Addons внутри (P:\@MyMod\Addons). Говорят что Addons лучше создавать с заглавной буквы.
Открываем установленный pboProject - нажимаем Setup
И изменяем настройки как указано на скриншоте под спойлером
 

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

image.png.6beff1ad8780a86fc183f9f33176e1c0.png


Подтверждаем изменения, жмем ОК и далее настраиваем главное окне.
Жмем Mod Folder и указываем путь P:\@MyMod
Жмем Source Folder и указываем путь P:\GGmod
(При создании своего мода учитывайте что в корневой папке, в данном случае GGmod должен обязательно находится config.cpp с начальными данными указанными выше. Иначе pboProject  ничего не запакует)
Далее устанавливаем галочки указанные на скриншоте под спойлером
 

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

image.png.f8dc8cf7f09b61ee7cf318a0c8391713.png


Жмем Crunch
Наш Pbo запаковался в папку P:\@MyMod\Addons
Если появилась какая либо ошибка при запаковке то нажимаем View Outputs и смотрим ошибки в самом низу текстового документа.
Если текстовый документ не открылся, то тогда должна была открыться папка в которой лежит текстовой документ с название вашего мода (GGmod.txt)
Так же если в этом текстовом файле ошибки не обнаружены проверяем консоль командной строки либо нажимаем View Binlog и смотрит ошибки там.
В View Binlog обычно отображаются ошибки связанные с rvmat, 3д моделями и их model.cfg

 



4. Подготовка к Filepatching

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

 

Для работы с Filepatching нам требуется чтобы наш незапакованный мод находился в корне папки с игрой DayZ.
Чтобы не копировать постоянно измененный код с модом в корень DayZ нам потребуется сделать символические ссылки.
Жмем win+R, пишем cmd, Enter. И вставляем ниже указанный код.
Где "D:\Games\SteamLibrary\steamapps\common\DayZ\GGmod" - путь до игры DayZ, куда вставиться символическая ссылка. 
А "P:\GGmod" - путь до папки с нашим незапакованным модом


mklink /J "D:\Games\SteamLibrary\steamapps\common\DayZ\GGmod" "P:\GGmod"

Если все указали верно в командной строке напишет что символическая ссылка создана. Теперь по пути D:\Games\SteamLibrary\steamapps\common\DayZ в моем случае, у вас может быть свой путь до корня папки игры DayZ, появится папка со значком ярлыка GGmod.
Теперь когда мы решим изменить код скрипта в папке P:\GGmod он будет автоматом изменен и в папке с игрой.
Так же сразу для дальнейшей работы с Workbench нам нужно создать символическую ссылку на папку scripts

 


mklink /J "D:\Games\SteamLibrary\steamapps\common\DayZ\scripts" "P:\scripts"

 

 

 



5. Тестирование в одиночной игре/оффлайн режим. (DayZDiag_x64 - client)

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

 

Для тестирования в одиночной игре нам потребуется создать свою миссию.
В корне папки с игрой DayZ создаем папку misiions, внутри создаем папку MyMisiion.ChernarusPlus  (D:\Games\SteamLibrary\steamapps\common\DayZ\missions\MyMisiion.ChernarusPlus)
В папке MyMisiion.ChernarusPlus создаем файл Init.c и открываем через Visual Studio Code (или Notepad++)  и вставляем код
 

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


Mission CreateCustomMission(string path)
{
	return new MissionGameplay();
}

void main()
{
	PlayerBase player;
	ItemBase item;

	// Создаем игрока, указываем позицию возрождения
	player = PlayerBase.Cast( GetGame().CreatePlayer(NULL, "SurvivorF_Linda", "2200 10 2200", 0, "NONE") );

	// Спавним игроку рубашку TShirt_Black
	item = player.GetInventory().CreateInInventory("TShirt_Black");

	// Спавним игроку штаны ShortJeans_Green
	item = player.GetInventory().CreateInInventory("ShortJeans_Green");

	// Спавним игроку обувь WorkingBoots_Brown
	item = player.GetInventory().CreateInInventory("WorkingBoots_Brown");

	// Создаем предмет в инвентаре
	item.GetInventory().CreateInInventory("Apple");

	// Выбираем игрока которым будет управлять клиент
	GetGame().SelectPlayer(NULL, player);
}

 


Сохраняем Init.c и закрываем
Создаем файл start_SP.bat для запуска игры через DayZDiag_x64
Открываем start_SP.bat через Visual Studio Code (или Notepad++)  и вставляем код
 


start /D "D:\Games\SteamLibrary\steamapps\common\DayZ" DayZDiag_x64.exe -newErrorsAreWarnings=1 "-mod=P:\@MyMod" "-mission=./missions/MyMission.ChernarusPlus" -filePatching

Где:
D:\Games\SteamLibrary\steamapps\common\DayZ заменяем на свой путь до игры DayZ
- mod=P:\@MyMod
путь до вашего упакованного мода
mission=./missions/MyMission.ChernarusPlus - путь до вашей миссии находящейся в корне папки DayZ

Сохраняем и пробуем запустить start_SP.bat
У нас загрузилась игра через DayZDiag_x64. Жмем кнопки Win+Alt должно открыться Diag Menu.

 



6. Тестирование в многопользовательском режиме. (DayZDiag_x64 - server + client)

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

 

Дальнейшие действия мы рассматриваем только в том случае если у вас уже создан свой DayZ Server, запущен и работает.
Для запуска сервера через DayZDiag_x64  нам понадобится создать новые server.cfg, а так же миссию с картой.
Со своего сервера копируем миссию от той карты с которой вы работаете в корень папки с игрой DayZ. Я использую карту Припять (D:\Games\SteamLibrary\steamapps\common\DayZ\mpmissions\serverMission.Pripyat)
Папку storage желательно удалить после того как скопируете миссию.
Так же со своего рабочего сервера копируем папку profiles и вставляем в корень папки игры DayZ (D:\Games\SteamLibrary\steamapps\common\DayZ\profiles)
Создаем файл server.cfg в корне папки с игрой DayZ (D:\Games\SteamLibrary\steamapps\common\DayZ\server.cfg)
Открываем server.cfg  через Visual Studio Code (или Notepad++)  и вставляем код

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


hostname = "Diag server your name"; // Server name
password = "";                  // Password to connect to the server
passwordAdmin = "";             // Password to become a server admin

enableWhitelist = 0;            // Enable/disable whitelist (value 0-1)
logAverageFps = 60;			    // Logs the average server FPS (value in seconds), needs to have ''-doLogs'' launch parameter active
logMemory = 60;				    // Logs the server memory usage (value in seconds), needs to have the ''-doLogs'' launch parameter active
maxPlayers = 5;                 // Maximum amount of players
BattlEye = 0;                   // turn off BE since diag exe does not run with it
verifySignatures = 0;           // if testing mods which aren't properly signed 0
maxPing = 200;					// Max ping value until server kick the user (value in milliseconds)
forceSameBuild = 0;             // When enabled, the server will allow the connection only to clients with same the .exe revision as the server (value 0-1)
disableVoN = 0;                 // Enable/disable voice over network (value 0-1)
vonCodecQuality = 30;           // Voice over network codec quality, the higher the better (values 0-30)
disable3rdPerson = 0;             // Toggles the 3rd person view for players (value 0-1)
disableCrosshair = 1;             // Toggles the cross-hair (value 0-1)
disablePersonalLight = 1;       // Disables personal light for all clients connected to server
lightingConfig = 1;             // 0 for brighter night setup, 1 for darker night setup
serverTime = "2021/7/1/12/00";     // Initial in-game time of the server. "SystemTime" means the local time of the machine. Another possibility is to set the time to some value in "YYYY/MM/DD/HH/MM" format, f.e. "2015/4/8/17/23" .
serverTimeAcceleration = 12;      // Accelerated Time (value 0-24)// This is a time multiplier for in-game time. In this case, the time would move 24 times faster than normal, so an entire day would pass in one hour.
serverNightTimeAcceleration = 10; // Accelerated Nigh Time - The numerical value being a multiplier (0.1-64) and also multiplied by serverTimeAcceleration value. Thus, in case it is set to 4 and serverTimeAcceleration is set to 2, night time would move 8 times faster than normal. An entire night would pass in 3 hours.
serverTimePersistent = 0;         // Persistent Time (value 0-1)// The actual server time is saved to storage, so when active, the next server start will use the saved time value.
guaranteedUpdates = 1;            // Communication protocol used with game server (use only number 1)
loginQueueConcurrentPlayers = 5;  // The number of players concurrently processed during the login process. Should prevent massive performance drop during connection when a lot of people are connecting at the same time.
loginQueueMaxPlayers = 5;         // The maximum number of players that can wait in login queue
instanceId = 3;                 // DayZ server instance id, to identify the number of instances per box and their storage folders with persistence files
storeHouseStateDisabled = true; // Disable houses/doors persistence (value true/false), usable in case of problems with persistence
storageAutoFix = 1;             // Checks if the persistence files are corrupted and replaces corrupted ones with empty ones (value 0-1)
allowFilePatching = 1;			// if set to 1 it will enable connection of clients with "-filePatching" launch parameter enabled
respawnTime = 1;
disableBaseDamage = 1;			// set to 1 to disable damage/destruction of fence and watchtower
disableContainerDamage = 1;		// set to 1 to disable damage/destruction of tents, barrels, wooden crate and seachest
disableRespawnDialog = 1;       // set to 1 to disable the respawn dialog (new characters will be spawning as random)
enableCfgGameplayFile = 1;		//To enable the usage of the cfggameplay.json will be loaded and used by the game. 
defaultVisibility = 3000;			// highest terrain render distance on server (if higher than "viewDistance=" in DayZ client profile, clientside parameter applies)
defaultObjectViewDistance = 3000;	// highest object render distance on server (if higher than "preferredObjectViewDistance=" in DayZ client profile, clientside parameter applies)

class Missions
{
	class DayZ
	{
		 template="D:\Games\SteamLibrary\steamapps\common\DayZ\mpmissions\serverMission.Pripyat"; // Путь до вашей миссии с картой в моем случаем это карта Припять, если используете Черно то указываем соответсвующую папку с миссией допусти dayzOffline.chernarusplus
	};
};

 


Сохраняем server.cfg и закрываем.

Создаем start_MPserver.bat для запуска серверной части, открываем через Visual Studio Code (или Notepad++)  и вставляем код
 


@echo off
start /D "D:\Games\SteamLibrary\steamapps\common\DayZ" DayZDiag_x64.exe -newErrorsAreWarnings=1 "-mod=D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@CF;D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@Dabs Framework;D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@Community-Online-Tools;D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@Pripyat (BETA);D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@GSC Gameworld Assets;P:\@GGmod;" "-mission=D:\Games\SteamLibrary\steamapps\common\DayZ\mpmissions\serverMission.Pripyat" "-config=D:\Games\SteamLibrary\steamapps\common\DayZ\serverDZ.cfg" "-profiles=D:\Games\SteamLibrary\steamapps\common\DayZ\profiles" -filePatching -server -port=2302

В этом start_MPserver.bat у нас прописаны пути до модов которые требуются нашему серверу.
В моем случае я использую карту Припять и мне требуется обязательно загрузить моды @CF, @Dabs Framework, @Community-Online-Tools, @Pripyat (BETA), @GSC Gameworld Assets. 
Пути до этих модов обязательно прописать полностью. (видел конечно где то что можно прописывать таким образом - !Workshop\@CF; но не проверял)
Так же в конце всех подключенных модов прописываем путь до нашего запакованного мода P:\@GGmod;
Учтите в обязательном порядке после каждого мода должна быть точка с запятой, а так же между точкой с запятой и новым модом не должно быть пробела.
Серверный батник для запуска сервера готов. Сохраняем, Запускаем и проверяем нет ли ошибок при запуске. Если нет то двигаемся дальше
На сегодняшний день я не смог запустить сервер с @VPPAdminTools ругается на override 

Создаем start_MPclient.bat для запуска клиентской части, открываем через Visual Studio Code (или Notepad++)  и вставляем код


@echo off
start /D "D:\Games\SteamLibrary\steamapps\common\DayZ" DayZDiag_x64.exe -newErrorsAreWarnings=1 "-mod=D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@CF;D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@Dabs Framework;D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@Community-Online-Tools;D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@Pripyat (BETA);D:\Games\SteamLibrary\steamapps\common\DayZ\!Workshop\@GSC Gameworld Assets;P:\@GGmod;" -filePatching -connect=127.0.0.1 -port=2302

Сохраняем. Если закрыли серверную часть, то запускаем ее батником start_MPserver.bat. После того как увидели заветные Entering IN, запускаем клиента start_MPclient.bat. Вы должны подключиться на сервер.
Жмем кнопки Win+Alt должно открыться Diag Menu.

Создаем  KILLserver.bat который будет завершать работу сервера. Открываем через Visual Studio Code (или Notepad++)  и вставляем код


cd %~dp0
taskkill /f /im DayZServer_x64.exe
taskkill /f /im DZSALModServer.exe
taskkill /f /im DayZDiag_x64.exe
taskkill /f /im Bec.exe
taskkill /f /im CMD.exe
exit

Сохраняем и закрываем. Теперь когда нам нужно закрыть сервер то просто стартуем KILLserver.bat
Если у кого он уже есть то просто добавьте строку
 


taskkill /f /im DayZDiag_x64.exe

 

 

 


7. Настройка и работа в Workbench

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

 

Ну вот мы и дошли до заветного пункта. Открываем Dayz Tools - Workbench.
Первоочередное переходим во вкладку Workbench - Options и проверяем в Source data directory у вас должен быть указан корень диска Р ( P:\ )
Сохраняем и закрываем Workbench.
Создаем файл Workbench_mod.bat. Открываем через Visual Studio Code (или Notepad++)  и вставляем код для запуска Workbench с подключенными модами.


start /D "D:\Games\SteamLibrary\steamapps\common\DayZ Tools\Bin\Workbench" workbenchApp.exe -mod=P:\@GGmod

Где:
- D:\Games\SteamLibrary\steamapps\common\DayZ Tools\Bin\Workbench - путь до файла Workbench который находится в папке с установленным DayZ Tools
- mod=P:\@GGmod - путь до нашего упакованного мода.
Сохраняем  и закрываем Workbench_mod.bat.

Перед запуском Workbench_mod.bat проверяем еще раз все что мы сделали
- в корне папки DayZ находятся символические ссылки - Scripts и GGmod
- сервер запустился через start_MPserver.bat
- клиент присоеденился через start_MPclient.bat

Запускаем Workbench_mod.bat

Переходим во вкладку Editors - Script Editor
Должна появится заветная надпись Script Debugger - Game connected
 

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

image.png.78ac4987705afac694a0aea48faca44c.png


После переходим в окно Project и видим какой хаос там твориться. Находим папку World (script\4_World)
В этой папке находим нашу папку GGmod которую указывали при создании мода (P:\GGmod \Scripts\4_World\GGscript)
Находим в этой папке наш скрипт moddedPlayerBase.c  и открываем его.
Теперь так как у нас запущен мультиплеер логи будут отображаться на стороне сервера. Переходим во вкладку Debug - Debug Server.
Если все хорошо у вас опять долна появиться заветная надпись Script Debugger - Game connected

В Dayz советую в настройках сделать отображение в окне для того чтобы было видно статусную строку в Workbench. 
Теперь разворачиваем клиент и пробуем прыгнуть в игре. После прыжка мы увидим как в логах во вкладке Output в Workbench появилась надпись Мой первый мод, Ура!!!
Соответственно чем больше мы прыгаем тем больше надписей появляется. 
Теперь ради чего мы все это делали. В нашем открытом скрипте moddedPlayerBase.c изменяем текст на любой другой. Жмем Debug - Recompile File on Host. 
Переходим в клиент, прыгаем и видим заветную новую надпись в окошке Output. Радуемся что мы смогли настроить изменение скриптов на лету и наконец-то сократили себе кучу времени с постоянным перезапуском сервера и клиента.
Теперь для удобства вы можете просто создавать любые свои моды (PBO)  и добавлять их в папку @MyMod они будут автоматически у вас подтягиваться на сервер/клиент и workbench. 
Но не забывайте делать символическую ссылку на каждый новый PBO в корень папки DayZ
 


Пример:
Сейчас у вас есть только мод GGmod не запакованный и GGmod.pbo в папке @MyMod. Так же символическая ссылка GGmod в папке с DayZ
Вы решили создать новый мод HHmod, запаковали его в HHmod.pbo в папку @MyMod. И обязательно делаете символическую ссылку HHmod в папку с DayZ

По поводу хаоса во вкладке Project есть решение  - https://github.com/InclementDab/DayZ-Utilities
Скачиваем запускаем FixScripts.bat и теперь у вас все ванильные

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

Edited by alex_good_kaban (see edit history)

Share this post


Link to post
Share on other sites



Благодарю за подробный мануал. Но столкнулся с проблемой компиляции скрипта при запущенной игре. В логгере воркбенча следующая ошибка:

 

SCRIPT    (E): TestMod/scripts/4_World/Testik.c(8): error: Unknown type 'PlayerBase'
SCRIPT       : ScriptDebugger: remote re-compilation was successful.

Содержание Testik.c целиком и полностью соответствует коду из вашего примера. Подскажите пожалуйста, как исправить эту ошибку?

Share this post


Link to post
Share on other sites

@Testalone Из вариантов: 
Либо на диске P не распакована папка script. Но если вы делали все по инструкции то она должна быть там.
Либо в папке с игрой отсутствует линк на эту папку script.

Share this post


Link to post
Share on other sites

Привет, указываю путь к приватКлючу, но он не дает его выбрать:

 

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

image.png.13f08908d1ad69a18112b217e3eb25d1.png

 

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 Troy1
      Всем привет. Помогите пожалуйста со скриптом.
      Суть. Я пытаюсь сделать синхранизацию сервера с клиентом передавая c конфига время разделки животного.
      В родных скриптах есть class UATimeSpent с константами и там есть константа SKIN.
      Мне нужно её перезаписать на своё значение и мне выдаёт ошибку: Trying to modify write protected variable 'SKIN' в переводе на Русский Попытка изменить защищенную от записи переменную «SKIN».
      Функция скрипта: Когда игрок запускает клиент, идёт запрос на серверную часть и получает в ответ время разделки.
      Задача: Нужно перезаписать константу SKIN на новое значение и всё.
      Сам скрипт.
      class timeToComplete extends UATimeSpent { protected ref UATimeSpent m_UATimeSpent; void timeToComplete() { GetDayZGame().Event_OnRPC.Insert(OnRPC); CheckUATimeSpent(); } void ~timeToComplete() { GetDayZGame().Event_OnRPC.Remove(OnRPC); } void CheckUATimeSpent() { GetGame().RPCSingleParam(NULL, SOC_TIME_RPCs.SOC_GT, NULL, true); } void OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx) { if (rpc_type == SOC_TIME_RPCs.SOC_RT) { Param1<float> soc_srt; if (ctx.Read(soc_srt)) { if (soc_srt.param1!= 0) { m_UATimeSpent.SKIN = soc_srt.param1; Print("Пришёл ответ от сервера в m_UATimeSpent.SKIN - " + m_UATimeSpent.SKIN) } } } } };  
    • By alex_good_kaban
      Пытаюсь создать Action который будет принимать данные из созданного JSON конфига на стороне сервера. 
      Пример:
      Создаем конфиг
       

      Json получается в таком формате:
       

      В Action добавляю просто для проверки void GetProxyBuilder() и проверяю его работоспособность

      На стороне клиента я получаю NULL (если добавляю исключение if !=NULL то функция вообще не отрабатывает.
      На стороне сервера значения из конфига получаются, но так как функция z_childNameRPC обрабатывается на стороне клиента то выполнения этого условия не происходит.

      Если не использовать JSON конфиг, а создать массив с данными внутри Action то все отрабатывает нормально.

      Вопрос как возможно использовать данные из конфига JSON
    • By alex_good_kaban
      Пытаюсь изменить состояние еды из состояние ROTTEN (Гнилого) в состояние RAW (Сырое).
      Использую команду 
       
      Edible_Base food = Edible_Base.Cast(ingredients); food.ChangeFoodStage( FoodStageType.RAW ); Состояние изменяется на RAW секунд на 20, после опять возвращается в состояние ROTTEN. 
      Как зафиксировать данное состояние у еды, я так понимаю есть определенный таймер у еды который тоже нужно сбросить. Подскажите как?
    • By aimlock
      Можно ли изменить global armor предмета через скрипт, игнорирую config предмета?
    • By aimlock
      Нужно что бы объект двигался от лица игрока по прямой.
      Использовал функцию 
       
      SetVelocity(this, Vector(1, 0.1, 0)); где this это сам объект (extended class house)
      но вектор движения задается по кордам карты x, y, z
       
  • 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.