DayZ Enscript полезные скрипты

Тема закреплена бессрочно.
Делмися :)

Создаем массив предметов и потом выясняем, надеты ли они на игроке:
PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );

array<string >GasMaskClassnames = new array<string >;
GasMaskClassnames.Insert("GasMask");
GasMaskClassnames.Insert("GP5GasMask");
GasMaskClassnames.Insert("AirBorneMask");


EntityAI itemEnt;
//itemEnt = player.GetInventory().CreateInInventory( "GasMask" ); //Создаем маску GasMask на игроке

ItemBase headgear = ItemBase.Cast(player.FindAttachmentBySlotName( "mask" )); //тут ищет маску, но можно исктаь любой слот игрока
GetGame().Chat(headgear.GetType(), "colorImportant");

if(GasMaskClassnames.Find(headgear.GetType()) != -1){
    GetGame().Chat("found GasMask", "colorImportant"); //если нашло
    } else {
    GetGame().Chat("NO GasMask", "colorImportant"); //если не нашло
}
 
Отправляет сообщение в директ чат:
ChatMessageEventParams chat_params = new ChatMessageEventParams( CCDirect, "От кого", "Текст сообщения", "пусто");
MissionGameplay.Cast(GetGame().GetMission()).m_Chat.Add( chat_params );
 

PR9INICHEK

Переводчик DZR
Ур
8
 
Создаём полный магазин к UMP45 в руках игрока:
Magazine magUMP45 = player.GetHumanInventory().CreateInHands( "Mag_UMP_25Rnd" );

Смотрим кол-во патрон в магазине:
Print( magUMP45.GetAmmoCount() );

Опустошаем магазин:
magUMP45.LocalSetAmmoCount( 0 );
 
Последнее редактирование:

PR9INICHEK

Переводчик DZR
Ур
8
 
Создаём на земле полный стак патронов к магазину:
GetGame().CreateObject( "Ammo_45ACP", player.GetPosition() );
 

PR9INICHEK

Переводчик DZR
Ур
8
 
C++:
// Создаём заводскую удочку в руках у игрока
    // TO-DO Добавить проверку, а свободны ли руки
ItemBase fishingRod = player.GetHumanInventory().CreateInHands( "FishingRod" );
Print( fishingRod );

C++:
// Создаём в инвенторе игрока заводской крючок сразу с червяком на нём
    // TO-DO Добавить проверку, а есть ли место в инвентаре, чтобы можно было создавать предмет
ItemBase bait = player.GetInventory().CreateInInventory( "Bait" );
Print( bait );
 
@PR9INICHEK
Создаём полный магазин к UMP45 в руках игрока:
MagazineStorage magUMP45 = player.GetHumanInventory().CreateInHands( "Mag_UMP_25Rnd" );

Смотрим кол-во патрон в магазине:
Print( magUMP45.GetAmmoCount() );

Опустошаем магазин:
magUMP45.LocalSetAmmoCount( 0 );
А не встречал способ создать коробок с одной спичкой?
 

PR9INICHEK

Переводчик DZR
Ур
8
 
@PR9INICHEK

А не встречал способ создать коробок с одной спичкой?
Прям за одну команду?

Если да, то пока что не встречал, скорее всего надо куда-то копать в CreateObject() и ему подобные

Я удивился, что крючок сразу с червяком создался, для меня это было неожиданно :)
 

PR9INICHEK

Переводчик DZR
Ур
8
 
@-=PA=-Михаил
А так, за наполнение контейнеров вроде SetQuantity() отвечает
 
Прям за одну команду?

Если да, то пока что не встречал, скорее всего надо куда-то копать в CreateObject() и ему подобные

Я удивился, что крючок сразу с червяком создался, для меня это было неожиданно :)


Коробок с одной спичкой в инвентаре:
       EntityAI itemCreated = Legs.GetInventory().CreateInInventory("Matchbox");
        if ( Class.CastTo( SomeItem, itemCreated ) )
                SomeItem.SetQuantity( 1 );
 
