User:Erorr404/Editor/pseudocode

From Multi Theft Auto: Wiki

CLIENT:

// NEEDED CLIENT FUNCTIONS:
// setFreeCam(bool on)
// mountElementToCam(element theElem, float distance)
// unMountElementToCam()
// moveElement(element theElem, float x, float y, float z, int milliseconds)
// stopElementMoving(element theElem)
// rotateElement(element theElem, float rx, float ry, float rz, int milliseconds)

local selectedElement = nil

function onClientResourceLoad
	setFreeCam(true)
	bindKeys()
end

function bindKeys()
	// bind selection keys
	bindKey("mouse1", "onPlayerLeftClick")
	bindKey("mouse2", "onPlayerRightClick")
	// bind movement keys
	bindKey("up", "moveElementUp")
	bindKey("down", "moveElementDown")
	bindKey("left", "moveElementLeft")
	bindKey("right", "moveElementRight")
end

//sets selectedElement if a player clicks on one
function onPlayerLeftClick()
	if (selectedElem) then
		unMountElementToCam()
		selectedElem = nil
	else
		x1, y1, z1 = getCamPos()
		r = getCamRot()
		x2, y2, z2 = some trig stuff
		elem = processLineOfSite(x1, y1, z1, x2, y2, z2)
		if (elem) then
			mountElementToCam(elem, 10)
			selectedElement = elem
		end
	end
end

function onPlayeRightClick()
end

function moveElementUp(key, keySTate)
	if (selectedElement) then
		if (keyState == "down") then
			moveElement(selectedElement, ...) // move up
		else
			stopElementMoving(selectedElement)
		end
	end
end

function moveElementDown(key, keySTate)
	// similar to above
	...
end

function moveElementRight(key, keySTate)
	// similar to above
	...
end

function moveElementLeft(key, keySTate)
	// similar to above
	...
end


SERVER: