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
Kabzon

Запрет на снятие вещей.

Доброго времени суток! Подскажите, как сделать так, например, игрок надевает или дают на старте нарукавную повязку и снять её уже не может.
Есть такая возможность?

Share this post


Link to post
Share on other sites

18 answers to this question

Recommended Posts

  • 1
modded class PlayerBase extends ManBase
{
	override void EEItemAttached(EntityAI item, string slot_name)
	{
		super.EEItemAttached(item, slot_name);
		
		ItemBase item_bs = ItemBase.Cast(item);
		if (item_bs.CanLockIfAttachToPlayer()) // Кастомная функция в классе ItemBase которая потом может использоваться с перекрытием в дочерних классах
		{
			GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(item_bs.LockToParent); //Можно вызывать стандартно -  item_bs.LockToParent(), но лучше выполнить в следующем фрейме используя Call
		}
	}
}

modded class ItemBase extends InventoryItem
{
	bool CanLockIfAttachToPlayer()
	{
		return false;
	}
}

modded class Armband_ColorBase extends Clothing
{
	override bool CanLockIfAttachToPlayer()
	{
		return false;
	}
}

Можно и без моддинга дочек

Просто изменить условие

 

if (item_bs.CanLockIfAttachToPlayer())

на (проверить отношение к классу)

 

if (item_bs.IsInherited(Armband_ColorBase))
или
if (item_bs.IsInherited(Clothing)) //Тогда залочится любая шмотка

или вообще через тиа

 

if (item_bs.GetType().Contains("ArmBand"))
или
if (item_bs.GetType().Contains("Jaket"))

 

 

PS Исправил в первом блоке досадную ошибку со скобочками ))))

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites



  • 0

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

Edited by qestsmile (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
7 часов назад, qestsmile сказал:

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

Точно экспа? Может герои и бандиты?)

Share this post


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

Может по аналогии со статическими предметами. Создаем свой класс с повязкой и скриптом запрещаем взаимодействие руками с ней !?  

Я не особо в скриптах шарю( но если заблокировать взаимодействия с руками то надо и взаимодействия с инвентарем блокировать!? Я сейчас на рабе но кажется в playerbase хранится мой ответ)

Share this post


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

Я не особо в скриптах шарю( но если заблокировать взаимодействия с руками то надо и взаимодействия с инвентарем блокировать!? Я сейчас на рабе но кажется в playerbase хранится мой ответ)

Да я то же не особо 😀. Нет, инвентарь не нужно блокировать. На примере моей бочки, которая на мышку через таб не реагирует.  Могу предложить такое: 

class PicnicBarrelStatic: BarrelDrumStatic_ColorBase 
{
	override bool CanPutInCargo( EntityAI parent )
    {
        return false;
    }
    
    override bool CanPutIntoHands(EntityAI parent)
	{
		return false;
    } 
};

 Может и ересь, но за не имением лучшего, я бы попробовал.

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


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

Да я то же не особо 😀. Нет, инвентарь не нужно блокировать. На примере моей бочки, которая на мышку через таб не реагирует.  Могу предложить такое: 

class PicnicBarrelStatic: BarrelDrumStatic_ColorBase { override bool CanPutInCargo( EntityAI parent ) { return false; } override bool CanPutIntoHands(EntityAI parent) { return false; } };


class PicnicBarrelStatic: BarrelDrumStatic_ColorBase 
{
	override bool CanPutInCargo( EntityAI parent )
    {
        return false;
    }
    
    override bool CanPutIntoHands(EntityAI parent)
	{
		return false;
    } 
};

 Может и ересь, но за не имением лучшего, я бы попробовал.

Спасибо) буду думать)

1 минуту назад, Plut сказал:

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

Ок понял.

Share this post


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

Спасибо) буду думать)

Ок понял.

сняте предмета с себя немного другое

 

Share this post


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

сняте предмета с себя немного другое

 

ну может подскажите как правильно!?

Share this post


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

сняте предмета с себя немного другое

 

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

Share this post


Link to post
Share on other sites
  • 0

Когда буду за компом, покажу

Share this post


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

