Autos verdoppeln sich

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
  • Guten Tag liebe Community,


    ich habe ein Problem, undzwar wenn sich ein Spieler ausloggt sollte für gewöhnlich sein Fahrzeug gelöscht werden.
    damit wenn er sich einloggt kein zweites Fahrzeug erstellt wird, bzw. Die Fahrzeuge sich nicht verdoppeln.
    Dies geht aber nur bei dem ersten Auto.
    Sprich: Spieler X hat 3 Autos, loggt sich aus und kommt wieder, Auto 1 wird beim Ausloggen vom Server gelöscht Auto 2 und 3 nicht.
    So hat Spieler X nach dem relog 2 Autos zu viel. (Auto 2 und 3 hat sich verdoppelt)


    Ich habe folgendes im OnPlayerDisconnect Public stehen:


    for(new slot=0;slot<MAX_PLAYER_VEHICLES+5;slot++)
    {
    DestroyVehicle(PlayerCar[playerid][slot][Vehicle]);
    }


    Diese Methode wirkt aber leider nur bei dem Ersten Fahrzeug...

  • Kannst du mal zeigen, wie du das Fahrzeug (bzw. die Fahrzeuge) erstellen lässt? (ggf. beim einloggen).

  • Wenn sich der Spieler Einloggt (OnPlayerLogin) - bzw. Wenn das Password dann auch noch Stimmt, und der Account geladen wird:


    for(new slot=0;slot<MAX_PLAYER_VEHICLES+5;slot++){new query[1024];format(query,sizeof(query),"SELECT * FROM `playercar` WHERE `name` = '%s' AND slot = '%d'",SpielerName(playerid),slot);mysql_function_query(MYSQLVerbindung,query,true,"LoadAccountVehicles","ii",playerid,slot);}


    Bei LoadAccountVehicles passiert eigentlich nurnoch das: (Vorher werden die Daten natürlich abgefrage (Farbe etc.))
    PlayerCar[playerid][slot][Vehicle] = CreateVehicle(PlayerCar[playerid][slot][carNEUmodelid],PlayerCar[playerid][slot][posxNEU],PlayerCar[playerid][slot][posyNEU],PlayerCar[playerid][slot][poszNEU],PlayerCar[playerid][slot][posaNEU],PlayerCar[playerid][slot][Colour1],PlayerCar[playerid][slot][Colour2],-1);
    VehicleTuning(playerid,slot);

  • Versuche mal bitte den Code, sollte es nicht klappen versuche das ganze mal zu printen.


    OnPlayerDisconnect:


    C
    for(new i=0;i<MAX_PLAYER_VEHICLES+5;i++)
    {
          DestroyPlayerCar(playerid,i);
    }


    stock:


    C
    stock DestroyPlayerCar(playerid,slot)
    {
    	if(PlayerCar[playerid][slot][Vehicle]==0)return 1;
     	DestroyVehicle(PlayerCar[playerid][slot][Vehicle]);
    	return 1;
    }


    Mit freundlichen Grüßen
    German_ScripterHD

  • Und du bist dir sicher das sich die Slots sich NICHT überlappen und normal gespeichert & geladen werden?
    Das würde jedenfalls erklären warum nur ein Fahrzeug gelöscht wird, da die anderen dann "überschrieben" wurden.
    Schonmal darauf geachtet ob immer das "letzte" gespawnte Fahrzeug gelöscht wird?


    Mit freundlichen Grüßen,
    KleineHilfe