Jump to content

Tela de login


Recommended Posts

  • Moderators
Posted (edited)

Por isso que sugeri usar objetos invisíveis para animar a câmera, pois é mais fácil entender a lógica do que está acontecendo. O interpolateBetween é meio complicadinho de entender. Sem contar que você vai precisar de 2 simultaneamente, pois cada interpolate só é capaz de interpolar até 3 variáveis, mas a câmera exige 6. A não ser, é claro, que você use posição de target da câmera como fixa e interpole somente a posição dela, mantendo sempre a mesma posição pra onde ela está apontada. Dai sim apenas 1 interpolateBetween já serve.

Edited by Lord Henry

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

Faça assim :

Lembrando, remova todo o seu código de cam já feito, que o script se encarregará disso. (Pra não haver problemas).

  • Adicione em meio ao código de inicializaram do painel :
   local time = 60000 --/> Velocidade da Camera para Chegar no Alvo.
   local x1,y1,z1 = -711.65728759766,956.55621337891,12.357646942139 --/> Ponto Inicial
   local x2,y2,z2 = -729.13031005859,835.33831787109,23.970388412476 --/> Ponto Final
		
   smoothMoveCamera(x1,y1,z1,x1,y1,z1,x2,y2,z2,x2,y2,z2,time)
  • Abaixo da Função, Então Adicione :
local sm = {}
sm.moov = 0
 
local function removeCamHandler()
	if(sm.moov == 1)then
		sm.moov = 0
	end
end

local start = nil
local animTime = nil
local tempPos = {{},{}}
local tempPos2 = {{},{}}
 
local function camRender()
	if (sm.moov == 1) then
	    local now = getTickCount()
		local x1,y1,z1 = interpolateBetween(tempPos[1][1], tempPos[1][2], tempPos[1][3], tempPos2[1][1], tempPos2[1][2], tempPos2[1][3], (now-start)/animTime, "Linear")
		local x2,y2,z2 = interpolateBetween(tempPos[2][1], tempPos[2][2], tempPos[2][3], tempPos2[2][1], tempPos2[2][2], tempPos2[2][3], (now-start)/animTime, "Linear")
		setCameraMatrix(x1,y1,z1,x2,y2,z2)
	else
		removeEventHandler("onClientRender",root,camRender)
	end
end
 
function smoothMoveCamera(x1,y1,z1,x1t,y1t,z1t,x2,y2,z2,x2t,y2t,z2t,time)
	if(sm.moov == 1) then
		killTimer(timer1)
		killTimer(timer2)
		removeEventHandler("onClientRender",root,camRender)
		fadeCamera(true)
	end
	fadeCamera(true)
	sm.moov = 1
	timer1 = setTimer(removeCamHandler,time,1)
	timer2 = setTimer(fadeCamera, time-1000, 1, false)
	start = getTickCount()
	animTime = time
	tempPos[1] = {x1,y1,z1}
	tempPos[2] = {x1t,y1t,z1t}
	tempPos2[1] = {x2,y2,z2}
	tempPos2[2] = {x2t,y2t,z2t}
	addEventHandler("onClientRender",root,camRender)
	return true
end

Caso de certo, basta fazer ajustes no código.

" Se eu te ajudei, deixe sua avaliação, obrigado ! "

Joinha!

 

Posted
20 minutes ago, Angelo Pereira said:

Faça assim :

Lembrando, remova todo o seu código de cam já feito, que o script se encarregará disso. (Pra não haver problemas).

  • Adicione em meio ao código de inicializaram do painel :

   local time = 60000 --/> Velocidade da Camera para Chegar no Alvo.
   local x1,y1,z1 = -711.65728759766,956.55621337891,12.357646942139 --/> Ponto Inicial
   local x2,y2,z2 = -729.13031005859,835.33831787109,23.970388412476 --/> Ponto Final
		
   smoothMoveCamera(x1,y1,z1,x1,y1,z1,x2,y2,z2,x2,y2,z2,time)
  • Abaixo da Função, Então Adicione :

local sm = {}
sm.moov = 0
 
local function removeCamHandler()
	if(sm.moov == 1)then
		sm.moov = 0
	end
end

local start = nil
local animTime = nil
local tempPos = {{},{}}
local tempPos2 = {{},{}}
 
