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
BorizzK

Моды, серверные моды - последовательность загрузки и перекрытие

Предлагаю эту тему обсуждать тут

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

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

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

1. @My_Mod - клиентский - внутреннее имя My_Mod - пишет:

1) в скрипт лог Init My Mod is Loaded когда активируется

2) My Mod Test Function is Loaded когда отрабатывает функция в своем кастомном классе этого же мода

2. @My_Server_Mod - серверный - внутреннее имя AMy_Server_Mod - пишет:

1) в скрипт лог Init My Server Mod is Loaded когда активируется

2) переписываем функцию, заданную в клиентском, для отправки сообщения, заменяя ее на отправку текста My Server Mod Test Function is Loaded

 

Далее запускаю сервер

start "" "DayZServer_x64.exe" -port=2303 " "-mod=@My_Mod;" "-servermod=@My_Server_Mod;" "-config=Instance_Veteran\server.cfg" "-cfg=Instance_Veteran\basic.cfg" "-profiles=Instance_Veteran" "-user=Instance_Veteran" "-name=Server" -nologs -adminlog -freezecheck  "-bePath=Instance_Veteran\BattlEye" -FilePatching -scrAllowFileWrite -enableHT

и наблюдаю

381816840_.png.b6d846113650477d6ff407c85e6a8407.png

т.е. как мы видим, функция таки переписалась серверным модом и текст заменился на нужный. Хотя если верить записи. серверный якобы подгрузился раньше клиентского (как это может быть? тогда должна быть ошибка на класс, которого сервер не знает, поскольку клиентский еще не подгружен)

В required ничего не указано у обоих модов.

Соответственно отсюда делаю вывод, что сервер их сам авторанжирует в зависимости от известных ему функций и ставит в очередь загрузки согласно своим приоритетам

 

P.S. Перенес тему в раздел помощи, всетаки это не гайд пока что.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites



  • 0

У меня строго наоборот!!!!!!

Смотри

 

"-mod=@MODS\@OPG_Mod;" "-servermod=#SRVMODS\#BorizzK_ServerMod;#SRVMODS\#BorizzK_ServerMod_DD;#SRVMODS\#BorizzK_ServerMod_Deseases;"

 

вывод в лог

 

SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: Game: Init
SCRIPT       : ::: [OPG_Mod] Game: Init

SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Init

SCRIPT       : ::: SERVER: [BorizzK_ServerMod_DD]: World: Init
SCRIPT       : ::: SERVER: [BorizzK_ServerMod_Deseases]: World: Init

SCRIPT       : ::: [OPG_Mod] World: Init

 

меняем местами (хотя насколько помню servermod указывается после mod и в 1 10 так сервер вообще не стартовал)

 

Ну и в скрипте на всяк случай взял серверный массив в котором сервер держит список модов:

вывел его в цикле

 

SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mods array: count: 6
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [0]:ModInfo<65ccd820> >>> OPG_Mod
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [1]:ModInfo<65ccd988> >>> Livonia DLC
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [2]:ModInfo<65ccdaf0> >>> DZ
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [3]:ModInfo<65ccdc58> >>> #BorizzK_ServerMod_Deseases
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [4]:ModInfo<65ccddc0> >>> #BorizzK_ServerMod_DD
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [5]:ModInfo<65ccdf28> >>> #BorizzK_ServerMod

 

 

 "-servermod=#SRVMODS\#BorizzK_ServerMod;#SRVMODS\#BorizzK_ServerMod_DD;#SRVMODS\#BorizzK_ServerMod_Deseases;" "-mod=@MODS\@OPG_Mod;"

 

SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: Game: Init
SCRIPT       : ::: [OPG_Mod] Game: Init

SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Init

SCRIPT       : ::: SERVER: [BorizzK_ServerMod_DD]: World: Init
SCRIPT       : ::: SERVER: [BorizzK_ServerMod_Deseases]: World: Init

SCRIPT       : ::: [OPG_Mod] World: Init

 

Ну и в скрипте на всяк случай взял серверный массив в котором сервер держит список модов:

вывел его в цикле

 

SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mods array: count: 6
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [0]:ModInfo<65ccd820> >>> OPG_Mod
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [1]:ModInfo<65ccd988> >>> Livonia DLC
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [2]:ModInfo<65ccdaf0> >>> DZ
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [3]:ModInfo<65ccdc58> >>> #BorizzK_ServerMod_Deseases
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [4]:ModInfo<65ccddc0> >>> #BorizzK_ServerMod_DD
SCRIPT       : ::: SERVER: [BorizzK_ServerMod]: World: Mod: [5]:ModInfo<65ccdf28> >>> #BorizzK_ServerMod

 

я ровным счетом никера не понимаю


выходит моды обрабатываются от последнего серверного  к первому обычному - те от 5го к 0му

 

какой-то бреееед

Share this post


Link to post
Share on other sites
  • 0

