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

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

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

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

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

Не запускается серверный мод

Всем привет!

 

Взял оригинальный класс actiondestroycombinationlock.c

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

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

class ActionDestroyCombinationLockCB : ActionContinuousBaseCB
{
	override void CreateActionComponent()
	{
		m_ActionData.m_ActionComponent = new CAContinuousRepeat(6.0);
	}
};

modded class ActionDestroyCombinationLock: ActionContinuousBase
{
	static int CYCLES = 5;
	void ActionDestroyCombinationLock()
	{
		m_CallbackClass = ActionDestroyCombinationLockCB;
		m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DISASSEMBLE;
		m_FullBody = true;
		m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
		m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_MEDIUM;
	}
	
	override void CreateConditionComponents()  
	{	
		m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
		m_ConditionItem = new CCINonRuined;
	}

	override string GetText()
	{
		return "#destroy_combination_lock";
	}

	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
		Object target_object = target.GetObject();
		string selection = target_object.GetActionComponentName( target.GetComponentIndex() );
		Fence fence = Fence.Cast( target_object );
		
		if ( fence && fence.IsLocked() && selection == "wall_interact" )
		{
			return true;
		}
		
		return false;
	}

	override void OnFinishProgressServer( ActionData action_data )
	{	
		Fence fence = Fence.Cast( action_data.m_Target.GetObject() );
		if ( fence )
		{
			CombinationLock combination_lock = fence.GetCombinationLock();
			if ( combination_lock )
			{
				if ( combination_lock.ClassName() == "CombinationLock4" )
        {
          combination_lock.AddHealth("","",-(combination_lock.GetMaxHealth("","") / CYCLES * 2));
        }
        else {
          combination_lock.AddHealth("","",-(combination_lock.GetMaxHealth("","")/CYCLES));
        }

				if ( combination_lock.IsDamageDestroyed() )
				{
					combination_lock.UnlockServer( action_data.m_Player, fence );
					GetGame().GetCallQueue( CALL_CATEGORY_GAMEPLAY ).CallLater( combination_lock.DestroyLock, 200, false );
				}
			}
		}
		
		action_data.m_MainItem.DecreaseHealth( UADamageApplied.SAW_LOCK, false );
		
		//soft skills
		action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
	}
	
	override string GetAdminLogMessage(ActionData action_data)
	{
		return " destroyed combination lock with " + action_data.m_MainItem.GetDisplayName();
	}
};

 

 

Протестировал всё это дело через распакованную папку scripts и запущенный сервер с параметром -filepatching

 

Далее решил сделать серверный мод

Положил этот файл в созданную папку MyFirstServerMod\scripts\4_world\classes\useractionscomponent\actions\continuous

В MyFirstServerMod положил файл config.cpp со следующим содержимым:

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

class CfgPatches
{
	class MyFirstServerMod
	{
		requiredAddons[]=
		{
			// ""
		};
	};
};

class CfgMods
{
	class MyFirstServerMod
	{
		type = "mod";

    class defs
    {
      class worldScriptModule
        {
          value = "";
          files[] = {"MyFirstServerMod/scripts/4_World"};
        };
    };
  };
};

 

 

Через DayZ Tools превратил это в .pbo и положил его в серверную папку по пути @MyFirstServerMod\Addons

 

Запустил сервер с параметром -servermod=@MyFirstServerMod и оказалось, что ничего не работает 😞

 

Версия сервера 1.07.152951

 

В Дискорде DayZ Modders что-то писали про параметр -servermod= (https://discordapp.com/channels/452035973786632194/452035973786632196/677961799496106005)

Но я так и не понял, работает он на текущей версии сервера или нет

 

Прошу помочь

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

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


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

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

  • 0

Проблему решил

 

Она оказалась в том, что путь к файлу в конфиге был таким

MyFirstServerMod/scripts/4_World


А сам файл лежал по пути

MyFirstServerMod/scripts/4_World/classes/useractionscomponent/actions/continuous

 

Как только я путь поменял, так всё сразу и заработало 🙂

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

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


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





  • 0

Такое изменение как превращение одной вещь в другую-не работает как серверный мод.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
m_ActionData.m_ActionComponent = new CAContinuousRepeat(6.0);

вот это вот на стороне клиента работает, если не ошибаюсь. Так что скорее всего клиент-серверный мод надо делать

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


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

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

 

Даже если я модифицирую класс ActionDestroyCombinationLock, в котором этой строчки нет?

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

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


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

Такое изменение как превращение одной вещь в другую-не работает как серверный мод.

Как раз на сервере и рабтает

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

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


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

Про тестирование скриптов в распакованном scripts... Это на самом деле не совсем корректно, тк последовательность компиляции в случае выноса скрипта из scripts в мод или серверный мод изменится, а в зависимости от последовательности расположения модов в списке может измениться и поведение скриптов в целом

 

Про перекрытие классов и функций есть в вики богемии

 

Про нюансы расскажу завтра, если интересно

 

 

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

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


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

Про перекрытие

1. Все скрипты и конфиги в модах указанных в параметрах -mod и -servermod перекрывают нативные (конфиги и скрипты).

2. Моды в параметре -mod компилятся от первого к прследнему, те второй перекроет первый итд

3. Моды в параметре -servermod наоборот - компилятся от последнего к первому, те первый перекроет второй

4. Моды в параметре -servermod перекрывают моды в параметре -mod

5. В парметрах запуска параметр -servermod всегда указывается ПОСЛЕ параметра -mod

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
7 часов назад, BorizzK сказал:

5. В парметрах запуска параметр -servermod всегда указывается ПОСЛЕ параметра -mod

 

Так и указано.

 

В остальном полезная инфа.

 

А вы пробовали мой код запаковать в мод и подключить как серверный?

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


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

@BorizzK 

17.02.2020 в 00:56, BorizzK сказал:

В парметрах запуска параметр -servermod всегда указывается ПОСЛЕ параметра -mod

Ваще похеру на это, если у мода указана зависимость.

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


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

Ребят, есть у кого-нибудь ещё мысли или это не будет вообще работать?

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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