#DeltaSCR Posted January 19, 2019 Share Posted January 19, 2019 Então, estou fazendo uma HUD cuja tem verificação de data, estou fazendo da seguinte forma: function hud () local job = getElementData (localPlayer, "Emprego" ) or false if job == "Mecanico" then setElementData (localPlayer, "Profissão", "Mecanico") elseif job == "Petroleiro" then setElementData (localPlayer, "Profissão", "Petroleiro") elseif job == "Motorista de Uber" then setElementData (localPlayer, "Profissão", "Motorista de Uber") elseif job == "Motorista de Onibus" then setElementData (localPlayer, "Profissão", "Motorista de Ônibus" ) elseif job == "Entregador de Jornal" then setElementData (localPlayer, "Profissão", "Entregador de Jornal") elseif job == "Piloto de Aviao" then setElementData (localPlayer, "Profissão", "Piloto de Avião") elseif job == "PizzaBoy" then setElementData (localPlayer, "Profissão", "PizzaBoy") elseif job == "Policial" then setElementData (localPlayer, "Profissão", "Policial") elseif job == "Transportador de Drogas" then setElementData (localPlayer, "Profissão", "Transportador de Drogas") elseif job == false then setElementData (localPlayer, "Profissão", "Desempregado") end dxDrawText(""..job"", (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false) end Mas ai o debugscript está acusando que "job" é um valor boleano, como resolvo isso? Link to comment
Gaimo Posted January 19, 2019 Share Posted January 19, 2019 setAccountData ( account theAccount, string key, string value ) Em algum lugar tu colocou o setAccountData ? Em job tu colocou "Emprego" or false, se tu não usou o setAccountData imagino que ele está usando o false. Caso tu tenha usado o setAccountData não faço ideia do que está acontecendo. Nota: Ainda estou aprendendo a programar. Link to comment
Other Languages Moderators androksi Posted January 19, 2019 Other Languages Moderators Share Posted January 19, 2019 Troque dxDrawText(""..job"", (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false) Por dxDrawText(tostring( job ), (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false) Link to comment
DNL291 Posted January 20, 2019 Share Posted January 20, 2019 Tem certeza que você quer renderizar setElementData? Depois que o servidor sofrer queda de performance tá aí a resposta - programação mal feita. Link to comment
#DeltaSCR Posted January 20, 2019 Author Share Posted January 20, 2019 1 minute ago, DNL291 said: Tem certeza que você quer renderizar setElementData? Depois que o servidor sofrer queda de performance tá aí a resposta - programação mal feita. Como assim? Explique... Link to comment
DNL291 Posted January 20, 2019 Share Posted January 20, 2019 setElementData consome processamento e banda - para sincronizar entre os lados. E colocar dentro do "onClientRender" além de desnecessário vai ser péssimo ao servidor. Imagine 200 jogadores no seu server, executando isso ao mesmo tempo. Evite usar esse setElementData na renderização, você nem vai precisar fazer dessa forma pra manter a data do jogador atualizada, basta setar quando entrar/sair de um emprego, e no "onClientRender" você só vai usar o getElementData. Link to comment
#DeltaSCR Posted January 20, 2019 Author Share Posted January 20, 2019 2 minutes ago, DNL291 said: setElementData consome processamento e banda - para sincronizar entre os lados. E colocar dentro do "onClientRender" além de desnecessário vai ser péssimo ao servidor. Imagine 200 jogadores no seu server, executando isso ao mesmo tempo. Evite usar esse setElementData na renderização, você nem vai precisar fazer dessa forma pra manter a data do jogador atualizada, basta setar quando entrar/sair de um emprego, e no "onClientRender" você só vai usar o getElementData. Então pelo o que eu entendi, se eu fizer desta maneira, o servidor vai estar continuamente verificando data de player em player, correto? Se sim, na prática, como eu deveria fazer para não acontecer esse "sobrecarregamenro"? Link to comment
DNL291 Posted January 20, 2019 Share Posted January 20, 2019 Para otimizar, é só setar esse element-data fora desse evento e quando for realmente necessário atualizar, ou seja quando trocar de emprego. Você precisa mesmo desses 2 elements-data? ("Profissão" e "Emprego") se você abrir mão de um já é uma otimização. Setando os dados, eu faria assim: local jobNames = { ["Motorista de Onibus"] = "Motorista de Ônibus", ["Piloto de Aviao"] = "Piloto de Avião" } local emprego = getElementData (localPlayer, "Emprego" ) or "Desempregado" if jobNames[emprego] then emprego = jobNames[emprego] end setElementData (localPlayer, "Profissão", emprego) Se você continuar com o element-data "Emprego", então você pode setar isso dentro do evento onElementDataChange > "Emprego". Se não, basta usar o setElementData em "Profissão"; Quando o jogador sair de um trabalho seta "Desempregado", quando entrar em um novo seta a profissão correspondente. Vai depender de como o seu sistema de empregos está programado. 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