Kassen System Problem

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
  • Guten Tag, ich mache gerade ein Kassensystem via. Dialog.
    Ich fange mal an und zeige die Codes.


    Hier wird der Dialog der Staatskasse aufgerufen, der aktuelle Kassenstand sowie eine Frage aufgerufen.
    ocmd:staatskasse(playerid,params[])
    {
    new string[128];
    format(string,sizeof(string),"In der Staatskasse sind %i$. Möchtest du was einzahlen?",Staat);
    ShowPlayerDialog(playerid,DIALOG_STAATSKASSE,DIALOG_STYLE_MSGBOX,"Staatskasse",string,"Einzahlen","Abbrechen");
    return 1;


    }


    Nun unter OnDialogResponse gehts weiter.
    Hier wird der Sinn des Dialoges aufgerufen. ~> response==0 ~> Abbrechen ~> Folgt nichts, dies ist soweit richtig.
    Dann bei response==1 wird in der nächste Dialog gezeigt, nur als DIALOG_STYLE_INPUT, damit er den Betrag eingeben kann denn er spenden möchte.
    if(dialogid==DIALOG_STAATSKASSE)
    {
    if(response==0)
    {
    return 1;
    }
    if(response==1)
    {
    new string[500];
    format(string,sizeof(string),"Du willst also in die Staatskasse was einzahlen.\nDerzeit befinden sich in der Staatskasse %i$.\nWie viel möchtest du einzahlen?",Staat);
    ShowPlayerDialog(playerid,DIALOG_STAATEINZAHLEN,DIALOG_STYLE_INPUT,"Staatskasse",string,"Einzahlen","Abbrechen");
    return 1;
    }
    }


    Hier die Funktion vom DIALOG_STYLE_INPUT
    Drückt er response==0 passiert nichts, das ist richtig.
    Drückt er response==1 und gibt keinen inputtext ein, wird der Dialog erneut aufgerufen auch richtig.
    Nun zu meinem Problem, ich habe es derzeit so: new money;
    if(GetPlayerMoney(playerid) < money) return SendClientMessage(playerid,Grau,"So viel Geld hast du nicht.");
    Staat +=(inputtext);
    Nur inputtext kann ich nicht verwenden?
    if(dialogid==DIALOG_STAATEINZAHLEN)
    {
    if(response==0)
    {
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    new string[500];
    format(string,sizeof(string),"Du willst also in die Staatskasse was einzahlen.\nDerzeit befinden sich in der Staatskasse %i$.\nWie viel möchtest du einzahlen?",Staat);
    ShowPlayerDialog(playerid,DIALOG_STAATEINZAHLEN,DIALOG_STYLE_INPUT,"Staatskasse",string,"Einzahlen","Abbrechen");
    }
    else
    {
    new money;
    if(GetPlayerMoney(playerid) < money) return SendClientMessage(playerid,Grau,"So viel Geld hast du nicht.");
    Staat +=(inputtext);
    }
    }
    }
    Die Errors: C:\Users\John_Jones\Desktop\Plugins\Binary-Life\gamemodes\Selfmade.pwn(405) : error 022: must be lvalue (non-constant)
    C:\Users\John_Jones\Desktop\Plugins\Binary-Life\gamemodes\Selfmade.pwn(405) : warning 215: expression has no effect
    Die Error Zeile: Staat +=(inputtext);


    Brauche unbedingt Hilfe.


    MFG

  • Hier wird der Staat gespeichert, geladen.


    stock CreateKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    dini_Create(datei);
    return 1;
    }


    stock LoadKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    fraktionskasse [Staat] = dini_Int( datei ,"Staat");
    print("Fraktionskasse Staat wurde erfolgreich geladen.");
    fraktionskasse [SAPD] = dini_Int( datei ,"SAPD");
    print("Fraktionskasse SAPD wurde erfolgreich geladen.");
    fraktionskasse [Ordnungsamt] = dini_Int( datei ,"Ordnungsamt");
    print("Fraktionskasse Ordnungsamt wurde erfolgreich geladen.");
    fraktionskasse [Sanitaeter] = dini_Int( datei ,"Sanitaeter");
    print("Fraktionskasse Sanitaeter wurde erfolgreich geladen.");
    fraktionskasse [SanNews] = dini_Int( datei ,"SanNews");
    print("Fraktionskasse SanNews wurde erfolgreich geladen.");
    fraktionskasse [Yakuza] = dini_Int( datei ,"Yakuza");
    print("Fraktionskasse Yakuza wurde erfolgreich geladen.");
    fraktionskasse [Rifa] = dini_Int( datei ,"Rifa");
    print("Fraktionskasse Rifa wurde erfolgreich geladen.");
    fraktionskasse [GroveStreet] = dini_Int( datei ,"GroveStreet");
    print("Fraktionskasse GroveStreet wurde erfolgreich geladen.");
    return 1;
    }
    stock SaveKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    dini_IntSet(datei,"Staat", fraktionskasse [Staat]);
    dini_IntSet(datei,"SAPD", fraktionskasse [SAPD]);
    dini_IntSet(datei,"Ordnungsamt", fraktionskasse [Ordnungsamt]);
    dini_IntSet(datei,"Sanitaeter", fraktionskasse [Sanitaeter]);
    dini_IntSet(datei,"SanNews", fraktionskasse [SanNews]);
    dini_IntSet(datei,"Yakuza", fraktionskasse [Yakuza]);
    dini_IntSet(datei,"Rifa", fraktionskasse [Rifa]);
    dini_IntSet(datei,"GroveStreet", fraktionskasse [GroveStreet]);
    return 1;
    }


    enum kasse
    {
    Staat,
    SAPD,
    FBI,
    Ordnungsamt,
    Sanitaeter,
    SanNews,
    Yakuza,
    Rifa,
    GroveStreet
    }

  • Versuchs mal so:



    new money = strval(inputtext);
    if(GetPlayerMoney(playerid) < money) return SendClientMessage(playerid,Grau,"So viel Geld hast du nicht.");
    fraktionskasse [Staat]+=money;
    }

    Mit freundlichem Gruß
    Weper

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • dann musste halt mal schaun wo der fehler liegt^^
    mach dir am besten einen testbefehl um zu schaun wie der kassenstand ist dann weisste schonmal wo der fehler liegt.



    ocmd:test(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new lolofant[128];
    format(lolofant,sizeof(lolofant),"Kassenstand: %i",fraktionskasse[Staat]);
    SendClientMessage(playerid,ROT,lolofant);
    }
    return 1;
    }

    damit kannste dann testen ob es überhaupt geladen wurde beim serverstart z.b
    ob etwas dazugekommen ist nachdem du etwas eingezahlt hast usw..
    wenn alles funktioniert dann stimmt etwas nicht mit deinem savekasse stock.

  • also is die txt datei komplett leer oder steht wenigstens Staat=0 oder Staat= ?
    edit: was mir auffällt ist das du bei deinem savekasse stock immer ein leerzeichen drinne hast


    fraktionskasse [Staat]


    fraktionskasse[Staat] //probiers mal so

  • komisch ;( dann bin ich leider auch am ende meines lateins.. was ich dir noch anbieten könnte ist dir meine frakbanken stocks zu zeigen.. vlcht fällt dir was auf


    stock Frakbankerstellen()
    {
    if(dini_Exists("Fraktion/frakbanken.txt"))
    {
    dini_IntSet("Fraktion/frakbanken.txt","LspdGeld",GetPVarInt(fraktion,"LspdGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","FsGeld",GetPVarInt(fraktion,"FsGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","AdacGeld",GetPVarInt(fraktion,"AdacGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","TaxiGeld",GetPVarInt(fraktion,"TaxiGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","SantGeld",GetPVarInt(fraktion,"SantGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","RettungGeld",GetPVarInt(fraktion,"RettungGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","TruckGeld",GetPVarInt(fraktion,"TruckGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","BurgerGeld",GetPVarInt(fraktion,"BurgerGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","LcnGeld",GetPVarInt(fraktion,"LcnGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","RifaGeld",GetPVarInt(fraktion,"RifaGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","GroveGeld",GetPVarInt(fraktion,"GroveGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","YakiGeld",GetPVarInt(fraktion,"YakiGeld"));
    dini_IntSet("Fraktion/frakbanken.txt","HitmanGeld",GetPVarInt(fraktion,"HitmanGeld"));
    }
    else
    {
    dini_Create("Fraktion/frakbanken.txt");
    Frakbankerstellen();
    }
    return 1;
    }


    stock Frakbankladen()
    {
    SetPVarInt(fraktion,"LspdGeld",dini_Int("Fraktion/frakbanken.txt","LspdGeld"));
    SetPVarInt(fraktion,"FsGeld",dini_Int("Fraktion/frakbanken.txt","FsGeld"));
    SetPVarInt(fraktion,"AdacGeld",dini_Int("Fraktion/frakbanken.txt","AdacGeld"));
    SetPVarInt(fraktion,"TaxiGeld",dini_Int("Fraktion/frakbanken.txt","TaxiGeld"));
    SetPVarInt(fraktion,"SantGeld",dini_Int("Fraktion/frakbanken.txt","SantGeld"));
    SetPVarInt(fraktion,"RettungGeld",dini_Int("Fraktion/frakbanken.txt","RettungGeld"));
    SetPVarInt(fraktion,"TruckGeld",dini_Int("Fraktion/frakbanken.txt","TruckGeld"));
    SetPVarInt(fraktion,"BurgerGeld",dini_Int("Fraktion/frakbanken.txt","BurgerGeld"));
    SetPVarInt(fraktion,"LcnGeld",dini_Int("Fraktion/frakbanken.txt","LcnGeld"));
    SetPVarInt(fraktion,"RifaGeld",dini_Int("Fraktion/frakbanken.txt","RifaGeld"));
    SetPVarInt(fraktion,"GroveGeld",dini_Int("Fraktion/frakbanken.txt","GroveGeld"));
    SetPVarInt(fraktion,"YakiGeld",dini_Int("Fraktion/frakbanken.txt","YakiGeld"));
    SetPVarInt(fraktion,"HitmanGeld",dini_Int("Fraktion/frakbanken.txt","HitmanGeld"));
    return 1;
    }

  • Ich liste dir nochmal mein ganzes Kassensystem auf:
    Die Stocks


    GameModeExit
    SaveKasse();


    GameModeInIt
    CreateKasse();
    LoadKasse();


    enum kasse
    {
    Staat,
    SAPD,
    FBI,
    Ordnungsamt,
    Sanitaeter,
    SanNews,
    Yakuza,
    Rifa,
    GroveStreet
    }
    new fraktionskasse [kasse];


    stock CreateKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    dini_Create(datei);
    return 1;
    }


    stock LoadKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    fraktionskasse [Staat] = dini_Int( datei ,"Staat");
    print("Fraktionskasse Staat wurde erfolgreich geladen.");
    fraktionskasse [SAPD] = dini_Int( datei ,"SAPD");
    print("Fraktionskasse SAPD wurde erfolgreich geladen.");
    fraktionskasse [Ordnungsamt] = dini_Int( datei ,"Ordnungsamt");
    print("Fraktionskasse Ordnungsamt wurde erfolgreich geladen.");
    fraktionskasse [Sanitaeter] = dini_Int( datei ,"Sanitaeter");
    print("Fraktionskasse Sanitaeter wurde erfolgreich geladen.");
    fraktionskasse [SanNews] = dini_Int( datei ,"SanNews");
    print("Fraktionskasse SanNews wurde erfolgreich geladen.");
    fraktionskasse [Yakuza] = dini_Int( datei ,"Yakuza");
    print("Fraktionskasse Yakuza wurde erfolgreich geladen.");
    fraktionskasse [Rifa] = dini_Int( datei ,"Rifa");
    print("Fraktionskasse Rifa wurde erfolgreich geladen.");
    fraktionskasse [GroveStreet] = dini_Int( datei ,"GroveStreet");
    print("Fraktionskasse GroveStreet wurde erfolgreich geladen.");
    return 1;
    }
    stock SaveKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    dini_IntSet(datei,"Staat", fraktionskasse [Staat]);
    dini_IntSet(datei,"SAPD", fraktionskasse [SAPD]);
    dini_IntSet(datei,"Ordnungsamt", fraktionskasse [Ordnungsamt]);
    dini_IntSet(datei,"Sanitaeter", fraktionskasse [Sanitaeter]);
    dini_IntSet(datei,"SanNews", fraktionskasse [SanNews]);
    dini_IntSet(datei,"Yakuza", fraktionskasse [Yakuza]);
    dini_IntSet(datei,"Rifa", fraktionskasse [Rifa]);
    dini_IntSet(datei,"GroveStreet", fraktionskasse [GroveStreet]);
    return 1;
    }
    stock StaatSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"Staatskasse.txt");
    dini_IntSet(pfad,"Kassenstand",Staat);
    }
    stock SAPDSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"SAPDkasse.txt");
    dini_IntSet(pfad,"Kassenstand",SAPD);
    }
    stock OrdnungsamtSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"Ordnungsamtkasse.txt");
    dini_IntSet(pfad,"Kassenstand",Ordnungsamt);
    }
    stock SanitaeterSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"Sanitaeterkasse.txt");
    dini_IntSet(pfad,"Kassenstand",Sanitaeter);
    }
    stock SanNewsSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"SanNewskasse.txt");
    dini_IntSet(pfad,"Kassenstand",SanNews);
    }
    stock YakuzaSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"Yakuzakasse.txt");
    dini_IntSet(pfad,"Kassenstand",Yakuza);
    }
    stock RifaSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"Rifakasse.txt");
    dini_IntSet(pfad,"Kassenstand",Rifa);
    }
    stock GroveStreetSpeichern()
    {
    new pfad[18];
    format(pfad,sizeof(pfad),"GroveStreetkasse.txt");
    dini_IntSet(pfad,"Kassenstand",GroveStreet);
    }

  • also ich hab das mal alles in einen neuen gamemode rein aber es funktioniert bei mir tadellos. absolut keine probleme damit.



    #include <a_samp>
    #include <ocmd>
    #include <dini>


    #define ROT 0x8B0000FF


    enum kasse
    {
    Staat,
    SAPD,
    FBI,
    Ordnungsamt,
    Sanitaeter,
    SanNews,
    Yakuza,
    Rifa,
    GroveStreet
    }
    new fraktionskasse[kasse];


    main(){}



    ocmd:abfrage(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    new lol[128];
    format(lol,sizeof(lol),"staat: %i",fraktionskasse[Staat]);
    SendClientMessage(playerid,ROT,lol);
    }
    return 1;
    }
    ocmd:laden(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    LoadKasse();
    SendClientMessage(playerid,ROT,"geladen");
    }
    return 1;
    }
    ocmd:speichern(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    SaveKasse();
    SendClientMessage(playerid,ROT,"gespeichert");
    }
    return 1;
    }
    ocmd:erstellen(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    CreateKasse();
    SendClientMessage(playerid,ROT,"erstellt");
    }
    return 1;
    }



    stock CreateKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    dini_Create(datei);
    return 1;
    }
    stock LoadKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    fraktionskasse[Staat] = dini_Int( datei ,"Staat");
    fraktionskasse[SAPD] = dini_Int( datei ,"SAPD");
    fraktionskasse[Ordnungsamt] = dini_Int( datei ,"Ordnungsamt");
    fraktionskasse[Sanitaeter] = dini_Int( datei ,"Sanitaeter");
    fraktionskasse[SanNews] = dini_Int( datei ,"SanNews");
    fraktionskasse[Yakuza] = dini_Int( datei ,"Yakuza");
    fraktionskasse[Rifa] = dini_Int( datei ,"Rifa");
    fraktionskasse[GroveStreet] = dini_Int( datei ,"GroveStreet");
    return 1;
    }
    stock SaveKasse()
    {
    new datei[64];
    format(datei,sizeof( datei ),"/fraktionskasse.txt");
    dini_IntSet(datei,"Staat", fraktionskasse [Staat]);
    dini_IntSet(datei,"SAPD", fraktionskasse [SAPD]);
    dini_IntSet(datei,"Ordnungsamt", fraktionskasse [Ordnungsamt]);
    dini_IntSet(datei,"Sanitaeter", fraktionskasse [Sanitaeter]);
    dini_IntSet(datei,"SanNews", fraktionskasse [SanNews]);
    dini_IntSet(datei,"Yakuza", fraktionskasse [Yakuza]);
    dini_IntSet(datei,"Rifa", fraktionskasse [Rifa]);
    dini_IntSet(datei,"GroveStreet", fraktionskasse [GroveStreet]);
    return 1;
    }

  • Nun habe ich ein Problem mit dem einzahl System...


    if(dialogid==DIALOG_STAATKASSE)
    {
    if(response==0)
    {
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext))
    {
    new string[200];
    format(string,sizeof(string),"In der Staatskasse sind %i$.\nWie viel möchtest du einzahlen?",fraktionskasse[Staat]);
    ShowPlayerDialog(playerid,DIALOG_STAATKASSE,DIALOG_STYLE_INPUT,"Staatskasse",string,"Einzahlen","Abbrechen");
    return 1;
    }
    else
    {
    new money = strval(inputtext);
    if(GetPlayerMoney(playerid) < money) return SendClientMessage(playerid,Grau,"So viel Geld hast du nicht.");
    new string[128],string1[128];
    format(string,sizeof(string),"Du hast %i$ in die Staatskasse eingezahlt.",inputtext);
    SendClientMessage(playerid,Hellblau,string);
    format(string1,sizeof(string1),"Neuer Kassenstand: %i$.",fraktionskasse[Staat]);
    SendClientMessage(playerid,Hellblau,string1);
    fraktionskasse [Staat]+=money;
    GivePlayerMoney(playerid,money);
    StaatSpeichern();
    return 1;
    }
    }
    }


    ocmd:staatskasse(playerid,params[])
    {
    new string[200];
    format(string,sizeof(string),"In der Staatskasse sind %i$.\nWie viel möchtest du einzahlen?",fraktionskasse[Staat]);
    ShowPlayerDialog(playerid,DIALOG_STAATKASSE,DIALOG_STYLE_INPUT,"Staatskasse",string,"Einzahlen","Abbrechen");
    return 1;
    }


    Nun die Screens, man sollte erkennen was nicht klappt.
    Ich habe 50$ eingezahlt, als kleine Info.
    Das Geld wird auch nicht abgezogen..
    Kassenstand war 10$ ist richtig, wegen Neustart


    Hier zahle ich 50$ ein.
    Die SendClientMessages buggen?


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen