Nach dem ich vor einiger Zeit einen kleinen Test mit NPC Wachen gemacht habe und diese schief liefen habe ich nun wieder aus langeweile etwas über das Thema nachgedacht.
Ich habe verstanden was zu dem Bug geführt hat das zwei Wachen gespawnt wurden und warum eine davon nicht mehr despawnt wurde: (Erklärung im ..
Jeder NPC hat eine ID. Das Script hat gespeichert welcher NPC (die ID von dem NPC) zu dem Spieler gehört für den dieser NPC gerade erstellt wurde. Wenn jetzt etwas nicht funktioniert hat und ein zweiter NPC erstellt wurde, wurde dieser Wert überschrieben was zu einer Wache führt die für das Script keinen Besitzer hat (Die Wache selber weiß aber noch wen sie beschützen muss usw. da dies nichts mit dem Script zu tun hat). Deswegen wurde diese Wache dann nie despwant weil das Script immer nur den einen NPC despawnt hat von dem die ID gespeichert war. Als Lösungsansatz könnte ich A: Anstelle zu speichern das Spieler Yayota die Wache mit der ID 69 gehört speichern das die Wache Yayota gehört da so kein Wert überschrieben wird oder B: Das eine Liste von IDs gespeichert wird, so könnte Yayota dann eine Wache mit der ID 69 und eine mit der ID 420 haben. Da beide gespeichert sind kann man beide entfernen wenn sich Yayota ausloggt. Lösung A hat den Vorteil das man einfach Wachen zu denen kein Spieler gehört oder gespeichert ist einfacher entfernen könnte (Überprüfen ob der gespeicherte Spieler online ist, wenn nicht --> despawnen).
Das Script an sich weist keine logischen Fehler auf, aber warum kam es dann zu diesen Bug? Weil bei dem Script nicht darauf geachtet wurde wie das speichern dieser Werte funktioniert. Zuerst werden die Werte nur zwischengespeichert und später wenn der Server gestoppt wird in eine Datei geschrieben. Das Problem dabei ist einfach, dass verschiedene Ereignisse dazu führen können, dass die Werte nicht in einer Datei gespeichert werden und verloren gehen. Ich habe das Script gerade nicht hier (eigentlich weiß ich nicht mal ob es noch existiert) und weiß deswegen nicht genau an was es lag, aber ich denke ich kann das beheben (Dafür sorgen das die Werte verlässlich gespeichert werden, die Werte irgendwie anders speichern..). Ich bin bei dem ersten Versuch davon ausgegangen das die Werte immer in einer Datei gespeichert werden und ich mich daher auf sie verlassen kann.
)
Ich denke diese zwei Erkenntnisse ermöglichen eine neue, nicht so fehlerhafte Version der NPC Wachen. Vielleicht setze ich mich da mal wieder dran und probiere es noch ein mal (wenn da überhaupt Interesse dran besteht und ich Zeit habe) :) . Wenn ich mich da noch mal dran setze, könnte ich das System vielleicht auch so abändern, dass man eine Wache für eine begrenzte Zeit mietet (z.B. eine Woche oder so) und sie dafür öfter sterben kann (oder unendlich oft)). Außerdem sollte es nicht sehr kompliziert sein die Möglichkeit einzubauen eine Wache weg zu schicken ohne das man sie permanent verliert (man bekommt sie später wieder, kann sie zurück holen..). Alles in allem war die erste Version eh nur sowas wie ein (pre) alpha Test :P