Das geht nur mit dem Plugin.
Wenn du das Plugin nicht haben willst (da kann ich dich voll und ganz verstehen, ich will es auch nicht haben), dann nutze strtok. Ist zwar etwas mehr Code, aber dafür viel flexibler:
ocmd:gw(playerid,params[])
{
if(pInfo[playerid][Rang] <1) return SCM(playerid,ROT,"Du bist leider kein Admin!");
new string[144],pID,wID, Munni, tmp[20], tmp2[20], tmp3[20], idx;
tmp = strtok(params, idx);
tmp2 = strtok(params, idx);
if(!strlen(tmp2) || !IsNumeric(tmp2)) return SCM(playerid,GELB,"INFO: /gw [PlayerID] [WaffenID] <Munition>");
if(IsNumeric(tmp)) pID = strval(tmp);
else pID = ReturnPlayerID(tmp);
if(!IsPlayerConnected(pID))return SCM(playerid,ROT,"Der angegebene Spieler ist nicht connected!");
wID = strval(tmp2);
if(wID<0 || wID>46 || wID>18 && wID<22) return SCM(playerid,ROT,"Diese WaffenID ist ungültig!");
tmp3 = strtok(params, idx);
if(!strlen(tmp3))//hat er keine Munition angegeben, dann ....
{
GivePlayerWeapon(pID,wID,99999);
format(string,sizeof(string),"Du hast %s eine Waffe mit unendlich Munition gegeben.",Spielername(pID));
SCM(playerid,GREEN,string);
format(string,sizeof(string),"Du hast von %s eine Waffe mit unendlich Munition bekommen.",Spielername(playerid));
SCM(pID,GREEN,string);
}
else //Er hat Munition angegeben
{
Munni = strval(tmp3);
GivePlayerWeapon(pID,wID,Munni);
format(string,sizeof(string),"Du hast %s eine Waffe mit %d Schuss gegeben.",Spielername(pID),Munni);
SCM(playerid,GREEN,string);
format(string,sizeof(string),"Du hast von %s eine Waffe mit %d Schuss bekommen.",Spielername(playerid),Munni);
SCM(pID,GREEN,string);
}
return 1;
}
Einmalig unten im Gamemode einfügen:
stock strtok(const string[], &index) //©Jeffry
{
new result[20], length = strlen(string), i = index;
while ((i < length) && (string[i] == ' ')) i++;
strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
index++;
return result;
}
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}
stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if ((string[i] > '9' || string[i] < '0')) return 0;
}
return 1;
}