noonbr Posted November 15, 2019 Share Posted November 15, 2019 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
Other Languages Moderators Lord Henry Posted November 15, 2019 Other Languages Moderators Share Posted November 15, 2019 Não exagere no uso de linhas em branco. E não precisa da função marker(). Coloque aqueles setElementInterior fora de funções. 1 Link to comment
DNL291 Posted November 19, 2019 Share Posted November 19, 2019 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. 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now