Создаём списки одежды по категориям, которые потом при спавне рандомно вешаются на игрока.:
    string RandomItems(string category){
        int rand;

        switch (category) {
      
        case "Body":
        array<string> BodyItems;
        BodyItems = new array<string >;
        BodyItems.Insert("Shirt_BlueCheck");
        BodyItems.Insert("Shirt_BlueCheckBright");
        BodyItems.Insert("Shirt_GreenCheck");
        BodyItems.Insert("Shirt_RedCheck");
        BodyItems.Insert("Shirt_WhiteCheck");
        BodyItems.Insert("Shirt_PlaneBlack");

         rand = Math.RandomIntInclusive(0,5); // -1
        return BodyItems[rand];
        break;
      
        case "Waist":
        array<string> WaistItems;
        WaistItems = new array<string >;
        WaistItems.Insert("fannypack_pink_mung");
        WaistItems.Insert("fannypack_black_mung");
        WaistItems.Insert("fannypack_multi_mung");
        WaistItems.Insert("fannypack_camo_mung");

         rand = Math.RandomIntInclusive(0,3); // -1
        return WaistItems[rand];
        break;
      
        case "Legs":
        array<string> LegsItems;
        LegsItems = new array<string >;
        LegsItems.Insert("Jeans_Black");
        LegsItems.Insert("Jeans_Blue");
        LegsItems.Insert("Jeans_Brown");
        LegsItems.Insert("Jeans_Green");
        LegsItems.Insert("Jeans_Grey");
        LegsItems.Insert("Jeans_BlueDark");

         rand = Math.RandomIntInclusive(0,5); // -1
        return LegsItems[rand];
        break;
      
        case "Foot":
        array<string> FootItems;
        FootItems = new array<string >;
        FootItems.Insert("JoggingShoes_Black");
        FootItems.Insert("JoggingShoes_Blue");
        FootItems.Insert("JoggingShoes_Red");
        FootItems.Insert("JoggingShoes_Violet");
        FootItems.Insert("JoggingShoes_White");

         rand = Math.RandomIntInclusive(0,4); // -1
        return FootItems[rand];
        break;
      
        case "Passport":
        array<string> PassportItems;
        PassportItems = new array<string >;
        PassportItems.Insert("BMAD_Passport_CZ");
        PassportItems.Insert("BMAD_Passport_DE");
        PassportItems.Insert("BMAD_Passport_Soviet");
        PassportItems.Insert("BMAD_Passport_UK");
        PassportItems.Insert("BMAD_Passport_US");

         rand = Math.RandomIntInclusive(0,4); // -1
        return PassportItems[rand];
        break;
      
        case "Money":
        array<string> MoneyItems;
        MoneyItems = new array<string >;
        MoneyItems.Insert("BMAD_Money_1USD");
        MoneyItems.Insert("BMAD_Money_20USD");
        MoneyItems.Insert("BMAD_Money_200Rubel");
        MoneyItems.Insert("BMAD_Money_1000Rubel");

         rand = Math.RandomIntInclusive(0,3); // -1
        return MoneyItems[rand];
        break;
      
        case "Food":
        array<string> FoodItems;
        FoodItems = new array<string >;
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_WHITE");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_WAVES");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_STRAWBERRY");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_PEANUTCARAMEL");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_OREOWHITE");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_OREO");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_NOISETTE");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_IUC");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_DESSERT");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_CLASSIC");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_CHIPSAHOY");
        FoodItems.Insert("DONFOOD_CANDYBAR_ILKA_CARAMEL");
        FoodItems.Insert("DONFOOD_CANDYBAR_KATKIT");

         rand = Math.RandomIntInclusive(0,12); // -1
        return FoodItems[rand];
        break;
      
        case "Head":
        array<string> RagHeadgear;
        RagHeadgear = new array<string >;
        RagHeadgear.Insert("Bandana_BlackPattern");
        RagHeadgear.Insert("Bandana_Blue");
        RagHeadgear.Insert("Bandana_CamoPattern");
        RagHeadgear.Insert("Bandana_Greenpattern");
        RagHeadgear.Insert("Bandana_Pink");
        RagHeadgear.Insert("Bandana_PolkaPattern");
        RagHeadgear.Insert("Bandana_RedPattern");
        RagHeadgear.Insert("Bandana_Yellow");

         rand = Math.RandomIntInclusive(0,7); // -1
        return RagHeadgear[rand];
        break;
      
        }
        return "";
      
    }

    override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
    {
        player.RemoveAllItems();
      
        EntityAI itemCreated = null;
        EntityAI WaistBag = null;
        EntityAI Legs = null;
        EntityAI Body = null;
        ItemBase SomeItem = null;
      
        Body = player.GetInventory().CreateInInventory(RandomItems("Body"));
        WaistBag = player.GetInventory().CreateInInventory(RandomItems("Waist"));
      
        if ( Class.CastTo( SomeItem, WaistBag ) )
                SomeItem.SetHealth01( "", "", 0.7 );
      
        Legs = player.GetInventory().CreateInInventory(RandomItems("Legs"));
        itemCreated = player.GetInventory().CreateInInventory(RandomItems("Foot"));
        itemCreated = Body.GetInventory().CreateInInventory(RandomItems("Head"));

        itemCreated = WaistBag.GetInventory().CreateInInventory(RandomItems("Money"));
        itemCreated = WaistBag.GetInventory().CreateInInventory("dzr_SmallFlashlight");
        itemCreated.GetInventory().CreateAttachment("dzr_BatteryAA15V");

itemCreated = WaistBag.GetInventory().CreateInInventory(RandomItems("Passport"));
        itemCreated = WaistBag.GetInventory().CreateInInventory("SAK_Mung");
                if ( Class.CastTo( SomeItem, itemCreated ) )
                SomeItem.SetHealth01( "", "", 0.3 );

        itemCreated = Legs.GetInventory().CreateInInventory("leatherwallet_mung");
        itemCreated = Legs.GetInventory().CreateInInventory("Matchbox");
        if ( Class.CastTo( SomeItem, itemCreated ) )
                SomeItem.SetQuantity( 1 );
        itemCreated = Legs.GetInventory().CreateInInventory("leatherwallet_mung");
                if ( Class.CastTo( SomeItem, itemCreated ) )
                SomeItem.SetHealth01( "", "", 0.6 );
        itemCreated = Legs.GetInventory().CreateInInventory("CP_CigarettePack_Empty");
        itemCreated = WaistBag.GetInventory().CreateInInventory("CP_Cigarette");
        itemCreated = WaistBag.GetInventory().CreateInInventory(RandomItems("Food"));
      
      
        itemCreated = Body.GetInventory().CreateInInventory("Paper");
        itemCreated = Body.GetInventory().CreateInInventory("Pen_Blue");
      
        itemCreated = player.GetInventory().CreateInInventory("SportGlasses_Black");     
    };

