Hab mehrere Funktionen gemacht, um ein bestimmten Teil von einen String (ähnlich strtok) zu bekommen:
stock GetFieldString(field, string[], dest[], bool:end=false)
{
new result[256], index = 0;
for(new i=1; i<field; i++) if(field != 1) { index = strfind(string, " ", true, index+1); }
if(field == 1) strmid(result, string, 0, strfind(string, " ", true, 0), 64);
else if(end) strmid(result, string, index+1, strlen(string), sizeof(result));
else strmid(result, string, index+1, strfind(string, " ", true, index+1), 64);
return format(dest, 64, "%s", result);
}
stock GetFieldInt(field, string[], &dest, bool:end=false)
{
new result[64], index = 0;
for(new i=1; i<field; i++) if(field != 1) { index = strfind(string, " ", true, index+1); }
if(field == 1) strmid(result, string, 0, strfind(string, " ", true, 0), 64);
else if(end) strmid(result, string, index+1, strlen(string), sizeof(result));
else strmid(result, string, index+1, strfind(string, " ", true, index+1), 64);
return dest = strval(result);
}
stock GetFieldFloat(field, string[], &Float:dest, bool:end=false)
{
new result[64], index = 0;
for(new i=1; i<field; i++) if(field != 1) { index = strfind(string, " ", true, index+1); }
if(field == 1) strmid(result, string, 0, strfind(string, " ", true, 0), 64);
else if(end) strmid(result, string, index+1, strlen(string), sizeof(result));
else strmid(result, string, index+1, strfind(string, " ", true, index+1), 64);
return dest = floatstr(result);
}
new cmdtext[256] = "/kick 6 15 Wir wollen keine Cheater";
new player, grund[64], dauer;
GetFieldInt(2, cmdtext, player);
GetFieldInt(3, cmdtext, dauer);
GetFieldString(4, cmdtext, grund, true);
printf("%d, %s, %d Minuten", player, grund, dauer);