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

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

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

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

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

Как убрать возможность брать заруиненые вещи?

Всем привет, подскажите пожалуйста, какой параметр отвечает за то что бы руиненые вещи не брались в руки или чтобы их нельзя было положить в инвентарь?
Сразу скажу в скриптах я не очень и делаю моды на уже готовых параметрах игры, но бывает что я в упор не понимаю где искать тот или иной параметр, если бы кто-то объяснил что куда прописывать?

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


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

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

  • 1
9 часов назад, projectdayz сказал:

modded class PlayerBase { override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished) { EntityAI itemInHands = this.GetHumanInventory().GetEntityInHands(); if(itemInHands && itemInHands.IsMeleeWeapon() && itemInHands.GetHealthLevel() == GameConstants.STATE_RUINED) { DropItem(ItemBase.Cast(itemInHands)); PlayAttachmentDropSound(); } super.CommandHandler(pDt,pCurrentCommandID,pCurrentCommandFinished); }; override bool CanPutIntoHands(EntityAI parent) { if(parent.IsMeleeWeapon() && parent.GetHealthLevel() == GameConstants.STATE_RUINED ) return false; return super.CanPutIntoHands( parent ); } override bool CanReceiveItemIntoHands(EntityAI item_to_hands) { if(item_to_hands.IsMeleeWeapon() && item_to_hands.GetHealthLevel() == GameConstants.STATE_RUINED ) return false; return super.CanReceiveItemIntoHands( item_to_hands ); } };


