newCmd:teste(playerid,params[]) { new k; if(sscanf(params, "d", k)) return SendClientMessage(playerid, -1, "Correct Syntax: /teste params"); SendClientMessage(playerid, -1, "Valor printado!"); printf("[Debug] - Result do CMD: teste, %d", k); return 1; } // ou newCommand:teste2(playerid,params[]) { new k; if(sscanf(params, "d", k)) return SendClientMessage(playerid, -1, "Correct Syntax: /teste params"); SendClientMessage(playerid, -1, "Valor printado!"); printf("[Debug] - Result do CMD: teste, %d", k); return 1; }
newCmd:teste(playerid,params[]) { new k; if(sscanf(params, "d", k)) return SendClientMessage(playerid, -1, "Correct Syntax: /teste params"); SendClientMessage(playerid, -1, "Valor printado!"); printf("[Debug] - Result do CMD: teste, %d", k); return 1; } newCommand:teste2(playerid,params[]) { return @teste(playerid, params); }
Specifier(s) Name Example values i, d Integer 1, 42, -10 c Character a, o, * l Logical true, false b Binary 01001, 0b1100 h, x Hex 1A, 0x23 o Octal 045 12 n Number 42, 0b010, 0xAC, 045 f Float 0.7, -99.5 g IEEE Float 0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E u User name/id (bots and players) ******, 0 q Bot name/id ShopBot, 27 r Player name/id ******, 42
/******************************************************************************\
| |
| [Include] - Processador de comandos |
| By Jeffrey_Hatrix |
| Special thanks to: SlashPT for speed ideas |
| |
\******************************************************************************/
// JCMD Fast and simple, enjoy.
#if !defined MAX_CMD_PARAMS
#define MAX_CMD_PARAMS 256
#endif
#define newCmd:%1(%2) \
forward @%1(%2); \
public @%1(%2)
#define newCommand:%1(%2) \
newCmd:%1(%2)
static c_sys_cmd[MAX_CMD_PARAMS], c_sys_loop;
public OnPlayerCommandText(playerid, cmdtext[])
{
c_sys_loop = strfind((cmdtext[0] = 0x40 ,cmdtext), "\x20" );
c_sys_cmd [0] = '\0';
if(c_sys_loop != -1)
{
if(cmdtext[c_sys_loop+1] == '\0')
{
cmdtext[c_sys_loop] = '\0';
return (CallLocalFunction(cmdtext, "is", playerid, "\1") == -1) ? (0) : (1);
}
strmid(c_sys_cmd, cmdtext, 0, MAX_CMD_PARAMS);
c_sys_cmd[c_sys_loop] = '\0';
return (CallLocalFunction(c_sys_cmd, "is", playerid, cmdtext[c_sys_loop+1]) == -1) ? (0) : (1);
}
else
{
return (CallLocalFunction(cmdtext, "is", playerid, "\1") == -1) ? (0) : (1);
}
}
bem legal, mas ainda nao se pode usar a callback OnPlayerCommandText =x
|
Exemplo: caso o comando seja newCmd:teste(playerid,params[]) { print("[Debug] - Result do CMD: teste, funcionando!"); return 1; } Caso digite /Teste, /TESTE, /tesTe, /testE o comando nгo irб funcionar.
//Cria um carro newCmd:cc(playerid, params[]) { new carId; if(sscanf(params, "d", carId)) return false; new Float:pos[4]; GetPlayerPos(playerid, pos[0], pos[1], pos[2]); GetPlayerFacingAngle(playerid, pos[3]); CreateVehicle(carId, pos[0], pos[1], pos[2], pos[3], -1, -1, 99999999); return 1; } //Teleporta atй outro player newCmd:ir(playerid, params[]) { new playerB; if(sscanf(params, "d", playerB)) return false; new Float:s[3]; GetPlayerPos(playerB, s[0], s[1], s[2]); SetPlayerPos(playerid, s[0]+1, s[1], s[2]); return 1; } //Mata alguйm newCmd:kill(playerid, params[]) { new playerB; if(sscanf(params, "d", playerB)) return false; SetPlayerHealth(playerB, 0); return 1; } -------------------------------------------------------------------------------------- Bom para estes comandos usei apenas parвmetros com integers d | i = valores inteiros. Entгo tambйm poderia ser: if(sscanf(params, "i", ...))
/******************************************************************************\
| |
| [Include] - Processador de comandos |
| By Jeffrey_Hatrix |
| Special thanks to: SlashPT for speed ideas |
| |
\******************************************************************************/
// JCMD Fast and simple, enjoy.
#if !defined MAX_CMD_PARAMS
#define MAX_CMD_PARAMS 256
#endif
#define newCmd:%1(%2) \
forward @%1(%2); \
public @%1(%2)
#define newCommand:%1(%2) \
newCmd:%1(%2)
forward ProcessarComandos_Strcmp(playerid,cmdtext[]);
static c_sys_cmd[MAX_CMD_PARAMS], c_sys_loop, call_index;
static bool:callback_strcmp = false;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
callback_strcmp = funcidx("ProcessarComandos_Strcmp") != -1;
return CallLocalFunction("jcmd_OnFilterScriptInit", "");
}
#if defined _ALS_OnFilterScriptInit
#undef OnFilterScriptInit
#else
#define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit jcmd_OnFilterScriptInit
forward jcmd_OnFilterScriptInit();
#else
public OnGameModeInit()
{
callback_strcmp = funcidx("ProcessarComandos_Strcmp") != -1;
if(funcidx("jcmd_OnGameModeInit") != -1)
{
return CallLocalFunction("jcmd_OnGameModeInit", "");
}
return 1;
}
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit jcmd_OnGameModeInit
forward jcmd_OnGameModeInit();
#endif
stock ProcessarComando_jCmd(playerid, cmdtext[])
{
c_sys_loop = strfind((cmdtext[0] = 0x40 ,cmdtext), "\x20");
c_sys_cmd [0] = '\0';
if(c_sys_loop != -1)
{
if(cmdtext[c_sys_loop+1] == '\0')
{
cmdtext[c_sys_loop] = '\0';
call_index = CallLocalFunction(cmdtext, "is", playerid, "\1");
}
else
{
strmid(c_sys_cmd, cmdtext, 0, MAX_CMD_PARAMS);
c_sys_cmd[c_sys_loop] = '\0';
call_index = CallLocalFunction(c_sys_cmd, "is", playerid, cmdtext[c_sys_loop+1]);
}
}
else
{
call_index = CallLocalFunction(cmdtext, "is", playerid, "\1");
}
if(callback_strcmp == true)
{
if(call_index == 0 || call_index == -1)
{
cmdtext[0] = '/';
call_index = CallLocalFunction("ProcessarComandos_Strcmp", "is", playerid, cmdtext);
return (call_index == -1) ? (0) : (call_index);
}
else
{
return 1;
}
}
return (call_index == -1) ? (0) : (call_index);
}