Wo muss ich die Icons 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
  • Hallo, habe schonmal ein Thema deswegen erstellt aber komme nicht mehr weiter. Ich weiss nicht wo ich die 3dtexte und icons einfügen muss damit sie bei dem Haussystem auch geladen werden. Denn die Icons werden nach restart vom server nicht mehr geladen.


    stock LoadHaus(hausid)
    {
    new inhalt[35],File:f;
    format(inhalt,20,"Häuser/Haus %d.ini",hausid);
    if(!fexist(inhalt)) return false;
    f=fopen(inhalt,io_read);
    while(fread(f,inhalt))
    {
    StripNL(inhalt);
    if(strfind(inhalt,"Besitzer: ")!=-1) strdel(inhalt,0,10), format(Haus[hausid][Besitzer],MAX_PLAYER_NAME,inhalt);
    else if(strfind(inhalt,"Gekauft: ")!=-1) strdel(inhalt,0,9), Haus[hausid][Gekauft]=(strval(inhalt))?true:false;
    else if(strfind(inhalt,"Abgeschlossen: ")!=-1) strdel(inhalt,0,15), Haus[hausid][Abgeschlossen]=(strval(inhalt))?true:false;
    else if(strfind(inhalt,"AußenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][0]=floatstr(inhalt);
    else if(strfind(inhalt,"AußenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][1]=floatstr(inhalt);
    else if(strfind(inhalt,"AußenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][2]=floatstr(inhalt);
    else if(strfind(inhalt,"InnenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][3]=floatstr(inhalt);
    else if(strfind(inhalt,"InnenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][4]=floatstr(inhalt);
    else if(strfind(inhalt,"InnenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][5]=floatstr(inhalt);
    else if(strfind(inhalt,"Interior: ")!=-1) strdel(inhalt,0,10), Haus[hausid][Int]=strval(inhalt);
    else if(strfind(inhalt,"VirtualWorld: ")!=-1) strdel(inhalt,0,14), Haus[hausid][VirtualWorld]=strval(inhalt);
    else if(strfind(inhalt,"Preis: ")!=-1) strdel(inhalt,0,7), Haus[hausid][Preis]=strval(inhalt);
    }
    Haus[hausid][PickupID] = CreatePickup((Haus[hausid][Gekauft])?1239:1273,1,Haus[hausid][Pos][0],Haus[hausid][Pos][1],Haus[hausid][Pos][2]);
    fclose(f);
    return true;
    }
    stock SaveHaus(hausid)
    {
    if(!Haus[hausid][Int]) return false;
    new inhalt[35],File:f;
    format(inhalt,35,"Häuser/Haus %d.ini",hausid);
    f=fopen(inhalt,io_write);
    format(inhalt,35,"Besitzer: %s\r\n",Haus[hausid][Besitzer]),fwrite(f,inhalt);
    format(inhalt,35,"Gekauft: %d\r\n",Haus[hausid][Gekauft]),fwrite(f,inhalt);
    format(inhalt,35,"Abgeschlossen: %d\r\n",Haus[hausid][Abgeschlossen]),fwrite(f,inhalt);
    format(inhalt,35,"AußenPosX: %f\r\n",Haus[hausid][Pos][0]),fwrite(f,inhalt);
    format(inhalt,35,"AußenPosY: %f\r\n",Haus[hausid][Pos][1]),fwrite(f,inhalt);
    format(inhalt,35,"AußenPosZ: %f\r\n",Haus[hausid][Pos][2]),fwrite(f,inhalt);
    format(inhalt,35,"InnenPosX: %f\r\n",Haus[hausid][Pos][3]),fwrite(f,inhalt);
    format(inhalt,35,"InnenPosY: %f\r\n",Haus[hausid][Pos][4]),fwrite(f,inhalt);
    format(inhalt,35,"InnenPosZ: %f\r\n",Haus[hausid][Pos][5]),fwrite(f,inhalt);
    format(inhalt,35,"Interior: %d\r\n",Haus[hausid][Int]),fwrite(f,inhalt);
    format(inhalt,35,"VirtualWorld: %d\r\n",Haus[hausid][VirtualWorld]),fwrite(f,inhalt);
    format(inhalt,35,"Preis: %d\r\n",Haus[hausid][Preis]),fwrite(f,inhalt);
    fclose(f);
    return true;
    }
    stock CreateHaus(Owner[],Float:X,Float:Y,Float:Z,Float:iX,Float:iY,Float:iZ,Interior,p)
    {
    new ID=GetFreeHausID();
    if(ID==-1) print("Es sind bereits zuviele Häuser erstellt worden | Lösch zu erst eins");
    format(Haus[ID][Besitzer],MAX_PLAYER_NAME,Owner);
    Haus[ID][Gekauft]=false;
    Haus[ID][Abgeschlossen]=true;
    Haus[ID][Pos][0]=X;
    Haus[ID][Pos][1]=Y;
    Haus[ID][Pos][2]=Z;
    Haus[ID][Pos][3]=iX;
    Haus[ID][Pos][4]=iY;
    Haus[ID][Pos][5]=iZ;
    Haus[ID][Int]=Interior;
    Haus[ID][Preis]=p;
    Haus[ID][VirtualWorld]=GetFreeInteriorVW(Haus[ID][Int]);
    Haus[ID][PickupID] = CreatePickup(1273,1,X,Y,Z);
    for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) SetPlayerMapIcon(i,STARTMAPICON+ID,X,Y,Z,31,0xFFFFFFFF);
    new string[55];
    format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
    Haus[ID][Label] = Create3DTextLabel(string,0x33AA33FF,X,Y,Z,100.0,0,1);
    return ID;
    }
    stock DeleteHaus(hausid)
    {
    strdel(Haus[hausid][Besitzer],0,MAX_PLAYER_NAME);
    Haus[hausid][Gekauft]=false;
    Haus[hausid][Abgeschlossen]=false;
    Haus[hausid][Pos][0]=0;
    Haus[hausid][Pos][1]=0;
    Haus[hausid][Pos][2]=0;
    Haus[hausid][Pos][3]=0;
    Haus[hausid][Pos][4]=0;
    Haus[hausid][Pos][5]=0;
    Haus[hausid][Int]=0;
    Haus[hausid][VirtualWorld]=0;
    DestroyPickup(Haus[hausid][PickupID]);
    Delete3DTextLabel(Haus[hausid][Label]);
    for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) RemovePlayerMapIcon(i,STARTMAPICON+hausid);
    new pfad[20];
    format(pfad,20,"Häuser/Haus %d.ini",hausid);
    fremove(pfad);
    return true;
    }


    public OnFilterScriptInit()
    {
    for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
    return true;
    }
    public OnFilterScriptExit()
    {
    for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
    return true;
    }
    public OnGameModeExit()
    {
    for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
    return true;
    }


    Hoffe jemand kann mir deswegen nochmal helfen.

  • Pickups ( Icons ) & 3DTextlabel werden generell unter "OnGameModeInit" geladen :)

  • Oh ok. :D Wüsstest du viell. auch noch was ich da genau einfügen muss damit die hausicons und 3d texte geladen werden?


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Simple House System by Antironix");
    print("--------------------------------------\n");
    AddHouse(0, 1442.9769,-629.5287,95.7186, 2317.8201,-1024.7500,1050.2109, 0, 0, 9, 0);
    AddHouse(1, 1980.9896,-1719.0171,17.0304, 328.1465, 1478.4457,1084.4375, 0, 0, 15, 0);
    AddHouse(2, 2786.9287,-1926.0109,13.5469, 346.870025 ,309.259033, 999.155700, 0, 0, 10, 0);
    AddHouseCar(1, 429, 1975.3328,-1709.8126,15.9688, 0, 0, 5*60*1000);//5 min respawn delay
    SetTimer("rentfee", 1*60*60*1000, 1);//1 hour
    SetTimer("newcar", CAR_DELIVER_TIME*60*10*1000,1);//1 hour
    return 0;
    }

  • Du hast es doch hier schon stehen, im ersten Post:
    public OnFilterScriptInit()
    {
    for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
    return true;
    }
    public OnFilterScriptExit()
    {
    for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
    return true;
    }


    Wenn du die 3DLabels auch beim Laden erstellen willst, dann musst du das bei "LoadHaus" nach dem CreatePickup machen.


    Und ändere
    return 0;
    zu:
    return 1;
    in OnFilterScriptInit.

  • Ja aber die icons werden auch nicht geladen . Ich versteh das grad net. :P


    //EDIT Ups hab gerade gesehen das OnFilterScriptInit was ich gepostet habe war falsch.


    Das ist das richtige
    public OnFilterScriptInit()
    {
    for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
    return true;
    }
    public OnFilterScriptExit()
    {
    for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
    return true;
    }


    Was genau muss ich bei loadhaus reinschreiben damit die texte und icons geladen werden?

  • Für die Labels:
    new string[55];
    format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[hausid][Preis]);
    Haus[hausid][Label] = Create3DTextLabel(string,0x33AA33FF,X,Y,Z,100.0,0,1);
    Oder was sonst eben dort stehen soll, je nach dem.


    Für die Icons (=Pickup?):
    Das hast du schon drin. Wenn der Filterscript korrekt geladen wird sollte es das anzeigen. Füge gegebenenfalls vor
    return true; in LoadHaus diesen print ein: printf("Haus %d geladen.", hausid); Dann weißt du, ob es korrekt aufgerufen worden ist.

  • Ja.


    23:51:43]
    [23:51:43] Filterscripts
    [23:51:43] ---------------
    [23:51:43] Loading filterscript 'Haussystem.amx'...
    [23:51:43] Haus 0 geladen.
    [23:51:43] Loaded 1 filterscripts.


    [23:51:43] Es wurden 300 Objekte geladen!
    [23:51:43]
    ----------------------------------
    [23:51:43]
    [23:51:43] ----------------------------------


    [23:51:43] Number of vehicle models: 28
    [23:52:03] [connection] 25.7.137.101:60909 requests connection cookie.
    [23:52:04] Incoming connection: 25.7.137.101:60909 id: 0
    [23:52:05] [join] [SomL]RePnaIx has joined the server (0:25.7.137.101)
    [23:52:50] Es wurden 300 Objekte geladen!


    Also wenn ich den server mit /gmx neustarte werden die häuser geladen aber halt ohne icons/Text.
    //Edit Die Häuser werden auch nur gespeichert wenn ich den Server ingame mit /gmx neustarte...
    Also habe gerade mal so rum getestet und habe gemerkt dass wenn ich ein Haus erstelle muss ich den server ingame mit /gmx neustarten damit das haus gespeichert wird. Dann muss ich das game beenden die server exe schliessen und wieder starten und schon sind die icons wieder da. Also so scheint es zu klappen. Hm... :D


    Danke für die hilfe! :)