modded class PlayerBase
{

override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)		
{
	EntityAI itemInHands = this.GetHumanInventory().GetEntityInHands();
	
	if(itemInHands && itemInHands.IsMeleeWeapon() && itemInHands.GetHealthLevel() == GameConstants.STATE_RUINED)
	{

	DropItem(ItemBase.Cast(itemInHands));
	PlayAttachmentDropSound();	
	}
		super.CommandHandler(pDt,pCurrentCommandID,pCurrentCommandFinished);	
	};
	
    override bool CanPutIntoHands(EntityAI parent)
	{
		
		if(parent.IsMeleeWeapon() && parent.GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return super.CanPutIntoHands( parent );
	}		
	
    override bool CanReceiveItemIntoHands(EntityAI item_to_hands)
	{
		
		if(item_to_hands.IsMeleeWeapon() && item_to_hands.GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return super.CanReceiveItemIntoHands( item_to_hands );
	}			
};

пользуйся


Просто из интереса
-зачем тут дроп предметов в реальном времени если нужно было именно запретить их подбирать?
-CanPutIntoHands() разве не нужна для проверки "можно ли положить этот класс в руки"? Игрока в любом случае в руки не положишь, а с вещами это работать не должно
-для чего в CanReceiveItemIntoHands() проверка parent.IsMeleeWeapon(), если подбирать нельзя любой заруиненный ItemBase?

 

 

1 час назад, VictorUA87 сказал:

Я создал папки в своём моде структура такая: Dayz_life\scripts\4_World\Entities\ManBase , в папке ManBase создал файл PlayerBase.c, в него вписал всё что выше указано. Правильно ли я всё сделал? Если да, то оно не работает, заруиненые вещи всё также берутся в руки и кладутся в инвентарь, и ещё работают как матрёшки кладутся друг в друга!
P.s. Прошу не указывайте мне на мои ошибки типа "Зачем ты это написал в эту строку и т.п.", а просто помогите решить, я просто ещё учусь всё это делать!
За ранее прошу прощения!


Всё правильно, но я верю максимум в то что этот код не позволит поднимать заруиненные ножи/топоры/подобные вещи. На всякий случай проверь, лежит ли мод на сервере, читается ли он, и указаны ли в config.cpp::CfgMods::YourModClass переменные dependencies[] = {"World") и worldScriptEngine::files[] = {"Dayz_life\scripts\4_World"}
Чуть позже скину свой вариант основного скрипта

P.S. чуть гранатами не суициднулся

 

modded class ItemBase
{
	//Убирает действие "взять в руки" и возможность перетаскивать предметы в инвентарь, если предмет имеет состояние "Уничтожено"
	//Работает на все предметы, включая еду и жидкость
	//Если второе не нужно, заменить оба if'a на закомментированные
    override bool CanPutInCargo( EntityAI parent )
	{
      	//if(!IsKindOf("Edible_Base") && IsRuined())
        if (IsRuined())
        {
            return false;
        }
        return super.CanPutInCargo(parent);
	}

    override bool CanPutIntoHands( EntityAI parent )
	{
  		//if(!IsKindOf("Edible_Base") && IsRuined())
        if (IsRuined())
        {
            return false;
        }
        return super.CanPutIntoHands(parent);
	}
}

 

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

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


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

Класс ItemBase (файл ItemBase.c), функции типа CanPutInHands(), CanPutInInventory(), CanPutInCargo()
Ищи подобное, в них добавляй условие по типу if (IsNotRuined());

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


Ссылка на сообщение
Поделиться на других сайтах
  • 1
modded class PlayerBase
{

override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)		
{
	EntityAI itemInHands = this.GetHumanInventory().GetEntityInHands();
	
	if(itemInHands && itemInHands.IsMeleeWeapon() && itemInHands.GetHealthLevel() == GameConstants.STATE_RUINED)
	{

	DropItem(ItemBase.Cast(itemInHands));
	PlayAttachmentDropSound();	
	}
		super.CommandHandler(pDt,pCurrentCommandID,pCurrentCommandFinished);	
	};
	
    override bool CanPutIntoHands(EntityAI parent)
	{
		
		if(parent.IsMeleeWeapon() && parent.GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return super.CanPutIntoHands( parent );
	}		
	
    override bool CanReceiveItemIntoHands(EntityAI item_to_hands)
	{
		
		if(item_to_hands.IsMeleeWeapon() && item_to_hands.GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return super.CanReceiveItemIntoHands( item_to_hands );
	}			
};

пользуйся

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


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

@XenoZD Спасибо, буду ждать, а пока жду попробую добавить параметры то что ты написал в config.cpp

Так скрипт я уже добавил в то сообщение

 

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


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

@XenoZD Только сейчас увидел, я так понял код нужно вкинуть в файл ItemBase.c, по этому пути Dayz_life\scripts\4_World\Entities ?
 

+
Пытался найти среди гайдов оформление config.cpp файла, но походу все морочились только скриптами. Поизучай config.cpp других модов (старый добрый MedicalAttention к примеру), как минимум тебе нужен класс CfgMods, без него мод не найдёт откуда брать скрипты

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


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

 


modded class PlayerBase
{

override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)		
{
	EntityAI itemInHands = this.GetHumanInventory().GetEntityInHands();
	
	if(itemInHands && itemInHands.IsMeleeWeapon() && itemInHands.GetHealthLevel() == GameConstants.STATE_RUINED)
	{

	DropItem(ItemBase.Cast(itemInHands));
	PlayAttachmentDropSound();	
	}
		super.CommandHandler(pDt,pCurrentCommandID,pCurrentCommandFinished);	
	};
	
    override bool CanPutIntoHands(EntityAI parent)
	{
		
		if(parent.IsMeleeWeapon() && parent.GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return super.CanPutIntoHands( parent );
	}		
	
    override bool CanReceiveItemIntoHands(EntityAI item_to_hands)
	{
		
		if(item_to_hands.IsMeleeWeapon() && item_to_hands.GetHealthLevel() == GameConstants.STATE_RUINED )
			return false;

		return super.CanReceiveItemIntoHands( item_to_hands );
	}			
};

пользуйся

@projectdayz  А можно поподробней куда это вписывать?
Я создал папки в своём моде структура такая: Dayz_life\scripts\4_World\Entities\ManBase , в папке ManBase создал файл PlayerBase.c, в него вписал всё что выше указано. Правильно ли я всё сделал? Если да, то оно не работает, заруиненые вещи всё также берутся в руки и кладутся в инвентарь, и ещё работают как матрёшки кладутся друг в друга!
P.s. Прошу не указывайте мне на мои ошибки типа "Зачем ты это написал в эту строку и т.п.", а просто помогите решить, я просто ещё учусь всё это делать!
За ранее прошу прощения!

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

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


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

Всё правильно, но я верю максимум в то что этот код не позволит поднимать заруиненные ножи/топоры/подобные вещи. На всякий случай проверь, лежит ли мод на сервере, читается ли он, и указаны ли в config.cpp::CfgMods::YourModClass переменные dependencies[] = {"World") и worldScriptEngine::files[] = {"Dayz_life\scripts\4_World"}
Чуть позже скину свой вариант основного скрипта

@XenoZD Спасибо, буду ждать, а пока жду попробую добавить параметры то что ты написал в config.cpp

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


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

Так скрипт я уже добавил в то сообщение

 

@XenoZD Только сейчас увидел, я так понял код нужно вкинуть в файл ItemBase.c, по этому пути Dayz_life\scripts\4_World\Entities ?
 

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


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

@XenoZD Спасибо огромное за помощь, всё заработало как надо, уничтоженные вещи теперь не в руки не в инвентарь не взять.
Просто добавил в config.cpp в папке scripts вот эти параметры:
Может там чё-то лишнее, я не знаю, но с этими параметрами запускаются скрипты!

class CfgMods
{
    class Dayz_life
    {
        dir = "Dayz_life";
        picture = "";
        action = "";
        hideName = 1;
        hidePicture = 1;
        name = "Dayz_life";
        credits = "VictorUA87";
        author = "VictorUA87";
        authorID = "0";
        version = "0.1";
        extra = 0;
        type = "mod";

        dependencies[] = {"Game", "World", "Mission"};

        class defs
        {
            class gameScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/3_Game"};
            };
            class worldScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/4_World"};
            };
            class missionScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/5_Mission"};
            };
        };
    };
};

 

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

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


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

