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

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

Без ответа.


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

XGM Bot #1 - 4 месяца назад 0
Похожие вопросы:

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

NazarPunk #2 - 4 месяца назад 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 - 4 месяца назад 0
А почему нет, в потоке запущенном таймером можно получить с помощью GetExpiredTimer() таймер который его вызвал, и использовать этот же таймер, чтобы вызвать функцию, запаузить таймер, продолжить, или изменить время.
Castiel #4 - 4 месяца назад (отредактировано ) 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 - 4 месяца назад (отредактировано ) 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 - 4 месяца назад 0
Castiel, объясни что ты пытаешься сделать этим таймером. Запустить то таймер изнутри таймера можно, но не факт что это действительно решает твою задачу.
Castiel #7 - 4 месяца назад (отредактировано ) 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 - 4 месяца назад 0
Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
Castiel #9 - 4 месяца назад 0
prog:
Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
ммммм...результат работы ? Так я ж говорил, нужно просто вызывать таймер таймером вот как на функции выше))
Clamp #10 - 4 месяца назад (отредактировано ) 0
Castiel, он имеет в виду, какую игровую задачу ты решал, создавая этот код.
NazarPunk #11 - 4 месяца назад 0
Так я ж говорил, нужно просто вызывать таймер таймером
TimerStart(CreateTimer(), 1, false, function()
	print(1)
	TimerStart(CreateTimer(), 1, false, function()
		print(2)
		DestroyTimer(GetExpiredTimer())
	end)
	DestroyTimer(GetExpiredTimer())
end)
Extremator #12 - 4 месяца назад 0
Мне нужно чтоб один и тот же таймер с одной и той же функцией всегда имел разное время)
Запускаешь однократный таймер, и по его срабатыванию - запускаешь его опять, ещё раз, но на случайное время. Можешь сделать функцию на старт этого таймера с рандомом всегда и юзать её при первом запуске и при каждом срабатывании таймера.
Суть: запускаем функцию №1 она выбирает случайный таймер из 5 и запускает его, в свою очередь каждый таймер вызывает себя по несколько раз(имено важно вызвать самого себя), а когда будет вызван последний раз, запускает таймер который использует функцию №1.
Можешь счётчик прикрутить и каждый раз тикать его с выводом в начало.
Castiel #13 - 4 месяца назад (отредактировано ) 0
Всем спасибо~Clamp:
Castiel, он имеет в виду, какую игровую задачу ты решал, создавая этот код.
я понимаю)) Создавал погодные эффекты, по этому всегда нужно было иметь разное время таймера после его перезапуска. На джассе делаю так и оно работает, а на луа этот же таймер из этого же таймера запустить с другим временем чет не получается....По этому и задал тут вопрос. Но мне не нужно удалять таймер.
NazarPunk #14 - 4 месяца назад 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 - 4 месяца назад 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 - 4 месяца назад 1
ну допустим мне его надо запаузить, а потом возобновить другим таймером
Так используйте функции
PauseTimer()
ResumeTimer()
Castiel #17 - 4 месяца назад (отредактировано ) 0
NazarPunk:
ну допустим мне его надо запаузить, а потом возобновить другим таймером
Так используйте функции
PauseTimer()
ResumeTimer()
Как же я забыл про ресюме таймера ) спс бро! Ты мозг великий ) Просто как бы мне было удобней таймер ставить на большое время, а не по одной секунде считать)
PT153 #18 - 4 месяца назад 0
Резьюм не работает, как надо.
Castiel #19 - 4 месяца назад 0
PT153:
Резьюм не работает, как надо.
и как быть тогда ?
PT153 #20 - 4 месяца назад 0
Если таймер однократный, то перед паузой выяснять оставшееся время, а после распазузы стартовать его на оставшееся.
8gabriel8 #21 - 4 месяца назад 0
Castiel, не совсем понял, как работают триггеры. Вот есть у тебя ветер, снег, дождь, солнечные лучи и лунные лучи. Для каждого из них работает таймер, который в случайный момент включает эффект, прерывая предыдущий, а по окончанию продолжает его?
Castiel #22 - 4 месяца назад (отредактировано ) 0
8gabriel8:
Castiel, не совсем понял, как работают триггеры. Вот есть у тебя ветер, снег, дождь, солнечные лучи и лунные лучи. Для каждого из них работает таймер, который в случайный момент включает эффект, прерывая предыдущий, а по окончанию продолжает его?
ну есть таймер, который по истечении создает допустим дождь, мы паузим таймер, запускаем сначала слабый дождь, спустя случайное время запускаем сильный дождь, спустя случайное время опять слабый дождь, по истечении времени таймера запускаем таймер который создает случайный погодный эффект. То есть хотелось бы сделать через 2 таймера, не с подсчетом в 1 секунду и локалкой, чисто таймер допустим на 30 секунд с false. не хотелось бы создавать таймер внутри таймера внутри таймера внутри таймера. По этому я и создавал отдельные функции, а не безымянные прям таймере.
8gabriel8 #23 - 4 месяца назад 0
По идее достаточно одного таймера и случайного погодного эффекта. Например, есть у тебя таймер, который запускаешь на случайное время, по истечению таймера запускается дождь и таймер опять запускается на случайное время, по истечению дождя удаляется этот погодный эффект и устанавливается другой случайный тоже на случайное время таймера и так далее.
Castiel #24 - 4 месяца назад 0
8gabriel8:
По идее достаточно одного таймера и случайного погодного эффекта. Например, есть у тебя таймер, который запускаешь на случайное время, по истечению таймера запускается дождь и таймер опять запускается на случайное время, по истечению дождя удаляется этот погодный эффект и устанавливается другой случайный тоже на случайное время таймера и так далее.
ResumeTimer() не запускает остановленный таймер, вернее запускает, но через пару тиков останавливает, только через отельные функции получается надо делать. Одного таймера не достаточно, если один то придется все время на каждый эффект создавать и удлять таймеры.
8gabriel8 #25 - 4 месяца назад 0
В моём случае вообще не нужен ResumeTimer.
Погодой будут управлять не несколько таймеров, а несколько случайных переменных вокруг одного таймера.
Castiel #26 - 4 месяца назад 1
8gabriel8:
В моём случае вообще не нужен ResumeTimer.
Погодой будут управлять не несколько таймеров, а несколько случайных переменных вокруг одного таймера.
Та я уже замутил через 2 таймера и 1 переменную)) просто изначально вопрос был в том почему нельзя запустить таймер этим же таймером!
prog #27 - 4 месяца назад 1
почему нельзя запустить таймер этим же таймером
На самом деле можно.