Was schon der größte Fehler aus meiner Sicht an dem Script ist,dass du die Pickups alle auf den Spieler beziehst,
von dem sie gedroppt worden sind.Das ist schon relativ schlecht,denn wenn man sich den Code genau anguckt,
ist es nicht möglich mehr als 2 ( 1 x Money, 1 x Waffe ) funktionierendes Pickup pro Spieler zu erstellen:
Wir haben einen Spieler Names Vaillant.Stirbt Vaillaint werden die Pickups um ihn gedroppt bzw
platziert.Ein weiterer Spieler Namens Hama hat zur Zeit aber keine Lust die Items aufzuheben,sondern tötet
Vaillaint direkt noch einmal.Erneut werden dann die Pickups erstellt.Jetzt sammelt Hama die Pickups ( Insgesamt 4 )
ein und merkt, dass er aber nur bei den letzten Zweien etwas erhalten hat.Die "alten" Pickups die durch
Vaillant erstellt worden sind,als er zum Ersten mal gestorben ist,sind immernoch da.Sie werden auch nie
zerstört.Sie haben auch keine Wirkung.Da,wie gesagt, die Pickups alle Spielerabhängig sind.
Kurz gesagt,wird ein Pickup nicht aufgehoben bevor ein neues erstellt wird kommt es zu Fehlern.
Ich habe so etwas selber mal erstellt für mich,da sind die Pickups "eigenständig".Sie gehören zu keinem
Spieler, sondern sind eigentständig und es können so unendlich erstellt werden ( werden aber nach XY - Min autom.
gelöscht ). Bei dir ist das nicht der Fall,irgendwann ist der Speicher für Pickups aufgebraucht wenn man den Fehler
ausnutzt den Ich oben beschrieben habe.
Hast auch unnötige Variablen erstellt:
enum inventar{
id
/*
Float:x,
Float:y,
Float:z
*/
}
new Float:PPos/*[MAX_PLAYERS]*/[3];
Anstatt "-1" hätte Ich bei den *Check() Funktionen INVALID_PLAYER_ID genommen.Kommt natürlich auf's
gleiche,ist aber der Übersicht halber wahrscheinlich die bessere Wahl.
Wie auch immer,hab den Code hier mal etwas geändert.
http://pastebin.com/2LFkYkpi