Olá a todos! Hoje em dia sabemos que o Inglês é uma língua falada fluentemente pelo mundo, ficando atrás apenas do Mandarim idioma falado pela China por conta de sua super população atualmente [1,371 bilhão (2015)].
Apesar disto o Inglês é a língua do mundo, desde a revolução industrial, e o crescimento absurdo econômico estadunidense.
E é por isso que hoje irei mostrar um pequeno e útil tutorial para vocês!
Apesar disto o Inglês é a língua do mundo, desde a revolução industrial, e o crescimento absurdo econômico estadunidense.
E é por isso que hoje irei mostrar um pequeno e útil tutorial para vocês!
Requerimentos: ter uma base de registro e login com DOF2/Dini
OBS: Você pode usar outro Idioma como Espanõl
Como criar um servidor com 2 idiomas?
Bom, há várias maneiras de você criar, mas a que acho melhor é uma variável para cada idioma. Pois elas são muito importantes para todo o processo.
Code:
if(Player[playerid][Portugues]==1)// Fala Português
if(Player[playerid][English]==1)// Speak English
PHP Code:
new Player[MAX_PLAYERS][InfoPlayer];
enum InfoPlayer {
English,
Portugues
};
Code:
if(Player[playerid][Portugues]==1)//Fala português
if(Player[playerid][Portugues]==0)//Não Fala português
Code:
if(Player[playerid][English]==1)//Speak English
if(Player[playerid][English]==0)//Do not speak English
PHP Code:
#define Dialog_Idioma 666//topo
public OnPlayerConnect(playerid)
{
ShowPlayerDialog(playerid, Dialog_Idioma, DIALOG_STYLE_MSGBOX, "Idioma / Language",
"Escolha um idioma!\n\n\
Choose a language!\n\n",
"Português", "English");
return 1;
}
PHP Code:
}
if (dialogid == Dialog_Idioma)
{
if(response)
{
/* PORTUGUÊS */
Player[playerid][Portugues]=1; //O Player escolheu português
SendClientMessage(playerid, 0xFF0000FF,"[PORTUGUÊS]: Se houver problemas digite /ajuda /cmds");
Player[playerid][English]=1; //Não existe english
}
else
{
/* ENGLISH */
Player[playerid][English]=1;//O Player escolheu English
SendClientMessage(playerid, 0xFF0000FF,"[ENGLISH]: If there are problems enter /help /cmds");
Player[playerid][Portugues]=0; //Não existe português
}
Lembarando:
Code:
Player[playerid][English]=1;//O Player Fala English!
Player[playerid][Portugues]=0;//Não fala português
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Comandos de Bloqueio, que exijam uma função
Code:
CMD:ban(playerid, params[])
{
if(IsPlayerAdmin(playerid))return SendMessageIdioma(playerid, "Você não pode!", "You cant not!");
PHP Code:
stock SendMessageIdioma(playerid, PTmsg[], ENmsg[])
{
if(Player[playerid][Portugues]==1)
{
SendClientMessage(playerid, -1, PTmsg);//1°MENSAGEM de texto
return 1;
}
if(Player[playerid][English]==1)
{
SendClientMessage(playerid, -1, ENmsg);//2° MENSAGEM de texto
return 1;
}
return true;
}
Explicações SendMessageIdioma
SendMessageIdioma(playerid, PTmsg[], ENmsg[])
Stock criada com o sentido de dar mensagens duplas, "Mensagem Portugues","Mensagem English"
SendMessageIdioma(playerid, "Sua Mensagem em PORTUGUES", "Sua Mensagem em English");
Esse tipo de mensagem pode ser utilizado em qualquer lugar de seu GameMode, com o fato que que 1° Portugues 2° English mas você pode alterar isso na stock.
PHP Code:
if(IsPlayerAdmin(playerid))return SendMessageIdioma(playerid, "Você não pode!", "You cant not!");
Mensagem formatada para todos de uma linguagem
Trago a vocês o SendMessageFormatPTAll / SendMessageFormatENAll
O que ele faz?
Ele formata uma mensagem e manda automaticamente para os player que falam Português/English
ou seja você pode usar esse parâmetro com sscanf zcmd dcmd etc..
SendMessageFormatENAll //Mensagem formatada para todos os players quem fala English no servidor
SendMessageFormatPTAll //Mensagem formatada para todos os players que falam Português no servidor
Como funciona? SendMessageFormatPTAll
EXEMPLO:
PHP Code:
new pnome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pnome, 23);
SendMessageFormatPTAll(COR_MSG, "Admin %s é gay",pnome);
Para usar a função adiciona isso no topo de seu GM.
PHP Code:
new Cebola[200];
#define SendMessageFormatPTAll(%0,%1,%2); format(Cebola, sizeof(Cebola), %1, %2); for(new i = 0; i < GetMaxPlayers(); i++) { if(Player[i][Portugues]==1) SendClientMessage(i, %0, Cebola); }
#define SendMessageFormatENAll(%0,%1,%2); format(Cebola, sizeof(Cebola), %1, %2); for(new i = 0; i < GetMaxPlayers(); i++) { if(Player[i][English]==1) SendClientMessage(i, %0, Cebola); }[/CODE]
Uso da função com comando
Code:
CMD:t(playerid, params[])
{
new Text[70];
if(sscanf(params, "s", Text))return SendMessageIdioma(playerid, "use o comando /t [mensagem]", "Usage the command /t [message]");
SendMessageFormatPTAll(-1, "AVISO: %s", Text);//mensagem para todos os que falam português
SendMessageFormatENAll(-1, "WARNING: %s", Text);//mensagem para todos os que falam English
return 1;
}
SendMessageIdioma
SendMessageFormatPTAll
SendMessageFormatENAll
são funções manuais criadas para diminuir as linhas e serem de fácil uso para cada idioma, elas estão abaixo.
PHP Code:
new Cebola[200];
#define SendMessageFormatPTAll(%0,%1,%2); format(Cebola, sizeof(Cebola), %1, %2); for(new i = 0; i < GetMaxPlayers(); i++) { if(Player[i][Portugues]==1) SendClientMessage(i, %0, Cebola); }
#define SendMessageFormatENAll(%0,%1,%2); format(Cebola, sizeof(Cebola), %1, %2); for(new i = 0; i < GetMaxPlayers(); i++) { if(Player[i][English]==1) SendClientMessage(i, %0, Cebola); }
stock SendMessageIdioma(playerid, PTmsg[], ENmsg[])
{
if(Player[playerid][Portugues]==1)
{
SendClientMessage(playerid, -1, PTmsg);
return 1;
}
if(Player[playerid][English]==1)
{
SendClientMessage(playerid, -1, ENmsg);
return 1;
}
return true;
}
Uso do idioma em Dialogs
Não há muito segredo, uso um método strcat para criar a tradução olhem a abaixo:
PHP Code:
public OnPlayerSpawn(playerid)
{
new set[120],str[100],Title[30]
if(Player[playerid][Portugues]==1)
{
format(str, sizeof(str),"Jogador Novato");
strcat(Title, str);
format(str, sizeof(str),"Bem Vindo ao inferno!");
strcat(set, str);
}
else
if(Player[playerid][English]==1)
{
format(str, sizeof(str),"Player New");
strcat(Title, str);
format(str, sizeof(str),"Welcome to hell!");
strcat(set, str);
}
ShowPlayerDialog(playerid, 0xF, DIALOG_STYLE_MSGBOX, Title, set,"Ok","");
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sobre
o uso da variável sempre irá definir todo o processo da linguagem
PHP Code:
if(Player[playerid][Portugues]==1)
{
//Função
}
else
if(Player[playerid][English]==1)
{
//Função
}
PHP Code:
#include <a_samp>
#include Foreach
#include sscanf
CMD:kill(playerid)
{
SetPlayerHealth(playerid, -1);
new string[50], pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
format(string,sizeof string,"{FF0000}%s Cometeu suicídio",pName);
{
foreach(Player,i)
if(Player[i][Portugues]==1)
SendClientMessage(i, -1, string);
}
format(string,sizeof string,"{FF0000}%s Committed suicide",pName);
{
foreach(Player,i)
if(Player[i][English]==1)
SendClientMessage(i, -1, string);
}
return 1;
}
foreach(Player,i) Irá procurar o player que no caso é o i
if(Player[i][English]==1) Esse player precisa ter English==1
SendClientMessage(i, -1, string);Se for english ==1 dará a mensagem formatada em inglês.
Espero que entendam.
Uso 2 idiomas em meu servidor e até hoje nunca deu nenhuma erro ou bug, se houver algum bug me avisem!
OBS:no meu caso a variável base do meu GM é essa Player[playerid]... Se a sua for diferente como PlayerDados[playerid] ou PlayerInfo[playerid] Mude! pois se não dará erro no seu server.