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

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

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

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

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

Перезапись частички мода своим кодом

Вопрос такого плана.

Имеется мод, скрипт которого имеет вот такую часть:

modded class DayZPlayerImplement extends DayZPlayer
{
	// тут куча коду
	void traderServerLog(string message)
	{
		TraderMessage.ServerLog("[TRADER] Player: (" + this.GetIdentity().GetName() + ") " + this.GetIdentity().GetId() + " " + message);
	}
	// тут куча коду
}

делаю на стороне сервера свой скрипт в той же секции родных скриптов игры (не в виде мода, просто скрипт). Скрипт вида:

modded class DayZPlayerImplement extends DayZPlayer
{
	override void traderServerLog(string message)
	{
		super.traderServerLog(message);

		private PlayerIdentity p_Identity = this.GetIdentity();
		if (p_Identity)
		{
			string name_player = p_Identity.GetName();
			string UID_player = p_Identity.GetPlainId();
			vector pos_object = this.GetPosition();	
			private string message_log = name_player + "(steam64id=" + UID_player + ",pos=" + pos_object.ToString() + ") " + message;
			Print(message_log);
		}
	}
	
}

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

 

Подскажите, каким образом корректно переписать такой Modded код родного класса игры из мода своим с сохранением оригинального вызова?

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


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

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

  • 0

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

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


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





  • 0

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

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


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

123new код ошибки можешь скинуть?
а лучше сам код который пишешь и который вызывает данную ошибку

 

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

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


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

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

 

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


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

Ну пока выход тока один я вижу, либо мод-структурой подцепляться к другому моду, который хочу менять, либо лепить костыли с переписыванием функции TraderMessage.ServerLog из класса TraderMessage, иными словами менять в другом месте саму функцию, и на ее основе выцеплять нужные данные. Это более геморно и заморочно.
Первая вариация более универсальна и корректна будет, но есть один минус - параметр equalmodrequired  - т.е. или я правлю и делаю мод, который распространяю на сервер и клиент всем, или не делаю. Вариаций чисто серверного мода, как в арме параетр -servermod нету здесь.
Спасибо за прояснение.

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


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

123new Твой код компилится раньше чем код трейдера - отсюда и ошибка
Ты свой мод должен загружаться ПОСЛЕ трейдера

 

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


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

123new А откуда она будет определена то? - Ты че решил замоддить замодденое?)))))

Веселый ты чувак) Да еще и без мода...

В родном DayZPlayerImplement нет никакой процедуры - traderServerLog, вот тя и шлют лесом.

 

 

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


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

123new Чтобы это решать НЕ тупым переписыванием авторского мода, - автор сего творения должен был создать класс свой, и впихать его вызов внутри замодденого. А ты бы вменяемо замоддил его класс(объявил бы зависимость и т.д.), и перекрыл бы процедуру.

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
17 минут назад, NoNameUltima сказал:

123new А откуда она будет определена то? - Ты че решил замоддить замодденое?)))))

Веселый ты чувак) Да еще и без мода...

В родном DayZPlayerImplement нет никакой процедуры - traderServerLog, вот тя и шлют лесом.

 

 

это я уже понял еще черти когда, спасибо что глаза открыл, тока это понял уже давно и сам.

15 минут назад, NoNameUltima сказал:

123new Чтобы это решать НЕ тупым переписыванием авторского мода, - автор сего творения должен был создать класс свой, и впихать его вызов внутри замодденого. А ты бы вменяемо замоддил его класс(объявил бы зависимость и т.д.), и перекрыл бы процедуру.

 

согласен, но это автор мода, и увы, тут уже он решает что у него и как)

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

123new Твой код компилится раньше чем код трейдера - отсюда и ошибка
Ты свой мод должен загружаться ПОСЛЕ трейдера

 

понял

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


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

123new Фигня все то, что ты там позже, или раньше запустишь, - тут дело не в зависимости.

 

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


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

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

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


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

123new Моды грузятся не как попало, а от зависимостей. Пропиши в requiredAddons то чего ждать, и будет ждать. И кстати вполне возможно что заоверрайдишь процедуру... хер его знает как там в дайзе.

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


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

NoNameUltima не, ну с модом то это понятно. Интересовался как раз именно возможностью без мода, так как мод - это автоматически доп заморочка рассылки клиентам с 'equalmodrequired=1;', тогда как изменения могут быть нужны лишь для серверных функций.

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


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

123new Заморочки эти только по вине разрабов, которые в очередной раз динамят -serverMod ключ.

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


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

NoNameUltima факт. Кстати, кто-то уже догадался на багтрекере про эту фигню им предложить? Там же можно присоединяться к дискуссии и просить всем.

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


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

NoNameUltima замоддить заможеное, лехко

Судя по докам  богемии

 

Я задавал им вопрос

 

1. Мод должен компилиться позже чем то что моддится

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

3. Моддить класс который это позволяет можно скок угодно, как и перекрывать функции

 

Ну и пример есть в их доке по синтаксису, в самом низу

 

https://community.bistudio.com/wiki/DayZ:Enforce_Script_Syntax

 

 

 

 

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: 123new
      Вопросик такого плана.
      В патче 1.4 появился новый функционал в игре.
      У некоторых модов в гл. меню идут картинки. Как вот например такое.

      Если свериться с вики
      https://community.bistudio.com/wiki/DayZ:Modding_Structure
      то должны быть в модах картинки формата .tga.

      Открываю для примера моды Zomberry admin tool или CarHorn, где есть данные картинки.
      В модах не наблюдаю файлов в таком формате, а вместо них наблюдаю неведомый мне формат edds и edds.meta (что подозреваю взаимосвязанно). Также, не наблюдаю прописи таковых в конфиге мода.
      Вопрос - как самому создавать такие картинки для своих модов и верно их прописывать? Ни одного гайда в сети нне нашел
    • Автор: dosserua
      Здравствуйте.
      Я знаю что люди каким-то чудом делают что при открытие их PBO вылазит ошибочка и хрен что скопируешь или откроешь оттуда.
      Так вот, подскажите пожалуйста как и чем это делается.
    • Автор: 123new
      Товарищи, вопрос следующий, больше к знатокам.
      Есть у мода своя клиентская часть, есть серверная.
      Задача: Вызвать с клиента мода серверную функцию мода и получить результат в переменную как ответ.
      Чтобы более понятно было:
      на стороне сервера есть несколько переменных, на стороне клиента по запросу от мода надо получить их с сервера.
       
      Суть вопроса в том, что нужен пример такой реализации, не допетриваю сам как реализовать эту шнягу. Есть у кого идеи, знания какие?
  • Наш выбор

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

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

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