Tag
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;
}