Advertisement
FanHamMer

HTCMD

Nov 16th, 2012
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. /*
  2.  
  3.                HT-CMD
  4.         Powered by BJIADOKC
  5.             2012
  6.  Remove this copyright, if you want to be a superman!
  7.  
  8. */
  9.  
  10. #if defined htcmd_core
  11.     #endinput
  12. #endif
  13.  
  14. #define htcmd_core
  15.  
  16. #if !defined _samp_included
  17.     #error Include a_samp.inc before HT-CMD!
  18. #endif
  19.  
  20. #define MAX_COMMAND_LEN 32
  21. #define MAX_PARAMS_LEN 128
  22.  
  23. stock InitCMD(playerid, cmdtext[])
  24. {
  25.     DeletePVar(playerid, "cmd");
  26.     DeletePVar(playerid, "cmd_len");
  27.  
  28.     DeletePVar(playerid, "cmd_params");
  29.     DeletePVar(playerid, "cmd_params_len");
  30.  
  31.     if(cmdtext[0] != '/' || !cmdtext[1])
  32.     {
  33.         printf("HTCMD Warning: NULL/Invalid command sent from PlayerID %d", playerid);
  34.         return 0;
  35.     }
  36.  
  37.     new space = strfind(cmdtext, " ", true, 1), len = strlen(cmdtext), cmd[MAX_COMMAND_LEN], params[MAX_PARAMS_LEN];
  38.  
  39.     if(len > (MAX_COMMAND_LEN + MAX_PARAMS_LEN))
  40.     {
  41.         printf("HTCMD Warning: Buffer overflowed (%d len) command sent from PlayerID %s", len, playerid);
  42.         return 0;
  43.     }
  44.  
  45.     /*#if defined sscanf
  46.         sscanf(cmdtext, "p< >s[32]s[128]", cmd, params);
  47.         goto PROCESS;
  48.     #undef*/
  49.  
  50.     /*#if defined sparam && !defined sscanf
  51.         sparam(cmd, MAX_COMMAND_LEN, cmdtext, ' ', 0);
  52.         sparam(params, MAX_PARAMS_LEN, cmdtext, ' ', 1, 1);
  53.         goto PROCESS;
  54.     #endif*/
  55.  
  56.     strmid(cmd, cmdtext, 1, (space == -1) ? ((--len < 32) ? len : 0)  : ((space > 31) ? 0 : space));
  57.     strmid(params, cmdtext, ++space, len);
  58.  
  59.     /*PROCESS:*/
  60.  
  61.     if(cmd[0] < 20)
  62.     {
  63.         printf("HTCMD Warning: Unacceptable command sent from PlayerID %d", playerid);
  64.         return 0;
  65.     }
  66.  
  67.     SetPVarInt(playerid, "cmd", htdigest(cmd));
  68.     SetPVarInt(playerid, "cmd_len", strlen(cmd));
  69.  
  70.     if((len = strlen(params)) && params[0] != '\1')
  71.     {
  72.         SetPVarString(playerid, "cmd_params", params);
  73.         SetPVarInt(playerid, "cmd_params_len", len);
  74.     }
  75.  
  76.     return 1;
  77. }
  78.  
  79. stock htdigest(dest[])
  80. {
  81.     new buffer = 1, temp;
  82.  
  83.     for(new i; dest[i]; i++)
  84.     {
  85.         buffer += dest[i];
  86.         buffer %= 65521;
  87.  
  88.         temp += buffer;
  89.         temp %= 65521;
  90.     }
  91.     return ((temp << 16) + buffer);
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement