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

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

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

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

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

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

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

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


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

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

  • 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 Исправил в первом блоке досадную ошибку со скобочками ))))

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

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


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





  • 0

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

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

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


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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

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


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

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

Ок понял.

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


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

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

Ок понял.

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

 

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


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

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

 

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

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


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

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

 

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

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


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

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

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


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

 

Спасибо

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


Ссылка на сообщение
Поделиться на других сайтах
  • 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 Исправил в первом блоке досадную ошибку со скобочками ))))


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

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


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


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

те же

override void EEItemAttached(EntityAI item, string slot_name)

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

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

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


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

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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