Jump to content

Como faço para conseguir da play em um vídeo dentro do MTA com esses Script "playVideo", tentei de tudo, e nenhuma pessoa ajuda!. Dá essa moral aí


Recommended Posts

function playVideo (posX, posY, width, height, url, duration, canClose, postGUI)
	if not posX or not posY or not width or not height or not url then
		return false
	end
	local webBrowser = false
	closeButton = guiCreateButton (0.97, 0, 0.03, 0.03, "X", true)
	guiSetAlpha (closeButton, 0.5)
	guiSetVisible (closeButton, false)
	if not isElement (webBrowser) then
		webBrowser = createBrowser (width, height, false, false)
		function createVideoPlayer ()
			function webBrowserRender ()
				dxDrawImage (posX, posY, width, height, webBrowser, 0, 0, 0, tocolor(255,255,255,255), postGUI)
			end
			loadBrowserURL (webBrowser, url)
			
			setTimer (function()
				addEventHandler ("onClientRender", getRootElement(), webBrowserRender)
				showChat (false)
				if canClose then
					guiSetVisible (closeButton, true)
					showCursor (true)
				end
			end, 500, 1)
			setElementFrozen (localPlayer, true)
			if duration then
				videoTimer = setTimer (function()
					removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
					setElementFrozen (localPlayer, false)
					guiSetVisible (closeButton, false)
					showCursor (false)
					showChat (true)
					destroyElement (webBrowser)
				end, duration, 1)
			end
			
			addEventHandler ("onClientGUIClick", closeButton, function (button, state)
				if button == "left" then
					if isTimer (videoTimer) then
						killTimer (videoTimer)
						videoTimer = nil
						removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
						setElementFrozen (localPlayer, false)
						guiSetVisible (closeButton, false)
						showCursor (false)
						showChat (true)
						destroyElement (webBrowser)
					end
				end
			end, false)
		end
		setTimer (createVideoPlayer, 500, 1)
	end
end

 

Link to comment
13 hours ago, AlyssonFX said:

function playVideo (posX, posY, width, height, url, duration, canClose, postGUI)
	if not posX or not posY or not width or not height or not url then
		return false
	end
	local webBrowser = false
	closeButton = guiCreateButton (0.97, 0, 0.03, 0.03, "X", true)
	guiSetAlpha (closeButton, 0.5)
	guiSetVisible (closeButton, false)
	if not isElement (webBrowser) then
		webBrowser = createBrowser (width, height, false, false)
		function createVideoPlayer ()
			function webBrowserRender ()
				dxDrawImage (posX, posY, width, height, webBrowser, 0, 0, 0, tocolor(255,255,255,255), postGUI)
			end
			loadBrowserURL (webBrowser, url)
			
			setTimer (function()
				addEventHandler ("onClientRender", getRootElement(), webBrowserRender)
				showChat (false)
				if canClose then
					guiSetVisible (closeButton, true)
					showCursor (true)
				end
			end, 500, 1)
			setElementFrozen (localPlayer, true)
			if duration then
				videoTimer = setTimer (function()
					removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
					setElementFrozen (localPlayer, false)
					guiSetVisible (closeButton, false)
					showCursor (false)
					showChat (true)
					destroyElement (webBrowser)
				end, duration, 1)
			end
			
			addEventHandler ("onClientGUIClick", closeButton, function (button, state)
				if button == "left" then
					if isTimer (videoTimer) then
						killTimer (videoTimer)
						videoTimer = nil
						removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
						setElementFrozen (localPlayer, false)
						guiSetVisible (closeButton, false)
						showCursor (false)
						showChat (true)
						destroyElement (webBrowser)
					end
				end
			end, false)
		end
		setTimer (createVideoPlayer, 500, 1)
	end
end

 

Acontece que você criou a função mas não está chamando-a. Para funcionar, em algum momento você deve chamá-la passando os argumentos, por exemplo: 

local x, y = guiGetScreenSize()

function defaultFunction ()
	playVideo (0, 0, x, y, "https://www.youtube.com/embed/rRjY8SOZ9Uo?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1", 12500, true, false)
end
addCommandHandler ("intro", defaultFunction)

Ao dar o comando "intro", vai rodar um videozinho. Para saber mais sobre a função dá uma lida na página da wiki dela: playVideo

  • Confused 1
Link to comment
local x, y = guiGetScreenSize()

function defaultFunction ()
	playVideo (0, 0, x, y, "https://www.youtube.com/embed/rRjY8SOZ9Uo?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1", 12500, true, false)
end
addCommandHandler ("intro", defaultFunction)

