Мой Hand Of Midas Слив моего предмета

  • Автор темы Автор темы DDSuper
  • Дата начала Дата начала

DDSuper

Друзья CG
31 Май 2019
405
58
GiantVibrantFlee-small.gif

Всем привет, сегодня покажу.
Как я создал, мидас свой.

Сначала: Item_datadriven
Код:
"item_hand_of_midas_2"
    {
        //-----------------------------------------------------------------------------
        // By:DDSuper
        // Data: 01.10.2019
        // Script Folder:scripts/vscripts/items/hand_of_midas_2.lua
        //-----------------------------------------------------------------------------
        "BaseClass"    "item_datadriven" // BaseClass
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK" // Ability Behavior -- Поведение способности
        "AbilityUnitTargetTeam"            "DOTA_UNIT_TARGET_TEAM_ENEMY" // Target -- Цель из команды = вражеская цель
        "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" // UnitTarget -- Вражеская цель. Какая? = КРИП | ГЕРОЙ
        "AbilityUnitTargetFlags"        "DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS | DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES" /// Flags -- Флаги = для того чтобы, вы не смогли использовать, этот предмет
        "AbilityTextureName"    "hand_midas_2" // Разрешение икноки предмета  88x64. Для способности, разрешение 128х128

        // State
        "AbilityCastRange"                "800" // Из какого радиуса можна использовать перчатку роскомнадзорв
        "AbilityCastPoint"                "0.0" // Задержка
        "AbilityCooldown"                "120.0" // Дальше лень

        // Item Info
        //-------------------------------------------------------------------------------------------------------------
        "AbilityManaCost"                "0"
        "ItemCost"                        "4350"
        "ItemShopTags"                    "attack_speed;hard_to_tag;ez_money"
        "ItemRecipe"    "item_recipe_hand_of_midas_2"
        "ItemQuality"                    "common"
        "ItemAliases"                    "hand of midas"
        "ItemDeclarations"                "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS"
        "ItemBaseLevel"    "2"
        "MaxUpgradeLevel"    "2"
        "ShouldBeSuggested"                "1"

        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_attack_speed"    "40 80"
            }
            "02"
            {
                "var_type"                "FIELD_FLOAT"
                "xp_multiplier"            "1.85 2.85"
            }
            "03"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_gold"            "160 300"
            }
            "04"
            {
                "var_type"                "FIELD_INTEGER"
                "transmute_cast_range_tooltip"            "600 800"
            }
            "05"
            {
                "var_type"    "FIELD_INTEGER"
                "reduce_gold"    "-300"
            }
            "06"
            {
                "var_type"    "FIELD_FLOAT"
                "Xpget"        "60"
            }
        }
        "OnSpellStart"
        {
            "RunScript" // Мидас, даст возможность, использовать на героя и красть у него золото
            {
                "ScriptFile"    "items/hand_of_midas_2"
                "Function"                "item_hand_of_midas_2_spell_start"
                "BonusGold"                "%bonus_gold"
                "XPMultiplier"            "%xp_multiplier"
                "ReduceGold"            "%reduce_gold"
                "GetXp"                    "%Xpget"
            }
        }
        "Modifiers"
        {
            "modifier_buffs"
            {
                "Passive"            "1"
                "IsHidden"            "0"
                "IsDebuff"            "0"
      
                "Properties"
                {
                    "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%bonus_attack_speed"
                }

                "OnAttackLanded"
                {
                    "RunScript" // Если заклинатель атаковал он получит золото и опыт, но, если это герой дальнего боя. Он получит меньше опыта и золота
                    {
                        "ScriptFile"    "items/hand_of_midas_2"
                        "Function"        "GoldOnAttackAndXp"
                        "Gold"            "10"
                        "Xp"            "5"
                        "GoldRange"        "5"
                        "XpRange"        "3"
                    }
                }
            }
        } 
    }
Ну а теперь API, необходимо, немного знать луа!
Lua:
--[[--[[--[[--[[--[[--[[--[[--[[////
Author:DDSuper                    //
Item:Custom Midas                //                     
--]]--]]--[[--[[--[[--[[--[[--[[//

function item_hand_of_midas_2_spell_start(keys)
    keys.caster:ModifyGold(keys.BonusGold, true, 1) -- Сколько ты получишь золота
    keys.target:EmitSound("DOTA_Item.Hand_Of_Midas") -- Звук предмета

    --[[

    Эффекты частиц, и контроль этих частиц
    --]]
    local midas_particle = ParticleManager:CreateParticle("particles/items2_fx/hand_of_midas.vpcf", PATTACH_ABSORIGIN_FOLLOW, keys.target)  -- Эффекты, частиц мидаса
    ParticleManager:SetParticleControlEnt(midas_particle, 1, keys.caster, PATTACH_POINT_FOLLOW, "attach_hitloc", keys.caster:GetAbsOrigin(), false) -- Контроль как и сказано

    if keys.target:IsRealHero() and keys.caster.AddExperience then  -- Если это цель настоящий герой
        keys.caster:AddExperience(keys.GetXp, false, false) -- Дать опыт себе
        keys.target:ModifyGold(keys.ReduceGold, true, 0) -- Украсть, у него золота
        keys.caster:ReduceMana(100) -- Снизить ману. Если вы использовали на героя. Можете Убрать.
    end
    if keys.target:IsCreep() then -- Если это крип
        keys.caster:AddExperience(keys.target:GetDeathXP() * keys.XPMultiplier, false, false ) -- Дать себе опыт только с умножителем без умножителя keys.caster:AddExperience(keys.GetXp, false, false)
        keys.target:SetDeathXP(0) -- 0 Чтобы не получить опыт за крипа
        keys.target:SetMinimumGoldBounty(0) -- Убрать награду за крипа
        keys.target:SetMaximumGoldBounty(0)
        keys.target:Kill(keys.ability, keys.caster) -- Убить крипа
    if keys.target:IsAncient() then return end -- Это древний крип? Если да тогда вернуть конец
    end -- Почему здесь ещё end а не знаю дота считает что я не поставил где-то конец. Ну такая дота)
end

function GoldOnAttackAndXp(keys) -- Если заклинатель атакует

    if keys.caster:IsAttacking() and keys.target:IsRealHero() and keys.ability:IsCooldownReady() and not keys.caster:IsRangedAttacker() and keys.caster.AddExperience then -- Думаю поняли keys.ability:IsCooldownReady() абилка будет работать, если есть перезарядка, она не будет работать.
        keys.caster:AddExperience(keys.Xp, false, false) -- Дать опыт.
        keys.caster:ModifyGold(keys.Gold, true, 1) -- Дать золото.
    end

    if keys.caster:IsRangedAttacker() and keys.target:IsRealHero() and keys.ability:IsCooldownReady() then -- Если заклинатель дальнего боя.
        keys.caster:AddExperience(keys.XpRange, false, false) -- Дать опыт только меньше
        keys.caster:ModifyGold(keys.GoldRange, true, 1) -- Дать золото тоже меньше.
        keys.ability:StartCooldown(0.5) -- Добавить перезарядку
    end
end

Не бойтесь, что здесь какие-то авторские права.
То я отвечу: Какие авторские права их здесь нет.
Все что это я делаю. Я так себя развлекаю
И не бойтесь, копировать.
 
Последнее редактирование:
  • Нравится
Реакции: Sannin
Да, это же A.I Юниты (Искусственный интеллект)
Сори
Старайся делать гайды именно по луа т.к. в будущем придется писать на луа так или иначе , это более высокий порядок ))
 
  • Хаха
Реакции: DDSuper
Реклама: