Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

Рекомендованные сообщения

И тем не менее ты добавил в свою сборку

 

 

Но не так давно утверждал что это лишнее, что клиентам от этого хуже.

Двойные стандарты.

Если ты не через строку читал, то там написано, что:

1. Скрипт отключен в моей сборке.

2. Скрипт основан на скрытии объектов, и отключении симуляции, а не на удалении-создании.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах



Если ты не через строку читал, то там написано, что:

1. Скрипт отключен в моей сборке.

2. Скрипт основан на скрытии объектов, и отключении симуляции, а не на удалении-создании.

 

А это как бы не в счет?

 

Добавлен скрипт, скрытия, или отображения объектов в зависимости от дистанции до персонажа.

 

Хорош уже  :biggrin:

Изменено пользователем Ramond (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1000 объектов в динамике (сейфзоны,доп. постройки) , онлайн 30 == десинхрон жуткий, спавн игроков под тестурами построек, трупы проваливаются в текстуры.

Двери (бараки, ангары и т.д) по-умолчанию закрыты для всех, и открытие действует только для себя, то есть игрок рядом видит что чел пробежал сквозь дверь == репорты админу пишут.

Лестницы (по-которым взбираться) - когда игрок хватается за лестницу-он пропадает из виду у всех. Когда же он отцепится-появляется у всех на виду уже в конце лестницы == игрок тп, репорт админам.

Лут спавнится все таки один на всех, тк он глобал.

Боты, боты не видят локальные постройки у игрока-то есть будут шить несмотря на то что ты у себя в игре за бетонкой-и убьют.

----

У себя я оставил на игрока палатки / различный мусор который для красоты / деревья / здания (где нет лестниц, этажей). Все это спавнится у игрока при заходе по всей карте,независимо от положения. Частично разгружается сервер засчет этого )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1000 объектов в динамике (сейфзоны,доп. постройки) , онлайн 30 == десинхрон жуткий, спавн игроков под тестурами построек, трупы проваливаются в текстуры.

Двери (бараки, ангары и т.д) по-умолчанию закрыты для всех, и открытие действует только для себя, то есть игрок рядом видит что чел пробежал сквозь дверь == репорты админу пишут.

Лестницы (по-которым взбираться) - когда игрок хватается за лестницу-он пропадает из виду у всех. Когда же он отцепится-появляется у всех на виду уже в конце лестницы == игрок тп, репорт админам.

Лут спавнится все таки один на всех, тк он глобал.

Боты, боты не видят локальные постройки у игрока-то есть будут шить несмотря на то что ты у себя в игре за бетонкой-и убьют.

----

У себя я оставил на игрока палатки / различный мусор который для красоты / деревья / здания (где нет лестниц, этажей). Все это спавнится у игрока при заходе по всей карте,независимо от положения. Частично разгружается сервер засчет этого )

Все правильно, с головой подходить надо к выбору того, что добавлять в динамические объекты. Насчет десинхрона, впервые слышу, ни разу такого не было. 

Идеально подходит для оформления торговых зон, различных неинтерактивных сооружений/объектов, дорог (в примерах публиковал дорогу в Шраттен). Чтобы боты не простреливали, достаточно обнести эти объекты кубами с песком: "Land_HBarrier_large" или "Base_WarfareBBarrier10xTall" и подключить их стандартным способом. Если с умом все расставлять, все будет ок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А это как бы не в счет?

 

 

Хорош уже  :biggrin:

Боже, вы правда читать не хотите или через строчку?

 

Скрипт добавлен, но отключен по умолчанию.

 

  • *Оба скрипта выше, вынесены в единый скрипт. В сборке по умолчанию отключены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Боже, вы правда читать не хотите или через строчку?

 

Скрипт добавлен, но отключен по умолчанию.

 

  • *Оба скрипта выше, вынесены в единый скрипт. В сборке по умолчанию отключены.

То что отключено по умолчанию не исключает того что скрипт добавлен.

Похоже у некоторых чувство гордости не позволяет признать этот факт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То что отключено по умолчанию не исключает того что скрипт добавлен.

Похоже у некоторых чувство гордости не позволяет признать этот факт.

Какой факт?

Ты дурачек?

1. Это скрипт не с данной темы, - отмотай сообщения по выше, и посмотри скрипт который выкладывал я, и что писал по этому поводу.

