- 31 Май 2019
- 405
- 57
Всем привет, мы будем делать самое лёгкое(наверное).
Первое, мы должны перейти к вашей кастомке customgame/scripts/npc (для новичка).
В папке открываем npc_items_custom.txt
И пишем
Открываем файл.
Тогда пишем:
Если вам что-то не понятно пишите сюда.
Первое, мы должны перейти к вашей кастомке customgame/scripts/npc (для новичка).
В папке открываем npc_items_custom.txt
И пишем
Код:
"DOTAAbilities"
{
"item_magic_lamp"
{
"ID" "1365" // Original id 365, let's change to 1365.
"BaseClass" "item_datadriven"
"AbilityTextureName" "item_panic_button" // Original item_name is item_panic_button
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityCooldown" "75.0"
"ItemCost" "0"
"ItemKillable" "1"
"ItemSellable" "0"
"ItemPurchasable" "1"
"ItemDroppable" "1"
"ItemPermanent" "1"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"bonus_health" "400"
}
"02"
{
"var_type" "FIELD_INTEGER"
"heal" "300"
}
"03"
{
"var_type" "FIELD_INTEGER"
"health_threshold" "20"
}
}
"Modifiers"
{
"modifier_magic_lamp_passive"
{
"Passive" "1"
"IsHidden" "1"
"IsDebuff" "0"
"OnTakeDamage" // Ивент на получение урон %attack_damage означает полученный урон от врага.
{
"RunScript"
{
"ScriptFile" "item_abilities/item_magic_lamp.lua"
"attack_damage" "%attack_damage"
"Function" "MagicLamp"
}
}
}
"modifier_magic_lamp_stat" // Даёт +400 здоровье
{
"Passive" "1"
"IsHidden" "1"
"Properties"
{
"MODIFIER_PROPERTY_HEALTH_BONUS" "%bonus_health"
}
}
}
}
}
Переходим к папке vscripts/item_abilities/item_magic_lamp.lua -- тут создаём
Открываем файл.
Тогда пишем:
Код:
function MagicLamp( event ) -- Вызывается именно эта функция
local caster = event.caster
local attacker = event.attacker
local ability = event.ability
local heal = ability:GetSpecialValueFor("heal") -- из AbilitySpecial
local health_threshold = ability:GetSpecialValueFor("health_threshold") -- и это тоже
local health_percent = caster:GetHealthPercent() -- здоровье в процентах
local damage = event.attack_damage -- полученный урон по герою
if ability:IsCooldownReady() then -- Проверка на перезарядку
if health_percent <= health_threshold then -- проверка на здоровье
local particle = ParticleManager:CreateParticle("particles/items5_fx/magic_lamp.vpcf", PATTACH_CENTER_FOLLOW, caster) -- не пишите PATTACH_ABSORIGIN_FOLLOW, оно не будет правильно показывать партикл, чтобы он был имено в центре героя надо PATTACH_CENTER_FOLLOW
caster:Heal(damage + heal, ability) -- что-то наподобие войда из backtrack и ещё исцеляем на +300. + вас акс не сможет убить.
caster:EmitSound("DOTA_Item.MagicLamp.Cast") -- звук предмета
caster:Purge(false, true, false, true, false) -- Сильное развеивание
ability:StartCooldown(ability:GetCooldown(ability:GetLevel())) -- Начинается перезарядка и проверяет какая перезарядка абилки.
end
end
end
Если вам что-то не понятно пишите сюда.