Dini Problem

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
  • Servus Leute.
    Ich wollte mal versuchen zu machen, das wenn man sich einloggt das man die Sprache auswählen kann und der rest im Script dann dieser Sprache angepasst wird.
    Laut dem Dini Topic würde es so gehen.


    new SprachAbfrage;


    Da wo man sich entscheidet für die Sprache


    SprachAbfrage = dini_IntSet(Spielerdatei, "Sprache", 1);
    und
    SprachAbfrage = dini_IntSet(Spielerdatei, "Sprache", 0);


    Und dann habe ich es so in die Commands eingefügt, aber es will nicht funktionieren immer komme ich zum deutschen


    if(SprachAbfrage == 1)
    {
    new namess[30], string[255];
    GetPlayerName(playerid,namess,sizeof(namess));
    format(string, sizeof(string), "{F2FF00}Willkommen {FF0000}%s,{F2FF00}\n\nDu bist noch nicht {FF2508}registriert\n{F2FF00}Bitte gebe dein gewünschtes Passwort ein\num dir einen Account zu erstellen", namess);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration", string,"Registrieren","Disconnect");
    }
    else if(SprachAbfrage == 0)
    {
    new namess[30], string[255];
    GetPlayerName(playerid,namess,sizeof(namess));
    format(string, sizeof(string), "{F2FF00}Welcome {FF0000}%s,{F2FF00}\n\nYou are not {FF2508}registered\n{F2FF00}Please enter your desired password\n to create you an account.", namess);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registration", string,"Registrieren","Disconnect");
    }


    Bitte um Hilfe


    //Link

    KleineHilfe 2.0

  • Hast Du denn in der Player Array auch sowas wie Sprache definiert?


    Wenn ja, musst Du das ganze ja auch laden lassen...



    new SprachAbfrage;


    Ist eigentlich unnötig..
    Mach einfach ne Abfrage wi z.b


    if(dini_Int(Spielerdatei,"Sprache") == 1)


  • Du hast recht das Laden fehlt. doch anstaat jedesmal die datei öffen und durchsuchen zulassen wäre es doch besser eine Variable zum zwichenspeichern zu nehmen.

  • Richtig.
    Ich wollte ihm damit nur einen kleinen Anstupser bzw. einen Tipp geben wie er es machen könnte..
    Ich kenne leider seine Pawn Kenntnisse nicht, daher weis ich auch nicht ob er weis was zwischenspeichern ist bzw, wie es funktioniert.


    B2T:
    Also, wenn Du die Spielerdatei lädst, machste z.b

    Spieler[playerid][Sprache] = dini_Int(Path,"Sprache");
    Und anstatt das Du die Zeile "Sprache" direkt in die Datei schreibst, könntest Du bei der Auswahl


    Spieler[playerid][Sprache] = 1;
    Oder ebend
    Spieler[playerid][Sprache] = 0;


    Beim Speichern des Spielers, zum Beispiel wenn er den Server verlässt,


    dini_IntSet(Path,"Sprache",Spieler[playerid][Sprache]);
    machen.


    Somit musst Du die Datei nicht unnötigerweise dauernd öffnen sondern nur wenn der Spieler connectet und disconnectet.


    #e: Natürlich musst Du die Variablen Deinem Script anpassen. ;)


  • Dank euch, wenn dann aber wohl dini_Get oder nicht!?

    KleineHilfe 2.0

  • Ich wollte ihm damit nur einen kleinen Anstupser bzw. einen Tipp geben wie er es machen könnte..
    Ich kenne leider seine Pawn Kenntnisse nicht, daher weis ich auch nicht ob er weis was zwischenspeichern ist bzw, wie es funktioniert.



    Aber der Sinn und Zweck dahinter ist doch der gleiche?!


    Ich habe das mit der SprachAbfrage auch deshalb gemacht, damit ich bei der if abfrage nicht überall

    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    machen muss welches ich aber machen muss wenn ich
    if(dini_Int(Spielerdatei,"Sprache") == 1)
    nutze.. Muss man das wirklich bei jeder if Abfrage hin setzen?


    Wobei
    SprachAbfrage = dini_Int("Spielerdatei", "Sprache");
    if(SprachAbfrage == 1)
    {
    return 1;
    }
    doch reichen sollte, aber dann muss ich ja auch an die Spielerdatei kommen
    //Edit
    //Edit Sprach
    //Edit 2
    //Edit 3

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()

  • Ich benutze jetzt erfolgreich
    if(Spieler[playerid][Sprache] == 1)


    Aber angenommen ich habe das jetzt in einem FS und möchte es auch in einem GameMode abrufen lassen sprich die Funktion Sprache dann muss ich das doch mit SetPVarInt machen und dementsprechend im GM aufrufen lassen und abfragen lassen...Dabei komme ich doch auch nicht drum herum bei jeder Abfrage die Acc Datei aufzumachen..Oder kann man das im GM wieder umschreiben GetPVar... und das dann in
    Spieler[playerid][Sprache] wieder um wandeln.

    KleineHilfe 2.0

  • Ne wieso?
    Du kannst doch einfach wenn der Spieler gealden wird SetPVarInt(playerid,"Sprache",dini_Int(Datei,"Sprache")): machen?
    Das kannst Du dann auch mit Filterscripts abrufen lassen...
    Musst dann halt nur im GM und Filterscript die PVar "Sprache" haben und damit arbeiten ;)