Autosystem

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 arbeitete z.Z. an einem Autosystem und habe schonmal so die Basis gescriptet. Man kann zwar noch kein Auto kaufen, jedoch werden, falls dateien vorhanden, die Autos geladen und gespeichert. mein Problem was ich nun habe: wenn ich nun die autodatei des spielers lade, wird das auto nicht created.


    Hier mal mein Scriptausschnitt:


    news.. :
    enum AInfo
    {
    AName[50],
    modelid,
    ATank,
    Float:AHP,
    Abgeschlossen,
    Farbe1,
    Farbe2,
    Paintjob,
    Tempomat,
    Nummernschild[30],
    Float:Posx,
    Float:Posy,
    Float:Posz,
    Float:Posa
    //Tuningteile
    }
    new Autos[MAX_PLAYERS][5][AInfo];
    new Spielercar[MAX_PLAYERS][5];


    Nun zum Laden der datei:
    public Anmelden(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i = 0; i < Spieler[playerid][Autoanzahl]-1; i++) //die autoanzahl wird in der .ini des spielers gespeichert. da die schleife bei 0 anfängt und die autoanzahl bei 1, halt -1.
    {
    new Autodatei[100];
    format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d",name,i); // Name_Auto_ID
    Autos[playerid][i][modelid] = dini_Int(Autodatei,"modelid");
    Autos[playerid][i][ATank] = dini_Int(Autodatei,"ATank");
    Autos[playerid][i][AHP] = dini_Int(Autodatei,"AHP");
    Autos[playerid][i][Abgeschlossen] = dini_Int(Autodatei,"Abgeschlossen");
    Autos[playerid][i][Farbe1] = dini_Int(Autodatei,"Farbe1");
    Autos[playerid][i][Farbe2] = dini_Int(Autodatei,"Farbe2");
    Autos[playerid][i][Paintjob] = dini_Int(Autodatei,"Paintjob");
    Autos[playerid][i][Tempomat] = dini_Int(Autodatei,"Tempomat");
    Autos[playerid][i][Nummernschild] = dini_Int(Autodatei,"Nummernschild");
    Autos[playerid][i][Posx] = dini_Int(Autodatei,"Posx");
    Autos[playerid][i][Posy] = dini_Int(Autodatei,"Posy");
    Autos[playerid][i][Posz] = dini_Int(Autodatei,"Posz");
    Autos[playerid][i][Posa] = dini_Int(Autodatei,"Posa");
    Spielercar[playerid][i] = CreateVehicle(Autos[playerid][i][modelid],Autos[playerid][i][Posx],Autos[playerid][i][Posy],Autos[playerid][i][Posz],Autos[playerid][i][Posa],Autos[playerid][i][Farbe1],Autos[playerid][i][Farbe2],-1);
    SetVehicleNumberPlate(Spielercar[playerid][i],dini_Get(Autodatei,"Nummernschild"));
    SetVehicleHealth(Spielercar[playerid][i],Autos[playerid][i][AHP]);
    ChangeVehicleColor(Spielercar[playerid][i],Autos[playerid][i][Farbe1],Autos[playerid][i][Farbe2]);
    ChangeVehiclePaintjob(Spielercar[playerid][i],Autos[playerid][i][Paintjob]);
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(Spielercar[playerid][i], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spielercar[playerid][i],0,0,alarm,Autos[playerid][i][Abgeschlossen],bonnet,boot,objective);
    }
    return 1;
    }


    nun zum speichern:
    public Update(playerid)
    {
    new name[MAX_PLAYER_NAME]
    GetPlayerName(playerid,name,sizeof(name));
    for(new i = 0; i < Spieler[playerid][Autoanzahl]-1; i++)
    {
    new Autodatei[100];
    format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d",name,i);
    dini_IntSet(Autodatei,"modelid",Autos[playerid][i][modelid]);
    dini_IntSet(Autodatei,"ATank",vInfo[Spielercar[playerid][i]][vTank]);
    dini_FloatSet(Autodatei,"AHP",Autos[playerid][i][AHP]);
    dini_IntSet(Autodatei,"Abgeschlossen",Autos[playerid][i][Abgeschlossen]);
    dini_IntSet(Autodatei,"Farbe1",Autos[playerid][i][Farbe1]);
    dini_IntSet(Autodatei,"Farbe2",Autos[playerid][i][Farbe2]);
    dini_IntSet(Autodatei,"Paintjob",Autos[playerid][i][Paintjob]);
    dini_IntSet(Autodatei,"Tempomat",Autos[playerid][i][Tempomat]);
    dini_FloatSet(Autodatei,"Posx",Autos[playerid][i][Posx]);
    dini_FloatSet(Autodatei,"Posy",Autos[playerid][i][Posy]);
    dini_FloatSet(Autodatei,"Posz",Autos[playerid][i][Posz]);
    dini_FloatSet(Autodatei,"Posa",Autos[playerid][i][Posa]);
    }
    return 1;
    }


    Das Auto wird beim Anmelden nicht createt. Wäre sehr nett wenn mir da jemand helfen könnte.


    Mfg
    Simon

  • Ich glaube das:
    for(new i = 0; i < Spieler[playerid][Autoanzahl]-1; i++)
    Musst du auf das machen:
    for(new i = 0; i < Spieler[playerid][Autoanzahl]=1; i++)
    oder so

  • ich mache net umsonst eine for schleife..


    man kann mehrere fahrzeuge besitzen. insgesammt 5, deswegen auch das array bei Spielercar und Autos.
    er geht einfach die anzahl der autos durch und lädt dann die dateien aus der .ini, was anscheinend aber net ganz hinhaut..

  • Ahhhh.....
    Wieso Arbeitest du nicht mit PVars das ist Viel Einfacher.

  • ich glaube das liegt an der -1 in der schleife. Pawno fängt ja bei 0 an zu zählen. Also angenommen du hast 1 auto, fragt die schleife:
    i ist gleich 0
    Spieler[playerid][Autoanzahl] ist bei einem auto denke ich mal 1. Wenn du dann -1 abziehst ist Spieler[playerid][Autoanzahl] der wert 0.
    Also ist die abfrage:
    solange 0(i) kleiner als 0(Spieler[playerid][Autoanzahl]-1) ist, zähle i+1 dazu.
    Also macht deine schleife, theoretisch jedenfalls, keinen durchlauf wenn du nur ein fahrzeug hast.
    Lass dir das mal ausgeben. Und wenn ich mich vertan hab, lass dir mal die variablen ausgeben mit denen du das auto erstellst.


    Mfg.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Jo stimmt, das kann gut sein. ich muss das entweder anders speichern oder nochmal extra abfragen.


    ich habe es auch mit for(new i = 1..) versucht, damit der gleich bei 1 anfängt, jedoch macht der dann auch keine schleife :S


    ich werde ma sehen ob ich das hinbekomme.

  • HAHA :D:D die dateiendung war wohl der fehler :D


    jo garnet aufgefallen. kein wunder :S ich habe das nun umgefummelt:


    die anzahl fängt bei 0 an also:


    Spieler[playerid][Autoanzahl] = 0 <<>> 1 Auto
    Spieler[playerid][Autoanzahl] = 1 <<>> 2 Auto


    das kann ich eventl rückgängig machen wenns an der endung lag..


    die autos werden dementsprechend gespeichert:


    Name_Auto_0.ini
    Name_Auto_1.ini


    werde es nun ersteinmal testen :S


    //edit: die autos werden alle so erstellt wie sie sollen, farbe wird auch gesettet, den rest muss ich noch testen.
    nun ein problem: Tank wird net gesettet. es wird so abgefragt im Tanksystem:


    enum VehicleInfo
    {
    vTank,
    vTankVerbrauch
    }
    new vInfo[MAX_VEHICLES][VehicleInfo];


    und ich habe es nun so damit er es settet:
    vInfo[Spielercar[playerid][i]][vTank] = Autos[playerid][i][ATank];


    der tank bleibt aber auf 0 :S


    //edit²: klappt alles :D


    danke schön nochmal... ein kleiner Rechschreibfehler sorgt für soviel Verwirrung :S

    Einmal editiert, zuletzt von Simon ()