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

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

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

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

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

Запретить слот не персонаже

Доброго времени суток, можно ли запретить на персе один слотов для всех предметов, кроме одного?

Хочу запретить возможность вешать на второй слот для оружия любой предмет кроме ремня для оружия.

Попробовал своими силами
ремню прописал: inventorySlot = "riflesling";

Заммодил SurvivorBase так: 

class SurvivorBase : Man {
        attachments[] = {"Head", "riflesling", "Melee", "Headgear", "Mask", "Eyewear", "Hands", "LeftHand", "Gloves", "Armband", "Vest", "Body", "Back", "Hips", "Legs", "Feet", "Splint_Right"};
 }

В итоге в слот не вешается ничего и ремень тоже не вешается. Есть идеи как это сделать?

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


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

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

  • 0

Ma boy .. Неуды копипастишь что ли? 

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

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


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





  • 0
8 часов назад, ПесДаЛис сказал:

boy .. Неуды копипастишь что ли? 

в смысле? я вообще не в курсе чё там на неудах. Сборная солянка сталкера и то адекватнее, чем неуды, судя по тому что я про этот серв слышал. 

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

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


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

Тут глянь, может поможет....

не, это другое, там тупо убран инвентори слот у всех предметов (не оружия), которые можно было вешать на перса. А мне немного другое надо. 

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


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

Чего ты так прилип к SurvivorBase, не пойму
Как обычно пробелы тут полетят к чертям

