- 31 Май 2019
- 405
- 57
Здраствуйте, так как я давно не создавал тем, я решил создать этот гайд(но скорее всего, как просто вот код берите его и всё)
Начнём с небольшого минуса, хотя сложно сказать что это минус этой способности:
Дальше луа парт
Начнём с небольшого минуса, хотя сложно сказать что это минус этой способности:
- Эта способность не наводится на цель, только лишь основное(переключение и ничего более)
1-я часть. Datadriven
1-я часть. Datadriven
Так как "DD" стал очень не популярным, это и ясно DD даёт мало возможностей, а в Lua можно реализовать всё, но это вам не DD, потому-что здесь некоторые функции такие как OnOrbFire, OnOrbImpact, OnOrbFail или Lifesteal отсутсвуют, но знаете это реализуемо очень быстро и просто(кроме OnOrbFire, OnOrbImpact, OnOrbFail).
Приступим, создаём луа способность
KV:
"bounty_hunter_jinada"
{
"BaseClass" "ability_lua"
"ScriptFile" "ability/bomj.lua"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
"MaxLevel" "4"
"AbilityTextureName" "jinada"
"AbilityCooldown" "8"
"precache"
{
"soundfile" "soundevents/bomj_euu.vsndevts"
}
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"steal_gold_percent" "10 12.5 15 17.5"
}
"02"
{
"var_type" "FIELD_FLOAT"
"get_gold_percent" "10 12.5 15 17.5"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bonus_damage" "75 100 125 150"
}
}
Код:
LinkLuaModifier('modifier_bomj_steal_money_passive', 'ability/bomj.lua', LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier('modifier_bomj_steal_money_ready', 'ability/bomj.lua', LUA_MODIFIER_MOTION_NONE)
bounty_hunter_jinada = class({})
function bounty_hunter_jinada:GetIntrinsicModifierName()
return 'modifier_bomj_steal_money_passive'
end
function bounty_hunter_jinada:OnSpellStart()
self:EndCooldown()
end
modifier_bomj_steal_money_passive = class({})
function modifier_bomj_steal_money_passive:IsHidden() return true end
function modifier_bomj_steal_money_passive:IsPassive() return true end
function modifier_bomj_steal_money_passive:DeclareFunctions()
return {
MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE,
MODIFIER_EVENT_ON_ATTACK_LANDED
}
end
function modifier_bomj_steal_money_passive:OnCreated()
self.damage = self:GetAbility():GetSpecialValueFor('bonus_damage')
self.steal_money = self:GetAbility():GetSpecialValueFor('steal_gold_percent')
self:StartIntervalThink(0)
end
function modifier_bomj_steal_money_passive:OnIntervalThink()
if IsServer() then
if self:GetAbility():IsCooldownReady() then -- Fuck you valve. IsCooldownReady() only on server-side that's a bullshit!
self:GetCaster():AddNewModifier(self:GetCaster(), self:GetAbility(), 'modifier_bomj_steal_money_ready', {})
self:StartIntervalThink( -1 )
end
end
end
AbilityKV = LoadKeyValues('scripts/npc/npc_abilities_custom.txt')
function modifier_bomj_steal_money_passive:OnAttackLanded( kv )
if kv.attacker == self:GetCaster() then
if self:GetAbility():IsCooldownReady() and self:GetAbility():GetAutoCastState() == true then
if kv.target:IsRealHero() then
local midas_particle = ParticleManager:CreateParticle("particles/items2_fx/hand_of_midas.vpcf", PATTACH_ABSORIGIN_FOLLOW, kv.target)
ParticleManager:SetParticleControlEnt(midas_particle, 1, self:GetCaster(), PATTACH_POINT_FOLLOW, "attach_hitloc", self:GetCaster():GetAbsOrigin(), false)
kv.target:EmitSound("Hero_BountyHunter.Jinata")
kv.target:EmitSound("DOTA_Item.Hand_Of_Midas")
self:GetCaster():ModifyGold(kv.target:GetGold() * self.steal_money / 100, true, DOTA_ModifyGold_HeroKill)
kv.target:SpendGold(kv.target:GetGold() * self.steal_money / 100, DOTA_ModifyGold_Buyback)
end
self:GetCaster():RemoveModifierByName('modifier_bomj_steal_money_ready')
self:StartIntervalThink( 0 )
self:GetAbility():UseResources(false, false, true)
end
end
end
function modifier_bomj_steal_money_passive:GetModifierPreAttack_BonusDamage()
if self:GetCaster():HasModifier('modifier_bomj_steal_money_ready') and self:GetAbility():GetAutoCastState() == true then
return self.damage
end
return 0
end
modifier_bomj_steal_money_ready = class({})
function modifier_bomj_steal_money_ready:IsHidden() return false end
function modifier_bomj_steal_money_ready:IsPassive() return false end
function modifier_bomj_steal_money_ready:IsPurgable() return false end
function modifier_bomj_steal_money_ready:RemoveOnDeath() return false end
function modifier_bomj_steal_money_passive:OnRefresh()
self:OnCreated()
end