Blizzru
offline
Опыт:
4,117Активность: |
Jass: Запутался в коде или я косипор :)
((код jass
function DealRageDay takes nothing returns nothing
local timer t = GetExpiredTimer() Наш таймер - истёкший local integer h = GetHandleId(t) Узнаём id таймера local unit cu = LoadUnitHandle(udg_hash,h,1) Достаём кастера из значения 1 local integer w = LoadInteger(udg_hash,h,2) достаём значение целой "w" local location loc = LoadLocationHandle(udg_hash,h,3) local unit lu if w<5 then Если количество ударов меньше 5 set w = (w+1) set lu = CreateUnit(GetOwningPlayer(cu),'h00Q',GetLocationX(loc),GetLocationY(loc),0) call UnitAddAbility(lu,'A07Y') call SetUnitAbilityLevel(lu,'A07Y',GetUnitAbilityLevel(cu,'A07Z')) call IssueImmediateOrder(lu,"stomp") call RemoveLocation(loc) call SaveInteger(udg_hash,h,2,w) else Иначе call DestroyTimer(t) Уничтожаем таймер set w = 0 call FlushChildHashtable(udg_hash,h) Очищаем ключ по id endif Не забываем устранять утечки set cu = null set t = null set lu = null endfunction function TimerRageDay takes nothing returns nothing local integer w = 0 local unit cu = GetSpellAbilityUnit() Кастер local timer t = CreateTimer() Создаём таймер local integer h = GetHandleId(t) Узнаём id таймера local location loc Сохраняем объекты с ключом - id таймера call SaveUnitHandle(udg_hash,h,1,cu) Сохраняем кастера со значением 1 call SaveInteger(udg_hash,h,2,w) Сохраняем значение целой w = 0 call SaveLocationHandle(udg_hash,h,3,loc) call TimerStart(t,(0.75),true,function DealRageDay) Стартуем таймер Не забываем устранять утечки set cu = null set t = null endfunction )) Отредактировано Blizzru, 10.08.2013 в 09:19. |
10.08.2013, 08:15 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
у тебя переменная tu глобальная? |
10.08.2013, 08:19 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
MegaBlax, что? нет это остатки от копипастинга. Сейчас отремонтирую.
Blizzru добавил: Теперь уже лучше, карта запускается, но триггер не работает. |
10.08.2013, 08:27 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Как?! Ну как?! local location loc = GetSpellTargetLoc() |
10.08.2013, 08:28 | #4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Да я уже понял, сохраняю его в хендл. После сообщу. |
10.08.2013, 08:33 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
((код jass
function DealRageDay takes nothing returns nothing
local integer w = LoadInteger(udg_hash,h,2) достаём значение целой "w" set w = (w+1) endfunction function TimerRageDay takes nothing returns nothing
local integer w = 0 call SaveInteger(udg_hash,h,2,w) Сохраняем значение целой w = 0 endfunction ))
Намек понял? |
10.08.2013, 08:38 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
MegaBlax, Сначала подумал что понял, но нет) |
10.08.2013, 08:42 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
А теперь допиши в своем триггере вот это и ты увидишь еше одну свою ошибку.
((код jass
function DealRageDay takes nothing returns nothing
local timer t = GetExpiredTimer() Наш таймер - истёкший local integer h = GetHandleId(t) Узнаём id таймера local unit cu = LoadUnitHandle(udg_hash,h,1) Достаём кастера из значения 1 local integer w = LoadInteger(udg_hash,h,2) достаём значение целой "w" local location loc = LoadLocationHandle(udg_hash,h,3) local unit lu call BJDebugMsg(GetUnitName(cu)) )) MegaBlax добавил:
Значение w всегда будет равно 0 Чтоб исправить это добавь после set w=(w+1) ((код jass
set w = (w+1) call SaveInteger(udg_hash,h,2,w) Сохраняем значение целой w )) |
10.08.2013, 08:47 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
MegaBlax, что именно я должен был увидеть? |
10.08.2013, 08:49 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Blizzru, я так понимаю у тебя таймер должен сработать 5 раз? ну или около того |
10.08.2013, 08:51 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
да, но ничего не происходит :( |
10.08.2013, 08:52 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Потому что ты слишком рано чистишь хэш таблицу
((код jass
call FlushChildHashtable(udg_hash,h)
)) сделай по другому, добавь call FlushChildHashtable(udg_hash,h) после else
((код jass
else Иначе
call DestroyTimer(t) Уничтожаем таймер set w = 0 call FlushChildHashtable(udg_hash,h) endif )) Вот так и будет работать
MegaBlax добавил: Как исправишь покажи еще раз код. Вдруг что-то не так исправишь :D |
10.08.2013, 08:58 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
MegaBlax, Я искренне благодарен за твою настойчивость помочь мне, но увы снова промах. :) |
10.08.2013, 09:05 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Что опять? Покажи исправленый код |
10.08.2013, 09:05 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
MegaBlax, в первом посте. |
10.08.2013, 09:08 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Ты забыл еще кое что
((код jass
function DealRageDay takes nothing returns nothing local timer t = GetExpiredTimer() Наш таймер - истёкший local integer h = GetHandleId(t) Узнаём id таймера local unit cu = LoadUnitHandle(udg_hash,h,1) Достаём кастера из значения 1 local integer w = LoadInteger(udg_hash,h,2) достаём значение целой "w" local location loc = LoadLocationHandle(udg_hash,h,3) local unit lu set w = (w+1) call SaveInteger(udg_hash,h,2,w) Добавь! )) |
10.08.2013, 09:11 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
MegaBlax, добавил не работает. call SaveInteger(udg_hash,h,2,w+1) |
10.08.2013, 09:14 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Зачем?
call SaveInteger(udg_hash,h,2,w+1) Просто call SaveInteger(udg_hash,h,2,w) Добавь то что я написал выше, не надо ничего придумывать! |
10.08.2013, 09:16 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Blizzru
offline
Опыт:
4,117Активность: |
Если бы дело было в ней, тогда бы таймер работал бесконечно, а тут он ниразу не срабатывает. |
10.08.2013, 09:20 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Ты вообще читал гайды по JASS?! |
10.08.2013, 09:20 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|