[Include] Lang (Sistema de Idioma) (v/0.1)
#1

Desenvolvi esta pequena include porque precisei para o gamemode que estou a desenvolver.
Nгo tenho muito a dizer sobre ela porque alйm de estar bem simples, pelas funзхes percebe-se bem como funcionar.
Espero que alguйm a use. (:

Funзхes:

GetPlayerLang - Getar o idioma do jogador;
SetPlayerLang - Setar o idioma ao jogador;
SendClientMessageLang - Enviar uma mensagem ao jogador (no idioma do prуprio);
SendClientMessageToAllLang - Enviar uma mensagem a todos os jogadores on (cada um com o seu idioma);
GameTextForPlayerLang - Enviar uma mensagem (gametext) ao jogador (no idioma do prуprio);
GameTextForAllLang - Enviar uma mensagem (gametext) a todos os jogadores on (cada um com o seu idioma);

Como usar cada funзгo:

SetPlayerLang
pawn Код:
SetPlayerLang(playerid, lang)
ex:
pawn Код:
if(!strcmp(cmdtext, "/lang1", true))
{
    SetPlayerLanguage(playerid, 0); //PT
    SendClientMessage(playerid, 0xFFF000AA, "Idioma: Portuguкs");
    return true;
}

if(!strcmp(cmdtext, "/lang2", true))
{
    SetPlayerLanguage(playerid, 1); //ENG
    SendClientMessage(playerid, 0xFFF000AA, "Language: English");
    return true;
}

if(!strcmp(cmdtext, "/lang3", true))
{
    SetPlayerLanguage(playerid, 2); //ESP
    SendClientMessage(playerid, 0xFFF000AA, "Idioma: Espaсol");
    return true;
}
playerid - jogador que irб ser setado.
lang - o idioma que irб ser setado ao jogador (0, 1 ou 2)


SendClientMessageLang
pawn Код:
SendClientMessageLang(playerid, cor, const mensagem0[], const mensagem1[], const mensagem2[])
ex:
pawn Код:
if(!strcmp(cmdtext, "/texto", true))
{
    SendClientMessageLang(playerid, 0xFFF000AA, "Olб (:", "Hello (:", "Holla (:");
    SendClientMessageLang(playerid, 0xFFF000AA, "Eu sou bonito", "I'm beautiful", "Yo soy guapo");
    return true;
}
playerid - jogador.
cor - cor da mensagem.
const mensagem0[] - a mensagem do idioma 0.
const mensagem1[] - a mensagem do idioma 1.
const mensagem2[] - a mensagem do idioma 2.


SendClientMessageToAllLang
pawn Код:
SendClientMessageToAllLang(cor, const mensagem0[], const mensagem1[], const mensagem2[])
ex:
pawn Код:
if(!strcmp(cmdtext, "/textotodos", true))
{
    SendClientMessageToAllLang(0xFFF000AA, "Olб (:", "Hello (:", "Holla (:");
    SendClientMessageToAllLang(0xFFF000AA, "Eu sou bonito", "I'm beautiful", "Yo soy guapo");
    return true;
}
cor - cor da mensagem.
const mensagem0[] - a mensagem do idioma 0.
const mensagem1[] - a mensagem do idioma 1.
const mensagem2[] - a mensagem do idioma 2.


GameTextForPlayerLang
pawn Код:
GameTextForPlayerLang(playerid, const mensagem0[], const mensagem1[], const mensagem2[], tempo, estilo)
ex:
pawn Код:
if(!strcmp(cmdtext, "/text", true))
{
    GameTextForPlayerLang(playerid, "Eu sou bonito", "I am beautiful", "Yo soy guapo", 3000, 1);
    return true;
}
playerid - jogador.
const mensagem0[] - a mensagem do idioma 0.
const mensagem1[] - a mensagem do idioma 1.
const mensagem2[] - a mensagem do idioma 2.
tempo - o tempo que o gametext vai ficar na tela.
estilo - o estilo do gametext.


GameTextForAllLang
pawn Код:
GameTextForAllLang(const mensagem0[], const mensagem1[], const mensagem2[], tempo, estilo)
ex:
pawn Код:
if(!strcmp(cmdtext, "/texttodos", true))
{
    GameTextForAllLang("Eu sou bonito", "I am beautiful", "Yo soy guapo", 3000, 1);
    return true;
}
const mensagem0[] - a mensagem do idioma 0.
const mensagem1[] - a mensagem do idioma 1.
const mensagem2[] - a mensagem do idioma 2.
tempo - o tempo que o gametext vai ficar na tela.
estilo - o estilo do gametext.

ESTILOS - https://sampwiki.blast.hk/wiki/GameTextStyle#Text_Styles

IMAGENS:




INCLUDE:
pawn Код:
/*FUNЗХES:
GetPlayerLang(playerid)
SetPlayerLang(playerid, lang)
SendClientMessageLang(playerid, cor, const mensagem0[], const mensagem1[], const mensagem2[])
SendClientMessageToAllLang(cor, const mensagem0[], const mensagem1[], const mensagem2[])
GameTextForPlayerLang(playerid, const mensagem0[], const mensagem1[], const mensagem2[], tempo, estilo)
GameTextForAllLang(const mensagem0[], const mensagem1[], const mensagem2[], tempo, estilo)
*/


#include <a_samp>
new jLang[MAX_PLAYERS] = 0;

stock GetPlayerLang(playerid) return jLang[playerid];

stock SetPlayerLang(playerid, lang)
{
    if(lang < 0 || lang > 2)
        return false;

    if(lang == 0)
        return jLang[playerid] = 0;

    else if(lang == 1)
        return jLang[playerid] = 1;

    else if(lang == 2)
        return jLang[playerid] = 2;

    return true;
}


stock SendClientMessageLang(playerid, cor, const mensagem0[], const mensagem1[], const mensagem2[])
{
    if(jLang[playerid] == 0)
        return SendClientMessage(playerid, cor, mensagem0);

    else if(jLang[playerid] == 1)
        return SendClientMessage(playerid, cor, mensagem1);

    else if(jLang[playerid] == 2)
        return SendClientMessage(playerid, cor, mensagem2);

    return true;
}

stock SendClientMessageToAllLang(cor, const mensagem0[], const mensagem1[], const mensagem2[])
{
    for(new x = 0; x <= GetMaxPlayers(); x++)
    {
        if(IsPlayerConnected(x))
        {

            if(jLang[x] == 0)
                return SendClientMessage(x, cor, mensagem0);

            else if(jLang[x] == 1)
                return SendClientMessage(x, cor, mensagem1);

            else if(jLang[x] == 2)
                return SendClientMessage(x, cor, mensagem2);
        }
    }
    return true;
}      

stock GameTextForPlayerLang(playerid, const mensagem0[], const mensagem1[], const mensagem2[], tempo, estilo)
{
    if(jLang[playerid] == 0)
        return GameTextForPlayer(playerid, mensagem0, tempo, estilo);

    else if(jLang[playerid] == 1)
        return GameTextForPlayer(playerid, mensagem1, tempo, estilo);

    else if(jLang[playerid] == 2)
        return GameTextForPlayer(playerid, mensagem2, tempo, estilo);

    return true;
}  

stock GameTextForAllLang(const mensagem0[], const mensagem1[], const mensagem2[], tempo, estilo)
{
    for(new y = 0; y <= GetMaxPlayers(); y++)
    {
        if(IsPlayerConnected(y))
        {
            if(jLang[y] == 0)
                return GameTextForPlayer(y, mensagem0, tempo, estilo);

            else if(jLang[y] == 1)
                return GameTextForPlayer(y, mensagem1, tempo, estilo);

            else if(jLang[y] == 2)
                return GameTextForPlayer(y, mensagem2, tempo, estilo);
        }
    }
    return true;
}
http://pastebin.com/ia2Bfc6K
Reply
#2

Gostei bastante. Й super difнcil achar ideias realmente novas e ъteis como a sua. Eu ja vi um que traduz direto do ******, mas a vantagem do seu й que vocк nгo se prende a traduзгo do ******, vocк faz a sua prуpria e pode ser acoplada com qualquer funcionalidade do Pawn.

Realmente muito bom mesmo, parabйns pelo excelente trabalho.

@edit
Gostaria de fazer 2 observaзхes:

- Verbo GETAR e SETAR
- Outra coisa, as funзхes que vocк criou nгo podem ser consideras NATIVES igual vocк deixou no comentбrio. O conceito de native й diferente do aplicado com essas funзхes
Reply
#3

Quote:
Originally Posted by godkrad
Посмотреть сообщение
Gostei bastante. Й super difнcil achar ideias realmente novas e ъteis como a sua. Eu ja vi que traduz direto do ******, mas a vantagem do seu й que vocк nгo se prende a traduзгo do ******, vocк faz a sua prуpria e pode ser acoplada com qualquer funcionalidade do Pawn.

Realmente muito bom mesmo, parabйns pelo excelente trabalho.

@edit
Gostaria de fazer 2 observaзхes:

- Verbo GETAR e SETAR
- Outra coisa, as funзхes que vocк criou nгo podem ser consideras NATIVES igual vocк deixou no comentбrio. O conceito de native й diferente do aplicado com essas funзхes
Pronto.
Getar й o mesmo que pegar.. setar o mesmo que colocar/dar.
Reply
#4

Simples porйm muito ъtil!
Reply
#5

Gostei .
Reply
#6

Legal , pra ficar melhor ainda , vocк poderia por algo pra conectar com o ****** tradutor..
ai usa SendClientMessageLang(playerid,"Olб , seja bem vindo"); mais pros outros o sistema lк o idioma deles
e manda a frase escrita dentro da SCML pro ****** tradutor e volta o resultado...
Nгo sei se й possнvel pois eu ainda nгo mechi com MySql e HTTP..
Reply
#7

уtimo, irei atй atualizar meu servidor para Multi-Languages!

PHP код:
if(rep[playerid] == 1) return rep++; 
Reply
#8

Quote:
Originally Posted by darkxdll
Посмотреть сообщение
Legal , pra ficar melhor ainda , vocк poderia por algo pra conectar com o ****** tradutor..
ai usa SendClientMessageLang(playerid,"Olб , seja bem vindo"); mais pros outros o sistema lк o idioma deles
e manda a frase escrita dentro da SCML pro ****** tradutor e volta o resultado...
Nгo sei se й possнvel pois eu ainda nгo mechi com MySql e HTTP..
Quem sabe numa futura atualizaзгo amigo.
Reply
#9

Й relativamente mais simples do que y_languages e consequentemente menos funcional, mas уtimo trabalho!
Reply
#10

Simples porйm interessante e ъtil, parabens!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)