2. Сборка идет для людей, и мб кому и пригодится, лично я считал и считаю даже свой скрипт скрытия(А НЕ УДАЛЕНИЯ, если ты до сих пор не догнал),  - УГ.

Остальное лирика и попытка выдать желаемое за действительное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Какой факт?

Ты дурачек?

1. Это скрипт не с данной темы, - отмотай сообщения по выше, и посмотри скрипт который выкладывал я, и что писал по этому поводу.

2. Сборка идет для людей, и мб кому и пригодится, лично я считал и считаю даже свой скрипт скрытия(А НЕ УДАЛЕНИЯ, если ты до сих пор не догнал),  - УГ.

Остальное лирика и попытка выдать желаемое за действительное.

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

1. Речь не о том, откуда скрипт, а о самом принципе его работы. 

2. Обязательно пригодится!

Собственно чем ты и занимаешься.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

лично я считал и считаю даже свой скрипт скрытия(А НЕ УДАЛЕНИЯ, если ты до сих пор не догнал),  - УГ.

а продаете как очень даже крутой продукт. Ценник то обдуманный? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

1. Речь не о том, откуда скрипт, а о самом принципе его работы. 

2. Обязательно пригодится!

Собственно чем ты и занимаешься.

До вас до сих пор не дошло что суть вашего скрипта и ультимовского по сути можно назвать одним и тем же, но принцип действия совершенно разный.

Если вас так припекает сравнивать ваш и ультимовский, то у Ультимы лучше.

 

Вам дали четко пояснить. Что постоянно удалять, потом ставить объекты сугубо плохо клиенту. Что собственно и делается в вашем скрипте.

У Ультимы объекты скрываются, а не удаляются.

 

Подучите кодовую для начала.

 

 

 

а продаете как очень даже крутой продукт. Ценник то обдуманный? 

Чего? Ничего что цена идет за всю сборку, а скрипт вам итак выше выложили открыто. Что за ересь вы несете вообще?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Сам скрипт:

 

[] spawn
    {
        diag_log("[#Ultima]: Запуск скрипта скрытия, или отображения объектов...");
        uiSleep 90;    //    Ожидание пролага и стабилизации.
        diag_log("[#Ultima]: Скрипт скрытия, или отображения объектов запущен.");
        Private ["_refreshDistance", "_visualDistance", "_allObj", "_lastPos", "_mapCenter", "_mapRadius", "_objs", "_hide", "_visual"];
        //    Х метров - Расстояние обновления видимости объектов (Если игрок удалился от точки отсчета на X метров - обновить точку отсчета, и обновить видимость объектов)
        _refreshDistance = 200;
        //    Дальность прорисовки объектов от игрока за вычитанием _refreshDistance
        _visualDistance  = 800;
        //    Массив объектов которые можно и необходимо скрывать\отображать
        _allObj          =
            [
                "AllVehicles"
                ,"BuiltItems"
                ,"DZE_Base_Object"
                ,"DZE_Housebase"
                ,"House"
                ,"ModularItems"
            ];
        _lastPos   = [-1000, -1000, -1000];
        _mapCenter = getMarkerPos "center";
        _mapRadius = _mapCenter select 0;
        while {true} do
            {
                if ( (player distance _lastPos) > _refreshDistance ) then
                    {
                        _lastPos = getPos player;
                        //_hide    = 0;
                        //_visual  = 0;
                        _objs = nearestObjects [_mapCenter, _allObj, _mapRadius];
                        {
                            if ( (player distance _x) < _visualDistance ) then
                                {
                                    _x hideObject false;
                                    //_visual = _visual + 1;
                                }
                            else
                                {
                                    _x hideObject true;
                                    //_hide = _hide + 1;
                                };
                        } forEach _objs;
                        //diag_log(format["[#Ultima]: Скрыто за цикл: %1. Отображено за цикл: %2.", _hide, _visual]);
                    };
                if ( (vehicle player) == player ) then
                    {uiSleep 5;}
                else
                    {uiSleep 2;};
            };
    };

 

P.S. Оптимизацией не занимаюсь, ни платно ни бесплатно.

 

 

 

