02/11/2020 23:03
(Esta mensagem foi modificada pela última vez a: 11/11/2020 15:00 por Chainksain.)
(03/10/2020 06:47)NelsonC. Escreveu:(03/10/2020 00:26)willttoonn Escreveu: SendClientMessageEx - Funciona como um SendClientMessage, so que você pode formatar o texto com os atributos na própria função, eliminando a necessidade de um format a parte.
Código:SendClientMessageEx(playerid, color, const str[], {Float,_}:...)
{
static
args,
start,
end,
string[144]
;
#emit LOAD.S.pri 8
#emit STOR.pri args
if (args > 12)
{
#emit ADDR.pri str
#emit STOR.pri start
for (end = start + (args - 12); end > start; end -= 4)
{
#emit LREF.pri end
#emit PUSH.pri
}
#emit PUSH.S str
#emit PUSH.C 144
#emit PUSH.C string
#emit PUSH.C args
#emit SYSREQ.C format
SendClientMessage(playerid, color, string);
#emit LCTRL 5
#emit SCTRL 4
#emit RETN
}
return SendClientMessage(playerid, color, str);
}
Exemplo de uso (-1 é a cor, nesse caso branca):
Código:new player_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, player_name);
SendClientMessageEx(playerid, -1, "O meu nome é %s.", playername);
Mais fácil assim mano
Código PHP:// macro
new __message[280];
#define SendClientMessage(%0,%1,%2,%3) \
(format(__message,sizeof(__message),%2,%3),SendClientMessage(%0,%1,__message))
#define SendClientMessageToAll(%0,%1,%2) \
(format(__message,sizeof(__message),%1,%2),SendClientMessageToAll(%0,__message))
Exemplos:
Código PHP:new player_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, player_name);
SendClientMessage(playerid, -1, "Você tem %d de dinheiro", GetPlayerMoney(playerid));
SendClientMessageToAll(-1, "O jogador %s tem %d de dinheiro.", player_name, GetPlayerMoney(playerid));
para quem usa o pacote do YSI, nele tem a biblioteca do y_va que tbm simplifica bastante esta função:
Código:
stock SendClientMessageEx(playerid, colour, const fmat[], va_args<>)
{
static str[145];
va_format(str, sizeof (str), fmat, va_start<3>);
return SendClientMessage(playerid, colour, str);
}