zcmd.inc 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**********************************
  2. * *
  3. * @Author: ZeeX *
  4. * @Version: 0.3.1 *
  5. * @Released: 31/10/2009 *
  6. * *
  7. **********************************/
  8. #if defined _zcmd_included
  9. #endinput
  10. #endif
  11. #define _zcmd_included
  12. #define MAX_FUNC_NAME (32)
  13. #define COMMAND:%1(%2) \
  14. forward cmd_%1(%2); \
  15. public cmd_%1(%2)
  16. #define CMD:%1(%2) \
  17. COMMAND:%1(%2)
  18. #define command(%1,%2,%3) \
  19. COMMAND:%1(%2, %3)
  20. #define cmd(%1,%2,%3) \
  21. COMMAND:%1(%2, %3)
  22. #if !defined isnull
  23. #define isnull(%1) \
  24. ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  25. #endif
  26. forward OnPlayerCommandReceived(playerid, cmdtext[]);
  27. forward OnPlayerCommandPerformed(playerid, cmdtext[], success);
  28. static
  29. bool:zcmd_g_HasOPCS = false,
  30. bool:zcmd_g_HasOPCE = false;
  31. #if defined FILTERSCRIPT
  32. public OnFilterScriptInit()
  33. {
  34. zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
  35. zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
  36. return CallLocalFunction("zcmd_OnFilterScriptInit", "");
  37. }
  38. #if defined _ALS_OnFilterScriptInit
  39. #undef OnFilterScriptInit
  40. #else
  41. #define _ALS_OnFilterScriptInit
  42. #endif
  43. #define OnFilterScriptInit zcmd_OnFilterScriptInit
  44. forward zcmd_OnFilterScriptInit();
  45. #else /*not a filterscript*/
  46. public OnGameModeInit()
  47. {
  48. zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
  49. zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
  50. if (funcidx("zcmd_OnGameModeInit") != -1)
  51. {
  52. return CallLocalFunction("zcmd_OnGameModeInit", "");
  53. }
  54. return 1;
  55. }
  56. #if defined _ALS_OnGameModeInit
  57. #undef OnGameModeInit
  58. #else
  59. #define _ALS_OnGameModeInit
  60. #endif
  61. #define OnGameModeInit zcmd_OnGameModeInit
  62. forward zcmd_OnGameModeInit();
  63. #endif /*if defined FILTERSCRIPT*/
  64. public OnPlayerCommandText(playerid, cmdtext[])
  65. {
  66. if (isnull(cmdtext))
  67. {
  68. printf("[NULL (%d)]", playerid);
  69. return 0;
  70. }
  71. if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
  72. {
  73. return 1;
  74. }
  75. new
  76. pos,
  77. funcname[MAX_FUNC_NAME];
  78. while (cmdtext[++pos] > ' ')
  79. {
  80. funcname[pos-1] = tolower(cmdtext[pos]);
  81. }
  82. format(funcname, sizeof(funcname), "cmd_%s", funcname);
  83. while (cmdtext[pos] == ' ') pos++;
  84. if (!cmdtext[pos])
  85. {
  86. if (zcmd_g_HasOPCE)
  87. {
  88. return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  89. }
  90. return CallLocalFunction(funcname, "is", playerid, "\1");
  91. }
  92. if (zcmd_g_HasOPCE)
  93. {
  94. return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  95. }
  96. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  97. }
  98. #if defined _ALS_OnPlayerCommandText
  99. #undef OnPlayerCommandText
  100. #else
  101. #define _ALS_OnPlayerCommandText
  102. #endif
  103. #define OnPlayerCommandText zcmd_OnPlayerCommandText
  104. forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);