Подскажите а куда подключать этот скрипт в миссию или в сервер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чего? Ничего что цена идет за всю сборку, а скрипт вам итак выше выложили открыто. Что за ересь вы несете вообще?

А вы стали продавцом? или может создателем. С вами все ясно, Господа. Форум съели деньги, и обычному человеку если не хочешь платить, тут нечего делать.

И тему мою вы зря удалили. Только подтвердили мою теорию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А вы стали продавцом? или может создателем. С вами все ясно, Господа. Форум съели деньги, и обычному человеку если не хочешь платить, тут нечего делать.

И тему мою вы зря удалили. Только подтвердили мою теорию.

Полнейшую ересь несете, что смешно...

 

1. Топайте в гайды - там все бесплатно. Сложно представить вам, но это так.

2. Скрипт который вы просили Ультима не хочет делать что платно, что бесплатно. Это его желание, а вы все равно лезете в попрашайки.

Вам была предложена сборка, где стоит скрипт. Не хотите брать, не надо.

Если скрипта нету в открытом доступе, значит так посчитали нужным.

3. Если ультима не выкладывает свои старые сборки, то это его право.

4. Полезная поговорка есть "Поспешишь - людей насмешишь" так вот это как раз про вас.

 

Раз уж вы решили своей головушкой что форум таков, то оставайтесь тогда со своим мнением при себе и можете уходить с форума.

Сборку удалил т.к. это слив платного контента пользователя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

1. Речь не о том, откуда скрипт, а о самом принципе его работы. 

2. Обязательно пригодится!

Собственно чем ты и занимаешься.

В А2, как и в любой игре, есть понятие - буферизация. И оно УЖЕ реализовано в самом клиенте А2\А3\Линейки и любой игре с большими пространствами.

И все эти скрипты, ни что иное, как попытка изменить заданный буфер, через изобретение велосипеда.

Открой умные книжки и прочитай, про буферизацию, про прокси объекты и т.п. вещи, а не пори откровенную чушь на форуме.

О каком принципе работы ты тут пишешь? И к чему??? Дураки читают через строку, как впрочем и ты.

Скрипту который выложил я почти 3 года.

Выложенному скрипту с форума - год от силы.

В сборке у меня есть лишние и мне лично абсолютно не нужные вещи, такие как переключатель режима ПВП\ПВЕ и т.п.

И то что вставил свой же скрипт в свою же сборку, - для пользователей сборки - возможно будет "полезно", - а от меня не убудет.

Мое мнение и по скрипту в теме, и по выложенному уже озвучил.

Доказательно изложил, что ты тормозишь?

 

а продаете как очень даже крутой продукт. Ценник то обдуманный? 

Непреодолимое желание посмотреть, что там в карманах у других?

 

P.S. Более в эту тему не пишу. Бесполезное занятие, пояснять, что то тому кто в этом не понимает, но убежден, что прав.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

hideObject только скрывает объекты. Фактически толку от него в плане повышения фпс нет. Тестанув вышеуказанный скрипт, из 10500 объектов оставило почти 90, при этом сопуствовал жесткий пролаг изза forEach внутри которого нет ни одной задержки. Без скрипта 101-102 фпс, со скриптом 95-98 + проседания до 4 фпс при скане всех объектов примерно на 5-6 сек (10500 объектов, это пустая карта) каждые 200 метров пробежки.

--------------------

Собственно и с динамическими постройками такая же беда-перебор массива, приводит к систематичному проседанию фпс.

Была идея, использовать вложенные массивы, например, для определенного набора объектов, вроде рынка на старом, указать контрольную точку, по которой скрипт сверял бы, далеко ли до того места, вместо грубого перебора тысяч строк на предмет приближения к каждой из них.

-----

Для такого рода данных, советуют использовать диррективу препроцессора #define , оно не будет занимать память необходимую для работы скриптов насколько я понял )

