Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Se7en сказал, что его крайне сложно воссоздать. Он предложил сделать LinearProjectile и при "OnProjectileHitUnit" создавать юнита который реагирует на движение цели. Но как сделать чтобы снаряд летел дальше и цеплял остальных целей тоже на своем ходу? Прочел про multiple tragets, но не знаю, будет ли это работать?
Взял абилку лины, дал ей в скрипте функцию на создание юнита с моделькой паразита во время столкновения и функцию изменения положения этого юнита во время движения цели.
function create_swarm( keys )
local caster = keys.caster
local target = keys.target
local location = target:GetAbsOrigin()
local ability = keys.ability
local dummy = CreateUnitByName( "npc_swarm", location, false, caster, caster, caster:GetTeamNumber() )
end
function attach_swarm( keys )
local caster = keys.caster
local target = keys.target
local location = target:GetAbsOrigin()
local ability = keys.ability
caster:SetAbsOrigin( location )
end
Функция attach_swarm не работает - пишет в консоли [ W VScript ]: Script Runtime Error: ...s_survivors\scripts\vscripts\heroes\hero_lina\dragon.lua:12: attempt to index local 'target' (a nil value)
Почему возвращает цель nil, как это можно исправить?
Escapists Harmony, почему у тебя таргет пустой, я не знаю, но даже если бы этого у тебя не было, способность не работала бы.
У тебя бы вивера переносило к юниту, а не червя, т.к. локальная переменная червя работала бы лишь в первой функции. Попробуй двигать юнита в первой функции через таймер
Кажется понял. Но прошу уточнить - вторую убрать вообще и модифаер с ним, и двигать червя основываясь на переменной и все это в первой и единственной функции. Таймер должен двигать червя каждые 0.1 секунду, и убить его спустя например 10 секунд.
У меня две проблемы.
1) Я не знаю кого указать в target при "ApplyModifier" и "OnUnitMoved". В любом случае, даже если правильно указать - второй RunScript во время события "OnUnitMoved" по идеи должен запускать функцию повторно со всеми вытекающими последствиями - созданием нового червя рядом с таргетом.
2) простой вопрос, но как сделать чтобы таймер запустился ограниченное кол-во раз. Например, чтобы дамми двигался в соответствии с таргетом, таймер запускается сразу, проверяет каждые 0.1 секунды положение таргета и двигает дамми соответственно таргету, и через 7 секунд убивает дамми и перестает проверять положение. "Я сделяль" но не до конца, поправьте пожалуйста:
function create_swarm( keys )
local caster = keys.caster
local target = keys.target
local location = target:GetAbsOrigin()
local ability = keys.ability
local dummy = CreateUnitByName( "npc_swarm", location, false, caster, caster, caster:GetTeamNumber() )
Timers:CreateTimer( function()
local location = target:GetAbsOrigin()
dummy:SetAbsOrigin( location )
Timers:CreateTimer( 7, function()
dummy:ForceKill( true )
return nil
end
)
return 0.1
end
)
end
Вопрос по таймеру. Щас подумал, а разве ваш пример не будет запускать таймер 7 раз, мне нужно чтобы он запускался в течении 7 секунд с интервалом 0.1 сек. Значит мне нужно сделать GREG_MAX = 70.