Bliss MySQL von DayZ-Server

Aus Nitradopedia
(Weitergeleitet von DayZ - Bliss MySQL)
Wechseln zu: Navigation, Suche
Dayzmod header.png
Miete dir jetzt deinen eigenen prepaid DayZ Mod Server auf nitrado.net

Allgemeine Informationen

Bei der neuen Datenbank (ab Bliss 3.6) wurde das Schema stark überarbeitet, wodurch auch die Performance verbessert wurde. Es gibt nun keine „objects“ Tabelle mehr. Diese wurde in mehrere Tabellen unterteilt diese lauten „deployable“, „instance_deployable“, „instance_vehicle“, „vehicle“ und „world_vehicle“. Desweiteren kamen neue Tabellen hinzu, dazu gehören „cust_loadout“, „cust_loadout_profile“ und „world“.

Aufbau der MySQL-Datenbank

Die MySQL-Datenbank kann im Webinterface über den Menüpunkt "DayZ MySQL" aufgerufen werden. Anschließend kann die gewünschte Datenbank ausgewählt werden, über den Button "Login" wird automatisch der Login zur Datenbank ausgeführt.


Fahrzeuge

instance_vehicle

Hier sind alle Fahrzeuge eingetragen die derzeit auf der Map stehen, man findet hier die Position des Fahrzeugs, das Inventar sowie Informationen zur Beschädigung des Fahrzeugs sowie der Tankstand (Fuel) des Fahrzeugs.

world_vehicle

In dieser Tabelle werden alle "Spawn-Punkte" für die Fahrzeuge gesetzt. Jedoch ist hier zu beachten welche world_id gesetzt wird, den die world_id gibt an auf welcher Karte das Fahrzeug spawnt. Wird die world_id auf 1 gesetzt, so würde das Fahrzeug theoretisch auf der Karte Chernarus spawnen. Das ganze hat aber keinen Sinn, zumindest nicht bei Nitrado da hier für jede Karte eine andere Datenbank verwendet wird. Den Theoretisch wäre es möglich mehrere Karten über eine Datenbank laufen zu lassen. Die world_id-Liste könnt ihr euch aus der „world“ Tabelle entnehmen, oder einfach direkt aus dieser Liste hier:

  • Chernarus = 1
  • Lingor Island = 2
  • Utes = 3
  • Takistan = 4
  • Panthera = 5
  • Fallujah = 6
  • Zargabad = 7
  • Namalsk = 8
  • Celle = 9

Nun weiter mit der Erklärung, auch hier gibt es wie in der „instance_vehicle“ Tabelle die Spalte „worldspace“, diese gibt hier aber die Spawn Position des Fahrzeug’s an. Um sich die Position auch noch in Buchstaben zu merken gibt es die Spalte „description“, dort könnt ihr z.B. Dinge reinschreiben wie „Huey beim NW Airfield“. Desweiteren kann man hier die Chance zum Spawnen des Fahrzeugs einstellen, zu beachten hierbei ist das die Chance minimal auf 0.001 gesetzt werden kann oder maximal auf 0.999. Die Bedeutung der last_modified Tabelle ist für mich noch ungeklärt, hierbei hoffe ich auf die Erklärung eines anderen.

vehicle

Hier ist die ID deutlich wichtiger! Den diese wird als „Verweis“ in den anderen Tabellen verwendet. „class_name“ gibt den Fahrzeug Typ an, man kann in dieser Tabelle noch weitere class_names hinzufügen dies hat vorallem ein Nutzen für Server auf dennen rMod läuft. Desweiteren gibt es hier Angaben für den damage_min und damage_max sowie fuel_min und fuel_max, was diese bedeuten lässt ja schon aus dem Namen ableiten. Beim starten des Servers wird ein Zwischenwert zwischen damage_min und damage_max errechnet, genauso wie bei fuel_min und fuel_max. Man kann in diesen 4 Spalten nur einen Wert zwischen 0.001 und 0.009 eintragen. Ein weiteres neues Feature des neuen Datenbank Schema’s sind die Limitrungen der Fahrzeuge. Wenn man z.B. den Wert bei einem UAZ bei „limit_min“ auf 2 setzt und bei „limit_max“ auf 4 so würden mindestens 2 UAZ spawnen, aber es können auch mehr spawnen, jedoch maximal 4 Stück. Die „parts“ Spalte enthält die Teile des Fahrzeuges welche beschädigt werden sollen, wenn man dort z.B. „motor“ eintragen würde sowürde der Motor mit dem Wert beschädigt werden welcher aus „damage_min“ und „damage_max“ errechnet wurde. Nun weiter zum „inventory“, jedes Fahrzeug von diesem class_name werden mit dem dort eingetragen Inventar / Gear spawnen. Wie man das einträgt wird immernoch in Folge kommen.

