[Include] Rui Almeida Tradutor
#1

Rui Almeida Tradutor

Continuaзгo

Continuaзгo desta include para plugin.
Aqui: https://sampforum.blast.hk/showthread.php?tid=551121
Continuaзгo realizada pelo Willian_Luigi. Obrigado!


Introduзгo

Olб, esta й a minha primeira include, e server para criar um servidor Multi-Lang.

A ideia de criar esta include surgiu quando estava a ver um tуpico e todas as formas que via de traduzir o gamemode ocupava no mнnimo 4 linhas, com esta include necessita apenas de 1 linha! Й um cуdigo muito simples mas bom (penso eu xD).


Funзхes
pawn Код:
RT_setText(lang[], key[], text[]) ou RT::setText(lang[], key[], text[])
Serve para guardar uma frase no ficheiro da linguagem.
pawn Код:
//Exemplo:
  //Caso pt:
      RT::setText("pt", "HELLO", "Olб, %s!");
  //Caso ing:
      RT::setText("ing", "HELLO", "Hello, %s!");
================================================== ===

pawn Код:
RT_getText(lang[], key[]) ou RT::getText(lang[], key[])
Serve para ir buscar uma frase existente.
pawn Код:
//Exemplo:
  new string[128];
  formatF(string, RT::getText("pt", "HELLO"), "WPNiGGas_");//Este define jб vкm com o include
  SendClientMessage(playerid, 0xFFFFFFFF, string);
================================================== =====

Exemplo de como usar
pawn Код:
#include <a_samp>

#define FILE_DIRECTORY "langs/%s.ini" // tem de estar antes de inserir a include!

#include <RA_T>

#define DEFAULT_LANG    "ing"

#define LANG_PT "pt" // nome do ficheiro da linguagem
#define LANG_ING "ing" // o mesmo..


new lang[MAX_PLAYERS][10]; // Variбvel que define qual a linguagem do jogador

new message[128];
main(){}

public OnGameModeInit()
{
    // Inserir as frases nos ficheiros!
    RT::setText(LANG_ING,   "WELCOME_MESSAGE""Hello %s, choise your language! Use /pt or /ing!");//como й a default so precisamos da mensagem em inglкs!
    RT::setText(LANG_ING,   "HELLO",    "Hello, %s!");
    RT::setText(LANG_ING,   "CHAT_SAY", "%s (%d) say:");
    RT::setText(LANG_PT,    "HELLO",    "Olб, %s!");
    RT::setText(LANG_PT,    "CHAT_SAY", "%s (%d) diz:");
    return 1;
}

public OnGameModeExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    lang[playerid] = DEFAULT_LANG;

    formatText(message, RT::getText(lang[playerid], "WELCOME_MESSAGE"), getName(playerid));
    SendClientMessage(playerid, 0xFFFFFF, message);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/pt", true))//escolher linguagem pt
    {
        lang[playerid] = LANG_PT;

        formatText(message, RT::getText(lang[playerid], "HELLO"), getName(playerid));
        SendClientMessage(playerid, 0xFFFFFF, message);
        return 1;
    }

    if(!strcmp(cmdtext, "/ing", true))//escolher linguagem ing
    {
        lang[playerid] = LANG_ING;

        formatText(message, RT::getText(lang[playerid], "HELLO"), getName(playerid));
        SendClientMessage(playerid, 0xFFFFFF, message);
        return 1;
    }
    return 0;
}

public OnPlayerText(playerid, text[])
{
    for(new i; i <= GetMaxPlayers(); i++)
    {
        formatText(message, RT::getText(lang[i], "CHAT_SAY"), getName(playerid), playerid);
        SendClientMessage(i, -1, message);
    }
    return 0;
}

stock getName(playerid)
{
    new name[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, name, sizeof name);
    return name;
}
Download

Pastebin

Crйditos

Ao respetivo criador da include DOF2.
E a mim.
Espero feeback, cumpz!
Reply
#2

Bem ъtil, parabйns =)
Reply
#3

Nгo gostei.

Algo simples vocк transformou em uma coisa complicada nada haver.


Poderia ter feito algo parecido com isto:

pawn Код:
<?php

new
    pLang[ MAX_PLAYERS ]
;





stock GetLang(p){
    static lang[50];
    if(pLang[p] == 0) lang = "default";
    if(pLang[p] == 1) lang = "inglкs";
    if(pLang[p] == 2) lang = "portuguкs";
   
    return lang;
}



// OnPlayerConnect
LoadPlayerTexts(playerid);


E tambйm a dependкncia da include DOF2.



Leia este tуpico: https://sampwiki.blast.hk/wiki/Fread

Que irб explicar como ler linha por linha.
Reply
#4

Nao percebi a finalidade de criar essa stock, se pode-se colocar o nome direto...
Reply
#5

Primeiramente, parabйns, achei a ideia muito bacana... Porйm o cуdigo deixou a desejar, vocк pretende lanзar versхes novas e atualizadas, para compensar isso ?

Mais uma vez, parabйns...

+rep
Reply
#6

Fico уtimo, parabйns
Reply
#7

Ficou bom e serб muito ъtil. Parabйns!
Reply
#8

+REP 5 por nгo ter muitos projetos aqui

Esperamos melhoras, mesmo assim, parabйns
Reply
#9

Realmente um projeto que nгo se encontra muito aqui na board.

Parabйns e +REP
Reply
#10

Concordo com o zSuYaNw complicaste demasiado as coisas em algo que nao era preciso.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)