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

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

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

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

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 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);
	}
};

 

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

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

 

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

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


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

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

  • 0

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

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


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

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

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


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

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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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 соответственно базовый класс бронника какого-то своего.

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

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


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

Не получается заблокировать слот броника . скрипт не отрабатывает

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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);
	}
}

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

 

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


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

@Archon7th  Я уже разобрался, спасибо за инфу. Тут @AJIUCO  теперь слот броника нужно заблокировать.

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

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


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

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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

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

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


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

Добрый ты однако )))

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: 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"
  • Наш выбор

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

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

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

Поддержка