Dateiensystem dini - Dateien erstellen, löschen, speichern, laden

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
  • geht das nicht so wie bei gf mit fwriten und der schrott?


    siehe hier:
    public LoadBizz()
    {
    new arrCoords[19][64];
    new strFromFile2[256];
    new File: file = fopen("bizz.cfg", io_read);
    if (file)
    {
    new idx;
    while (idx < sizeof(BizzInfo))
    {
    fread(file, strFromFile2);
    split(strFromFile2, arrCoords, '|');
    BizzInfo[idx][bOwned] = strval(arrCoords[0]);
    strmid(BizzInfo[idx][bOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
    strmid(BizzInfo[idx][bMessage], arrCoords[2], 0, strlen(arrCoords[2]), 255);
    strmid(BizzInfo[idx][bExtortion], arrCoords[3], 0, strlen(arrCoords[3]), 255);
    BizzInfo[idx][bEntranceX] = floatstr(arrCoords[4]);
    BizzInfo[idx][bEntranceY] = floatstr(arrCoords[5]);
    BizzInfo[idx][bEntranceZ] = floatstr(arrCoords[6]);
    BizzInfo[idx][bExitX] = floatstr(arrCoords[7]);
    BizzInfo[idx][bExitY] = floatstr(arrCoords[8]);
    BizzInfo[idx][bExitZ] = floatstr(arrCoords[9]);
    BizzInfo[idx][bLevelNeeded] = strval(arrCoords[10]);
    BizzInfo[idx][bBuyPrice] = strval(arrCoords[11]);
    BizzInfo[idx][bEntranceCost] = strval(arrCoords[12]);
    BizzInfo[idx][bTill] = strval(arrCoords[13]);
    BizzInfo[idx][bLocked] = strval(arrCoords[14]);
    BizzInfo[idx][bInterior] = strval(arrCoords[15]);
    BizzInfo[idx][bProducts] = strval(arrCoords[16]);
    BizzInfo[idx][bMaxProducts] = strval(arrCoords[17]);
    BizzInfo[idx][bPriceProd] = strval(arrCoords[18]);
    printf("BizzInfo:%d Owner:%s Message:%s Entfee:%d Till:%d Products:%d/%d Interior:%d.\n",
    idx,
    BizzInfo[idx][bOwner],
    BizzInfo[idx][bMessage],
    BizzInfo[idx][bEntranceCost],
    BizzInfo[idx][bTill],
    BizzInfo[idx][bProducts],
    BizzInfo[idx][bMaxProducts],
    BizzInfo[idx][bInterior]);
    idx++;
    }
    fclose(file);
    }
    return 1;
    }


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

    Einmal editiert, zuletzt von SmArTi ()

  • also zum thema "dini_Get(...);" da gibts bei mir i-wie probleme -.-


    gLogged[playerid] = 1; // 100% richtig
    PlayerInfo[playerid][pName] = dini_Get(String, "Name"); // <<< Zeile
    PlayerInfo[playerid][pAdmin] = dini_Int(String, "Admin"); // 100% richtig
    error 047: array sizes do not match, or destination array is too small
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Was ist falsch? Bugt die dini datei? <<< bezweifel ich!


    MFG
    Ich


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • format(PlayerInfo[playerid][pName],sizeof(PlayerInfo[playerid][pName]),dini_Get(String, "Name"));


    Ja...kommt im Endeffekt etwa das gleiche raus.


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • C:\Users\Simon\Desktop\SA-MP RL\gamemodes\[GM]MyGamemode.pwn(105) : error 017: undefined symbol "MAX_STRING"


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • Eine frage:
    Wie erstellt man eine Datei mit den usernamen den man besitzt?

  • new PlayerName[MAX_PLAYER_NAME];
    new String1[100];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    format(String1, sizeof(String1), "%s.ini", PlayerName);
    Create(String1);


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hm okay danke aber wo muss ich das einfügen? Das tut verstehe ich nicht ganz so richtig. Meine frage: WIe mache ich das man in der datei users.ini folgendes reinschreibt:
    Name = 1 oder 0
    wenn 1 passiert das und das (das mache ich schon)
    wie geht das?

  • new PlayerName[MAX_PLAYER_NAME];
    new String1[100];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    format(String1, sizeof(String1), "%s.ini", PlayerName);
    dini_Create(String1);
    dini_IntSet(String1,"Name",1); // 1 = Variable, die unter Name gespeichert werden soll


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Hm danke aber bei mir speichert er dann Name=1 statt z.B Nickname=1 wieso?
    Und wie mache ich das hier:
    new number = dini_Int("/folder/file.ini", "sampforums");
    if(number == 1)
    {
    // sampforums entspricht 1, wie bei dini_IntSet gespeichert
    }
    Also das steht im ersten post und wie mache ich das bei mir (bei file.ini soll nickname.ini sein bei jeden ist das ja anders) das wenn man nummer1 hat das man dann woanders spawnt?

  • ich hab mit dini n kleines prob, ich will zB das hier laden [ist nur ein beispiel]



    dcmd_MeineSprache(playerid,params[])
    {
    #pragma unused params
    new number = dini_Int("MasterScript/Spieler/%.ini", "Sprache");
    if(number == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE," You choose English");
    }
    if(number == 2)
    {
    SendClientMessage(playerid, COLOR_WHITE," Sie haben deutsch ausgewählt");
    }
    return 1;
    }


    geispeichert ist schon alles, wie gesagt nur laden, das hauptproblem also, dini_int



    new number = dini_Int("MasterScript/Spieler/%.ini", "Sprache");


    davor
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"MasterScript/Spieler/%s.ini",name);


    wie kann ich den nun den spielernamen laden, den wenn ich

    "MasterScript/Spieler/%s.ini",name);

    mache, hab ich um ein wort ja zuviel

    Zitat

    (skype) Wastl: Oida, i greif ka schowaßding mea au, gestan bam schwoaßn hob i ma meine sockhoa vaseink :-/

    Zitat

    (skype) Wastl: Alter, ich greife kein schweißgerät mehr an, gestern beim schweißen hab ich mir meine intimhaare versenkt :-/

    :D :D :D

  • Hey Leute. Ich versuche mich grade in Dini einzuarbeiten und wollte ein System machen, wo eine Datei erstellt wird, in der das Geld beim Disconnecten gespeichert wird und beim einloggen wieder geladen wird:
    Leider kommt bei mir folgende Fehlermeldung:
    error 033: array must be indexed (variable "-unknown-") in Zeile 17


    public OnPlayerConnect(playerid)
    {
    new Cname[MAX_PLAYER_NAME], string[56];



    SendClientMessage(playerid, Orange, "~~Willkommen auf meinem Server~~");
    GetPlayerName(playerid,Cname,16);
    new filename[25];
    format(filename, sizeof(filename), "%s.ini", Cname);


    if(dini_Exists(filename)) //existierender Spieler
    {
    format(string, sizeof(string), "Hallo %s!Willkommen zurück!", Cname);
    SendClientMessage(playerid, gruen, string);


    new Geldbeimstart = dini_Get(filename, "Geld");


    GivePlayerMoney(playerid,Geldbeimstart);
    }


    else //Neuer Spieler
    {
    format(string, sizeof(string), "Hallo %s!Du scheinst neu zu sein!", Cname);
    SendClientMessage(playerid, falschrot, string);


    format(string, sizeof(string), "%s.ini", Cname);
    dini_Create(string);
    dini_Set(string,"Geld", "1500");


    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new Spielername[MAX_PLAYER_NAME], string[56];
    new Geld = GetPlayerMoney(playerid);
    new Geldstring[9];
    format(Geldstring, sizeof(Geldstring), "%s", Geld);
    format(string, sizeof(string), "%s.ini", Spielername);

    dini_Set( string, "Geld", Geldstring);
    return 1;
    }

  • Sorry wegen doppelpost.
    Ich hab noch ein Problem und zwar möchte ich, dass beim disconnect das Geld in dem File gespeichert wird. Ich habe folgendes gescriptet:
    public OnPlayerDisconnect(playerid, reason)
    {
    new Spielername[MAX_PLAYER_NAME], string[56];
    new Geld = GetPlayerMoney(playerid);
    format(string, sizeof(string), "%s.ini", Spielername);

    dini_IntSet( string, "Geld", Geld);
    return 1;
    }
    Kein error aber dennoch wird das Geld nicht gespeichert und ich komme jetzt nicht drauf, woran es liegen könnte. Ich hab 0.3a und den dazu gehörigen Server.
    Hoffe jemand hat ne Idee =)

  • public OnPlayerDisconnect(playerid, reason)
    {
    new Spielername[MAX_PLAYER_NAME], string[56];
    new Geld = GetPlayerMoney(playerid);
    format(string, sizeof(string), "%s.ini", Spielername);
    if(!fexist(string))dini_Create(string); // << muss sein
    dini_IntSet( string, "Geld", Geld);
    return 1;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion