Не силен в кодинге помогите почему не работает эта функция
не работает именно то что не убирается бонус
function EndB takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer h=GetHandleId(t)
local unit c=LoadUnitHandle(BonusB,h,0)
local integer typ=LoadInteger(BonusB,h,2)
local integer i=LoadInteger(BonusB,h,1)
call AddBonus(c,-i,typ)
call DestroyTimer(t)
call FlushChildHashtable(BonusB,h)
endfunction
function AddB takes unit u,integer b,integer t,real ti returns nothing
local timer time=CreateTimer()
local integer h=GetHandleId(time)
call AddBonus(u,b,t)
call SaveUnitHandle(BonusB,h,0,u)
call SaveInteger(BonusB,h,1,b)
call SaveInteger(BonusB,h,2,t)
call TimerStart(CreateTimer(),ti,false,function EndB)
endfunction

не создана хештаблица BonusB, не определена функция AddBonus
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

ответ
Первая "1" это имя сохраненной переменной, можешь назвать как угодно. Это нужно, чтобы ее можно было загрузить. Вторая "1" имя таблицы, в твоем случае это "Hash".
ответ
avuremybe, в хэштейбле данные хранятся по 2 ключам
т.е. хэштейбл это двумерный массив (массив в массиве)
1 ключ используй как id юнита по которому сохраняешь данные
2 ключ это индекс твоего массива
зачем чтото придумывать
всеравно готов поспорить что ты используешь только 1 ключ а для второго какая нибудь константа
ответ
MultiboardGetItem создает игровой объект-ячейку, MultiboardReleaseItem разбивает её обратно. Если таблица навсегда. то выгоднее хранить объекты в массиве, чтобы не терять время на постоянные Get-Release + это позволяет в дальнейшем асинхронно менять содержимое ячеек, что невозможно, если использовать функции.
Ну а кто жрет память, моешь с помощью этой тулзы глянуть (может не запускаться, у меня работает) - кинуть в корень варика и запустить при работающей игре
ответ
После разложения юнита его хэндл освобождается с хэш-таблицы?
Нет. Он остается в памяти до выхода из карты (если тип разложения на это никак не влияет)
Может ли юнит, которые появился занять хэндл юнита, который был разложен?
Может. И это может быть не только юнит.

11
Где создана хеш таблица?
Нужно показать строчку где они инициализирована
set udg_BonusB = InitHashtable()
3
да все уже решил я в создании таймера не поставил свой таймер который грузил в таблицу

мне интересно если два героя используют способность то будут ли разные таймеры?
22
Запрещено задавать несколько вопросов.
Читай xgm.guru/p/xgm-team/rules#h11
10.1 Размещение нескольких вопросов в одном ресурсе.
3
так оно относится к теме хэш таблица ты ответь прежде чем писать о нарушениях
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.