Ir para conteúdo

Multi Linguagem


Vodkart

Posts Recomendados

Sistema de Multi Linguaguem

 

1- O que é e como funciona?

 

Uma palavra exemplo "uma coisa", que permite aos jogadores um jogo mais fácil do idioma do servidor exterior.

Dizer "uma coisa" eu quero dizer o conjunto de funções (não só uma) para ajudar a escrever scripts em que as informações transmitidas para os jogadores serão exibidos em diferentes idiomas. Bem, bem, vamos continuar...

 

 

2- Instalação.

 

vá até Data\lib abre o 050-function.lua

e adicione:

 

---------------Linguaguem---------------
local config = {
   default = 1,
   storage = 11548,
   languages = {
       [1] = "english",
       [2] = "portugues"
   }
}
function getPlayerLanguage(cid)
   local status = getPlayerStorageValue(cid, config.storage)
   if(status == -1 or status == 0) then
       setPlayerStorageValue(cid, config.storage, config.default)
   end
   return getPlayerStorageValue(cid, config.storage)
end
function getPlayerLanguageName(cid)
   local status = getPlayerStorageValue(cid, config.storage)
   if(status == -1 or status == 0) then
       setPlayerStorageValue(cid, config.storage, config.default)
   end
   return config.languages[getPlayerStorageValue(cid, config.storage)]
end
function setPlayerLanguage(cid, languageId)
   return setPlayerStorageValue(cid, config.storage, languageId)
end
function getLanguagesList()
   return config.languages
end

 

Para adicionar uma nova língua deve ser colocada na tabela:

 

[id] = "Nova Lingua"

 

obs: só não se esqueça da virgula.

 

 

Bem, o sistema foi instalado. Somente o jogador pode mudar isso, o script é simples ele que irá fornecer informações básicas sobre o sistema e permitir a alteração do idioma.

 

Agora vá até

 

Data\Talkactions\script crie um arquivo.lua e renomeie para

language.lua

 

function onSay(cid, words, param, channel)
local msgs = {
info = {"Multi language system\n\n commands:\n /lang language_number - if you want to set language\n\nLanguage list:\n", "Multi language system\n\n Comando:\n /lingua numero da linguaguem - Se você quiser mudar o idioma seleciona na lista\n\nLista linguagens:\n"},
succes_set = {"You change your language to ", "Você mudou o Idioma para "},
fail_set = {"Wrong param format.", "Param formato invalido."}
}
   local t = string.explode(param, ",")
   if(not t[1]) then
       local languages = getLanguagesList()
       local msg = msgs.info[getPlayerLanguage(cid)]
       for id, name in pairs(languages) do
           msg = msg .."".. id ..". ".. name .."\n"
       end
       doPlayerPopupFYI(cid, msg)
   elseif(t[1]) then
       setPlayerLanguage(cid, tonumber(t[1]))
       local msg = msgs.succes_set[getPlayerLanguage(cid)] .."".. getPlayerLanguageName(cid)
       doPlayerSendTextMessage(cid, 22, msg)
   elseif(t[2]) then
       local msg = msgs.fail_set[getPlayerLanguage(cid)]
       doPlayerSendCancel(cid, msg)
   end
   return TRUE
end

 

 

Em talkactions.xml adicione a tag:

 

<talkaction words="/lang" event="script" value="language.lua"/>

 

No início alguns podem ter problemas com a edição das informações apresentadas pelo roteiro, mas todos os problemas desapareceram depois de ler o próximo passo.

 

 

3- Utilizando o novo sistema.

 

Para exibir as mensagens em uma linguagem específica seria necessária a informação em uma linguagem que o jogador atua. Isto é possível graças ao "getPlayerLanguage(cid)", que retorna o id da linguagem escolhida pelo jogador. Então, no início de cada script é bom para fazer uma variável que irá armazenar esta informação:

 

 

local lingua = getPlayerLanguage(cid)

 

Ok, mas onde obter o conteúdo das informações? A melhor maneira é armazená-lo (eles) na tabela...

Para visualizar esta mensagem em um jogador apenas deve se referir ao id correspondente, para esse fim, usamos uma variável que armazena o id do idioma do jogador:

 

local lingua = getPlayerLanguage(cid)
local info = {"message in english", "mensagem em portugues"}
local exibe_informa = info[lingua]

 

Para visualizar a mensagem simplesmente usar o código da funções, tais como:

 

doPlayerSendTextMessage(cid, 22, exibe_informa)

 

 

4. Screen's

 

lingua_1.jpg

lingua2.jpg

lingua2.jpg

lingua4.jpg

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

Cara o script tem uma função um incrível e você ainda conseguiu simplificar-lo ao máximo, parabéns!

É ótimo para servidores com um grande publico estrangeiro... ;]

REP+ abraços...

Link para o comentário
Compartilhar em outros sites

fiz uma chest só para demonstrar como ficaria + ou -

 

-- Demon Armor chests

local msgs = {
success = {"You have found a Demon Armor ", "Você achou uma Demon Armor "},
fail = {"It is empty.", "isto está vazio."}
}


function onUse(cid, item, frompos, item2, topos)

   if item.uid == 7696 then      queststatus = getPlayerStorageValue(cid,7696) 
   if queststatus == -1 then
local msg = msgs.success[getPlayerLanguage(cid)]
     doPlayerSendTextMessage(cid,22, msg)
     doPlayerAddItem(cid,2494,1)
     setPlayerStorageValue(cid,7696,1) 
   else
local msg = msgs.fail[getPlayerLanguage(cid)]
     doPlayerSendTextMessage(cid,22, msg)
   end

else
 return 0
   end

   return 1
end

Link para o comentário
Compartilhar em outros sites

edited

ah ta sim na imagem

SUHIUSHuishIUsiuh' aquilo era test pronto arrumado :p

 

@UP

 

sim mais isso acontece automaticamente por causa da variavel que contem na lib

 

ou seja quando eu aciono o [1] que no caso é a ingles a variavel manda a mensagem correspondente da tabela xD

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 9 months later...
×
×
  • Criar Novo...