Рандомит прекрасно!
1635958873458.png

1635958929570.png

1635958985739.png
 
Последнее редактирование:

PR9INICHEK

Переводчик DZR
Ур
8
 
Выводит в script.log или в консоль пустую строчку:
Print( "\n" );
 

rassvet1124

Только с побережья
Ур
0
 
Прям за одну команду?

Если да, то пока что не встречал, скорее всего надо куда-то копать в CreateObject() и ему подобные

Я удивился, что крючок сразу с червяком создался, для меня это было неожиданно :)
Странно даже )) Сам же прописал не крючок, а наживку - Bait. ;)
 
Последнее редактирование:

rassvet1124

Только с побережья
Ур
0
 
Ребят, кто из вас работал с продуктами Mikero? В части защиты PBO?
 
Ребят, кто из вас работал с продуктами Mikero? В части защиты PBO?
Я недавно, признаюсь грешен, пытался снять обфускацию. Восстановил 20%. остальное — каракули :)
Защищать не пытался. Потребности нет.
 

PR9INICHEK

Переводчик DZR
Ур
8
 
Может быть не относится к самой теме.
Ребята, каким-то образом реализовали, что в описании мода для русскоязычных информация на русском, а для англоязычных на английском и не надо дублировать всё в описании

Открываю через браузер:
1646761017828.png


Открываю через Steam:
1646761059726.png



Похоже, что где-то у Стим есть файл локализации

@-=PA=-Михаил может знаете что-то об этом?
 
не надо дублировать всё в описании
Не советую.

Если бы стим сделал это удобно, например сразу вывел бы два окна рядом и сиди пиши на русском и английском сразу, тогда да.
Но когда тебе нужно нажать ещё лишних 10 раз, чтобы обновить обе версии на двух языках, то очень быстро устанешь. Я устал.

Поэтому дублирую сразу. Иначе гемор.

А ещё хуже гемор, это если хоть раз заполнишь русскую версию, то удалить не сможешь. Так и будешь до конца дней редактировать обе версии.
 

PR9INICHEK

Переводчик DZR
Ур
8
 
Передавая параметры запуска, можно включать некоторые возможности для дебаггинга
Например, параметр -doActionLog отображает информацию о действиях игрока:

1650732732933.png


Все эти параметры можно найти по функции IsCLIParam()
Часть из них есть в файле Debug.c(3_Game/tools/)

Скорее всего, чтобы логирование подобных вещей заработало, потребуется его дополнительно включить.
Для этого нужно будет поменять значение у переменной m_DoLogs в этом файле.
Например с помощью модификации класса LogManager
C++:
modded class LogManager
{
override static void Init()
    {
        //super.Init();
#ifdef DEVELOPER
        m_DoLogs = true;
#else
        m_DoLogs = false;
#endif

        m_DoActionDebugLog = IsCLIParam("doActionLog");
        m_DoSymptomDebugLog = IsCLIParam("doSymptomLog");
        m_DoInventoryMoveLog = IsCLIParam("doInvMoveLog");
        m_DoInventoryReservationLog = IsCLIParam("doInvReservLog");
        m_DoInventoryHFSMLog = IsCLIParam("doInvHFSMLog");
        m_DoWeaponLog = IsCLIParam("doWeaponLog");
        
        Print("m_DoActionDebugLog: " + m_DoActionDebugLog);
        Print("m_DoSymptomDebugLog: " + m_DoSymptomDebugLog);
        Print("m_DoInventoryMoveLog: " + m_DoInventoryMoveLog);
        Print("m_DoInventoryReservationLog: " + m_DoInventoryReservationLog);
        Print("m_DoInventoryHFSMLog: " + m_DoInventoryHFSMLog);
        Print("m_DoWeaponLog: " + m_DoWeaponLog);
        
        m_DoLogs = true;
    }
}
 

PR9INICHEK

Переводчик DZR
Ур
8
 
Иногда функцию Print() вот таким образом используют:
C++:
Print("progress: " + progress + " | m_TimeElpased: " + m_TimeElpased + " | m_TimeToComplete: " + m_TimeToComplete);
 
Сверху