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

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

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

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

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

Модифицировать ActionUnpackBox

Друзья, выручайте!

Необходимо поправить в серверном моде скрипт, удаляющий бумагу.

Суть в том, что в некоторых модах используется скрипт распаковки коробок с выпадающей бумагой. А в серверном моде скрипт удаляет только бумагу, если это не выполняется внутри какого-либо мода. То есть, одновременно 2 мода работают, но бумага с сервера не убирается, т.к. внутри config.cpp нет отсылки на использование какого-либо мода. Подскажите, как правильно сделать, чтобы бумага убиралась с сервера всегда, даже при использовании модов?

P.S. Использую серверный мод NoPaperLitter.

 

class CfgPatches
{
	class NoPaperLitter_scripts
	{
		requiredAddons[] = {};
	};
};
class CfgMods
{
	class NoPaperLitter
	{
		type = "mod";
		dir = "NoPaperLitter";
		dependencies[] = {"World"};
		class defs
		{
			class worldScriptModule
			{
				value = "";
				files[] = {"NoPaperLitter/scripts/4_world"};
			};
		};
	};
};

 

 

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


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

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

  • 0

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

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


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

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

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

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


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

внутри config.cpp нет отсылки на использование какого-либо мода

 

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

 

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

 

modded class ActionUnpackBox: ActionContinuousBase
{

	override void OnFinishProgressServer( ActionData action_data )
	{
		if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player )
		{
			string path = "CfgVehicles " + action_data.m_MainItem.GetType();
			string child_name = "";
			int count;
			array<string> resources = new array<string>;
			
			if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") )
			{
				path = path + " Resources";
				count = GetGame().ConfigGetChildrenCount ( path );
				for (int i = 0; i < count; i++)
				{
					GetGame().ConfigGetChildName ( path, i, child_name );
					
					if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) )
					{
						resources.Insert( child_name );
					}
				}

				//TODO modify to allow for multiple ammo types spawning (if needed??)
				string itemType = resources.Get(0);
				int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" );
				
				UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount);
				action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda);
				
				//spawns wrapping Paper - СТРОКУ НИЖЕ КОММЕНТИРУЕМ и БУМАГА НЕ ПОЯВИТСЯ
				//ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) );
				
				action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
			}
		}
	}
}

 

комментируем строку ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) );

 

закомментировав вышеуказанную строку мы отключим создание бумаги

 

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


тк мод ПРЕВЫЙ В СПИСКЕ СЕРВЕРНЫХ модов то он перекроет все остальные и будет выполняться ТОЛЬКО код из этого мода

 

 

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


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

внутри config.cpp нет отсылки на использование какого-либо мода

 

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

 

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

 

modded class ActionUnpackBox: ActionContinuousBase { override void OnFinishProgressServer( ActionData action_data ) { if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player ) { string path = "CfgVehicles " + action_data.m_MainItem.GetType(); string child_name = ""; int count; array<string> resources = new array<string>; if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") ) { path = path + " Resources"; count = GetGame().ConfigGetChildrenCount ( path ); for (int i = 0; i < count; i++) { GetGame().ConfigGetChildName ( path, i, child_name ); if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) ) { resources.Insert( child_name ); } } //TODO modify to allow for multiple ammo types spawning (if needed??) string itemType = resources.Get(0); int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" ); UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount); action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda); //spawns wrapping Paper - СТРОКУ НИЖЕ КОММЕНТИРУЕМ и БУМАГА НЕ ПОЯВИТСЯ //ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) ); action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight ); } } } }


modded class ActionUnpackBox: ActionContinuousBase
{

	override void OnFinishProgressServer( ActionData action_data )
	{
		if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player )
		{
			string path = "CfgVehicles " + action_data.m_MainItem.GetType();
			string child_name = "";
			int count;
			array<string> resources = new array<string>;
			
			if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") )
			{
				path = path + " Resources";
				count = GetGame().ConfigGetChildrenCount ( path );
				for (int i = 0; i < count; i++)
				{
					GetGame().ConfigGetChildName ( path, i, child_name );
					
					if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) )
					{
						resources.Insert( child_name );
					}
				}

				//TODO modify to allow for multiple ammo types spawning (if needed??)
				string itemType = resources.Get(0);
				int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" );
				
				UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount);
				action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda);
				
				//spawns wrapping Paper - СТРОКУ НИЖЕ КОММЕНТИРУЕМ и БУМАГА НЕ ПОЯВИТСЯ
				//ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) );
				
				action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
			}
		}
	}
}

 