modded class PlayerBase 
{
	ref TStringArray m_AllowedAttachments = {"Ремень1", "Ремень2"}; // Для варианта 2
  
	override bool CanReceiveAttachment(EntityAI attachment, int slotId)
    {
		if (!super.CanReceiveAttachment(attachment, slotId)
		{
			return false;
        }
		//Вариант 1, для одного предмета
		if (slotId == InventorySlots.ТВОЙСЛОТ && !attachment.IsKindOf("ремень")) // && attachment.GetType() != "ремень"
		{
			return false;
        }
		return true;
		//~Вариант 1
		//Вариант 2, для списка предметов
		if (slotId == InventorySlots.ТВОЙСЛОТ)
		{
			foreach(string att : m_AllowedAttachments)
			{
				if(attachment.IsKindOf(att) // if (attachment.GetType() == att)
				{
					return true;
                }
			return false;
        }
		return true;
		//~Вариант 2
	}

 

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


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

Чего ты так прилип к SurvivorBase,

на что мозгов хватило), а так благодарю завтра начну разбираться

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


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

Как обычно пробелы тут полетят к чертям

modded class PlayerBase 
{
	//ref TStringArray m_AllowedAttachments = {"Ремень1", "Ремень2"}; // Для варианта 2
  
	override bool CanReceiveAttachment(EntityAI attachment, int slotId)
    {
		if (!super.CanReceiveAttachment(attachment, slotId)
		{
			return false;
        }
		//Вариант 1, для одного предмета
		if (slotId == InventorySlots.Riflesling && !attachment.IsKindOf("riflesling_cbase")) // && attachment.GetType() != "ремень"
		{
			return false;
        }
		return true;
		//~Вариант 1
		//Вариант 2, для списка предметов
		//if (slotId == InventorySlots.ТВОЙСЛОТ)
		//{
		//	foreach(string att : m_AllowedAttachments)
		//	{
			//	if(attachment.IsKindOf(att) // if (attachment.GetType() == att)
			//	{
			//		return true;
               // }
			//return false;
       // }
		//return true;
		//~Вариант 2
	}
};

выбивает ошибку:
 

/scripts/4_world/entities\itembase\zapret.c(12): Can't find variable 'Riflesling'
SCRIPT    (E): Failed to load entities script!

 

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

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


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

В общем, нашел решение, не стал парится со своим слотом, а просто прописал на InventorySlots.Shoulder. Как итог,  ремень повесить можно, ничего другого нельзя

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

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


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

В общем, нашел решение, не стал парится со своим слотом, а просто прописал на InventorySlots.Shoulder. Как итог,  ремень повесить можно, ничего другого нельзя

 

Я это изначально и имел ввиду, забыл уточнить

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


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

Я это изначально и имел ввиду, забыл уточнить

странно, что для melee ремня такой фокус не срабатывает
 

modded class PlayerBase 
{
	ref TStringArray m_AllowedAttachments = {"riflesling_сbase"}; // Для варианта 2
	ref TStringArray m_AllowedAttachments2 = {"meleesling_сbase"};
  
	override bool CanReceiveAttachment(EntityAI attachment, int slotId)
    {
		if (!super.CanReceiveAttachment(attachment, slotId)
		{
			return false;
        }
		//Вариант 1, для одного предмета
		/* if (slotId == InventorySlots.Slot_Riflesling && !attachment.IsKindOf("riflesling_colorbase_mung")) // && attachment.GetType() != "ремень"
		{
			return false;
        }
		return true; */
		//~Вариант 1
		//Вариант 2, для списка предметов
		if (slotId == InventorySlots.SHOULDER)
		{
			foreach(string att : m_AllowedAttachments)
			{
				if(attachment.IsKindOf(att) // if (attachment.GetType() == att)
				{
					return true;
                }
			}
			return false;
        }
		return true;
		//~Вариант 2
		if (slotId == InventorySlots.MELEE)
		{
			foreach(string att1 : m_AllowedAttachments2)
			{
				if(attachment.IsKindOf(att1) // if (attachment.GetType() == att1)
				{
					return true;
                }
			}
			return false;
        }
		return true;
	}
	
};

 

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

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


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

What am I witnessing...
просто добавь в m_AllowedAttachments через запятую второе название и ничего больше не меняй
Конечно оно работать у тебя не будет - функция завершается не доходя даже до второго куска кода

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


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

просто добавь в m_AllowedAttachments

она на оба слота будет действовать? там же первый слот Shoulder, второй Melee, если второй кусок убрать задействует только на один слот запрет, как я понимаю. И помимо этого, второй слот станет не доступен для оружия, а один хочу для огнестрела все таки оставить, чтобы вешать без ремня


PS: Подправил функцию, заработало 😃
хотя нет, на второй слот перестало вешаться оружие без ремня)

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

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


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

она на оба слота будет действовать? там же первый слот Shoulder, второй Melee, если второй кусок убрать задействует только на один слот запрет, как я понимаю. И помимо этого, второй слот станет не доступен для оружия, а один хочу для огнестрела все таки оставить, чтобы вешать без ремня


PS: Подправил функцию, заработало 😃
хотя нет, на второй слот перестало вешаться оружие без ремня)


Так, а теперь по буквам объясни что ты хочешь изменить, я ничего не понял

Было - в один слот нужно вешать только один (один набор) предметов, остальные предметы - нельзя
Стало - ?

P.S. или из того что ты скинул возьми этот кусок кода 

		if (slotId == InventorySlots.SHOULDER)
		{
			foreach(string att : m_AllowedAttachments)
			{
				if(attachment.IsKindOf(att) // if (attachment.GetType() == att)
				{
					return true;
                }
			}
			return false;
        }
		return true;

И удали последнюю строчку return true, остальное оставь как есть (return true в конце второго такого блока должно стоять)
 

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

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


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

В общем изначально, задача была убрать возможность вешать оружие без ремня в слот shoulder, но чтобы осталась возможность повесить второе оружие без ремня в слот Melee. Благодаря твоей помощи это отлично получилось. Но потом разыгрался аппетит, и решил сделать так, что бы всё Melee оружие (биты, копья, топоры и тд.) нельзя повесить в слот Melee без второго ремня. Но загвоздка в том, что у всего оружия прописаны два инвентори слота : shoulder и melee, соответственно если оставляю функцию в таком виде с двумя блоками, то во второй вообще оружие не повесить, ведь туда вешается только лишь спец ремень для холодного оружия =). Короче сумбурно всё получилось, задумка со вторым ремнём ни к чему, оставил эту затею. А так всё замечательно работает, спасибо!

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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