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
alex_good_kaban

Запрет на установку слота (аттачмента)

Подскажите пожалуйста. Нужно запретить надевать рюкзак при одетом модовом противогазе
В модовом противогазе прописываю:
 

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

class MOD_PROTIVOGAZ extends GasMask
{
override bool CanPutAsAttachment( EntityAI parent )
	{
		if (!super.CanPutAsAttachment(parent)) {return false;}
		
		Clothing back = Clothing.Cast(parent.FindAttachmentBySlotName("Back"));
		if ( back )
		{
			return false;
		}
		return true;
	}
};

 

После этого при надетом рюкзаке я не могу одеть модовый противогаз - как и задумано. Но если одеть сначала модовый противогаз то после этого возможно одеть рюкзак - не устраивает.
Каким образом я нашел выход из ситуации. В рюкзаке прописал:
 

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

modded class TortillaBag : Clothing 
{
	override bool CanPutAsAttachment(EntityAI parent)
	{
		if ( GetGame().IsClient() )
		{
			if ( parent.FindAttachmentBySlotName("Mask") )
			{
				ItemBase mask = ItemBase.Cast( parent.FindAttachmentBySlotName("Mask") );
				if ( mask.GetType().Contains("MOD_PROTIVOGAZ") )
					return false;
			}
		}
		return super.CanPutAsAttachment(parent);
	}
};

 

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

Вопрос: Как возможно сделать чтоб работало задуманное в первом скрипте (модового противогаза), не прописывая скрипты в каждый рюкзак???

 

Edited by alex_good_kaban (see edit history)

Share this post


Link to post
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Скачай Namalsk Survival и посмотри как там реализован запрет у костюма того космического.

Share this post


Link to post
Share on other sites



  • 0

Может проще посмотреть как сделан тактический шлем (занимает слот головы и очков) и по аналогии сделать противогаз, прописав, что он занимает и слот рюкзака?

Share this post


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

Вопрос: Как возможно сделать чтоб работало задуманное в первом скрипте (модового противогаза), не прописывая скрипты в каждый рюкзак???

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

Share this post


Link to post
Share on other sites
  • 0

@Olmaris  Посмотри на первый скрипт который я указал. Его я так и написал.

@123new  Не подскажешь какой именно функцией это прописать. Только вникаюсь в скриптовую часть.

Share this post


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

@Olmaris  Посмотри на первый скрипт который я указал. Его я так и написал.

@123new  Не подскажешь какой именно функцией это прописать. Только вникаюсь в скриптовую часть.

да вроде верная была выбрана. А так могу предложить лишь выбрать нужную. Поглядеть их все можно в классе EntityAI впринципе, а далее подбирать нужную.

Можно еще вот так (как пример), блок слота на игроке при надетой вещи:

modded class PlayerBase
{
	override bool CanReceiveAttachment(EntityAI attachment, int slotId)
	{
		ClothingBase Vest;
		ClothingBase Boby;
		if(GetInventory().FindAttachment(InventorySlots.VEST))
		{
			Vest = ClothingBase.Cast(GetInventory().FindAttachment(InventorySlots.VEST));
		}
		if(GetInventory().FindAttachment(InventorySlots.BODY))
		{
			Boby = ClothingBase.Cast(GetInventory().FindAttachment(InventorySlots.BODY));
		}
		string slot_name = InventorySlots.GetSlotName(slotId);		
		if((slotId == InventorySlots.VEST) || (slot_name == "Vest"))
		{
			if(Boby)
			{
				if(Boby.IsInherited(My_Clothes_TOP_ColorBase))
				{
					return false;
				}
			}
		}
		if((slotId == InventorySlots.BODY) || (slot_name == "Body"))
		{
			if(Vest)
			{
				return false;
			}
		}		
		return super.CanReceiveAttachment(attachment, slotId);
	}
};

My_Clothes_TOP_ColorBase соответственно базовый класс бронника какого-то своего.

Edited by 123new (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

не понял а зачем ?
if ( GetGame().IsClient() )
тебе если я правильно понял нужно запретить все рюкзаки, тогда вот так

modded class PlayerBase
{
	override bool CanReceiveAttachment(EntityAI attachment, int slotId)
	{
		if (slotId == InventorySlots.BACK) {
			EntityAI protivogaz = GetAttachmentByConfigTypeName("MOD_PROTIVOGAZ");
			if (protivogaz != NULL)
				return false;
		}
		return super.CanReceiveAttachment(attachment, slotId);
	}
}

должно работать

 

Share this post


Link to post
Share on other sites
  • 0

Объясните плиз, этот конфиг в скрипт прописывать или куда, не совсем понятно мне ((. есть костюм, на него не должен одеваться бронник. То что 123 предлагает не работает, видно он для кого еще серверный мод запилил. поясните что куда писать.

Share this post


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

Объясните плиз, этот конфиг в скрипт прописывать или куда, не совсем понятно мне ((. есть костюм, на него не должен одеваться бронник. То что 123 предлагает не работает, видно он для кого еще серверный мод запилил. поясните что куда писать.

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

По вопросу 'куда' - в срипт. В 4-ку.

По вопросу что и как? Ну поанализируйте код, подумайте над тем что делает каждая строка в нем. Хороший повод научиться понимать скриптинг. Сам себя он не выучит 😉

Share this post


Link to post
Share on other sites
  • 0

В 4 ку то понятно. Вот не понятно почему берешь мод что ты корректировал для кого то запускаешь броня одевается,заходишь на тот сервер броня не одевается )),хотя выше описанное там имеется . Ладно покопаюсь ещё сегодня..спасибо за ответ

Edited by AJIUCO (see edit history)

Share this post


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

В 4 ку то понятно. Вот не понятно почему берешь мод что ты корректировал для кого то запускаешь броня одевается,заходишь на тот сервер броня не одевается )),хотя выше описанное там имеется . Ладно покопаюсь ещё сегодня..спасибо за ответ

не все коды работают исключительно на стороне сервера)))

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

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

  • Similar Content

    • By ZizionarD
      Weapon Attachment Mod 1.1.0
       
      Этот скрипт позволяет игрокам удалить часть из оружия и применить их к другим видам оружия.
       
      Особенности:
      В настройках скрипта вы можете установить свои собственные комбинации Проста в использовании, просто нажмите правой кнопкой мыши чтобы удалить или добавить часть Админ лист для добавления модификаций Установка:
       
      1) Скачиваем файл
      2) Папку addons и overwrites вставляем в вашу папку с миссией
      3) Открываем файл init.sqf и в самый конец вставляете:
      call compile preprocessFileLineNumbers "addons\wmod\init.sqf"; 4) Настраиваем config.sqf (addons\wmod\config.sqf) по себя:
       
      DZE_WEAPON_MODS аргкменты:
      parameter | description | type | example -------------|---------------------------------------------------------------------|--------|-------- _attachment | Название Оружия | string | "GP25 GL" _base | Класснейм оружия которое хотите разобрать | string | "AK_74" _upgrade | Класнейм оружия в которое хотите добавить | string | "AK_74_GL" DZE_WEAPON_MOD_COMBINE аргуманты
      parameter | description | type | example -------------|---------------------------------------------------------------------|--------|-------- _combined | Название части которое можно объединить с оружием | string | "CCO Sight" _attachments | Массив вложения для объединения в комбинированном креплении | array | ["Kobra Sight"]  
      Если вас сервер кикает с ошибкой restriction #0
      1) открываем файл publicvariable.txt (ваша миссия/BattlEye)
      2) И в конце 1 строчки добавляем через пробел !="DZE_WMOD_INVENTORY"
  • Our picks

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