TWA - Library

Anfangs war es nur ein kleines Projekt, aber nun ist das soweit gewachsen, dass ich es mal vorstellen möchte. Meine Library (Bibliothek) ersetzt die QSB. Sie wird in das globale und das lokale Skript geladen. Der Assistent kann nicht mehr benutzt werden aber das muss er auch nicht. Man erstellt sich seine Quests einfach im Skript. Und zwar als Objekte. Was das genau ist, muss hier keiner verstehen, sondern höchstens wie es benutzt wird.

Also dann mal ein Beispiel:

local q = Mission:new("MissionsnameKannHierStehenMussAberNicht")
--------------------
q.Proposal = "Die Brunnen sind ausgetrocknet."
q.Success = "Nun müssen die Siedler keinen Durst mehr leiden."
--------------------
q:Goal_ActivateObjects("well1", "well2", "well3", "well4")
q:Trigger_Time(5)
--------------------
WellQuestIdentifier = q:start()

Sieht doch schön einfach aus, oder?
Zuerst erstellt man sein Missionsobjekt, indem man die Rückgabe von Mission:new() in einer Variable speichert. Diese Variable ist dann das Missionsobjekt. Dieses Objekt hat folgende Einträge:

SimpleJob      => Eine Funktion, die als SimpleJob ausgeführt wird.
Callback       => Eine Funktion, die als Finished Funktion ausgeführt wird.
Sender         => Der Spieler der Sendet (1-8).
Receiver       => Der Spieler der empfängt (1-8 oder 0 für alle Spieler). 
Time           => Zeit bis zur Niederlage.
Visible        => false für versteckt (Standard true)
Description    => Beschreibungstext (unten)
Proposal       => Vorschlagnachricht
Success        => Erfolgsnachricht
Failure        => Niederlagenachricht

Jeder dieser Einträge hat einen Standart. Es müssen also nicht alle gesetzt werden. Siehe dazu das Beispiel oben.

Jede Quest braucht mindestens 1 Goal und 1 Trigger. Das Questverhalten (Goal, Reprisal, Reward, Trigger) wird über einen Methodenruf an das Objet angehangen. Dazu muss man dann einfach nur für das Objekt (also die Variable) die entsprechende Funktion ausführen. Das macht mann über Object:Behavior als z.B. q:Goal_ActivateBuff(1, Buffs.Buff_FoodDiversity). Mit der Methode :start wird die Mission dann gestartet. Als Rückgabe bekommt man den Questnamen. Der ist entweder der bei :new angegebene oder ein fortlaufend nummerierter.

Momentan ist alles noch BETA. Die Bibliothek bietet aber schon fast alle Behaviors aus der QSB. Und einige sogar noch besser. Außerdem sind NEP und meine interaktiven Objekte bereits eingebaut. Briefings werden noch integriert. Das globale und lokale Skript wird dadurch viel schmaler. Da das aber alles noch nicht fertig ist, bekommt erstmal niemand den Code.

Soweit alles verstanden?

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License