Weiterhin sind die WeaponPickups da, funktionieren auch, jedoch bekomme ich z.B. wenn ich eine Katana einsammle, eine M4
Du greifst beim OnPlayerPickUpDynamicPickup mit der pickupid auf das Array zu, dann mach das auch beim erstellen und lass diese Counter weg! Zum dritten mal!
WeaponPickups[PickupCounter[GENERIC_WEAPON]] = CreateDynamicPickup(modelid,type,rx1,ry2,rz3,virtualworld);
WeaponInfo[PickupCounter[GENERIC_WEAPON]][wModel] = modelid;
WeaponInfo[PickupCounter[GENERIC_WEAPON]][wAmmo] = random(1000)+10;
zu:
new pickupid = CreateDynamicPickup(modelid,type,rx1,ry2,rz3,virtualworld);
WeaponInfo[pickupid][wModel] = modelid;
WeaponInfo[pickupid][wAmmo] = random(1000)+10;
Nochmal sage ich das nicht.
Zudem ist dein komplettes System so überkompliziert, da blickt man gar nicht mehr durch. Was sollen zum Beispiel die Sortierfunktionen für einen Zweck erfüllen?
Die binarysearch Funktionen in GetPickupType haben ebenfalls keinen Sinn, da dein Index immer 0 ist. Ich verstehe auch nicht was das bezwecken soll.
Das System an sich kannst du eigentlich komplett in die Tonne treten (sorry, aber ist so) und neu schreiben. Das geht wesentlich einfacher.
-> Ein Array mit enum für die Pickups (enum: Model [Welche Waffe z.B.], Menge [für Geld und Ammo], Typ [ob Geldpickup(0), Waffenpickup(1), etc).
-> Index ist die pickupid
-> Eine Funktion, die die Model-ID zur Waffen-ID zurück gibt.
-> Random Funktion für Position und Waffen-ID.
Und wenns ein Geld Pickup sein soll, dann kann das ins gleiche Array. Jede Pickup-ID gibt es schließlich nur einmal, da hast du schon eine Eindeutigkeit.
Mehr ist es nicht. Das kann man in 1 Stunde problemlos funktionsfähig schreiben.
Zudem:
Dieser Thread ist für kleine Fragen, nicht für elendslange Codes.
Erstelle bitte einen separaten Thread für weitere Fragen.