Geld für kurze Zeit speichern

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
  • Wenn der online ist, geht sein Geld ja nicht weg, wenn der off ist, schon. Und dann soll das Geld, sobal man off geht, noch eine Stunde gespeichert werden, sodass man, wenn man inerhalb der Stunde wieder online kommt, sein Geld noch hat. Und wenn man dann wieder offline geht, soll wieder eine Stunde countdown beginnen.


    EDIT: Ich habe jetzt beim playerdisconnect eine .txt Datei erstellen lassen.



    if(dini_Exists("Geld.txt"))
    {
    dini_IntSet("Geld.txt","Geld",GetPlayerMoney(playerid));
    return 1;
    }
    else
    {
    dini_Create("Geld.txt");
    dini_IntSet("Geld.txt","Geld",GetPlayerMoney(playerid));
    return 1;
    }


    Aber jetzt entsteht die Datei "Geld.txt" und wenn man sie öffnet, steht da: Geld="Geldbetrag".


    Aber wie macht man das, dass da zB steht: "Spielername"="Geldbetrag"?

    2 Mal editiert, zuletzt von Sim ()

  • Ob das mit dini geht,weiß ich nicht.Dini ist vorallem geeignet für Account System,die spezial für einen User sind.
    Ich würde es jedoch mit FF machen ;) .Damit kann man meiner Meinung nach soetwas machen.

    // Unter OnPlayerDis
    new File: lol = fopen("Geld.txt",io_readwrite);
    if(lol)
    {
    new name[MAX_PLAYER_NAME];
    new form[100];
    GetPlayerName(playerid,name, sizeof name);
    format(form,sizeof form,"%s : %d\n\r",name,GetPlayerMoney(playerid));
    new string[200];
    while(fread(lol, string))
    {
    if(strcmp(string,name,true,strlen(name))==0)
    {
    fdeleteline("Geld.txt",string);
    fclose(lol);
    new File:lol2 = fopen("Geld.txt",io_append);
    fwrite(lol2,form);
    }
    else
    {
    new File:lol2 = fopen("Geld.txt",io_append);
    fwrite(lol2,form);
    fclose(lol2);
    }
    }
    }

    UNGETESTET; AUS DEM KOPF GESCHRIEBEN

    Suche Scriptlehrer :rolleyes:


  • // Ganz Unten
    stock fdeleteline(filename[], line[]){
    if(fexist(filename)){
    new temp[256];
    new File:fhandle = fopen(filename,io_read);
    fread(fhandle,temp,sizeof(temp),false);
    if(strfind(temp,line,true)==-1){return 0;}
    else{
    fclose(fhandle);
    fremove(filename);
    for(new i=0;i<strlen(temp);i++){
    new templine[256];
    strmid(templine,temp,i,i+strlen(line));
    if(equal(templine,line,true)){
    strdel(temp,i,i+strlen(line));
    fcreate(filename);
    fhandle = fopen(filename,io_write);
    fwrite(fhandle,temp);
    fclose(fhandle);
    return 1;
    }
    }
    }
    }
    return 0;
    }

    Suche Scriptlehrer :rolleyes:


  • stock fcreate(filename[])
    {
    if (fexist(filename)){return false;}
    new File:fhandle = fopen(filename,io_write);
    fclose(fhandle);
    return true;
    }

    Bei mir geht es.. wahrscheinlich brauchst noch eine include.

    Suche Scriptlehrer :rolleyes:

  • Ich habe es aus dem Kopf geschrieben,denn bei mir geht es auch nicht :( ?( 8| , doch bei einem Kollegen funktioniert es einbandfrei !!!
    Liegt wahrscheinlich an einer include,die ich (wir) nicht haben. Doch es geht theoretisch (bzw. praktisch mit der Include) zumindest :thumbup:

    Suche Scriptlehrer :rolleyes:

  • Mist ^^ dann stehe ich ja wieder am Anfang ^^ Ich hab grade gegoogelt und SaveIt x gefunden, dass soll sowas alles können, allerdings finde ich keinen Downloadlink :( kennt das zufällig jemand?



    EDIT:
    Ich hab das jetzt nochma mit dini gemacht und es wird auch eine Datei angelget. Nur bekomm ich das nicht hin, die auszwerten


    new SpielerGeld[128];
    format(SpielerGeld,sizeof(SpielerGeld), "%s ", dini_Get("Geld.txt","Geld"));
    GivePlayerMoney(playerid, SpielerGeld);


    error 035: argument type mismatch (argument 2)


    Wenn ich anstatt GivePlayerMoney, SendClientMessage benutze, bekomme ich im Chat auch die gespeicherte Zahl angezeit, also speichern und laden scheint zu funktionieren. Nur wie bekomm ich das jetzt mit dem Geld auszahlen hin? ?(

    Einmal editiert, zuletzt von Sim ()

  • Du verwendest "dini_Get" und "dini_Set" wobei Geld eine Zahl ist ( z.B.: 1000$ ) ,also ein Integerwert, und nicht wie du angegeben hast ein String,das einmal bei GivePlayerMoney falsch ist ( "Spielergeld" ) und höchstwahrscheinlich beim Speichern und Aufrufen.



    dini_IntSet("Geld.txt","Geld",GetPlayerMoney(playerid));
    // Speichern
    GivePlayerMoney(playerid,dini_Int("Geld.txt","Geld"));
    // Laden und gleichzeitig Geld geben

    Edit: Dies wird so nicht so sein wie du möchtest.Wenn du das beispielsweise unter OnPlayerSpawn machst, wird zwar das Geld gespeichert über "Geld=..." , doch für alle User.D.h. spawnt einer mit 4000 steht da "Geld=4000", spawnt 2 Sekunden danach wieder jemand mit -300 , steht da:"Geld=-300", usw. !

    new name[100];
    new form[100];
    GetPlayerName(playerid,name,sizeof name);
    format(form,sizeof form,"%s.ini",name); // Eine Variable für den Namen
    if(!dini_Exists(form))
    {
    dini_Create(form);
    }
    dini_IntSet(form,"Geld",GetPlayerMoney(playerid));

    Versuch dies mal :)

    Suche Scriptlehrer :rolleyes:

    Einmal editiert, zuletzt von Kayer ()

  • Danke! :) Jetzt funktionierts! Kann man denn einen Ordner anlegen, in den die Konfigurationsdateien gepeichert werden? Denn das werden mit der Zeit ja ganz schön viele.