local function camRender()
	if (sm.moov == 1) then
	    local now = getTickCount()
		local x1,y1,z1 = interpolateBetween(tempPos[1][1], tempPos[1][2], tempPos[1][3], tempPos2[1][1], tempPos2[1][2], tempPos2[1][3], (now-start)/animTime, "Linear")
		local x2,y2,z2 = interpolateBetween(tempPos[2][1], tempPos[2][2], tempPos[2][3], tempPos2[2][1], tempPos2[2][2], tempPos2[2][3], (now-start)/animTime, "Linear")
		setCameraMatrix(x1,y1,z1,x2,y2,z2)
	else
		removeEventHandler("onClientRender",root,camRender)
	end
end
 
function smoothMoveCamera(x1,y1,z1,x1t,y1t,z1t,x2,y2,z2,x2t,y2t,z2t,time)
	if(sm.moov == 1) then
		killTimer(timer1)
		killTimer(timer2)
		removeEventHandler("onClientRender",root,camRender)
		fadeCamera(true)
	end
	fadeCamera(true)
	sm.moov = 1
	timer1 = setTimer(removeCamHandler,time,1)
	timer2 = setTimer(fadeCamera, time-1000, 1, false)
	start = getTickCount()
	animTime = time
	tempPos[1] = {x1,y1,z1}
	tempPos[2] = {x1t,y1t,z1t}
	tempPos2[1] = {x2,y2,z2}
	tempPos2[2] = {x2t,y2t,z2t}
	addEventHandler("onClientRender",root,camRender)
	return true
end

Caso de certo, basta fazer ajustes no código.

Funcionou muito obrigado, uma duvida tem como fazer que fique dando loop? pois quando ele chega ao ponto final a tela fica toda escura, e tambem ir de frente até ao final pois a camera esta indo de costas.

OBS: Muito obrigado.

Posted
1 minute ago, murilo2929 said:

Funcionou muito obrigado, uma duvida tem como fazer que fique dando loop? pois quando ele chega ao ponto final a tela fica toda escura, e tambem ir de frente até ao final pois a camera esta indo de costas.

OBS: Muito obrigado.

Respondendo as duas perguntas, tem.

1. Você precisará configurar o script, ao invés de encerrar, iniciar em outra posição.

2. Você precisará ajusta-lo no setCameraMatrix, ou se não souber, apenas faça a camera andar do SUL, ao Norte.

" Se eu te ajudei, deixe sua avaliação, obrigado ! "

Joinha!

 

Posted
46 minutes ago, Angelo Pereira said:

Respondendo as duas perguntas, tem.

1. Você precisará configurar o script, ao invés de encerrar, iniciar em outra posição.

2. Você precisará ajusta-lo no setCameraMatrix, ou se não souber, apenas faça a camera andar do SUL, ao Norte.

como posso fazer para invés de encerrar ele iniciar em outra pos?

Posted (edited)
19 minutes ago, murilo2929 said:

como posso fazer para invés de encerrar ele iniciar em outra pos?

Linha 37, faça (Exemplo dentre outros...

--/> Isso se chama gambiar o script HEHE
local proxima_tela = 0 --/> Adicione Fora da função, se não vai repetir sempre o 0.
timer2 = setTimer( function ()
   fadeCamera(false)
   if proxima_tela == 0 then
      local time = 60000 --/> Altere Caso Precisa o Valor do Tempo.
      local x1,y1,z1 = --/> Adicione Outra Localização de Partida.
      local x2,y2,z2 = --/> Adicione Outra Localização de Fim.
      smoothMoveCamera(x1,y1,z1,x1,y1,z1,x2,y2,z2,x2,y2,z2,time)
      proxima_tela = 1
   elseif proxima_tela == 1 then
      local time = 60000 --/> Altere Caso Precisa o Valor do Tempo.
      local x1,y1,z1 = --/> Adicione Outra Localização de Partida.
      local x2,y2,z2 = --/> Adicione Outra Localização de Fim.
      smoothMoveCamera(x1,y1,z1,x1,y1,z1,x2,y2,z2,x2,y2,z2,time)
      proxima_tela = 2 --/> Caso Queira Fazer +, e caso queira retorna deixe em 0
   end
end, timer+1000, 1) --/> O tempo tem que ser acima do atual, para que antes a função acima remova o evento "onClientRender".

)

Claro, existe outras formas melhores de se fazer isso, mas apenas foi um exemplo que talvez funcione, ou talvez não.

Edited by Angelo Pereira

" Se eu te ajudei, deixe sua avaliação, obrigado ! "

Joinha!

 

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