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

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
  • Version 2.1:
    [ FILTERSCRIPT ] Dynamisches Haussystem by DrMurphy (umfangreich) [V. 2.1]


    Dynamisches Haussystem
    by DrMurphy [V. 2.0]



    Guten Abend zusammen,
    heute möchte ich euch die neue Version von meinem dynamischen Haussystem vorstellen. Mit neuen Funktionen, behobenen Buggs und einer besseren Präsentation versuche ich erneut bei euch zu punkten, nachdem schon die Version 1.6 große Erfolge brachte.
    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.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:

    • Unabhängig der Einstellung in der config-Datei und der Einstellung des Besitzers eines Hauses, kann man ein Haus jeder Zeit mieten, auch wenn dies durch die config-Datei oder den Besitzer verboten wurde. (Behoben in Version 2.1)

    Release der nächsten Version:
    Version 2.1 erscheint am 17.03.2014 um ca. 19 Uhr.




    Vorraussetzungen für die Funktionalität des Systems:

    • dini Include
    • sscanf2 include
    • sscanf2 Plugin installiert
    • folgende Ordner im Scriptfiles Ordner erstellt: Haus, HSpieler, Interiors


    Download Version 2.0:

    Wenn ihr etwas von file-upload.net runterladet, dann müsst ihr dort auf den kleinen "Download" Button in der Mitte rechts klicken. Die anderen Download Buttons sind Werbung.


    Hinweis: Wenn ihr euch schon etwas vor dem 16.03.2014 um 00:35 Uhr runtergeladen habt, dann müsst ihr es erneut runterladen, da ich versehentlich eine alte Version des Scripts hochgeladen habe.

    Kompletter Serverordner (0.3z): http://www.file-upload.net/dow…rverordner-0.3z-.rar.html

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

    Nur das Filterscript: http://www.file-upload.net/dow…0--Filterscript-.rar.html

    Pastebin: http://pastebin.com/vPAY0UAs


    Mit freundlichen Grüßen
    DrMurphy

  • Naja man kann viel machen damit es besser arbeitet


    Nun ma zu den Kritikpunkten
    - Dialog ID´s sollten im Filterscript nicht bei 0 beginnen da die sich sonst mit den Gamemode beißen
    - Warum Dini und nicht die standart file Funktion? Du nutzt ja das sscanf 2 plugin da währe das Auslesen einfacher
    - format(hauscfg,sizeof(hauscfg),"/cfghaus.cfg"); Warum formatierst du das?
    - Warum nutzt du dcmd und strcmp ? eines davon sollte auch ausreichen
    - Die ganzen leeren Callbacks können rausgenommen werden

    All in all it's just another brick in the wall

  • dcmd nutze ich lediglich für Commands mit Parametern. strcmp für Commands ohne Parameter.


    Beavis
    Das mit den Dialog IDs hatte ich in der alten Version des Systems geändert und nun vergessen in die neue Version zu übernehmen. Ich danke dir für den Hinweis. Die Downloadlinks wurden durch die neuen Dateien ersetzt.

  • Mir gefällt dein Script sehr!


    Ich habe mir den ganzen ServerOrdner heruntergeladen, bin vor ein Haus gegangen und habe die postition vor der tür gespeichert, dort das interior und dann das haus erstellt, jedoch kann ich das Haus nicht kaufen... das Grüne drehende haus vor der tür zeigt weiterhin an es wäre FREI! ;(

  • Sieht sehr gut aus, ich habe nur ein Problem wenn ich /hkaufen mache und bestätige passiert nichts
    wenn ich über den Scriptfiles/haus in der Config ändere wem das Haus gehört funktioniert es, aber ich dachte man kann es ingame machen ^^

    Einmal editiert, zuletzt von DukeBanG ()