Sscanf im Dialog

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 Versuche grade ein Safesystem.
    Ich möchte das bei dem Befehl /Versuch ein
    stock AnSafe(playerid)
    {
    for(new i = 0;i < MAX_SAFE; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Safe[i][X],Safe[i][Y],Safe[i][Z]))
    {
    print("Stock 1");
    return i;
    }
    }
    print("Stock 2");
    return -1;
    }


    ocmd:versuch(playerid,params[])
    {
    new u = AnSafe(playerid);
    if(u == -1)return SendClientMessage(playerid,GRAU,"Du bist an keinem Safe");
    ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:","Bestätigen","Abbrechen");
    return 1;
    }
    Dialog Kommt wo man ein Wort eingeben muss wenn dies richtig ist soll
    eine Nachricht kommen
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_SAFE:
    {
    if(response)
    {
    print("vor new");
    new u = AnSafe(playerid),Wort[50];
    print("news");
    if(sscanf(inputtext,"s[50]",Wort))return ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:","Bestätigen","Abbrechen");
    print("Nach Sccanf");
    if(strlen(Wort) > 50)return ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:\nMaximal 50Zeichen","Bestätigen","Abbrechen");
    print("Nach strlen");
    if(Safe[u][Loesung] == strval(Wort))
    {
    print("Nach if");
    SendClientMessage(playerid,HELLBLAU,"Du hast das Wort herrausgefunden");
    }
    else SendClientMessage(playerid,WRONGCMD,"Das Wort war leider falsch. Viel Glück beim nächsten mal."); print("else");
    }
    }
    }
    return 1;
    }


    Wie man sieht print ich das weil ich es versuche
    Und alles geht außer das unter OnDialog


    Habe es nun mal in einem Befehl
    Da ist es nun so das es immer sagt das das Wort falsch ist
    ocmd:versuch(playerid,params[])
    {
    new u = AnSafe(playerid),Wort[50];
    if(u == -1)return SendClientMessage(playerid,GRAU,"Du bist an keinem Safe");
    if(sscanf(params,"s[50]",Wort))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /Verusch [Wort]");
    if(strlen(Wort) > 50)return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /Verusch [Wort max. 50Zeichen]");
    if(Safe[u][Loesung] == strval(Wort))
    {
    print("Nach if");
    SendClientMessage(playerid,HELLBLAU,"Du hast das Wort herrausgefunden");
    }
    else return SendClientMessage(playerid,WRONGCMD,"Das Wort war leider falsch. Viel Glück beim nächsten mal.");
    //ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:","Bestätigen","Abbrechen");
    return 1;
    }


    IPrototypeI:
    @Music4You:
    Makiere euch mal da ihr davon ja viel ahnung habt

  • Warum eigentlich so umständlich? Du kannst das doch viel einfacher machen:


    switch(dialogid)
    {
    case DIALOG_SAFE:
    {
    if(response)
    {
    print("vor new");
    new u = AnSafe(playerid);
    print("news");
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:","Bestätigen","Abbrechen");
    print("Nach nichts eingabe");
    if(strlen(inputtext) > 50)return ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:\nMaximal 50Zeichen","Bestätigen","Abbrechen");
    print("Nach 50 Zeichen");
    if(!strcmp(Safe[u][Loesung], inputtext, true))
    {
    print("Nach if");
    SendClientMessage(playerid,HELLBLAU,"Du hast das Wort herrausgefunden");
    }
    else SendClientMessage(playerid,WRONGCMD,"Das Wort war leider falsch. Viel Glück beim nächsten mal."); print("else");
    }
    }
    }

    3 Mal editiert, zuletzt von T4125Gamer ()

  • Also ich weiß ja nicht was du machen willst , jedoch so klappt das nicht wie du willst.




    Ich hab dir mal eine Funktion geschrieben damit kannst du das ganze abgleichen
    CheckPass(cstring[],wstring[])return ((strlen(cstring) < 50 && cstring[0])?((!strcmp(cstring,wstring,true)?(1):(2))):(0));
    Verwendung
    switch(CheckPass(inputtext,Safe[AnSafe(playerid)][Loesung])){
    case 0:ShowPlayerDialog(playerid,DIALOG_SAFE,DIALOG_STYLE_INPUT,"Safe Lösungswort","Bitte gebe nun das von dir geschätze Lösungswort ein:","Bestätigen","Abbrechen");
    case 1:SendClientMessage(playerid,HELLBLAU,"Du hast das Wort herrausgefunden");
    case 2:SendClientMessage(playerid,WRONGCMD,"Das Wort war leider falsch. Viel Glück beim nächsten mal.");
    }