Log Laden Frage

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
  • Ich wollte was machen undzwar ich brauche ein text dokument peer log wie nen kick log z.b dann
    soll er dort reinschreiben Füllvolumen=die werte dann soll er die werte bei serverstart laden und in ein 3d text schreiben
    kann mir jemand sagen wie das so funkioniert mit dem laden aus der datei?


    (E) Und wie ich da dann werte reinschreibe wenn neues füllvolumen zu kommt?
    (E) Gmx zu Serverstart
    (E) Was umformieliert

    2 Mal editiert, zuletzt von Quini ()

  • Nein ich meinte wie ich es mache das er ein txt dokument erstellt dort reinschreibt
    Füllvolumen=0 so und beim serverstart das lädt und wenn jemand das füll volumen z.b auf 100 stellt
    steht in dem text dokument 100 also soll er beim laden 100 laden und es somit in ein text dokument schreiben
    und wenn in der zeit was neues dazu kommt soll er eben z.b 100 auf 200 machen und das 3d label updaten das die
    neuen werte drinne stehen.


    (E) Ich versuche es nachem essen mal mit dini vlt klappt es ja ;)
    wie mache ich das denn mit dem updaten des 3d labels wenn was neues dazu kommt?

  • Zitat

    Was genau schaffst du denn nicht? Das auslesen aus der Datei ? DINI Tutorial


    Das müsstest du trotzdem doch noch beantworten.
    Schau dir den Link an,da siehst du,wie du DINI anwendest und in eine Datei schreibst bzw ausließt.


    Hast du denn schon irgendeine Idee wie du anfangen müsstest, nur für das auslesen bzw schreiben in eine Datei ?
    Bei OnGameModeInit auslesen,
    Bei OnGameModeExit in Datei schreiben
    Wenn das Volumen geändert wird, in Datei schreiben.


    Zu dem 3DText.
    Du musst natürlich erst das Label erstellen.Natürlich eine Variable dafür erstellen.
    Sobald dann irgendwann in deinem Script das Volumen geändert wird, eine neuen Text zuweisen. Ist doch relativ leicht.

  • So ich habe es nun erstellt:


    Code
    forward SaveSilo();
    forward LoadSilo();
    forward UpdaSilo();


    public SaveSilo()
    {
    format(string,sizeof(string),"/Daten/Silo.ini");
    if(fexist(string))
    {
    dini_IntSet(string,"Volumen",SiloInfo[Silo]);
    }
    Delete3DTextLabel(Siloa[0]);
    Delete3DTextLabel(Siloa[1]);
    return 1;
    }


    public LoadSilo()
    {
    format(string,sizeof(string),"/Daten/Silo.ini");
    if(!fexist(string))
    {
    dini_Create(string);
    dini_Set(string,"Volumen",SiloInfo[Silo]);
    return 1;
    }
    if(fexist(string))
    {
    SiloInfo[Silo] = dini_Int(string,"Volumen");
    format(string,sizeof(string),"Silo: %d",SiloInfo[Silo]);
    Siloa[0] = Create3DTextLabel(string,Gelb,-53.0389,112.1127,3.1172,20.0,0,1);
    Siloa[1] = Create3DTextLabel(string,Gelb,-63.6561,115.7869,3.1172,20.0,0,1);
    }
    return 1;
    }


    public UpdaSilo()
    {
    format(string,sizeof(string),"Silo: %d",SiloInfo[Silo]);
    Update3DTextLabelText(SiloInfo[Silo],Gelb,string);
    return 1;
    }


    enum Silo
    {
    Volumen
    };
    new SiloInfo[Silo];
    new Text3D:Siloa[2];


    Code
    bei Serverstart: LoadSilo();
    bei Gmx: SaveSilo();
    beim Updaten: SiloInfo[Silo] += 100;
    UpdaSilo();


    doch bekomme errors:


    Code
    :\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(739) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(976) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(989) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(994) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(995) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(1004) : error 032: array index out of bounds (variable "SiloInfo")
    C:\Users\Qini\Desktop\Server\gamemodes\LYGL.pwn(1005) : error 032: array index out of bounds (variable "SiloInfo")
  • Schon mal ein guter Anfang.
    public SaveSilo()
    {
    format(string,sizeof(string),"/Daten/Silo.ini");
    if(fexist(string))
    {
    dini_IntSet(string,"Volumen",SiloInfo[Volumen]); // Volumen,nicht Silo ! Silo ist das enum,Volumen der Eintrag!
    }
    Delete3DTextLabel(Siloa[0]);
    Delete3DTextLabel(Siloa[1]);
    return 1;
    }


    public LoadSilo()
    {
    format(string,sizeof(string),"/Daten/Silo.ini");
    if(!fexist(string))
    {
    dini_Create(string);
    // Einserseits ist hier SiloInfo[Silo] falsch,
    // Andererseits macht es keinen Sinn.Denn du setzt so das Volumen in der
    // Datei höchstwahrscheinlich auf 0 ( Außer die gibst vorher irgendwo n Volumen an )
    dini_Set(string,"Volumen", 100 );
    return 1;
    }
    if(fexist(string))
    {
    SiloInfo[Volumen] = dini_Int(string,"Volumen"); // Volumen,nicht Silo ! Silo ist das enum,Volumen der Eintrag!
    format(string,sizeof(string),"Silo: %d",SiloInfo[Volumen]); // Hier ebenfalls
    Siloa[0] = Create3DTextLabel(string,Gelb,-53.0389,112.1127,3.1172,20.0,0,1);
    Siloa[1] = Create3DTextLabel(string,Gelb,-63.6561,115.7869,3.1172,20.0,0,1);
    }
    return 1;
    }


    public UpdaSilo()
    {
    format(string,sizeof(string),"Silo: %d",SiloInfo[Volumen]); // Auch Volumen,nicht Silo
    Update3DTextLabelText(Siloa[0],Gelb,string); // Falscher 3DText.Variable Siloa weiss welcher 3DText
    Update3DTextLabelText(Siloa[1],Gelb,string); // Hier ebenfalls ändern
    return 1;
    }


    SiloInfo[Volumen] += 100; // hier muss auch Volumen

  • Gut noch eine frage:


    ist es ressourcend fressend wenn ich die werte beim arbeiten speichere das silo volumen + 100 geht in der ini und beim gmx?


    (E) Error beheben danke goldkiller

    Einmal editiert, zuletzt von Quini ()

  • Hast dir wohl nicht durchgelesen was Ich gepostet habe.


    Zitat

    Update3DTextLabelText(Siloa[0],Gelb,string); // Falscher 3DText.Variable Siloa weiss welcher 3DText
    Update3DTextLabelText(Siloa[1],Gelb,string); // Hier ebenfalls ändern


    Beim GMX reicht meistens völlig aus.Kannst es aber zwischendurch mal alle 10min speichern lassen ( für den Fall der Server crasht mal ). Ist aber eigentlich nicht nötig.