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
Sign in to follow this  
S7V7G7

Help/ script init. Dayz Server (new map )

Добрый вечер

Буду в вкратце, на смотрелся различных видео и запутался.

 Создаю сервер.  Отрисовал дополнительные объекты  типо  тиса и нового алтаря.    В Dayz Editor

Как теперь правильно за скриптить кординаты   и выставить их на сервер ?     

Вы извините я конечно же попытался за скриптить  с ютуба взял скрипт 

#define DISABLE_PERSISTENCY

#include "$CurrentDir:Missions\\DayZCommunityOffline.ChernarusPlus\\core\\orig1C.c"
  
//Spawn helper function
void SpawnObject( string type, vector position, vector orientation )
{
    auto obj = GetGame().CreateObject( type, position );
    obj.SetPosition( position );
    obj.SetOrientation( orientation );
    obj.SetOrientation( obj.GetOrientation() ); //Collision fix
    obj.Update();
    obj.SetAffectPathgraph( true, false );
    if( obj.CanAffectPathgraph() ) GetGame().GetCallQueue( CALL_CATEGORY_SYSTEM ).CallLater( GetGame().UpdatePathgraphRegionByObject, 100, false, obj );
}
  Mission CreateCustomMission(string path)
{
    if ( GetGame().IsServer() && GetGame().IsMultiplayer() )
        return new CommunityOfflineServer();

    return new CommunityOfflineClient();
}

void main()
{//orig1C

далее  

Json фаил я тоже прописал.   но в  и итогде выдает ошибку 

DESKTOP-VUQEGD6, 09.05 2023 01:04:29
Can't compile mission init script'!

$CurrentDir:mpmissions\dayzOffline.chernarusplus\init.c(3): Can't find file '$CurrentDir:Missions//DayZCommunityOffline.ChernarusPlus//orig1C.c'

Runtime mode
CLI params: config serverDZ.cfg port 2302 cpuCount 4 dologs  adminlog  netlog  freezecheck  mod 


------------------------------------
DESKTOP-VUQEGD6, 09.05 2023 01:04:53

JSON ERROR:
Missing a comma or ']' after an array element.
Function: 'Error'
Stack trace:
scripts/1_Core/proto\endebug.c:92
scripts/3_Game/tools\jsonfileloader.c:29
scripts/3_Game/cfggameplayhandler.c:61
scripts/5_Mission/mission\missionserver.c:78
JM/CF/Scripts/5_Mission/communityframework\mission\missionserver.c:29
TM/Trader/scripts/5_Mission/mission\missionserver.c:60
VPPAdminTools/5_Mission/vppadmintools\missionserver.c:38

мой init. 

#define DISABLE_PERSISTENCY

#include "$CurrentDir:Missions\\DayZCommunityOffline.ChernarusPlus\\orig1C.c"
void main()
{
    //INIT ECONOMY--------------------------------------
    Hive ce = CreateHive();
    if ( ce )
        ce.InitOffline();

    //DATE RESET AFTER ECONOMY INIT-------------------------
    int year, month, day, hour, minute;
    int reset_month = 9, reset_day = 20;
    GetGame().GetWorld().GetDate(year, month, day, hour, minute);

    if ((month == reset_month) && (day < reset_day))
    {
        GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
    }
    else
    {
        if ((month == reset_month + 1) && (day > reset_day))
        {
            GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
        }
        else
        {
            if ((month < reset_month) || (month > reset_month + 1))
            {
                GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
            }
        }
    }
}
{
    void SetRandomHealth(EntityAI itemEnt)
    {
        if ( itemEnt )
        {
            float rndHlt = Math.RandomFloat( 0.45, 0.65 );
            itemEnt.SetHealth01( "", "", rndHlt );
        }
    }

    override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
    {
        Entity playerEnt;
        playerEnt = GetGame().CreatePlayer( identity, characterName, pos, 0, "NONE" );
        Class.CastTo( m_player, playerEnt );

        GetGame().SelectPlayer( identity, m_player );

        return m_player;
    }

    override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
    {
        EntityAI itemClothing;
        EntityAI itemEnt;
        ItemBase itemBs;
        float rand;

        itemClothing = player.FindAttachmentBySlotName( "Body" );
        if ( itemClothing )
        {
            SetRandomHealth( itemClothing );
            
            itemEnt = itemClothing.GetInventory().CreateInInventory( "BandageDressing" );
            if ( Class.CastTo( itemBs, itemEnt ) )
                itemBs.SetQuantity( 2 );

            string chemlightArray[] = { "Chemlight_White", "Chemlight_Yellow", "Chemlight_Green", "Chemlight_Red" };
            int rndIndex = Math.RandomInt( 0, 4 );
            itemEnt = itemClothing.GetInventory().CreateInInventory( chemlightArray[rndIndex] );
            SetRandomHealth( itemEnt );

            rand = Math.RandomFloatInclusive( 0.0, 1.0 );
            if ( rand < 0.35 )
                itemEnt = player.GetInventory().CreateInInventory( "Apple" );
            else if ( rand > 0.65 )
                itemEnt = player.GetInventory().CreateInInventory( "Pear" );
            else
                itemEnt = player.GetInventory().CreateInInventory( "Plum" );

            SetRandomHealth( itemEnt );
        }
        
        itemClothing = player.FindAttachmentBySlotName( "Legs" );
        if ( itemClothing )
            SetRandomHealth( itemClothing );
        
        itemClothing = player.FindAttachmentBySlotName( "Feet" );
    }
};

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

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Тиссы, Алтарь..аха,а сам буровую спавнит ))) При словах "брал с ютуба"-там и спрашивайте....
В Эдиторе есть вариант ЭКСПОРТИРОВАТЬ ваш маппинг в файл по вашему желанию, от "внутря инита" до "json" и "dze".
Если у вас ваш маппинг имеет вид в файле
SpawnObject( "Land_misc_chickenCoop", "14833.930664 8.400002 11362.537109", "80.999977 0.000000 0.000000", 1);   (на концовку пока не смотрите)
То создаём в mpmissions\dayzOffline.chernarusplus или что у вас там, папку "Bulgakter" и в ней текстовый файл. Меняем ему расширение с .txt на .с
По типу "debet.txt" на "credit.c"
Внутрь его вставляем.
 

