запустить таймер из таймера
Можно ли запустить таймер из таймера? Чет оно не работает...
function TIMER()
	T=CreateTimer()
	F=function()

		TimerStart(T,math.random(5,10),false,F)
	end
	TimerStart(T,math.random(5,10),false,F)
end

Без ответа.


Просмотров: 151

XGM Bot #1 - 1 неделю назад 0
Похожие вопросы:

» ответ
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
» ответ
Юзай ретурн баг, он снова доступен...
Просто массив целочисленных куда записаны ид code.
Вот ссылочка

NazarPunk #2 - 1 неделю назад 1
Зачем такие сложности то?
do
	local i, a, b = 0, math.random(5, 10), math.random(5, 10)
	
	TimerStart(CreateTimer(), 1, true, function()
		i = i + 1
		if i == a then
			print('a')
		elseif i == a + b then
			print('b')
			PauseTimer(GetExpiredTimer())
			DestroyTimer(GetExpiredTimer())
		end
	end)
end
quq_CCCP #3 - 1 неделю назад 0
А почему нет, в потоке запущенном таймером можно получить с помощью GetExpiredTimer() таймер который его вызвал, и использовать этот же таймер, чтобы вызвать функцию, запаузить таймер, продолжить, или изменить время.
Castiel #4 - 1 неделю назад (отредактировано ) 0
NazarPunk:
Зачем такие сложности то?
do
	local i, a, b = 0, math.random(5, 10), math.random(5, 10)
	
	TimerStart(CreateTimer(), 1, true, function()
		i = i + 1
		if i == a then
			print('a')
		elseif i == a + b then
			print('b')
			PauseTimer(GetExpiredTimer())
			DestroyTimer(GetExpiredTimer())
		end
	end)
end
Эммм....обьяснить сможешь ? Мне нужно чтоб один и тот же таймер с одной и той же функцией всегда имел разное время) Мне не нужно удалять таймер, потому что есть другие функции, которые запускают этот же таймер ...
И еще хотелось бы узнать есть ли разница между вот TimerStart(t,1,true,и вот эта вот функция допустим до 60 сек.) или TimerStart(t,60,false,function())
NazarPunk #5 - 1 неделю назад (отредактировано ) 1
Эммм....обьяснить сможешь ?
Всё просто, каждую секунду мы инкриментим i. Код можно представить так:
local i = 0 -- начинаем с нуля
TimerStart(CreateTimer(), 1, true, function()
	i = i + 1 -- увеличиваем счётчик
	if i == 5 then
		print('Прошло 5 секунд')
	elseif i == 13 then
		print('Прошло 13 секунд')
		PauseTimer(GetExpiredTimer())
		DestroyTimer(GetExpiredTimer())
	end
end)
И еще хотелось бы узнать есть ли разница между вот TimerStart(t,1,true,и вот эта вот функция допустим до 60 сек.) или TimerStart(t,60,false,function())
Всё зависит от задач, но в кратце можно объяснить так:
local i = 13
TimerStart(CreateTimer(), 1, false, function()
	print(i) --> 13
end)
local function myfunc()
	print(i) --> nil
end
local i = 13
TimerStart(CreateTimer(), 1, false, myfunc)
prog #6 - 1 неделю назад 0
Castiel, объясни что ты пытаешься сделать этим таймером. Запустить то таймер изнутри таймера можно, но не факт что это действительно решает твою задачу.
Castiel #7 - 1 неделю назад (отредактировано ) 0
prog:
Castiel, объясни что ты пытаешься сделать этим таймером. Запустить то таймер изнутри таймера можно, но не факт что это действительно решает твою задачу.
могу просто скинуть код но его много) Суть: запускаем функцию №1 она выбирает случайный таймер из 5 и запускает его, в свою очередь каждый таймер вызывает себя по несколько раз(имено важно вызвать самого себя), а когда будет вызван последний раз, запускает таймер который использует функцию №1. Что то типа этого:
function BLABLA()

	local T_1=CreateTimer()
	local T_2=CreateTimer()
	local count
	
	FUNC_2=function()
			count=count+1
			if count=10 then
				TimerStart(T_1,math.random(10,20),false,FUNC_1)
			else
				TimerStart(T_2,math.random(10,20),false,FUNC_2)
			end
	end

	FUNC_1=function()
		count=0
		TimerStart(T_2,math.random(10,20),true,FUNC_2)
	end
	TimerStart(T_1,math.random(10,20),false,FUNC_1)
end
prog #8 - 1 неделю назад 0
Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
Castiel #9 - 1 неделю назад 0
prog:
Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
ммммм...результат работы ? Так я ж говорил, нужно просто вызывать таймер таймером вот как на функции выше))
Clamp #10 - 1 неделю назад (отредактировано ) 0
Castiel, он имеет в виду, какую игровую задачу ты решал, создавая этот код.
NazarPunk #11 - 1 неделю назад 0
Так я ж говорил, нужно просто вызывать таймер таймером
TimerStart(CreateTimer(), 1, false, function()
	print(1)
	TimerStart(CreateTimer(), 1, false, function()
		print(2)
		DestroyTimer(GetExpiredTimer())
	end)
	DestroyTimer(GetExpiredTimer())
end)
Extremator #12 - 1 неделю назад 0
Мне нужно чтоб один и тот же таймер с одной и той же функцией всегда имел разное время)
Запускаешь однократный таймер, и по его срабатыванию - запускаешь его опять, ещё раз, но на случайное время. Можешь сделать функцию на старт этого таймера с рандомом всегда и юзать её при первом запуске и при каждом срабатывании таймера.
Суть: запускаем функцию №1 она выбирает случайный таймер из 5 и запускает его, в свою очередь каждый таймер вызывает себя по несколько раз(имено важно вызвать самого себя), а когда будет вызван последний раз, запускает таймер который использует функцию №1.
Можешь счётчик прикрутить и каждый раз тикать его с выводом в начало.
Castiel #13 - 1 неделю назад (отредактировано ) 0
Всем спасибо~Clamp:
Castiel, он имеет в виду, какую игровую задачу ты решал, создавая этот код.
я понимаю)) Создавал погодные эффекты, по этому всегда нужно было иметь разное время таймера после его перезапуска. На джассе делаю так и оно работает, а на луа этот же таймер из этого же таймера запустить с другим временем чет не получается....По этому и задал тут вопрос. Но мне не нужно удалять таймер.
NazarPunk #14 - 1 неделю назад 1
Создавал погодные эффекты, по этому всегда нужно было иметь разное время таймера после его перезапуска.
И вот зачем городить такие костыли, если вс решается довольно таки просто?
do
	local InitGlobalsOrigin = InitGlobals
	function InitGlobals()
		InitGlobalsOrigin()
		local i = math.random(5, 10)
		TimerStart(CreateTimer(), 1, true, function()
			i = i - 1
			if i == 0 then
				print('Смена эффекта')
				i = math.random(5, 10)
			end
		end)
	end