Mas só essa função já é capaz de fazer rodar um vídeo.

Link to comment
16 minutes ago, AlyssonFX said:

local x, y = guiGetScreenSize()

function defaultFunction ()
	playVideo (0, 0, x, y, "https://www.youtube.com/embed/rRjY8SOZ9Uo?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1", 12500, true, false)
end
addCommandHandler ("intro", defaultFunction)

Mas só essa função já é capaz de fazer rodar um vídeo.

Não, essa função somente um exemplo que chama a função que roda o vídeo passando os argumentos. No seu código deve conter isso que eu postei e a função que você postou.

  • Sad 1
Link to comment
"https://www.youtube.com/embed/I5Q_dEZbbuQ?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1"

Eita, pós não sei como posso está juntando esses dois. Poderia juntar pra mim pra eu estudar, com esse link acima? Assim eu compreendo mais facil.

Eu já tentei de tudo mesmo, desde o mês passado estou tentando fazer funcionar.

Link to comment
  • Other Languages Moderators

Faltou vc configurar os parâmetros além do link.

O vídeo deve sumir da tela sozinho após a reprodução? Ou prefere que o usuário clique em algum botão pra fechá-lo?

Seu servidor roda a quantos FPS? Pois o framerate dele irá variar a duração do vídeo no cliente.

Testei e funcionou aqui. Neste exemplo o vídeo some sozinho após a execução (servidor rodando limitado em 30FPS) e também tem um botão para fechar o vídeo a qualquer momento.

Spoiler

function playVideo (posX, posY, width, height, url, duration, canClose, postGUI)
    if not posX or not posY or not width or not height or not url then
        return false
    end
    local webBrowser = false
    closeButton = guiCreateButton (0.97, 0, 0.03, 0.03, "X", true)
    guiSetAlpha (closeButton, 0.5)
    guiSetVisible (closeButton, false)
    if not isElement (webBrowser) then
        webBrowser = createBrowser (width, height, false, false)
        function createVideoPlayer ()
            function webBrowserRender ()
                dxDrawImage (posX, posY, width, height, webBrowser, 0, 0, 0, tocolor(255,255,255,255), postGUI)
            end
            loadBrowserURL (webBrowser, url)
            
            setTimer (function()
                addEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                showChat (false)
                if canClose then
                    guiSetVisible (closeButton, true)
                    showCursor (true)
                end
            end, 500, 1)
            setElementFrozen (localPlayer, true)
            if duration then
                videoTimer = setTimer (function()
                    removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                    setElementFrozen (localPlayer, false)
                    guiSetVisible (closeButton, false)
                    showCursor (false)
                    showChat (true)
                    destroyElement (webBrowser)
                end, duration, 1)
            end
            
            addEventHandler ("onClientGUIClick", closeButton, function (button, state)
                if button == "left" then
                    if isTimer (videoTimer) then
                        killTimer (videoTimer)
                        videoTimer = nil
                        removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                        setElementFrozen (localPlayer, false)
                        guiSetVisible (closeButton, false)
                        showCursor (false)
                        showChat (true)
                        destroyElement (webBrowser)
                    end
                end
            end, false)
        end
        setTimer (createVideoPlayer, 500, 1)
    end
end

local x, y = guiGetScreenSize()

function defaultFunction ()
    playVideo (0, 0, x, y, "https://www.youtube.com/embed/I5Q_dEZbbuQ?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1", 154500, true, false)
end
addCommandHandler ("intro", defaultFunction)

 

 

  • Thanks 1
Link to comment
1 hour ago, Lord Henry said:

Faltou vc configurar os parâmetros além do link.

O vídeo deve sumir da tela sozinho após a reprodução? Ou prefere que o usuário clique em algum botão pra fechá-lo?

Seu servidor roda a quantos FPS? Pois o framerate dele irá variar a duração do vídeo no cliente.

Testei e funcionou aqui. Neste exemplo o vídeo some sozinho após a execução (servidor rodando limitado em 30FPS) e também tem um botão para fechar o vídeo a qualquer momento.

  Reveal hidden contents