void SpawnObject(string type, vector position, vector orientation, float scale = 1.0)
{
    Object obj = GetGame().CreateObjectEx(type, position, ECE_SETUP | ECE_UPDATEPATHGRAPH | ECE_CREATEPHYSICS);
    obj.SetPosition(position);
    obj.SetOrientation(orientation);
    obj.SetOrientation(obj.GetOrientation());
    obj.SetScale(scale);
    obj.Update();
	obj.SetAffectPathgraph(true, false);
	if (obj.CanAffectPathgraph()) {
        GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, obj);
    } 
}
void SpawnObject()
{

И ниже фигурных строк все ваши строчки со спавном

SpawnObject( "Land_Castle_Gate", "8255.816406 469.123108 9076.629883", "-113.999947 0.000000 0.000000" );
и т.д.

После последней строчки идём на строчку вниз и печатаем
}
Это закрывающий знак.
Если у вас окончание строчек как в жёлтом варианте - с 1 или другой цифрой в конце. То следующий пункт пропускаете.
Если нет....приводите все строчки к такому виду (в нотепад++ делается как два пальца об клавиатуру).
Сохраняете файл, орёте "эврика" и три раза голым оббегаете дом. Или палату.
Идёт в ваш init.
Первой строчкой вставляете
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Bulgakter\\credit.c" 

Далее идёте ниже находите строчку void main(),после идёт фигурная скобка открытия,сей функции,а вот перед фигурной скобкой закрытия ставите
SpawnObject();
Запускаете сервер и если всё верно, получите свой алтарь.
(если в строчках спавна есть обьекты которые начинаются по типу SpawnObject( "bldr_Lamp_Halogen".......то нужно подключить мод
BuilderItems (ссылка) на ваш сервер.
Это способ "через инклюд в ините".
Просто через инит...не, я такой маразм не советую.
Если у вас ГОТОВЫЙ файл json.
Идёте в файл serverDZ.cfg и ищите строчку
enableCfgGameplayFile = 1;
Если её нет-добавляете.
Идёте в папку mpmissions\dayzOffline.chernarusplus (или что там у вас), вставляете свой файл json
Открываете файл cfggameplay.json

и в строчку 
"objectSpawnersArr": [],
Вставляете название вашего файла
"objectSpawnersArr": ["Имя вашего файла.json"],
Всё.
Про файлы dze....может кто другой обьяснит, у меня разборка подъехала.Извните.
Пжалуста.

Share this post


Link to post
Share on other sites



  • 0
Posted (edited)

Добрый вечер. Не РАБОТАЕТ.  Ошибку на 2 строчку  кода майна хотя она стандартная. также прописал

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

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

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

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

Edited by S7V7G7 (see edit history)

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

2 рым сообщением выложил  инит. и тисы.с  формат  (с  чего я начал рисовать.) и выполнять последующие  шаги  чтобы потом задавать вопросы ))  то есть сначала я это выполнял передал по видео потом вам писал. 

