Advertisement
RaFaeLs

r_commands - Clear and fast command processor!

Oct 15th, 2012
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.06 KB | None | 0 0
  1. /*********************************************
  2.  *                                           *
  3.  *             RaFaeL's library              *
  4.  *             @Release: 15/10/2012          *
  5.  *             @Version: v0.2                *
  6.  *                                           *
  7.  * This include is part of RaFaeL's library -*
  8.  *-All rights are reserved for rafael       -*
  9.  *-Thank's to zeedx for help!                *
  10.  *                                           *
  11.  *********************************************/
  12.  
  13. #if defined _rcmd_included
  14.     #endinput
  15. #endif 
  16. #define _rcmd_included
  17.  
  18. #define MAX_FUNC_NAME (32)
  19.  
  20. #define COMMAND:%0(%1) \
  21.             forward command_%0(%1); public command_%0(%1)      
  22. #define CMD:%0(%1) COMMAND:%0(%1)
  23.  
  24. #if !defined isnull
  25.     #define isnull(%1) \
  26.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  27. #endif
  28.  
  29. forward OnPlayerCommandSent(playerid, cmdtext[]);
  30. forward OnPlayerCommandExecuted(playerid, cmdtext[], bool:success);
  31.  
  32.  
  33. static
  34.     bool:rcmd_HasOPCS = false,
  35.     bool:rcmd_HasOPCE = false;
  36.  
  37. #if defined FILTERSCRIPT
  38.     public OnFilterScriptInit()
  39. #else
  40.     public OnGameModeInit()
  41. #endif
  42. {
  43.     rcmd_HasOPCS = (funcidx("OnPlayerCommandSent") != -1);
  44.     rcmd_HasOPCE = (funcidx("OnPlayerCommandExecuted") != -1);
  45.     return 0;
  46. }
  47.  
  48. #if defined FILTERSCRIPT
  49.  
  50.     #if defined _ALS_OnFilterScriptInit
  51.         #undef OnFilterScriptInit
  52.     #else
  53.         #define _ALS_OnFilterScriptInit
  54.     #endif
  55.     #define OnFilterScriptInit rcmd_OnFilterScriptInit
  56.     forward rcmd_OnFilterScriptInit();
  57.  
  58. #else
  59.  
  60.     #if defined _ALS_OnGameModeInit
  61.         #undef OnGameModeInit
  62.     #else
  63.         #define _ALS_OnGameModeInit
  64.     #endif
  65.     #define OnGameModeInit rcmd_OnGameModeInit
  66.     forward rcmd_OnGameModeInit();
  67.  
  68. #endif
  69.  
  70. public OnPlayerCommandText(playerid, cmdtext[])
  71. {
  72.     if (rcmd_HasOPCS && !CallLocalFunction("OnPlayerCommandSent", "ds", playerid, cmdtext)) return 1;
  73.    
  74.     new
  75.         funcname[64],
  76.         spacechar = strfind(cmdtext, " ");
  77.    
  78.     strmid(funcname, cmdtext, 1, (spacechar != -1) ? (spacechar) : strlen(cmdtext));
  79.     format(funcname, sizeof(funcname), "command_%s", lowercase(funcname));
  80.    
  81.     if (strlen(funcname) > MAX_FUNC_NAME+8) return 0;
  82.    
  83.     if (funcidx(funcname) != -1)
  84.     {
  85.         new params[64];
  86.         if (spacechar != -1)
  87.             strmid(params, cmdtext, spacechar + 1, strlen(cmdtext));
  88.            
  89.         CallLocalFunction("OnPlayerCommandExecuted", "dsb", playerid, cmdtext, true);
  90.         return CallLocalFunction(funcname, "ds", playerid, (isnull(params))? ("\1"):(params));
  91.     }
  92.    
  93.     return (rcmd_HasOPCE)? (CallLocalFunction("OnPlayerCommandExecuted", "dsb", playerid, cmdtext, false)):(0);
  94. }
  95.  
  96. #if defined _ALS_OnPlayerCommandText
  97.     #undef OnPlayerCommandText
  98. #else
  99.     #define _ALS_OnPlayerCommandText
  100. #endif
  101. #define OnPlayerCommandText rcmd_OnPlayerCommandText
  102. forward rcmd_OnPlayerCommandText(playerid, cmdtext[]);
  103.  
  104. stock lowercase(const string[])
  105. {
  106.     new
  107.         strreturn[64];
  108.     strcat(strreturn, string);
  109.     for (new iIter, iLen = strlen(strreturn); iIter < iLen; iIter++) if (strreturn[iIter] > 'A' && strreturn[iIter] < 'Z')
  110.     {
  111.         strreturn[iIter] = tolower(strreturn[iIter]);
  112.     }
  113.     return strreturn;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement