DataDriven Item (moddota)

CrySidingWorld

Продвинутый
31 Май 2019
245
25
Полный гайд по npc_items_custom.txt и кодинг

Главное
Начинай з "item_" дальше имя вашего предмета. Если этого не прописать в начале предмета, это может произвести к плохим вещам
Пример:
"item_custom"
{
(...)
}

Следующее это BaseClass. Он необходим для работы, кастомных предметов.
Может использовать DataDriven, Lua.

Код:
"BaseClass" "item_datadriven" //
            "item_lua"
            "item_aegis"
Необходимости

Код:
"ItemCost" "322"
"ItemKillable" "0"
"ItemSellable" "1"
"ItemPurchasable" "1"
"ItemDroppable" "1"
"ItemKillable" позволяет врагам и союзникам уничтожить предмет.

Акции

Код:
"ItemStockMax" "1"
"ItemStockTime" "100"
"ItemStockInitial" "3"
Владение предметом

Если вы пропустите следующее, тогда по умолчанию ITEM_NOT_SHAREABLE
Код:
"ItemShareability" "ITEM_NOT_SHAREABLE"             //Rapier
                   "ITEM_PARTIALLY_SHAREABLE"       //Ring of Regen
                   "ITEM_FULLY_SHAREABLE"           //Gem
                   "ITEM_FULLY_SHAREABLE_STACKING"  //Consumables
Расходы

Код:
"ItemInitialCharges" "1" //How many charges should the item start with - Tango x3
"ItemDisplayCharges" "1" //Hide the charges of the item - Aegis
"ItemRequiresCharges" "1" //The active ability needs charges to be used - Urn
Ещё не забудьте добавить, это, после OnSpellStart

Код:
"OnSpellStart"
{
(...)
} "SpendCharge" {}
Расходуемые, предметы

Код:
"ItemStackable" "1"
"ItemPermanent" "0"
Если для ItemPermament поставить значение 1, тогда предмет не исчезнет даже после окончание зарядов.
Не указывая этот параметр, будет по умолчанию 1.

Авто применение

Предмет сразу же сработает, когда его подобрали.
"ItemCastOnPickup" "1"
Апгрейд предметов


"MaxUpgradeLevel" "5" // Dagon - 5
"ItemBaseLevel" "1" // Базовый уровень предмета. Меняйте его с каждым новым предметом.


Рецепты

Код:
"item_recipe_custom"
{
    "ID" "1200"
    "BaseClass"           "item_datadriven"
    "ItemRecipe"          "1" // Рецепт для комбинации предмета
    "ItemCost"            "0" // Если будет 0, тогда комбинирование предметов будет без рецепта
    "ItemResult"          "item_custom" // Результат комбинации предмета после ItemRequirements
    "ItemRequirements"
    {
        "01" "item_ingredient_1;item_ingredient_2;item_ingredient_3" // Необходимые предметы для комбинации
        "02" "item_ingredient_1;item_ingredient_2;item_ingredient_alternative_3" // Альтернатива
    }
}
ВАЖНО: Ваше имя для рецепта должно быть именно:
"item_recipe_(название_предмета)"

Это означает, что если ItemResult, который вы получите в результате, будет называться item_capuchino :), а рецепт выглядит так item_recipe_capuchino.
1590063571786.png (moddota.com)
Если вы не добавите это, тогда у вас могут возникнуть проблемы. Вы не увидите линии которые ведут к новым скомбинированными предметам.

Разбирание

"ItemDisassembleRule" "DOTA_ITEM_DISASSEMBLE_ALWAYS"
"DOTA_ITEM_DISASSEMBLE_NEVER"


Создание модификаторов для предмета

Теперь мы имеем предмет, но он нечего не делает сам по себе.
Чтобы была польза от предмета, надо добавить модификатор, который будет давать бонусы.
Код:
"Modifiers"
{
    "item_custom_modifier"
    {
        "Passive" "1"
        "IsHidden" "0"
        "Attributes" "MODIFIER_ATTRIBUTE_MULTIPLE" // Даёт возможность умножать бонусы предмета, по умолчанию MODIFIER_ATTRIBUTE_NONE
        "Properties"
        {
            "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%movement_speed"
            "MODIFIER_PROPERTY_EVASION_CONSTANT" "%evasion"
            "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS" "%bonus_str_agi"
            "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%bonus_agi"
            "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS" "%bonus_int"
            "MODIFIER_PROPERTY_BASEDAMAGEOUTGOING_PERCENTAGE" "%damage_bonus_percent"
        }

        "States"
        {
            "MODIFIER_STATE_SPECIALLY_DENIABLE" "MODIFIER_STATE_VALUE_ENABLED"
            "MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED"
            "MODIFIER_STATE_NO_HEALTH_BAR" "MODIFIER_STATE_VALUE_ENABLED"
        }
    }
}
Функционал предмета как заклинание

Помимо модификаторов, можно добавить функционал заклинание.
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
"AbilityCastAnimation" "ACT_DOTA_CAST_ABILITY_1"
"AbilityManaCost" "100"
"AbilitySpecial"
{ ... }

Также предметам, тоже нравится "OnSpellStart", "OnOwnerDied", "OnEquip".

Как не хотите, но вам надо установить AbilityBehavior, для того чтобы сделать его пассивным/неактивным, не сделал этого, по умолчанию, будет DOTA_ABILITY_BEHAVIOR_UNIT_TARGET.

Иконки и кастомный магазин

Чтобы была иконка для вашего предмета надо перейти по папкам:
/resource/flash3/images/items
Если нету images/items, тогда создайте.
И поместите файл .png размером 86 x 64 с тем же именем, что и у «item_custom», можно «item_» или без его.
Теперь переходите к вашему предмему и пишите:
"AbilityTextureName" "item_custom" // Пропишите свое название иконки

Чтобы создать свой магазин, перейдите в scripts
и создайте папку shops/map_shops.txt
ВНИМАНИЕ! Надо добавить название карты (не аддона), а карты .vmap
Обычный магазин по этой ссылке: В предмете вы можете поставить правила при, которых будет куплен предмет.
"SideShop" "1"
"SecretShop" "0"


Более подробный гайд по созданию кастомного магазина здесь: Creating a custom shop, step by step


На этом пока что все...
Так как я немного занят вернусь дополнять позже.

Кстати спасибо за поддержку :D
 
Последнее редактирование:

vulkantsk

Друзья CG
21 Июн 2017
772
107
www.dotabuff.com
Проект
Roshan defense
"ID" "1200" зря добавил, тк айдишник предмета ставится автоматически(если его нету). А если ошибешься, то получишь баг.
 
  • Нравится
  • Вооу
Реакции: SniperX и almazist1

LAPKI

Продвинутый
26 Окт 2018
199
48
"ID" "1200" зря добавил, тк айдишник предмета ставится автоматически(если его нету). А если ошибешься, то получишь баг.
Ну а если этот ID нужен? Правильно что поставил, в данном случае уточнение атрибутов лишним не будет, ну а так можно поставить 10k+ ид ну или 100k+ чтобы быть уверенным что нет корреляции
 

ZLOY

Администратор
Команда форума
27 Июн 2016
741
100
Ну а если этот ID нужен? Правильно что поставил, в данном случае уточнение атрибутов лишним не будет, ну а так можно поставить 10k+ ид ну или 100k+ чтобы быть уверенным что нет корреляции
Сейчас в доте около 360 итемов. И еще айди от 1000 до 1032 заняты
 
Реклама: