Car ID

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • diese funktion gibt die id des fahrzeugs zurück in dem der spieler gerade sitzt. diese id´s sind nur für die laufzeit geeignet und sollten dynamisch gespeichert werden(id verschiebung und so)
    was willst du damit erreichen?

  • ne will das anders machen, und zwar dass man die autos zum einen IG saven kann und das die einer bestimmten person gehören keine fraktion also mit der dini datei

  • Das spielt doch keine Rolle. Wenn du die Autos einfach alle normal einfügst und deren Struktur nicht irgendwie veränderst, kannst du die CarID immer mit GetPlayerVehicleID bestimmen
    Beispiel
    // Oben, kannst auch in ein enum machen
    new
    pCarID[MAX_PLAYERS],
    bool:vOwned[MAX_VEHICLES];


    // OnPlayerConnect
    pCarID[playerid] = 0; // = kein Fahrzeug, da 0 keine gültige ID ist


    // Fahrzeugkauf
    if(GetPlayerState[playerid] != PLAYER_STATE_DRIVER) return 1;
    new
    carid = GetPlayerVehicleID(playerid);
    if(vOwned[carid]) return SendClientMessage(playerid, FARBE, "Fahrzeug ist besetzt");
    pCarID[playerid] = carid;
    vOwned[carid] = true;


    // Fahrzeugverkauf


    if(GetPlayerState[playerid] != PLAYER_STATE_DRIVER) return 1;
    new
    carid = GetPlayerVehicleID(playerid);
    if(pCarID[playerid] != carid) return SendClientMessage(playerid, FARBE, "Dieses Fahrzeug gehört nicht dir");
    pCarID[playerid] = 0;
    vOwned[carid] = false;


    // Überprüfen ob Spieler das Fahreug besitzt ( für alle Möglichen Autobefehle )


    if(GetPlayerState[playerid] != PLAYER_STATE_DRIVER) return 1;
    if(pCarID[playerid] != GetPlayervehicleID(playerid)) return SendClientMessage(playerid, FARBE, "Dieses Fahrzeug gehört nicht dir");

  • Das erleichert zwar einige Dinge, in diesem Fall braucht man aber nur die jeweilige Autoid, die normalerweise immer gleich bleibt, besonders wenn man einfach eine neue Tabelle erstellt in der Datenbank (MySqlID = Carid)...
    In deine "cars" Tabelle trägst du deine Autodaten ein (id, x, y, z, farbe1, farbe2, locked usw.) mit natürlich MySqlID = carid und in der "users" tabelle einfach einen Eintrag mit car, wobei car = Carid (= MysqlID des Autos in der Datenbank) ist... wie oben schon gemacht.
    Das Ganze natürlich ungefähr so ähnlich wie oben...

  • das stimmt nicht wirklich.
    die id in der datenbank entspricht nicht inbedingt der ingame.
    man muss die sql id für jedes fahrzeug speichern.
    aber darum gehts hier ja nicht, er wills als dini speichern.
    edit: es ist ziemlich blöd sich darauf zu verlassen dass die ids sich nicht ändern, wenn sie es dann doch mal tun hast du viiiiiiiiieeeeeeeeeel arbeit :D


    bau das mit den fraktionsids um und speicher die autos mit dem namen des besitzers oder gib jedem spieler eine eindeutige id.

  • Naja aber wie mache ich das, dass die ID´s nicht verrutschen? Und eigentlich würde ich eher nach dem Owner abfragen, nicht nach der ID. Nur man soll nach der ID suchen(notfalls nach dem owner) und der dini name soll die ID sein. Achso und noch was: wie frage ich ab welches bzw ob ein auto vor einem steht??????

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    2 Mal editiert, zuletzt von Weed ()

  • Zitat

    edit: es ist ziemlich blöd sich darauf zu verlassen dass die ids sich nicht ändern, wenn sie es dann doch mal tun hast du viiiiiiiiieeeeeeeeeel arbeit :D


    Es ist nicht selbstverständlich, dass sie nicht verrutschen, aber wenn mans richtig anstellt verrutschen sie nicht und alles hat seinen Platz. Na ja wie sollen Autops auch groß verrutschen, wenn du sie in der Datenbank hast und per Schleife am Anfang lädst. Wenn du natürlich DestroyVehicle anwenden willst, wird es ein wenig mehr Aufwand, aber auch machbar, aber wer braucht bei einem Autosystem schon ein Destroyvehicle. Einfach wieder zum verkaufen stellen reicht. Und nach dieser Methode sparst du
    1.) Zeit
    2.) ist es übersichtlicher, wenn die MySQL ID = carid ist
    3.) einfacher alles zu überprüfen und es zu pflegen
    4.) man spart sich die nervige Zuweisung
    Aber wie du schon sagtest ist sicherlich gewöhnungssache und beides hat seine Vorteile, aber es geht hier um was anderes


    Naja aber wie mache ich das, dass die ID´s nicht verrutschen? Und eigentlich würde ich eher nach dem Owner abfragen, nicht nach der ID. Nur man soll nach der ID suchen(notfalls nach dem owner) und der dini name soll die ID sein. Achso und noch was: wie frage ich ab welches bzw ob ein auto vor einem steht??????
    Nach dem Owner kannst du auch gehen, das wäre natürlich auch ein Weg, strcmp ist da dein Stichwort dann. Wenn du es per Owner machen willst trägst du den Owner in die Datei ein des bfahrzeugs und lädst den Namen in eine variable beim laden des Fahrzeugs. Diese kannst dann mit dem Namen des Spielers vergleichen (strcmp) und du weisst, dass er der Besitzer ist. Wies mit IDs geht hab ich oder Nacho schon oben gezeigt.
    Ein Fahrzeug in der Nähe kriegst du raus, indem du durch alle fahrzeuge schleifst und den Abstand jeweils miteinander vergleichst...

  • mann im mond... man brauch kein system aber es ist viel übersichtlicher und einfacher mit.


    man könnte bei vielen dingen bei den man ein flaschenzug benutzt auch ohne arbeiten aber es macht das ganze viel einfacher.


    mit dem richtigen system brauch meine keine einzige id raus zu suchen xD ich hab noch nie ein befehl wie "oldcar" benutzt und in meinem script hat jeder spieler mehrere eigene autos die spawnen wenn er aufn server kommt und zerstört werden wenn er runter geht.
    ausserdem hab ich firmenautos in die auch nur angestellte kommen und ich hab nie eine id raus gesucht und keine angst vor id verschiebung.

  • Wie schon gesagt das ist sicherlich ansichtssache und es gibt genug Varianten den Besitzer zu überprüfen, ob jetzt über die CarID, den Namen oder nach deiner Variante...


    Zitat

    mit dem richtigen system brauch meine keine einzige id raus zu suchen xD ich hab noch nie ein befehl wie "oldcar" benutzt und in meinem script hat jeder spieler mehrere eigene autos die spawnen wenn er aufn server kommt und zerstört werden wenn er runter geht.


    Den alten Car des Spielers rauszufinden ist auch bei der ID Methode nicht notwendig. Nach deiner Methode, dass Autos erst bei Connect spawnwn und bei Disconnect verschwinden, ist natürlich die ID Möglichkeit nicht möglich, wenn die Autos allerdings die gleiche Zeit stehen bleiben sollen (ich denke für Roleplay Server am angesprachtesten, dann so auch wieder mehr Möglichkeiten entstehen (Klauen usw.)) dann brqaucht man keine Angst vor der ID Verschiebug haben und wie oben schon gesagt ist das mit DestoryVehicle und Nachdenken auch kein Problem. Mir ist es persönlich egal, was wer benutzt, ich wollte nur noch ne Möglichkeit aufzählen mit der man die Ids genauso rausfinden kann - wie ICH finde eine einfache und zeitsparende Möglichkeit. Aber jeder soll es so machen, wie er am besten denkt, dass es für sein System am Besten ist

    Zitat

    ausserdem hab ich firmenautos in die auch nur angestellte kommen und ich hab nie eine id raus gesucht und keine angst vor id verschiebung.


    Das ist mit der ID Methode auch rein gar kein Problem, einfach eine Variable setzen, die das team speichert und dann beim Einsteigen diese Überprüfen lassen...
    Angst vor ID Verschiebung braucht man da auch nciht haben, wenn man das System entsprechend schreibt...
    Jede Methode hat seine Vor- und Nachteile, die Diskussion ist daher irgendwie sinnlos

  • Naja aber wie mache ich das, dass die ID´s nicht verrutschen? Und eigentlich würde ich eher nach dem Owner abfragen, nicht nach der ID. Nur man soll nach der ID suchen(notfalls nach dem owner) und der dini name soll die ID sein. Achso und noch was: wie frage ich ab welches bzw ob ein auto vor einem steht??????

    Wenn du kein MSql hast/benutzen willst, empfiehlt sich diese Methode:


    forward IsWasweißichCar(vehicleid);
    new WasweißichCar[3]; //Anzahl der von dir gebrauchten Wagen, es startet bei 0, sprich: WasweißichCar[0], WasweißichCar[1], usw.


    OnGameModeInit:
    WasweißichCar[0] = AddStaticVehicleEx(597,-1616.6116,750.0524,-5.4734,179.6568,103,8,-1); // Car1
    WasweißichCar[1] = AddStaticVehicleEx(597,-1612.5254,750.0016,-5.4732,179.7786,103,8,-1); // Car2
    WasweißichCar[2] = AddStaticVehicleEx(597,-1608.4707,750.0336,-5.4738,181.3003,103,8,-1); // Car3


    Ganz Unten ins Script:
    public IsWasweißichCar(vehicleid)
    {
    for(new i = 0; i < sizeof(WasweißichCar); i++)
    {
    if( vehicleid == WasweißichCar[i])
    {
    return 1;
    }
    }
    return 0;
    }


    Aufrufen kannst du dann das ganze mit:
    if(IsWasweißichCar(vehicleid))
    {
    //usw.
    }


    Hoffe hat dir geholfen

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen