Carsystem - Car an User "binden"

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
  • Nabend zusammen,


    Ich habe schon die ganze letzte Nacht an einem eigenen Carsystem gearbeitet. Ich bin jetzt soweit das der User ein Fahrzeug kaufen kann und daraufhin eine ini mit dem Spielernamen angelegt wird in dem dann alle Fahrzeugdaten des gekauften Fahrzeuges gespeichert werden (carpos,zangle,carid,modid,tankstatus,vehiclehealth)


    Als nächstes werde ich mich an das spawnen des fahrzeuges machen sobald der User on kommt was aber eigentlich kein problem sein sollte.



    Mein problem liegt nun darin das Fahrzeug an den User zu binden und da bräuchte ich einen kleinen denkanstoss ?( Denn wenn das Fahrzeug nach dem connecten spawnt ist ja jedesmal die carid anders, zusätzlich soll das Fahrzeug auch off gehen wenn der User off geht - daher muss ich es ja irgendwie an ihn "binden".



    Wäre nett wenn jemand vielleicht ein paar brauchbare Tipps für mich hätte.



    MfG



    Traxter

  • Jap genau, aus dem Grund die ini - kommt der User wieder on wird das Fahrzeug anhand der vorhandenen Daten in der ini wieder "erstellt".



    Aber mich würde interessieren wie man dam Script grundsätzlich sagt welches Fahrzeug wem gehört.Wenn ich das weiß kann ich mir alles andere sicher selbst logisch ableiten, daher sprach ich von einem denkanstoss :)

    2 Mal editiert, zuletzt von Traxter ()

  • und wenn du die autos einzeon definierst?
    also
    new wolfsauto;
    OnPlayerConnect
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if(strcmp(name, "Wolf", true)==0)
    {
    wolfsauto=CreateVehicle(%d,%f,%f,%f,%f,%d%d,-1);
    return 1;
    }
    }
    OnPlayerDisConnect
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if(strcmp(name, "Wolf", true)==0)
    {
    DestroyVehicle(wolfsauto);
    return 1;
    }
    }


    bei createvehicle bin ich mir nichtmehr sicher wie das war mit autos aus datei laden

  • ich denk aber kaum das er jeden namen in sein script schreibt :pinch:
    mach doch so du lässt es in der userfile speichern wie das auto heißt zb wolfsauto^^ und dann und der auto datei wolfsauto=blablabla
    und beim connecten überprüfst du ob er ein auto hat, wenn ja lässt du es spawnen wenn nicht dann nicht
    und beim disconnect andersrum

  • Wenn du n Enum hast machs so
    enum i
    {
    ...
    Car[2], // 1 Car ID , 2 = SpawnId
    ...
    }
    new pInfo[MAX_PLAYERS]; // sry ka wieso das raus war


    Dann wenn er connectet, liest aus der File,ob Car[0] > 0 ist (wenn er kein Auto hat auf 0 setzen) bzw wenn du dini hast "dini_IsSet". => Ob er ein Auto hat.
    Dann
    pInfo[playerid][Car][1] = CreateVehicle(pInfo[playerid][Car][0],pInfo[playerid][X],....);
    Wenn er den server verlässt, am besten wieder Abfragen ob pInfo[playerid][Car][0] > 0 dann und einfach DestroyVehicle(pInfo[playerid][Car][1]);

    2 Mal editiert, zuletzt von KornChief ()

  • Auf so eine Antwort habe ich gewartet auch wenn ich dafür mein system jetzt etwas umändern muss.Der übersicht wegen hatte ich es ja so gemacht das zusätzlich zu user.ini noch eine usercar.ini für den jeweiligen user erstellt wird die eben auch den usernamen trägt in der nur die vehicle daten stehen - beim autokauf sollte dann überprüft werden ob bereits eine usercar.ini des spieler existiert und wenn das der fall ist eben kein autokauf mehr möglich sein. Beim autoverkauf sollte dann die usercar.ini in den neuen besitzer umbenannt werden oder halt beim verkauf im autohaus die ini gelösch werden sodass keine ini des verkäufers mehr existiert und somit ein neuer kauf möglich ist.So hatte ich mir das im Kopf etwas zurechtgelegt :)



    Aber der Tip von Fischer ist super, werd ich gleich mal ausprobieren denn damit gehts genausogut und das car ist an den user gebunden :)


    Edit:


    Korn - Da ich enum/PInfo habe auch sehr hilfreich / danke :)

  • Joar, denke nur meine Methode geht auch. Vorteil wäre, man braucht nicht so viele User files (wenn sich 1000 User registrieren hast du 2000 Files...) und geht auch über keine Umwege...sollte eigtl. klappen und überprüfen, ob er ein Auto hat, kanns aucht mit pInfo[playerid][Car][0] > 0 bzw ob es spawned ist pInfo[playerid][Car][1] > -1. Musst es auf -1 setzen, wenn du es überhaupt speicherst bzw willst, dass das Car InGame gelöscht werden kann, damit du eine nicht existierende ID hast ^^