whiplk

[Include] JCMD - Processador de comandos rápido e fácil...

Apr 7th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.16 KB | None | 0 0
  1. /******************************************************************************\
  2. |                                                                              |
  3. |                       [Include] - Processador de comandos                    |
  4. |                             By Jeffrey_Hatrix                                |
  5. |                   Special thanks to: SlashPT for speed ideas                 |
  6. |                                                                              |
  7. \******************************************************************************/
  8.  
  9. // JCMD Fast and simple, enjoy.
  10.  
  11. #if !defined MAX_CMD_PARAMS
  12.         #define MAX_CMD_PARAMS 256
  13. #endif
  14.  
  15. #define newCmd:%1(%2) \
  16.         forward @%1(%2); \
  17.         public @%1(%2)
  18.  
  19. #define newCommand:%1(%2) \
  20.         newCmd:%1(%2)
  21.  
  22. forward ProcessarComandos_Strcmp(playerid,cmdtext[]);
  23.  
  24. static  c_sys_cmd[MAX_CMD_PARAMS], c_sys_loop, call_index, inten;
  25.  
  26. static
  27.     bool:callback_strcmp = false
  28. ;
  29.  
  30. #if defined FILTERSCRIPT
  31.  
  32. public OnFilterScriptInit()
  33. {
  34.     callback_strcmp = funcidx("ProcessarComandos_Strcmp") != -1;
  35.     return CallLocalFunction("jcmd_OnFilterScriptInit", "");
  36. }
  37.  
  38. #if defined _ALS_OnFilterScriptInit
  39.     #undef OnFilterScriptInit
  40. #else
  41.     #define _ALS_OnFilterScriptInit
  42. #endif
  43. #define OnFilterScriptInit jcmd_OnFilterScriptInit
  44. forward jcmd_OnFilterScriptInit();
  45.  
  46. #else
  47.  
  48. public OnGameModeInit()
  49. {
  50.     callback_strcmp = funcidx("ProcessarComandos_Strcmp") != -1;
  51.     if (funcidx("jcmd_OnGameModeInit") != -1)
  52.     {
  53.         return CallLocalFunction("jcmd_OnGameModeInit", "");
  54.     }
  55.     return 1;
  56. }
  57.  
  58. #if defined _ALS_OnGameModeInit
  59.     #undef OnGameModeInit
  60. #else
  61.     #define _ALS_OnGameModeInit
  62. #endif
  63. #define OnGameModeInit jcmd_OnGameModeInit
  64. forward jcmd_OnGameModeInit();
  65. #endif
  66.  
  67. stock
  68.     ProcessarComando_jCmd(playerid, cmdtext[])
  69. {
  70.     c_sys_loop = strfind((cmdtext[0] = 0x40 ,cmdtext), "\x20");
  71.  
  72.     if(c_sys_loop != -1)
  73.     {
  74.         inten = c_sys_loop + 1;
  75.         if(cmdtext[inten] == '\0')
  76.         {
  77.             cmdtext[c_sys_loop] = '\0';
  78.             call_index = CallLocalFunction(cmdtext, "is", playerid, "\1");
  79.         }
  80.         else
  81.         {
  82.             strmid(c_sys_cmd, cmdtext, 0, MAX_CMD_PARAMS);
  83.             c_sys_cmd[c_sys_loop] = '\0';
  84.  
  85.             if(cmdtext[inten] == 0x20)
  86.             {
  87.                 for( ; cmdtext[inten] == 0x20 ; inten++) { }
  88.                 call_index = CallLocalFunction(c_sys_cmd, "is", playerid, cmdtext[inten]);
  89.             }
  90.             else
  91.             {
  92.                 call_index = CallLocalFunction(c_sys_cmd, "is", playerid, cmdtext[inten]);
  93.             }
  94.         }
  95.     }
  96.     else
  97.     {
  98.         call_index = CallLocalFunction(cmdtext, "is", playerid, "\1");
  99.     }
  100.  
  101.     if(callback_strcmp == true)
  102.     {
  103.         if(call_index == 0 || call_index == -1)
  104.         {
  105.             cmdtext[0] = '/';
  106.             call_index = CallLocalFunction("ProcessarComandos_Strcmp", "is", playerid, cmdtext);
  107.             return (call_index == -1) ? (0) : (call_index);
  108.         }
  109.         else
  110.         {
  111.             return 1;
  112.         }
  113.     }
  114.     return (call_index == -1) ? (0) : (call_index);
  115. }
Advertisement
Add Comment
Please, Sign In to add comment