1
0

zcmd.inc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. forward OnPlayerCommandReceived(playerid, cmdtext[]);
  23. forward OnPlayerCommandPerformed(playerid, cmdtext[], success);
  24. static
  25. bool:zcmd_g_HasOPCS = false,
  26. bool:zcmd_g_HasOPCE = false;
  27. #if defined FILTERSCRIPT
  28. public OnFilterScriptInit()
  29. {
  30. zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
  31. zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
  32. return CallLocalFunction("zcmd_OnFilterScriptInit", "");
  33. }
  34. #if defined _ALS_OnFilterScriptInit
  35. #undef OnFilterScriptInit
  36. #else
  37. #define _ALS_OnFilterScriptInit
  38. #endif
  39. #define OnFilterScriptInit zcmd_OnFilterScriptInit
  40. forward zcmd_OnFilterScriptInit();
  41. #else /*not a filterscript*/
  42. public OnGameModeInit()
  43. {
  44. zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
  45. zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
  46. if (funcidx("zcmd_OnGameModeInit") != -1)
  47. {
  48. return CallLocalFunction("zcmd_OnGameModeInit", "");
  49. }
  50. return 1;
  51. }
  52. #if defined _ALS_OnGameModeInit
  53. #undef OnGameModeInit
  54. #else
  55. #define _ALS_OnGameModeInit
  56. #endif
  57. #define OnGameModeInit zcmd_OnGameModeInit
  58. forward zcmd_OnGameModeInit();
  59. #endif /*if defined FILTERSCRIPT*/
  60. public OnPlayerCommandText(playerid, cmdtext[])
  61. {
  62. if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
  63. {
  64. return 1;
  65. }
  66. new
  67. pos,
  68. funcname[MAX_FUNC_NAME];
  69. while (cmdtext[++pos] > ' ')
  70. {
  71. funcname[pos-1] = tolower(cmdtext[pos]);
  72. }
  73. format(funcname, sizeof(funcname), "cmd_%s", funcname);
  74. while (cmdtext[pos] == ' ') pos++;
  75. if (!cmdtext[pos])
  76. {
  77. if (zcmd_g_HasOPCE)
  78. {
  79. return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  80. }
  81. return CallLocalFunction(funcname, "is", playerid, "\1");
  82. }
  83. if (zcmd_g_HasOPCE)
  84. {
  85. return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  86. }
  87. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  88. }
  89. #if defined _ALS_OnPlayerCommandText
  90. #undef OnPlayerCommandText
  91. #else
  92. #define _ALS_OnPlayerCommandText
  93. #endif
  94. #define OnPlayerCommandText zcmd_OnPlayerCommandText
  95. forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);