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
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)

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

 

Прошу помочь

Edited by PR9INICHEK (see edit history)

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0

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

 

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

MyFirstServerMod/scripts/4_World


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

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

 

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

Edited by PR9INICHEK (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
m_ActionData.m_ActionComponent = new CAContinuousRepeat(6.0);

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

Share this post


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

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

 

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

Edited by PR9INICHEK (see edit history)

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites
  • 0

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

 

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

 

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

 

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

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

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

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

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

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

 

Edited by BorizzK (see edit history)

Share this post


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

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites
  • 0

@BorizzK 

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

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

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

Share this post


Link to post
Share on other sites
  • 0

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

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.