Kassen in Vars

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 Leute,


    ich möchte meine Staatskasse, Polizeikasse etc in Variablen speichern
    die bei OnGameModeInit geladen werden sollen doch ich weiß nicht wie ich das anstelle
    Speichersystem:
    bfx_ini


    Vars:
    enum Kvars
    {
    Staatskasse,
    Polizeikasse,
    ADACkasse,
    }
    new Kassen[Kvars];


    Speicherung:
    public OnKassenUpdate()
    {
    new str[256];
    format(str, sizeof(str),"Kassen.ini");
    if(OpenINI(str))
    {
    SetKeyInt("Staatskasse",Kassen[Staatskasse]);
    SetKeyInt("Polizeikasse",Kassen[Polizeikasse]);
    SetKeyInt("ADACkasse",Kassen[ADACkasse]);
    SaveINI();
    CloseINI();
    }
    return 1;
    }


    Das Laden soll bei OnGameModeInit statt finden doch ich habe kp wie ich das mache
    bei Variablen wie Autos[vehicleid][vModel] zum Beispiel kann ich das aber wenn das [vehicleid] nicht da ist
    kann ich das nicht da bin ich ratlos
    Ich hoffe mir kann einer helfen


    mfg Dedi

  • Zitat

    bei Variablen wie Autos[vehicleid][vModel] zum Beispiel kann ich das aber wenn das [vehicleid] nicht da ist
    kann ich das nicht da bin ich ratlos

    könntest du den Satz nochmal langsam zusammenfassen ? Verstehe gerade nichts davon

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich meine weil bei Kassen
    das 2. [] fehlt


    new Kassen[Kvars];


    new Autos[MAX_VEHICLES][Vvars];


    Wenn das MAX_VEHICLES vorhanden ist kann ich es bei OnGameModeInit laden bzw. ich weiß wie es geht
    Wenn das MAX_VEHICLES nicht vorhanden ist habe ich kp wie das geht
    verstehste was ich meine?
    Wenn nicht dann ignoriere es ^^

  • Du speicherst im Prinzip genau so ,


    enum formatvorlage
    {
    test1,
    Float:bla
    }
    new TestB[formatvorlage];


    Unterstützt mehrere Datentypen wie man sieht , im Prinzip nichts anderes



    enum formatvorlage
    {
    test1,
    Float:bla
    }
    new TestB[100][formatvorlage];


    Hier hast du 100x die gleichen Werte zur verfügung die du jeweils verschieden belegen kannst.
    Wert Speichern & Laden ist im Prinzip sehr einfach durch Schleifen geht das auch ganz schnell.
    damit man zum Beispiel nicht unnötige Leere Werte speichert kann man Abfragen einsetzen um das ganze zu überspringen


    for(new i = 0;i<100;i++){
    if(TestB[i][test1] == 0 /* geht auch so !TestB[i][test1]*/)continue; // Zum nächsten Durchgang springen
    [...] Wert Speichern , i gibt den Index an
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Wenn du mit keinem eigenen ID's arbeitest kannst du wenn du zum Beispiel die Vehicleid Rückgabe nutzen sprich
    sie durch die Funktion abrufen & so kannst du auf die Werte unter diesem Index zugreifen


    enum autos
    {
    id,
    andere_daten
    }
    new fahrzeuge[10][autos];


    Erstellen, ganz einfach Index auf der Schleife der Lade Funktion nehmen
    fahrzeuge[..index..][id] = CreateVehicle(...);


    In anderen fällen kannst du dir auch einfach eine Funktion bauen wie diese ( For ex. )


    getvehiclex(vehicleid){
    new getid = -1;
    for(new i = 0;i<10;i++){
    if(fahrzeuge[i][id] == vehicleid){getid = i;break;}
    }
    return getid;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()

  • ich kapier da nichts^^
    bei den fahrzeugen funktioniert alles da will ich ja nichts ändern ich meinte ich will keine [100] [10] ... bei den Kassen haben damit ich die ständigen "i" nicht mehr habe bzw. die schleifen
    ich will nur das es so ist mit


    enum Kvars
    {
    Staatskasse,
    Polizeikasse,
    ADACkasse,
    }
    new Kassen[Kvars];
    werden die Variablen quasi erstellt
    bei OnGameModeInit sollen sie geladen werden und zwar von Datei in Variable
    und mit
    public OnKassenUpdate()
    {
    new str[256];
    format(str, sizeof(str),"Kassen.ini");
    if(OpenINI(str))
    {
    SetKeyInt("Staatskasse",Kassen[Staatskasse]);
    SetKeyInt("Polizeikasse",Kassen[Polizeikasse]);
    SetKeyInt("ADACkasse",Kassen[ADACkasse]);
    SaveINI();
    CloseINI();
    }
    return 1;
    }
    sollen sie gespiechert werden


    das problem ist ich bekomme das bei OnGameModeInit nicht hin bzw. habe kp wie ich das machen soll

  • Kassen[Staatskasse] = ReadIntKey("Keyname");


    wo ist das Problem ? Einfach in OnGameModeInit wieder laden & bei OnGameModeExit speichern wenn OnGExit nicht geht
    einfach dann speichern wenn es gesetzt wird.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • ich habe das so verstanden qasi einfach ins geschehen packen i-wie so
    //////////////////////////////////Krankenhaus ///////////////////////////////////////
    CreateObject(8947, entfernt, 0.0000, 0.0000, 0.0000);
    CreateObject(8947, entfernt, 0.0000, 0.0000, 0.0000);
    OpenINI("Kassen.ini");
    Kassen[Staatskasse] = ReadIntKey("Staatskasse");
    Kassen[Polizeikasse] = ReadIntKey("Polizeikasse");
    for(new count;count<MAX_VEHICLES;count++)
    {
    oder so?
    //////////////////////////////////Krankenhaus ///////////////////////////////////////
    CreateObject(8947, entfernt, 0.0000, 0.0000, 0.0000);
    CreateObject(8947, entfernt, 0.0000, 0.0000, 0.0000);
    OpenINI("Kassen.ini");
    if(OpenINI("Kassen.ini"))
    {
    Kassen[Staatskasse] = ReadIntKey("Staatskasse");
    Kassen[Polizeikasse] = ReadIntKey("Polizeikasse");
    }
    for(new count;count<MAX_VEHICLES;count++)
    {



    Einmal editiert, zuletzt von Tomi93 ()

  • Hmm verstehe nicht wie du das meinst aber Fakt ist


    > Datei Öffnen ( OpenINI )
    > Datei beschreiben & wenn nötig noch auslesen etc. ( ...)
    > Wenn was neues rein geschrieben / verändert wurde , Datei extra Speichern ( SaveINI )
    > Cache wieder bereinigen damit sie wieder voll Nutzbar ist ( CloseINI ) somit sind wieder 512 Schlüssel mit Werten verfügbar

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • In wie fern wird es nicht geladen ?


    if(OpenINI("Kassen.ini"))
    {
    Kassen[Staatskasse] = ReadIntKey("Staatskasse");
    Kassen[Polizeikasse] = ReadIntKey("Polizeikasse");
    Kassen[ADACkasse] = ReadIntKey("ADACkasse");
    CloseINI();
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • if (strcmp(cmd, "/staatskasse", true)==0)
    {
    SCM(playerid,COLOR_RED,"=================================================");
    format(tmpstring, sizeof(tmpstring), "Staatskasse: $%d", Kassen[Staatskasse]);
    SCM(playerid, COLOR_LIMEGREEN, tmpstring);
    SCM(playerid,COLOR_RED,"=================================================");
    return 1;
    }


    Wenn ich diesen Befehl benutze steht Staatskasse: $0
    aber in der Datei steht das auf der Staatskasse=3038450

  • Musst nicht editieren, ich muss den Fehler erst mal finden, das fällt schwer wenn man Stark erkältet ist xD
    Wundert mich gerade, hast du es genau so geladen ? nur die Werte aus der richtigen Datei geholt & in die Variablen gespeichert, danach wieder geschlossen ? :s

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • enum Kvars
    {
    Staatskasse,
    Polizeikasse,
    ADACkasse,
    }
    new Kassen[Kvars];


    public OnGameModeInit()
    {
    OpenINI("Kassen.ini");
    if(OpenINI("Kassen.ini"))
    {
    Kassen[Staatskasse] = ReadIntKey("Staatskasse");
    Kassen[Polizeikasse] = ReadIntKey("Polizeikasse");
    Kassen[ADACkasse] = ReadIntKey("ADACkasse");
    CloseINI();
    }
    return 1;
    }


    if (strcmp(cmd, "/staatskasse", true)==0)
    {
    SCM(playerid,COLOR_ASKQ,"=================================================");
    format(tmpstring, sizeof(tmpstring), "Staatskasse: $%d", Kassen[Staatskasse]);
    SCM(playerid, COLOR_LIMEGREEN, tmpstring);
    SCM(playerid,COLOR_ASKQ,"=================================================");
    return 1;
    }


    public OnKassenUpdate()
    {
    new str[256];
    format(str, sizeof(str),"Kassen.ini");
    if(OpenINI(str))
    {
    SetKeyInt("Staatskasse",Kassen[Staatskasse]);
    SetKeyInt("Polizeikasse",Kassen[Polizeikasse]);
    SetKeyInt("ADACkasse",Kassen[ADACkasse]);
    SaveINI();
    CloseINI();
    }
    return 1;
    }


    So das ist alles^^
    //edit Datei noch angehängt

  • Doppelt Öffnen brauchst du nicht ^^


    Fehler
    OpenINI("Kassen.ini");
    if(OpenINI("Kassen.ini"))



    Wo wird die ausgeführt ?
    OnKassenUpdate()



    Zudem formatierst du unnötig.. ^^
    new str[256];
    format(str, sizeof(str),"Kassen.ini");
    if(OpenINI(str))
    {


    reicht auch


    if(OpenINI("Kassen.ini"))

    Mfg. BlackFoX_UD_ alias [BFX]Explosion