Они инитятся у тебя, но это не значит что загружаются в таком порядке уже при работе сервера. Оно же видно в подгруженном массиве модов у тебя, сначала идет клиент, потом серверный список. Я как понимаю, после инициализации сервер их сам переставляет в памяти в нужном порядке, потому иниты идут в одном порядке, а обработка в памяти при работе уже самого сервера в другом совсем. Надо проверять на необходимых тебе функциях.

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

Потом в серверных впиши в той же функции, что переписываешь ее. И сравни что получится уже по этим текстовым меткам. Там как ни крути, уже порядок обработки фактический будет показан. И от этого отталкиваться. А что они при подгрузке сервера наменяли один бог их знает, так как раньше и на ; в конце строки с модами не обращал внимания движок, а теперь обращает.

Я вообще еще на 1.10 и 1.11 наблюдал весьма чудесную штуку на удаленке у знакомого при тестах, когда суешь скрипты в 5_mission и у тебя OnInit два раза отрабатывает с них, первый раз когда идет прогрузка скриптов до миссии на запуске сервера, второй раз при чтении именно миссии инита. И получалось так что один и тот же скрипт в памяти 2 раза висел. Вот чет похожее у тебя походу.

 

Share this post


Link to post
Share on other sites
  • 0

Я пробовал

дефайны клиентского в данном случае не ловятся в серверном

в 1 12 ловятся

 

Share this post


Link to post
Share on other sites
  • 0

я делал в своем серверном моде ifdef на дефайн клиентского мода со стима.

Без указания реквайр аддонс клиентского в своем серверном эти ifdef были до одного места серверу, сервер считал что нет define  в моем моде такого. Код игнорился.

Внес реквайр аддонс - все заработало.

Все это тестилось на 1.12 примерно неделю назад.

 

Так о чем речь вообще не понимаю.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 0

На 1 12 все тестилось и было норм

кстати билдэнивере в3 из стима моего у некоторых не перекрывает некоторые классы которые были перекрыты их модами - те их моды перекрывают функции в билдэнивере и все начинает работать через одно место - хотя в 1 12 работало как часы

 

мне сделать тысячи вариантов билдэнивере с реквайром на их моды?

 

ща еще тест проведу

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0
2 минуты назад, 123new сказал:

моде ifdef

Подскажите пожалуйста подробнее, что это за Ifdef? Каким образом он влияет на загрузку модов? До этого я использовал только зависимоти(рекваер аддонс). А вот про это увидел только тут..

Share this post


Link to post
Share on other sites
  • 0
Только что, BorizzK сказал:

На 1 12 все тестилось и было норм

чудеса магии прям.... Лично тестил, весь вечер на это убил. Не возможно это никак.
Серверка с этим вроде даже осталась на компе, но клиент уже 1.13 давно, так что протестить в игре проблемно.

 

Share this post


Link to post
Share on other sites
  • 0
3 минуты назад, 123new сказал:

чудеса магии прям.... Лично тестил, весь вечер на это убил. Не возможно это никак.
Серверка с этим вроде даже осталась на компе, но клиент уже 1.13 давно, так что протестить в игре проблемно.

 

У меня все на #ifdef построено и все работало как часы!!!!!!!

Спецом допустил ошибки синтаксиса

 

Запуск сервера

ругается на сервермод

исправил ошибку

на второй

исправл

на 3й

и ток потом ругается на клиентский

 

что четко говорит о том в какой последовательности они их читает

 

Share this post


Link to post
Share on other sites
  • 0

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

 

108947043_.png.6290d11cb0ef90ec1dc3f77c4bd09d86.png

Share this post


Link to post
Share on other sites
  • 0

Что и требовалось доказать

 

886118554_.png.308ae36afdaeaf30f04615750ca21e2b.png

BorizzK_ServerMod\scripts\4_World\Entities

1853094155_.png.561499c99d98a2ca8ad76313ebb9214f.png

 

OPG_Mod\scripts\4_World\Entities

408807981_.png.fc0b68e28b2e08933a920a0701e7354b.png

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

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Переименование серверного мода то же ничего не дало

420633856_.png.825183a7d1ccb9f58d79e9e5d4d68929.png

Share this post


Link to post
Share on other sites
  • 0

Вот такая последовательность вызовов
SCRIPT       : 2.InitItemVariables:ItemBase:BorizzK_Servermod
SCRIPT       : 1.ItemBaseOPG:ItemBase:OPG_Mod
SCRIPT       : 1.InitItemVariables:ItemBase:OPG_Mod

 

вот этот

1659151076_.png.336d3b2b31b671643cad7eab221001da.png

должен перекрыть этот

 

1781786666_.png.36acbef73c5e82545bf931d241583836.png

Но как видим второй перекрывает первый

Полная лажа

 

 

Share this post


Link to post
Share on other sites
  • 0

Вобщем потыркался

Я умываю руки

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

Share this post


Link to post
Share on other sites
  • 0

Понятия не имею как ваши ifdef могут работать на той же 1.12, это из разряда мистики. Ниже обещанный тест с старой доброй 1.12.