комментируем строку ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) );

 

закомментировав вышеуказанную строку мы отключим создание бумаги

 

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


тк мод ПРЕВЫЙ В СПИСКЕ СЕРВЕРНЫХ модов то он перекроет все остальные и будет выполняться ТОЛЬКО код из этого мода

 

 

главное чтобы еще какие-то моды на этот экшен не были завязаны, иначе кирдык той составляющей прийдет после такого кода))

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


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

Показываю 2 скрипта ActionUnpackBox.c, которые как раз таки противоречат друг другу:

 

- серверный

 

modded class ActionUnpackBox: ActionContinuousBase
{
    override void OnFinishProgressServer(ActionData action_data)
	{
		if (action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player)
		{
			string path = "CfgVehicles " + action_data.m_MainItem.GetType();
			string child_name = "";
			int count;
			array<string> resources = new array<string>;
			
			if(GetGame().ConfigIsExisting(path) && GetGame().ConfigIsExisting(path + " Resources"))
			{
				path = path + " Resources";
				count = GetGame().ConfigGetChildrenCount (path);
				for (int i = 0; i < count; i++)
				{
					GetGame().ConfigGetChildName (path, i, child_name);
					
					if (GetGame().ConfigGetInt(path + " " + child_name + " value" ))
					{
						resources.Insert(child_name);
					}
				}

				string itemType = resources.Get(0);
				int itemCount = GetGame().ConfigGetInt(path + " " + itemType + " value");
				
				UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount);
				action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda);
				
				action_data.m_Player.GetSoftSkillsManager().AddSpecialty(m_SpecialtyWeight);
			}
		}
	}
}

 

- модовый

 

modded class ActionUnpackBox
{
    override void OnFinishProgressServer( ActionData action_data )
	{
		if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player )
		{
			string path = "CfgVehicles " + action_data.m_MainItem.GetType();
			string child_name = "";
			int count;
			array<string> resources = new array<string>;
			
			if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") )
			{
				path = path + " Resources";
				count = GetGame().ConfigGetChildrenCount ( path );
				for (int i = 0; i < count; i++)
				{
					GetGame().ConfigGetChildName ( path, i, child_name );
					
					if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) )
					{
						resources.Insert( child_name );
					}
				}
                GetGame().ObjectDelete(action_data.m_Player.GetItemInHands());
				//TODO modify to allow for multiple ammo types spawning (if needed??)
                for (int j=0;j<resources.Count();j++)
                {
                    string itemType = resources.Get(j);
                    int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" );
                    ItemBase lambda = ItemBase.Cast(GetGame().CreateObject(itemType,action_data.m_Player.GetPosition(),false));
                    if (itemCount)
                        lambda.SetQuantity(itemCount);
                }
				//spawns wrapping Paper
				ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) );
				
				action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
			}
		}
	}
}

 

Изменить я могу лишь только серверный (так как на модовый запрет стоит на изменения).

Может так сможете подсказать верное решение именно в серверном скрипте?

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


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

Показываю 2 скрипта ActionUnpackBox.c, которые как раз таки противоречат друг другу:

 

- серверный

 

modded class ActionUnpackBox: ActionContinuousBase { override void OnFinishProgressServer(ActionData action_data) { if (action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player) { string path = "CfgVehicles " + action_data.m_MainItem.GetType(); string child_name = ""; int count; array<string> resources = new array<string>; if(GetGame().ConfigIsExisting(path) && GetGame().ConfigIsExisting(path + " Resources")) { path = path + " Resources"; count = GetGame().ConfigGetChildrenCount (path); for (int i = 0; i < count; i++) { GetGame().ConfigGetChildName (path, i, child_name); if (GetGame().ConfigGetInt(path + " " + child_name + " value" )) { resources.Insert(child_name); } } string itemType = resources.Get(0); int itemCount = GetGame().ConfigGetInt(path + " " + itemType + " value"); UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount); action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda); action_data.m_Player.GetSoftSkillsManager().AddSpecialty(m_SpecialtyWeight); } } } }