modded class PlayerBase extends ManBase { override void EEItemAttached(EntityAI item, string slot_name) { super.EEItemAttached(item, slot_name); ItemBase item_bs = ItemBase.Cast(item); if (item_bs.CanLockIfAttachToPlayer()) // Кастомная функция в классе ItemBase которая потом может использоваться с перекрытием в дочерних классах { GetGame().GetGallQueue(CALL_CATEGORY_SYSTEM).Call(item_bs.LockToParent(); //Можно вызывать стандартно - item_bs.LockToParent(), но лучше выполнить в следующем фрейме используя Call } } } modded class ItemBase extends InventoryItem { bool CanLockIfAttachToPlayer() { return false; } } modded class Armband_ColorBase extends Clothing { override bool CanLockIfAttachToPlayer() { return false; } }


modded class PlayerBase extends ManBase
{
	override void EEItemAttached(EntityAI item, string slot_name)
	{
		super.EEItemAttached(item, slot_name);
		
		ItemBase item_bs = ItemBase.Cast(item);
		if (item_bs.CanLockIfAttachToPlayer()) // Кастомная функция в классе ItemBase которая потом может использоваться с перекрытием в дочерних классах
		{
			GetGame().GetGallQueue(CALL_CATEGORY_SYSTEM).Call(item_bs.LockToParent(); //Можно вызывать стандартно -  item_bs.LockToParent(), но лучше выполнить в следующем фрейме используя Call
		}
	}
}

modded class ItemBase extends InventoryItem
{
	bool CanLockIfAttachToPlayer()
	{
		return false;
	}
}

modded class Armband_ColorBase extends Clothing
{
	override bool CanLockIfAttachToPlayer()
	{
		return false;
	}
}

Можно и без моддинга дочек

Просто изменить условие

 

if (item_bs.CanLockIfAttachToPlayer())


if (item_bs.CanLockIfAttachToPlayer())

на (проверить отношение к классу)

 

if (item_bs.IsInherited(Armband_ColorBase)) или if (item_bs.IsInherited(Clothing)) //Тогда залочится любая шмотка


if (item_bs.IsInherited(Armband_ColorBase))
или
if (item_bs.IsInherited(Clothing)) //Тогда залочится любая шмотка

или вообще через тиа

 

if (item_bs.GetType().Contains("ArmBand")) или if (item_bs.GetType().Contains("Jaket"))


if (item_bs.GetType().Contains("ArmBand"))
или
if (item_bs.GetType().Contains("Jaket"))

 

Спасибо

Share this post


Link to post
Share on other sites
  • 0
23.05.2021 в 11:01, BorizzK сказал:

modded class PlayerBase extends ManBase { override void EEItemAttached(EntityAI item, string slot_name) { super.EEItemAttached(item, slot_name); ItemBase item_bs = ItemBase.Cast(item); if (item_bs.CanLockIfAttachToPlayer()) // Кастомная функция в классе ItemBase которая потом может использоваться с перекрытием в дочерних классах { GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(item_bs.LockToParent); //Можно вызывать стандартно - item_bs.LockToParent(), но лучше выполнить в следующем фрейме используя Call } } } modded class ItemBase extends InventoryItem { bool CanLockIfAttachToPlayer() { return false; } } modded class Armband_ColorBase extends Clothing { override bool CanLockIfAttachToPlayer() { return false; } }


modded class PlayerBase extends ManBase
{
	override void EEItemAttached(EntityAI item, string slot_name)
	{
		super.EEItemAttached(item, slot_name);
		
		ItemBase item_bs = ItemBase.Cast(item);
		if (item_bs.CanLockIfAttachToPlayer()) // Кастомная функция в классе ItemBase которая потом может использоваться с перекрытием в дочерних классах
		{
			GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).Call(item_bs.LockToParent); //Можно вызывать стандартно -  item_bs.LockToParent(), но лучше выполнить в следующем фрейме используя Call
		}
	}
}

modded class ItemBase extends InventoryItem
{
	bool CanLockIfAttachToPlayer()
	{
		return false;
	}
}

modded class Armband_ColorBase extends Clothing
{
	override bool CanLockIfAttachToPlayer()
	{
		return false;
	}
}

Можно и без моддинга дочек

Просто изменить условие

 

if (item_bs.CanLockIfAttachToPlayer())


if (item_bs.CanLockIfAttachToPlayer())

на (проверить отношение к классу)

 

if (item_bs.IsInherited(Armband_ColorBase)) или if (item_bs.IsInherited(Clothing)) //Тогда залочится любая шмотка


if (item_bs.IsInherited(Armband_ColorBase))
или
if (item_bs.IsInherited(Clothing)) //Тогда залочится любая шмотка

или вообще через тиа

 

if (item_bs.GetType().Contains("ArmBand")) или if (item_bs.GetType().Contains("Jaket"))


if (item_bs.GetType().Contains("ArmBand"))
или
if (item_bs.GetType().Contains("Jaket"))

 

 

PS Исправил в первом блоке досадную ошибку со скобочками ))))


Это как я понял на запрет снятия с персонажа, а как сделать запрет снятия с аттачмента на предмете?

Share this post


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


Это как я понял на запрет снятия с персонажа, а как сделать запрет снятия с аттачмента на предмете?

те же

override void EEItemAttached(EntityAI item, string slot_name)

и т.п. имеются и у объектов и у предметов, так как задаются считай что в базовом классе EntityAI и наследуются от него и в Itembase и в Playerbase. Т.е. вы можете эти же функции моддить и на самих объектах, например акм, или даже на самих аттачментах. Чтобы лучше понимать что откуда берется рекоммендую разобрать родной scripts.pbo, выполнить поиск по папке разобранного файла с поиском class EntityAI и  поискать нужные функции, которые можно моддить своими значениями. Также, чтобы понимать что и откуда берется по наследованию обращайте внимание на двоеточие и фразу extended что буквально означает класс, имеющий свойства указанного и дополняющий его.

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Понял спасибо

13.02.2022 в 18:57, 123new сказал:

те же

override void EEItemAttached(EntityAI item, string slot_name)


override void EEItemAttached(EntityAI item, string slot_name)

и т.п. имеются и у объектов и у предметов, так как задаются считай что в базовом классе EntityAI и наследуются от него и в Itembase и в Playerbase. Т.е. вы можете эти же функции моддить и на самих объектах, например акм, или даже на самих аттачментах. Чтобы лучше понимать что откуда берется рекоммендую разобрать родной scripts.pbo, выполнить поиск по папке разобранного файла с поиском class EntityAI и  поискать нужные функции, которые можно моддить своими значениями. Также, чтобы понимать что и откуда берется по наследованию обращайте внимание на двоеточие и фразу extended что буквально означает класс, имеющий свойства указанного и дополняющий его.

 

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

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