zcmd.inc 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*******************************************************************************************************************************
  2. Improved ZCMD (iZCMD)
  3. This include is just a re-make of the ZCMD Command Processor ( V0.3.1 31/10/2009) originnaly developed by Zeex.
  4. Version: 0.2.3.0 (August 1st 2016)
  5. GitHub Link: https://github.com/YashasSamaga/I-ZCMD
  6. Credits:
  7. Zeex for ZCMD (the very idea of making publics for each command was introduced by Zeex in ZCMD)
  8. Yashas
  9. *******************************************************************************************************************************/
  10. #if defined _I_ZCMD_INCLUDED
  11. #endinput
  12. #endif
  13. #define _I_ZCMD_INCLUDED
  14. #define _I_ZCMD_INCLUDED_V0_2_3_0_
  15. /******************************************************************************************************************************/
  16. #define MAX_CLIENT_MSG_LENGTH (144)
  17. #define MAX_FUNC_NAME (32)
  18. #define COMMAND:%1(%2) \
  19. forward cmd_%1(%2); \
  20. public cmd_%1(%2)
  21. #define CMD:%1(%2) \
  22. COMMAND:%1(%2)
  23. #define command(%1,%2,%3) \
  24. COMMAND:%1(%2, %3)
  25. #define cmd(%1,%2,%3) \
  26. COMMAND:%1(%2, %3)
  27. #define CMD_SUCCESS 1
  28. #define CMD_FAILURE 0
  29. #if !defined isnull
  30. #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  31. #endif
  32. /******************************************************************************************************************************/
  33. #if defined OnPlayerCommandReceived
  34. forward OnPlayerCommandReceived(playerid,cmdtext[]);
  35. #endif
  36. #if defined OnPlayerCommandPerformed
  37. forward OnPlayerCommandPerformed(playerid,cmdtext[], success);
  38. #endif
  39. /******************************************************************************************************************************/
  40. public OnPlayerCommandText(playerid, cmdtext[])
  41. {
  42. #if defined OnPlayerCommandReceived
  43. if(!OnPlayerCommandReceived(playerid, cmdtext)) return 1;
  44. #endif
  45. static funcname[MAX_CLIENT_MSG_LENGTH] = "cmd_";
  46. #if defined IZCMD_ENABLE_CASE_SENSITIVITY
  47. static pos;
  48. if((pos = strfind(cmdtext, " ", false, 1)) == -1)
  49. {
  50. funcname[4] = 0;
  51. strcat(funcname, cmdtext[1], MAX_FUNC_NAME - 4);
  52. #if defined OnPlayerCommandPerformed
  53. return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  54. #else
  55. return CallLocalFunction(funcname, "is", playerid, "\1");
  56. #endif
  57. }
  58. else
  59. {
  60. funcname[4] = 0;
  61. strcat(funcname, cmdtext[1], pos + 4);
  62. while (cmdtext[pos] == ' ') pos++;
  63. if(cmdtext[pos])
  64. {
  65. #if defined OnPlayerCommandPerformed
  66. return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  67. #else
  68. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  69. #endif
  70. }
  71. else
  72. {
  73. #if defined OnPlayerCommandPerformed
  74. return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  75. #else
  76. return CallLocalFunction(funcname, "is", playerid, "\1");
  77. #endif
  78. }
  79. }
  80. #else
  81. new pos = 1, tmp;
  82. while((tmp = cmdtext[pos]) > ' ')
  83. if('A' <= tmp <= 'Z') funcname[pos++ + 3] = tmp | 0x20;
  84. else funcname[pos++ + 3] = tmp;
  85. funcname[pos + 3] = 0;
  86. while (cmdtext[pos] == ' ') pos++;
  87. if(cmdtext[pos])
  88. {
  89. #if defined OnPlayerCommandPerformed
  90. return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  91. #else
  92. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  93. #endif
  94. }
  95. else
  96. {
  97. #if defined OnPlayerCommandPerformed
  98. return OnPlayerCommandPerformed(playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  99. #else
  100. return CallLocalFunction(funcname, "is", playerid, "\1");
  101. #endif
  102. }
  103. #endif
  104. }