Banksystem (Abheben von der Bank)->begrenzung bis 0 dollar

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 ich habe mal ein Banksystem angefangen bleibe aber beim abhebe vorgang hängen
    es funktioniert nicht ich habe den error array must be indexed bei inputtext aber beim register system hats auch funktioniert:D
    hier der code




    if(dialogid == DIALOG_BANK_ABHEBEN)
    {
    if(response)
    {
    if(strlen(inputtext)>0)
    {
    //wenn grösser >0
    new string[128];//habe das geld zwischengespeichert aber das ist absicht:D
    new bgeld = sInfo[playerid][bankgeld];
    bgeld = bgeld-inputtext;
    format(string,sizeof(string),"Abgehoben: %i$ Neuer Kontostand: %i$",inputtext,bgeld);
    SCM(playerid,CL_GELB,string);
    sInfo[playerid][bankgeld] = bgeld;
    }
    else
    {
    //wenn weniger
    ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    }
    }
    else
    {
    //Abbruch
    return 1;
    }
    }
    return 1;

    Einmal editiert, zuletzt von Jane ()

  • bgeld = bgeld-strval(inputtext);
    format(string,sizeof(string),"Abgehoben: %i$ Neuer Kontostand: %i$",strval(inputtext),bgeld);


    inputtext ist ein string. um ihn zu einen integer umzuwandeln also eine Zahl musst du strval benutzen

  • if(dialogid == DIALOG_BANK_ABHEBEN){
    if(!response)return 1;
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    if(sInfo[playerid][bankgeld]<strval(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    new string[128];
    format(string,128,"Abgehoben: %i$ Neuer Kontostand: %i$",strval(inputtext),sInfo[playerid][bankgeld] -= strval(inputtext)),SCM(playerid,CL_GELB,string);
    return sInfo[playerid][bankgeld] = sInfo[playerid][bankgeld] -= strval(inputtext);
    }


    Alles schön kurz gehalten, funktioniert eigentlich auch ;)

    Einmal editiert, zuletzt von AirM4X () aus folgendem Grund: strval() hinzugefügt!

  • @[NGD]Manne: Muss das nicht eher so?:
    if(dialogid == DIALOG_BANK_ABHEBEN){
    if(!response)return 1;
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    if(sInfo[playerid][bankgeld]<strval(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    new string[128];
    format(string,128,"Abgehoben: %i$ Neuer Kontostand: %i$",strval(inputtext),sInfo[playerid][bankgeld] -= strval(inputtext)),SCM(playerid,CL_GELB,string);
    return sInfo[playerid][bankgeld] -= strval(inputtext);
    }
    -> strval(inputtext) - auch bei der Message und beim Abziehen..

  • also der code sieht bis jetzt so aus aber die abfrage wie viel der hat und was er eingegeben hat funktioniert nicht :(


    if(dialogid == DIALOG_BANK_ABHEBEN)
    {
    if(response)
    {
    if(strlen(inputtext)>0)
    {
    //wenn grösser >0
    new string[128];
    if(sInfo[playerid][bankgeld] >= strval(inputtext))return SendClientMessage(playerid,CL_KNALLROT,"ERROR: Du hast nicht genügend Geld!");
    new bgeld = sInfo[playerid][bankgeld];
    bgeld = bgeld-strval(inputtext);
    format(string,sizeof(string),"Abgehoben: %i$ Neuer Kontostand: %i$",strval(inputtext),bgeld); SCM(playerid,CL_GELB,string);
    printf("%i %i",inputtext,bgeld);
    sInfo[playerid][bankgeld] = bgeld;
    }
    else
    {
    //wenn weniger
    ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    }
    }
    else
    {
    //Abbruch
    return 1;
    }
    }

  • Nimm diesen Code, der funktioniert.
    if(dialogid == DIALOG_BANK_ABHEBEN){
    if(!response)return 1;
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    if(sInfo[playerid][bankgeld]<strval(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    new string[128];
    format(string,128,"Abgehoben: %i$ Neuer Kontostand: %i$",strval(inputtext),sInfo[playerid][bankgeld] -= strval(inputtext)),SCM(playerid,CL_GELB,string);
    return sInfo[playerid][bankgeld] -= strval(inputtext);
    }


    Du hast abgefragt ob er Kontostand größer oder gleich der Zahl ist -> Dann erneut den Dialog anzeigen ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(dialogid == DIALOG_BANK_ABHEBEN){
    if(!response)return 1;
    if(!strval(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    if(strval(inputtext)>sInfo[playerid][bankgeld])return ShowPlayerDialog(playerid,DIALOG_BANK_ABHEBEN,DIALOG_STYLE_INPUT,"Geld abheben","So viel geld hast du nicht","OK","Abbrechen");
    new string[128];
    format(string,128,"Abgehoben: %i$ Neuer Kontostand: %i$",strval(inputtext),sInfo[playerid][bankgeld] -= strval(inputtext)),SCM(playerid,CL_GELB,string);
    return sInfo[playerid][bankgeld] -= strval(inputtext);
    }

  • danke jetzt nur noch für das aufladen des kontos also


    if(dialogid == DIALOG_BANK_ZUZAHLEN)
    {
    if(response)
    {
    if(strlen(inputtext)>0)
    {
    //wenn grösser >0
    new newgeld = sInfo[playerid][bankgeld];
    printf("Geld: %i ",newgeld);
    printf("input %i ",strval(inputtext));
    GivePlayerMoney(playerid,-strval(inputtext));
    newgeld = newgeld+strval(inputtext);
    sInfo[playerid][bankgeld] = newgeld;

    }
    else
    {
    //wenn weniger
    ShowPlayerDialog(playerid,DIALOG_BANK_ZUZAHLEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    }
    }
    else
    {
    //Abbruch
    return 1;
    }
    }
    return 1;



    auch mit begrenzung das was er auf der hand hat und eine begrenzung von 1 mio


    danke

  • if(dialogid == DIALOG_BANK_ZUZAHLEN){
    if(!response)return 1;
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,DIALOG_BANK_ZUZAHLEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    if(strval(inputtext)>1000000)return ShowPlayerDialog(playerid,DIALOG_BANK_ZUZAHLEN,DIALOG_STYLE_INPUT,"Geld abheben","Gebe den Betrag an.","OK","Abbrechen");
    printf("Geld: %d",sInfo[playerid][bankgeld]),printf("input: %d",strval(inputtext));
    return GivePlayerMoney(playerid,-strval(inputtext)),sInfo[playerid][bankgeld] += strval(inputtext);
    }

    Einmal editiert, zuletzt von AirM4X ()

  • Das kann er ja immer noch alleine, so schwer ist das nicht. Ich habe ihm das einfach umgeschrieben, sodass das funktioniert ;)
    Bisschen was muss er auch alleine machen ;)
    Jane:

  • i

    Ich würde dann trotzdem noch eine Extra Abfrage machen wie z.B nicht unter 0 oder über 1.000.000 abheben. :)

    if(strval(inputtext) < 0||strval(inputtext) > 1000000)return SendClientMessage(playerid,DEINE_FARBE,"Du darfst nicht weniger als 0 und nicht mehr als 1.000.000$ abheben.");

  • also irgentwie funktioniert diese format zeile nicht ganz


    format(string,sizeof(string),"Aufgezahl auf dein Bankkonto: %i Neuer Kontostand: %i",strval(inputtext),sInfo[playerid][bankgeld] += strval(inputtext));

    diese wirft mir ganz komische zahlen aus


    erledigt

    Einmal editiert, zuletzt von Jane ()