end
Castiel #15 - 1 неделю назад 0
NazarPunk:
Создавал погодные эффекты, по этому всегда нужно было иметь разное время таймера после его перезапуска.
И вот зачем городить такие костыли, если вс решается довольно таки просто?
do
	local InitGlobalsOrigin = InitGlobals
	function InitGlobals()
		InitGlobalsOrigin()
		local i = math.random(5, 10)
		TimerStart(CreateTimer(), 1, true, function()
			i = i - 1
			if i == 0 then
				print('Смена эффекта')
				i = math.random(5, 10)
			end
		end)
	end
end
ну допустим мне его надо запаузить, а потом возобновить другим таймером
NazarPunk #16 - 1 неделю назад 1
ну допустим мне его надо запаузить, а потом возобновить другим таймером
Так используйте функции
PauseTimer()
ResumeTimer()
Castiel #17 - 1 неделю назад (отредактировано ) 0
NazarPunk:
ну допустим мне его надо запаузить, а потом возобновить другим таймером
Так используйте функции
PauseTimer()
ResumeTimer()
Как же я забыл про ресюме таймера ) спс бро! Ты мозг великий ) Просто как бы мне было удобней таймер ставить на большое время, а не по одной секунде считать)
PT153 #18 - 1 неделю назад 0
Резьюм не работает, как надо.
Castiel #19 - 1 неделю назад 0
PT153:
Резьюм не работает, как надо.
и как быть тогда ?
PT153 #20 - 1 неделю назад 0
Если таймер однократный, то перед паузой выяснять оставшееся время, а после распазузы стартовать его на оставшееся.
8gabriel8 #21 - 1 неделю назад 0
Castiel, не совсем понял, как работают триггеры. Вот есть у тебя ветер, снег, дождь, солнечные лучи и лунные лучи. Для каждого из них работает таймер, который в случайный момент включает эффект, прерывая предыдущий, а по окончанию продолжает его?
Castiel #22 - 1 неделю назад (отредактировано ) 0
8gabriel8:
Castiel, не совсем понял, как работают триггеры. Вот есть у тебя ветер, снег, дождь, солнечные лучи и лунные лучи. Для каждого из них работает таймер, который в случайный момент включает эффект, прерывая предыдущий, а по окончанию продолжает его?
ну есть таймер, который по истечении создает допустим дождь, мы паузим таймер, запускаем сначала слабый дождь, спустя случайное время запускаем сильный дождь, спустя случайное время опять слабый дождь, по истечении времени таймера запускаем таймер который создает случайный погодный эффект. То есть хотелось бы сделать через 2 таймера, не с подсчетом в 1 секунду и локалкой, чисто таймер допустим на 30 секунд с false. не хотелось бы создавать таймер внутри таймера внутри таймера внутри таймера. По этому я и создавал отдельные функции, а не безымянные прям таймере.
8gabriel8 #23 - 1 неделю назад 0
По идее достаточно одного таймера и случайного погодного эффекта. Например, есть у тебя таймер, который запускаешь на случайное время, по истечению таймера запускается дождь и таймер опять запускается на случайное время, по истечению дождя удаляется этот погодный эффект и устанавливается другой случайный тоже на случайное время таймера и так далее.
Castiel #24 - 1 неделю назад 0
8gabriel8:
По идее достаточно одного таймера и случайного погодного эффекта. Например, есть у тебя таймер, который запускаешь на случайное время, по истечению таймера запускается дождь и таймер опять запускается на случайное время, по истечению дождя удаляется этот погодный эффект и устанавливается другой случайный тоже на случайное время таймера и так далее.
ResumeTimer() не запускает остановленный таймер, вернее запускает, но через пару тиков останавливает, только через отельные функции получается надо делать. Одного таймера не достаточно, если один то придется все время на каждый эффект создавать и удлять таймеры.
8gabriel8 #25 - 1 неделю назад 0
В моём случае вообще не нужен ResumeTimer.
Погодой будут управлять не несколько таймеров, а несколько случайных переменных вокруг одного таймера.
Castiel #26 - 1 неделю назад 1
8gabriel8:
В моём случае вообще не нужен ResumeTimer.
Погодой будут управлять не несколько таймеров, а несколько случайных переменных вокруг одного таймера.
Та я уже замутил через 2 таймера и 1 переменную)) просто изначально вопрос был в том почему нельзя запустить таймер этим же таймером!
prog #27 - 1 неделю назад 1
почему нельзя запустить таймер этим же таймером
На самом деле можно.