создал вторую группу когда юнит применяет способность(чтобы нанести единичный урон), и при сохранил вторую группу как в хеш так и в глобал стораж(без разницы) таймере создал первую группу где пикаются те кто не во 2 группе и наносят урон и пихают во 2 группу, но в луа локалки не так работают, и урон получается не единичный собственно как это сделать, глобальные группы не предлагайте ибо муй способность

Ельнур, локалки работают так же как в жассе, не считая кложуров. Локалки практически в любом языке работают одинаково, не надо валить свои косяки на язык.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
7
может скиньете примерчик кложура может там заработает как надо))
7
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
  1. Дар Лоа. Дистанция 800, каст ренж 700, кд 10, манакост 110.
Выпускает волну, наносящую (Интеллект х 3) урона врагам на своем пути, восполняя (Интеллект х 3) здоровья союзникам.

wetalq:
Скиньте код
я бы сделал с волной силы с damaging евентом но там нельзя в целях союзниокв указать как ни крути

я думал проблема в data storage и использовал хеш но все равно одна и та же проблема, в луа локалки по другому чуть работают видимо
11
Ельнур, xgm.guru/p/wc3/missile-lua
Советую почитать как тут сделано, Вы правы, локалки работают немного по другому и использовать хеш или что то другое не обязательно )
7
wetalq:
Ельнур, xgm.guru/p/wc3/missile-lua
Советую почитать как тут сделано, Вы правы, локалки работают немного по другому и использовать хеш или что то другое не обязательно )
у меня волна -_-
24
Должно работать как есть. Скорее всего, где-то в коде мелкая ошибка, которая не заметна при беглом просмотре.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.