[Ajuda] SendFormatMsg
#1

Olб pessoal, Eu estou com o seguinte problema: Eu em busca de reduzir aquelas milhares de formataзхes de string do GameMode tentei criar uma funзгo:

pawn Код:
CallBack:SendFormatMsg(playerid, COLOR, Msg[], Parametros[]){
    new string[128];
    format(string, sizeof(string),Msg, Parametros);
    SendClientMessage(playerid, COLOR, string);
    return true;
}
Mas, tem um problema, se eu nгo usar os parametros tipo Exibir um nome na funзгo da o Warning por falta de parametros, teria alguma maneira de fazer esses parametros nгo serem obrigatуrios?. E outra se eu Getar mais de uma informaзгo no testo tambйm da Warning.
Reply
#2

eз sefalмt nгo paramitos funзгo szecura neymar:

pawn Код:
stock SendFormatMsg(playerid,color,const msg[],{Float,_}:...)
{
new len = strlen(msg),d=0,posArg = 3;
new dest[512];
for(new i=0;i<len;i++)
{
if(msg[i] == '%')
{
switch (msg[i+1])
{
case 's':
{
new pos,arg,tmppos;
new str[128];
while(getarg(posArg,pos)!='')
{
arg=getarg(posArg,pos++);
str[tmppos]=arg;
tmppos++;
}
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case 'i', 'd':
{
new str[128];
format(str,sizeof(str),"%d",getarg(posArg));
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case 'f':
{
new str[128];
format(str,sizeof(str),"%f",getarg(posArg));
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case '.':
{
new len2 = msg[i+2];
if(len2 == 0)
{
dest[d] = msg[i];
d++;
}
else
{
new str[32],formatting[5];
formatting[0] = '%';
formatting[1] = '.';
formatting[2] = len2;
formatting[3] = 'f';
format(str,sizeof(str),formatting,getarg(posArg));
strins(dest,str,d,len2);
d+=len;
posArg++;
i+= 2;
}
}
default:
{
dest[d] = msg[i];
d++;
}
}
}
else
{
dest[d] = msg[i];
d++;
}
}
return SendClientMessage(playerid,color,dest);
}
Reply
#3

C:\Users\Matheus\Desktop\GM\gamemodes\GM.pwn(329) : error 027: invalid character constant

pawn Код:
while(getarg(posArg,pos)!='')
Reply
#4

Use y_va.
Reply
#5

Obrigado resolvido.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)