Jump to content

Como posso otimizar o script?


Recommended Posts

Boa noite, fiz um script quase completo, queria perguntar se existe algumas trocas que eu poderia fazer para deixá-lo mais curto e/ou otimizado.

SERVER-SIDE:

entrada = createMarker(1411.7902832031, -1699.7880859375, 14.1, "arrow", 1, 255,255,0, 50)
saida = createMarker(-2029.7740478516, -119.3343963623, 1035.7, "arrow", 1, 255,255,0, 50)
cnh = createMarker(-2033.0969238281,-117.43886566162,1034.2, "cylinder", 1, 255,0,0, 50)
etapas = {

(createMarker(-868.33447265625,-1079.029296875,94.109962463379, "checkpoint", 0, 255,0,0, 20)),

(createMarker(-798.85778808594,-1009.9039916992,81.114715576172, "checkpoint", 0, 255,0,0, 20)),

(createMarker(-623.44805908203,-991.40704345703,66.213768005371, "checkpoint", 0, 255,0,0, 20)),

(createMarker(-526.03784179688,-904.98547363281,55.71215057373, "checkpoint", 0, 255,0,0, 20)),

(createMarker(-385.86874389648,-837.59167480469,47.206745147705, "checkpoint", 0, 255,0,0, 20)),

(createMarker(-298.58383178711,-875.92852783203,46.712970733643, "checkpoint", 0, 255,0,0, 20)),

(createMarker(-342.224609375,-780.23712158203,31.194166183472, "checkpoint", 0, 255,0,0, 20))

}

carro = createVehicle(402, 0,0,0)

function marker()

	setElementInterior(saida, 3)
	setElementInterior(cnh, 3)

end

marker()

function mensagem(hitElement)

	if getElementData(hitElement, "cnh-carro") == false then

	outputChatBox("| DETRAN | digite #ff0000/cnh #ffffffpara fazer a sua.", hitElement, 255,255,255, true)

else
	outputChatBox("| DETRAN | você já possui a carteira de habilitação.", hitElement, 255,255,255, true)
end
end
addEventHandler("onMarkerHit", cnh, mensagem)

function inicio(thePlayer)


	if isElementWithinMarker(thePlayer, cnh) and getElementData(thePlayer, "cnh-carro") == false then

		fadeCamera(thePlayer, false)

		setTimer (

			function ( ... )

		setElementInterior(thePlayer, 0)
		setElementPosition(thePlayer, -876.94409179688,-1112.4317626953,98.609375)
		setElementInterior(carro, 0)
		setElementPosition(carro, -876.94409179688,-1112.4317626953,98.609375)
		warpPedIntoVehicle(thePlayer, carro)
		setMarkerSize(etapas[1], 3)

			end, 1000, 1, thePlayer)


		setTimer (

			function ( ... )


		fadeCamera(thePlayer, true)

			end, 2000, 1, thePlayer)

	end	
end
addCommandHandler("cnh", inicio)

function etapa1(hitElement)

	setMarkerSize(etapas[1], 0)
	setMarkerSize(etapas[2], 3)

end
addEventHandler("onMarkerHit", etapas[1], etapa1)

function etapa2(hitElement)

	setMarkerSize(etapas[2], 0)
	setMarkerSize(etapas[3], 3)

end
addEventHandler("onMarkerHit", etapas[2], etapa2)

function etapa3(hitElement)

	setMarkerSize(etapas[3], 0)
	setMarkerSize(etapas[4], 3)

end
addEventHandler("onMarkerHit", etapas[3], etapa3)

function etapa4(hitElement)

	setMarkerSize(etapas[4], 0)
	setMarkerSize(etapas[5], 3)

end
addEventHandler("onMarkerHit", etapas[4], etapa4)

function etapa5(hitElement)

	setMarkerSize(etapas[5], 0)
	setMarkerSize(etapas[6], 3)

end
addEventHandler("onMarkerHit", etapas[5], etapa5)

function etapa6(hitElement)

	setMarkerSize(etapas[6], 0)
	setMarkerSize(etapas[7], 3)

end
addEventHandler("onMarkerHit", etapas[6], etapa6)

function etapa7(hitElement)

	setMarkerSize(etapas[7], 0)
	outputChatBox("| INSTRUTOR DIZ: você concluiu o teste camarada, pegue sua carteira de habilitação.", hitElement)
	destroyElement(carro)
	fadeCamera(hitElement, false)

	setTimer (
		function ()

	setElementInterior(hitElement, 3)
	setElementPosition(hitElement, -2029.2668457031,-116.76811218262,1035.171875)
	setElementData(hitElement,"cnh-carro", true)
	fadeCamera(hitElement, true)

		end, 2000, 1, hitElement)

end
addEventHandler("onMarkerHit", etapas[7], etapa7)

function aoSair(thePlayer)

	setMarkerSize(etapas[1], 0)
	outputChatBox("| INSTRUTOR DIZ: você saiu do veículo e não terminou a prova.", thePlayer)
	destroyElement(carro)
	fadeCamera(thePlayer, false)

	setTimer (

		function ()

	setElementInterior(thePlayer, 3)
	setElementPosition(thePlayer, -2029.2668457031,-116.76811218262,1035.171875)
	fadeCamera(thePlayer, true)

		end, 2000, 1, thePlayer)


end
addEventHandler("onVehicleExit", getRootElement(), aoSair)

Depois pretendo fazer o CLIENT-SIDE em CEGUI.

Obrigado pela compreensão :)

Link to comment
  • Moderators

 

  • Otimização básica :

Faça as variáveis localmente sempre que possível.
Você poderia ter feito esse código client-side; Quanto mais código sever-side, mais 'peso' para o servidor.

  • Encurtar e Otimizar o código

Você pode deixar uma só função lidando com o onMarkerHit. Além disso, em vez de ter criado todas as markers numa tabela, faça isso com os locais x,y,z da marker.
Para controlar a rota, utilizar uma variável que irá manter o index da marker na tabela; Esse será o índice da tabela que corresponde ao marker atual criado, dessa forma, quando criar a próxima rota é só indexar a tabela das coordenadas incrementando +1 no índice.

Este exemplo mostra isso na prática:

local markerAtual
local rota
function inicio(thePlayer)
    
    rota = 1
    local x,y,z = unpack(etapas[rota])
    markerAtual = createMarker( x,y,z, "checkpoint", 0, 255,0,0, 20 )
end
addCommandHandler("cnh", inicio)

addEventHandler("onMarkerHit", resourceRoot, function()

    if isElement(markerAtual) then
        destroyElement(markerAtual)
    end
    rota = rota + 1
    if rota == #etapas then
        return outputChatBox( "Todas rotas concluídas" )
    end
    local x,y,z = unpack(etapas[rota])
    markerAtual = createMarker( x,y,z, "checkpoint", 0, 255,0,0, 20 )
end, true, "low")

Outra outra, sempre use tabulação e não quebre muitas linhas excessivamente.

  • Thanks 1
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...