SAMP-interne VehicleID manuell bestimmen

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
  • Hallo! Ich habe eine Frage und zwar; Wenn man per "CreateVehicle" ein Fahrzeug erstellt, setzt ja SAMP bzw. PAWN selbst die ID - Nun meine Frage; Ist es Möglich die ID's selber zu bestimmen und wenn ja - wie?
    Ich hoffe mir kann jemand Helfen.


    Mit freundlichen Grüßen
    Creature

  • Hallo! Ich glaube du hast mich falsch verstanden. SAMP bzw. PAWN wenn ich z.b jetzt oben zwei Fahrzeuge mit CreateVehicle erstelle. Dann hat das eine Auto die ID 1 und das andere die ID 2 - Ist es Möglich selber zu bestimmen welche ID das jeweilge Auto tragen soll? zum Beispiel: Fahrzeug 1 soll ID 50 haben. Hoffe man versteht mich.


    Und wenn das Möglich ist - wie? Kleines Beispiel eventuell.


    Mit freundlichen Grüßen
    Creature

  • Hallo! Ist ja ganz egal ob dir diese Frage komisch vorkommt - aber ich stelle sie ja. Ich möchte ja nicht deine Meinung dazu. Ob es absurd ist oder nicht - bleibt meine Sache.


    Mit freundlichen Grüßen
    Creature

  • Genau, das habe ich schon so verstanden.
    Direkt ist das nicht möglich, aber mit Umständen geht es. Beispiel:


    • Erstelle die Fahrzeuge von 1 bis 49
    • Erstelle das Fahrzeug 50
    • Lösche die Fahrzeuge 1 bis 49


    Natürlich muss abgefragt werden, bei Step 1, ob die ID bereits existiert und in dem Fall darf sie dann auch bei Step 3 nicht gelöscht werden.



    new ids[MAX_VEHICLES];
    for(new i = 1; i < 50; i++) if(IsValidVehicle(i)) ids[i] = CreateVehicle(400, 9999.0, -9999.0, 9999.0, 0.0, -1, -1, 60); //49 Dummies
    CreateVehicle(...); //Dein Fahrzeug mit der ID 50
    for(new i = 1; i < 50; i++) if(ids[i] > 0) DestroyVehicle(ids[i]);

  • Hallo! Danke das wäre dann mal geklärt.
    Noch eine Frage.



    Ich habe eine Tabelle mit folgenden Inhalt: -> Vehicle Tabelle.


    Id | Owner | Model |
    ------------------------


    1 | Creature | 411
    2 | Creature | 412
    3 | Jeffry | 416
    4 | Manfred | 418


    Wenn sich der User "Jeffry" nun einloggt, werden ja seine Fahrzeuge geladen. Ist es Möglich seinem Fahrzeug das geladen wird -> die ID 3 zu setzten?
    Und wenn sich dann Creature einloggt, seine Fahrzeuge jeweils die ID 1 und ID 2 zu geben? Also nicht automatisch sondern aus der Datenbank auslesen.


    Ich weiß hört sich komisch an - aber ich habe was vor.
    Vielen dank im voraus.



    Mit freundlichen Grüßen
    Creature

  • Klar, du musst eben anstatt der 50 die ID nehmen, die ausgelesen wird, in dem Code, zum Beispiel so:



    new ids[MAX_VEHICLES];
    new id_to_set = cache_get_field_content_int(zeile, "id");
    for(new i = 1; i < id_to_set; i++) if(IsValidVehicle(i)) ids[i] = CreateVehicle(400, 9999.0, -9999.0, 9999.0, 0.0, -1, -1, 60); //49 Dummies
    CreateVehicle(...); //Dein Fahrzeug mit der ID id_to_set
    for(new i = 1; i < id_to_set; i++) if(ids[i] > 0) DestroyVehicle(ids[i]);

  • Du solltest weg von der VehicleID als Identifikation des Fahrzeuges. Die VehicleID kann sich ändern bzw variieren, die ID in der Datenbank sollte immer eindeutig für das Fahrzeug des Spielers sein.
    Spätestens wenn du mehr als 2000 Fahrzeuge hast, funktioniert dein System sowieso nicht mehr.