Jump to content
DAYZ-CODE.RU - Создай свой игровой сервер

Настройка лута (mapgrouppos.xml, mapgroupproto.xml)


BPanda
 Share

Recommended Posts

Всем привет!
Заметил что на некоторых остовах техники не спавнится никакой лут. Хотя на многих других проектах я видел спавн лута на таких объектах.

Проверил файлики mapgrouppos.xml, mapgroupproto.xml, и реально,  классы этих объектов туда не добавлены.

Хорошо, запускаю сервер, с раскомментированными:

Please Log in or Register to see this: Code

Файлики сгенерировались. Комментирую эти строчки в init.c

 


Открываю mapgrouppos.xml, нет моего объекта (Я пытался работать с остовом БТР Land_trash_btr)

Ок. Забираю координаты в админке одного из таких БТР:

Please Log in or Register to see this: Code

Добавляю руками строчку в mapgrouppos.xml:

Please Log in or Register to see this: Code

 

В mapgroupproto.xml описываю спавн лута на этом объекте:

Please Log in or Register to see this: Code

Очищаю storage_1 в missions..., хотя наверно можно было файлики types... просто удалить. 
Запускаю Сервер, ЛУТА НЕТ.
 

Прошу помощи...

P.S. В консоли сервера отловил вот что:

Please Log in or Register to see this: Code

 

Link to comment
Share on other sites

Сорян, мой косяк.

Please Log in or Register to see this: Code

pos="7702.640625, 202.301697, 12951.303711" через запятые вставил (копипаста и невнимательность)
Вроде пошел спавн.

Ща буду дальше проверять.

Но не понятно, почему не добавляются при генерации в mapgrouppos.xml многие объекты, такие как мой подопытный Land_trash_btr.

 

Link to comment
Share on other sites

GetCEApi().ExportProxyData("0 0 0", 100000); ---- Что это, Бэрримор????
Не, ну реально?
Лааадно, 0 0 0 .....Это ЦЕНТР вашей карты? Нет? А, внезапно, должен быть. Вернее (барабанная дробь, на будущее), центр зоны с заданным радиусом (10000,в данном случае), где сработает GetCEApi().ExportProxyData.
Для Черно 7500 0 7500 и 10650 захватит всю карту...
Это для начала.
Land_trash_btr -  делаете лут для мода? Ибо ванильный нихт имеет такого обьекта.
На ванили обломки обычно StaticObj_Wreck_BMP, StaticObj_Wreck_BMP2 или Land_Wreck_Uaz,к примеру, если вписать.

Please Log in or Register to see this: Code

Или даже

Please Log in or Register to see this: Code

 в mapgroupproto.xml все. Запускаем. (вайп не нужен). Всё.....Правильно вписать надо только.Потом уже можно извращаться до степени полного мазохизма.

И да GetCEApi().ExportClusterData(); генерирует не лут,а точки спавна для "яблонь" и прочих плодоовощных объектов.

(способ работает с времён мамонтов)

 

 

Link to comment
Share on other sites

@veld

7 часов назад, veld сказал:

GetCEApi().ExportProxyData("0 0 0", 100000); ---- Что это, Бэрримор????

Это Припять, Сэр. Примерно 400 квадратных км. У них там в ванильном init.c так и стоит

7 часов назад, veld сказал:

Land_trash_btr -  делаете лут для мода? Ибо ванильный нихт имеет такого обьекта.

Это Припять, Сэр. Их ванильный БТР. Но ни его, ни многих других нет в mapgrouppos.xml, а также в mapgroupproto.xml.
Поэтому и взялся вручную прописывать. И, как я писал выше,  при экспорте эти объекты, почему-то не добавляются в экпортируемые xml.

 

Все заработало. Как и писал выше, запятые забыл удалить.

 

Остается открытым 1 вопрос по mapgroupproto.xml 

Please Log in or Register to see this: Code

А именно по range, height и flags
C range все понятно. Разброс по x
Зачем нужен height, чтобы лут в воздухе и под землей спавнился? Непонятно, зачем такое 😶
falgs, я читал где-то, или подсказал кто-то в форуме, это чтобы игнорировать height.

Заметил вот, что:
Изначально выставил range="0.01" height="0.001". Вообще ничего не заспавнилось. Как сильно можно играться с такими величинами?
Выставил:

Please Log in or Register to see this: Code

Заспавнилось, но некоторый лут в водухе немного выше или внутри БТРа

С flags еще не игрался.

Link to comment
Share on other sites