_array = [
	//[[координата построек (середина)],[массив с постройками,или переменная с массивом построек, да что душе угодно ) ]]
	[[123,343],[ // старый собор
		["CampEast",[4817.7617, 2580.8306],28.873245,0],
		["Land_loco_742_blue",[5305.603, 2051.1875,0.55121863],-87.403763,0],
		["Land_ladder_half_EP1",[5164.6465, 2329.7097,0.97447604],-141.17593,0],
		["Land_ladder_half",[5163.8184, 2327.1565,5.2412586],124.30254,0],
		["Land_ladder_half",[5174.2129, 2378.7795,2.0226817],-62.233204,0]
	]],
	[[234,345],[ // клен
		["Land_wagon_box",[5319.2305, 2050.6187,0.6837486],92.361481,0],
		["C130J_wreck_EP1",[5235.7261, 2205.3066,5.7220459E-6],-58.723248,0],
		["Land_Misc_Cargo1E_EP1",[4803.7524, 2537.6277,1.9073486E-5],-20.510166,0],
		["Misc_Cargo1Bo_military",[4803.1108, 2543.7866,5.7220459E-6],85.460602,0],
		["Misc_Cargo1Bo_military",[4635.7705, 2551.0186, -9.5367432e-007],-59.507813,0]
	]],
	[[234,345],[ // баш
		["hruzdum",[4555.9785, 2536.4673, 1.1444092e-005],131.4548,1],
		["MASH_EP1",[4639.1582, 2479.5439,-0.028211575],-1.9725144,0],
		["MASH_EP1",[4623.9663, 2483.1982,-0.021968435],-338.3389,0],
		["MASH_EP1",[4631.2051, 2480.6555,-1.4305115E-5],10.552571,0]
	]],
	[[234,345],[ // аэро
		["Misc_cargo_cont_small",[4861.0137, 2518.146,-0.11008263],-50.229626,0],
		["Misc_Cargo1Bo_military",[4643.4106, 2557.5537,0],0,0],
		["Misc_cargo_cont_small",[4644.814, 2548.072,0.042614937],-50.229626,0],
		["CampEast_EP1",[4808.4731, 2306.6182,-8.1062317E-6],-42.360611,0]
	]]
];
Изменено пользователем svalom (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

hideObject только скрывает объекты. Фактически толку от него в плане повышения фпс нет. Тестанув вышеуказанный скрипт, из 10500 объектов оставило почти 90, при этом сопуствовал жесткий пролаг изза forEach внутри которого нет ни одной задержки. Без скрипта 101-102 фпс, со скриптом 95-98 + проседания до 4 фпс при скане всех объектов примерно на 5-6 сек (10500 объектов, это пустая карта) каждые 200 метров пробежки.

--------------------

Собственно и с динамическими постройками такая же беда-перебор массива, приводит к систематичному проседанию фпс.

Была идея, использовать вложенные массивы, например, для определенного набора объектов, вроде рынка на старом, указать контрольную точку, по которой скрипт сверял бы, далеко ли до того места, вместо грубого перебора тысяч строк на предмет приближения к каждой из них.

-----

Для такого рода данных, советуют использовать диррективу препроцессора #define , оно не будет занимать память необходимую для работы скриптов насколько я понял )


Для перебора 10 000 объектов, задержка не нужна.

Скорее всего сама процедура hide\show грузит поток.

Ну можно вставить счетчик скрытых объектов внутри фореач, и после каждой сотни делать uiSleep 0.1

Кстати у меня не проседал так фпс при скане.

А по поводу повышения фпс - я так и писал. Толку реально - "кот наплакал".

Как и с удалением, созданием, так и со скрытием, отключением симуляции - все эти процедуры весьма прожорливы, и в А2 уже заложена буферизация путем выставления дальности видимости на сервере.

 

Попробуй поставить дальность в 500м и дальность в 3км - разница ощутима сразу же, без всяких пролагов.

 

Лично для меня очевидный вывод -

Не надо юзать всякие скрипты для буферизации в А2ОА.

По поводу ботов -

Ставить триггеры бесполезная опция - обоснованно:

Если карта огромная(Сауэрленд к примеру), и миссия всего одна, то вполне можно попробовать серверный триггер для ботов.

В любом другом случае пользы это не принесет - самая распространенная карта - Черно, всего то ~6.5км в диаметре.

Как следствие при наличии хотя бы 3 миссий, (радиусы триггеров будут 3 по 1.5км в диаметре) львиная доля карты подпадет под зону триггера.

При кол-ве игроков хотя бы 10-15 на сервере, в каждом триггере, всегда кто нибудь будет. Так что - лишняя волокита.

 

P.S. Если железо позволяет, то безголовый клиент может решить ооочень много проблем и сильно добавить фпс. Все остальное - ерунда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

P.S. Если железо позволяет, то безголовый клиент может решить ооочень много проблем и сильно добавить фпс. Все остальное - ерунда.

 

как это сделать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

переписать системы мисиий например, чтобы они обрабатывались клиентом паралельно серверу. где то видел готовые варики, но, они устаревшие, и заброшены )

