Problem mit Code abfrage

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 liebe SA:MP Community!
    Mir ist schon öfter aufgefallen das in diesem Forum ein
    Thread schnell übersehen wird, aber das tut jetzt nichts zur Sache!


    Ich habe ein Problem mit der Abfrage von einem Code.
    Es handelt sich um eine Abfrage mit der Kontonummer.


    Wenn die Kontonummer stimmt dann soll der nächste Dialog gezeigt werden.
    Wenn nicht dann soll der "Ungültig-Dialog" gezeigt werden.


    Jedoch wird mir immer nur der "Ungültig-Dialog" angezeigt bei allem was ich eingebe.


    Hier mal der Code:
    if(dialogid == Dialog_Transfer)//Kontonummer angeben
    {
    if(strlen(inputtext))
    {
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Bitte gibt die Kontonummer ein !");
    return 1;
    }
    new Number = strval(inputtext);
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Bitte gibt die Kontonummer ein !");
    return 1;
    }
    for(new i = 0; i < MAX_PLAYERS; i++)//i = Alle Spieler nach der Funktion abfragen
    { //Wenn irgendeine Kontonummer mit der Eingabe übereinstimmt
    if(Number != SpielerInfo[i][KontoNummer])////=====> ABFRAGE = BUGGY
    {
    ShowPlayerDialog(playerid,Dialog_Transfer,DIALOG_STYLE_INPUT,"Überweisungsfehler","Überweisung fehlgeschlagen!\nKontonummer ist ungültig!\n\nBitte gib die Kontonummer des Empfängers ein","Weiter","Abbrechen");
    }
    }//Geld angeben - Dialog anzeigen!
    ShowPlayerDialog(playerid,Dialog_Transfer2,DIALOG_STYLE_INPUT,"Überweisung","Gib hier den Betrag an den du überweisen möchtest","Unterschreiben","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid, Dialog_Terminal, DIALOG_STYLE_LIST,"Bankterminal","Einzahlen\nAuszahlen\nÜberweisen\nKontoauszug","OK","Zurück");
    }
    }
    }


    Leider sind viele nur zum Helfen bereit gegen eine Gegenleistung(Geld)!
    Bitte helft mir mit diesen Problem


    Danke für die Antworten :thumbup:

  • Ich kenn mich jetzt zwar nicht so im Bereich dialoge aus, aber mich würds interessieren wofür du die For-Schleife gemacht hast? ?(
    Warum jeden Spieler einzelnd abfragen und nicht nur Playerid? playerid reicht doch auch:


    if(Number != SpielerInfo[playerid][KontoNummer])



    Ich glaube die Forschleife ist völlig unnötig. Denn immer wenn du eine Kontunummer eingitbts ist es ja immer die falsche, da jeder Spieler eine andere Kontuunummer hat.
    deswegen ist es immer falsch.
    mach die For-schleife weg und frag nach der Kontunummer von playerid und nicht von allen spielern

    Sag mir mal bescheid ob es geklappt hat ;)

    mfg timtrucker

    Einmal editiert, zuletzt von Timtrucker ()

  • Schaue mal in der Schleife da stimmt was nicht.


    Ja die for schleife soll alle Spieler agfragen
    also die Abfrage sollte so heißen
    "Wenn Eingabe mit KontoNummer von irgendeinen Spieler ungleich ist"


    Oder täusch ich mich da ?
    Weil man soll ja nicht seine eigene Kontonummer angeben, sondern die an die man das Geld
    senden will

    Einmal editiert, zuletzt von MizuXV ()

  • Versuch es mal so


    for(new i = 0; i < MAX_PLAYERS; i++)//i = Alle Spieler nach der Funktion abfragen
    { //Wenn irgendeine Kontonummer mit der Eingabe übereinstimmt
    if(Number == SpielerInfo[i][KontoNummer])////=====> ABFRAGE = BUGGY
    {

    ShowPlayerDialog(playerid,Dialog_Transfer2,DIALOG_STYLE_INPUT,"Überweisung","Gib hier den Betrag an den du überweisen möchtest","Unterschreiben","Abbrechen");
    return 1;
    }
    }//Geld angeben - Dialog anzeigen!
    ShowPlayerDialog(playerid,Dialog_Transfer,DIALOG_STYLE_INPUT,"Überweisungsfehler","Überweisung fehlgeschlagen!\nKontonummer ist ungültig!\n\nBitte gib die Kontonummer des Empfängers ein","Weiter","Abbrechen");


    Du solltest aber darauf achten, dass man keine Kontonummer doppelt benutzen kann.

  • Probioer doch einfach mal wirklich die schleife wegzulassen und statt der Variablke "i" einfach playerid schreiben. Also Spielerinfo[playerid][Kontunummer]
    Es wäre ein fehler wenn du alle abfragen würdest. Denn nur eine ist ja richtig und das ist die von playerid. Aber wenn du alle abfragst ist da der rest falsch. Und ich denke mal das wird dann auch der Fehler sein.


    Probier das mal:


    if(dialogid == Dialog_Transfer)//Kontonummer angeben
    {
    if(strlen(inputtext))
    {
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Bitte gibt die Kontonummer ein !");
    return 1;
    }
    new Number = strval(inputtext);
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Bitte gibt die Kontonummer ein !");
    return 1;
    }
    if(Number != SpielerInfo[playerid][KontoNummer])
    {
    ShowPlayerDialog(playerid,Dialog_Transfer,DIALOG_STYLE_INPUT,"Überweisungsfehler","Überweisung fehlgeschlagen!\nKontonummer ist ungültig!\n\nBitte gib die Kontonummer des Empfängers ein","Weiter","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,Dialog_Transfer2,DIALOG_STYLE_INPUT,"Überweisung","Gib hier den Betrag an den du überweisen möchtest","Unterschreiben","Abbrechen");
    }
    }
    else
    {
    ShowPlayerDialog(playerid, Dialog_Terminal, DIALOG_STYLE_LIST,"Bankterminal","Einzahlen\nAuszahlen\nÜberweisen\nKontoauszug","OK","Zurück");
    }
    }
    }


    hab das mal so überarbeitet. PRobiers mal aus :D

  • Wieso wollt ihr alle playerid?
    Ich glaube das soll ein Überweisungssystem werden also sie will Geld an eine andere Kontonummer senden.
    Da kann man doch nicht abfragen ob die kontonummer an der ich es senden will seine eigene ist?

  • Wieso wollt ihr alle playerid?
    Ich glaube das soll ein Überweisungssystem werden also sie will Geld an eine andere Kontonummer senden.
    Da kann man doch nicht abfragen ob die kontonummer an der ich es senden will seine eigene ist?

    Du hast es erfasst ^^ Ich wills ja nicht an mich senden wie oben schon geschrieben oO