@XenoZD Спасибо огромное за помощь, всё заработало как надо, уничтоженные вещи теперь не в руки не в инвентарь не взять.
Просто добавил в config.cpp в папке scripts вот эти параметры:
Может там чё-то лишнее, я не знаю, но с этими параметрами запускаются скрипты!

class CfgMods {     class Dayz_life     {         dir = "Dayz_life";         picture = "";         action = "";         hideName = 1;         hidePicture = 1;         name = "Dayz_life";         credits = "VictorUA87";         author = "VictorUA87";         authorID = "0";         version = "0.1";         extra = 0;         type = "mod";         dependencies[] = {"Game", "World", "Mission"};         class defs         {             class gameScriptModule             {                 value = "";                 files[] = {"Dayz_life/scripts/3_Game"};             };             class worldScriptModule             {                 value = "";                 files[] = {"Dayz_life/scripts/4_World"};             };             class missionScriptModule             {                 value = "";                 files[] = {"Dayz_life/scripts/5_Mission"};             };         };     }; };


class CfgMods
{
    class Dayz_life
    {
        dir = "Dayz_life";
        picture = "";
        action = "";
        hideName = 1;
        hidePicture = 1;
        name = "Dayz_life";
        credits = "VictorUA87";
        author = "VictorUA87";
        authorID = "0";
        version = "0.1";
        extra = 0;
        type = "mod";

        dependencies[] = {"Game", "World", "Mission"};

        class defs
        {
            class gameScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/3_Game"};
            };
            class worldScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/4_World"};
            };
            class missionScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/5_Mission"};
            };
        };
    };
};

 

Всё норм, этого достаточно

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


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


Просто из интереса
-зачем тут дроп предметов в реальном времени если нужно было именно запретить их подбирать?
-CanPutIntoHands() разве не нужна для проверки "можно ли положить этот класс в руки"? Игрока в любом случае в руки не положишь, а с вещами это работать не должно
-для чего в CanReceiveItemIntoHands() проверка parent.IsMeleeWeapon(), если подбирать нельзя любой заруиненный ItemBase?

 

 


Всё правильно, но я верю максимум в то что этот код не позволит поднимать заруиненные ножи/топоры/подобные вещи. На всякий случай проверь, лежит ли мод на сервере, читается ли он, и указаны ли в config.cpp::CfgMods::YourModClass переменные dependencies[] = {"World") и worldScriptEngine::files[] = {"Dayz_life\scripts\4_World"}
Чуть позже скину свой вариант основного скрипта

P.S. чуть гранатами не суициднулся

 

