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

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

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

Зачем такие сложности то?
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
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
5 лет назад
0
Похожие вопросы:

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

1
29
5 лет назад
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
Принятый ответ
0
32
5 лет назад
0
А почему нет, в потоке запущенном таймером можно получить с помощью GetExpiredTimer() таймер который его вызвал, и использовать этот же таймер, чтобы вызвать функцию, запаузить таймер, продолжить, или изменить время.
0
8
5 лет назад
Отредактирован Castiel
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())
1
29
5 лет назад
Отредактирован nazarpunk
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)
0
24
5 лет назад
0
Castiel, объясни что ты пытаешься сделать этим таймером. Запустить то таймер изнутри таймера можно, но не факт что это действительно решает твою задачу.
0
8
5 лет назад
Отредактирован Castiel
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
0
24
5 лет назад
0
Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
0
8
5 лет назад
0
prog:
Castiel, мне не сильно поможет твой код - расскажи какую задачу ты пытаешься решить, какой должен быть результат работы всех этих таймеров.
ммммм...результат работы ? Так я ж говорил, нужно просто вызывать таймер таймером вот как на функции выше))
0
30
5 лет назад
Отредактирован Clamp
0
Castiel, он имеет в виду, какую игровую задачу ты решал, создавая этот код.
0
29
5 лет назад
0
Так я ж говорил, нужно просто вызывать таймер таймером
TimerStart(CreateTimer(), 1, false, function()
	print(1)
	TimerStart(CreateTimer(), 1, false, function()
		print(2)
		DestroyTimer(GetExpiredTimer())
	end)
	DestroyTimer(GetExpiredTimer())
end)
1
26
5 лет назад
1
Мне нужно чтоб один и тот же таймер с одной и той же функцией всегда имел разное время)
Запускаешь однократный таймер, и по его срабатыванию - запускаешь его опять, ещё раз, но на случайное время. Можешь сделать функцию на старт этого таймера с рандомом всегда и юзать её при первом запуске и при каждом срабатывании таймера.
Суть: запускаем функцию №1 она выбирает случайный таймер из 5 и запускает его, в свою очередь каждый таймер вызывает себя по несколько раз(имено важно вызвать самого себя), а когда будет вызван последний раз, запускает таймер который использует функцию №1.
Можешь счётчик прикрутить и каждый раз тикать его с выводом в начало.
0
8
5 лет назад
Отредактирован Castiel
0
Всем спасибо~Clamp:
Castiel, он имеет в виду, какую игровую задачу ты решал, создавая этот код.
я понимаю)) Создавал погодные эффекты, по этому всегда нужно было иметь разное время таймера после его перезапуска. На джассе делаю так и оно работает, а на луа этот же таймер из этого же таймера запустить с другим временем чет не получается....По этому и задал тут вопрос. Но мне не нужно удалять таймер.
1
29
5 лет назад
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
0
8
5 лет назад
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
ну допустим мне его надо запаузить, а потом возобновить другим таймером
1
29
5 лет назад
1
ну допустим мне его надо запаузить, а потом возобновить другим таймером
Так используйте функции
PauseTimer()
ResumeTimer()
0
8
5 лет назад
Отредактирован Castiel
0
NazarPunk:
ну допустим мне его надо запаузить, а потом возобновить другим таймером
Так используйте функции
PauseTimer()
ResumeTimer()
Как же я забыл про ресюме таймера ) спс бро! Ты мозг великий ) Просто как бы мне было удобней таймер ставить на большое время, а не по одной секунде считать)
0
28
5 лет назад
0
Резьюм не работает, как надо.
0
8
5 лет назад
0
PT153:
Резьюм не работает, как надо.
и как быть тогда ?
0
28
5 лет назад
0
Если таймер однократный, то перед паузой выяснять оставшееся время, а после распазузы стартовать его на оставшееся.
0
26
5 лет назад
0
Castiel, не совсем понял, как работают триггеры. Вот есть у тебя ветер, снег, дождь, солнечные лучи и лунные лучи. Для каждого из них работает таймер, который в случайный момент включает эффект, прерывая предыдущий, а по окончанию продолжает его?
0
8
5 лет назад
Отредактирован Castiel
0
8gabriel8:
Castiel, не совсем понял, как работают триггеры. Вот есть у тебя ветер, снег, дождь, солнечные лучи и лунные лучи. Для каждого из них работает таймер, который в случайный момент включает эффект, прерывая предыдущий, а по окончанию продолжает его?
ну есть таймер, который по истечении создает допустим дождь, мы паузим таймер, запускаем сначала слабый дождь, спустя случайное время запускаем сильный дождь, спустя случайное время опять слабый дождь, по истечении времени таймера запускаем таймер который создает случайный погодный эффект. То есть хотелось бы сделать через 2 таймера, не с подсчетом в 1 секунду и локалкой, чисто таймер допустим на 30 секунд с false. не хотелось бы создавать таймер внутри таймера внутри таймера внутри таймера. По этому я и создавал отдельные функции, а не безымянные прям таймере.
0
26
5 лет назад
0
По идее достаточно одного таймера и случайного погодного эффекта. Например, есть у тебя таймер, который запускаешь на случайное время, по истечению таймера запускается дождь и таймер опять запускается на случайное время, по истечению дождя удаляется этот погодный эффект и устанавливается другой случайный тоже на случайное время таймера и так далее.
0
8
5 лет назад
0
8gabriel8:
По идее достаточно одного таймера и случайного погодного эффекта. Например, есть у тебя таймер, который запускаешь на случайное время, по истечению таймера запускается дождь и таймер опять запускается на случайное время, по истечению дождя удаляется этот погодный эффект и устанавливается другой случайный тоже на случайное время таймера и так далее.
ResumeTimer() не запускает остановленный таймер, вернее запускает, но через пару тиков останавливает, только через отельные функции получается надо делать. Одного таймера не достаточно, если один то придется все время на каждый эффект создавать и удлять таймеры.
0
26
5 лет назад
0
В моём случае вообще не нужен ResumeTimer.
Погодой будут управлять не несколько таймеров, а несколько случайных переменных вокруг одного таймера.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.