1
0

zcmd.inc.txt 3.0 KB

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