function playVideo (posX, posY, width, height, url, duration, canClose, postGUI)
    if not posX or not posY or not width or not height or not url then
        return false
    end
    local webBrowser = false
    closeButton = guiCreateButton (0.97, 0, 0.03, 0.03, "X", true)
    guiSetAlpha (closeButton, 0.5)
    guiSetVisible (closeButton, false)
    if not isElement (webBrowser) then
        webBrowser = createBrowser (width, height, false, false)
        function createVideoPlayer ()
            function webBrowserRender ()
                dxDrawImage (posX, posY, width, height, webBrowser, 0, 0, 0, tocolor(255,255,255,255), postGUI)
            end
            loadBrowserURL (webBrowser, url)
            
            setTimer (function()
                addEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                showChat (false)
                if canClose then
                    guiSetVisible (closeButton, true)
                    showCursor (true)
                end
            end, 500, 1)
            setElementFrozen (localPlayer, true)
            if duration then
                videoTimer = setTimer (function()
                    removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                    setElementFrozen (localPlayer, false)
                    guiSetVisible (closeButton, false)
                    showCursor (false)
                    showChat (true)
                    destroyElement (webBrowser)
                end, duration, 1)
            end
            
            addEventHandler ("onClientGUIClick", closeButton, function (button, state)
                if button == "left" then
                    if isTimer (videoTimer) then
                        killTimer (videoTimer)
                        videoTimer = nil
                        removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                        setElementFrozen (localPlayer, false)
                        guiSetVisible (closeButton, false)
                        showCursor (false)
                        showChat (true)
                        destroyElement (webBrowser)
                    end
                end
            end, false)
        end
        setTimer (createVideoPlayer, 500, 1)
    end
end

local x, y = guiGetScreenSize()

function defaultFunction ()
    playVideo (0, 0, x, y, "https://www.youtube.com/embed/I5Q_dEZbbuQ?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1", 154500, true, false)
end
addCommandHandler ("intro", defaultFunction)

 

 

Pronto, já ajudou d+, agora assim, quero coloca em um painel de login que quando pessoa clicar em entrar o video feche junto com o painel de login. o addComandeHandler é só pra testar. Tu é mito!

Link to comment
  • 9 months later...
On 30/12/2020 at 18:06, Lord Henry said:

Faltou vc configurar os parâmetros além do link.

O vídeo deve sumir da tela sozinho após a reprodução? Ou prefere que o usuário clique em algum botão pra fechá-lo?

Seu servidor roda a quantos FPS? Pois o framerate dele irá variar a duração do vídeo no cliente.

Testei e funcionou aqui. Neste exemplo o vídeo some sozinho após a execução (servidor rodando limitado em 30FPS) e também tem um botão para fechar o vídeo a qualquer momento.

  Hide contents
function playVideo (posX, posY, width, height, url, duration, canClose, postGUI)
    if not posX or not posY or not width or not height or not url then
        return false
    end
    local webBrowser = false
    closeButton = guiCreateButton (0.97, 0, 0.03, 0.03, "X", true)
    guiSetAlpha (closeButton, 0.5)
    guiSetVisible (closeButton, false)
    if not isElement (webBrowser) then
        webBrowser = createBrowser (width, height, false, false)
        function createVideoPlayer ()
            function webBrowserRender ()
                dxDrawImage (posX, posY, width, height, webBrowser, 0, 0, 0, tocolor(255,255,255,255), postGUI)
            end
            loadBrowserURL (webBrowser, url)
            
            setTimer (function()
                addEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                showChat (false)
                if canClose then
                    guiSetVisible (closeButton, true)
                    showCursor (true)
                end
            end, 500, 1)
            setElementFrozen (localPlayer, true)
            if duration then
                videoTimer = setTimer (function()
                    removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                    setElementFrozen (localPlayer, false)
                    guiSetVisible (closeButton, false)
                    showCursor (false)
                    showChat (true)
                    destroyElement (webBrowser)
                end, duration, 1)
            end
            
            addEventHandler ("onClientGUIClick", closeButton, function (button, state)
                if button == "left" then
                    if isTimer (videoTimer) then
                        killTimer (videoTimer)
                        videoTimer = nil
                        removeEventHandler ("onClientRender", getRootElement(), webBrowserRender)
                        setElementFrozen (localPlayer, false)
                        guiSetVisible (closeButton, false)
                        showCursor (false)
                        showChat (true)
                        destroyElement (webBrowser)
                    end
                end
            end, false)
        end
        setTimer (createVideoPlayer, 500, 1)
    end
end

local x, y = guiGetScreenSize()

function defaultFunction ()
    playVideo (0, 0, x, y, "https://www.youtube.com/embed/I5Q_dEZbbuQ?autoplay=1&showinfo=0&rel=0&controls=0&disablekb=1", 154500, true, false)
end
addCommandHandler ("intro", defaultFunction)

 

 

não sei se é so pra mim que ta dando o erro, mais ta dando isso diversas vezes no debug
mesmo a reprodução do video o erro continua spamando no debug
WARNING: video/script.lua:13: Bad argument @ 'dxDrawImage' [Expected material at argument 5] [DUP x215]

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...