Not logged inOpenClonk Forum
Up Topic Community / German / Spielsteuerung erweitern
- - By Maddino [de] Date 2014-09-04 10:59
Ich entwickle derzeit wieder ein wenig mit OC herum. Ich wollte zur Steuerung hinzufügen, dass durch das Drücken der Taste C ein Spezialmenü geöffnet wird. Leider hat mir die Doku dabei nicht wirklich viel weitergeholfen.

Ich habe in meinem Testszenario, im System.ocg, schon einen PlayerControls.txt angelegt.

Soweit der Code:

[ControlDefs]

[ControlDef]
Identifer=Open_CharaMenu
GUIName=Open_CharacterMenue
GUIDesc=Oeffnet das Charactermenue
Hold=1

[ControlSets]

[Assignment]
Key=C
Control=Open_CharaMenu
GUIGroup=50
Priority=90


Ich verstehe dabei nicht, was es mit den [ControlSet] Sektionen auf sich hat. In der Doku werden sie als "Definition von Standard-Steuerungsbelegungen" beschrieben. Aber ich will ja keine neue Steurung anlegen, sondern nur die Standartsteuerung um einen Befehl erweitern. Aus diesem Grund habe ich diese Sektion einfach weggelassen. Ist das richtig?

Als nächstes habe ich keinen Plan davon, wo der Script hingeschrieben werden muss. Ich hab es zuerst im Szenario Script.c versucht, aber dass scheint wohl nicht der richtige Ort zu sein. Auch habe ich bei meiner neuen Steuerung ja Hold=1 gesetzt. In der Doku steht dazu: "Sie generieren auch beim Loslassen PlayerControl-Aufrufe mit gesetztem Release-Flag im Script." Bedeutet das, dass die Boolean Variable release true ist, wenn die Taste losgelassen wird?

Ich hoffe, ihr könnt mir weiterhelfen. Danke schonmal! :)
Reply
Parent - - By Sven2 Date 2014-09-04 11:48
Hier ist ein Beispiel fuer eine funktionierende PlayerControls.txt, die nur eine Taste definiert:

https://git.openclonk.org/openclonk.git/blob/HEAD:/planet/Parkour.ocf/Maze.ocs/System.ocg/PlayerControls.txt

ControlSet kannst du nicht einfach weglassen. Die sind Teil der Hierarchie: Die Sektion [ControlSets] enthaelt eine oder mehrere Sektionen [ControlSet], die wieder eine oder mehr Sektionen [Assignment] enthaelt.

Die ControlDefs definieren die Steuerkommandos und die ControlSets weisen sie den Tasten zu. Standardmaessig sind zwei ControlSets defniert (Maus+Tastatur sowie Gamepad). Wenn du eine neue Taste definierst, dann musst du angeben, zu welchen ControlSets sie hinzugefuegt werden sollen. Wenn es ueberall das gleiche sein soll, dann haenge es an alle Sets an. Das geht wie im Beispiel oben mit  [ControlSet]  Name=*.

Um die Taste im Script zu behandeln, kannst du einfach die globale Funktion PlayerControl ueberladen. So wie im Beispiel hier:

https://git.openclonk.org/openclonk.git/blob/HEAD:/planet/Parkour.ocf/Maze.ocs/System.ocg/PlayerControl.c

Wenn es ein Steuerkommando fuer den Clonk ist, kannst du auch global func ObjectControl ueberladen (das ist dann schon im Kontext des selektierten Clonks). Ist es nur fuer einen bestimmten, neuen Clonktyp, dann definiere einfach ObjectControl in diesem Clonktyp (siehe z.B. die Kugeln oder die Maus in Clonkfest).
Parent - - By Maddino [de] Date 2014-09-04 14:53
Ok, vielen Dank! :)

Jetzt fehlt mir nur noch die Antwort auf diese Frage: "Sie generieren auch beim Loslassen PlayerControl-Aufrufe mit gesetztem Release-Flag im Script." Bedeutet das, dass die Boolean Variable release true ist, wenn die Taste losgelassen wird?
Reply
Parent - - By Sven2 Date 2014-09-04 15:57
Der entsprechende Parameter an den PlayerControl-Callback ist true, ja.

Das ist z.B. fuer Bewegungstasten, die man ja halten soll so lange man sich bewegt.
Parent - By Maddino [de] Date 2014-09-04 16:29
Oder für ein Menü, dass solange offen bleibt, bis mal loslässt ;)

Danke nochmal!
Reply
Up Topic Community / German / Spielsteuerung erweitern

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill