@Turjan: Nein, das ist völlig egal. Ganz wichtig ist jedoch, daß der Charakter genau 0 EP hat, weil das die Startbedingung für ein bestimmtes Skriptteil ist.
@Doc: War ja klar!
So, dann kann ich jetzt ja auch gleich 'mal zusammenschreiben, wie die Skripte arbeiten und welche davon besonders zu testen sind.
1.)
Das OnClientEnter Skript
Dieses Skript wird jedes Mal ausgeführt, wenn ein Spieler das Modul "betritt". Zuerst überprüft es, ob dieser Spieler schon einmal das Modul betreten hat, oder ob dies das erste Mal ist. Wenn das das erste Mal ist und der Charakter 0 EP hat, werden ihm alle Ausrüstungsgegenstände abgenommen, er erhält die Standardkleidung seiner Klasse und das Startvermögen wird entsprechend seiner Klasse ausgewürfelt und ihm zugeteilt.
Dies ist jedoch keines der kritischen Skripte, da es im SP genau das gleiche tut, wie im MP. Daher rechne ich an dieser Stelle nicht mit Fehlern.
2.)
Das OnHeartbeat Skript
Dieses Skript wird alle 6 Sekunden ausgeführt. Ich halte es für das kritischste Skript überhaupt, da es für recht viele Operationen zuständig ist und sich die Laufzeit, und damit die Anzahl der Befehle, die es ausführt, mit zunehmender Spielerzahl erhöht. Wenn es zu Fehlern kommt, dann ist die Wahrscheinlichkeit recht hoch, daß sie von diesem Skript ausgelöst wurden.
U.a. überprüft dieses Skript, wie lange der Charakter schon nicht mehr (erfolgreich) geruht hat. Ist dies 16 oder mehr Stunden her, so erhält der SC einen Abzug von jeweils 1 Punkt auf ST und GE. Ist es sogar 24 Stunden oder länger her, erhöhen sich diese Abzüge auf jeweils 2 Punkte. Wenn ein SC 32 Stunden oder länger nicht mehr geruht hat, hat er pro Runde (6 Sekunden) eine Chance von 10% für 3 Sekunden einzuschlafen (Sekundenschlaf).
3.)
Das OnModuleLoad Skript
Peanuts! Würde mich wirklich sehr wundern, wenn es Probleme macht.
4.)
Das OnPlayerDeath Skript
Ausgeführt wird dieses Skript jedes Mal, wenn ein SC "für tot erklärt" wurde. Inwieweit dieses Skript Einfluß auf die Tests hat, wird von meinen Fortschritten in der nächsten Zeit abhängen. U.U. muß es auf korrekte Funktion getestet werden. Ob dies der Fall ist, werde ich dann unmittelbar vor dem Testbeginn bekanntgeben.
Es verfrachtet einen toten Spieler in das "Jenseits" nach seiner Rasse. Ihm werden alle seine Ausrüstungsgegenstände abgenommen und am Ort seines Todes deponiert, so daß sie von anderen Spielern aufgenommen werden können. Außerdem wird eine "Leiche" kreiert, um den Charakter wiedererwecken zu können. Bis hierhin funktioniert das schon alles im SP, jedoch arbeite ich im Moment noch am Wiedererwecken.
5.)
Das OnPlayerDying Skript
Wenn ein SC unter 1 TP fällt, ist er nicht automatisch tot. Dieses Skript regelt, was dann mit ihm geschehen soll. Es folgt relativ genau den einschlägigen D&D Regeln, mit der einzigen Ausnahme, daß ein Charakter mit 0 TP bewußtlos, anstatt nur kampfunfähig ist. Hat der SC weniger als -9 TP oder liegt sein KO-Wert unter 1, so wird er für tot erklärt und löst das "OnPlayerDeath" Skript aus. Hat er genau 0 TP, ist er zwar bewußtlos, aber stabil (Sterbe-Status 3 (s.u.)). Hat er weniger als 0 TP, beginnt er zu verbluten (Sterbe-Status 1 (s.u.)).
Das ist alle, was von diesem Skript gemacht wird. Alles, was nun folgt, ist Aufgabe des "OnHeartbeat" Skriptes.
Das "OnHeartbeat" Skript überpfüft nun, in welchem Zustand sich der Charakter genau befindet und handhabt ihn dem entsprechend, wobei ein SC, der unter -9 TP fällt bzw. einen KO-Wert von weniger als 1 hat, für tot erklärt wird.
Es gibt vier Zustände des "Sterbens":
0: Der Charakter stirbt nicht. Er hat mehr als 0 TP und ist somit aus diesem Skript "entlassen".
1: Der Charakter hat weniger als 0 TP. Er hat jede Runde eine 10% Chance, in Status 2 zu wechseln (siehe dort). Gelingt ihm das nicht, verliert er 1 TP.
2: Der Charakter hat weniger als 0 TP, ist jedoch sabiler als in Status 1, jedoch immer noch nicht vollkommen stabil. Pro Stunde hat er eine 10% Chance, daß er zu Status 3 wechselt (siehe dort). Gelingt ihm dies nicht, verliert er 1TP.
3: Der Charakter hat genau 0 TP und ist stabil. Jeden Tag hat er eine Chance von 10%, daß die natürliche Heilung (Stufe * 1 TP / Tag) einsetzt und er dadurch Status 0 erreicht. Geschieht dies nicht, verliert er 1 TP.
Wird ein SC, der sich in Status 2 oder 3 befindet erneut verletzt, so fällt er auf Status 1 (es seihe denn, die "Verletzung" wurde ihm durch das Skript selbst zugefügt).
Wird ein SC, der im Sterben liegt, geheilt wird, gibt es 3 Möglichkeiten.
1.) Der SC hat nach der Heilung immer noch weniger als 0 TP. War er vorher nicht stabil (Status 1), so ist er dies nun (Status 2).
2.) Er hat genau 0 TP. Dadurch wechselt er in Status 3, egal in welchem Status er vorher war.
3.) Er hat mehr als 0 TP, wodurch er in Status 0 wechselt, egal in welchem Status er vorher war.
6.
Das OnPlayerRest Skript
Dieses Skript wird immer dann ausgelöst, wenn ein SC die Rast beginnt, erfolgreich beendet oder abbricht.
Wenn irgendein Spieler den Rast-Knopf drückt, beginnen alle SC zu rasten. Gefolgsleute und Vertraute beginnen ebenfalls zu rasten. Ist es irgendeinem SC nicht möglich zu rasten (etwa weil er sich im Kampf oder einer Gegend befindet, wo Rasten nicht erlaubt ist, oder weil er unter irgendeinem Effekt steht, der Rasten nicht erlaubt), wird die Rast für alle abgebrochen.
Ist eine Rast erfolgreich, so wird die Uhr vom OnHeartbeat Skript um 8 Stunden vorgestellt. Sollte ein Charakter in einer Rüstung mit einem Rüstungsmalus von mehr als -4 geschlafen haben, ist er nun erschöpft (-2 auf ST und GE; D&D Regel). Daher ziehen Gefolgsleute solche Rüstungen automatisch vor dem Rasten aus und danach wieder an.
Laut D&D Regeln heilt ein Charakter pro Tag Rast so viele TP, wie er Stufen hat. Da 8 Stunden genau 1/3 von 24 Stunden sind, heilt jeder Charakter bei der Rast nur 1/3 seiner Stufe in TP (mathematisch korrekt gerundet, jedoch mindestens 1 TP).
Dieses Skript muß noch unbedingt im MP getestet werden, vor allem die Sache mit dem Abbruch für alle, wenn einer der SC nicht rasten kann bzw. der Spieler selbst die Rast abbricht.
7.)
Die Area-Transition Skripts
Es gibt davon zwei an der Zahl. Eines wird ausgelöst, wenn ein Objekt einen Gebietsübergangsauslöser betritt bzw. darauf klickt und ein anderes, wenn jemand den Auslöser verläßt. Diese Skripte sollen für Gebietsübergänge a la "Ihr müßt Eure Gruppe versammeln, bevor Ihr weiterziehen könnt" dienen.
Auch diese Skripte müssen eingehend getestet werden. Wie genau das abläuft, werde ich Euch dann während des Testlaufes sagen.
Ich muß noch 'mal schauen, ob ich das OnDeath-Skript nun noch in den Test mit einbeziehe, oder es besser später teste. Wenn ich es innerhalb der nächsten zwei Tage lauffähig bekomme, werde ich es mit testen, ansonsten ohne. Außerdem muß ich noch einen Händler einbauen, bei dem man sich ausrüsten kann, denn schließlich müssen wir uns für einige Skripte ein wenig von Monstern verprügeln lassen (die ich dann auch noch gleich platzieren werde), oder das selbst erledigen.
So das war's erstmal. - Noch Fragen?
PS: Wenn ich mir die Liste so anschaue, dann rechnet doch lieber mit bis zu einer Stunde, anstatt nur 20 Minuten!