Guilherme Mendes Posted December 30, 2018 Share Posted December 30, 2018 Olá, sou iniciante em Lua, e estou treinando com alguns scripts, e esse tem me dado uma certo trabalho!! Bom, basicamente e um painel simples com algumas informações sobre o veiculo como Velocidade, RPM, e etc.. Porem, as informações não atualização, já fiz algumas coisas com DX e tudo funcionou perfeitamente usando o onClientRender, todas as informações atualizavam sem aparecer algum tipo de erro no DebugScript, foi se passando o tempo e enjoei do DX e resolvi usar o GUI, mas quando tentei usar o onClientRender simplesmente ficou recriando os elementos sem parar ao invés de apenas atualizar as informações, tendo que desativar o script pelo console pois já não dava mais para mexer o mouse dentro do jogo de tão pesado que ficava, por ter tantos e tantos elementos criados ali! function Dashboard() guiSetVisible( MainWindow, true) veh = getPedOccupiedVehicle (getLocalPlayer ( )) speedx, speedy, speedz = getElementVelocity (veh) actualspeed = (speedx^2 + speedy^2 + speedz^2)^(0.5) mps = math.floor(actualspeed * 50) kmh = math.floor(actualspeed * 180) mph = math.floor(actualspeed * 111.847) curGear = getVehicleCurrentGear(veh) local screenWidth, screenHeight = guiGetScreenSize() local windowWidth, windowHeight = 300, 215 local left = screenWidth - windowWidth - 20 local top = screenHeight/2 - windowHeight/2 MainWindow = guiCreateWindow(left, top, windowWidth, windowHeight, "Dashboard", false) guiWindowSetSizable(MainWindow, false) ------------------------- kmhlabel = guiCreateLabel(10, 25, 61, 21, kmh.." Km/h", false, MainWindow) guiLabelSetHorizontalAlign(kmhlabel, "center", false) guiLabelSetVerticalAlign(kmhlabel, "center") kmhprogress = guiCreateProgressBar(80, 25, 201, 21, false, MainWindow) guiProgressBarSetProgress(kmhprogress, kmh) ------------------------- gasprogress = guiCreateProgressBar(80, 185, 201, 21, false, MainWindow) guiProgressBarSetProgress(gasprogress, 40) gaslabel = guiCreateLabel(10, 185, 61, 21, "GAS", false, MainWindow) guiLabelSetHorizontalAlign(gaslabel, "center", false) guiLabelSetVerticalAlign(gaslabel, "center") ------------------------- waterlabel = guiCreateLabel(10, 145, 61, 21, "WATER", false, MainWindow) guiLabelSetHorizontalAlign(waterlabel, "center", false) guiLabelSetVerticalAlign(waterlabel, "center") waterprogress = guiCreateProgressBar(80, 145, 201, 21, false, MainWindow) guiProgressBarSetProgress(waterprogress, 40) ------------------------- templabel = guiCreateLabel(10, 105, 61, 21, "TEMP", false, MainWindow) guiLabelSetHorizontalAlign(templabel, "center", false) guiLabelSetVerticalAlign(templabel, "center") tempprogress = guiCreateProgressBar(80, 105, 201, 21, false, MainWindow) guiProgressBarSetProgress(tempprogress, 40) ------------------------- rpmlabel = guiCreateLabel(10, 65, 61, 21, "RPM", false, MainWindow) guiLabelSetHorizontalAlign(rpmlabel, "center", false) guiLabelSetVerticalAlign(rpmlabel, "center") rpmprogess = guiCreateProgressBar(80, 65, 201, 21, false, MainWindow) guiProgressBarSetProgress(rpmprogess, 40) end addEventHandler("onClientVehicleEnter", root, Dashboard) function NaoRenderizar () guiSetVisible( MainWindow, false) end addEventHandler("onClientVehicleExit", root, NaoRenderizar) Basicamente este e o código, por favor, não quero que alguém refaça um código e simplesmente o post aqui, eu quero aprender.. Então se for possível kkkk Desde já, muito obrigado! Link to comment
Other Languages Moderators androksi Posted December 30, 2018 Other Languages Moderators Share Posted December 30, 2018 (edited) Também optei por trabalhar com GUI, só algumas coisas que faço em DX. Enfim, vamos ao tópico. Primeiro, jamais crie um evento de renderização em painéis GUI, eles realmente irão recriar até você desligar. Para atualizar as informações, você irá sim precisar de um evento de renderização, porém apenas para alterar os textos, usando guiSetText. Assim como o progressBar e outros elementos que precisam serem atualizados de acordo com a velocidade do carro, que no caso é o que seu script faz. Então, dentro do evento onClientRender, você deverá atualizar as informações. Exemplo: function updateInfo ( ) veh = getPedOccupiedVehicle ( getLocalPlayer ( ) ); speedx, speedy, speedz = getElementVelocity ( veh ); actualspeed = ( speedx ^ 2 + speedy ^ 2 + speedz ^ 2 ) ^ ( 0.5 ); mps = math.floor ( actualspeed * 50 ); kmh = math.floor ( actualspeed * 180 ); mph = math.floor ( actualspeed * 111.847 ); curGear = getVehicleCurrentGear ( veh ); guiSetText ( kmhlabel, kmh .. " Km/h" ); end addEventHandler ( "onClientRender", root, updateInfo ) Lembre-se de ativar o evento de renderização apenas quando o jogador entrar no veículo, igual você fez no código. Edited December 30, 2018 by asrzk 1 Link to comment
Guilherme Mendes Posted December 30, 2018 Author Share Posted December 30, 2018 Simples assim? Então no caso do progressBar e só usar o guiProgressBarSetProgress dentro do onClientRender, certo? Nossa cara, valeu mesmo. Pelo jeito, das próximas vezes vou te que meter mais a cara na WIKI kkk 1 Link to comment
Other Languages Moderators androksi Posted December 30, 2018 Other Languages Moderators Share Posted December 30, 2018 Isso aí. É simples. 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