/* OCMD 2.0.1 by Kleiner Opa best command-solution for sa:mp supports samp 0.2X, 0.3a, 0.3b, 0.3c, 0.3d, 0.3e email: fisch70000@gmail.com http://forum.sa-mp.de/index.php?page=User&userID=24998 */ #include forward ocmdOnPlayerCommandText(playerid,cmdtext[]); forward BeforePlayerCommandText(playerid,cmdtext[]); new bool:ocmdBeforeCallback,bool:ocmdInit; #define ocmd:%1(%2) forward ocmd_%1(%2);\ public ocmd_%1(%2) public OnPlayerCommandText(playerid,cmdtext[]) { if(!ocmdInit) { if(funcidx("BeforePlayerCommandText")!=-1)ocmdBeforeCallback=true; ocmdInit=true; } new ocmdStr[32]="ocmd_",i=1,ocmdName[MAX_PLAYER_NAME],bool:ocmdNoParams; GetPlayerName(playerid,ocmdName,sizeof ocmdName); printf("[cmd] [%s]: %s",ocmdName,cmdtext); if(ocmdBeforeCallback&&!CallLocalFunction("BeforePlayerCommandText","ds",playerid,cmdtext))return 1; for(;i<128;i++) { if(!cmdtext[i]||cmdtext[i]==' ') { if(!cmdtext[i]||!cmdtext[i+1])ocmdNoParams=true; break; } ocmdStr[i+4]=tolower(cmdtext[i]); } if(!ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1]))return 1; if(ocmdNoParams&&CallLocalFunction(ocmdStr,"ds",playerid," "))return 1; return CallLocalFunction("ocmdOnPlayerCommandText","ds",playerid,cmdtext); } #define OnPlayerCommandText ocmdOnPlayerCommandText