Добавлен Castiel
В общем искал я в инете и не нашел конкретно мой случай, может плохо искал..
Допустим есть глобалка/локалка не важно: GROUP={}
Далее я задаю на id юнита таблицу в таблице(наверное) GROUP[GetHandleId(unit)]={}
По нужде проверяю, если GROUP[GetHandleId(unit)][0]==nil значит создать группу GROUP[GetHandleId(unit)][0]=CreateGroup()
мне нужна еще группа по нужде и так же по нужде удалять таймером пример кода:
Допустим есть глобалка/локалка не важно: GROUP={}
Далее я задаю на id юнита таблицу в таблице(наверное) GROUP[GetHandleId(unit)]={}
По нужде проверяю, если GROUP[GetHandleId(unit)][0]==nil значит создать группу GROUP[GetHandleId(unit)][0]=CreateGroup()
мне нужна еще группа по нужде и так же по нужде удалять таймером пример кода:
local caster_uid=GetHandleId(caster)
local group_index
if GROUP[caster_uid]==nil then
GROUP[caster_uid]={}
end
if GROUP[caster_uid][0]==nil then
GROUP[caster_uid]={[0]=CreateGroup()}
group_index=0
else
GROUP[caster_uid]={[1]=CreateGroup()}
group_index=1
end
if BlzGroupGetSize(GROUP[caster_uid][group_index])>0 then
TimerStart(CreateTimer(),4,false,function()
DestroyGroup(GROUP[caster_uid][group_index])
GROUP[caster_uid][group_index]=nil
DestroyTimer(GetExpiredTimer())
end)
end
Но когда проверяю другим таймером то , чего то она странно себя ведет, одна группа перебивается другой...Одну из групп показывает как nil
Правильно ли я делаю или тут огромная ошибка ?
Правильно ли я делаю или тут огромная ошибка ?
Принятый ответ
Я полагаю, надо сравнивать вот так, ибо индексация идёт с 1.
GROUP[GetHandleId(unit)][1] == nil
Ну и нужно вот так присваивать.
GROUP[caster_uid][1] = CreateGroup()
GROUP[GetHandleId(unit)][1] == nil
Ну и нужно вот так присваивать.
GROUP[caster_uid][1] = CreateGroup()
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован PT153
GROUP[GetHandleId(unit)][1] == nil
Ну и нужно вот так присваивать.
GROUP[caster_uid][1] = CreateGroup()
Отредактирован prog
В мультиплеере разногласия со сборщиком мусора могут быть чреваты потенциальным десинком, поэтому перестраховуюсь. А вот в одиночных картах можно не просто юнита в качестве ключа использовать, а еще и перевести таблицу в режим слабых ссылок, чтобы запись полностью удалилась автоматически когда вар решит удалить юнита из памяти. Правда это не факт что произойдет при вашей жизни или при жизни текущей сессии карты, но это уже нюансы.