Advertisement
YashasSamaga

I-ZCMD Command Processor

May 24th, 2015
1,118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.53 KB | None | 0 0
  1. /*******************************************************************************************************************************
  2.  ZCMD Improved (I-ZCMD)
  3.  
  4.  This include is just a re-make of the ZCMD Command Processor ( V0.3.1 31/10/2009) originnaly developed by Zeex.
  5.  
  6.  Version:0.2.2
  7.  
  8.  Credits:
  9.  Yashas
  10.  Zeex for the original include
  11. *******************************************************************************************************************************/
  12. #if defined _I_ZCMD_INCLUDED_V0_2_2_
  13.     #endinput
  14. #endif 
  15. #define _I_ZCMD_INCLUDED_V0_2_2_
  16. /******************************************************************************************************************************/
  17. #define MAX_FUNC_NAME (32)
  18.  
  19. #define COMMAND:%1(%2)          \
  20.             forward cmd_%1(%2); \
  21.             public cmd_%1(%2)      
  22.            
  23. #define CMD:%1(%2) \
  24.             COMMAND:%1(%2)
  25.  
  26. #define command(%1,%2,%3) \
  27.             COMMAND:%1(%2, %3)      
  28.      
  29. #define cmd(%1,%2,%3) \
  30.             COMMAND:%1(%2, %3)
  31.  
  32. #define CMD_SUCCESS 1
  33. #define CMD_FAILURE 0
  34.  
  35. #if !defined isnull
  36.         #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  37. #endif
  38. /******************************************************************************************************************************/
  39. #if defined OnPlayerCommandReceived
  40.     forward OnPlayerCommandReceived(playerid,cmdtext[]);
  41. #endif
  42. #if defined OnPlayerCommandPerformed
  43.     forward OnPlayerCommandPerformed(playerid,cmdtext[], success);
  44. #endif
  45. /******************************************************************************************************************************/
  46. public OnPlayerCommandText(playerid, cmdtext[])
  47. {
  48.     #if defined OnPlayerCommandReceived
  49.         if(!OnPlayerCommandReceived(playerid,cmdtext)) return 1;
  50.     #endif
  51.     static funcname[MAX_FUNC_NAME] = "cmd_";
  52.    
  53.     #if defined IZCMD_ENABLE_CASE_SENSITIVITY
  54.         static pos;
  55.  
  56.         if((pos = strfind(cmdtext," ",false,1)) == -1)
  57.         {
  58.             pos = strlen(cmdtext);
  59.             strmid(funcname[4],cmdtext,1,pos,MAX_FUNC_NAME-4);
  60.             #if defined OnPlayerCommandPerformed
  61.                 return OnPlayerCommandPerformed(playerid,cmdtext,CallLocalFunction(funcname,"is",playerid,"\r"));
  62.             #else
  63.                 return CallLocalFunction(funcname,"is",playerid,"\r");
  64.             #endif
  65.         }
  66.         else
  67.         {
  68.             strmid(funcname[4],cmdtext,1,pos,MAX_FUNC_NAME-4);
  69.             while (cmdtext[pos] == ' ') pos++;
  70.  
  71.             #if defined OnPlayerCommandPerformed
  72.                 return OnPlayerCommandPerformed(playerid,cmdtext,CallLocalFunction(funcname,"is",playerid,cmdtext[pos]));
  73.             #else
  74.                 return CallLocalFunction(funcname,"is",playerid,cmdtext[pos]);
  75.             #endif
  76.         }
  77.     #else
  78.         new pos = 1;
  79.  
  80.         while(cmdtext[pos] > ' ')
  81.             if(cmdtext[pos] == '_') funcname[pos++ + 3] = '_';
  82.             else funcname[pos+3] = cmdtext[pos++] | 0x20;
  83.  
  84.         funcname[pos+3] = 0;
  85.  
  86.         while (cmdtext[pos] == ' ') pos++;
  87.         if(cmdtext[pos])
  88.         {
  89.             #if defined OnPlayerCommandPerformed
  90.                 return OnPlayerCommandPerformed(playerid,cmdtext,CallLocalFunction(funcname,"is",playerid,cmdtext[pos]));
  91.             #else
  92.                 return CallLocalFunction(funcname,"is",playerid,cmdtext[pos]);
  93.             #endif
  94.         }
  95.         else
  96.         {
  97.             #if defined OnPlayerCommandPerformed
  98.                 return OnPlayerCommandPerformed(playerid,cmdtext,CallLocalFunction(funcname,"is",playerid,"\r"));
  99.             #else
  100.                 return CallLocalFunction(funcname,"is",playerid,"\r");
  101.             #endif
  102.         }
  103.     #endif
  104. }
  105. #if defined _ALS_OnPlayerCommandText
  106.     #undef OnPlayerCommandText
  107. #else
  108.     #define _ALS_OnPlayerCommandText
  109. #endif
  110. #define OnPlayerCommandText izcmd_OnPlayerCommandText
  111. forward izcmd_OnPlayerCommandText(playerid, cmdtext[]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement