Advertisement
Guest User

ocmd 2.1.1

a guest
Nov 3rd, 2013
1,148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.81 KB | None | 0 0
  1. /*
  2.     ocmd 2.1.1
  3.     by Kleiner Opa
  4.     best command-solution for sa:mp
  5.     supports samp 0.2X, 0.3a, 0.3b, 0.3c, 0.3d, 0.3e, 0.3x
  6.     email: fisch70000@gmail.com
  7.     http://forum.sa-mp.de/index.php?page=User&userID=24998
  8. */
  9.  
  10. #include <a_samp>
  11.  
  12. forward ocmdOnPlayerCommandText(playerid,cmdtext[]);
  13. #if defined OCMD_BEFORE_CALLBACK
  14.     forward BeforePlayerCommandText(playerid,cmdtext[]);
  15.     new bool:ocmdBeforeCallback,bool:ocmdInit;
  16. #endif
  17.  
  18. #if !defined OCMD_COMMAND_LOG_FORMAT
  19.     #define OCMD_COMMAND_LOG_FORMAT "[cmd] [%s]: %s"
  20. #endif
  21.  
  22. #define ocmd:%1(%2) forward ocmd_%1(%2);\
  23. public ocmd_%1(%2)
  24.  
  25. #define ocmd@2:%1,%3(%2) forward ocmd_%3(ocmdPlayerid,ocmdParams[]);\
  26. public ocmd_%3(ocmdPlayerid, ocmdParams[]){return ocmd_%1(ocmdPlayerid, ocmdParams);}\
  27. forward ocmd_%1(%2);\
  28. public ocmd_%1(%2)
  29.  
  30. #define ocmd@3:%1,%3,%4(%2) forward ocmd_%3(ocmdPlayerid,ocmdParams[]);\
  31. public ocmd_%3(ocmdPlayerid, ocmdParams[]){return ocmd_%1(ocmdPlayerid, ocmdParams);}\
  32. forward ocmd_%4(ocmdPlayerid,ocmdParams[]);\
  33. public ocmd_%4(ocmdPlayerid, ocmdParams[]){return ocmd_%1(ocmdPlayerid, ocmdParams);}\
  34. forward ocmd_%1(%2);\
  35. public ocmd_%1(%2)
  36.  
  37. #define ocmd@4:%1,%3,%4,%5(%2) forward ocmd_%3(ocmdPlayerid,ocmdParams[]);\
  38. public ocmd_%3(ocmdPlayerid, ocmdParams[]){return ocmd_%1(ocmdPlayerid, ocmdParams);}\
  39. forward ocmd_%4(ocmdPlayerid,ocmdParams[]);\
  40. public ocmd_%4(ocmdPlayerid, ocmdParams[]){return ocmd_%1(ocmdPlayerid, ocmdParams);}\
  41. forward ocmd_%5(ocmdPlayerid,ocmdParams[]);\
  42. public ocmd_%5(ocmdPlayerid, ocmdParams[]){return ocmd_%1(ocmdPlayerid, ocmdParams);}\
  43. forward ocmd_%1(%2);\
  44. public ocmd_%1(%2)
  45.  
  46. public OnPlayerCommandText(playerid,cmdtext[])
  47. {
  48.     #if defined OCMD_BEFORE_CALLBACK
  49.         if(!ocmdInit)
  50.         {
  51.             if(funcidx("BeforePlayerCommandText")!=-1)ocmdBeforeCallback=true;
  52.             ocmdInit=true;
  53.         }
  54.     #endif
  55.     new ocmdStr[32]="ocmd_",
  56.         ocmdI=1,
  57.     #if defined OCMD_COMMAND_LOG
  58.         ocmdName[MAX_PLAYER_NAME],
  59.     #endif
  60.     bool:ocmdNoParams;
  61.     #if defined OCMD_COMMAND_LOG
  62.         GetPlayerName(playerid,ocmdName,sizeof ocmdName);
  63.         printf(OCMD_COMMAND_LOG_FORMAT,ocmdName,cmdtext);
  64.     #endif
  65.     #if defined OCMD_BEFORE_CALLBACK
  66.         if(ocmdBeforeCallback&&!CallLocalFunction("BeforePlayerCommandText","ds",playerid,cmdtext))return 1;
  67.     #endif
  68.     for(;ocmdI<128;ocmdI++)
  69.     {
  70.         if(!cmdtext[ocmdI]||cmdtext[ocmdI]==' ')
  71.         {
  72.             if(!cmdtext[ocmdI]||!cmdtext[ocmdI+1])ocmdNoParams=true;
  73.             break;
  74.         }
  75.         ocmdStr[ocmdI+4]=tolower(cmdtext[ocmdI]);
  76.     }
  77.     if(!ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[ocmdI+1]))return 1;
  78.     if(ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1;
  79.     return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext);
  80. }
  81.  
  82. #if defined _ALS_OnPlayerCommandText
  83.     #undef OnPlayerCommandText
  84. #else
  85.     #define _ALS_OnPlayerCommandText
  86. #endif
  87. #define OnPlayerCommandText ocmdOnPlayerCommandText
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement