- 27 Фев 2019
- 43
- 10
- Проект
- Arena of purification
В общем проблема такая. Сделал скрипт при котором иллюзии при появлении используют способность. Но по какой-то причине они иногда не делают этого. По ощущениям это ни от чего не зависит. Также функция SretCrontolableByPlayer() не работает, я всё ещё могу их контролить, хотя в аналогичном коде она работает вообще без проблем. Подскажите, что в моём коде не так?
Функция CreateIllusion() взята из библиотеки и работает в других кодах исправно.
Lua:
function Ult( keys )
-- body
local target = keys.target
local caster = keys.caster
local ability = keys.ability
local ability_level = ability:GetLevel() - 1
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local outgoingDamage = ability:GetLevelSpecialValueFor("out_dmg", ability_level)
local incomingDamage = 0
local duration = ability:GetLevelSpecialValueFor("duration", ability_level)
Timers:CreateTimer(0.2, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion1 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion1:SetControllableByPlayer(caster:GetPlayerID(), false)
illusion1:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local subab = illusion1:FindAbilityByName("blink_strike_datadriven_ills")
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
Timers:CreateTimer(0.0035, function()
illusion1:CastAbilityOnTarget(target, subab, -1)
end)
end)
Timers:CreateTimer(0.6, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion2 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion2:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion2:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local subab = illusion2:FindAbilityByName("blink_strike_datadriven_ills")
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
Timers:CreateTimer(0.0035, function()
illusion2:CastAbilityOnTarget(target, subab, -1)
end)
end)
Timers:CreateTimer(0.8, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion3 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion3:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion3:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local subab = illusion3:FindAbilityByName("blink_strike_datadriven_ills")
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
Timers:CreateTimer(0.0035, function()
illusion3:CastAbilityOnTarget(target, subab, -1)
end)
end)
Timers:CreateTimer(1.0, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion4 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion4:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion4:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
local subab = illusion4:FindAbilityByName("blink_strike_datadriven_ills")
Timers:CreateTimer(0.0035, function()
illusion4:CastAbilityOnTarget(target, subab, -1)
end)
end)
if ability:GetLevel() > 1 then
Timers:CreateTimer(1.2, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion5 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion5:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion5:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
local subab = illusion5:FindAbilityByName("blink_strike_datadriven_ills")
Timers:CreateTimer(0.0035, function()
illusion5:CastAbilityOnTarget(target, subab, -1)
end)
end)
end
if ability:GetLevel() > 2 then
Timers:CreateTimer(1.4, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion6 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion6:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion6:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
local subab = illusion6:FindAbilityByName("blink_strike_datadriven_ills")
Timers:CreateTimer(0.0035, function()
illusion6:CastAbilityOnTarget(target, subab, -1)
end)
end)
end
if ability:GetLevel() > 3 then
Timers:CreateTimer(1.6, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion7 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion7:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion7:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local subab = illusion7:FindAbilityByName("blink_strike_datadriven_ills")
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
Timers:CreateTimer(0.0035, function()
illusion7:CastAbilityOnTarget(target, subab, -1)
end)
end)
end
if caster:HasTalent("special_bonus_unquie_2_attacks") then
Timers:CreateTimer(1.8, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion8 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion8:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion8:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local subab = illusion8:FindAbilityByName("blink_strike_datadriven_ills")
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
Timers:CreateTimer(0.0035, function()
illusion8:CastAbilityOnTarget(target, subab, -1)
end)
end)
Timers:CreateTimer(2.0, function()
local rand_distance = math.random(300, 500)
local origin = caster:GetAbsOrigin() + RandomVector(rand_distance)
local illusion9 = CreateIllusion(caster,caster,origin, duration,outgoingDamage,incomingDamage)
illusion9:SetControllableByPlayer(caster:GetPlayerID(), true)
illusion9:SwapAbilities("blink_strike_datadriven", "blink_strike_datadriven_ills", false, true)
local subab = illusion9:FindAbilityByName("blink_strike_datadriven_ills")
local p = ParticleManager:CreateParticle("particles/econ/items/void_spirit/void_spirit_immortal_2021/void_spirit_immortal_2021_astral_step_dmg_smoke_b.vpcf", PATTACH_ABSORIGIN_FOLLOW, illusion)
Timers:CreateTimer(0.0035, function()
illusion9:CastAbilityOnTarget(target, subab, -1)
end)
end)
end
end
Функция CreateIllusion() взята из библиотеки и работает в других кодах исправно.