OnGameModeInit, Tank abrufen?

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
  • Hey, ich habe mir ein Autosystem mit Autohaus etc erstellt. Möchte nun, dass der Tank meiner gekauften Autos bei OnGameModeInit aus meiner dini Dartei genommen wird und nicht die 100% die z.B nur erstellte Autos (/createvehicle) und z.B Fraktionsautos bekommen sollen. Kann mir einer zeigen wie man das anstellt? Hier ein Auszug meines Scripts:


    for(new i= 0;i<MAX_VEHICLES;i++)
    {
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
    Motor[i] = false;
    Tank[i] = 100;
    for(new x = 0; x < MAX_PLAYER_CARS;x++)
    {
    for(new j = 0; j < MAX_PLAYERS;j++)
    {
    Tank[i] = Autos[j][x][Tankstatus];
    }
    }

    | Green Day - Nickelback - Rise Against - 3 Doors Down | \m/

  • Nun, ich würde an dieser Stelle zuerst einen Wert festlegen, der beschreibt ob sich das Auto im Besitz des Staates/ Organisationen (Fraktionsautos) oder im Besitz einer Privatperson befindet und diesen in deine Vehikel-Datein integrieren. Momentan teilst du nämlich, wobei ich glaube, dass dir das bewusst ist, jedem Fahrzeug den gleichen Tankinhalt zu, und zwar 100 %.


    Jetzt fragen wir zu Beginn (also unter OnGameModeInit) ab, um welchen "Typ" von Fahrzeug es sich handelt, ermitteln durch die gespeicherte Datei den aktuellen Tankinhalt (sofern du mit deinem System schon so weit bist) und setzen die fahrzeugbezogene Variable für den Tank auf diesen Wert.

  • Damit ich das richtig verstanden habe, ich erstelle eine Variabel in der Datei die mir ansagen lässt ob das Fahrzeug Privat ist, oder nicht und wenn lasse ich dem Privaten Fahrzeug den gespeicherten Tankinhalt zuweisen, richtig?

    | Green Day - Nickelback - Rise Against - 3 Doors Down | \m/

  • Richtig. Du erzeugst einen extra Wert, der den "Besitzstatus" des Fahrzeugs beschreibt, und kannst diesen dann in einer Abfrage zum "Laden" deiner Vehikel nutzen und so gezielt einer Fahrzeuggruppe den Tankinhalt auf den richtigen Wert setzen.

  • Ich habe das jetzt alles versucht unter OnVehicleSpawn abfragen zu lassen, auch mit einer Privat' Variable in der Datei, allerdings haben die Autos nun alle samt 0 Liter. Ich kann ja auch nicht z.B extra für jedes Fahrzeug das ich mit /createvehicle eine Datei erstellen. Gibt es vielleicht irgenwie eine andere möglichkeit? Z.b das man iwie abfragt ob für dieses Auto eine Datei existriert? Wenn ja, dann z.b tank auslesen lassen und nein 100 liter geben?


    public OnVehicleSpawn(vehicleid)
    {
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    Motor[vehicleid] = false;
    for(new z = 0; z < MAX_PLAYERS;z++)
    {
    for(new i = 0; i < MAX_PLAYER_CARS;i++)
    {
    if(vehicleid == meinauto[z][i])
    {
    if(Autos[z][i][Privat] == 1)
    {
    Tank[meinauto[z][i]] = Autos[z][i][Tankstatus];
    }
    else
    {
    Tank[i] = 100;
    }
    }
    }
    }
    return 1;
    }

    | Green Day - Nickelback - Rise Against - 3 Doors Down | \m/

  • Du solltest diesen Wert ohnehin in jeder Fahrzeug-Datei speichern. Wie sonst willst du überprüfen, ob sich das Fahrzeug im Besitz eines Spielers befindet oder nicht (oder gar einer Fraktion angehört)? Eine zwingend notwendige Information um zum richtigen Ziel zu gelangen.


    Zu der Sache mit "... ob für dieses Auto eine Datei existriert" solltest du deinen Code optimieren und nur die Menge an Autos "laden", die in den Files hinterlegt sind (etwas schwammig formuliert, ich hoffe du verstehst, auf was ich hinaus will - mit MySQL z.B. sehr schön realisierbar - in deinem Fall sollte dir eine Kombination aus einer Schleife und der Funktion dini_Exists helfen, um zu überprüfen ob ein File existiert).

  • Ich benutzt const MAX_PLAYER_CARS = 2; um die Möglichkeit eines Kaufes auf zwei Fahrzeuge zu verringern. Wenn ich dann z.B eine Schleife abfrage for(new i = 0; i < MAX_PLAYER_CARS;i++) werden doch alle MAX_PLAYER_CARS Fahrzeuge rausgesucht, oder nicht? Ist es dann nicht möglich diesen aus ihrer Datei gespeicherten Tankstatus zu geben und dem rest 100? Ich wüsste jetzt auch nicht wie ich jedem Fahrzeug ne Datei anlegen sollte. Ist wohl ziemlich umständlich immer wieder ne dini_Create zu erstellen, oder nicht? Oder denken wir beide aneinander vorbei? :D

    | Green Day - Nickelback - Rise Against - 3 Doors Down | \m/

  • Jetzt glaube ich wir denken aneinander vorbei, ja. Meld dich mal bei mir per PN, dann schauen wir mal, ob wir das Problem lösen können.