modded class ActionUnpackBox: ActionContinuousBase
{
    override void OnFinishProgressServer(ActionData action_data)
	{
		if (action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player)
		{
			string path = "CfgVehicles " + action_data.m_MainItem.GetType();
			string child_name = "";
			int count;
			array<string> resources = new array<string>;
			
			if(GetGame().ConfigIsExisting(path) && GetGame().ConfigIsExisting(path + " Resources"))
			{
				path = path + " Resources";
				count = GetGame().ConfigGetChildrenCount (path);
				for (int i = 0; i < count; i++)
				{
					GetGame().ConfigGetChildName (path, i, child_name);
					
					if (GetGame().ConfigGetInt(path + " " + child_name + " value" ))
					{
						resources.Insert(child_name);
					}
				}

				string itemType = resources.Get(0);
				int itemCount = GetGame().ConfigGetInt(path + " " + itemType + " value");
				
				UnboxLambda lambda = new UnboxLambda(action_data.m_MainItem, itemType, action_data.m_Player, itemCount);
				action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda);
				
				action_data.m_Player.GetSoftSkillsManager().AddSpecialty(m_SpecialtyWeight);
			}
		}
	}
}

 

- модовый

 

modded class ActionUnpackBox { override void OnFinishProgressServer( ActionData action_data ) { if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player ) { string path = "CfgVehicles " + action_data.m_MainItem.GetType(); string child_name = ""; int count; array<string> resources = new array<string>; if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") ) { path = path + " Resources"; count = GetGame().ConfigGetChildrenCount ( path ); for (int i = 0; i < count; i++) { GetGame().ConfigGetChildName ( path, i, child_name ); if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) ) { resources.Insert( child_name ); } } GetGame().ObjectDelete(action_data.m_Player.GetItemInHands()); //TODO modify to allow for multiple ammo types spawning (if needed??) for (int j=0;j<resources.Count();j++) { string itemType = resources.Get(j); int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" ); ItemBase lambda = ItemBase.Cast(GetGame().CreateObject(itemType,action_data.m_Player.GetPosition(),false)); if (itemCount) lambda.SetQuantity(itemCount); } //spawns wrapping Paper ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) ); action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight ); } } } }


modded class ActionUnpackBox
{
    override void OnFinishProgressServer( ActionData action_data )
	{
		if ( action_data.m_MainItem && action_data.m_MainItem.GetHierarchyRootPlayer() == action_data.m_Player )
		{
			string path = "CfgVehicles " + action_data.m_MainItem.GetType();
			string child_name = "";
			int count;
			array<string> resources = new array<string>;
			
			if( GetGame().ConfigIsExisting( path ) && GetGame().ConfigIsExisting( path + " Resources") )
			{
				path = path + " Resources";
				count = GetGame().ConfigGetChildrenCount ( path );
				for (int i = 0; i < count; i++)
				{
					GetGame().ConfigGetChildName ( path, i, child_name );
					
					if ( GetGame().ConfigGetInt( path + " " + child_name + " value" ) )
					{
						resources.Insert( child_name );
					}
				}
                GetGame().ObjectDelete(action_data.m_Player.GetItemInHands());
				//TODO modify to allow for multiple ammo types spawning (if needed??)
                for (int j=0;j<resources.Count();j++)
                {
                    string itemType = resources.Get(j);
                    int itemCount = GetGame().ConfigGetInt( path + " " + itemType + " value" );
                    ItemBase lambda = ItemBase.Cast(GetGame().CreateObject(itemType,action_data.m_Player.GetPosition(),false));
                    if (itemCount)
                        lambda.SetQuantity(itemCount);
                }
				//spawns wrapping Paper
				ItemBase paper = ItemBase.Cast( GetGame().CreateObject("Paper", action_data.m_Player.GetPosition(), false) );
				
				action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight );
			}
		}
	}
}

 

Изменить я могу лишь только серверный (так как на модовый запрет стоит на изменения).

Может так сможете подсказать верное решение именно в серверном скрипте?

Касаемо вопроса в шапке темы и подсказки товарища BorizK я бы сделал серверный код, как и сказал товарищ BorizK, но вот с таким кодом:
 