Spawnen von Fahrzeugen

Ganz am Anfang muss euch klar sein was ihr vorhabt, wollt ihr ein komplett neues Fahrzeug einfügen oder wollt ihr ein bereits eingetragenes Fahrzeug verwenden? Wenn ihr ein komplett neues Fahrzeug einfügen wollt dann hier weiter lesen ansonsten direkt zu Schritt 2 weiter gehen!

Schritt 1

Um einen neuen class_name oder eher gesagt einen neuen Fahrzeugtypen festzulegen, müssen wir folgendes machen. Wir klicken erst einmal auf die „vehicle“ Tabelle und dort auf Einfügen. Das „id“ Feldlassen wir leer den es wird automatisch eine ID „generiert“, diese ID werden wir im späteren Verlauf brauchen. Im „class_name“ Feld tragt ihr euren gewünschten Klassen Namen ein, eine Liste aller class_names für Fahrzeuge sowie Waffen gibt es [hier http://www.armatechsquad.com/ArmA2Class/]. Solltet ihr den rMod verwenden solltet ihr es deutlich einfacher haben da durch diesen sogut wie alle Fahrzeuge spawnbar sind, ohne rMod seit ihr sehr stark eingeschränkt da DayZ viele Fahrzeuge „gebannt“ hat. Den Wert zwischen „damage_min“, „damage_max“, „fuel_min“ und „fuel_max“ müsst ihr ebenfalls selbst entscheiden. Wichtig ist hierbei nur das der Wert nur zwischen 0.001 und 0.999 liegen darf. Bei „limit_min“ und „limit_max“ müsst ihr euch entscheiden wieviele Fahrzeuge von diesem Typ stehen sollen, ich trage bei „limit_min“ einen Wert von 1 ein und bei „limit_max“ einen Wert von 3. BeiParts kommt es drauf an was für ein Fahrzeug ihr spawnt bei einem Heli würde es sich lohnen den Main Rotor, den hinter Rotor und den Motor zu beschädigen. Für mein Beispiel trage ich folgendes ein: motor, mala vrtule, velka vrtule.

Liste von Fahrzeugteilen

  • motor = Engine
  • mala vrtule = hinter Rotor
  • velka vrtule = Main Rotor
  • elektronika = Instrumente
  • palivo = Fuel Tank
  • karoserie = Hülle
  • wheel_1_1_steering = Linkes vorder Rad
  • wheel_1_2_steering = Linkes hinter Rad
  • wheel_2_1_steering = Rechtes vorder Rad
  • wheel_2_2_steering = Rechtes hinter Rad
  • glass(nummer) = Glas und die jeweilige Nummer


Soviel zu den „parts“ nun zum „inventory“, hier trage ich „[]“ ein, somit würde in diesemFahrzeugtyp kein Loot liegen. Wie ihr dort jedoch Loot eintragt werde ich später erklären. Wenn ihr alles eingetragen habt klickt ihr auf „OK“, dann wird ein MySQL Query ausgeführt, welcher euren Eintrag einträgt. Da wir ja am Anfang keine „id“ gesetzt hatten wurde jetzt automatisch eine ID eingetragen, da wir diese benötigen werden müssen wir uns nun die ID welche oben in der Grünen Box steht merken, die ID ist in meinem Fall 64.


Schritt 2

Nun geht es dadrum einen festen Spawn für das Fahrzeug zusetzen. Dafür gehen wir jetzt in die „world_vehicle“ Tabelle, dort angelangt gehts direkt wieder auf Einfügen. Dort lassen wir das „id“ Feld wieder frei. Bei der „vehicle_id“ suchen wir uns unsere gemerkte ID raus, bei mir war es die 64. Bei der „world_id“ müsst ihr gucken auf welcher Map ihr euch befindet. Dazu gibt es entweder die „world“ Tabelle oder ihr nehmt die Liste die ich oben gepostet habe. Da ich Namalsk laufen habe wähle ich die „world_id“ 8 aus. Bei „worldspace“ tragt ihr die Position ein wo das Fahrzeug spawnen soll, wie ihr an diese kommt ist durch einen Wiki Eintrag erklärt. Wenn gewünscht schreibe ich das ganze dann auch nochmal hier direkt mit rein. In dem „description“ Feld trage ich nichts ein und gehe direkt zum „chance“ Feld weiter. Da ich möchte das dass Fahrzeug fast 100% spawnt setze ich den Wert hier auf 0.999. Nocheinmal der Wert darf hier nur zwischen 0.001 und 0.999 liegen. Das „last_modified“ Feld lassen wir einfach frei. Jetzt wieder auf „OK“ klicken und wie bei Schritt 1 die ID aus der grünen Box merken.

So, theoretisch würde das Fahrzeug nun nach einem Server Restart spawnen, trotz der Chance von 0.999 besteht dennoch eine sehr geringe Chance das es dies nicht tut, darum können wir aufjedenfall dafür sorgen das es spawnt, wenn euch das jedoch reicht seit ihr ab hier fertig. Wenn ihr weiter machen wollt geht’s jetzt weiter zu Schritt 3.


Schritt 3

So damit das Fahrzeug nach dem Server Restart aufjedenfall steht ohne irgendwelche Berechnungen des Servers gehen wir nun auf „instance_vehicle“ dort wie bei den Schritten 1 und 2 zuvor auch auf Einfügen. Bei „world_vehicle_id“ tragt ihr eure zuletzt gemerkte ID ein. Bei „instance_id“ müsst ihr eigentlich bloß die 1 drinnen stehen lassen, wenn ihr jedoch mehrere Server über eine Datenbank laufen lasst müsst ihr dort eure jeweilige „instance_id“ eintragen. Bei „worldspace“ können wir die selbe Position wie bei Schritt 2 eintragen, es sei den das Fahrzeug soll dann woanders stehen und nicht am festen Spawn Punkt. Das „inventory“ können wir wieder leer lassen dafür bloß die „[]“ drinnen stehen lassen. Bei „parts“ müsst ihr wissen wie beschädigt das Fahrzeug spawnen soll, ich lass es jetzt einfacher Weise mal komplett heile, also bleiben dort auch nur die „[]“. In den Feldern bei „fuel“ und „damage“ könnt ihr wieder euren eigenen Werte eintragen, 1 ist gleich komplett demoliert oder komplett voll und 0 ist gleich komplett heile aber kein Fuel. Dort könnt ihr euren eigenen Werte zwischen 0 und 1 eingeben. Bei „last_updated“ braucht ihr nichts machen und bei „created“ klickt ihr einfach nur einmal auf den Kalender und dann auf „OK“. Damit wären wir fertig. Wenn nun der Server Restartet wird das Fahrzeug gespawnt und nach dem Restart steht das Fahrzeug an eurer gewählten Position.


Gebäude / Objekte

Welche Tabelle hängen mit den Objekten zusammen?

Für Objekte wie z.B. Zelte, Bärenfallen etc. gibt es eine einzelne Tabelle. Diese nennt sich „deployable". In dieser werden alle „setzbaren" Objekte festgelegt. Dann gibt es noch die „instance_deployable" Tabelle, diese ist wie die „instance_vehicle" Tabelle in dieser werden nähmlich alle Objekte eingetragen welche auf der Map stehen.

Aufbau der Tabellen

deployable

Der Aufbau der „deployable" Tabelle ist recht simple. Es gibt hier nur 2 Spalten, einmal eine fast standardmäßiges „id" Spalte welche man in der „instance_deployable" Tabelle benötigt und eine „class_name" Spalte.

instance_deployable

Der Aufbau dieser Tabelle ist wieder etwas umfangreicher, insgesamt gibt es hier 9 Spalten. Wieder die standardmäßige „id" Spalte, welche automatisch um 1 erhöht wird. Eine „unique_id" Spalte, die dort eingetragene Kombination aus Zahlen darf wie „unique" schon sagt nur einzigartig sein. Bei doppelten Eintragen würde MySQL ein Fehler ausgeben. Dann gibt es hier auch eine ähnliche Spalte wie in der „instance_vehicle" Tabelle nähmlich die „deployable_id" Spalte. Diese referenziert auf die „deployable" Tabellen „id", über diese wird dann der „class_name" abgerufen. Desweiteren gibt es hier eine sogenannte „owner_id" Spalte, diese referenziert ebenfalls auf eine andere Tabelle nähmlich auf die „survivor" Tabelle. Die dort eingetragene „id" verweist somit auf einen Spieler. Dann gibt es noch die „instance_id", diese ist auch wieder nur relevant wenn man mehrere Server über eine Datenbank laufen lässt. Es wird über diese „id" angegeben auf welchem Server das Objekt steht. Dann wie auch in vielen anderen Tabelle gibt es wieder die „worldspace" Tabelle, das Nutzen der Tabelle ist recht simple es wird einfach angegeben wo das Objekt steht. Dann gibt es noch die „inventory" Spalte diese gibt den Inhalt des Objekts an, wenn das Objekt kein Zelt ist müssen dort immer die „[]" Klammern stehen. Die „last_updated" und die „created" Spalte geben einfach nur an wann das Objekt erstellt wurde und wann das Objekt zuletzt gespeichert wurde.

Spawnen von Gebäuden / Objekte

Nun zum Spawnen von Objekten http://www.armatechsquad.com/ArmA2Class/

Schritt 1

Klarmachen was man spawnen möchte

Es gibt eine Menge Objekte die man spawnen kann, dafür gibt es wie auch für Fahrzeuge diese Seite: http://www.armatechsquad.com/ArmA2Class/ , aber man muss dabei bedenken das auch nicht alle Objekte davon funktionieren! Hier heißt es ausprobieren, ich nehme jetzt aber für unser Beispiel eine funktionierende Militär Barracke, jene welche auch am Airfield stehen, ja in dieser Spawnt auch Loot sowie Zombies, dies tut es aber auch nicht in jedem Gebäude. Der Klassenname für die Militärbaracke lautet "Land_Mil_Barracks_i", ohne Anführungsstriche natürlich.

Schritt 2

Den Eintrag in die "deployable" Tabelle machen

Um nun unser Objekt einzutragen gehen wir auf die "deployable" Tabelle und dort auf "Einfügen". Das "id" Feld dort können wir frei lassen und bei "class_name" tragen wir unseren gewünschten class_name ein. In meinem Fall ist es "Land_Mil_Barracks_i", wieder ohne Anführungsstiche. Dann auf "OK" klicken, nun sollte der MySQL Query ausgeführt werden und wenn alles erfolgreich verläuft sollte eine Grüne Box erscheinen, aus dieser holt ihr euch die ID den diese werdet ihr in Schritt 3 brauchen. Das war auch schon alles zu Schritt 2, nicht schwer oder?

Schritt 3

Den Spawn für das Objekt setzen

Hieführ gehen wir in die "instance_deployable" Tabelle dann wieder auf "Einfügen". Dort lassen wir das erste "id" Feld leer und gehen direkt zum "unique_id" Feld über, hier könnt ihr eine "wahrlose" Reihenfolge von Zahlen eintragen, z.B. "48879454657889645". Jedoch ist zubeachten diese Reihenfolge MUSS einzigartig sein, diese darf nicht 2 mal in der Tabelle stehen! Weiter zur "deployable_id" Spalte. Hier wählt ihr eure gemerkte ID aus. Nun weiter zur "owner_id", hier tragt ihr eine 0 ein wenn das ganze ein Gebäude ist, da dieses keinem gehört. Bei "instance_id" wählt ihr eure Instanz aus, in den meistenfällen einfach die 1 lassen. Ansonsten die Beschreibung von der Spalte oben nachlesen. Bei "worldspace" tragt ihr die Position ein wo das Fahrzeug spawnen soll, wie ihr an diese Position kommt steht im Wiki. Das "inventory" muss oder sollte bei Gebäuden leer sein, also einfach die "[]" lassen. Bei "last_updated" braucht ihr nichts verändern, bei "created" klickt ihr einmal auf das Kalender Symbol und dann auf "OK" klicken.

Nach einem Neustart des Servers steht das Gebäude/Objekt an der gewählten Position.


Bei Problemen oder Fragen: https://board.nitrado.net/support-de-german-only/support-gameserver/dayz/26581/tutorial-zur-neuen-datenbank-updated-am-4-11/