SendFormattedMessage - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (
https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (
https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (
https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: SendFormattedMessage (
/showthread.php?tid=257849)
[SOLVED] SendFormattedMessage - Unknown123 - 28.05.2011
What is wrong with this define?
pawn Код:
#define SendFormattedMessage(%0,%1,%2,%3) \
{ \
do \
{ \
new _string_[128]; \
format(_string_, sizeof(_string_), %2, %3); \
SendClientMessage(%0, %1, _string_); \
} \
while(false); \
}
Gives me these warnings where i use it
Код:
C:\Users\...\Desktop\...\gamemodes\....pwn(582) : warning 205: redundant code: constant expression is zero
C:\Users\...\Desktop\...\gamemodes\....pwn(582) : warning 217: loose indentation
C:\Users\...\Desktop\...\gamemodes\....pwn(582) : error 036: empty statement
EDIT!
Solved:
pawn Код:
#define SendClientMessageEx(%0,%1,%2,%3) \
do \
{ \
if(strlen(%2) > 0) \
{ \
new _string_[128]; \
format(_string_, sizeof(_string_), %2, %3); \
SendClientMessage(%0, %1, _string_); \
} \
} \
while(FALSE)
Re: SendFormattedMessage -
Lorenc_ - 28.05.2011
pawn Код:
#define BYTES_PER_CELL 4
stock SendClientMessageFormatted(playerid, color, fstring[], {Float, _}:...)
{
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if(n)
{
new message[144],arg_start,arg_end;
#emit CONST.alt fstring
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start
#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do
{
#emit LOAD.I
#emit PUSH.pri
arg_end -= BYTES_PER_CELL;
#emit LOAD.S.pri arg_end
}
while(arg_end > arg_start);
#emit PUSH.S fstring
#emit PUSH.C 144
#emit PUSH.ADR message
n += BYTES_PER_CELL * 3;
#emit PUSH.S n
#emit SYSREQ.C format
n += BYTES_PER_CELL;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
if(playerid == INVALID_PLAYER_ID)
{
#pragma unused playerid
return SendClientMessageToAll(color, message);
} else {
return SendClientMessage(playerid, color, message);
}
} else {
if(playerid == INVALID_PLAYER_ID)
{
#pragma unused playerid
return SendClientMessageToAll(color, fstring);
} else {
return SendClientMessage(playerid, color, fstring);
}
}
}
Use this, hopefully a friend of mine don't mind if i share.
EDIT: Didn't noticed solved, sorry :/
Re: SendFormattedMessage -
Seven_of_Nine - 28.05.2011
I wrote this. Nice and easy.
pawn Код:
#define SendFormattedMessage(%0,%1,%2,%3) \
new text[128]; \
format(text,sizeof(text),%2,%3); \
SendClientMessage(%0,%1,text)
Re: SendFormattedMessage -
Lorenc_ - 28.05.2011
The one i posted possibly made by ****** and Zee (creator of zcmd) should be way better and optimized.