следующий код в инит вставляем в самый верх или самый низ файла, либо отдельным файлом сохраняем его и добавляем этот файл в инит через include. Код:
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));
}
перед закрывающей скобкой мейн в ините
SpawnObject( "Land_Garage_Office", "12894.611328 173.905670 4465.360352", "0.000000 0.000000 0.000000" );
GetCEApi().ExportProxyData( "7500 0 7500" , 10000 ); // <-- об этой строке почитай 4 часть!!!
пример для чистого сервера без модов: init.rar
пример для expansion mod сервера на момент написания: init expansion.rar
запускаем сервер и ждем некоторое время. Появится вот такая запись в окне сервера. это значит, что экспорт данных произведен (какой экспорт - читаем 4 шаг в 1 сообщении вот этой темы)
по показанному выше пути появится файл экспорта. Если мы поищем координаты объекта нового, что мы указали, то увидим их
а в оригинальном файле, разумеется, нет
С expansion, как видите, тоже работает:
Далее дело за малым - закомментировать строчку
GetCEApi().ExportProxyData( "7500 0 7500" , 10000 ); // <-- об этой строке почитай 4 часть!!!
в ините, дабы она не нагружала и не тормозила загрузку сервера лишними операциями экспорта
И, собственно, экспортированный ранее xml поместить в корневую папку миссии сервера, с заменой старого.
Информацию по поводу экспорта построек, а также и деревьев и т.п. можете почитать сами на официальной странице вики по серверу игры: https://community.bistudio.com/wiki/DayZ:Central_Economy_setup_for_custom_terrains