<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Shufflejebaccistara</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Shufflejebaccistara"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Shufflejebaccistara"/>
	<updated>2026-04-17T01:35:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SmoothMoveCamera&amp;diff=71487</id>
		<title>SmoothMoveCamera</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SmoothMoveCamera&amp;diff=71487"/>
		<updated>2021-07-26T11:45:50Z</updated>

		<summary type="html">&lt;p&gt;Shufflejebaccistara: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
This function allows you to create a cinematic-camera-flight, which moves from a specific position to a specific position.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool smoothMoveCamera ( float x1, float y1, float z1, float x1t, float y1t, float z1t, float x2, float y2, float z2, float x2t, float y2t, float z2t, int time )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''x1, y1, z1''': The camera's start position.&lt;br /&gt;
* '''x1t, y1t, z1t''': The camera's start look at.&lt;br /&gt;
* '''x2, y2, z2''': The camera's end position.&lt;br /&gt;
* '''x2t, y2t, z2t''': The camera's end look at.&lt;br /&gt;
* '''time''': The speed of the camera's movement.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
This version returns false if a smoothMoveCamera is in progress:&lt;br /&gt;
&amp;lt;section name=&amp;quot;Clientside Script&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local sm = {}&lt;br /&gt;
sm.moov = 0&lt;br /&gt;
sm.object1,sm.object2 = nil,nil&lt;br /&gt;
 &lt;br /&gt;
local function removeCamHandler()&lt;br /&gt;
	if(sm.moov == 1)then&lt;br /&gt;
		sm.moov = 0&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local function camRender()&lt;br /&gt;
	if (sm.moov == 1) then&lt;br /&gt;
		local x1,y1,z1 = getElementPosition(sm.object1)&lt;br /&gt;
		local x2,y2,z2 = getElementPosition(sm.object2)&lt;br /&gt;
		setCameraMatrix(x1,y1,z1,x2,y2,z2)&lt;br /&gt;
	else&lt;br /&gt;
		removeEventHandler(&amp;quot;onClientPreRender&amp;quot;,root,camRender)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
function smoothMoveCamera(x1,y1,z1,x1t,y1t,z1t,x2,y2,z2,x2t,y2t,z2t,time)&lt;br /&gt;
	if(sm.moov == 1)then return false end&lt;br /&gt;
	sm.object1 = createObject(1337,x1,y1,z1)&lt;br /&gt;
	sm.object2 = createObject(1337,x1t,y1t,z1t)&lt;br /&gt;
        setElementCollisionsEnabled (sm.object1,false) &lt;br /&gt;
	setElementCollisionsEnabled (sm.object2,false) &lt;br /&gt;
	setElementAlpha(sm.object1,0)&lt;br /&gt;
	setElementAlpha(sm.object2,0)&lt;br /&gt;
	setObjectScale(sm.object1,0.01)&lt;br /&gt;
	setObjectScale(sm.object2,0.01)&lt;br /&gt;
	moveObject(sm.object1,time,x2,y2,z2,0,0,0,&amp;quot;InOutQuad&amp;quot;)&lt;br /&gt;
	moveObject(sm.object2,time,x2t,y2t,z2t,0,0,0,&amp;quot;InOutQuad&amp;quot;)&lt;br /&gt;
	sm.moov = 1&lt;br /&gt;
	setTimer(removeCamHandler,time,1)&lt;br /&gt;
	setTimer(destroyElement,time,1,sm.object1)&lt;br /&gt;
	setTimer(destroyElement,time,1,sm.object2)&lt;br /&gt;
	addEventHandler(&amp;quot;onClientPreRender&amp;quot;,root,camRender)&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This Version allows cancellation of current smoothMoveCamera progress and doing another one.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Clientside Script&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local sm = {}&lt;br /&gt;
sm.moov = 0&lt;br /&gt;
sm.object1,sm.object2 = nil,nil&lt;br /&gt;
 &lt;br /&gt;
local function removeCamHandler()&lt;br /&gt;
	if(sm.moov == 1)then&lt;br /&gt;
		sm.moov = 0&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local function camRender()&lt;br /&gt;
	if (sm.moov == 1) then&lt;br /&gt;
		local x1,y1,z1 = getElementPosition(sm.object1)&lt;br /&gt;
		local x2,y2,z2 = getElementPosition(sm.object2)&lt;br /&gt;
		setCameraMatrix(x1,y1,z1,x2,y2,z2)&lt;br /&gt;
	else&lt;br /&gt;
		removeEventHandler(&amp;quot;onClientPreRender&amp;quot;,root,camRender)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function smoothMoveCamera(x1,y1,z1,x1t,y1t,z1t,x2,y2,z2,x2t,y2t,z2t,time)&lt;br /&gt;
	if(sm.moov == 1)then&lt;br /&gt;
		destroyElement(sm.object1)&lt;br /&gt;
		destroyElement(sm.object2)&lt;br /&gt;
		killTimer(timer1)&lt;br /&gt;
		killTimer(timer2)&lt;br /&gt;
		killTimer(timer3)&lt;br /&gt;
		removeEventHandler(&amp;quot;onClientPreRender&amp;quot;,root,camRender)&lt;br /&gt;
	end&lt;br /&gt;
	sm.object1 = createObject(1337,x1,y1,z1)&lt;br /&gt;
	sm.object2 = createObject(1337,x1t,y1t,z1t)&lt;br /&gt;
        setElementCollisionsEnabled (sm.object1,false) &lt;br /&gt;
	setElementCollisionsEnabled (sm.object2,false) &lt;br /&gt;
	setElementAlpha(sm.object1,0)&lt;br /&gt;
	setElementAlpha(sm.object2,0)&lt;br /&gt;
	setObjectScale(sm.object1,0.01)&lt;br /&gt;
	setObjectScale(sm.object2,0.01)&lt;br /&gt;
	moveObject(sm.object1,time,x2,y2,z2,0,0,0,&amp;quot;InOutQuad&amp;quot;)&lt;br /&gt;
	moveObject(sm.object2,time,x2t,y2t,z2t,0,0,0,&amp;quot;InOutQuad&amp;quot;)&lt;br /&gt;
	sm.moov = 1&lt;br /&gt;
	timer1 = setTimer(removeCamHandler,time,1)&lt;br /&gt;
	timer2 = setTimer(destroyElement,time,1,sm.object1)&lt;br /&gt;
	timer3 = setTimer(destroyElement,time,1,sm.object2)&lt;br /&gt;
	addEventHandler(&amp;quot;onClientPreRender&amp;quot;,root,camRender)&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below example is the function as previous one except it's using interpolateBetween function. Also this version may fix little periodic flickering which happen in previous examples.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Clientside Script&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local sm = {}&lt;br /&gt;
sm.moov = 0&lt;br /&gt;
&lt;br /&gt;
local function removeCamHandler()&lt;br /&gt;
	if(sm.moov == 1)then&lt;br /&gt;
		sm.moov = 0&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local start&lt;br /&gt;
local animTime&lt;br /&gt;
local tempPos = {{},{}}&lt;br /&gt;
local tempPos2 = {{},{}}&lt;br /&gt;
&lt;br /&gt;
local function camRender()&lt;br /&gt;
	local now = getTickCount()&lt;br /&gt;
	if (sm.moov == 1) then&lt;br /&gt;
		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, &amp;quot;InOutQuad&amp;quot;)&lt;br /&gt;
		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, &amp;quot;InOutQuad&amp;quot;)&lt;br /&gt;
		setCameraMatrix(x1,y1,z1,x2,y2,z2)&lt;br /&gt;
	else&lt;br /&gt;
		removeEventHandler(&amp;quot;onClientRender&amp;quot;,root,camRender)&lt;br /&gt;
		fadeCamera(true)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function smoothMoveCamera(x1,y1,z1,x1t,y1t,z1t,x2,y2,z2,x2t,y2t,z2t,time)&lt;br /&gt;
	if(sm.moov == 1) then&lt;br /&gt;
		killTimer(timer1)&lt;br /&gt;
		killTimer(timer2)&lt;br /&gt;
		removeEventHandler(&amp;quot;onClientRender&amp;quot;,root,camRender)&lt;br /&gt;
		fadeCamera(true)&lt;br /&gt;
	end&lt;br /&gt;
	fadeCamera(true)&lt;br /&gt;
	sm.moov = 1&lt;br /&gt;
	timer1 = setTimer(removeCamHandler,time,1)&lt;br /&gt;
	timer2 = setTimer(fadeCamera, time-1000, 1, false) -- &lt;br /&gt;
	start = getTickCount()&lt;br /&gt;
	animTime = time&lt;br /&gt;
	tempPos[1] = {x1,y1,z1}&lt;br /&gt;
	tempPos[2] = {x1t,y1t,z1t}&lt;br /&gt;
	tempPos2[1] = {x2,y2,z2}&lt;br /&gt;
	tempPos2[2] = {x2t,y2t,z2t}&lt;br /&gt;
	addEventHandler(&amp;quot;onClientRender&amp;quot;,root,camRender)&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
'Shuffle' najpierw to ty sie kurwa naucz skryptowac potem robic przyklady.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boszboszek to pedal&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Useful_Functions}}&lt;/div&gt;</summary>
		<author><name>Shufflejebaccistara</name></author>
	</entry>
</feed>