Stock problem - 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)
+--- Thread: Stock problem (
/showthread.php?tid=611233)
Stock problem -
Shinja - 03.07.2016
Код:
stock Scm(playerid, color, const message[], {Float,_}:...)
{
new string[356];
format(string, 356, const message, {Float,_}:...);
SendClientMessage(playerid, -1, string);
}
i want to make a stock like this but i get errors
ex usage:
Код:
new name[24];
GetPlayerName(playerid, name, sizeof(name));
Scm(playerid, -1, "%s(%d) blabla", name, playerid);
Код:
C:\Users\Admin\Desktop\SERVER\gamemodes\s.pwn(42) : error 029: invalid expression, assumed zero
C:\Users\Admin\Desktop\SERVER\gamemodes\s.pwn(42) : warning 215: expression has no effect
C:\Users\Admin\Desktop\SERVER\gamemodes\s.pwn(42) : error 017: undefined symbol "Float"
C:\Users\Admin\Desktop\SERVER\gamemodes\s.pwn(42) : error 029: invalid expression, assumed zero
C:\Users\Admin\Desktop\SERVER\gamemodes\s.pwn(42) : fatal error 107: too many error messages on one line
Re: Stock problem -
Konstantinos - 03.07.2016
Everybody would wish to be that simple but without #emit, you can't get it working.
PHP код:
// By Nero_3D
SCM(playerid, color, form[], {Float, _}: ...)
{
#pragma unused form
static
tmp[145];
new
t1 = playerid,
t2 = color;
const
n4 = -4,
n16 = -16,
size = sizeof tmp;
#emit stack 28
#emit push.c size
#emit push.c tmp
#emit stack n4
#emit sysreq.c format
#emit stack n16
return SendClientMessage(t1, t2, tmp);
}
Re: Stock problem -
Dayrion - 03.07.2016
I have a version of SCMF:
PHP код:
SCMF(playerid, color, const msg[], va_args<>)
{
static
string[145];
va_format(string, sizeof(string), msg, va_start<3>);
return SendClientMessage(playerid, color, string);
}
One with EMIT like Konstantinos published :
PHP код:
// ! Credit to the original author !
SCMF(playerid,color,fstring[],{Float, _}:...)
{
new n=(numargs()-3)*4;
if(n)
{
new message[128],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-=4;
#emit LOAD.S.pri arg_end
}
while(arg_end>arg_start);
#emit PUSH.S fstring
#emit PUSH.C 255
#emit PUSH.ADR message
n+=4*3;
#emit PUSH.S n
#emit SYSREQ.C format
n+=4;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SCM(playerid,color,message);
}
else return SCM(playerid,color,fstring);
}
For SendClientMessageToAll.
PHP код:
#define SCMFTA(%1,%2,%3) do{new _str[190]; format(_str,150,%2,%3); SendClientMessageToAll(%1,_str);}while(FALSE)
Re: Stock problem -
Shinja - 03.07.2016
Thats a stock or what?
Can you tell me the final result
Re: Stock problem -
Dayrion - 03.07.2016
Do you know what is a
stock function ?
Also, please, read this : https://sampforum.blast.hk/showthread.php?tid=570635