Beiträge von Addickted

    for(new i=0;i<MAX_VEHICLES;i++)
    {
    new save[28];
    Vehicle[i][vBesitzer] = dini_Get(save,"vBesitzer"); //<< Betroffene Zeile
    format(save,sizeof(save),"/Fahrzeuge/%s.ini",Vehicle[i][vBesitzer]);
    printf("Debug: Save enthält: %s",save);
    Vehicle[i][vModel] = dini_Int(save,"vModel");
    Vehicle[i][vX] = dini_Float(save,"vX");
    Vehicle[i][vY] = dini_Float(save,"vY");
    Vehicle[i][vZ] = dini_Float(save,"vZ");
    Vehicle[i][vA] = dini_Float(save,"vA");
    Vehicle[i][vColor1] = dini_Int(save,"vColor1");
    Vehicle[i][vColor2] = dini_Int(save,"vColor2");
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(i,0,lights,alarm,doors,bonnet,boot,objective);
    MotorAn[i] = 0;
    if(dini_Exists(save))
    {
    CreateVehicle(Vehicle[i][vModel],Vehicle[i][vX],Vehicle[i][vY],Vehicle[i][vZ],Vehicle[i][vA],Vehicle[i][vColor1],Vehicle[i][vColor2],-1);
    }
    }


    Errorzeile:


    (263) : error 047: array sizes do not match, or destination array is too small


    Enum:

    enum eFahrzeugInfo
    {
    vID,
    Float:vX,
    Float:vY,
    Float:vZ,
    Float:vA,
    Float: vHP,
    vLock,
    vColor1,
    vColor2,
    vLocked,
    vModel,
    vBesitzer[28], // Hier ist der Besitzer
    //...
    }


    new Vehicle[MAX_VEHICLES][eFahrzeugInfo];


    Debug spuckt folgendes aus. Er kriegt den Name scheinbar nicht geladen.


    [01:50:10] Debug: Save enthält: /Fahrzeuge/.ini


    Ich habe versucht beide Größen zu ändern oder anzugleichen. Beide Wege halfen nichts und ich komme grad echt nicht für meine Kenntnisse auf die Lösung. Mag jemand helfen?

    Um mich mal einzumischen, kann man gerne als Feedback betrachten.


    Der Scripter hätte weningstens gleich von vorneherein sagen können "Hey du, komm ich hab noch vor dir Aufträge gehabt die beanspruchen meine Zeit. Bitte gedulde dich etwas". Dann wäre sowas völlig in Ordnung, nur ständig alles aufm nächsten Tag verschieben ohne Begründung finde ich, wenn man sowas gegen Geld macht, kacken Dreist.

    Das sowieso nicht, nach 8 Stunden Arbeit und gefühlten 300 Beiträgen mehr im Forum, gucke ich nicht mehr meinen Thread an, außer er ist noch offen. Goldkiller hast du ein Tutorial zu der print Methode zur Fehlersuche? Kenne mich da noch nicht so aus.

    public SubHealthTimer()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:Health,save[40],pName[MAX_PLAYER_NAME];
    GetPlayerName(i,pName,sizeof pName);
    format(save,sizeof(save),"/Spieler/%d.ini",pName);
    GetPlayerHealth(i,Health);
    SetPlayerHealth(i,Health-5);
    GetPlayerHealth(i,Health); // <<
    sInfo[i][pHealth] = floatround(Health, floatround_round); // <<
    dini_FloatSet(save,"pHealth", sInfo[i][pHealth]); // <<
    }
    }
    return 1;
    }


    Ich habe dazu einen Timer erstellt der momentan diesen Public ausführen soll. Allerdings wird die Energie nicht zwischengespeichert, Lebensenergie wird jedoch abgezogen. Woran kann das liegen? Ich habe dieselbe Methode bei meinem Drivein's verwendet, dort heisst es allerdings:


    if(listitem == 1)
    {
    sInfo[playerid][pGeld] = GetPlayerMoney(playerid);
    dini_Int(save, "pGeld");
    if(sInfo[playerid][pGeld] >= 5)
    {
    new Float:Health;
    GetPlayerHealth(playerid,Health);
    GivePlayerMoney(playerid,-5);
    dini_IntSet(save,"pGeld",GetPlayerMoney(playerid));
    SetPlayerHealth(playerid,Health+50.0);
    GetPlayerHealth(playerid,Health); // <<
    sInfo[playerid][pHealth] = floatround(Health, floatround_round); //<<
    dini_FloatSet(save,"pHealth", sInfo[playerid][pHealth]); //<<
    SendClientMessage(playerid, COLOR_GREEN, "Hier, Ihr Essen, guten Appetit!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Sie haben leider nicht genug Geld dabei.");
    }
    }
    Woran kann das liegen?

    Also ich lasse beim Verkaufen der Häuser den alten Besitzer eintragen in die Variable oldbesitzer eintragen.


    Wenn nun jemand das Haus kauft, würde ich dem alten Besitzer, also dem der das Haus verkauft hat, den erworbenen Kaufpreis des Hauses geben.


    Ich lasse momentan den Value des Keys auslesen mit dini_Get(save,"oldbesitzer");


    Wie kann ich das bewerkstelligen? Meine Herangehensweise war folgende:


    Ich lasse mir den Spieler auslesen, packe diesen Namen in eine Variable, lasse alle verbundenen Spieler durchlaufen und wenn er dabei auf den Besitzer trifft der als alter Besitzer eingetragen ist soll er dem den Kaufpreis auf die Hand geben.


    Leider bin ich Programmiertechnisch nicht soweit das zu realisieren (Denke ich jedenfalls). Kann mir da jemand helfen.

    Ein Mensch wird nicht Automatisch Dicker, wenn er Abends wenige Kohlenhyrdrate zu sich nimmt, wo hast du so einen Schwachsinn her? Erstmal ist IMMER der Grundumsatz da, hinzu kommt ein Leistungsumsatz. Ständig sind Nährstoffe in Verstoffwechselung. Ausserdem: Während des Schlafens regeniert der Körper die Zellen, was wieder Energieaufwand bedeutet. Generell hat man Recht, wenn man sagt so wenig Kohlenhydrate wie möglich, aber komplett Abends drauf verzichten ist schwachsinnig. Ein Mensch wird im übrigen nicht dicker, nur weil er Glukose aufnimmt. Er legt erst Fett an, wenn die Muskel und Leberzellen voll sind.


    Verzichte komplett auf Softdrinks. Nur noch Wasser. (Glaub mir das geht, bin seitm halben Jahr nur auf Wasser manchmal Apfelsaft aber nur Naturtrüb)
    So wenig Kohlenhydrate wie möglich. Kartoffeln und Nudeln bestens nur einmal die Woche.
    Wenn du noch Fragen hast dann Frag!
    Gruß


    Kohlenhydrate braucht der Körper. Meine Empfehlung lautet insofern eher, Abends kohlenhydratarme Kost.

    Obst besteht aus Fructose und Wasser. Fruktose ist Einfachzucker. Einfachzucker lassen den Blutzucker schnell ansteigen, da sie vom Körper nicht mehr gespalten werden müssen. Ist zuviel Zucker im Blut, steigt infolgedessen die Insulinausschüttung und Insulin ist ein Hormon aus der Bauchspeicheldrüse und hemmt den Fettstoffwechsel.

    if(dialogid== DIALOG_NEWPASSWORD)
    {
    if(response==0)
    {
    SendClientMessage(playerid,COLOR_RED,"Vorgang abgebrochen!");
    return 1;
    }
    if(response== 1)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid,COLOR_RED,"Es wurde keine Passworteingabe registriert.");
    SendClientMessage(playerid,COLOR_GREY,"Bitte versuche es erneut");
    ShowPlayerDialog(playerid,DIALOG_NEWPASSWORD,DIALOG_STYLE_PASSWORD,"Neue Passwortvergabe","Du bist im Begriff dein Passwort zu aendern. Bitte gebe ein neues Passwort ein.","Okay","Abbrechen");
    return 1;
    }
    else
    {
    stockWechslePasswort(playerid,inputtext);
    }


    }
    }


    stock stockWechslePasswort(playerid,key[])
    {
    new pName[MAX_PLAYER_NAME],save[40];
    GetPlayerName(playerid,pName,sizeof(pName));
    format(save,sizeof(save),"/Spieler/%d.ini",pName);
    dini_Set(save,"pPasswort",key);
    SendClientMessage(playerid,COLOR_GREEN,"Passwort Erfolgreich geaendert!");
    return 1;
    }


    Kann mir jemand sagen warum er das neue Passwort nicht in die Datei schreibt? Bei meinem Register Dialog und den dazugehörigen Register Stock verwende ich genau dieselbe Funktion.

    Kann geschlossen werden. Ich bin nicht mehr der hellste um diese Uhrzeit. Es lag anfangs daran das ich floatround und floatset vergaß.


    Vielleicht kann man das ganze als Tutorial umbauen? :D


    public SubHealthTimer()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:Health,save[40],pName[MAX_PLAYER_NAME]; // Erstellt unsere Variablen
    GetPlayerName(i,pName,sizeof pName); // Ermittelt den Spielernamen und packt ihn in die Variable pName
    format(save,sizeof(save),"/Spieler/%d.ini",pName); // Formatiert unsere Zeichenkette mit dem Dateipfad.
    GetPlayerHealth(i,Health); // Ermittelt die aktuelle Energie und speichert sie in der Variable Health
    SetPlayerHealth(i,Health-5); // Setzt die Energie auf den ermittelten Wert in der Variable Health und zieht -5 ab
    GetPlayerHealth(i,Health); // Wir ermitteln nun nochmals die aktuelle Energie
    sInfo[i][pHealth] = floatround(Health, floatround_round); // Wir weisen unseren Variablen an, dass sie den Wert abrunden sollen
    dini_FloatSet(save,"pHealth", sInfo[i][pHealth]); // Schlussendlich tragen wir gleich den Wert in die Userdatei ein.
    }
    }


    Edit: Kann mir jemand erklären warum er die aktuellen Energie nicht in die Datei schreibt? Erst bei meinem Disconnect schreibt er die Health rein. In Health verwende ich ganz normal playerid statt i.

    Moin, der gute public hier soll in Verbindung mit einen bei OnGameModeInit gestarteten, sich alle 2 Min Wiederholenden Timer diesen Code ausführen.
    Mir wird dennoch keine Energie abgezogen, warum?
    public SubHealthTimer()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    new Float:health,save[40],pName[MAX_PLAYER_NAME];
    GetPlayerName(i,pName,sizeof pName);
    format(save,sizeof(save),"/Spieler/%d.ini",pName);
    GetPlayerHealth(i,health);
    SetPlayerHealth(i,health-5);
    dini_FloatSet(save,"pHealth",GetPlayerHealth(i,health));
    }
    }
    }

    OnGameModeInit

    new save[40];
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    format(save,sizeof(save),"/Fahrzeuge/%d.ini",i);
    Vehicle[i][vModel] = dini_Int(save,"vModel");
    Vehicle[i][vX] = dini_Float(save,"vX");
    Vehicle[i][vY] = dini_Float(save,"vY");
    Vehicle[i][vZ] = dini_Float(save,"vZ");
    Vehicle[i][vA] = dini_Float(save,"vA");
    Vehicle[i][vColor1] = dini_Int(save,"vColor1");
    Vehicle[i][vColor2] = dini_Int(save,"vColor2");
    if(dini_Exists(save))
    {
    CreateVehicle(Vehicle[i][vModel], Vehicle[i][vX], Vehicle[i][vY], Vehicle[i][vZ], Vehicle[i][vA], Vehicle[i][vColor1], Vehicle[i][vColor2], -1);
    }
    }


    Befehl, momentan wieder mit ID Abspeicherung des Vehicles. Wollte wie gesagt eine Fortlaufende ID haben.
    ocmd:savecarspawn(playerid,params[])
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new Float:vx,Float:vy,Float:vz,Float:va,vehicleid,vehiclemodel,color1,color2;
    new name[28],save[40];
    vehicleid = GetPlayerVehicleID(playerid);
    vehiclemodel = GetVehicleModel(vehicleid);
    GetVehicleColor(vehicleid, color1, color2);
    GetVehiclePos(vehicleid,vx,vy,vz);
    GetVehicleZAngle(vehicleid, va);
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Fahrzeuge/%d.ini",vehicleid);
    if(dini_Exists(save))
    {
    dini_Set(save,"Besitzer",name);
    dini_IntSet(save,"vLocked",1);
    dini_FloatSet(save,"vX",vx);
    dini_FloatSet(save,"vY",vy);
    dini_FloatSet(save,"vZ",vz);
    dini_FloatSet(save,"vA",va);
    dini_IntSet(save,"vID",vehicleid);
    dini_IntSet(save,"vModel",vehiclemodel);
    dini_IntSet(save,"vColor1",color1);
    dini_IntSet(save,"vColor2",color2);
    SetPlayerPos(playerid,vx,vy,vz+2.0);
    SendClientMessage(playerid,COLOR_GREEN," Dein Fahrzeug wurde erfolgreich geparkt.");
    }
    else
    {
    dini_Create(save);
    dini_Set(save,"Besitzer",name);
    dini_FloatSet(save,"vX",vx);
    dini_FloatSet(save,"vY",vy);
    dini_FloatSet(save,"vZ",vz);
    dini_FloatSet(save,"vA",va);
    dini_IntSet(save,"vID",vehicleid);
    dini_IntSet(save,"vModel",vehiclemodel);
    dini_IntSet(save,"vColor1",color1);
    dini_IntSet(save,"vColor2",color2);
    SetPlayerPos(playerid,vx,vy,vz+2.0);
    SendClientMessage(playerid,COLOR_GREEN," Dein Fahrzeug wurde erfolgreich geparkt.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du musst im Fahrzeug sitzen, um diesen Befehl benutzen zu koennen!");
    }
    return 1;
    }

    format(Vehicle[i][vBesitzer],sizeof(Vehicle[i][vBesitzer]),"%s",dini_Get(save,"vBesitzer"));


    Die hat irgendwo Syntax Fehler.


    error 001: expected token: "]", but found "-identifier-"
    (1099) : warning 215: expression has no effect
    (1099) : error 001: expected token: ";", but found "]"
    (1099) : error 029: invalid expression, assumed zero
    (1099) : fatal error 107: too many error messages on one line