Jump to content

Notificaciones automáticas


Jeffield

Recommended Posts

¿Ayuda de cómo podría hacer que este recurso funcione de forma automática, es decir que cada cierto tiempo se muestre el mensaje?

recurso: https://community.multitheftauto.com/index.php?p=resources&s=details&id=5812

Client:

sx,sy = guiGetScreenSize ()
addEvent ("onNotificationWindowHide",false)
addEvent ("onNotificationWindowShow",false)
box = false

function showBox(value, str)
	-- value 1 - Info
	-- value 2 - Error
	-- value 3 - warning
	--if box == false then
	if str and type(str) == "string" and string.len(str) > 0 then
		box = true
		if value == "info" then 
			showTipBox (str,"img/info.png")
			outputConsole ("[INFO]" .. str)
		elseif value == "error" then 
			showTipBox (str,"img/error.png")
			outputConsole ("[ERROR]" .. str)
		elseif value == "warning" then 
			showTipBox (str,"img/warning.png")
			outputConsole ("[WARNING]" .. str)
		end
	end
	--else
	--	return false
	--end
end
addEvent("CreateBox", true)
addEventHandler("CreateBox", getRootElement(), showBox)

addEventHandler ("onNotificationWindowHide",getRootElement(),
	function ()
		box = false
	end
)
	
tipBox = {}
tipBox.path = ""
tipBox.show = false
tipBox.state = nil
tipBox.string = nil
tipBox.starTick = nil
tipBox.currentY = nil
tipBox.time = 800
tipBox.next = nil
tipBox.nextPath = ""
tipBox.timer = nil
tipBox.startY = -180
tipBox.stopY = 30

function showTipBox (str,path)
	if str then
		if path == nil then
			path = "img/info.png"
		end
		if fileExists (path) then
			if tipBox.show == true then
				tipBox.next = str
				tipBox.nextPath = path
			else
				local sound = playSound ("bip.mp3")
				setSoundVolume (sound,0.5)
				tipBox.path = path
				tipBox.show = true
				tipBox.state = "starting"
				tipBox.string = str
				tipBox.startTick = getTickCount()
				triggerEvent ("onNotificationWindowShow",getRootElement())
			end
		end
	end
end
addEvent("CreateTipBox", true)
addEventHandler("CreateTipBox", getRootElement(), showTipBox)

addEventHandler ("onClientRender", getRootElement(),
	function ()
		if tipBox.show == true and tipBox.string then
			local width = dxGetTextWidth (tipBox.string, 1, "default-bold")
			if width then
				if tipBox.state == "starting" then
					local progress = (getTickCount() - tipBox.startTick) / tipBox.time
					local intY = interpolateBetween (
						tipBox.startY,0,0,
						tipBox.stopY,0,0,
						progress,"OutElastic"
					)
					if intY then
						tipBox.currentY = intY
					else
						tipBox.currentY = 100
					end
					if progress > 1 then
						tipBox.state = "showing"
						tipBox.timer = setTimer (
							function ()
								tipBox.startTick = getTickCount()
								tipBox.state = "hiding"
							end
						,string.len(tipBox.string)*45+800,1)
					end
				elseif tipBox.state == "showing" then
					tipBox.currentY = tipBox.stopY
				elseif tipBox.state == "hiding" then
					local progress = (getTickCount() - tipBox.startTick) / (tipBox.time)
					local intY = interpolateBetween (
						tipBox.stopY,0,0,
						tipBox.startY,0,0,
						progress,"Linear"
					)
					if intY then
						tipBox.currentY = intY
					else
						tipBox.currentY = 100
					end
					if progress > 1 then
						triggerEvent ("onNotificationWindowHide",getRootElement())
						if tipBox.next then
							if isTimer(tipBox.timer) then
								killTimer(tipBox.timer)
							end
							tipBox.show = true
							tipBox.state = "starting"
							tipBox.string = tipBox.next
							tipBox.startTick = getTickCount()
							tipBox.next = nil
							tipBox.path = tipBox.nextPath
							return
						else
							tipBox.show = false
							tipBox.state = nil
							tipBox.string = nil
							return
						end
					end
				else
					return
				end
				local width = 512
				local x,y = sx/2 - width/2, tipBox.currentY
				local textX,textY = x+128,tipBox.currentY+44
				local textWidth,textHeight = 363,106
				dxDrawImage (x,y,width,256,tipBox.path,0,0,0,tocolor(255,255,255),true)
				dxDrawText (tipBox.string,textX,textY,textX+textWidth,textY+textHeight,tocolor(222,222,222),1,"default-bold","center","center",false,true,true)
			end
		end
	end
)

Server:

function showBox(player, value, str)
	if isElement(player) then
		triggerClientEvent(player, "CreateBox", getRootElement(), value, str)
	end
end
addCommandHandler( "an", showBox )

 

Link to comment

Mediante un export's del script:

-- Client
exports.notifications:showBox ("info","Just some information")

 

-- Server
exports.notifications:showBox (player, "info","Just some information")

Si quieres una notificación salga cada 1 minuto debes hacerlo de esta manera:
 

-- Client
setTimer(
  	function()
    		exports.notifications:showBox ("info","Just some information")
	end,
60000, 0)

 

Edited by #Dv^
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...