Изменено пользователем svalom (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как сделать безголовый клиент ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

После проги всё кривое. Что то выше, что то ниже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за гайд! Буду тестировать.

Изменено пользователем anap (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Фпс действительно поднимает, но есть баги. Например, игрока приехал в трейд на большой скорости и у него не успело прогрузить обьекты, точнее они вообще перестали прогружаться у него. Тупо стоят торговцы, да и покупать транспорт он тоже не сможет, ибо маркер heli в динамике

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • Автор: CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
    • Автор: 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: 123new
      Много вопросов на данную тему наблюдаю от новичков, попробую прояснить немного сей вопрос.
       
      Предположим. что вы уже знаете на каких координатах вам надо спавнить определенное здание или объект\животное\бота, с каким углом поворота. И так. эта тема для вас.
       
      Сразу делаю пометку, метод, который добавили нам разработчики игры в патче 1.15, очень хорошо описал наш товарищ в сообщении форума:
      Рекоммендую вам использовать именно его!
      Ниже опубликованы старые методы.
       
      Если вы с расставили их с модифицированной версии Offline (Offline by Arksenor это называется), то вы получили и нашли код вида:
      GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13260.040039 0.0 3670.984131").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13262.756836 0.0 3645.180176").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13265.441406 0.0 3619.531982").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13268.124023 0.0 3593.995361").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13270.844727 0.0 3568.186523").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13273.514648 0.0 3542.561279").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13276.195313 0.0 3517.048828").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13278.399414 0.0 3496.097900").SetOrientation("-96.000000 0.000000 0.000000"); Здесь (по примеру первой строки) 1 значение в скобках - id постройки/объекта, 2 значение - координаты в формате X Y Z, разделенные пробелом, 3 - значение поворота примерно в том же формате.
      Как это делать в Offline - статья от автора Offine:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Add-custom-objects-to-your-server-or-mission
       
      И так, инструкция:
      1. Добавляем в начало init.c файла в вашей mpmissions следующий код:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\spawn_buildings.c" 2. Создаем в папке вашей активной mpmissions файлик spawn_buildings.c и заполняем его следующей информацией.
      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)); } 3. Открываем созданный нами файл,  и в конце файла дописываем следующее:
      void SpawnAirfeeldBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } void SpawnKrasnoBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } Где после void - название функции идет, а между открытыми скобками вызов спавна самих зданий на указанных координатах.
      На примере 1 строки:
      Land_CementWorks_ExpeditionB - id постройки (type)
      13251.875000 0.0 3748.525879 - координаты в формате X Y Z
      -96.000000 0.000000 0.000000 - значение поворота в формате X Y Z
      Внимание: id постройки и координаты в примере указаны не верные и требуют подключения дополнительной модификации для корректной работы!!! Координаты не соответствуют названию функции!!!
      4. открываем в MpMissions в папке с вашей активной миссией init.c и перед ЗАКРЫВАЮЩЕЙ скобкой '}' дописываем нужную нам функцию (это будет активация спавна на карте):
      SpawnAirfeeldBuildings(); 5. Готово, Запускайте сервер, и в scripts.log вы увидите процедуру спавна ваших зданий и увидите, спавнятся ли они на карте или нет.
      Можно написать конечно и более готовую, универсальную систему спавна на карте со считыванием конфигурации из файла, но я считаю это лишним.
       
      Как заполнить добавленные здания лутом на карте:
      вариант 1:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Enable-loot-for-custom-placed-objects
      вариант 2: вручную заполнить xml-файл  mapgrouppos.xml в mpmssions данными о местоположении зданий, где rpy - значение поворота здания в формате Z Y X
       
      С помощью данной статьи вы можете разместить любой элемент игры(постройку, животное, зомби, бота), доступный к спавну через любую модификацию-админ. панель. Очень полезный мод в этом смысле BuilderItems, с его помощью можно творить поистину интересные локации!
    • Автор: Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.