01.06.2017, 16:07
Macro para criar pseudфnimos(alias) facilmente para zcmd ^^
Exemplos:
Com este macro
Sem o macro
Cуdigo:
Exemplos:
Com este macro
PHP код:
CMD:ajuda(playerid, params[]) < help, ayuda >
{
return 1;
}
PHP код:
CMD:help(playerid, params[]) return cmd_ajuda(playerid, params);
CMD:ayuda(playerid, params[]) return cmd_ajuda(playerid, params);
CMD:ajuda(playerid, params[])
{
return 1;
}
PHP код:
#if defined command
#undef command
#endif
#if defined cmd
#undef cmd
#endif
#if defined CMD
#undef CMD
#endif
#define command:%0(%1) cmd_%0(%1); public cmd_%0(%1)
#define alias:%0(%1,%2); command:%0(playerid,params[]) return cmd_%1(%2);
// Remove espaзos
#define cmd_%0\32;%1( cmd_%1(
#define C@1_%0\32;%1: C@1_%1:
#define F@0_%0\32;%1( F@0_%1(
#define forward%9C@1_%0\32;%1: forward C@1_%1:
// Divide o comando em dois macros c@0:c@1:
#define CMD:%0(%1) cmd:%0(%1)
#define cmd:%0(%1) c@0:c@1:%0(%1)
/*
* c@0 - Detecta se existe algum alias
* c@1 - Comando sem alias
*/
/*
* %0 - Nome do comando
* %1 - Parametros do comando
* %2 - Aliases
*/
#define c@0:c@1:%0(%1)<%2> alias_cmd(%0(%1)<%2>)
/*
* %0 - Nome do comando
* %1 - Parametros do comando
*/
#define c@1:%0(%1) ___fix_();command:%0(%1)
// Converte os aliases para serem analizados recursivamente por C@0
#define alias_cmd(%0(%1)<%2>) C@0(%0(%1)),%2, END,
// Analiza os aliases recursivamente
#define C@0(%9(%8)),%0\32;%1, alias_analyze:%1(%9(%8));C@0(%9(%8)),
// Nenhum outro alias encontrado, entгo cria o comando
#define C@1_END:%1(%0);C@0(%9(%8)), command:%9(%8)
// Analiza
#define alias_analyze:%0(%9(%8)) forward C@1_%0:ALIAS:%0(%9,analyze_params(%8))
// Oculta a tag C@1_*: com uma declaraзгo, que apуs a parte da prй-compilaзгo й ignorada e cria um alias
#define ALIAS:%0(%1,%2); F@0_%0(); alias:%0(%1,%2);
/*
* Analiza os parametros e retorna quantos tem no formato
* %0 - Parametros para verificar
*/
#define analyze_params(%0) _:p@0:p@1:(%0)
#define p@0:p@1:(%0,%1) playerid, params
#define p@1:(%0) playerid