modded class ActionUnpackBox: ActionContinuousBase
{
	override void OnFinishProgressServer( ActionData action_data )
	{
		super.OnFinishProgressServer(action_data);
		private array<string> Massive_Scan_objects = {"Paper"};
		private array<Object> Massive_Scaned_objects = ScanInMapObjectsAtPositionInRadius(action_data.m_Player.GetPosition(), 2.1, Massive_objects_for_search);
		if(Massive_Scaned_objects)
		{
			if(Massive_Scaned_objects.Count() > 0)
			{
				foreach(private Object obj:Object)
				{
					GetGame().CreateObject(obj);
				}
			}
		}
	}	
	array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, int radius, array<string> Massive_objects_for_search)
	{
		private array<Object> nearest_objects = new array<Object>;
		private array<CargoBase> proxy_cargos = new array<CargoBase>;
		private Object object;
		private string className;	
		private array<Object> Massive_searched_objects = new array<Object>;
		
		GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); 
		proxy_cargos.Clear(); Massive_searched_objects.Clear();
		//Massive_objects_for_search.Debug();
		for ( int i = 0; i < nearest_objects.Count(); i++ )
		{
			object = nearest_objects.Get(i);
			if ( Massive_objects_for_search.Find(object.GetType()) >= 0 )
			{
				Massive_searched_objects.Insert(object);
			}
		}
		nearest_objects.Clear(); proxy_cargos.Clear(); object = NULL; className = "";
		return Massive_searched_objects;
	}
}

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

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


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

главное чтобы еще какие-то моды на этот экшен не были завязаны, иначе кирдык той составляющей прийдет после такого кода))

ну если завязаны

то развяжем

добавив вызов super.

 

в КОНЦЕ

 

и не надо ЛЕЗТЬ НА КЛИЕНТА

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


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

123New

 

а это зачем в конце функции?

 

nearest_objects.Clear(); proxy_cargos.Clear(); object = NULL; className = "";

nearest_objects.Clear(); proxy_cargos.Clear(); object = NULL; className = "";

какой сокральный смысл?

 

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

 

и зачем ваще мучать бабушку сканом радиуса ?

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

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


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

Касаемо вопроса в шапке темы и подсказки товарища BorizK я бы сделал серверный код, как и сказал товарищ BorizK, но вот с таким кодом:
 

modded class ActionUnpackBox: ActionContinuousBase { override void OnFinishProgressServer( ActionData action_data ) { super.OnFinishProgressServer(action_data); private array<string> Massive_Scan_objects = {"Paper"}; private array<Object> Massive_Scaned_objects = ScanInMapObjectsAtPositionInRadius(action_data.m_Player.GetPosition(), 2.1, Massive_objects_for_search); if(Massive_Scaned_objects) { if(Massive_Scaned_objects.Count() > 0) { foreach(private Object obj:Object) { GetGame().CreateObject(obj); } } } } array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, int radius, array<string> Massive_objects_for_search) { private array<Object> nearest_objects = new array<Object>; private array<CargoBase> proxy_cargos = new array<CargoBase>; private Object object; private string className; private array<Object> Massive_searched_objects = new array<Object>; GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); proxy_cargos.Clear(); Massive_searched_objects.Clear(); //Massive_objects_for_search.Debug(); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); if ( Massive_objects_for_search.Find(object.GetType()) >= 0 ) { Massive_searched_objects.Insert(object); } } nearest_objects.Clear(); proxy_cargos.Clear(); object = NULL; className = ""; return Massive_searched_objects; } }


modded class ActionUnpackBox: ActionContinuousBase
{
	override void OnFinishProgressServer( ActionData action_data )
	{
		super.OnFinishProgressServer(action_data);
		private array<string> Massive_Scan_objects = {"Paper"};
		private array<Object> Massive_Scaned_objects = ScanInMapObjectsAtPositionInRadius(action_data.m_Player.GetPosition(), 2.1, Massive_objects_for_search);
		if(Massive_Scaned_objects)
		{
			if(Massive_Scaned_objects.Count() > 0)
			{
				foreach(private Object obj:Object)
				{
					GetGame().CreateObject(obj);
				}
			}
		}
	}	
	array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, int radius, array<string> Massive_objects_for_search)
	{
		private array<Object> nearest_objects = new array<Object>;
		private array<CargoBase> proxy_cargos = new array<CargoBase>;
		private Object object;
		private string className;	
		private array<Object> Massive_searched_objects = new array<Object>;
		
		GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); 
		proxy_cargos.Clear(); Massive_searched_objects.Clear();
		//Massive_objects_for_search.Debug();
		for ( int i = 0; i < nearest_objects.Count(); i++ )
		{
			object = nearest_objects.Get(i);
			if ( Massive_objects_for_search.Find(object.GetType()) >= 0 )
			{
				Massive_searched_objects.Insert(object);
			}
		}
		nearest_objects.Clear(); proxy_cargos.Clear(); object = NULL; className = "";
		return Massive_searched_objects;
	}
}

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

 

