Object Spawner – DayZ

From Bohemia Interactive Community
Categories: DayZDayZ: Editing
mNo edit summary
No edit summary
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{TOC|side}}
=== What is the Object Spawner? ===
=== What is the Object Spawner? ===


Line 5: Line 6:
Objects from such lists are spawned into the world at the start of the server mission.
Objects from such lists are spawned into the world at the start of the server mission.


{{Feature|warning|'''Please note that spawning a lot of objects this way may have impact on both the server and client performance.'''}}
{{Feature|warning|Please note that spawning a lot of objects this way may have impact on both the server and client performance.}}
 


=== How to create and use a custom spawn list ===
=== How to create and use a custom spawn list ===


* Enable cfgGameplay.json, (see the [[https://community.bistudio.com/wiki/DayZ:Gameplay_Settings|Gameplay settings - Documentation]] for cfgGameplay.json configuration)
* Enable cfgGameplay.json, (see the [[DayZ:Gameplay Settings|Gameplay settings documentation]] for {{hl|cfgGameplay.json}} configuration)
* Create a new .json file ''(for example spawnerData.json)'' in your Mission folder, copy the contents of the template bellow into this new file
* Create a new .json file ''(for example spawnerData.json)'' in your Mission folder, copy the contents of the template below into this new file
<spoiler text="Show the template...">
<spoiler text="Show the template...">
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
    "Objects": [
"Objects": [
        {
{
            "name": "Land_Wall_Gate_FenR",
"name": "Land_Wall_Gate_FenR",
            "pos": [
"pos": [
                8406.501953125,
8406.501953125,
                107.73682403564453,
107.73682403564453,
                12782.3388671875
12782.3388671875
            ],
4395.167480,
            "ypr": [
339.012421,
                0.0,
10353.140625
                0.0,
],
                0.0
"ypr": [
            ]
0.0,
        },
0.0,
        {
0.0
            "name": "Land_Wall_Gate_FenR",
],
            "pos": [
"scale": 2
                8410.501953125,
},
                107.73682403564453,
{
                12782.3388671875
"name": "Land_Wall_Gate_FenR",
            ],
"pos": [
            "ypr": [
84104395.501953125,
                0.0,
107339.73682403564453,
                0.0,
1278210356.3388671875
                0.0
],
            ]
"ypr": [
        },
0.0,
        {
0.0,
            "name": "Land_Wall_Gate_FenR",
0.0
            "pos": [
],
                8416.501953125,
"scale": 1
                107.73682403564453,
},
                12782.3388671875
{
            ],
"name": "Land_Wall_Gate_FenR",
            "ypr": [
"pos": [
                0.0,
84164395.501953125,
                0.0,
107339.73682403564453,
                0.0
1278210359.3388671875
            ]
],
        },
"ypr": [
        {
0.0,
            "name": "Land_Wall_Gate_FenR",
0.0,
            "pos": [
0.0
                8422.501953125,
],
                107.73682403564453,
"scale": 0.5
                12782.3388671875
},
            ],
{
            "ypr": [
"name": "Land_Wall_Gate_FenR",
                0.0,
"pos": [
                0.0,
84224395.501953125,
                0.0
107339.73682403564453,
            ]
1278210362.3388671875
        }
],
    ]
"ypr": [
0.0,
0.0,
0.0
],
"scale": 0.25
},
{
"name": "Apple",
"pos": [
4395.501953125,
339.73682403564453,
10362.3388671875
],
"ypr": [
0.0,
0.0,
0.0
],
"scale": 1,
"enableCEPersistency": true
}
]
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 74: Line 96:


* Edit the contents as needed. Do note each object's entry needs to end with a comma, except the last one.
* Edit the contents as needed. Do note each object's entry needs to end with a comma, except the last one.
* In the cfgGameplay.json, locate the "objectSpawnersArr" and input your previously created .json as a parameter ''(example: "objectSpawnersArr": ["spawnerData.json" ])''
* In the {{hl|cfgGameplay.json}} file, locate the "objectSpawnersArr" and input your previously created .json as a parameter (example: <syntaxhighlight lang="json" inline>"objectSpawnersArr": ["spawnerData.json" ]</syntaxhighlight>)


=== Details ===
=== Details ===


The '''cfgGameplay.json''' contains a filename array:
The {{hl|cfgGameplay.json}} contains a filename array:
 
<syntaxhighlight lang="json">


"objectSpawnersArr": ["mySpawnData1.json","mySpawnData2.json","mySpawnData3.json"]
<syntaxhighlight lang="json">"objectSpawnersArr": ["mySpawnData1.json","mySpawnData2.json","mySpawnData3.json"]</syntaxhighlight>
 
</syntaxhighlight>


Where each JSON file contains a list of objects to be spawned in the world at the start of the server mission.
Where each JSON file contains a list of objects to be spawned in the world at the start of the server mission.
{{Feature|warning|'''Any persistent item (usually majority of types within the ''db\types.xml'') will be spawned once again after the server restart.'''}}


=== Parameters ===
=== Parameters ===


{| class="wikitable"
{| class="wikitable"
!Type
! Type
!Parameter
! Parameter
!Details
! Details
|-
| <enforce inline>string</enforce>
| {{hl|name}}
| Supports 2 types of input:
* class name of the object to be spawned (for example: "Land_Wall_Gate_FenR")
* or a p3d model path (for example: "DZ/plants/tree/t_BetulaPendula_1fb.p3d")
|-
| <enforce inline>vector</enforce>
| {{hl|pos}}
| Position of the object in the world
|-
|-
|string
| <enforce inline>vector</enforce>
|name
| {{hl|ypr}}
|Class name of the object to be spawned
| Orientation as Yaw, Pitch and Roll in degrees
|-
|-
|vector
| <enforce inline>float</enforce>
|pos
| {{hl|scale}}
|Position of the object in the world
| Multiplayer of the original object's size
|-
|-
|vector
| <enforce inline>bool</enforce>
|ypr
| {{hl|enableCEPersistency}}
|Orientation as Yaw, Pitch and Roll in degrees
| Spawns without persistence. Once the player takes it, persistence will be enabled if available.
|-
|-
| <enforce inline>string</enforce>
| {{hl|customString}}
| Custom user data that can be handled on spawned item through OnSpawnByObjectSpawner method override
|}
=== Custom user data handling ===
If you are passing some data through {{hl|customString}} , you have to override OnSpawnByObjectSpawner on script class of spawned item to handle that data and implement the logic. See example of use in scripts - {{hl|StaticFlagPole}} - where you can pass name of the flag that will be spawned on it, when the StaticFlagPole is spawned by ObjectSpawner.
=== Limitations ===
Only these paths are supported for p3d spawning:
* DZ/plants
* DZ/plants_bliss
* DZ/plants_sakhal
* DZ/rocks
* DZ/rocks_bliss
* DZ/rocks_sakhal
{{Feature|informative|If the specified object does not exist (class or path to a model), log message with "Object spawner failed to spawn" will appear in the server RPT file.}}


[[Category:DayZ]]
{{GameCategory|dayz}}
[[Category:DayZ:Editing]]
{{GameCategory|dayz|Editing}}

Latest revision as of 12:13, 26 June 2025

What is the Object Spawner?

The Object Spawner addresses the need of our community to add additional detail to the world through a list of map objects together with their position and orientation.

Objects from such lists are spawned into the world at the start of the server mission.

Please note that spawning a lot of objects this way may have impact on both the server and client performance.

How to create and use a custom spawn list

  • Enable cfgGameplay.json, (see the Gameplay settings documentation for cfgGameplay.json configuration)
  • Create a new .json file (for example spawnerData.json) in your Mission folder, copy the contents of the template below into this new file

{
	"Objects": [
		{
			"name": "Land_Wall_Gate_FenR",
			"pos": [
				8406.501953125,
				107.73682403564453,
				12782.3388671875
							4395.167480,
				339.012421,
				10353.140625
			],
			"ypr": [
				0.0,
				0.0,
				0.0
			],
			"scale": 2
		},
		{
			"name": "Land_Wall_Gate_FenR",
			"pos": [
				84104395.501953125,
				107339.73682403564453,
				1278210356.3388671875
			],
			"ypr": [
				0.0,
				0.0,
				0.0
			],
			"scale": 1
		},
		{
			"name": "Land_Wall_Gate_FenR",
			"pos": [
				84164395.501953125,
				107339.73682403564453,
				1278210359.3388671875
			],
			"ypr": [
				0.0,
				0.0,
				0.0
			],
			"scale": 0.5
		},
		{
			"name": "Land_Wall_Gate_FenR",
			"pos": [
				84224395.501953125,
				107339.73682403564453,
				1278210362.3388671875
			],
			"ypr": [
				0.0,
				0.0,
				0.0
			],
			"scale": 0.25
		},
		{
			"name": "Apple",
			"pos": [
				4395.501953125,
				339.73682403564453,
				10362.3388671875
			],
			"ypr": [
				0.0,
				0.0,
				0.0
			],
			"scale": 1,
			"enableCEPersistency": true
		}
	]
}
↑ Back to spoiler's top

  • Edit the contents as needed. Do note each object's entry needs to end with a comma, except the last one.
  • In the cfgGameplay.json file, locate the "objectSpawnersArr" and input your previously created .json as a parameter (example: "objectSpawnersArr": ["spawnerData.json" ])

Details

The cfgGameplay.json contains a filename array:

"objectSpawnersArr": ["mySpawnData1.json","mySpawnData2.json","mySpawnData3.json"]

Where each JSON file contains a list of objects to be spawned in the world at the start of the server mission.

Parameters

Type Parameter Details
string name Supports 2 types of input:
  • class name of the object to be spawned (for example: "Land_Wall_Gate_FenR")
  • or a p3d model path (for example: "DZ/plants/tree/t_BetulaPendula_1fb.p3d")
vector pos Position of the object in the world
vector ypr Orientation as Yaw, Pitch and Roll in degrees
float scale Multiplayer of the original object's size
bool enableCEPersistency Spawns without persistence. Once the player takes it, persistence will be enabled if available.
string customString Custom user data that can be handled on spawned item through OnSpawnByObjectSpawner method override

Custom user data handling

If you are passing some data through customString , you have to override OnSpawnByObjectSpawner on script class of spawned item to handle that data and implement the logic. See example of use in scripts - StaticFlagPole - where you can pass name of the flag that will be spawned on it, when the StaticFlagPole is spawned by ObjectSpawner.

Limitations

Only these paths are supported for p3d spawning:

  • DZ/plants
  • DZ/plants_bliss
  • DZ/plants_sakhal
  • DZ/rocks
  • DZ/rocks_bliss
  • DZ/rocks_sakhal
If the specified object does not exist (class or path to a model), log message with "Object spawner failed to spawn" will appear in the server RPT file.