кстати вопрос который меня мучает как создавать таймер на муй гуй?
писать timer[от 1 до 32764] не вариант есть какие нибудь идеи?

Принятый ответ

я посмотрел короче муй с помощью текста и знаете что он даже не доходит до 100) когда доходит до рандомное число от 1 до 100 примерно(могу ошибаться) он опять становится 2 так что писать таймер[от 1 до 100] вариант)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
4 года назад
0
в интернете посмотри. Парень ты не обучаем? Переходи на jass, timer+hastable
на муи вроде массивы, обычный перебор индексов 1-8192 в патче 1.26: у тебя должен быть счетчик, с которого будешь знать откуда начинать.
массивы
создаем таймер, запускаем таймер, прибавляем к счетчику +1
set timer[i] = CreateTimer()
call TimerStart(timer[i],false,....)
set i = i+1
далее при запуске триггера, функции проверяем циклом какой таймер GetExpiredTimer() запустил
local integer a = 0
loop
	exitwhen a>i
	if timer[a]==GetExpiredTimer() then
		//вы находите нужный индекс a, теперь делаете дела всякие, чистите удаляете и прочее
	endif
	set a = a + 1
endloop
1
32
4 года назад
1
переходи на луа, вообще на автомате муи
0
23
4 года назад
Отредактирован pro100master
0
Steal nerves, в 2 функции наоборот делай с наибольший уменшать с учетом если у 1 функции вырос и запоминает макс числа а там он находит и уменшает и переносит в новое место иначе у тя там в массиве появит не используемые ячейки. Я знаю что ты так умееш! Просто и новичку обьясни =)
0
27
4 года назад
Отредактирован MpW
0
Просто и новичку обьясни =)
вроде так, если правильно понял
local integer a = 0
local timer t
loop
exitwhen i>a
if timer[a]==GetExpiredTimer() then
вы находите нужный индекс a, теперь делаете дела всякие, чистите удаляете и прочее
если вы дальше не собираетесь использовать timer[a] удаляете сначала, чтобы в памяти не висел
потом смещаете структуру с "i" на "a" , в счетчике i-1 становится на 1 меньше и циклом меньше перебегать будешь
set timer[a] = timer[i]
set i=i-1
endif
set a = a - 1
endloop
set t = null
1
7
4 года назад
1
мне бы на гуй
0
27
4 года назад
Отредактирован MpW
0
Ельнур, тебе ссылку скинул с примером
+в графических редакторах нет действия "создать таймер", только в JNGP. вызвать можно через действие CS: set t =CreateTimer(). и прежде всего таймер вызывает функцию. Вам придется все равно писать функцию вызова. Иначе, просто крепите событие запуска таймера на триггер, очень неудобная штука.
там на гуи легко (пишу по памяти, в редактор лень лезть):
Триггер инициализации: создаете счетчик Count = 0, объявляете массив timer[] и другие массивы для хранения
Триггер А: создать таймер timer[Count], храните все данные в массивах типа unit[Count], interger[Count] и пр, прикрепляется событие вызова этого таймера на триггер Б, запустить таймер, прибавляете счетчик set Count=Count+1.
Триггер Б:
Цикл А до Count
if timer[A]==GetExpiredTimer() then
достаете номер А, делаете что-то с данными, например убить unit[A] или нанести урон. Или отнять бонусы integer[A]. Удаляете таймер timer[A], если он вам не нужен.
set timer[A] = timer[Count]
не забудьте перенести данные unit[] integer[] и др с того массива на массив A
set unit[A] = unit[Count]
set integer[A] = integer[Count]
set Count=Count-1
endif
конец цикла
0
26
4 года назад
0
Ельнур, обязательно при создании переменной таймера укажи максимальный размер массива. Если не задашь, то timer[2] и далее изначально заданы не будут.
0
27
4 года назад
Отредактирован MpW
0
У меня такой вопрос, если одновременно запустить кучу таймеров нагрузка возрастет или никакой разницы? можно тогда было бы два таймера запускать +массивы времени заводить. один таймер от начала игры чтобы знать тек время, второй выбирать ближайшее время и запускать очереди. как только истекает ближайшее время, то запускать след.
0
24
4 года назад
0
обязательно при создании переменной таймера укажи максимальный размер массива. Если не задашь, то timer[2] и далее изначально заданы не будут.
Плохой совет, лучше создавать таймеры по мере необходимости - если заставить вар создавать несколько тысяч таймеров при старте карты, то можно очень быстро упереться в лимит операций в потоке.
0
26
4 года назад
0
Плохой совет, лучше создавать таймеры по мере необходимости
И как на GUI это сделать?
2
27
4 года назад
Отредактирован MpW
2
8gabriel8, я думаю он имел в виду, что вряд ли когда-нибудь картодел наделает 8192 таймера и упрется в лимит массива. Такое вряд ли осуществимо. По мере возможности.

Или как я предложил, использовать на всю игру два таймера +массивы времени. Мне вот интересно можно ли сделать чтоб чисто плавно игралось
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.