ATM Überweisen Dialog GUI

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,


    folgendes problem ich habe /transfer als dialog gemacht nur das problem wenn ich z.b. id 3 eingebe im dialog und danach 10$ dann überweist er immer an id 0 die 10$ und nicht an die id 3 x.X


    if(dialogid == DIALOG_ATM)
    {//ATM Menü
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Bitte Karte entnehmen!");
    return 1;
    }
    if(response==1)
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid,DIALOG_DEPOSIT,DIALOG_STYLE_INPUT,"ATM Menü - Einzahlen","Gib bitte den gewünschten {008000}Betrag {B0C4DE}ein:","Einzahlen","Abbrechen");
    }
    case 1:
    {
    ShowPlayerDialog(playerid,DIALOG_WITHDRAW,DIALOG_STYLE_INPUT,"ATM Menü - Auszahlen","Gib bitte den gewünschten {008000}Betrag {B0C4DE}ein:","Auszahlen","Abbrechen");
    }
    case 2:
    {
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du musst mindestens Level 3 sein!");
    return 1;
    }
    ShowPlayerDialog(playerid,DIALOG_TRANSFER1,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte die gewünschte Spieler {FFFF00}ID {B0C4DE}oder den {FFFF00}Namen {B0C4DE}ein:","Bestätigen","Abbrechen");
    }
    case 3:
    {
    format(string,sizeof(string),"Du hast {00FF00}%d$ {B0C4DE}auf deinem Konto.",PlayerInfo[playerid][pAccount]);
    ShowPlayerDialog(playerid,DIALOG_BALANCE,DIALOG_STYLE_MSGBOX,"ATM Menü - Kontostand",string,"Schließen","Schließen");
    PlayerPlaySound(playerid,1052,0.0,0.0,0.0);
    }
    }
    }


    if(dialogid == DIALOG_TRANSFER1)
    {//ATM Menü - Überweisen1
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Bitte Karte entnehmen!");
    return 1;
    }
    if(response==1)
    {
    giveplayerid = ReturnUser(inputtext);
    strtok(inputtext,idx);
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,COLOR_RED," Keine ID/Name!");
    ShowPlayerDialog(playerid,DIALOG_TRANSFER1,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte die gewünschte Spieler {FFFF00}ID {B0C4DE}oder den {FFFF00}Namen {B0C4DE}ein:","Bestätigen","Abbrechen");
    return 1;
    }
    if (IsPlayerConnected(giveplayerid))
    {
    ShowPlayerDialog(playerid,DIALOG_TRANSFER2,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte den gewünschten {008000}Betrag {B0C4DE}ein:","Überweisen","Abbrechen");
    }
    else
    {
    format(string,sizeof(string)," Dieser Spieler ist Offline.");
    SendClientMessage(playerid,COLOR_RED,string);
    ShowPlayerDialog(playerid,DIALOG_TRANSFER1,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte die gewünschte Spieler {FFFF00}ID {B0C4DE}oder den {FFFF00}Namen {B0C4DE}ein:","Bestätigen","Abbrechen");
    }
    return 1;
    }
    }


    if(dialogid == DIALOG_TRANSFER2)
    {//ATM Menü - Überweisen2
    if(response==0)
    {
    SendClientMessage(playerid,BLAU,"Bitte Karte entnehmen!");
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,COLOR_RED," Kein Betrag!");
    ShowPlayerDialog(playerid,DIALOG_TRANSFER2,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte den gewünschten {008000}Betrag {B0C4DE}ein:","Überweisen","Abbrechen");
    return 1;
    }
    moneys = strval(inputtext);
    GetPlayerName(giveplayerid,giveplayer,sizeof(giveplayer));
    GetPlayerName(playerid,sendername,sizeof(sendername));
    playermoney = PlayerInfo[playerid][pAccount] ;
    if (moneys < 1)
    {
    SendClientMessage(playerid,COLOR_RED," Ungültiger Betrag!");
    ShowPlayerDialog(playerid,DIALOG_TRANSFER2,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte den gewünschten {008000}Betrag {B0C4DE}ein:","Überweisen","Abbrechen");
    return 1;
    }
    if (moneys > 0 && playermoney >= moneys)
    {
    PlayerInfo[playerid][pAccount] -= moneys;
    PlayerInfo[giveplayerid][pAccount] += moneys;
    format(string,sizeof(string),"Du hast {141414}%d{008000}$ {FFFFFF}auf %s sein Konto überwiesen.",moneys,giveplayer,giveplayerid);
    PlayerPlaySound(playerid,1052,0.0,0.0,0.0);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string),"Du hast {141414}%d{008000}$ {FFFFFF}auf dein Konto von %s überwiesen bekommen.",moneys,sendername,playerid);
    SendClientMessage(giveplayerid,COLOR_WHITE,string);
    format(string,sizeof(string),"%s hat {141414}%d{008000}$ {FFFFFF}an %s überwiesen.",sendername,moneys,giveplayer);
    if(moneys >= 100000)
    {
    ABroadCast(COLOR_YELLOW,string,1);
    }
    printf("%s",string);
    PayLog(string);
    PlayerPlaySound(giveplayerid,1052,0.0,0.0,0.0);
    /*if(PlayerInfo[playerid][pConnectTime] > 200)
    {
    ConsumingMoney[playerid] = 1; PlayerGiveMoney(playerid,-500);
    SendClientMessage(playerid,COLOR_WHITE,"Überweisungsgebühr: 500$");
    }
    else if(PlayerInfo[playerid][pConnectTime] > 150)
    {
    ConsumingMoney[playerid] = 1; PlayerGiveMoney(playerid,-400);
    SendClientMessage(playerid,COLOR_WHITE,"Überweisungsgebühr: 400$");
    }
    else if(PlayerInfo[playerid][pConnectTime] > 100)
    {
    ConsumingMoney[playerid] = 1; PlayerGiveMoney(playerid,-300);
    SendClientMessage(playerid,COLOR_WHITE,"Überweisungsgebühr: 300$");
    }
    else if(PlayerInfo[playerid][pConnectTime] > 50)
    {
    ConsumingMoney[playerid] = 1; PlayerGiveMoney(playerid,-200);
    SendClientMessage(playerid,COLOR_WHITE,"Überweisungsgebühr: 200$");
    }
    else
    {
    ConsumingMoney[playerid] = 1; PlayerGiveMoney(playerid,-100);
    SendClientMessage(playerid,COLOR_WHITE,"Überweisungsgebühr: 100$");
    }*/
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED," Du hast nicht soviel Geld!");
    ShowPlayerDialog(playerid,DIALOG_TRANSFER2,DIALOG_STYLE_INPUT,"ATM Menü - Überweisen","Gib bitte den gewünschten {008000}Betrag {B0C4DE}ein:","Überweisen","Abbrechen");
    }
    return 1;
    }
    }


    Mfg Snake1990

  • Fehler seh ich jetzt keinen, aber das ganze wird mit mehreren Spielern nicht funktionieren. Dafür brauchst du schon für jeden Spieler ein giveplayerid. Sprich: new giveplayerid[MAX_PLAYERS]; und dann eben immer giveplayerid[playerid].
    Machs mal mit nem Array vllt funktionierts ja dann.

  • Wo wird denn dein giveplayerid deklariert?
    dein zweiter fehler ist glaube ich, dass du erst den Rückgabewert von ReturnUSer in giveplayerid und danach strtok ausführst, oder was soll dieses strtok bedeuten?


    ja ich habs halt dazu gemacht ich dachte es löst mein problem des war halt voher ein cmd und ich musste daraus ja 2 dialoge machen einmal für die ID/Name des spielers und dann für den Betrag der überwiesen werden soll also mit einzahlen und so hab ichs locker hinbekommen ich wusste das das probleme macht :D und 1 dialog geht ja nicht weil wenn ich dann 1 eingebe überweise ich 1$ an ID1 wenn ich 2 eingebe 2$ an ID2 usw... :D


    eviltoastbrot ich geh jetzt ersma schlafen nachem aufstehen werd ich dein rat versuchen umzusetzten mal schauen ob ich da was hinbekomme x.X


    Edit:
    new idx;
    new string[128];
    new giveplayerid,moneys,playermoney;
    new sendername[MAX_PLAYER_NAME];
    new giveplayer[MAX_PLAYER_NAME];


    Edit: ich weiß nicht irgendwie überweißt der immer noch nur an id 0 x.X


    EDIT: kann geclosed werden habs hinbekommen der wusste beim 2ten dialog die ID nicht mehr hab sie mit PVarInt gesaved damit er sie beim 2 dialog weiß /Close


    Mfg Marcel & GN8