Подключил как серверный

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

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


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

ну если завязаны

то развяжем

добавив вызов super.

 

в КОНЦЕ

 

и не надо ЛЕЗТЬ НА КЛИЕНТА

 

Этот экшен используется еще в одном моде. И как раз необходимо "развязать", чтобы выполнялось данное действие несмотря на моды.

Может подкинете код?

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


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

Какой мод?

 

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


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

Ну они там для своих коробок в которых могут быть разные патроны и прдметы добавили цикл

 

Посему имеет смысл сделать так как предложил 123new

и сканируем не 2м, а 70см вокруг точки спавна (положения игрока)

 

 

 

 

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

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


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

Ну они там для своих коробок в которых могут быть разные патроны и прдметы добавили цикл

 

Посему имеет смысл сделать так как предложил 123new

и сканируем не 2м, а 70см вокруг точки спавна (положения игрока)

 

 

 

 

 

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

 

Подключил как серверный

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

 

Я пробовал его метод. Увы. Ошибка.

 

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


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

 

 

Я пробовал его метод. Увы. Ошибка.

 

Невнимательность

 

Причем у обоих ))

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

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


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

Ща накатаю

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
modded class ActionUnpackBox: ActionContinuousBase
{
	override void OnFinishProgressServer( ActionData action_data )
	{
		super.OnFinishProgressServer( action_data );
		array<Object> nearest_objects = new array<Object>;
		array<CargoBase> proxy_cargos = new array<CargoBase>;
		array<Object> objects = new array<Object>;
		float radius = 1;
       
		GetGame().GetObjectsAtPosition(action_data.m_Player.GetPosition(), radius, nearest_objects, proxy_cargos);
		for ( int i = 0; i < nearest_objects.Count(); i++ )
		{
				if (i >= nearest_objects.Count()) break; //crash fix

				if (nearest_objects[i].IsInherited(Paper))
				{
					GetGame().ObjectDelete(nearest_objects[i]);
				}
		}
	}
}

про crash fix могу обьяснить если интересно, но потом

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


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

и зачем ваще мучать бабушку сканом радиуса ?

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

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


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

modded class ActionUnpackBox: ActionContinuousBase { override void OnFinishProgressServer( ActionData action_data ) { super.OnFinishProgressServer( action_data ); array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; array<Object> objects = new array<Object>; float radius = 1; GetGame().GetObjectsAtPosition(action_data.m_Player.GetPosition(), radius, nearest_objects, proxy_cargos); for ( int i = 0; i < nearest_objects.Count(); i++ ) { if (i >= nearest_objects.Count()) break; //crash fix if (nearest_objects.IsInherited(Paper)) { GetGame().ObjectDelete(nearest_objects); } } } }


modded class ActionUnpackBox: ActionContinuousBase
{
	override void OnFinishProgressServer( ActionData action_data )
	{
		super.OnFinishProgressServer( action_data );
		array<Object> nearest_objects = new array<Object>;
		array<CargoBase> proxy_cargos = new array<CargoBase>;
		array<Object> objects = new array<Object>;
		float radius = 1;
       
		GetGame().GetObjectsAtPosition(action_data.m_Player.GetPosition(), radius, nearest_objects, proxy_cargos);
		for ( int i = 0; i < nearest_objects.Count(); i++ )
		{
				if (i >= nearest_objects.Count()) break; //crash fix

				if (nearest_objects[i].IsInherited(Paper))
				{
					GetGame().ObjectDelete(nearest_objects[i]);
				}
		}
	}
}

про crash fix могу обьяснить если интересно, но потом

 

Не срабатывает. Бумага все-равно вываливается и не исчезает.

Видимо придется убирать тот мод. 

Спасибо за попытки помочь.

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


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

 

Не срабатывает. Бумага все-равно вываливается и не исчезает.

Видимо придется убирать тот мод. 

Спасибо за попытки помочь.

Значит чтот не так сделали

Важно подключить это на сервере первым в списке

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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

Поддержка