modded class ItemBase { //Убирает действие "взять в руки" и возможность перетаскивать предметы в инвентарь, если предмет имеет состояние "Уничтожено" //Работает на все предметы, включая еду и жидкость //Если второе не нужно, заменить оба if'a на закомментированные override bool CanPutInCargo( EntityAI parent ) { //if(!IsKindOf("Edible_Base") && IsRuined()) if (IsRuined()) { return false; } return super.CanPutInCargo(parent); } override bool CanPutIntoHands( EntityAI parent ) { //if(!IsKindOf("Edible_Base") && IsRuined()) if (IsRuined()) { return false; } return super.CanPutIntoHands(parent); } }


modded class ItemBase
{
	//Убирает действие "взять в руки" и возможность перетаскивать предметы в инвентарь, если предмет имеет состояние "Уничтожено"
	//Работает на все предметы, включая еду и жидкость
	//Если второе не нужно, заменить оба if'a на закомментированные
    override bool CanPutInCargo( EntityAI parent )
	{
      	//if(!IsKindOf("Edible_Base") && IsRuined())
        if (IsRuined())
        {
            return false;
        }
        return super.CanPutInCargo(parent);
	}

    override bool CanPutIntoHands( EntityAI parent )
	{
  		//if(!IsKindOf("Edible_Base") && IsRuined())
        if (IsRuined())
        {
            return false;
        }
        return super.CanPutIntoHands(parent);
	}
}

 

Короче, я давал этот скрипт чуваку с учетом того что разбирать это будет самостоятельно.

 

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

 

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

 

 

 

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

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


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

@hardpr0 Ну самое главное, эти скрипты сделали то что я хотел!?

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

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


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

@hardpr0 Ну самое главное, эти скрипты сделали то что я хотел!?

? человек же написал что его скрипт не делал то что тебе было нужно, да и у тебя он не работал как ты написал. Как вдруг этот скрипт сделал то что ты хотел? ?

 

 

19 часов назад, hardpr0 сказал:

Короче, я давал этот скрипт чуваку с учетом того что разбирать это будет самостоятельно.

 

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

 

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

 

 

 


Понял

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


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

@XenoZD Вот эти скрипты помогли мне в решении, всё что вы скидывали, где я говорил что это не работает?

 

modded class ItemBase
{
    //Убирает действие "взять в руки" и возможность перетаскивать предметы в инвентарь, если предмет имеет состояние "Уничтожено"
    //Работает на все предметы, включая еду и жидкость
    //Если второе не нужно, заменить оба if'a на закомментированные
    override bool CanPutInCargo( EntityAI parent )
    {
          //if(!IsKindOf("Edible_Base") && IsRuined())
        if (IsRuined())
        {
            return false;
        }
        return super.CanPutInCargo(parent);
    }

    override bool CanPutIntoHands( EntityAI parent )
    {
          //if(!IsKindOf("Edible_Base") && IsRuined())
        if (IsRuined())
        {
            return false;
        }
        return super.CanPutIntoHands(parent);
    }
}
modded class PlayerBase
{

override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)        
{
    EntityAI itemInHands = this.GetHumanInventory().GetEntityInHands();
    
    if(itemInHands && itemInHands.IsMeleeWeapon() && itemInHands.GetHealthLevel() == GameConstants.STATE_RUINED)
    {

    DropItem(ItemBase.Cast(itemInHands));
    PlayAttachmentDropSound();    
    }
        super.CommandHandler(pDt,pCurrentCommandID,pCurrentCommandFinished);    
    };
    
    override bool CanPutIntoHands(EntityAI parent)
    {
        
        if(parent.IsMeleeWeapon() && parent.GetHealthLevel() == GameConstants.STATE_RUINED )
            return false;

        return super.CanPutIntoHands( parent );
    }        
    
    override bool CanReceiveItemIntoHands(EntityAI item_to_hands)
    {
        
        if(item_to_hands.IsMeleeWeapon() && item_to_hands.GetHealthLevel() == GameConstants.STATE_RUINED )
            return false;

        return super.CanReceiveItemIntoHands( item_to_hands );
    }            
};

И в конце я добавил вот эти параметры в config.cpp:

 

class CfgMods
{
    class Dayz_life
    {
        dir = "Dayz_life";
        picture = "";
        action = "";
        hideName = 1;
        hidePicture = 1;
        name = "Dayz_life";
        credits = "VictorUA87";
        author = "VictorUA87";
        authorID = "0";
        version = "0.1";
        extra = 0;
        type = "mod";

        dependencies[] = {"Game", "World", "Mission"};

        class defs
        {
            class gameScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/3_Game"};
            };
            class worldScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/4_World"};
            };
            class missionScriptModule
            {
                value = "";
                files[] = {"Dayz_life/scripts/5_Mission"};
            };
        };
    };
};

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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

Поддержка