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
Sign in to follow this  
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"};
 }

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

Share this post


Link to post
Share on other sites

14 answers to this question

Recommended Posts




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

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

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

Edited by FreddyCruger (see edit history)

Share this post


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

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

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

Share this post


Link to post
Share on other sites
  • 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
	}

 

Share this post


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

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

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

Share this post


Link to post
Share on other sites
  • 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!

 

Edited by FreddyCruger (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

Edited by FreddyCruger (see edit history)

Share this post


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

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

 

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

Share this post


Link to post
Share on other sites
  • 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;
	}
	
};

 

Edited by FreddyCruger (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


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

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

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


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

Edited by FreddyCruger (see edit history)

Share this post


Link to post
Share on other sites
  • 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 в конце второго такого блока должно стоять)
 

Edited by XenoZD (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

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
Sign in to follow this  

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