Car-delete bei dem Falschen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hi!


    In meinem Car Spawner kann man nur jeweils ein Car haben, sobald man sich ein neues holt ist das alte weg.



    //Definition
    new PlayersVehicle[MAX_PLAYERS];


    //Beim Spawnen dann;


    DestroyVehicle(PlayersVehicle[playerid]);
    PlayersVehicle[playerid] = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1);
    //... und noch Sachen mit dem Auto.


    wenn sich aber ID 0 ein Auto holt, ist es bei ID 1 weg, komisch ich kanns mir nicht erklären.


    beim Disconnecten ist auch noch



    DestroyVehicle(pvehicle);
    DestroyVehicle(PlayersVehicle[playerid]);
    PlayersVehicle[playerid] = 0;



    Einmal editiert, zuletzt von !ULLLIIK ()

  • Hallo


    Bitte ordne mal deinen Code, es kommt insgesamt 3x DestroyVehicle vor.......


    //Definierung
    new PlayersVehicle[MAX_PLAYERS];


    //OnPlayerConnect
    PlayersVehicle[playerid] = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1);


    //OnPlayerDisconnect
    DestroyVehicle(PlayersVehicle[playerid]);


    MfG Simon

  • Ja klar;


    beim Spawnen, dass das alte Auto zerstört wird,
    beim rausgehen, dass das gespawnte Car verschwindet,
    und auch beim rausgehen, dass das Auto zerstört wird, wo man gerade drinnen sitzt ( pvehicle = GetPlayerVehicleID(playerid) )


    doch den Fehler behebt das ja nicht oder?

  • PlayersVehicle[MAX_PLAYERS] hat von anfang an den wert 0.


    Spieler 1 spawnt jetzt Ein Auto, und weil es das erste ist hat es ID 0. Die ID 0 wird nun in PlayersVehicle[0] (0 weil playerid = 0) gespeichert.
    Nun kommt spieler 2 auf den server und spawn sich ein auto.
    Also wird der code ausgeführt:
    DestroyVehicle(PlayersVehicle[playerid]);
    PlayersVehicle[playerid] = CreateVehicle(vehicle, x, y, z, a+90, -1, -1, -1);
    Da PlayersVehicle[1] (1 weil playerid = 1) noch keinen wert bekommen hat, ist es noch 0. Also wird das auto 0 gelöscht, welche das vom ersten spieler ist.



    Erstell die variable mal so, und schau ob es geht:
    new PlayersVehicle[MAX_PLAYERS] = {INVALID_VEHICLE_ID,...};
    Und bei Disconnect das nicht vergessen:
    PlayersVehicle[playerid] = INVALID_VEHICLE_ID;

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Danke Maddin, macht Sinn so


    ich dachte es geht doch es funktioniert doch noch net.


    Die Autos verschwinden wirklich wieder bei den anderen..


    /edit: und zwar ich muss diesen Thread wieder aktualisieren, da ich nun wieder scripte und das ein Problem ist, das ich immer noch nicht beheben konnte. für mich macht der Fehler aber keinen Sinn. Also ich verstehe nicht, an was das liegt. Im Script sieht das ganze noch gleich aus.


    Einmal editiert, zuletzt von !ULLLIIK ()