| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /*******************************************************************************************************************************
- Improved ZCMD (iZCMD)
- This include is just a re-make of the ZCMD Command Processor ( V0.3.1 31/10/2009) originnaly developed by Zeex.
- Version: 0.2.3.0 (August 1st 2016)
- GitHub Link: https://github.com/YashasSamaga/I-ZCMD
- Credits:
- Zeex for ZCMD (the very idea of making publics for each command was introduced by Zeex in ZCMD)
- Yashas
- *******************************************************************************************************************************/
- #if defined _I_ZCMD_INCLUDED
- #endinput
- #endif
- #define _I_ZCMD_INCLUDED
- #define _I_ZCMD_INCLUDED_V0_2_3_0_
- /******************************************************************************************************************************/
- #define MAX_CLIENT_MSG_LENGTH (144)
- #define MAX_FUNC_NAME (32)
- #define COMMAND:%1(%2) \
- forward cmd_%1(%2); \
- public cmd_%1(%2)
- #define CMD:%1(%2) \
- COMMAND:%1(%2)
- #define command(%1,%2,%3) \
- COMMAND:%1(%2, %3)
- #define cmd(%1,%2,%3) \
- COMMAND:%1(%2, %3)
- #define CMD_SUCCESS 1
- #define CMD_FAILURE 0
- #if !defined isnull
- #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
- #endif
- /******************************************************************************************************************************/
- #if defined OnPlayerCommandReceived
- forward OnPlayerCommandReceived(playerid,cmdtext[]);
- #endif
- #if defined OnPlayerCommandPerformed
- forward OnPlayerCommandPerformed(playerid,cmdtext[], success);
- #endif
- /******************************************************************************************************************************/
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- #if defined OnPlayerCommandReceived
- if(!OnPlayerCommandReceived(playerid, cmdtext)) return 1;
- #endif
-
- static funcname[MAX_CLIENT_MSG_LENGTH] = "cmd_";
- #if defined IZCMD_ENABLE_CASE_SENSITIVITY
- static pos;
- if((pos = strfind(cmdtext, " ", false, 1)) == -1)
- {
- funcname[4] = 0;
- strcat(funcname, cmdtext[1], MAX_FUNC_NAME - 4);
- #if defined OnPlayerCommandPerformed
- return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
- #else
- return CallLocalFunction(funcname, "is", playerid, "\1");
- #endif
- }
- else
- {
- funcname[4] = 0;
- strcat(funcname, cmdtext[1], pos + 4);
- while (cmdtext[pos] == ' ') pos++;
- if(cmdtext[pos])
- {
- #if defined OnPlayerCommandPerformed
- return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
- #else
- return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
- #endif
- }
- else
- {
- #if defined OnPlayerCommandPerformed
- return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
- #else
- return CallLocalFunction(funcname, "is", playerid, "\1");
- #endif
- }
- }
- #else
- new pos = 1, tmp;
- while((tmp = cmdtext[pos]) > ' ')
- if('A' <= tmp <= 'Z') funcname[pos++ + 3] = tmp | 0x20;
- else funcname[pos++ + 3] = tmp;
- funcname[pos + 3] = 0;
- while (cmdtext[pos] == ' ') pos++;
-
- if(cmdtext[pos])
- {
- #if defined OnPlayerCommandPerformed
- return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
- #else
- return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
- #endif
- }
- else
- {
- #if defined OnPlayerCommandPerformed
- return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
- #else
- return CallLocalFunction(funcname, "is", playerid, "\1");
- #endif
- }
- #endif
- }
|