Dynamisches Tankstellen System (Laden 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,


    derzeit arbeite ich an einem dynamischen Tankstellen System und bin gerade dabei, dass die Tankstellen laden.
    Bekomme aber ein Error hier im Code, siehe hier:
    Tankstellen[i][besitzer] = dini_Set(Tankstellen,"besitzer","Nicht vorhanden");
    Tankstellen[i][tankstellex] = dini_FloatSet(Tankstellen,"tankstellex",x);
    Tankstellen[i][tankstelley] = dini_FloatSet(Tankstellen,"tankstelley",y);
    Tankstellen[i][tankstellez] = dini_FloatSet(Tankstellen,"tankstellez",z);
    Tankstellen[i][produktpreis] = dini_IntSet(Tankstellen,"produktpreis",50);
    Tankstellen[i][tankstellenname] = dini_Set(Tankstellen,"tankstellenname",namevontankes);
    Tankstellen[i][benzinpreis] = dini_IntSet(Tankstellen,"benzinpreis",50);
    Tankstellen[i][dieselpreis] = dini_IntSet(Tankstellen,"dieselpreis",35);
    Tankstellen[i][superpreis] = dini_IntSet(Tankstellen,"superpreis",75);
    Tankstellen[i][pickup] =
    Tankstellen[i][kaufpreis] = dini_IntSet(Tankstellen,"kaufpreis",Preis);
    Tankstellen[i][kauflevel] = dini_IntSet(Tankstellen,"kauflevel",3);
    Tankstellen[i][kasse] = dini_IntSet(Tankstellen,"kasse",0);
    Tankstellen[i][pickupx] = dini_FloatSet(Tankstellen,"pickupx",x);
    Tankstellen[i][pickupy] = dini_FloatSet(Tankstellen,"pickupy",y);
    Tankstellen[i][pickupz] = dini_FloatSet(Tankstellen,"pickupz",z);
    Tankstellen[i][pickupids] = dini_IntSet(Tankstellen,"pickupids",1239);
    Tankstellen[i][pickupwelt] = dini_IntSet(Tankstellen,"pickupwelt",0)


    Jeder dieser Ladungen hat folgenden Fehler

    Code
    C:\Users\Alexander\Desktop\Neues Projekt, neues Selfmade, wir packen das!\gamemodes\Selfmade.pwn(318) : warning 215: expression has no effect
    C:\Users\Alexander\Desktop\Neues Projekt, neues Selfmade, wir packen das!\gamemodes\Selfmade.pwn(318) : error 001: expected token: ";", but found "["
    C:\Users\Alexander\Desktop\Neues Projekt, neues Selfmade, wir packen das!\gamemodes\Selfmade.pwn(318) : error 029: invalid expression, assumed zero
    C:\Users\Alexander\Desktop\Neues Projekt, neues Selfmade, wir packen das!\gamemodes\Selfmade.pwn(318) : warning 215: expression has no effect
    C:\Users\Alexander\Desktop\Neues Projekt, neues Selfmade, wir packen das!\gamemodes\Selfmade.pwn(318) : error 001: expected token: ";", but found "]"
    C:\Users\Alexander\Desktop\Neues Projekt, neues Selfmade, wir packen das!\gamemodes\Selfmade.pwn(318) : fatal error 107: too many error messages on one line


    Woran liegt das? - Normalerweise muss das doch funktionieren, wäre um Hilfe sehr dankbar.

  • Tankstellen[i][pickupwelt] = dini_IntSet(Tankstellen,"pickupwelt",0)
    Da Fehlt ein schönes ;


    Außerdem ergibt dein Code keinen Sinn, da du settest und nicht gettest...
    In den Fall dürfte überall eine 1 oder nix stehen evtl sogar ne 0

    All in all it's just another brick in the wall

  • Habe den Code mal so, so sollte er eigentlich richtig sein, die Errors bestehen aber weiterhin.
    for(new i=0;i<MAX_TANKSTELLEN;i++)
    {
    new Tankstellen[200];
    format(Tankstellen,sizeof(Tankstellen),"/Tankstellen/%d.ini",i);
    {
    if(dini_Exists(Tankstellen))
    {
    Tankstellen[i][besitzer] = dini_IntSet(Tankstellen,"besitzer");
    Tankstellen[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tankstellen[i][tankstelley] = dini_Float(Tankstellen,"tankstelley");
    Tankstellen[i][tankstellez] = dini_Float(Tankstellen,"tankstellez");
    Tankstellen[i][produktpreis] = dini_Int(Tankstellen,"produktpreis");
    Tankstellen[i][tankstellenname] = dini_IntSet(Tankstellen,"tankstellenname");
    Tankstellen[i][benzinpreis] = dini_Int(Tankstellen,"benzinpreis");
    Tankstellen[i][dieselpreis] = dini_Int(Tankstellen,"dieselpreis");
    Tankstellen[i][superpreis] = dini_Int(Tankstellen,"superpreis");
    Tankstellen[i][kaufpreis] = dini_Int(Tankstellen,"kaufpreis");
    Tankstellen[i][kauflevel] = dini_Int(Tankstellen,"kauflevel");
    Tankstellen[i][kasse] = dini_Int(Tankstellen,"kasse");
    Tankstellen[i][pickupx] = dini_Float(Tankstellen,"pickupx");
    Tankstellen[i][pickupy] = dini_Float(Tankstellen,"pickupy");
    Tankstellen[i][pickupz] = dini_Float(Tankstellen,"pickupz");
    Tankstellen[i][pickupids] = dini_Int(Tankstellen,"pickupids");
    Tankstellen[i][pickupwelt] = dini_Int(Tankstellen,"pickupwelt");
    print("Tankstellen wurden geladen geladen");
    }
    }
    }

    Einmal editiert, zuletzt von [iRP]Syntro ()

  • Habs geändert, dass löst aber trotzdem nicht mein Problem. :whistling:


    for(new i=0;i<MAX_TANKSTELLEN;i++)
    {
    new Tankstellen[200];
    format(Tankstellen,sizeof(Tankstellen),"/Tankstellen/%d.ini",i);
    {
    if(dini_Exists(Tankstellen))
    {
    Tankstellen[i][besitzer] = dini_GetInt(Tankstellen,"besitzer");
    Tankstellen[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tankstellen[i][tankstelley] = dini_Float(Tankstellen,"tankstelley");
    Tankstellen[i][tankstellez] = dini_Float(Tankstellen,"tankstellez");
    Tankstellen[i][produktpreis] = dini_Int(Tankstellen,"produktpreis");
    Tankstellen[i][tankstellenname] = dini_GetInt(Tankstellen,"tankstellenname");
    Tankstellen[i][benzinpreis] = dini_Int(Tankstellen,"benzinpreis");
    Tankstellen[i][dieselpreis] = dini_Int(Tankstellen,"dieselpreis");
    Tankstellen[i][superpreis] = dini_Int(Tankstellen,"superpreis");
    Tankstellen[i][kaufpreis] = dini_Int(Tankstellen,"kaufpreis");
    Tankstellen[i][kauflevel] = dini_Int(Tankstellen,"kauflevel");
    Tankstellen[i][kasse] = dini_Int(Tankstellen,"kasse");
    Tankstellen[i][pickupx] = dini_Float(Tankstellen,"pickupx");
    Tankstellen[i][pickupy] = dini_Float(Tankstellen,"pickupy");
    Tankstellen[i][pickupz] = dini_Float(Tankstellen,"pickupz");
    Tankstellen[i][pickupids] = dini_Int(Tankstellen,"pickupids");
    Tankstellen[i][pickupwelt] = dini_Int(Tankstellen,"pickupwelt");
    print("Tankstellen wurden geladen geladen");
    }
    }
    }

    Einmal editiert, zuletzt von [iRP]Syntro ()

  • Wtf! Bei Tankstellenbesitzer macht ihr ein GetInt? GetInt ist für eine Zahl ...
    Namen kannst du unter anderem so auslesen:


    format(Tankstellen[i][besitzer],sizeof(Tankstellen[i][besitzer]),"%s",dini_Get(Tankstellen,"besitzer"));


    Dazu kommt noch, dass du den String gleich mit der Variable nennt. Dein Script könnte daher durcheinander kommen.

  • format(Tankstellen[besitzer],sizeof(Tankstellen[i][besitzer]),"%s",dini_Get(Tankstellen,"besitzer"));


    Bringt mir aber Error, tag mistach.


    Hier mal das komplette System derzeit:



    #define MAX_TANKSTELLEN 80
    enum Tankstelle
    {
    besitzer,
    Float:tankstellex,
    Float:tankstelley,
    Float:tankstellez,
    produktpreis,
    produkte,
    tankstellenname,
    benzinpreis,
    dieselpreis,
    superpreis,
    kaufpreis,
    kauflevel,
    kasse,
    pickupx,
    pickupy,
    pickupz,
    pickupids,
    pickupwelt
    }


    new Tanke[MAX_TANKSTELLEN][Tankstelle];


    OnGameModeInIt
    for(new i=0;i<MAX_TANKSTELLEN;i++)
    {
    new Tankstellen[200];
    format(Tankstellen,sizeof(Tankstellen),"/Tankstellen/%d.ini",i);
    {
    if(dini_Exists(Tankstellen))
    {
    format(Tankstellen[besitzer],sizeof(Tankstellen[i][besitzer]),"%s",dini_Get(Tankstellen,"besitzer"));
    Tankstellen[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tankstellen[i][tankstelley] = dini_Float(Tankstellen,"tankstelley");
    Tankstellen[i][tankstellez] = dini_Float(Tankstellen,"tankstellez");
    Tankstellen[i][produktpreis] = dini_Int(Tankstellen,"produktpreis");
    format(Tankstellen[tankstellenname],sizeof(Tankstellen[i][tankstellenname]),"%s",dini_Get(Tankstellen,"tankstellenname"));
    Tankstellen[i][benzinpreis] = dini_Int(Tankstellen,"benzinpreis");
    Tankstellen[i][dieselpreis] = dini_Int(Tankstellen,"dieselpreis");
    Tankstellen[i][superpreis] = dini_Int(Tankstellen,"superpreis");
    Tankstellen[i][kaufpreis] = dini_Int(Tankstellen,"kaufpreis");
    Tankstellen[i][kauflevel] = dini_Int(Tankstellen,"kauflevel");
    Tankstellen[i][kasse] = dini_Int(Tankstellen,"kasse");
    Tankstellen[i][pickupx] = dini_Float(Tankstellen,"pickupx");
    Tankstellen[i][pickupy] = dini_Float(Tankstellen,"pickupy");
    Tankstellen[i][pickupz] = dini_Float(Tankstellen,"pickupz");
    Tankstellen[i][pickupids] = dini_Int(Tankstellen,"pickupids");
    Tankstellen[i][pickupwelt] = dini_Int(Tankstellen,"pickupwelt");
    print("Tankstellen wurden geladen geladen");
    }
    }
    }


    ocmd:createtankstelle(playerid,params[])
    {
    new Float:x,Float:y,Float:z,namevontankes[128],Preis,string[128],Tankstellen[128];
    GetPlayerPos(playerid,x,y,z);
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht eingeloggt.");
    if(sscanf(params,"si",namevontankes,Preis))return SendClientMessage(playerid,COLOR_GRAU,"Verwende: /createtanke [Name] [Kaufpreis]");
    for(new i=0;i<MAX_TANKSTELLEN;i++)
    {
    format(string, sizeof string, "/Tankstellen/%d.ini", i);
    dini_Create(string);
    dini_FloatSet(Tankstellen,"tankstellex",x);
    dini_FloatSet(Tankstellen,"tankstelle",y);
    dini_FloatSet(Tankstellen,"tankstelle",z);
    dini_IntSet(Tankstellen,"superpreis",75);
    dini_IntSet(Tankstellen,"dieselpreis",35);
    dini_IntSet(Tankstellen,"benzinpreis",50);
    dini_Set(Tankstellen,"besitzer","Nicht vorhanden");
    dini_IntSet(Tankstellen,"produkte",1000);
    dini_Set(Tankstellen,"tankstellenname",namevontankes);
    dini_IntSet(Tankstellen,"kaufpreis",Preis);
    dini_IntSet(Tankstellen,"kauflevel",3);
    dini_IntSet(Tankstellen,"kasse",0);
    dini_IntSet(Tankstellen,"produktpreis",50);
    dini_FloatSet(Tankstellen,"pickupx",x);
    dini_FloatSet(Tankstellen,"pickupy",y);
    dini_FloatSet(Tankstellen,"pickupz",z);
    dini_IntSet(Tankstellen,"pickupids",1239);
    dini_IntSet(Tankstellen,"pickupwelt",0);
    CreatePickup(1239,0,x,y,z,0);
    SendClientMessage(playerid,COLOR_ROT,"Du hast eine Tankstelle erstellt.");
    }
    return 1;
    }

  • Vielleicht speichert er die UserID ab und nicht den Namen.


    Dann wäre das auch wohl ein cooler Tankstellenname: Tankstellen[i][tankstellenname] = dini_GetInt(Tankstellen,"tankstellenname");
    und meines muss so lauten: format(Tankstellen[i][besitzer],sizeof(Tankstellen[besitzer]),"%s",dini_Get(Tankstellen,"besitzer"));

  • Habe das mal abgeändert, immer noch die Fehler, das gibts doch nicht. :sleeping:


    for(new i=0;i<MAX_TANKSTELLEN;i++)
    {
    new Tankstellen[200];
    format(Tankstellen,sizeof(Tankstellen),"/Tankstellen/%d.ini",i);
    {
    if(dini_Exists(Tankstellen))
    {
    format(Tanke[besitzer],sizeof(Tanke[i][besitzer]),"%s",dini_Get(Tankstellen,"besitzer"));
    Tanke[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tanke[i][tankstelley] = dini_Float(Tankstellen,"tankstelley");
    Tanke[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tanke[i][produktpreis] = dini_Int(Tankstellen,"produktpreis");
    format(Tanke[tankstellenname],sizeof(Tanke[i][tankstellenname]),"%s",dini_Get(Tankstellen,"tankstellenname"));
    Tanke[i][benzinpreis] = dini_Int(Tankstellen,"benzinpreis");
    Tanke[i][dieselpreis] = dini_Int(Tankstellen,"dieselpreis");
    Tanke[i][superpreis] = dini_Int(Tankstellen,"superpreis");
    Tanke[i][kaufpreis] = dini_Int(Tankstellen,"kaufpreis");
    Tanke[i][kauflevel] = dini_Int(Tankstellen,"kauflevel");
    Tanke[i][kasse] = dini_Int(Tankstellen,"kasse");
    Tanke[i][pickupx] = dini_Float(Tankstellen,"pickupx");
    Tanke[i][pickupy] = dini_Float(Tankstellen,"pickupy");
    Tanke[i][pickupz] = dini_Float(Tankstellen,"pickupz");
    Tanke[i][pickupids] = dini_Int(Tankstellen,"pickupids");
    Tanke[i][pickupwelt] = dini_Int(Tankstellen,"pickupwelt");
    print("Tankstellen wurden geladen geladen");
    }
    }
    }

    • Offizieller Beitrag

    Zitat von »ScriptingFreak«
    Zitat von »<| Pinguin |>«
    Wtf! Bei Tankstellenbesitzer macht ihr ein GetInt? GetInt ist für eine Zahl ...
    Vielleicht speichert er die UserID ab und nicht den Namen.


    Dann wäre das auch wohl ein cooler Tankstellenname:

    Wir reden von der Besitzer Variable und nicht von dem Namen.
    Aber egal.


    Edit:


    Du musst in deinem Enum noch die String Variable anpassen, also von tankstellenname zu tankstellenname[50] (z.B).
    Und bei den anderen Strings auch.

  • Schreib es mal bitte einfach so:


    for(new i; i<MAX_TANKSTELLEN; i++)
    {
    new Tankstellen[200];
    format(Tankstellen,sizeof(Tankstellen),"/Tankstellen/%d.ini",i);
    if(!fexist(Tankstellen)) continue;
    format(Tanke[i][besitzer],MAX_PLAYER_NAME,dini_Get(Tankstellen,"besitzer"));
    Tanke[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tanke[i][tankstelley] = dini_Float(Tankstellen,"tankstelley");
    Tanke[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tanke[i][produktpreis] = dini_Int(Tankstellen,"produktpreis");
    format(Tanke[i][tankstellenname],32,dini_Get(Tankstellen,"tankstellenname"));
    Tanke[i][benzinpreis] = dini_Int(Tankstellen,"benzinpreis");
    Tanke[i][dieselpreis] = dini_Int(Tankstellen,"dieselpreis");
    Tanke[i][superpreis] = dini_Int(Tankstellen,"superpreis");
    Tanke[i][kaufpreis] = dini_Int(Tankstellen,"kaufpreis");
    Tanke[i][kauflevel] = dini_Int(Tankstellen,"kauflevel");
    Tanke[i][kasse] = dini_Int(Tankstellen,"kasse");
    Tanke[i][pickupx] = dini_Float(Tankstellen,"pickupx");
    Tanke[i][pickupy] = dini_Float(Tankstellen,"pickupy");
    Tanke[i][pickupz] = dini_Float(Tankstellen,"pickupz");
    Tanke[i][pickupids] = dini_Int(Tankstellen,"pickupids");
    Tanke[i][pickupwelt] = dini_Int(Tankstellen,"pickupwelt");
    printf("Tankstelle %i wurden geladen.",i);
    }


    //Edit:
    Das enum sollte so aussehen:


    enum Tankstelle
    {
    besitzer[MAX_PLAYER_NAME],
    Float:tankstellex,
    Float:tankstelley,
    Float:tankstellez,
    produktpreis,
    produkte,
    tankstellenname[32],
    benzinpreis,
    dieselpreis,
    superpreis,
    kaufpreis,
    kauflevel,
    kasse,
    pickupx,
    pickupy,
    pickupz,
    pickupids,
    pickupwelt
    };


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Haut mir Errors rein.
    for(new i; i<MAX_TANKSTELLEN; i++)
    {
    new Tankstellen[200];
    format(Tankstellen,sizeof(Tankstellen),"/Tankstellen/%d.ini",i);
    if(!fexist(Tankstellen)) continue;
    format(Tanke[besitzer],MAX_PLAYER_NAME,dini_Get(Tankstellen,"besitzer")); //warning 213: tag mismatch | warning 229: index tag mismatch (symbol "Tanke")
    Tanke[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tanke[i][tankstelley] = dini_Float(Tankstellen,"tankstelley");
    Tanke[i][tankstellex] = dini_Float(Tankstellen,"tankstellex");
    Tanke[i][produktpreis] = dini_Int(Tankstellen,"produktpreis");
    format(Tanke[tankstellenname],32,dini_Get(Tankstellen,"tankstellenname")); //warning 213: tag mismatch | warning 229: index tag mismatch (symbol "Tanke")
    Tanke[i][benzinpreis] = dini_Int(Tankstellen,"benzinpreis");
    Tanke[i][dieselpreis] = dini_Int(Tankstellen,"dieselpreis");
    Tanke[i][superpreis] = dini_Int(Tankstellen,"superpreis");
    Tanke[i][kaufpreis] = dini_Int(Tankstellen,"kaufpreis");
    Tanke[i][kauflevel] = dini_Int(Tankstellen,"kauflevel");
    Tanke[i][kasse] = dini_Int(Tankstellen,"kasse");
    Tanke[i][pickupx] = dini_Float(Tankstellen,"pickupx"); //warning 213: tag mismatch
    Tanke[i][pickupy] = dini_Float(Tankstellen,"pickupy"); //warning 213: tag mismatch
    Tanke[i][pickupz] = dini_Float(Tankstellen,"pickupz"); //warning 213: tag mismatch
    Tanke[i][pickupids] = dini_Int(Tankstellen,"pickupids");
    Tanke[i][pickupwelt] = dini_Int(Tankstellen,"pickupwelt");
    printf("Tankstelle %i wurden geladen.",i);
    }

  • In deiner Enum


    Float:pickupx,Float:pickupy,Float:pickupz,
    schreiben, da es als Float gespeichert wird.


    Bei Besitzer & Tankstellennamen musst du die maximale Zeichenlänge angeben, bei Besitzer könnte es so aussehen
    Besitzer[24].


    Bei Tankstellennamen
    tankstellenname[32]
    schreiben.