1
0

zcmd.inc 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
  67. {
  68. return 1;
  69. }
  70. new pos, funcname[MAX_FUNC_NAME];
  71. while (cmdtext[++pos] > ' ')
  72. {
  73. funcname[pos-1] = tolower(cmdtext[pos]);
  74. }
  75. format(funcname, sizeof(funcname), "cmd_%s", funcname);
  76. while (cmdtext[pos] == ' ') pos++;
  77. if (!cmdtext[pos])
  78. {
  79. if (zcmd_g_HasOPCE)
  80. {
  81. return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  82. }
  83. return CallLocalFunction(funcname, "is", playerid, "\1");
  84. }
  85. if (zcmd_g_HasOPCE)
  86. {
  87. return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  88. }
  89. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  90. }
  91. #if defined _ALS_OnPlayerCommandText
  92. #undef OnPlayerCommandText
  93. #else
  94. #define _ALS_OnPlayerCommandText
  95. #endif
  96. #define OnPlayerCommandText zcmd_OnPlayerCommandText
  97. forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);