Derby System

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,


    ich würde gern ein Derby-System erstellen, wüsste aber nicht wo genau ich beginnen sollte.


    Hauptsächlich ist mein Problem, dass ich nicht weiß, wie ich verschiedene Maps und Spawns speichern/laden/löschen soll/muss.


    Beispiel: User X gibt /derby ein, wenn eine Derby Runde aktiv ist, kann er zuschauen und die Kamera zwischen den Teilnehmern "wechseln". Ist eine Runde vorbei, wird die Map destroyed und eine neue geladen, wo dann alle Spieler hin teleportiert werden und in unterschiedlichen Cars an verschiedenen stellen spawnen.


    Ich brauche kein fertiges System, nur Denkanstöße :)


    Vielen Dank! @Douq du hast so ein System soweit ich weiß schon erstellt, welches 1zu1 meiner Vorstellung entspricht.


    Gruß
    Crowley

  • Zu deinem hauptsächlichen Problem:
    Sinn macht es, entweder über eine Datenbank oder per File zu lösen. Ich hatte es damals per File gelöst, da es zu diesem Zeitpunkt die sinnvollere und einfachere Methode für mich und meinen Kollegen Dentafa war, als es per Datenbank zu lösen.


    Dabei sind wir es so angegangen, dass wir einen Ordner unter scriptfiles erstellt haben (Derby), in welchem all unsere .derby Datein enthalten waren. Zusätzlich gab es noch eine maplist.derby, in welche alle Derbydatein per Namen enthalten waren (da es ja ohne Plugin nicht möglich ist herrauszufinden, welche Datein innerhalb eines Verzeichnisses liegen). Hier könnte man auch auf eine statische Methode zurückgreifen wie z.B. ein Array im Skript mit den Namen, wir haben uns aber dadurch die Möglichkeit gegeben, während des Spielbetriebes neue Mapdatein hinzufügen zu können (was auch immer ganz nützlich war, auch beispielsweise wenn eine Map fehlerhaft war).


    Innerhalb dieser Map wurden dann folgende Informationen gespeichert: Name der Map, Author, niedrigste Z - Koordinate (wobei später es glaube ich automatisiert abläufte), Spawns und Objekte. Dabei enthielt Zeile 1 immer die ersten drei Informationen, Zeile 2 - 21 die 20 Spawnpositionen und die restlichen Zeilen die Objektkoordinaten. Diese dann einfach per fread & while Schleife auslesen, und dann je nach Zeile den Zeilensatz anders splitten und die Informationen anders zuweisen.


    Hoffe das war soweit verständlich, sollten noch Fragen bestehen mich einfach nochmal markieren.


    Gruß

    • Offizieller Beitrag

    Um das alles ein wenig einfach zu gestalten, kannst du einfach eine .ini Datei nehmen, die du wesentlich einfacher und unkomplizierter Auslesen kannst. (Natürlich denn aber auch anders Speichern!)

  • Um das alles ein wenig einfach zu gestalten, kannst du einfach eine .ini Datei nehmen, die du wesentlich einfacher und unkomplizierter Auslesen kannst. (Natürlich denn aber auch anders Speichern!)

    Soweit ich weiß (arbeite nicht mit DINI, Y_INI, ...) müssen diese immer im folgenden Format sein VALUENAME = VALUE. Würde ja bedeuten, er müsste Spawn1 = Koordinaten, Spawn2 = Koordinaten ... Objekt1 = Objekt 1 Koordinaten machen, was deutlich umständlicher, per Code unübersichtlich und schlichtweg nicht einfacher wäre.


    Kannst mich ja gern aufklären, wenn es auch anders geht (also ich gehe mal davon aus, dass du solche Systeme meinst, denn *.ini ist ja keine Art und Weise eine Datei auszulesen sondern nur ein Dateintyp. )

    • Offizieller Beitrag

    Richtig, natürlich musst du für jede Koordinate eine neue Zeile Anlegen, kannst diese aber dafür, meiner Meinung nach im Script besser und einfacher auslesen, da du dafür nur (Bei dem Format: KoordinateX1, KoordinateX2, ..) eine Schleife mit jeweils 4 Punkten für Koordinaten brauchst, desweiteren braucht man für diese Methode nur das Dini Include und kann per dini_Int, etc. arbeiten.