Vacsina z Vas urcite pouziva stare, neefektivne sposoby spracovavania prikazov. Dovolte mi predstavit nove, efektivnejsie riesenie spracovavania prikazov. S pouzitim mojho handlera, je mozne prikazy zapisovat na akekolvek miesto v zdrojovom kode a rozdelovat mod do logickych casti.
Handler
forward HandleCommand(playerid,const command[]);
public HandleCommand(playerid,const command[])
{
new funcname[128],params[128],offset,len;
new j=0;
len = strlen(command);
for(new i=1;i {
if(command[i] != ' ')
{
funcname[j] = command[i] | 0x20;
j++;
offset = i+1;
}
else break;
}
if(offset {
new tmp;
for(new i = offset;i {
params[tmp] = command[i];
}
}
if(!strlen(params))
params = " ";
format(funcname,sizeof funcname,"Command_%s",funcname);
if(CallLocalFunction(funcname,"ds",playerid,params))
return true;
return false;
}
Pouzitie
1. Vlozit do OnPlayerCommandText
if(HandleCommand(playerid,cmdtext))
return 1;
2. Zapis prikazu /help
public Command_help(playerid, params[])
{
...
return 1;
}