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