Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 28/07/21 in all areas

  1. #MTA Admin Event System
    1 point
  2. Eai, tudo certo? Existem diversas maneiras de atingir esse objetivo, vou tentar te explicar a maneira que eu usaria. Na resource em que você faz a troca de linguagens: -- Adicione um evento, que será chamado sempre que houver mudança na seleção de idioma addEvent('onChangeLanguage', true) -- Adicione alguma maneira de trocar o idioma enquanto joga, já que no seu caso ele só está sendo setado entrar no jogo -- Por exemplo: ao clicar em um combobox de seleção de linguagens, chame a funçao abaixo SetNewLanguage = function(newLang) setElementData(localPlayer, 'language', newLang) -- Chame o evento (depois de atualizar o valor da linguagem atual) triggerEvent('onChangeLanguage', localPlayer) end Na outra resource (onde você criou alguma interface GUI): -- Incie uma tabela para armazenar os dados local toTranslate = {} -- Crie uma função para inserir os elementos dentro da tabela AssignTranslation = function(element, value) toTranslate[element] = value end -- Crie uma função para traduzir todos os elementos da tabela TranslateUI = function() for elem, value in pairs(toTranslate) do guiSetText(elem, exports.DayZ:getLanguageTextClient(value)) end end -- Adicione um handler para o evento de quando se troca de idioma, para forçar a tradução dos elementos que estão na tabela addEventHandler('onChangeLanguage', localPlayer, TranslateUI) -- Crie os elementos gui e configure uma tradução pra eles local guiWindow CreateUI = function() local w, h = 500, 500 guiWindow = guiCreateWindow((sW - w) / 2, (sH - h) / 2, w, h, '', false) AssignTranslation(guiWindow, 'settingsL') guiSetVisible(guiWindow, false) local label = guiCreateLabel(100, 100, 200, 200, '', false, guiWindow) AssignTranslation(label, 'playL') end addEventHandler('onClientResourceStart', resourceRoot, CreateUI) -- Adicione um comando para exibir/esconder a janela addCommandHandler('toggle', function() if (not isElement(guiWindow)) then return false end local state = not guiGetVisible(guiWindow) -- Caso vá exibir a janela, chamamos a função para traduzir os textos if state then TranslateUI() end guiSetVisible(guiWindow, state) showCursor(state) end) Dessa forma, sempre que você trocar de linguagem ou abrir a interface, todos os elementos GUI serão traduzidos para a linguagem atual do jogador. No caso de funções DX (como dxDrawText), não é necessário fazer esse procedimento, já que elas são chamadas a cada frame com o valor atualizado, a única recomendação que eu deixaria é que você crie uma função para fazer cache das traduções, justamente para evitar ficar chamando via exports o tempo todo, que pode causar uma grande perda de desempenho. Algo como: local cache = {} Translate = function(text) if (cache[text] == nil) then cache[text] = exports.DayZ:getLanguageTextClient(text) end return cache[text] end Dessa forma, ao invés de ficar sempre chamando o exports, voce chamaria diretamente a função Translate. Boa sorte
    1 point
×
×
  • Create New...