Использую файлы:

1) @Breachingcharge  с модом @CF для него
2) сервермод-пустышка, который выдает лишь 1 строку лога если ifdef сработает в виде кода в 5_Mission:

#ifdef BREACHINGCHARGE
modded class MissionServer
{
	private string MyTestVar;
	
	override OnInit()
	{
		super.OnInit();
		Print("@AMy_Server_Mod Loaded!");
	}
}
#endif

Тест 1: Запускаем сервер и ....

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

как видим, чуда не случилось. Файлы и

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

Тест 2: Теперь добавляем в required addons имя 1

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

собственно код исполнился

Файлы и

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

Каким оно там образом у вас может работать в 1.12 понятия не имею, это из разряда невозможного. Хотите сами проверьте, мне не жалко. Соответственно после этого в 1.13 для меня ничего ровным счетом не поменялось.

Весь сервер 1.12 с файлами тестов и модами выше написанными: https://dropmefiles.com/UGhVP

Папки 1 и 2 в архиве это что скинул выше.

Потому сама проблема мне искренне не ясна вообще. Могу разобрать по удаленке вместе это, либо изучить ваши файлы сам, чтобы понять что вы хотите сделать, но из выше написанного проблемы я не увидел. Потому если надо что-то - надо пытаться на каких-либо файлах-примерах изучить это, чтобы я сам например мог это запустить ручками.

2 часа назад, BorizzK сказал:

что четко говорит о том в какой последовательности они их читает

На этот счет уже сказал выше, читать и исполнять он их может по разному, так что чтение не показатель.

И да кстати:

2 часа назад, BorizzK сказал:

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

 

108947043_.png.6290d11cb0ef90ec1dc3f77c4bd09d86.png

overridR серьезно?  🤣 Не удивлен ошибке)

 

2 часа назад, thessend сказал:

Подскажите пожалуйста подробнее, что это за Ifdef? Каким образом он влияет на загрузку модов? До этого я использовал только зависимоти(рекваер аддонс). А вот про это увидел только тут..

с++ мотоды #define и @ifdef изучите, в DayZ они тоже имеются в скриптах

Share this post


Link to post
Share on other sites
  • 0

Ну сервеный мод на VPPAdminTools ловит его дефайны и с ним работает а без него просто не копилится

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0

На
подключи админку VPP

этот как серверный

там немного фиксов внутрянки админки

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

Share this post


Link to post
Share on other sites
  • 0
1 час назад, BorizzK сказал:

На
подключи админку VPP

этот как серверный

там немного фиксов внутрянки админки

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

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

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

start "DayZ" "DayZServer_x64.exe" -port=2302 "-mod=@CF;" "-servermod=@BorizzK_VPP_Tools_Mod;" -config=Instance_1\server.cfg -cfg=Instance_1\basic.cfg -profiles=Instance_1 -user=Instance_1 -name=Server -dologs -adminlog -freezecheck -FilePatching -scriptDebug=true

оба 1.13 чистая

 

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

 

Оказалось все довольно просто )))))))) но нужен 1 раз реквайр

в серверном реквайр от клиентского и серв начинает вроде адекватно читать

 

ЗЫ у меня там дефайны просто неправильные потому и метсами недефайнед
 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0
1 час назад, BorizzK сказал:

VPP ADmin Tools подключи

 

 

в 1 тесте подключен, во 2 отключен)

выше смотри)

9 минут назад, BorizzK сказал:

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

 

Оказалось все довольно просто )))))))) но нужен 1 раз реквайр

в серверном реквайр от клиентского и серв начинает вроде адекватно читать

 

ЗЫ у меня там дефайны просто неправильные потому и метсами недефайнед
 

ну я тебе про это и говорил изначально

Share this post


Link to post
Share on other sites
  • 0
4 минуты назад, 123new сказал:

в 1 тесте подключен, во 2 отключен)

выше смотри)

ну я тебе про это и говорил изначально

 

Те получается - достаточно в клиентский свой пак положить например мод пустышку

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

 

ну хоть так

хотя цЫрк с коняхами

 

было же - клиентские - тот что правее перекрывает тот что левее

серверные - перекрывают все клиентские и перекрывают тот что правее те что левее и не нужно никаких реквайров

 

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Тааак, а теперь все это медленно и два раза для всех остальных на пальцах.

Share this post


Link to post
Share on other sites
  • 0
2 минуты назад, paranoyk сказал:

Тааак, а теперь все это медленно и два раза для всех остальных на пальцах.

систематизируем

обрисуем примерами

тут опубликуем

и так бошка квадратная

 

Share this post


Link to post
Share on other sites
  • 0
9 часов назад, BorizzK сказал:

 

Те получается - достаточно в клиентский свой пак положить например мод пустышку

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

 

ну хоть так

хотя цЫрк с коняхами

 

было же - клиентские - тот что правее перекрывает тот что левее

серверные - перекрывают все клиентские и перекрывают тот что правее те что левее и не нужно никаких реквайров

 

 

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

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

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