dimquea

Настройка кастомного лута

Вопрос

Нашёл одну из немногих тему по кастомному луту

тыц

не очень понятна настройка вероятности.

как я понял, помимо настройки вероятности непосредственно айтимов (CfgLootSmall.hpp и CfgLoot.hpp, кстати в чём между ними разница):

        trash[] = {
                {"TrashTinCan",0.5}
                ,{"TrashJackDaniels",0.05}
                ,{"ItemSodaEmpty",0.25}
                ,{"ItemTrashToiletpaper",0.1}
                ,{"ItemTrashRazor",0.1}

есть ещё вероятность настраиваемая по зданиям (CfgBuildingLoot.hpp)

        class IndustrialFuel: Default {
                zombieChance = 0.4;
                zombieClass[] = {"z_worker1","z_worker2","z_worker3"};
                maxRoaming = 2;
                lootChance = 0.4;
                lootPos[] = {};
                lootType[] = {
                        {"ItemGenerator","magazine",0.01},
                        {"fuel_pump_kit","magazine",0.01},
                        {"","generic",0.18},
                        {"","trash",0.28},
                        {"","military",0.04},
                        {"PartGeneric","magazine",0.04},
                        {"PartWheel","magazine",0.05},
                        {"PartFueltank","magazine",0.02},
                        {"PartEngine","magazine",0.02},
                        {"PartGlass","magazine",0.04},
                        {"PartVRotor","magazine",0.01},
                        {"ItemJerrycan","magazine",0.04},
                        {"WeaponHolder_ItemHatchet_DZE","object",0.07},
                        {"ItemKnife","military",0.07},
                        {"ItemToolbox","weapon",0.06},
                        {"ItemWire","magazine",0.01},
                        {"ItemTankTrap","magazine",0.04},
                        {"ItemKeyKit","weapon",0.01}
                };
                lootTypeSmall[] = {
                        { "","generic",0.5 },
                        { "","trash",0.28 },
                        { "","military",0.14 },
                        { "ItemKnife","weapon",0.07 },
                        { "ItemKeyKit","weapon",0.01 }
                };
        };

как я понял lootChance = 0.4 определяет вероятность появления лута.

а следующие строки определяют что именно заспавнится.

я вот ни как не могу понять как складывается вероятность, какой параметр важнее, и как правильнее увеличить спавн лута?

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


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

2 ответа на этот вопрос

Есть 3 основных файла лута.

Ты их уже написал.

Есть файл лута в зданиях - cfgBuildingLoot.hpp

houses.jpg

 

Тут настраивается общий шанс лута в здании.

У здания есть точки лута, и точки "малого" лута

А так же список предметов и групп лута.

В точках лута спавнятся предметы из cfgLoot

В точках малого лута из cfgSmallLoot

У здания прописывается в луте, - группа или конкретный предмет.

К примеру, если прописана группа предметов, то открывается файл cfgLoot(или SmallLoot - смотря для какой точки), и уже оттуда берутся шансы спавна.

Заспавнится один предмет из группы, - соответственно шансам.

 

Для примера:

Изначально определяется общий шанс лута в здании.

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

lootType[] = {
{"","generic",0.18},
{"","trash",0.28},
{"","military",0.04},
....
 

 

Спавн будет взят из файла cfgLoot, т.к. указан lootType, а не LootTypeSmall

С шансом 4% будет выбрана группа - military, или 18% для группы - Дженерик(основное), или 28% будет выбран мусор(треш).

После выбора группы спавна, по шансам в группе будет определен предмет.

т.е. открывается сам файл cfgLoot

Ищется выбранная группа.

И из нее по шансам в группе выбирается предмет который будет заспавнен.

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


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


 

И из нее по шансам в группе выбирается предмет который будет заспавнен.

доходчиво, спасибо.

примерно так и предполагал. значит вероятность надо повышать комплексно, а не только в cfgloot.

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


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

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

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

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

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


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

Войти

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


Войти сейчас

  • Похожие публикации

    • Автор: paranoyk
      Делается это немного нудно,но сравнительно просто (когда есть точки спавна).
      При спавне Land_Wreck_Uaz с помощью оффлайнера получим строку следующего вида.
      SpawnObject( "Land_Wreck_Uaz", "14348.268555 4.133186 13191.887695", "0.000000 0.000000 0.000000" );
      Нам необходимо задать точку для спавна "сетки лута".
      Для этого мы в файл по mapgrouppos.xml прописываем координаты взятые из строчки для спавна объекта (выше).
      <group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695" rpy="0.000000 0.000000 0.000000" a="0.000000" />
       
      group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695 - координаты запавненого УАЗика.
      rpy="0.000000 0.000000 0.000000" - числовые значения Yaw,Pitch,Roll соответственно. Берём их из всё той же строчки, но важно помнить что они там записаны в обратном порядке.
      a="0.000000"- угол порота сетки относительно угла поворота......короче! (Yaw-90) х (-1) Уже писал,что можно играться с 360 градусами,но пишу всегда полученное значение,проблем нет.

      И главное "сетка лута". Изначально её УАЗик не имеет, пишем её сами в файл mapGroupProto.xml .
       
      <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="...класс вещей для спавна" /> <usage name="...класс вещей для спавна" /> <container name="lootfloor" lootmax="5"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" />-левое сиденье <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" />-правое переднее седение полик <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" />-место за кпп середина <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" />-правая часть капота возле стекла <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" />левая часть капота впереди </container> <container name="lootshelves" lootmax="3"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" />-правое переднее крыло <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" />- центр переднего бампера <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" />-слева на бампере </container> <container name="lootweapons" lootmax="3">-"контейнер" для спавна длинногоствольного оружия, максимальное колличество в спавне, патронов и гранат. <category name="weapons" /> <category name="explosives" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> -центр багажника <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" />-заднее левое крыло <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" />-заднее правое крыло </container> </group> Вставляем нужные категории,классы и тэги,это практически конструктор.
      К примеру у меня пока выглядит так -
       
      <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="Military" /> <usage name="Industrial" /> <usage name="Office" /> <container name="lootfloor" lootmax="5"> <category name="food" /> <category name="clothes" /> <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" /> <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" /> <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" /> <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" /> <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" /> </container> <container name="lootshelves" lootmax="3"> <category name="tools" /> <category name="vehiclesparts" /> <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" /> <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" /> <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" /> </container> <container name="lootweapons" lootmax="3"> <category name="weapons" /> <category name="explosives" /> <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" /> <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" /> </container> </group> Также можно даже исключить полностью строчку lootmax="...". Большой разницы я не заметил.
      Сразу скажу,баги стандартные -длинноствол в багажнике может пробить ствол,иногда возможна "левитация" предметов.
      Во общем как то так.
      (возможно позже вылож сетку и для обломков V3S и С130. Решение для "заброшенной колонны" на севере-тоже в процессе.Кому надо-пишите)
    • Автор: AntonivkA
      Итак, господа. В 1.05 разрабы похоже сломали механику спавна лута. У меня предметы стали спавниться там, где их не должно быть. Заметил сразу, поскольку таблица лута у меня переделана основательно. Например, Песочный барьер у меня прописан только на Военках и Полиц.участке, и все работало корректно до 1.05. Теперь, песочный барьер я нахожу в гаражах, мастерских и жилых домах вокруг полиц. участка и в самом полиц. участке. Помимо этого, ребята стали замечать и скинули инфу, что на СЗ в гаражах и мастерских стал появлятся военный лут, хотя его там не должно быть.
      Кто-что скажет по этому поводу. Заметил ли кто-то подобное у себя?
       
    • Автор: zra47
      Забыл где это настраивается спавн лута ? в домах в казарамах и тп
    • Автор: BorizzK
      Не изучал эту тему, было не нужно
      Поглядел пару тем включая эту
      И пытаюсь понять
      А как мне увеличить спавн лута, например на базе Павлово + добавить туда спавн лута, который по умолчанию ТАМ не спавнится?
       
      Спасибо!
       
    • Автор: DrTauren
      В этом гайде расскажу как сделать несколько комплектов стартового лута для игроков. При появлении будет случайно выбираться один из трёх комплектов.
      Всё практически одинаково: Топор, одежда, сумка. Разница только в оружии.
      Присутствует три комплекта: М4А1, SVD, UMP. Всё с прицелами, прикладами и т.д., плюс три магазина патронов.

      Инструкция:
      1) Открываем файл init.c и находим этот код:
      class CustomMission: MissionServer { ........ } Mission CreateCustomMission(string path) { return new CustomMission(); } 2) Весь первый класс (который CustomMission: MissionServer) заменяем на это:
      class CustomMission: MissionServer { void SetRandomHealth(EntityAI itemEnt) { int rndHlt = Math.RandomInt(40,100); itemEnt.SetHealth("","",rndHlt); } override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { Entity playerEnt; playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player Class.CastTo(m_player, playerEnt); GetGame().SelectPlayer(identity, m_player); return m_player; } void addMags(PlayerBase player, string mag_type, int count) { if (count < 1) return; EntityAI mag; for (int i = 0; i < count; i++) { mag = player.GetInventory().CreateInInventory(mag_type); } player.SetQuickBarEntityShortcut(mag, 1, true); } EntityAI assaultClass(PlayerBase player) { EntityAI gun = player.GetHumanInventory().CreateInHands("M4A1"); gun.GetInventory().CreateAttachment("M4_RISHndgrd_Black"); gun.GetInventory().CreateAttachment("M4_MPBttstck_Black"); gun.GetInventory().CreateAttachment("ACOGOptic"); addMags(player, "Mag_STANAG_30Rnd", 3); return gun; } EntityAI sniperClass(PlayerBase player) { EntityAI gun = player.GetHumanInventory().CreateInHands("SVD"); gun.GetInventory().CreateAttachment("PSO1Optic"); addMags(player, "Mag_SVD_10Rnd", 3); return gun; } EntityAI smgClass(PlayerBase player) { EntityAI gun = player.GetHumanInventory().CreateInHands("UMP45"); gun.GetInventory().CreateAttachment("PistolSuppressor"); addMags(player, "Mag_UMP_25Rnd", 3); return gun; } override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { player.RemoveAllItems(); player.GetInventory().CreateInInventory("TTSKOPants"); player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); player.GetInventory().CreateInInventory("CombatBoots_Black"); player.GetInventory().CreateInInventory("ImprovisedBag"); player.GetInventory().CreateInInventory("SodaCan_Pipsi"); player.GetInventory().CreateInInventory("SpaghettiCan"); player.GetInventory().CreateInInventory("HuntingKnife"); ItemBase rags = player.GetInventory().CreateInInventory("Rag"); rags.SetQuantity(4); EntityAI primary; EntityAI axe = player.GetInventory().CreateInInventory("FirefighterAxe"); switch (Math.RandomInt(0, 3)) { case 0: primary = assaultClass(player); break; case 1: primary = sniperClass(player); break; case 2: primary = smgClass(player); break; } player.LocalTakeEntityToHands(primary); player.SetQuickBarEntityShortcut(primary, 0, true); player.SetQuickBarEntityShortcut(rags, 2, true); player.SetQuickBarEntityShortcut(axe, 3, true); } };
      Вы также можете настроить оружие и всё остальное под себя при помощи статьи, где указаны ID всех предметов:

      Так же есть возможность выдавать лут конкретным людям через UID: