/* Changelog 0.1 Versão inicial. Créditos v0.1 | Mr.Hardy - Criador. */ #define h_Cmd("/%1") \ forward hcmd_%1(playerid); \ public hcmd_%1(playerid) #define SPLIT<%1> split_Var[playerid][%1-1] #define SPLIT_INT<%1> strval(split_Var[playerid][%1-1]) #define SPLIT_FLOAT<%1> floatstr(split_Var[playerid][%1-1]) #define TOTAL_SPLIT<> split_Total[playerid] #define HCMD_MAX_CX (64)//Máximo dos comandos da funções aceitável.. Exemplo: /teste | depois //da barra o maximo aceitavel é mais 64 caracteres; forward OnPlayerExecuteCommand(playerid, cmdtext[], bool:sucess); new split_Var[MAX_PLAYERS][10][80]; new split_Total[MAX_PLAYERS]; public OnPlayerCommandText(playerid, cmdtext[]){ new func_hcmd[HCMD_MAX_CX+1], format_hcmd[HCMD_MAX_CX+1], string_hcmd[HCMD_MAX_CX+1]; strcat(func_hcmd, cmdtext); strcat(string_hcmd, cmdtext); strdel(func_hcmd, 0, 1); split_Total[playerid] = 0; if(strfind(cmdtext, " ", true) != -1){ strdel(func_hcmd, strfind(cmdtext, " ", true)-1, strlen(cmdtext)); strdel(string_hcmd, strfind(cmdtext, " ", true), strlen(cmdtext)); strcat(format_hcmd, cmdtext); strdel(format_hcmd, -1, strlen(string_hcmd)); split_Total[playerid] = split(format_hcmd, split_Var[playerid], ' '); } if(!CallLocalFunction("OnPlayerExecuteCommand", "isi", playerid, string_hcmd, 1)) return true; format(format_hcmd, HCMD_MAX_CX+1, "hcmd_%s", func_hcmd); if(CallLocalFunction(format_hcmd, "i", playerid)){ return true; } return CallLocalFunction("OnPlayerExecuteCommand", "isi", playerid, string_hcmd, 0); } #if defined _ALS_OnPlayerCommandText #undef OnPlayerCommandText #else #define _ALS_OnPlayerCommandText #endif #define OnPlayerCommandText hcmd@OnPlayerCommandText forward hcmd@OnPlayerCommandText(playerid, cmdtext[]); //Obtido em http://wiki.sa-mp.com/wiki/Code_Snippets#Split //Author unknown. It was probably someone smart like [[User:DracoBlue|DracoBlue]] or [[User:Y_Less|Y_Less]]. stock split(const strsrc[], strdest[][], delimiter){ new i, li; new aNum; new len; while(i <= strlen(strsrc)){ if(strsrc[i] == delimiter || i == strlen(strsrc)){ len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; li = i+1; aNum++; } i++; } return aNum; }