Dialog erscheint nicht/wird nicht angezeigt

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 bin noch neu im scripten und bitte euch das zu berücksichtige. Also zu meinem Problem ich wollte mir als erstes mal ein Login/Register System erstellen. So wie ich es habe müsste (soweit ich weiss) sich das register Fenster schonmal öffnen doch wenn ich das auf meinem Server testen möchte ist der Spieler einfach in LV und man kann auf Spawn drücken (??? habe garnichts in den gm mit spawnen oder so ...) aber es erscheint kein Fenster ...


    Hier ist einmal wie ich das bis jetzt gemacht habe:


    Ich hoffe ihr könnt mir helfen und Vielen Dank

  • Er meint das "%s"


    ändere einfach


    if(dini_Isset("/folder/file.ini", name))


    zu


    if(dini_Isset("/folder/%s.ini", name))



    das sollte dann so passen




    Was ist das?
    ----------------------------------------------
    Ein Platzhalter ist das Freie Feld was abfragt was denn da rein soll.
    Nehmen wir das als Beispiel.


    %s = String = "Text" also Name etc...
    Also er sucht im /folder/>>%s<< Nach dem Namen. (Ich denke mal "folder" steht für den Accounts Ordner)
    Also sucht er da ob die Datei (Der Name) schon existiert.
    So einfach ist das eigentlich.

  • Okay vielen Dank
    Ich habe die if-Abfragen (mit der file und so) mal als kommentar (also mit //) gemacht da mit der Dialog nicht angezeigt wird aber wenn im onPlayerConnect nur das ShowPlayDialog (ohne irgendwelche abfragen) drinne steht zeigt er mir diesen dennoch nicht an. Wenn ich das ShowPlayerDialog aber in einen Command kopiere kann ich ihn mir da anzeigen lassen.
    Muss ich im OnPlayerConnect etwas machen bevor mir der Dialog angezeit wird?

  • Zitat

    Muss ich im OnPlayerConnect etwas machen bevor mir der Dialog angezeit wird?

    Nein musst du nicht, dass der Dialog nicht angezeigt wird, kann jetzt an dem Ausklammern liegen.
    Andere Frage, hast du immer einen neuen Namen verwendet, weil du hast ja gescriptet wenn ein Account existiert das kein Dialog angezeigt wird, also musst du zum testen auch immer einen neuen Acc-Namen verwenden.

  • new name[] = "";


    Ich habe ja schon viel gesehen aber das, macht absolut keinen Sinn :D


    Du machst quasi folgendes:


    new name[1];


    Und jetzt verrate mir doch mal wie da ein Name von bis zu 24 cells reinpassen soll :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich bezweifle sehr das es an dem ausklammern oder dem Account liegt da ich noch nichts gemacht habe zum erstellen und somit kann man auch nicht in der Datei drin stehen und mein jetziger OnPlayerConnect Teil sieht so aus:

    public OnPlayerConnect(playerid)
    {
    new name[] = "";
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);


    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Enter your password below:", "Login", "Cancel");
    //Login/Register System
    /*if(dini_Exists("/Accounts/registriert.ini"))
    {
    if(dini_Isset("/Accounts/registriert.ini", name))
    {
    //Account existiert
    }
    else
    {
    //Account existiert nicht
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Test", "funzt es?", "Weiter", "Abbrechen");
    }
    }
    else
    {
    print("Die Datei Accounts.ini wurde nicht gefunden!");
    SendClientMessage(playerid, COLOR_RED, "Es gab einen Fehler bei den Accounts.\nBitte mache einen relog!");
    dini_Create("/Accounts/registriert.ini");
    }*/


    return 1;
    }


    Somit die Frage wie das da an dem ausklammern liegen kann und den namen habe ich da ja momentan gar nich verwendet ... Oder muss ich erst irgendwie dieses spawn ding ingame wegbekommen also es steht bei mir unten am rand ein pfeil nach links, einer nach rechts und spawn in schwazen buttons

  • Oh okay jetzt funktioniert es doch ich habe name im SendPlayerDialog nicht verwendet und auch sonst nur in der Zeile darunter deswegen ist jetzt meine Frage warum das funktioniert obwohl es nichts damit zu tun hat? Oder liege ich da gerade ganz falsch?

  • Wenn du das so über eine einzige Datei speicherst, ob ein Spieler registriert ist oder nicht, dann wirst du irgendwann (je nach dem wie viele Spieler sich registrieren), ziemlich schnell Probleme mit der Performance haben. Der LAdmin-Filterscript hatte (bzw. hat) seinerzeit, als er aktuell war, auch so etwas in der Art, nur mit IPs. Das führte bei vielen ziemlich schnell zu extremen Lags.


    Schreibe es daher so:
    public OnPlayerConnect(playerid)
    {
    new path[64];
    GetPlayerName(playerid, path, MAX_PLAYER_NAME);
    format(path, sizeof(path), "/Accounts/%s.ini", path);
    //Login/Register System
    if(dini_Exists(path))
    {
    //Account existiert
    }
    else
    {
    //Account existiert nicht
    ShowPlayerDialog(playerid, 0, 3, "Registration", "Bitte gebe ein Passwort für deinen Account ein.", "Weiter", "Abbrechen");
    }
    return 1;
    }