Wintermute – Entwicklung einer InGame Debug-Console
Die Befehle
Hier folgt eine Übersicht über die implementierten Befehle.
loadScene – Szene laden / wechseln
Den Befehl für das Laden oder Wechseln einer Scene haben wir auf der vorherigen Seite bereits aufgeführt. Nun nocheinmal der Vollständigkeit halber.
Aufruf: loadScene path_to_scene
Aufrufbeispiel: scene scenes\scene1.scene
on "loadScene" { if(checkParameter(this.commandParameter,1)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command Game.ChangeScene()."; var Parameter = this.commandParameter; Game.ChangeScene(""+Parameter[1]+""); Sleep(1000); if(Scene.Filename == Parameter[1]) { logControl.Text = logControl.Text + "~nScene changed."; } } }
takeItem – Ein Item Inventory aufnehmen
Mit diesem Befehl wollen wir ermöglichen, dass man dem Actor über die Konsole ein Item ins Inventory hinzufügen kann.
Anwendungsfall: Test, wie sich eine Scenen / NPC / Objekt verhält, wenn der Actor einen bestimmten Gegenstand hat / nicht hat.
Aufruf: takeItem itemname
on "takeItem" { // example: takeItem itemHat if(checkParameter(this.commandParameter,1)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command actor.TakeItem()."; var Parameter = this.commandParameter; actor.TakeItem(""+Parameter[1]+""); Sleep(500); if(Game.HasItem(""+Parameter[1]+"")) { logControl.Text = logControl.Text + "~nItem is now in the inventory."; } else { logControl.Text = logControl.Text + "~nError: Item could not be taken."; } } }
dropItem – Ein Item aus dem Inventory entfernen
Mit diesem Befehl wollen wir ermöglichen, dass man dem Actor über die Konsole ein Item wieder aus dem Inventory entfernen kann.
Aufruf: dropItem itemname
on "dropItem" { if(checkParameter(this.commandParameter,1)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command Game.DropItem()."; var Parameter = this.commandParameter; if(Game.HasItem(""+Parameter[1]+"") == false) { logControl.Text = logControl.Text + "~nError: Item not found in the inventory."; return; } Game.DropItem(""+Parameter[1]+""); Sleep(500); if(Game.HasItem(""+Parameter[1]+"") == false) { logControl.Text = logControl.Text + "~nItem is removed from the inventory."; } else { logControl.Text = logControl.Text + "~nError: Item could not be removed."; } } }
setActive – Ein Objekt in der Scene aktivieren / deaktivieren
Mit diesem Befehl wollen wir ermöglichen, dass man ein Objekt in einer Scene aktivieren / deaktivieren kann, d.h. sichtbar / unsichtbar machen.
Aufruf: setActive object state
Aufrufbeispiele:
setActive object 1
setActive object 0
on "setActive" { if(checkParameter(this.commandParameter,2)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command to set an object active / inactive."; var Parameter = this.commandParameter; var entity = Scene.GetNode(""+Parameter[1]+""); if(entity != null) { if(Parameter[2] == "1") { entity.Active = true; } else { entity.Active = false; } } else { logControl.Text = logControl.Text + "~nError: Object not found."; } } }
playAnim – Abspielen einer Animation
Dieser Befehl spielt eine Animation eines Actors oder einer Entity ab.
Aufruf: actor_or_entity path_to_sprite
Aufrufbeispiele:
playAnim actorname actor\actorname\walk\walkLeft.sprite
playAnim object specialanim\anim.sprite
on "playAnim" { if(checkParameter(this.commandParameter,2)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command to set an object active / inactive."; var Parameter = this.commandParameter; var objectName = Parameter[1]; var filename = Parameter[2]; // if is the object a scene node var entityOrActor = Scene.GetNode(""+objectName+""); if(entityOrActor != null) { // play animation of the node entityOrActor.PlayAnim(filename); } else { // try to get an actor reference entityOrActor = Scene.GetFreeNode(""+objectName+""); if(entityOrActor != null) { // play animation of the node entityOrActor.PlayAnim(filename); } else { // we cant get an actor by name // so we try to play the animation on the main actor if the name corresponds if(objectName == actor.Name) { actor.PlayAnim(filename); } else { // the last fallback: // create a temp node and play the animation logControl.Text = logControl.Text + "~nError: Entity reference not found. Play anim on a temp entity."; var entity = Scene.CreateEntity("tempEntity"); entity.X = 500; entity.Y = 500; entity.Active = true; entity.PlayAnimAsync(filename); Sleep(5000); entity.Reset(); Scene.UnloadObject(entity); } } } } }
skipActor – Den Actor in der Scene positionieren
Befehl mit dem man einen Actor frei in der Szene platzieren kann.
Aufruf: skipActor X Y
Aufrufbeispiel: skipActor 400 300
on "skipActor" { // example: skipActor 400 500 if(checkParameter(this.commandParameter,2)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command actor.SkipTo()."; var Parameter = this.commandParameter; actor.SkipTo(Parameter[1], Parameter[2]); } }
loadActor – Actor laden / wechseln
Befehl mit dem ein neuer Actor geladen werden kann oder zu einem anderen Actor gewechselt werden kann.
Aufruf: loadActor actorname
on "loadActor" { if(checkParameter(this.commandParameter,1)) { var logControl = this.GetControl("log"); logControl.Text = logControl.Text + "~nrun command game.LoadActor()."; var Parameter = this.commandParameter; var name = Parameter[1]; var tmpActor = Game.getGameActorByName(name, false); if(tmpActor == null) { tmpActor = Game.LoadActor("actor\"+name+"\"+name+".actor"); gameActors.Push(tmpActor); } if(tmpActor == null) { logControl.Text = logControl.Text + "~nError: actor not found."; } else { actor = tmpActor; } } }
exit – Spiel beenden
on "exit" { Game.QuitGame(); }
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen