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

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

Ответ
 
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Номер таймера из массива
Можно ли как-нибудь получить номер таймера из массива и использовать его в этом таймере?
Старый 24.01.2010, 11:47
Tooy

offline
Опыт: 1,231
Активность:
Типо того ?
call StartTimerBJ( udg_timer[udg_timer_index], false, udg_timer_index )
А вообще вопрос не совсем понял=)
Старый 24.01.2010, 11:53
DioD

offline
Опыт: 45,134
Активность:
LoadInteger(HASH,1,GetHandleId(GetExpiredTimer()))
SaveInteger(HASH,1,GetHandleId(udg_timer[66]),66)
Старый 24.01.2010, 11:56
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
DioD, а другие пути?
Tooy, см. вариант диода.
Старый 24.01.2010, 12:14
DioD

offline
Опыт: 45,134
Активность:
брутфорс цикл по массиву в поисках нужного таймера, интернальное закрепление через хитрый абуз с запуском после паузы.
на этом число возможных вариантов заканчивается
Старый 24.01.2010, 12:20
XOR

offline
Опыт: 38,159
Активность:
avatarDr, ты хочешь в качестве номера ячейки массива использовать гетхэндлид? максимальный размер массива 8192. Можно конечно создать еще кучу массивов но это уже не то. Если хэндл можешь использовать луп на проверку совпадения , если именно юнит/предмет в качестве ячейки массива можно юзердату. вообще вопрос не очень понятен
Старый 24.01.2010, 12:21
DioD

offline
Опыт: 45,134
Активность:
хеш таблицы хеш таблицы и еще раз учиться
Старый 24.01.2010, 12:22
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
как я тебя понял, то тебе надо создать масив типа таймер и интегер с кол-вом таймеров
затем воспользоваться функцией
Код:
function GetIdTimer takes timer t returns integer
 local integer i = 0
 loop
  exitwhen i >= timercount
  if AllTimer == t then
   return i
  endif
  set i = i + 1
 endloop
 set i = 0
 return 0
endfunction


[i]King Ksel добавил:

DioD, канешно рб и хеш(1,24) энто хорошо. Но без них намного круче)))
Старый 24.01.2010, 12:25
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
globals
    timer array myTimArray
endglobals

function getArrayIndex takes timer tim returns integer
    integer index=0
    loop
        exitwhen index>8191
        if myTimArray[index]==tim then
            return index
        endif
        index++
    endloop
    return -1
endfunction
Старый 24.01.2010, 12:25
DioD

offline
Опыт: 45,134
Активность:
function TimerAttach takes timer t, real time, real value, code func returns nothing
call TimerStart(t, value, false, null)
call PauseTimer(t)
call TimerStart(t, time, false, func)
endfunction
ONLY call on an expired timer.
function GetTimerInt takes timer t returns integer
return R2I(TimerGetRemaining(t) + 0.5)
endfunction
Старый 24.01.2010, 12:31
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
DioD, что за бред. Уж лучше структуру использовать
Старый 24.01.2010, 12:44
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
King_Ksel, это не бред, а специальная фишка для получения индекса таймер не брутфорсом. Единственный минус - нельзя использовать периодик таймер, только с однократным действием.
Старый 24.01.2010, 13:00
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Вот у меня периодичный секундный таймер. Как лучше делать, методом King_Ksel'а / Hellfim'а или через хеш?
Старый 24.01.2010, 13:04
XOR

offline
Опыт: 38,159
Активность:
У хелла мульти в отличие от хэша. Выбирай сам
Старый 24.01.2010, 13:09
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
avatarDr, с какой частотой у тебя выполняются действия?
Старый 24.01.2010, 13:10
Doc

offline
Опыт: 63,163
Активность:
avatarDr, если таймеров немного, лучше использовать цикл, я так делаю
DoctorGester добавил:
да и частота действий тоже решает, потому что перебор циклом ресурсоемок
Старый 24.01.2010, 13:12
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Таймеров 10, частота:
периодичный секундный
Старый 24.01.2010, 13:24
Doc

offline
Опыт: 63,163
Активность:
avatarDr, юзай цикл и не парься
Старый 24.01.2010, 13:30
DioD

offline
Опыт: 45,134
Активность:
если таймеры имеют фиксированный интервал вовсе не надо никуда ничего прикреплять, они будут выполнятся всегда в одинаковой последовательности.
Старый 24.01.2010, 14:02
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
avatarDr, делай структурой и непарясь в реале
Код:
globals
 integer tcount = 0
struct mytimer
 timer time
 integer if
 static method New takes nothing returns mytimer
  local mytimer this = mytimer.create()
  set .id = tcount
  set tcount = tcount + 1
 endmethod
endstruct
Старый 24.01.2010, 14:13
Ответ

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

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

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

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



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