spacer.png

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

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

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

spacer.png

Edited by S7V7G7 (see edit history)

Share this post


Link to post
Share on other sites
  • 0

@S7V7G7 Да не делай ты через init. Разрабы уже давно добавили такую функцию как "objectSpawnersArr" в файле cfggameplay.json
 

"WorldsData":
	{
		"lightingConfig": 1,
		"objectSpawnersArr": ["spawneditor/yanov.json","spawneditor/x4.json"],
		"environmentMinTemps": [-3.0, -2.0, 0.0, 4.0, 9.0, 14.0, 18.0, 17.0, 12.0, 7.0, 4.0, 0.0],
		"environmentMaxTemps": [3.0, 5.0, 7.0, 14.0, 19.0, 24.0, 26.0, 25.0, 21.0, 16.0, 10.0, 5.0],
		"wetnessWeightModifiers": [1.0, 1.0, 1.33, 1.66, 2.0]
	},

spawneditor/yanov.json - это путь до твоего файла. (папка находится в mpmission\твоя карта
Просто через DayZEditor выгружаешь json и подключаешь тут.
json должен быть такого формата (их там два типа когда выгружаешь с DayZEditor)
 

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

{
    "Objects": [
        {
            "name": "StaticObj_Panel_Concrete_1",
            "pos": [
                126.75199890136719,
                12.745699882507325,
                947.3489990234375
            ],
            "ypr": [
                -1.7999999523162842,
                27.499605178833009,
                0.0
            ],
            "scale": 0.9999983310699463
        },
        {
            "name": "StaticObj_Panel_Concrete_1",
            "pos": [
                139.35678100585938,
                12.769057273864746,
                956.7026977539063
            ],
            "ypr": [
                88.19998168945313,
                27.498844146728517,
                0.0
            ],
            "scale": 0.9999982118606567
        }
    ]
}

 

 

Share this post


Link to post
Share on other sites
  • 0

Ты зачем то пытаешь заспавнить 2 типами сразу. Используй тот что я указал. Не трогай init.c

Share this post


Link to post
Share on other sites
  • 0

спасибо за работало. Только  теперь что делать. Тисы окей  хорошо прописались.  Алтарь  (оригинальные постройки остались)   либо снова  делать пустой лист  из джейсона  с пустой картой  я имею виду и просто 2 фаил туда приложить типо 2 карты 

 

Share this post


Link to post
Share on other sites
  • 0

@S7V7G7  Удаление существующих построек через такой способ не возможно. Если ты хочешь отредактировать еще одну локацию добавляешь еще 1 файл, либо в этом же добавляешь.

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

Вопрос, в Dayz Editor все отрисовано хорошо, на своих местах, выгружаю в json, кидаю на сервер, и все обьекты сьезжают.. уже голову сломал не могу понять почему..

Сервер у меня на Expansion.

Edited by TVStandfireRTS (see edit history)

Share this post


Link to post
Share on other sites
  • 0

вот здесь нашел  ту же проблему у парней с удалением построек говорят вот это скрипт  поможет 

    void HideObject(Object object)
    {
        if (object)
        {
            vector pos =  object.GetPosition();

            EntityFlags flags = object.GetFlags();
            object.ClearFlags(flags,true);
            //object.SetFlags(EntityFlags.INVISIBLE,true);
            object.ClearEventMask(EntityEvent.ALL);

            vector mat[4];
            object.GetTransform(mat);
            mat[3] = mat[3] - Vector(10240, 10240, 10240);
            object.SetTransform(mat);
            object.Update();

            Entity ent = Entity.Cast(object);
            if (ent) ent.DisableSimulation(true);

            if (object.CanAffectPathgraph())
            {
                vector MinMax[2];
                float objectClip = object.ClippingInfo(MinMax);
                vector objectRadius = Vector(objectClip, objectClip, objectClip);
                GetGame().UpdatePathgraphRegion(pos - objectRadius, pos + objectRadius);
            }
        }
    }

 также сылочку отсавлю,  я незнаю этот скрипт по этому спрашиваю вашего мнения про удаления   и в каком формате скрипт делать ?  подскажите  

 

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
Sign in to follow this  

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