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
VictorUA87

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

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

Share this post


Link to post
Share on other sites

15 answers to this question

Recommended Posts

  • 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);
	}
}

 

Edited by XenoZD (see edit history)

Share this post


Link to post
Share on other sites



  • 1

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

Share this post


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

пользуйся

Share this post


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

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

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

 

Share this post


Link to post
Share on other sites
  • 1
Только что, VictorUA87 сказал:

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

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

Share this post


Link to post
Share on other sites
  • 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. Прошу не указывайте мне на мои ошибки типа "Зачем ты это написал в эту строку и т.п.", а просто помогите решить, я просто ещё учусь всё это делать!
За ранее прошу прощения!

Edited by VictorUA87 (see edit history)

Share this post


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

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

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

Share this post


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

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

 

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

Share this post


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

 

Edited by VictorUA87 (see edit history)

Share this post


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

 

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

Share this post


Link to post
Share on other sites
  • 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 для того чтобы пофиксить рейд с помощью руинед предметов а-ля топоры,кирки и т.д

 

 

 

Edited by hardpr0 (see edit history)

Share this post


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

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

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

 

 

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

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

 

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

 

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

 

 

 


Понял

Share this post


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

 

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.