Variablenproblem

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
  • Tag :D


    Ich bin momentan an einem Fraktionskassen-System dran. Das ganze soll in Dialogen ablaufen und mit dini funktionieren.
    Sowohl das Einzahlen in die Fraktionskasse, als auch den Aktuellen Kassenstand abfragen funktioniert ohne Probleme.
    Die dritte Funktion beinhaltet das Auszahlen eines Betrages an einen beliebigen Spieler.
    Und genau da hat das System anscheinend ein Problem.


    Problem: Wenn ich als Leader auf "Auszahlen" gehe, werde ich nach dem Namen des Spielers gefragt, der das Geld erhalten soll. Nach richtiger Eingabe eines Spielernamens, werde ich auf einen neuien Dialog weitergeleitet, welcher verlangt, die Höhe des Betrages einzugeben. Wird dieser korrekt eingegeben, sollte das Geld normalerweise an den Spieler, im oben angegebenen Dialog, geschickt werden. Dies erfolgt aber nicht, die Nachricht, das das Geld an den Spieler gegeben wird, sowie der Abzug des Geldes in der Fraktionskasse erfolgt dennoch.


    Ich hoffe ihr könnt den Fehler finden.


    Hier der Code:
    //**Defines**//
    #define DIALOG_KASSEN_MEMBER 10
    #define DIALOG_KASSEN_LEADER 11
    #define DIALOG_KASSEN_EINZAHLEN 12
    #define DIALOG_KASSEN_STAND 13
    #define DIALOG_KASSEN_AUSZAHLEN 14
    #define DIALOG_KASSEN_AUSZAHLEN_SPIELER 15


    //**Dialoge**//
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new aName[MAX_PLAYER_NAME],SpielerName; //Habe ich hier oben definiert, damit in jedem Dialog darauf zugegriffen werden kann.
    if(dialogid == DIALOG_KASSEN_MEMBER) {
    if(response == 1) {
    new kPfad[50];
    format(kPfad,sizeof(kPfad),"Fraktionskasse.dini");
    switch(listitem) {
    case 0: {
    switch(pInfo[playerid][Fraktion]) {
    case 1: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    }
    case 2: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    }
    }
    }
    case 1: {
    switch(pInfo[playerid][Fraktion]) {
    case 1: {
    new msg[100];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_STAND,DIALOG_STYLE_MSGBOX,"Fraktionskasse - Kassenstand",msg,"Zurück","Einzahlen");
    }
    case 2: {
    new msg[100];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_STAND,DIALOG_STYLE_MSGBOX,"Fraktionskasse - Kassenstand",msg,"Zurück","Einzahlen");
    }
    }
    }
    }
    }
    }
    if(dialogid == DIALOG_KASSEN_LEADER) {
    if(response == 1) {
    new kPfad[50];
    format(kPfad,sizeof(kPfad),"Fraktionskasse.dini");
    switch(listitem) {
    case 0: {
    switch(pInfo[playerid][Leader]) {
    case 1: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    }
    case 2: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    }
    }
    }
    case 1: {
    switch(pInfo[playerid][Leader]) {
    case 1: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$\nAn welchen Spieler möchtest du Geld auszahlen?",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Eingabe","Zurück");
    }
    case 2: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$\nAn welchen Spieler möchtest du Geld auszahlen?",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Eingabe","Zurück");
    }
    }
    }
    case 2: {
    switch(pInfo[playerid][Leader]) {
    case 1: {
    new msg[100];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_STAND,DIALOG_STYLE_MSGBOX,"Fraktionskasse - Kassenstand",msg,"Zurück","Einzahlen");
    }
    case 2: {
    new msg[100];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_STAND,DIALOG_STYLE_MSGBOX,"Fraktionskasse - Kassenstand",msg,"Zurück","Einzahlen");
    }
    }
    }
    }
    }
    }
    if(dialogid == DIALOG_KASSEN_EINZAHLEN) {
    if(response == 0) {
    if(pInfo[playerid][Leader] >= 1) {
    return ShowPlayerDialog(playerid,DIALOG_KASSEN_LEADER,DIALOG_STYLE_LIST,"Fraktionskasse - Leadermenü","Einzahlen\nAuszahlen\nKassenstand","Auswählen","Abbrechen");
    }
    else {
    return ShowPlayerDialog(playerid,DIALOG_KASSEN_MEMBER,DIALOG_STYLE_LIST,"Fraktionskasse - Membermenü","Einzahlen\nKassenstand","Auswählen","Abbrechen");
    }
    }
    if(response == 1) {
    new pName[MAX_PLAYER_NAME],kPfad[50],money;
    GetPlayerName(playerid,pName,sizeof(pName));
    format(kPfad,sizeof(kPfad),"Fraktionskasse.dini");
    switch(pInfo[playerid][Fraktion]) {
    case 1: {
    if(sscanf(inputtext,"d",money)) {
    new msg[128];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    return SendClientMessage(playerid,GRAU,"Bitte gebe einen gültigen Wert ein.");
    }
    new Gesamt = dini_Int(kPfad,"SEK") + money;
    dini_IntSet(kPfad,"SEK",Gesamt);
    new msg[128];
    GivePlayerMoney(playerid,-money);
    format(msg,sizeof(msg),"[Fraktion] Spieler %s gab %d$ in die Fraktionskasse",pName,money);
    SendFraktionMessage(pInfo[playerid][Fraktion],ORANGE,msg);
    }
    case 2: {
    if(sscanf(inputtext,"d",money)) {
    new msg[128];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    return SendClientMessage(playerid,GRAU,"Bitte gebe einen gültigen Wert ein.");
    }
    new Gesamt = dini_Int(kPfad,"Terroristen") + money;
    dini_IntSet(kPfad,"Terroristen",Gesamt);
    new msg[128];
    GivePlayerMoney(playerid,-money);
    format(msg,sizeof(msg),"[Fraktion] Spieler %s gab %d$ in die Fraktionskasse",pName,money);
    SendFraktionMessage(pInfo[playerid][Fraktion],ORANGE,msg);
    }
    }
    }
    }
    if(dialogid == DIALOG_KASSEN_STAND) {
    new kPfad[50];
    format(kPfad,sizeof(kPfad),"Fraktionskasse.dini");
    if(response == 1) {
    if(pInfo[playerid][Leader] >= 1) {
    return ShowPlayerDialog(playerid,DIALOG_KASSEN_LEADER,DIALOG_STYLE_LIST,"Fraktionskasse - Leadermenü","Einzahlen\nAuszahlen\nKassenstand","Auswählen","Abbrechen");
    }
    else if(pInfo[playerid][Fraktion] >= 1) {
    return ShowPlayerDialog(playerid,DIALOG_KASSEN_MEMBER,DIALOG_STYLE_LIST,"Fraktionskasse - Membermenü","Einzahlen\nKassenstand","Auswählen","Abbrechen");
    }
    }
    if(response == 0) {
    switch(pInfo[playerid][Fraktion]) {
    case 1: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    }
    case 2: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_EINZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Einzahlen",msg,"Eingabe","Zurück");
    }
    }
    }
    }
    if(dialogid == DIALOG_KASSEN_AUSZAHLEN) {
    new kPfad[50];
    format(kPfad,sizeof(kPfad),"Fraktionskasse.dini");
    if(response == 0) {
    ShowPlayerDialog(playerid,DIALOG_KASSEN_LEADER,DIALOG_STYLE_LIST,"Fraktionskasse - Leadermenü","Einzahlen\nAuszahlen\nKassenstand","Auswählen","Abbrechen");
    }
    if(response == 1) {
    switch(pInfo[playerid][Leader]) {
    case 1: {
    if(sscanf(inputtext,"u",SpielerName)) {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$\nAn welchen Spieler möchtest du Geld auszahlen?",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Eingabe","Zurück");
    return SendClientMessage(playerid,GRAU,"Bitte gib einen richtigen Spieler an.");
    }
    GetPlayerName(SpielerName,aName,sizeof(aName));
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$\nGeldübergabe an Spieler: %s\nGeben sie den zu übergebenden Betrag an:",dini_Int(kPfad,"SEK"),aName);
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN_SPIELER,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Auszahlen","Zurück");
    }
    case 2: {
    if(sscanf(inputtext,"u",SpielerName)) {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$\nAn welchen Spieler möchtest du Geld auszahlen?",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Eingabe","Zurück");
    return SendClientMessage(playerid,GRAU,"Bitte gib einen richtigen Spieler an.");
    }
    GetPlayerName(SpielerName,aName,sizeof(aName));
    new msg[128];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$\nGeldübergabe an Spieler: %s\nGeben sie den zu übergebenden Betrag an:",dini_Int(kPfad,"Terroristen"),aName);
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN_SPIELER,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Auszahlen","Zurück");
    }
    }
    }
    }
    if(dialogid == DIALOG_KASSEN_AUSZAHLEN_SPIELER) {
    new kPfad[50],money;
    format(kPfad,sizeof(kPfad),"Fraktionskasse.dini");
    if(response == 0) {
    switch(pInfo[playerid][Leader]) {
    case 1: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$\nAn welchen Spieler möchtest du Geld auszahlen?",dini_Int(kPfad,"SEK"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Eingabe","Zurück");
    }
    case 2: {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$\nAn welchen Spieler möchtest du Geld auszahlen?",dini_Int(kPfad,"Terroristen"));
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Eingabe","Zurück");
    }
    }
    }
    if(response == 1) {
    switch(pInfo[playerid][Leader]) {
    case 1: {
    if(sscanf(inputtext,"d",money)) {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: S.E.K.\nAktueller Kassenstand: %d$\nGeldübergabe an Spieler: %s\nGeben sie den zu übergebenden Betrag an:",dini_Int(kPfad,"SEK"),aName);
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN_SPIELER,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Auszahlen","Zurück");
    return SendClientMessage(playerid,GRAU,"Bitte gebe eine gültigen Wert an.");
    }
    GivePlayerMoney(SpielerName,money);
    new msg[128],pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(msg,sizeof(msg),"[Fraktion] Leader %s gab Spieler %s %d$ aus der Fraktionskasse",pName,aName,money);
    return SendFraktionMessage(1,ORANGE,msg);
    }
    case 2: {
    if(sscanf(inputtext,"d",money)) {
    new msg[150];
    format(msg,sizeof(msg),"Fraktion: Terroristen\nAktueller Kassenstand: %d$\nGeldübergabe an Spieler: %s\nGeben sie den zu übergebenden Betrag an:",dini_Int(kPfad,"Terroristen"),aName);
    ShowPlayerDialog(playerid,DIALOG_KASSEN_AUSZAHLEN_SPIELER,DIALOG_STYLE_INPUT,"Fraktionskasse - Auszahlen",msg,"Auszahlen","Zurück");
    return SendClientMessage(playerid,GRAU,"Bitte gebe eine gültigen Wert an.");
    }
    GivePlayerMoney(SpielerName,money);
    new msg[128],pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(msg,sizeof(msg),"[Fraktion] Leader %s gab Spieler %s %d$ aus der Fraktionskasse",pName,aName,money);
    return SendFraktionMessage(2,ORANGE,msg);
    }
    }
    }
    }
    return 1;
    }

  • Problem: Wenn ich als Leader auf "Auszahlen" gehe, werde ich nach dem Namen des Spielers gefragt, der das Geld erhalten soll. Nach richtiger Eingabe eines Spielernamens, werde ich auf einen neuien Dialog weitergeleitet, welcher verlangt, die Höhe des Betrages einzugeben. Wird dieser korrekt eingegeben, sollte das Geld normalerweise an den Spieler, im oben angegebenen Dialog, geschickt werden. Dies erfolgt aber nicht, die Nachricht, das das Geld an den Spieler gegeben wird, sowie der Abzug des Geldes in der Fraktionskasse erfolgt dennoch.

    Also du klickst auf Auszahlen, wirst nach dem Namen gefragt.
    Dann gibst du das Geld ein.
    Dann erhält jeder eine Meldung, EGAL ob die Eingabe eine Summe ist oder nicht?

    Miete mich (nicht) :love:

  • So wie ich das jetzt sehe soll für den Spieler eine ID angegeben werden. Machs doch mit ReturnUser, dann kannste Namen oder ID eingeben.
    Steht denn dann auch der exakte Spielername dort?


    Ich versteh dich jetzt nicht ganz.
    Im Dialog "DIALOG_KASSEN_AUSZAHLEN" wird von dem Leader ein Spielername angegeben. Dieser kann sowohl als ID als auch als Name eingetragen werden.
    Im Dialog "DIALOG_KASSEN_AUSZAHLEN_SPIELER" wird von dem Leader ein Geldbetrag eingetragen, der dem Spieler (normalerweise) dann gegeben wird.


    Der ganze exakte Spielername wird am Ende als Nachricht mit ausgegeben. Siehe in Zeile 247|248.


    //edit: Kann es vllt möglich sein, dass die Variable SpielerName im Dialog "DIALOG_KASSEN_AUSZAHLEN" zwar als Speicherort für die ID des Spielers genommen wird, aber im Dialog "DIALOG_KASSEN_AUSZAHLE_SPIELER" wieder den Wert 1 erhält ?

    Einmal editiert, zuletzt von Darklight ()