Problem mit HSA_Multi

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
  • Hey,
    die Include funzt bei mir iwi nicht ..
    Ich habe bei meinem Haussystem von Dini auf HSA_Multi gewechselt, aber er schreibt nichts in die Datei ..


    Code:
    stock CreateHaus(Float:x,Float:y,Float:z,Float:xi,Float:yi,Float:zi,preis,level,int,rooms)
    {
    new haus[50];
    for(new i=0;i<MAX_HAUS;i++)
    {
    i+=1;
    format(haus,50,"/haus/%d.ini",i);
    if(!fexist(haus))
    {
    fcreate(haus);
    setString:haus("Besitzer","Niemand");

    setInt:haus("Preis",preis);
    setFloat:haus("X",x);
    setFloat:haus("Y",y);
    setFloat:haus("Z",z);
    setFloat:haus("XI",xi);
    setFloat:haus("YI",yi);
    setFloat:haus("ZI",zi);
    setInt:haus("Mietable",0);
    setInt:haus("Miete",-1);
    setInt:haus("Level",level);
    setInt:haus("Rooms",rooms);
    setInt:haus("Interior",int);
    setInt:haus("Lock",1);
    setInt:haus("Mieter",0);
    setInt:haus("Verkauft",0);
    setInt:haus("Hausid",i);
    setInt:haus("Heal",0);
    setInt:haus("Kasse",0);
    printf("Haus %d wurde erstellt.",i);
    return LoadHaus(i);
    }
    }
    return 1;
    }


    Könnt ihr mir bitte helfen?

  • Es wird automatisch eine Datei erstellt ohne fcreate und die Dateiendung muss .hsa sein.
    Du brauchst die Dateiendung in der Formatierung nicht angeben bei Hsa.


    Danke ..
    Aber er schreibt trdm nichts rein und es wird auch iwi wegen der Include kein Pickup erstellt...

  • [ INCLUDE ] HSA Multi - Einfach und schnell speichern! v. 2.2.0


    Save("Dateiname");
    oder
    SaveAll();


    Ohh.. Danke ;)
    Wenn ich jetzt aber ein Haus erstelle, hat es iwi immer die gleiche ID, deswegen überschreibt er die Datei immer ..
    Und komischerweise erstellt der kein 3D TextLabel und kein Pickup mehr, seit dem ich die Include habe ..


  • Ohh.. Danke ;)
    Wenn ich jetzt aber ein Haus erstelle, hat es iwi immer die gleiche ID, deswegen überschreibt er die Datei immer ..
    Und komischerweise erstellt der kein 3D TextLabel und kein Pickup mehr, seit dem ich die Include habe ..



    Dann zeig uns mal deine LoadHouse Funktion

    RFT

  • Dann zeig uns mal deine LoadHouse Funktion


    stock LoadHaus(hausid)
    {
    new haus[50],str[256];
    format(haus,50,"/haus/%d",hausid);
    if(!fexist(haus))return 0;
    HausInfo[hausid][haus_x] = getFloat:haus("X");
    HausInfo[hausid][haus_y] = getFloat:haus("Y");
    HausInfo[hausid][haus_z] = getFloat:haus("Z");
    HausInfo[hausid][haus_xi] = getFloat:haus("XI");
    HausInfo[hausid][haus_yi] = getFloat:haus("YI");
    HausInfo[hausid][haus_zi] = getFloat:haus("ZI");
    HausInfo[hausid][haus_preis] = getInt:haus("Preis");
    HausInfo[hausid][haus_level] = getInt:haus("Level");
    HausInfo[hausid][haus_rooms] = getInt:haus("Rooms");
    HausInfo[hausid][haus_int] = getInt:haus("Interior");
    HausInfo[hausid][haus_lock] = getInt:haus("Lock");
    HausInfo[hausid][haus_mieter] = getInt:haus("Mieter");
    HausInfo[hausid][haus_vw] = hausid;
    HausInfo[hausid][haus_vkt] = getInt:haus("Verkauft");
    HausInfo[hausid][haus_id] = getInt:haus("Hausid");
    HausInfo[hausid][haus_mietable] = getInt:haus("Mietable");
    HausInfo[hausid][haus_mietpreis] = getInt:haus("Miete");
    HausInfo[hausid][haus_kasse] = getInt:haus("Kasse");
    if(HausInfo[hausid][haus_vkt] == 0)
    {
    format(str,256,"Besitzer: Niemand\nLevel: %d\nPreis: $%d",HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis]);
    }
    else if(HausInfo[hausid][haus_vkt] == 1)
    {
    switch(getInt:haus("Mietable"))
    {
    case 0:{format(str,256,"Besitzer: %s\nLevel: %d\nPreis: $%d",getString:haus("Besitzer"),HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis]);}
    case 1:{format(str,256,"Besitzer: %s\nLevel: %d\nPreis: $%d\nMietpreis: $%d\nRäume frei: %d / %d",getString:haus("Besitzer"),HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis],HausInfo[hausid][haus_mietpreis],HausInfo[hausid][haus_rooms] -HausInfo[hausid][haus_mieter],HausInfo[hausid][haus_rooms]);}
    }
    }
    DestroyDynamic3DTextLabel(HausInfo[hausid][haus_label]);
    DestroyDynamicPickup(HausInfo[hausid][haus_pickup]);
    HausInfo[hausid][haus_pickup] = CreateDynamicPickup(1273 ,23,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],-1,-1,-1,20);
    HausInfo[hausid][haus_label] = CreateDynamic3DTextLabel(str,-1,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
    SaveAll();
    return printf("Haus %d wurde erfolgreich geladen.",hausid);
    }

  • Lässt du die Funktion auch mit ner Schleife beim starten des Servers ausführen ?
    Wenn ja wundert es mich nicht das nur Hausid 1 geladen wird ;)


    Und wieso lässt du die Häuser bei deiner Ladefunktion erneut abspeichern ?

    RFT

  • Lässt du die Funktion auch mit ner Schleife beim starten des Servers ausführen ?
    Wenn ja wundert es mich nicht das nur Hausid 1 geladen wird ;)


    Und wieso lässt du die Häuser bei deiner Ladefunktion erneut abspeichern ?


    Jap.. (OnFSInit):
    for(new i=0;i<MAX_HAUS;i++)
    {
    LoadHaus(i);
    }
    Aber warum sollte dann nur id 1 geladen werden? Vorher hat ja alles perfekt geklappt ..


    Ach.. SaveAll habe ich davor einfach bei Create,Load und SaveHouse gemacht ..

  • 1. i+=1; muss weg, das macht die for-Schleife automatisch.
    2. Wert von MAX_HAUS
    3. Bei "LoadHaus" müsste er immer 0 returnen ...
    Siehe Zeile 4 und 5.
    Für hsa brauchst du die Dateiendung .hsa nicht,
    für fexist jedoch schon.
    Eigentlich brauchst du die Zeilen nicht, da selbst beim Auslesen die Datei erstellt wird, sofern sie nicht existiert.
    Mach einfach ein 2. Mal Format oder mach es so:


    format(haus,50,"/haus/%d.hsa",hausid);
    if(!fexist(haus))return 0;
    strdel(haus, strlen(haus)-3, strlen(haus));


    Damit löscht du die letzten vier Zeichen.
    Lass dir davor und danach den String mit print ausgeben ob zu sehen ob es klappt.


  • Habe vergessen den Code ( den ich davor geändert habe ) zu posten ..
    Also der Code ist nun so:


    stock LoadHaus(hausid)
    {
    new haus[50],str[256];
    format(haus,50,"/haus/%d",hausid);
    if(!fexist(haus))return 0;
    HausInfo[hausid][haus_x] = getFloat:haus("X");
    HausInfo[hausid][haus_y] = getFloat:haus("Y");
    HausInfo[hausid][haus_z] = getFloat:haus("Z");
    HausInfo[hausid][haus_xi] = getFloat:haus("XI");
    HausInfo[hausid][haus_yi] = getFloat:haus("YI");
    HausInfo[hausid][haus_zi] = getFloat:haus("ZI");
    HausInfo[hausid][haus_preis] = getInt:haus("Preis");
    HausInfo[hausid][haus_level] = getInt:haus("Level");
    HausInfo[hausid][haus_rooms] = getInt:haus("Rooms");
    HausInfo[hausid][haus_int] = getInt:haus("Interior");
    HausInfo[hausid][haus_lock] = getInt:haus("Lock");
    HausInfo[hausid][haus_mieter] = getInt:haus("Mieter");
    HausInfo[hausid][haus_vw] = hausid;
    HausInfo[hausid][haus_vkt] = getInt:haus("Verkauft");
    HausInfo[hausid][haus_id] = getInt:haus("Hausid");
    HausInfo[hausid][haus_mietable] = getInt:haus("Mietable");
    HausInfo[hausid][haus_mietpreis] = getInt:haus("Miete");
    HausInfo[hausid][haus_kasse] = getInt:haus("Kasse");
    if(HausInfo[hausid][haus_vkt] == 0)
    {
    format(str,256,"Besitzer: Niemand\nLevel: %d\nPreis: $%d",HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis]);
    }
    else if(HausInfo[hausid][haus_vkt] == 1)
    {
    switch(getInt:haus("Mietable"))
    {
    case 0:{format(str,256,"Besitzer: %s\nLevel: %d\nPreis: $%d",getString:haus("Besitzer"),HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis]);}
    case 1:{format(str,256,"Besitzer: %s\nLevel: %d\nPreis: $%d\nMietpreis: $%d\nRäume frei: %d / %d",getString:haus("Besitzer"),HausInfo[hausid][haus_level],HausInfo[hausid][haus_preis],HausInfo[hausid][haus_mietpreis],HausInfo[hausid][haus_rooms] -HausInfo[hausid][haus_mieter],HausInfo[hausid][haus_rooms]);}
    }
    }
    DestroyDynamic3DTextLabel(HausInfo[hausid][haus_label]);
    DestroyDynamicPickup(HausInfo[hausid][haus_pickup]);
    HausInfo[hausid][haus_pickup] = CreateDynamicPickup(1273 ,23,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],-1,-1,-1,20);
    HausInfo[hausid][haus_label] = CreateDynamic3DTextLabel(str,-1,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],20,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1,-1,100);
    //Create3DTextLabel(str,-1,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z],50,-1,1);
    SaveAll();
    printf("Haus %d wurde erfolgreich geladen.",hausid);
    return 0;
    }

    stock SaveHaus(hausid)
    {
    new haus[50];
    for(new i=0;i<MAX_HAUS;i++)
    {
    format(haus,50,"/haus/%d",hausid);
    if(!fexist(haus))return 0;
    setString:haus("Besitzer",HausInfo[hausid][haus_besitzer]);
    setInt:haus("Preis",HausInfo[hausid][haus_preis]);
    setFloat:haus("X",HausInfo[hausid][haus_x]);
    setFloat:haus("Y",HausInfo[hausid][haus_y]);
    setFloat:haus("Z",HausInfo[hausid][haus_z]);
    setFloat:haus("XI",HausInfo[hausid][haus_xi]);
    setFloat:haus("YI",HausInfo[hausid][haus_yi]);
    setFloat:haus("ZI",HausInfo[hausid][haus_zi]);
    setInt:haus("Mietable",HausInfo[hausid][haus_mietable]);
    setInt:haus("Miete",HausInfo[hausid][haus_mietpreis]);
    setInt:haus("Level",HausInfo[hausid][haus_level]);
    setInt:haus("Rooms",HausInfo[hausid][haus_rooms]);
    setInt:haus("Interior",HausInfo[hausid][haus_int]);
    setInt:haus("Lock",HausInfo[hausid][haus_lock]);
    setInt:haus("Mieter",HausInfo[hausid][haus_mieter]);
    setInt:haus("Verkauft",HausInfo[hausid][haus_vkt]);
    setInt:haus("Hausid",HausInfo[hausid][haus_id]);
    setInt:haus("Heal",HausInfo[hausid][haus_heal]);
    setInt:haus("Kasse",HausInfo[hausid][haus_kasse]);
    printf("Haus %d wurde gespeichert.",hausid);
    SaveAll();
    }
    return 1;
    }

    stock CreateHaus(Float:x,Float:y,Float:z,Float:xi,Float:yi,Float:zi,preis,level,int,rooms)
    {
    new haus[50];
    for(new i=0;i<MAX_HAUS;i++)
    {
    i++;
    format(haus,50,"/haus/%d",i);
    setString:haus("Besitzer","Niemand");

    setInt:haus("Preis",preis);
    setFloat:haus("X",x);
    setFloat:haus("Y",y);
    setFloat:haus("Z",z);
    setFloat:haus("XI",xi);
    setFloat:haus("YI",yi);
    setFloat:haus("ZI",zi);
    setInt:haus("Mietable",0);
    setInt:haus("Miete",-1);
    setInt:haus("Level",level);
    setInt:haus("Rooms",rooms);
    setInt:haus("Interior",int);
    setInt:haus("Lock",1);
    setInt:haus("Mieter",0);
    setInt:haus("Verkauft",0);
    setInt:haus("Hausid",i);
    setInt:haus("Heal",0);
    setInt:haus("Kasse",0);
    printf("Haus %d wurde erstellt.",i);
    SaveAll();
    return LoadHaus(i);
    }
    return 1;
    }


    Wenn ich das "i++" entferne, kann er nur Haus ID 0 erstellen..
    Wenn ich es aber lasse, erstellt er nur Haus ID 1.. vorher ging eig alles perfekt, ka was auf einmal los ist ..

  • Du bist nicht auf meine Punkte eingegangen.
    Zusätzlich:
    Schau mal im Ordner Haus. Da ist bestimmt eine Datei namens 0 ohne Endung.

  • Genau das gleiche Problem wie vorher ( dass er nichts eingetragen hat ) habe ich erneut..



    stock SpielerSpeichern(playerid)
    {
    new SD[64];
    format(SD,64,"/Accounts/%s",Name(playerid));
    if(!fexist(SD))return 0;
    setInt:SD("Admin",Spieler[playerid][Admin]);
    setInt:SD("Level",Spieler[playerid][Level]);
    setInt:SD("Euro",Spieler[playerid][Euro]);
    setInt:SD("Cent",Spieler[playerid][Cent]);
    setInt:SD("Payday",Spieler[playerid][Payday]);
    setInt:SD("Fraktion",Spieler[playerid][Fraktion]);
    setInt:SD("Job",Spieler[playerid][Job]);
    setInt:SD("ViP",Spieler[playerid][ViP]);
    setInt:SD("EXP",Spieler[playerid][EXP]);
    setInt:SD("Rollerlic",Spieler[playerid][Rollerlic]);
    setInt:SD("Motolic",Spieler[playerid][Motolic]);
    setInt:SD("Autolic",Spieler[playerid][Autolic]);
    setInt:SD("LKWlic",Spieler[playerid][LKWlic]);
    setInt:SD("Fluglic",Spieler[playerid][Fluglic]);
    setInt:SD("Angellic",Spieler[playerid][Angellic]);
    setInt:SD("Bootlic",Spieler[playerid][Bootlic]);
    setInt:SD("Waffenlic",Spieler[playerid][Waffenlic]);
    setInt:SD("Banned",Spieler[playerid][Banned]);
    Save(SD);
    return 1;
    }


    Weiß einfach nicht mehr weiter ....

    Mit freundlichen Grüßen
    ErikSon



    Scripte kleine Systeme auf Anfrage umsonst!
    Per PN könnt ihr mir gerne Scriptingfragen stellen.

    Einmal editiert, zuletzt von ErikSon ()


  • Hey, das habe ich dir letztens bereits beantwortet: