Guest User

ZCMD Double Slash

a guest
Feb 19th, 2016
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.36 KB | None | 0 0
  1. /**********************************
  2.  *                                *
  3.  *   @Author:      ZeeX           *
  4.  *   @Version:     0.3.1          *
  5.  *   @Released:    31/10/2009     *
  6.  *                                *
  7.  **********************************/
  8.  
  9. #if defined _zcmd_included
  10.     #endinput
  11. #endif 
  12. #define _zcmd_included
  13.  
  14. #define MAX_FUNC_NAME (32)
  15.  
  16. // Regular Command
  17. #define COMMAND:%1(%2)          \
  18.             forward cmd_%1(%2); \
  19.             public cmd_%1(%2)      
  20.            
  21. #define CMD:%1(%2) \
  22.             COMMAND:%1(%2)
  23.  
  24. #define command(%1,%2,%3) \
  25.             COMMAND:%1(%2, %3)      
  26.      
  27. #define cmd(%1,%2,%3) \
  28.             COMMAND:%1(%2, %3)
  29.  
  30. // Double Slash Command
  31. #define COMMAND2:%1(%2)          \
  32.             forward cmd2_%1(%2); \
  33.             public cmd2_%1(%2)     
  34.            
  35. #define CMD2:%1(%2) \
  36.             COMMAND2:%1(%2)
  37.  
  38. #define command2(%1,%2,%3) \
  39.             COMMAND2:%1(%2, %3)      
  40.      
  41. #define cmd2(%1,%2,%3) \
  42.             COMMAND2:%1(%2, %3)
  43.  
  44. #if !defined isnull
  45.     #define isnull(%1) \
  46.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  47. #endif
  48.  
  49.  
  50. forward OnPlayerCommandReceived(playerid, cmdtext[]);
  51. forward OnPlayerCommandPerformed(playerid, cmdtext[], success);
  52.  
  53.  
  54. static
  55.     bool:zcmd_g_HasOPCS = false,
  56.     bool:zcmd_g_HasOPCE = false;
  57.  
  58. #if defined FILTERSCRIPT
  59.  
  60. public OnFilterScriptInit()
  61. {
  62.     zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
  63.     zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
  64.     return CallLocalFunction("zcmd_OnFilterScriptInit", "");
  65. }
  66.  
  67. #if defined _ALS_OnFilterScriptInit
  68.     #undef OnFilterScriptInit
  69. #else
  70.     #define _ALS_OnFilterScriptInit
  71. #endif
  72. #define OnFilterScriptInit zcmd_OnFilterScriptInit
  73. forward zcmd_OnFilterScriptInit();
  74.  
  75. #else /*not a filterscript*/
  76.  
  77. public OnGameModeInit()
  78. {
  79.     zcmd_g_HasOPCS = funcidx("OnPlayerCommandReceived") != -1;
  80.     zcmd_g_HasOPCE = funcidx("OnPlayerCommandPerformed") != -1;
  81.     if (funcidx("zcmd_OnGameModeInit") != -1)
  82.     {
  83.         return CallLocalFunction("zcmd_OnGameModeInit", "");
  84.     }  
  85.     return 1;
  86. }
  87.  
  88. #if defined _ALS_OnGameModeInit
  89.     #undef OnGameModeInit
  90. #else
  91.     #define _ALS_OnGameModeInit
  92. #endif
  93. #define OnGameModeInit zcmd_OnGameModeInit
  94. forward zcmd_OnGameModeInit();
  95.  
  96. #endif /*if defined FILTERSCRIPT*/
  97.  
  98. public OnPlayerCommandText(playerid, cmdtext[])
  99. {
  100.     if (zcmd_g_HasOPCS && !CallLocalFunction("OnPlayerCommandReceived", "is", playerid, cmdtext))
  101.     {
  102.         return 1;
  103.     }
  104.     new
  105.         pos,
  106.         funcname[MAX_FUNC_NAME];
  107.     while (cmdtext[++pos] > ' ')
  108.     {
  109.         funcname[pos-1] = tolower(cmdtext[pos]);
  110.     }
  111.     new ds = cmdtext[1] == '/';
  112.     format(funcname, sizeof(funcname), "cmd%s_%s", ds ? ("2") : (""), funcname[ds]);
  113.     while (cmdtext[pos] == ' ') pos++;
  114.     if (!cmdtext[pos])
  115.     {
  116.         if (zcmd_g_HasOPCE)
  117.         {
  118.             return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, "\1"));
  119.         }
  120.         return CallLocalFunction(funcname, "is", playerid, "\1");  
  121.     }
  122.     if (zcmd_g_HasOPCE)
  123.     {
  124.         return CallLocalFunction("OnPlayerCommandPerformed", "isi", playerid, cmdtext, CallLocalFunction(funcname, "is", playerid, cmdtext[pos]));
  125.     }
  126.     return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  127. }
  128.  
  129. #if defined _ALS_OnPlayerCommandText
  130.     #undef OnPlayerCommandText
  131. #else
  132.     #define _ALS_OnPlayerCommandText
  133. #endif
  134. #define OnPlayerCommandText zcmd_OnPlayerCommandText
  135. forward zcmd_OnPlayerCommandText(playerid, cmdtext[]);
Advertisement
Add Comment
Please, Sign In to add comment