- 31 Май 2019
- 405
- 58

Всем привет, сегодня покажу.
Как я создал, мидас свой.
Сначала: 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"
}
}
}
}
}
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
Не бойтесь, что здесь какие-то авторские права.
То я отвечу: Какие авторские права их здесь нет.
Все что это я делаю. Я так себя развлекаю
И не бойтесь, копировать.
Последнее редактирование: