Beiträge von BlackFoX

    Die Physik in GTA IV ist der Hammer, vom schadensmodel her find ich es erste Klasse + sehr gutem Detail,
    wobei die Leistung dafür auch dem entsprechend sein muss

    Nach dem motto ich frag was, die Admins geben mir den Finger (etwas Hilfe) und ich möcht gleich die ganze Hand
    und wenn dann nichts kommt werden Leute mit Pn's gebombert oder in ICQ genervt . Man kann zwar Hilfe erwarten aber nicht sofort.
    Ich finde die Leute die sich beschweren sollten einen Tag selber den Adminposten übernehmen und schauen wie das so aussieht wenn man
    in Pn's ertrinkt + Unnötige Spam posts und Kiddys die sich gegenseitig schlechte Wörter gegen den Kopf werfen .
    Ich glaub seid Breadfish nicht mehr da ist meint sowieso nur noch jeder zu machen was er möchte und wie es ihm grad beliebt

    stock LoadHouseInfo()
    {

    if(INI_Open("/Houses/haus.cfg"))
    {
    new loader[128];
    for(new i=0;i<MAX_H;i++)
    {
    format(loader,sizeof(loader),"Exists_%d",i);
    HouseInfo[i][Exists] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Besitzer_%d",i);
    INI_ReadString(HouseInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
    printf("Besitzer_%d : %s",i,HouseInfo[i][Besitzer]);
    format(loader,sizeof(loader),"EnterX_%d",i);
    HouseInfo[i][EnterX] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"EnterY_%d",i);
    HouseInfo[i][EnterY] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"EnterZ_%d",i);
    HouseInfo[i][EnterZ] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"ExitX_%d",i);
    HouseInfo[i][ExitX] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"ExitY_%d",i);
    HouseInfo[i][ExitY] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"ExitZ_%d",i);
    HouseInfo[i][ExitZ] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Locked_%d",i);
    HouseInfo[i][Locked] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Preis_%d",i);
    HouseInfo[i][Preis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Level_%d",i);
    HouseInfo[i][Level] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Interior_%d",i);
    HouseInfo[i][Interior] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"VirtualWorld_%d",i);
    HouseInfo[i][VirtualWorld] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Owned_%d",i);
    HouseInfo[i][Owned] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"PickupID_%d",i);
    HouseInfo[i][PickupID] = INI_ReadInt(loader);
    if(HouseInfo[i][Exists])
    {
    if(HouseInfo[i][Owned] == 0)
    {
    HouseInfo[i][PickupID] = CreateStreamPickup(1273, 1, HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ],PICKUP_RANGE);
    CreateMapIcon(31,0,HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ]);
    }
    else
    {
    HouseInfo[i][PickupID] = CreateStreamPickup(1239, 1, HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ],PICKUP_RANGE);
    CreateMapIcon(32,0,HouseInfo[i][EnterX],HouseInfo[i][EnterY],HouseInfo[i][EnterZ]);
    }
    Created_Houses++;
    }
    }
    INI_Close();
    }
    return 1;
    }



    Ich hab getan was ich konnte,, test es mal

    Auf gtainside.de findest du Patches für das verändern des Spiels, außerdem gehen im mom. keine weiteren Hacks, aber es
    gibt abhilfe durch Alice Ultimate , einfach mal Googlen , dort ist auch ein Car Spawner Beispiel dabei

    Du kannst den Textdraw für jeden Spieler erstellen , und in OnPlayerConnect schieben, und in OnPlayerDisconnect zerstören
    das spart Resourcen, die Geld setzung musst du wenn du keine eigene Geld Funktion hast per Timer Aktualisieren,
    ich hätte mir aber eigene Funktionen gebaut das spart wieder einen Timer und lag verursacher

    stock SaveTankInfo()
    {
    fremove("/Tanken/tanken.cfg");
    INI_Create("/Tanken/tanken.cfg");
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    new saver[128];
    for(new i=0;i<MAX_T;i++)
    {
    if(TankInfo[i][Exists])
    {
    format(saver,sizeof(saver),"X_%d",i);
    INI_WriteFloat(saver,TankInfo[i][X]);
    format(saver,sizeof(saver),"Y_%d",i);
    INI_WriteFloat(saver,TankInfo[i][Y]);
    format(saver,sizeof(saver),"Z_%d",i);
    INI_WriteFloat(saver,TankInfo[i][Z]);
    format(saver,sizeof(saver),"Besitzer_%d",i);
    INI_WriteString(saver,TankInfo[i][Besitzer]);
    format(saver,sizeof(saver),"Preis_%d",i);
    INI_WriteInt(saver,TankInfo[i][Preis]);
    format(saver,sizeof(saver),"Lpreis_%d",i);
    INI_WriteInt(saver,TankInfo[i][Lpreis]);
    format(saver,sizeof(saver),"Inhalt_%d",i);
    INI_WriteInt(saver,TankInfo[i][Inhalt]);
    format(saver,sizeof(saver),"Owned_%d",i);
    INI_WriteInt(saver,TankInfo[i][Owned]);
    format(saver,sizeof(saver),"Exists_%d",i);
    INI_WriteInt(saver,TankInfo[i][Exists]);
    }
    }
    INI_Save();
    INI_Close();
    }
    return 1;
    }


    Du musst vorher abfragen ob sie exestieren

    Also beim Speichern vorher die schon vorhandene Datei löschen und neu zusammenstellen lassen, ist so am sichersten,
    immer abfragen ob auch diese Tanke vom Admin/User erstellt wurde das heißt per extra key, keys die nicht exestieren geben
    Automatisch 0 zurück also exestiert sie nicht

    Die tanken die du erstellt hast kannste löschen, du musst neue erstellen damit diese als erstellt markiert werden

    stock LoadTankInfo()
    {
    if(INI_Open("/Tanken/tanken.cfg"))
    {
    for(new i=0;i<MAX_T;i++)
    {
    new loader[128];
    format(loader,sizeof(loader),"Exists_%d",i);
    TankInfo[i][Exists] = INI_ReadInt(loader);
    if(TankInfo[i][Exists])
    {
    format(loader,sizeof(loader),"X_%d",i);
    TankInfo[i][X] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Y_%d",i);
    TankInfo[i][Y] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Z_%d",i);
    TankInfo[i][Z] = INI_ReadFloat(loader);
    format(loader,sizeof(loader),"Besitzer_%d",i);
    INI_ReadString(TankInfo[i][Besitzer],loader,MAX_PLAYER_NAME);
    format(loader,sizeof(loader),"Preis_%d",i);
    TankInfo[i][Preis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Lpreis_%d",i);
    TankInfo[i][Lpreis] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Inhalt_%d",i);
    TankInfo[i][Inhalt] = INI_ReadInt(loader);
    format(loader,sizeof(loader),"Owned_%d",i);
    TankInfo[i][Owned] = INI_ReadInt(loader);
    Erstellte_Tanken++;
    }
    }
    INI_Close();
    }
    return 1;
    }


    Du musst vorher ,,exist´´ laden und dann abfragen

    if(TankInfo[exist])
    {
    // Laden
    }

    vorher musst du aber exist als Integer wert laden ^^


    dieses ,,exist´´ setzt du auf 1 sobald du eine neue Tanke erstellst , beim Speichern muss genauso diese abfrage sein,
    damit er weiss ob die Tankstelle eig. erstellt wurde, ansonsten führt das auf 0 Zurück und es kann sein das einiges nicht mehr Funktioniert.

    Man könnte dies folgendermaßen gestallten :


    - Bei OnPlayerUpdate , den Spieler in Position des Helis setzen
    - ihn mit etwas abstand vom Helikopter mit SetPlayerPos immer den z Minus nehmen


    Doch das problem besteht wieder darin die Landschaft zu berechnen , die Karte von Sa hat einen Koordinaten Umfang von -3000.00 bis 3000.0+
    Also wird das unmöglich sein

    Denk Key das die Tanke exestiert setzt du am besten wenn du die Tanke erstellst, sonst lädt er ja bis MAX_T , da aber nicht alle exestieren werden,
    und die Coords 0.0 und die Werte 0 oder Null String enthalten werden Tanken geladen die dann im Koordinaten Punkt 0.0 auf xyza erscheinen mit einem
    Non Besitzer und keinem bestimmten Preis