XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
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
MegaBlax

offline
Опыт: 2,352
Активность:
у тебя переменная tu глобальная?
Старый 10.08.2013, 08:19
Blizzru

offline
Опыт: 4,117
Активность:
MegaBlax, что? нет это остатки от копипастинга. Сейчас отремонтирую.
Blizzru добавил:
Теперь уже лучше, карта запускается, но триггер не работает.
Старый 10.08.2013, 08:27
MegaBlax

offline
Опыт: 2,352
Активность:
Как?! Ну как?!
local location loc = GetSpellTargetLoc()
Старый 10.08.2013, 08:28
Blizzru

offline
Опыт: 4,117
Активность:
Да я уже понял, сохраняю его в хендл. После сообщу.
Старый 10.08.2013, 08:33
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
Blizzru

offline
Опыт: 4,117
Активность:
MegaBlax, Сначала подумал что понял, но нет)
Старый 10.08.2013, 08:42
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
Blizzru

offline
Опыт: 4,117
Активность:
MegaBlax, что именно я должен был увидеть?
Старый 10.08.2013, 08:49
MegaBlax

offline
Опыт: 2,352
Активность:
Blizzru, я так понимаю у тебя таймер должен сработать 5 раз? ну или около того
Старый 10.08.2013, 08:51
Blizzru

offline
Опыт: 4,117
Активность:
да, но ничего не происходит :(
Старый 10.08.2013, 08:52
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
Blizzru

offline
Опыт: 4,117
Активность:
MegaBlax, Я искренне благодарен за твою настойчивость помочь мне, но увы снова промах. :)
Старый 10.08.2013, 09:05
MegaBlax

offline
Опыт: 2,352
Активность:
Что опять? Покажи исправленый код
Старый 10.08.2013, 09:05
Blizzru

offline
Опыт: 4,117
Активность:
MegaBlax, в первом посте.
Старый 10.08.2013, 09:08
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
Blizzru

offline
Опыт: 4,117
Активность:
MegaBlax, добавил не работает.
call SaveInteger(udg_hash,h,2,w+1)
Старый 10.08.2013, 09:14
MegaBlax

offline
Опыт: 2,352
Активность:
Зачем?
call SaveInteger(udg_hash,h,2,w+1)
Просто
call SaveInteger(udg_hash,h,2,w)
Добавь то что я написал выше, не надо ничего придумывать!
Старый 10.08.2013, 09:16
Blizzru

offline
Опыт: 4,117
Активность:
Если бы дело было в ней, тогда бы таймер работал бесконечно, а тут он ниразу не срабатывает.
Старый 10.08.2013, 09:20
MegaBlax

offline
Опыт: 2,352
Активность:
Ты вообще читал гайды по JASS?!
Старый 10.08.2013, 09:20
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:50.