Ну раз это ПРИПЯТЬ, то ....куда уже мне с советами которым сто лет в обед. Она на других принцыпах сделана и извините не знал
Ещё раз...попробую достучатся, хотя....
GetCEApi().ExportProxyData("10000 0 10000", 29000) это строчка обработки в инит здорового человека для карты припять что бы не обрабатывать 3/4 пустоты.
Далее , эта команда автоматом генерит mapgrouppos обьектов которые ЕСТЬ в mapgroupproto. Стоило сразу внести даже "пустышку"-получили бы на выходе все координаты в mapgrouppos. Всего то стоило с правильной стороны зайти.
<point pos="-0.223217 0.452182 0.210887" ...Координаты точки спавна.
range="0.221843" height="0.325318 размеры "цилиндра" в котором заспавнится лут если размеры его модели не превышают заданные, причём при спавне может сдвинутся по горизонтали в любом направлении на размер range.
Флаги, ну их то всего два на момент сейчас...а нужно ли.



 



 

Edited by veld
  • Like 1
Link to comment
Share on other sites

  • 6 months later...

@veld

#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Bunker\\Lab1.c"

void main()
{    
//НАЧАЛО ПОГОДЫ ПЕРЕД НАЧАЛОМ ЭКОНОМИКИ------------------------
    Weather weather = g_Game.GetWeather();
    weather.MissionWeather(false);    // false = использовать погодный контроллер из Weather.c

    weather.GetOvercast().SetLimits( 0.0 , 0.0 ); // Пасмурная погода. Задать пределы
    weather.GetRain().SetLimits(0.0, 0.0); // Дождь. Задать пределы
    weather.GetFog().SetLimits(0.0, 0.0); // Туман. Задать пределы

    weather.GetOvercast().SetForecastChangeLimits(0.0, 0.0); // Пасмурная погода. Установить пределы изменения прогноза
    weather.GetRain().SetForecastChangeLimits(0.0, 0.0); // Дождь. Установить пределы изменения прогноза
    weather.GetFog().SetForecastChangeLimits(0.0, 0.0); // Туман. Установить пределы изменения прогноза

    weather.GetOvercast().SetForecastTimeLimits(10, 20); // Пасмурная погода. Установить пределы времени прогноза
    weather.GetRain().SetForecastTimeLimits(10, 20); // Дождь. Установить пределы времени прогноза
    weather.GetFog().SetForecastTimeLimits(10, 20); // Туман. Установить пределы времени прогноза

    weather.GetOvercast().Set(Math.RandomFloatInclusive(0.3, 0.4), 0, 0); // Пасмурная погода. Установить математическое случайное число с плавающей запятой
    weather.GetRain().Set(Math.RandomFloatInclusive(0.0, 0.2), 0, 0); // Дождь. Установить математическое случайное число с плавающей запятой
    weather.GetFog().Set(Math.RandomFloatInclusive(0, 1), 0, 0); // Туман. Установить математическое случайное число с плавающей запятой

    weather.SetWindMaximumSpeed(50); // Установить максимальную скорость ветра
    weather.SetWindFunctionParams(0.1, 1.0, 50); // Установить параметры функции ветра
    //INIT ECONOMY--------------------------------------
    Hive ce = CreateHive();
    SpawnObject( ); //<--- Это ваши постройки
    GetCEApi().ExportProxyData( "7500 0 7500" , 10650 ); 
    if ( ce )
        ce.InitOffline();

    //DATE RESET AFTER ECONOMY INIT-------------------------
    int year, month, day, hour, minute;
    int reset_month = 9, reset_day = 10;
    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);
            }
        }
    }
}

class CustomMission: MissionServer
{
    ref Lab1 mLab1;

    void CustomMission()
    {
        mLab1 = new Lab1();
    }
    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)
    {    
        player.RemoveAllItems();        
        EntityAI itemEnt;
        ItemBase itemBs;
        
        
        itemEnt = player.GetInventory().CreateInInventory("MilitaryBeret_Red");
        itemBs = ItemBase.Cast(itemEnt);        
        
        itemEnt = player.GetInventory().CreateInInventory("SportGlasses_Orange");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("TelnyashkaShirt");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("HikingBootsLow_Grey");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("UKAssVest_Olive");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("TTSKOPants");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("Mag_Deagle_9rnd");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("AmmoBox_357_20Rnd");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("DisinfectantAlcohol");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("TunaCan");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("TunaCan");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("RoadFlare");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory("BandageDressing");
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory( "Deagle" );
        itemBs = ItemBase.Cast(itemEnt);
        
        itemEnt = player.GetInventory().CreateInInventory( "Fruck_KnifeRUI" );
        itemBs = ItemBase.Cast(itemEnt);
    }
};

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

 

 

делаю вот таким вот образом . файл не формируется.

 mapgroupproto.xml      заполнен (файл был в комплекте с локацией)

 Сам бункер спавнится в небе над океаном, может в этом проблема?

Очищаю storage_1 в missions, она вообще не формируется

 

 

Link to comment
Share on other sites

...где ваш бункер...это не ко мне почему он ввоздухе. Может, вдруг, он для другой карты?
Может так?

Please Log in or Register to see this: Code



 

Link to comment
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
 Share

×
×
  • Create New...