Server Crash
#1

My server crash motive of this fuction: (Sorry My Bad English)



Quote:

#define SendMessageF( MessageF(INVALID_PLAYER_ID,

Quote:

stock MessageF(playerid, color, fstring[], {Float, _}:...)
{
/*
****** &| Zeex
*/
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);
}
}
}

Reply
#2

wtf man
What are you doing nonsense definitions
PHP код:
#define SendMessageF(%0)    MessageF(INVALID_PLAYER_ID,%0) 
Reply
#3

Quote:
Originally Posted by AbyssMorgan
Посмотреть сообщение
wtf man
What are you doing nonsense definitions
PHP код:
#define SendMessageF(%0)    MessageF(INVALID_PLAYER_ID,%0) 
this is incomplete?

Quote:

#define A_Format(%1, format(%1,sizeof(%1),

EDIT: Do not remove the crash:

Quote:

[14:18:24] [debug] #1 001b8ea0 in MensajeF (playerid=65535, color=1605566463, fstring[]=@014a3e90 "[Admin] %s(%d):{FFFFFF} %s", ... <3 arguments>) at C:\Users\Mijail2\Desktop\samprp\gamemodes\rp.pwn:2 7542

Quote:

stock MensajeF(playerid, color, fstring[], {Float, _}:...)
{
/*
****** &| Zeex
*/
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; //server_log mark this line
#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);
}
}
}

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)