Jump to content

[AJUDA] setFogDistance / SkyGradiant


Recommended Posts

Spoiler
local intens = 1500 -- Determines the maximum darkness

setFogDistance(0)
resetSkyGradient()
lock_color = false
bx, by, bz, ax, ay, az =  168, 135, 84, 136, 91, 61

function clr(a, t)
	return (a - (a*(t-20)/3))
end

function uclr(a, t)
	return (a*(t-2)/3)
end

function timeInterval()
	if (getMinuteDuration() >= 100) then
		return getMinuteDuration()
	else
		return 100
	end
end

setTimer(function()
	local h, m = getTime()
	local th = h + (m /60)
	local tm = m + (h * 60)
	if ((th >= 20) and (th <=23)) then
		if (th <=23) then
			setSkyGradient(clr(bx, th), clr(by, th), clr(bz, th), clr(ax, th), clr(ay, th), clr(az, th))
		end
		if ((th >= 21) and (th <=23)) then
			setFogDistance(-intens + (intens/120 * (1380 - tm)))
		end
	elseif (((th > 23) and (th <=24)) or ((th >= 0) and (th <2))) then
		setFogDistance(-intens)
		setSkyGradient(0, 0, 0, 0, 0, 0)
	elseif ((th >=2) and (th <= 5)) then
		setSkyGradient(uclr(bx/10, h), uclr(by/10, th), uclr(bz/10, th), uclr(ax/10, th), uclr(ay/10, th), uclr(az/10, th))
		setFogDistance(-intens + (intens/180 * (tm-120)))
	end
	if ((th > 5) and (th < 20)) then
		resetSkyGradient()
	end
end, timeInterval(), 0)

 

Como faço para que ao usar visão noturna ou infravermelho, a distância e a luz voltem ao normal e se estiver desligada, volte a seguir este código?

Tentei fazer a condição, mas quando desligo o infravermelho ou a visão noturna a distância só volta ao normal depois de 1 minuto.

Link to comment
  • Other Languages Moderators

Dê um nome para a função que você quer repetir e também deixe o timer numa variável.

Ao desligar o infravermelho, cancele o timer usando killTimer na variável dele e depois execute essa função que seria chamada só mais tarde pelo timer.

Link to comment
On 16/04/2024 at 00:37, Lord Henry said:

Dê um nome para a função que você quer repetir e também deixe o timer numa variável.

Ao desligar o infravermelho, cancele o timer usando killTimer na variável dele e depois execute essa função que seria chamada só mais tarde pelo timer.

 

 

 

Desculpe, não entendi, você pode me dar um exemplo.

 

 

Spoiler
  
nightDarkness = setTimer(function()
	local h, m = getTime()
	local th = h + (m /60)
	local tm = m + (h * 60)
	if ((th >= 20) and (th <=23)) then
		if (th <=23) then
			setSkyGradient(clr(bx, th), clr(by, th), clr(bz, th), clr(ax, th), clr(ay, th), clr(az, th))
		end
		if ((th >= 21) and (th <=23)) then
			setFogDistance(-intens + (intens/120 * (1380 - tm)))
		end
	elseif (((th > 23) and (th <=24)) or ((th >= 0) and (th <2))) then
		setFogDistance(-intens)
		setSkyGradient(0, 0, 0, 0, 0, 0)
	elseif ((th >=2) and (th <= 5)) then
		setSkyGradient(uclr(bx/10, h), uclr(by/10, th), uclr(bz/10, th), uclr(ax/10, th), uclr(ay/10, th), uclr(az/10, th))
		setFogDistance(-intens + (intens/180 * (tm-120)))
	end
	if ((th > 5) and (th < 20)) then
		resetSkyGradient()
	end
end, timeInterval(), 0)





-----------------


     	bindKey("n", "down", function()
	if (night == false) then
		if (getElementData(localPlayer, "toolbelt7") > 0) then
			setCameraGoggleEffect("nightvision");
			playSound("sounds/goggles.wav");
        	killTimer(nightDarkness)
		end
		night = true;
	elseif (night == true) then
		setCameraGoggleEffect("normal");
		night = false;
	end
end);

 

 

 

 

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...