comandos.inc 2.9 KB

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