Erkennt einer von euch den Fehler und kann mir diesen Fehler ebenfalls auch erklären?
Also eigentlich ganz einfach: Du ersetzt deinen Code erstmal mit folgendem:
GetID(name[]) {
new playerid = INVALID_PLAYER_ID, playeRname[MAX_PLAYER_NAME+1];
for(new i=GetPlayerPoolSize(); i!=-1; i--) {
if(!IsPlayerConnected(i)) continue;
GetPlayerName(i, playeRname, sizeof(playeRname));
if(!strcmp(PlayerInfo[i][Name], name, true)) {
playerid = i;
break;
}
}
return playerid;
}
//ungetestet, dürfte aber funktionieren; bin eher der Fan davon, wenn man auch Schleifen richtig mit break beendet und dann erst die value returnt... :p
Bevor du diese Funktion verwendest, musst du abfragen, ob GetID("name") != INVALID_PLAYER_ID und der Spieler auch connected ist!
Wenn das der Fall ist, funktioniert der Code auch.
Dein Problem ist hierbei, dass du auf denen Spieler-Array zugreifst mit einer ID, die über der maximal deklarierten Grenze liegt. INVALID_PLAYER_ID ist nämlich größer als MAX_PLAYERS. Damit ist dein Array auch zu klein. ![]()

