Ельнур, можно знать Lua и не знать JASS, не вижу связи.
Вообще Lua еще и в доте используется, да и однозначно полезнее мертвого [за пределами wc3] JASS.
нельзя в варкрафте зная луа и не знать джасс потому что апи варкрафта, если ты знаешь луа ты знаешь джасс, а если ты знаешь джасс то знаешь луа другого нет, и вообще то луа варкрафта тоже мертво с таким рейтингом... это так начало чтобы поучиться, недаром все популярные игры вышли с варкрафта..
а тут он каждый раз создает при тике таймера новую группу, не смотря на то что группа сохранена в дата стораж или хеш
А с чего ты взял что дело в создании группы? Группа не может магическим образом сама создаться без CreateGroup.
если бы он не создавал новую группу, а брал бы в сохраненный дата стораж или хеш то был бы единичный урон а так он бесконечно раз может продамажить или полечить юнита..
прошу прощения уменя ошибка UnitAddGroup должен быть GroupAddUnit ))
Ельнур, локалки работают так же как в жассе, не считая кложуров. Локалки практически в любом языке работают одинаково, не надо валить свои косяки на язык.
да я даже в хеш пробовал сохранить, в луа он не робит, он бы работал в джассе исправно, столько групп создалось бы сколько раз кастовали способность , а тут он каждый раз создает при тике таймера новую группу, не смотря на то что группа сохранена в дата стораж или хеш
Должно работать как есть. Скорее всего, где-то в коде мелкая ошибка, которая не заметна при беглом просмотре.
это значит лишь одно локали работают чуть по другому чем в джассе в этом есть свои плюсы и минусы...
только не знаю способ по другому чтобы один раз одного юнита дамажил.. ибо все остальные способы не муй
Ельнур, xgm.guru/p/wc3/missile-lua
Советую почитать как тут сделано, Вы правы, локалки работают немного по другому и использовать хеш или что то другое не обязательно )
if GetSpellAbilityId() == FourCC('A00S') and GetUnitTypeId(u) == FourCC('Hamg') then
local dummy = CreateUnit(p,FourCC('h005'),GetUnitX(u),GetUnitY(u),GetUnitFacing(u))
local x1 = GetUnitX(dummy) + 800 * Cos(GetUnitFacing(dummy)*(3.14159/180.0))
local y1 = GetUnitY(dummy) + 800 * Sin(GetUnitFacing(dummy)*(3.14159/180.0))
local t = CreateTimer()
local cot = DarkLoa
local g1 = CreateGroup()
TimerStart(t,0.05,true,cot)
local data = { caster = u,xy = x1, yx = y1,dummy1 = dummy,g = g1}
DataStorage[GetHandleId(t)] = data
end
function DarkLoa()
local t = GetExpiredTimer()
local data = DataStorage[GetHandleId(t)]
local u = data.caster
local p = GetOwningPlayer(u)
local life = UNIT_STATE_LIFE
local x = data.xy
local y = data.yx
local dummy = data.dummy1
local g1 = data.g
if SquareRoot((x - GetUnitX(dummy)) * (x - GetUnitX(dummy)) + (y - GetUnitY(dummy)) * (y - GetUnitY(dummy))) - 35 <= 35 then
KillUnit(dummy)
GroupClear(g1)
DestroyGroup(g1)
g1 = nil
DataStorage[GetHandleId(t)] = nil
DestroyTimer(t)
t = nil
else
SetUnitX(dummy, GetUnitX(dummy) + 35 * Cos((180.0/3.14159) * Atan2(y - GetUnitY(dummy), x - GetUnitX(dummy)) * (3.14159/180.0)))
SetUnitY(dummy, GetUnitY(dummy) + 35 * Sin((180.0/3.14159) * Atan2(y - GetUnitY(dummy), x - GetUnitX(dummy)) * (3.14159/180.0)))
local g = CreateGroup()
GroupEnumUnitsInRange(g,GetUnitX(dummy),GetUnitY(dummy),150,nil)
while true do
local u1 = FirstOfGroup(g)
if u1 == nil then break end -- выходим из цикла при пустой группе
if GetUnitState(u1,life) > 0.405 and IsUnitEnemy(u1,p) and IsUnitInGroup(u1,g1) == false then -- условия для перебора
local normal = ATTACK_TYPE_NORMAL
local d1 = DAMAGE_TYPE_NORMAL
local w0 = WEAPON_TYPE_WHOKNOWS
UnitDamageTarget(u, u1, GetHeroInt(u,false)*3, true, true, normal, d1, w0)
UnitAddGroup(u1,g1)
end
if GetUnitState(u1,life) > 0.405 and IsUnitAlly(u1,p) and IsUnitInGroup(u1,g1) == false then
SetUnitState(u1,life,GetUnitState(u1,life)+GetHeroInt(u,false)*3)
local e = AddSpecialEffectTarget("Abilities\\Spells\\Orc\\HealingWave\\HealingWaveTarget.mdl","origin",u1)
DestroyEffect(e)
e = nil
UnitAddGroup(u1,g1)
end
GroupRemoveUnit(g,u1)
u1 = nil
end
GroupClear(g)
DestroyGroup(g)
g = nil
end
end
так вопрос решен или нет? 2 коммент на новую функцию - вы пишите, что работает замечательно
интересно, когда юнит застанен, то может работать руна?
работает с функцией BlzPauseunitEx(whichunit,boolean flag)
а с простой PauseUnit(whichunit,flag) нет когда станишь с BlzPauseUnit(whichunit,true) ты не можешь отменить с PauseUnit(whichunit,false) они разные
Бьет противника щитом, нанося ему (Сила х 2 (вкл бонусы) +30% от текущего значения Адреналина) урона, оталкивая его на расстояние 200, снижая его скорость передвижения и атаки на 20% и заставляя его промахиваться с вероятностью 30%.
Вообщем я сделал с паузой юнита перед тем как давать стан, но пауза ломает приказы...
Не совсем понял, а где тут оглушение? Двигать можно и без стана. Или ты имеешь ввиду понижение скорости атаки и перемещения? А нельзя использовать Удар грома (у гнома), например, для этого? Или 2 скила от даммика: понижение скорости перемещения и понижение скорости атаки( через ярость проклятых, например)?
перепутал вот
Стальной выпад. Дальность применения 400. кд 10 сек.
Выставляет Щит перед собой и совершает быстрый рывок в выбранном направлении, при столкновении с противником, останавливается и станит его на 2 секунды, нанося (Сила х 4 (вкл бонусы) +15% от текущего значени Адреналина). Максимальная дальность рывка 400.
мне кпц как нравится новые функции варкрафта жаль что рейтинг такой..
Бьет противника щитом, нанося ему (Сила х 2 (вкл бонусы) +30% от текущего значения Адреналина) урона, оталкивая его на расстояние 200, снижая его скорость передвижения и атаки на 20% и заставляя его промахиваться с вероятностью 30%.
Вообщем я сделал с паузой юнита перед тем как давать стан, но пауза ломает приказы...
» WarCraft 3 / Lua или jass?
Ред. Ельнур
» WarCraft 3 / Lua или jass?
» WarCraft 3 / Очищать ли значение переменной, если она не используется?
» WarCraft 3 / Lua или jass?
» WarCraft 3 / Lua или jass?
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
» WarCraft 3 / Hash в луа
» WarCraft 3 / единичный урон в луа
Ред. Ельнур
» WarCraft 3 / единичный урон в луа
Ред. Ельнур
» WarCraft 3 / единичный урон в луа
только не знаю способ по другому чтобы один раз одного юнита дамажил.. ибо все остальные способы не муй
» WarCraft 3 / Ульт тайдхантера из доты
» WarCraft 3 / единичный урон в луа
» WarCraft 3 / единичный урон в луа
Ред. Ельнур
» WarCraft 3 / единичный урон в луа
Ред. Ельнур
» WarCraft 3 / Hash в луа
Ред. Ельнур
» WarCraft 3 / Ульт тайдхантера из доты
GUI
» WarCraft 3 / как сделать стан мгновенно без даммикаста
а с простой PauseUnit(whichunit,flag) нет когда станишь с BlzPauseUnit(whichunit,true) ты не можешь отменить с PauseUnit(whichunit,false) они разные
» WarCraft 3 / как сделать стан мгновенно без даммикаста
» WarCraft 3 / как сделать стан мгновенно без даммикаста
» WarCraft 3 / как сделать стан мгновенно без даммикаста
» WarCraft 3 / как сделать стан мгновенно без даммикаста
Вообщем я сделал с паузой юнита перед тем как давать стан, но пауза ломает приказы...
» WarCraft 3 / как сделать стан мгновенно без даммикаста
» WarCraft 3 / Hash в луа