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

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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.0:
    [ FILTERSCRIPT ] Dynamisches Haussystem by DrMurphy (umfangreich) [V. 2.0]


    Dynamisches Haussystem by DrMurphy



    Guten Abend zusammen,
    ich möchte euch heute mein dynamisches Haussystem vorstellen. Ich weiß, dass es bereits viele solcher Systeme hier im Forum gibt, jedoch denke ich, dass mein System schon etwas besonderes ist, das man es in diesem Umfang oftmals nicht kostenlos bekommt. Ich hoffe, dass es euch gefällt und freue mich über positive und auch negative Kritik, wodurch ich das System verbessern kann.
    Das Speichersystem ist zur Zeit noch dini, jedoch werde ich es in zukünftigen Versionen auch mit MySQL anbieten.



    Funktionen des Systems:


    - Einstellungen, die in einer config-Datei gemacht werden können:
    - Können Häuser gemietet werden oder nicht?
    - Was ist der minimale Mietpreis?
    - Was ist der maximale Mietpreis?
    - Was ist die maximale Anzahl an Mietern pro Haus?
    - Kann der Besitzer eines Hauses ein anderes Interior kaufen?
    - Soll das integrierte Spawnsystem des Haussystems genutzt werden?
    - Wie viele Häuser darf ein Spieler besitzen?


    - Ingame Management der Häuser von Admins:
    - Haus erstellen mit Kaufpreis, Interior, minimalem Mietpreis und maximalem Mietpreis
    - Löschen von bereits erstellten Häusern
    - Erstellen von neuen Interiors, die in Häusern genutzt werden können
    - Löschen von bereits erstellten Interiors


    - Ingame Management der Häuser von Spielern:
    - Informationen von erstellten Häusern im Dialog anzeigen
    - Häuser kaufen
    - Häuser verkaufen für halben Kaufpreis
    - Haus betreten und verlassen
    - Anderes Interior für eigenes Haus kaufen (falls in config-Datei erlaubt)
    - Einstellen, ob das eigene Haus für andere mietbar ist (falls in config-Datei erlaubt)
    - Einstellen des Mietpreises (muss sich im Rahmen des minimalen und maximalen Mietpreises befinden)
    - Kündigen eines Mieters des eigenen Hauses
    - Haus mieten (falls vom Besitzer und config-Datei erlaubt)
    - Miete kündigen
    - Auflistung aller verfügbaren Interiors
    - Vorschau eines verfügbaren Interiors (Spieler wird in Interior teleportiert)
    - Vorschau des Interiors verlassen
    - Hilfe des Haussystems anzeigen lassen
    - Spawnpunkt ändern zu 1. im Haus oder 2. am Noobspawn (falls von config-Datei erlaubt)


    - Mieter müssen ihre Miete am Payday des Haussystems zahlen (alle 60 Minuten). Können sie dies nicht, wird die Miete gekündigt.



    Ingame Befehle:


    - Adminbefehle: (falls Spieler als rcon Admin eingeloggt)
    - /chaus [Kaufreis] [Interior ID] [minimale Miete] [maximale Miete] = Erstellt ein neues Haus
    - /delhaus = Löscht das Haus in der Nähe
    - /cinterior [Interior ID] [SpawnX] [SpawnY] [SpawnZ] [Preis] = Fügt ein neues Interior dem System hinzu
    - /delinterior [Interior ID] = Löscht das Interior mit der angegebenen ID


    - Spielerbefehle:
    - /listinteriors = Zeigt eine Liste aller verfügbaren Interiors
    - /sinterior [Interior ID] = Zeigt eine Vorschau des Interiors
    - /linterior = Verlässt die Vorschau des Interiors
    - /hinterior = Kauft ein neues Interior für das eigene Haus
    - /hinfo = Zeigt Informationen über das Haus in der Nähe in einem Dialog
    - /hhilfe = Zeigt eine Liste von allen Befehlen des Systems
    - /hkaufen = Kauft das Haus in der Nähe (falls Haus unbewohnt)
    - /hverkaufen = Verkauft das eigene Haus in der Nähe
    - /henter = Betritt das Haus in der Nähe (falls Spieler Besitzer oder Mieter dieses Hauses ist)
    - /hexit = Verlässt das Haus
    - /hmietbar = Stellt ein, ob das Haus für andere mietbar ist oder nicht (falls Spieler Besitzer des Hauses ist)
    - /hmiete [Mietpreis] = Ändert den Mietpreis des eigenen Hauses
    - /hkickmieter [Mieter ID] = Kündigt die Miete des angegebenen Mieters
    - /hrent = Mietet das Haus in der Nähe
    - /hunrent = Kündigt die Miete des Hauses in der Nähe
    - /hchangespawn = Ändert den Spawnpunkt des eigenen Spielers



    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)
    - 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)
    - 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)
    - 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)



    Planung für zukünftige Versionen:


    - Wahlweise als Information über ein Haus einen Dialog oder ein TextDraw anzeigen lassen
    - /hausauf und /hauszu Befehle einfügen, wodurch auch Spieler, die nicht Besitzer oder Mieter des Hauses sind, das Haus betreten können
    - Upgrades für das Haus kaufen können (Healpunkt, Armorpunkt)
    - Waffen und Drogen im Haus lagern können



    Vorraussetzungen für die Funktionalität des Sytems:


    - Alle vorrausgesetzten Dateien und Plugins sind bereits im Download enthalten und müssen nurnoch an der richtigen Stelle im Serverordner eingefügt werden.


    Download:


    Version 1.6:
    Kompletter Ordner: Dynamisches-Haussystem-by-DrMurphy.rar

    Pastebin: http://pastebin.de/39547




    Ich hoffe euch gefällt mein System und ich bin gespannt auf eure Rückmeldungen.


    Viel Spaß damit! :)


    Mit freundlichen Grüßen,
    DrMurphy

  • Ein solch feines System zu erstellen aber ganz merkwürdige Zeichenketten-Längen angeben?


    "/cfghaus.cfg" sind für mich 12 Zeichen, doch du lässt Platz für 128? Denke kaum das jemand seine Datei mit einem solch langem Namen wie folgt benennt:
    "/einsehrlangerdateinameeinsehrlangerdateinameeinsehrlangerdateinameeinsehrlangerdateinameeinsehrlangerdateinamesehrlanghalt.cfg"


    Dann sehe ich auch direkt eine sehr lustige Funktion:
    stock getPlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "%s", name);
    return name;
    }
    Wofür zum Teufel schreibst du eine bereits vorhandene Zeichenkette in eine andere mit 128-Zeichen Platz? Das selbe gilt für hausid, SDatei, mehrfach string und ähnlichen.


    Trotz alle dem finde ich es sehr schick. :)


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • Ich danke euch für die guten Bewertungen bisher :)


    Das mit der Größe des Strings erkläre ich einfach mal damit, dass ich für Strings eigentlich immer die Größe 128 nehme. Damit fahre ich in den meisten Fällen sehr gut, weshalb ich es auch so beibehalten werde :)

  • Ich hatte ja das vergnügen das script zu testen :)
    Allerdings konnte ich dir keine Verbesserungsvorschläge geben da ich Probleme mit meinem WLAN und meinem Laptop hatte.
    Mir gefällt das Script sehr es ist schlicht und funktioniert auch einwandfrei. Mein einziger vorschlag wäre noch eine MySQL variante machst.


    10/10


    Mfg.
    Portugiiese