[Ajuda] Formatar SendClientMessage
#1

Preciso de uma ajuda para formatar a stock do SendClientMessageLang (stock do sistema de multi idiomas)

Stock
PHP код:
SendClientMessageLang(playeridColorLangPT[], LangENG[], define1[]=""str=0,str2=0define2[]=""define3[]=""define4[]="",str3=0)
{
    new 
TmpBuf[256];
    if(
lang[playerid] == 0)format(TmpBufsizeof(TmpBuf), LangPTdefine1str,str2define2define3define4str3);
    if(
lang[playerid] == 1)format(TmpBufsizeof(TmpBuf), LangENGdefine1str,str2define2define3define4str3);
    
SendClientMessage(playeridColorTmpBuf);

Como funciona
PHP код:
SendClientMessageLang(playeridCOLOR_WHITE,
    
"• AVISO » Player %s[%i] has been kicked by admin %s[%i] [Reason: %s]",//primeira linha = idioma 1 = PT
    
"• WARN » Player %s[%i] has been kicked by admin %s[%i] [Reason: %s]"tkPlayerName(target), targettkPlayerName(playerid), playeridreason); //segunda linha = idioma 2 = ENG 
Essa stock formata certinho, porem como tem definido 2 vezes 'tkPlayerName' ( tkPlayerName(target), tkPlayerName(playerid) ) acaba dando erro. Como formatar de forma correta essa stock para que possa ser usado variaveis iguais/parecidas?
Reply
#2

Essa maneira de trabalhar com internacionalizaзгo tб bem trabalhosa, isso pode te dar dor de cabeзa futuramente.

Tente usar alguma include/plugin jб existente, para fazer isso de forma mais fбcil.

https://sampforum.blast.hk/showthread.php?tid=551121

esse trabalho feito pelo VenuZ pode te ajudar...
Reply
#3

Usa y_va, exemplo >
PHP код:
SendClientMessageLang(playeridCOLOR_WHITE
    
"• AVISO » Player %s[%i] has been kicked by admin %s[%i] [Reason: %s]",//primeira linha = idioma 1 = PT 
    
"• WARN » Player %s[%i] has been kicked by admin %s[%i] [Reason: %s]"tkPlayerName(target), targettkPlayerName(playerid), playeridreason); //segunda linha = idioma 2 = ENG  
SendClientMessageLang(playeridCor, const String1[], const String2[], va_args<>)
{
    new 
dest[145];
    if(
lang[playerid] == 0)    va_format(destsizeof(dest), String1va_start<4>);
    if(
lang[playerid] == 1)    va_format(destsizeof(dest), String2va_start<4>);
    
SendClientMessage(playeridCordest); 

Mas sla este mйtodo ae й trabalhoso, se tu quiser um уtimo mйtodo da uma olhada aqui: https://github.com/oscar-broman/PAWN-Boilerplate
Ae vai ter um mйtodo de multi indiomas, que lida com php para pegar todas as strings, assim vocк nгo se perde no meio do GM, para saber qual string й qual.
Mas vai de cada um, o ipsNan sugeriu um bom tbm.
Reply
#4

Quote:
Originally Posted by Day_
Посмотреть сообщение
Usa y_va, exemplo >
PHP код:
SendClientMessageLang(playeridCOLOR_WHITE
    
"• AVISO » Player %s[%i] has been kicked by admin %s[%i] [Reason: %s]",//primeira linha = idioma 1 = PT 
    
"• WARN » Player %s[%i] has been kicked by admin %s[%i] [Reason: %s]"tkPlayerName(target), targettkPlayerName(playerid), playeridreason); //segunda linha = idioma 2 = ENG  
SendClientMessageLang(playeridCor, const String1[], const String2[], va_args<>)
{
    new 
dest[145];
    if(
lang[playerid] == 0)    va_format(destsizeof(dest), String1va_start<4>);
    if(
lang[playerid] == 1)    va_format(destsizeof(dest), String2va_start<4>);
    
SendClientMessage(playeridCordest); 

Mas sla este mйtodo ae й trabalhoso, se tu quiser um уtimo mйtodo da uma olhada aqui: https://github.com/oscar-broman/PAWN-Boilerplate
Ae vai ter um mйtodo de multi indiomas, que lida com php para pegar todas as strings, assim vocк nгo se perde no meio do GM, para saber qual string й qual.
Mas vai de cada um, o ipsNan sugeriu um bom tbm.
Nгo conhecia esse y_va, se soubesse teria recomendado ele mesmo... Muito bacana, vou dar uma olhada mais tarde, vlw Day_
Reply
#5

Й q assim galera, o sistema funfa muito bem, e ainda й um dos poucos sistemas q aceita formataзгo, porйm funfa apenas uma string e/ou uma variбvel, sendo que preciso do PLAYERID e do TARGET ( tkPlayerName(playerid) / tkPlayerName(target)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)