Не силен в кодинге помогите почему не работает эта функция
не работает именно то что не убирается бонус
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
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
4 года назад
0
Похожие вопросы:

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

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

мне интересно если два героя используют способность то будут ли разные таймеры?
0
22
4 года назад
Отредактирован Bornikkeny
0
Запрещено задавать несколько вопросов.
Читай xgm.guru/p/xgm-team/rules#h11
10.1 Размещение нескольких вопросов в одном ресурсе.
1
3
4 года назад
1
так оно относится к теме хэш таблица ты ответь прежде чем писать о нарушениях
0
11
4 года назад
0
Radioactive, getHandleId вывести результат и посмотреть.
0
3
4 года назад
0
wetalq:
Radioactive, getHandleId вывести результат и посмотреть.
Спасибо порылся в сайте нашел что у каждого хэндла уникальный адрес
0
13
4 года назад
0
Radioactive:
wetalq:
Radioactive, getHandleId вывести результат и посмотреть.
Спасибо порылся в сайте нашел что у каждого хэндла уникальный адрес
Будет сложно запиливать свою карту, не почитав статьи.
При чём я бы рекомендовал начать сразу от сюда. xgm.guru/p/wc3/vjassmanual
Если вникнуть - сэкономишь себе кучу времени.
0
32
4 года назад
0
не создана хештаблица BonusB, не определена функция AddBonus
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.