Добавлен Deepire
Добрый вечер, может кто помочь с кодом, я немного потерялся.
Это ивент каста заклинания.
Это ивент каста заклинания.
function Trig_Arcane_Mage_Skill_Cast_FuncQTimer takes nothing returns nothing
local timer t = GetExpiredTimer()
(bla bla bla)
call PauseTimer(t)
call DestroyTimer(t)
endfunction
[Action]
local timer Qtimer
local location spellTarget = GetUnitLoc(Какой-то_Юнит)
if (LoadTimerHandleBJ(7,1,udg_Player_Hashtable[udg_H_ArcaneMage_Owner]) != null) then
call PauseTimer(LoadTimerHandleBJ(7,1,udg_Player_Hashtable[udg_H_ArcaneMage_Owner]))
call DestroyTimer(LoadTimerHandleBJ(7,1,udg_Player_Hashtable[udg_H_ArcaneMage_Owner]))
set Qtimer = CreateTimer()
call SaveTimerHandleBJ( Qtimer, 7, 1, udg_Player_Hashtable[udg_H_ArcaneMage_Owner] )
call TimerStart (Qtimer, 10.00, false, function Trig_Arcane_Mage_Skill_Cast_FuncQTimer)
else
set Qtimer = CreateTimer()
call SaveTimerHandleBJ( Qtimer, 7, 1, udg_Player_Hashtable[udg_H_ArcaneMage_Owner] )
call SaveUnitHandleBJ( spellTarget, 0, GetHandleId(Qtimer), udg_Player_Hashtable[udg_H_ArcaneMage_Owner] )
call TimerStart (Qtimer, 10.00, false, function Trig_Arcane_Mage_Skill_Cast_FuncQTimer)
endif
[End Action]
По какой-то причине в случае повторного каста, пока существует первый таймер, функция нового таймера не срабатывает. Я немного сонный, да и JASS изучаю недавно, так что сильно не бейте, если где-то что-то не заметил. (при первом касте заклинания всё работает)
Принятый ответ
Похожие вопросы:
ответ
Во-первых, что есть "локальный таймер" ? Это таймер записанный в локальную переменную?Во-вторых, зачем тебе точка, если ты используешь XY ? Работай с нимиВ-третьих, да. Использование в течении всей игры одной заранее созданной точки вызывает меньше нагрузки чем постоянно создание и удаление новых (кто-то там доказывал на примере и цифрами что от ремувнутых точке всё равно остаётся шлак в памяти...)
ответ
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
ответ
Rare:
8gabriel8,Беда в том, что эта карта из кампании, там всё очень много весит, потому не буду.Если что, скидывай карту.
PT153,Пока никак, ибо из-за сессии отложил редактор в сторону (собственно, даже сюда времени зайти не было, к сожалению)ну как там дела?Рад, что ты предложил выход, но я, боюсь, твой код себе никак не перенесу, ибо, как писал в вопросе, лишь на GUI могу работать.
8gabriel8,Триггер, запускающий таймер, вряд ли многое испортить можетмне кажется, проблема не в этом триггере, а в другом, который запускает триггеры и таймеры.Мдаааа... Я свою ошибку таки нашёл. Она была в самом тупом месте из всех возможных.Цитата из вопроса, у меня не работает голова.Я действительно не понимаю, это у меня голова не работает совершенно, или в редакторе какие-то баги
Так вот, это я дурак полный.
Запихнул обнуление своей переменной ВНИМАНИЕ! в триггер, который игрокам-компьютерам каждые 2 секунды обновляет ресурсы. А вместе с этим и обнуляет снова и снова мою переменную. Обнаружил ли я это через дебаги? Нет, просто от скуки и безнадёжности положения начал прокручивать и листать все триггеры.Спасибо всем, кто пытался помочь, это было очень приятно) Мне жаль, что вы ломали голову и тратили время впустую по моей глупости и невнимательности.
ответ
проверил, все работает, всем спасибо)
в коде будет примерно такой вид:function getTrajectoryRadius takes real speed, real rotationSpeed returns real local real N = 360 / rotationSpeed // количество сторон вписанного многоугольника return speed / (2 * (Sin (PI / N))) endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. MACOH
SaveUnitHandle( hash, parentId, childId, object )