Dynamisches Haussystem by DrMurphy (umfangreich) [V. 2.2]

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
  • Dynamisches Haussystem
    by DrMurphy [V. 2.2]


    Guten Abend zusammen, heute möchte ich euch die neue Version von meinem dynamischen Haussystem vorstellen.
    Mit der neuen Version 2.2 wurden zwei Buggs behoben, wodurch das System nun wieder flüssig läuft. Die Daten werden nun wieder gespeichert und auch das angegebene Limit an maximal besitzbaren Häusern wird vom System berücksichtigt.
    Vorab einmal die Information, dass dieses System kostenlos ist und somit jedem Server zur Verfügung steht. Ich möchte jedem Server ein schönes System bieten, der es gebrauchen kann. Ich bin mir durchaus der Tatsache bewusst, dass viele Sever dieses System alleine für ihre eigenen Zwecke missbrauchen und es als ihr eigenes ausgeben. Ebenso weiß ich jedoch auch, dass es vielen richtigen Server helfen kann, und das ist es, was mich antreibt.


    Das System basiert auf dini, wodurch es bei manchen Leuten als "schlechter" abgestempelt wird. Es ist jedoch zu sagen, dass dieses System, wie bereits erwähnt, für alle Server zur Verfügung stehen soll und da es nicht selbstverständlich ist, dass man eine MySQL Datenbank besitzt, oder man sie schlichtweg nicht verwenden möchte, ist dini hier deutlich die bessere Wahl. Sollte es nun dennoch Leute geben, die das System noch immer als "schlechter" bezeichnen, nur weil dini verwendet wird, so kann ich daran auch nichts ändern. Ich kann nur sagen, dass man das System erst ausprobieren sollte, bevor man sich ein negatives Urteil erlauben kann.



    Funktionen des Systems:


    [tabmenu]


    [tab='Kurze Übersicht']
    Einstellungen per config-Datei:

    • Einstellung, ob Häuser gemietet werden können oder nicht
    • Einstellung des maximalen und minimalen Mietpreises
    • Einstellung der maximalen Anzahl von Mietern pro Haus
    • Einstellung, ob der Besitzer eines Hauses ein anderes Interior kaufen kann
    • Einstellung der maximalen Anzahl von kaufbaren Häusern pro Spieler
    • Einstellung, ob Upgrades für Häuser gekauft werden können (Heal-/Armourpoint)
    • Einstellung des Preises für einen Heal-/Armourpoint
    • Einstellung, ob das integrierte Spawnsystem genutzt werden soll

    Ingame Management durch Admins:

    • neue Häuser erstellen mit Kaufpreis, Mindestlevel, Interior, minimalem Mietpreis und maximalem Mietpreis
    • bereits erstellte Häuser löschen
    • neue Interiors erstellen, welche dann in Häusern verwendet werden können
    • bereits erstellte Interiors löschen

    Ingame Management durch Spieler:

    • Informationen von erstellten Häusern im Dialog anzeigen lassen
    • Häuser kaufen
    • Häuser zum halben Kaufpreis verkaufen
    • Upgrades für Häuser kaufen
    • Ein- und Auszahlen in bzw. aus der Hauskasse
    • Häuser auf-/abschließen
    • Häuser betreten und verlassen
    • Andere Interiors für eigenes Haus kaufen
    • Einstellen, ob das eigene Haus für andere Spieler mietbar ist
    • Einstellen des Mietpreises
    • Kündigen von Mietern
    • Häuser mieten
    • Miete kündigen
    • Auflistung aller verfügbaren Interiors
    • Vorschau eines verfügbaren Interiors durch Teleportation in das Interior
    • eigenen Spawnpunkt ändern (eigenes Haus oder Noobspawn)
    • Mieter zahlen ihre Miete automatisch am PayDay des Haussystems (alle 60 Minuten). Können sie dies nicht, so wird die Miete gekündigt.

    [tab='Ingame Befehle']
    Adminbefehle: (falls Spieler als rcon Admin eingeloggt ist)

    • /chaus [Kaufpreis] [Mindestlevel] [Interior ID] [minimale Miete] [maximale Miete] = neues Haus erstellen (Das Level eines Spielers wird mit GetPlayerScore ausgelesen)
    • /delhaus = Haus in der Nähe löschen
    • /cinterior [Interior ID] [Spawn X] [Spawn Y] [Spawn Z] [Kaufpreis] = neues Interior dem System beifügen
    • /delinterior [Interior ID] = Interior aus dem System entfernen

    Spielerbefehle:

    • /listinteriors = zeigt eine Liste aller verfügbaren Interiors an, die dem System beigefügt wurden
    • /sinterior [Interior ID] = zeigt eine Vorschau des Interiors an
    • /linterior = verlässt die Vorschau
    • /hinterior [Interior ID] = kauft das Interior für das eigene Haus
    • /hinfo = zeigt Informationen über das Haus in der Nähe an
    • /hhilfe = zeigt alle verfügbaren Befehle des Systems an
    • /hkaufen = kauft das Haus in der Nähe
    • /hverkaufen = verkauft das eigene Haus
    • /hupgrade = kauft Upgrades für das eigene Haus (Heal-/Armourpoint)
    • /hauf = schließt das eigene Haus auf
    • /hzu = schließt das eigene Haus zu
    • /henter = betritt das Haus in der Nähe
    • /hexit = verlässt das Haus
    • /hmietbar = stellt ein, ob das eigene Haus für andere Spieler mietbar ist oder nicht
    • /hmiete [Mietpreis] = stellt den Mietpreis für das eigene Haus pro PayDay ein, den Mieter zahlen müssen.
    • /hkickmieter [Mieter ID] = kündigt die Miete des angegebenen Mietern. (Mieter ID ist per /hinfo zu erfahren)
    • /hrent = mietet das Haus in der Nähe
    • /hunrent = kündigt die Miete des Hauses in der Nähe
    • /hchangespawn = ändert den eigenen Spawnpunkt

    [tab='Dateien des Systems']
    Die Config-Datei:


    - Anzahl Häuser=0 (Dieser Wert gibt die Häuseranzahl an, die geladen werden soll. Der Wert sollte nicht verändert werden)
    - Max_Haus= (Dieser Wert muss direkt im Filterscript geändert werden und gibt die maximale Anzahl von Häusern an. Man sollte ihn nicht unnötig hoch setzen, das es den Server belastet)
    - Max_Häuser_Kaufbar=1 (Dieser Wert gibt die maximale Anzahl an Häusern an, die ein Spieler besitzen kann)
    - Mietbar=1 (Dieser Wert gibt an, ob Häuser mitbar sind oder nicht. mietbar = 1 ; nicht mietbar = 0)
    - Max_Miete=-1 (Dieser Wert gibt den maximalen Mietpreis an. kein maximaler Mietpreis = -1)
    - Min_Miete=-1 (Dieser Wert gibt den minimalen Mietpreis an. kein minimaler Mietpreis = -1)
    - Max_Mieter=10 (Dieser Wert gibt die maximale Anzahl an Mietern pro Haus an. Sie sollte nach Erstellung des ersten Hauses nicht mehr verändert werden, da dadurch vorhandene Mieter möglicherweise gelöscht werden)
    - Interiorkauf=1 (Dieser Wert gibt an, ob Besitzer eines Hauses ein neues Interior für ihr Haus kaufen können oder nicht. Kauf von Interiors möglich = 1 ; Kauf nicht möglich = 0)
    - Upgrades=1 (Dieser Wert gibt an, ob Besitzer eines Hauses Upgrades kaufen können oder nicht. ja = 1 ; nein = 0)
    - Healpoint_Preis=5000 (Dieser Wert gibt den Preis eines Healpoints an)
    - Armourpoint_Preis=5000 (Dieser Wert gibt den Preis eines Armourpoints an)
    - PayDay=0 (Dieser Wert gibt an, wann der nächste PayDay stattfindet. Ein PayDay findet bei dem Wert 60 statt)
    - Nutze_Spawnsystem=0 (Dieser Wert gibt an, ob das inegrierte Spawnsystem des Haussystems genutzt werden soll oder nicht. Sollte es genutzt werden, so wird das Spawnsystem des Servers möglicherweise überschrieben. Spawnsystem des Haussystems nutzen = 1 ; nicht nutzen = 0)
    - S_Spawnx=0.000000 (Dieser Wert speichert die x-Koordinate des Noobspawns. Wird nicht benötigt, falls "Nutze_Spawnsystem" den Wert "0" hat)
    - S_Spawny=0.000000 (Dieser Wert speichert die y-Koordinate des Noobspawns. Wird nicht benötigt, falls "Nutze_Spawnsystem" den Wert "0" hat)
    - S_Spawnz=0.000000 (Dieser Wert speichert die z-Koordinate des Noobspawns. Wird nicht benötigt, falls "Nutze_Spawnsystem" den Wert "0" hat)



    Die Haus-Datei:


    - ID=... (Dieser Wert gibt die ID des Hauses an)
    - Preis=... (Dieser Wert gibt den Preis des Hauses an)
    - Level=... (Dieser Wert gibt das Mindestlevel an, welches für den Kauf benötigt wird)
    - Besitzer=Niemand (Dieser Wert gibt an, wer der Besitzer des Hauses ist. Kein Besitzer = Niemand)
    - PosX=... (Dieser Wert gibt die x-Koordinate des Pickups des Hauses an)
    - PosY=... (Dieser Wert gibt die y-Koordinate des Pickups des Hauses an)
    - PosZ=... (Dieser Wert gibt die z-Koordinate des Pickups des Hauses an)
    - Interior=... (Dieser Wert gibt an, welches Interior das Haus verwendet)
    - Old_Interior=... (Dieser Wert gibt an, welches Interior das Haus bei Erstellung hatte. Bei Verkauf des Hauses wird das Interior wieder auf dieses Interior zurückgesetzt)
    - VirtualWorld=... (Dieser Wert gibt die virtuelle Welt des Hauses an)
    - Mietbar=0 (Dieser Wert gibt an, ob das Haus für andere Spieler mietbar ist oder nicht)
    - Min_Miete=-1 (Dieser Wert gibt die minimale Miete für das Haus an. Dieser Wert ÜBERSCHREIBT den Wert minimale Miete in der config-Datei. Das heißt für dieses Haus gilt die minimale Miete der config-Datei nicht. minimale Miete der config-Datei nutzen = -1)
    - Max_Miete=-1 (Dieser Wert gibt die maximale Miete für das Haus an. Dieser Wert ÜBERSCHREIBT den Wert maximale Miete in der config-Datei. Das heißt für dieses Haus gilt die maximale Miete der config-Datei nicht. maximale Miete der config-Datei nutzen = -1)
    - Aktiv=1 (Dieser Wert gibt an, ob das Haus vom System geladen werde soll oder nicht. Wenn ein Haus ingame gelöscht wird, wird der Wert auf 0 gesetzt. Haus laden = 1 ; nicht laden = 0)
    - Offen=0 (Dieser Wert gibt an, ob das Haus auf- oder zugeschlossen ist. Haus auf = 1 ; Haus zu = 0)
    - Healpoint=0 (Dieser Wert gibt an, ob das Haus einen Healpoint hat. ja = 1 ; nein = 0)
    - Armourpoint=0 (Dieser Wert gibt an, ob das Haus einen Armourpoint hat. ja = 1 ; nein = 0)
    - Mietpreis=0 (Dieser Wert gibt den aktuellen Mietpreis des Hauses an)
    - Mieter0=Niemand (Dieser Wert gibt den Namen des Mieters an, der die Mieter ID 0 hat. Kein Mieter mit der ID 0 = Niemand)
    - Mieter1=Niemand
    - Mieter...=Niemand



    Die Interior-Datei:


    - Interior_ID=... (Dieser Wert gibt die ID des Interiors an)
    - SpawnX=0.000000 (Dieser Wert gibt die x-Koordinate des Spawns in dem Interior an)
    - SpawnY=0.000000 (Dieser Wert gibt die y-Koordinate des Spawns in dem Interior an)
    - SpawnZ=0.000000 (Dieser Wert gibt die z-Koordinate des Spawns in dem Interior an)
    - Preis=0 (Dieser Wert gibt den Preis für das Interior an, den der Besitzer eines Hauses zahlen muss, falls er sich dieses Interior kaufen möchte)



    Die Spieler-Datei:


    - Anzahl_Häuser=0 (Dieser Wert gibt an, wie viele Häuser der Spieler besitzt)
    - Spawn=0 (Dieser Wert gibt an, wo der Spieler spawnen möchte. Am Noobspawn = 0 ; Im eigenen oder gemieteten Haus = 1)
    [/tabmenu]


    Changelog:
    Version 2.2:

    • Es wurde der Bug behoben, dass das System seine Daten nicht gespeichert hat. Diese werden nun nach jeder Aktion des Systems direkt gespeichert, wodurch nichts mehr verloren geht.
    • Es wurde der Bug behoben, dass man unendlich viele Häuser kaufen konnte, obwohl in der confog-Datei ein Limit angegeben war.


    Version 2.1:

    • Es wurde der Bug behoben, dass keine Häuser gekauft werden konnten.
    • Der Bug, dass jedes Haus, unabhängig der Einstellung in der config-Datei und der Einstellung des Besitzers des Hauses, gemietet werden konnte, wurde behoben.
    • Blaue Schriftzüge sind nun hellblau, damit sie besser zu erkennen sind.
    • 3DTextLabel sind nun über dem Pickup des Hauses plaziert, damit beides besser zu erkennen ist.


    Version 2.0:

    • Es gibt nun die Möglichkeit eigene Häuser auf- bzw. zuschließen zu können
    • Der Besitzer eines Hauses kann nun Upgrades kaufen, falls dies in der config-Datei erlaubt ist (Heal-/Armourpoint)
    • Beim Erstellen eines neuen Hauses gibt es nun die Möglichkeit ein Mindestlevel anzugeben, welches der Spieler haben muss, um das Haus zu kaufen. (Das Level des Spielers wird mit der Funktion "GetPlayerScore" ausgelesen)
    • Es wurde der Bug behoben, dass es Überschneidungen mit erstellten Dialogen aus dem Hauptscript gab
    • Es wurde der Bug behoben, dass gelöschte Häuser bis zum nächsten Serverrestart noch immer existierten, auch wenn diese nicht mehr sichtbar waren. (Dies führte zu kleinen Fehlern im System, da bei der Positionsabfrage mit "IsPlayerInRangeOfPoint" noch das gelöschte Haus gefunden werden konnte.)

    Ich freue mich über weitere Verbesserungsvorschläge und Bugmeldungen.


    Vorhandene Buggs:


    • Derzeit sind keine Buggs bekannt



    Release der nächsten Version:
    Bei weiteren Bugmeldungen oder Verbesserungsvorschlägen, wird eine neue Version erscheinen.




    Vorraussetzungen für die Funktionalität des Systems:

    • dini Include
    • sscanf2 include
    • sscanf2 Plugin installiert
    • folgende Ordner im Scriptfiles Ordner erstellt: Haus, HSpieler, Interiors
    • Euer Gamemode, sowie alle anderen Filterscripts müssen beim Callback "OnDialogResponse" den Wert "return 0" wiedergeben, da sonst die Dialoge des Haussystems nicht funktionieren


    Download Version 2.2:
    Wenn ihr etwas von file-upload.net runterladet, dann müsst ihr dort auf den kleinen, blauen "Download" Button in der Mitte rechts klicken. Über dem Button steht die Dateigröße und die Downloadzahl. Die anderen Download Buttons sind Werbung.

    Kompletter Serverordner (0.3.7): http://www.file-upload.net/dow…mplettServerv2.2.rar.html

    Ordner mit allen notwendigen Dateien: http://www.file-upload.net/dow…stemkomplettv2.2.rar.html

    Nur das Filterscript: http://www.file-upload.net/dow…2/Haussystemv2.2.rar.html
    [/color]


    Mit freundlichen Grüßen
    DrMurphy


  • Lösch alle Häuser aus dem System (Dateien löschen) oder stell die Zahl in der config-Datei bei "Anzahl_Häuser" auf die Anzahl der vorhandenen Häuser

  • gefällt mir ziemlich gut.
    Würde mich freuen wenn dass mit dem Maximalen Häusern gefixt werden würde :)
    Ansonsten super System, besonders weil ich ein Anfänger bin ;)
    9/10
    Wenn es behoben wird 10/10 :)


    //EDIT: Bei mir kommt die ganze Zeit Du bist kein Admin? wieso das den? habe es so versucht, aber auch einmal mit meinem richtigen Script verbunden. funktioniert leider beides nicht :/ PLS HELP

    Einmal editiert, zuletzt von Flaw ()

  • jetzt geht es :) abeer, es muss doch irgentwie funktionieren dass man es auch per IngameAdmin machen kann?
    &
    Ich kaufe das Haus InGame, aber es speicher nicht in meine Spielerdatei -.-"

    stock saveSpielerDaten()
    {
    for(new i = 0; MAX_PLAYERS > i; i++)
    {
    new SDatei[128];
    format(SDatei,sizeof(SDatei),"/Accounts/%s.txt",getPlayerName(i));
    dini_IntSet(SDatei,"Anzahl_Häuser",playerD[i][ahaus]);
    dini_IntSet(SDatei,"Spawn",playerD[i][spawn]);
    }
    return 1;
    }

    das regt mich grad voll auf :(
    BITTE UM SCHNELLE HILFE

    Einmal editiert, zuletzt von Flaw ()

  • Danke :D kannst du mir den auch irgentwie helfen, meine beiden Scripts etc. zu "vereinen"? bin wie gesagt nen neuling im gebiet scripting^^

    Ich würde es als Filterscript lassen, da man bei der Zusammenführung ein paar Dinge beachten müsste. Ich habe in den nächsten Tagen leider keine Zeit, dir dabei zu helfen.



    Ich finde dieses System garnicht mal so Schlecht :)
    6/10

    Das freut mich. Was könnte ich deiner Meinung nach denn noch verbessern, wenn du mir 4 Punkte vorenthälst? :)

  • BEi mir kommt wenn man nicht direkt im Pickup steht, "Server: Unknown Command"
    Es geht nur wenn man direkt im Pickup steht, sonst kommt diese nachricht, bitte beheben dass diese nachricht auftritt :)


    Da bin ich selbst ratlos. Wenn ich mir den Code ansehe, muss es funktionieren. Ich halte es für einen Bug seitens SAMP.

  • print("\n-------------------------------------------------------------");
    print("Dynamisches Haussystem by DrMurphy erolgreich geladen!");
    print("-------------------------------------------------------------\n");


    Das muss aber in der Log stehen :good:
    Wenn das nicht kommt, läd das Filterscript bei dir nicht.