1.0 Einführung 

2.0 Die Anfänge

3.0 Der Hauptscript

4.0 Move-Script

5.0 Kamera

6.0DorfbewohnerKI

7.0 Erste Waffen

8.0 Panels

9.0 Der erste Quest

10.0 Partikel

11.0 Menü

12.0 Abschließung

13.0 Downloads

14.0 Codesammlung

15.0 Frei Belegbare

Steuerung

Dieses Kapitel hat nicht sehr viel mit Rpgs zu tun ist allerdings trotzdem sehr wichtig in vielen Spielen! 

Also als erstes muss man natürlich Einfälle haben wie man eine frei belegbare Steuerung programmieren könnte! Hier muss man sich ein paar Befehle besonders anschauen! Und zwar sind das key_pressed, und key_lastpressed! Nun zu den Erklärungen!  

In key_lastpressed wird der Key abgespeichert der als letztes gedrückt worden ist! Jetzt kann man sich schon denken wofür man diesen Befehl braucht! Richtig geraten ;) Man braucht ihn um in den Optionsmenü um abzuspeichern welcher Key gedrückt worden ist! Diesem Key muss man dann natürlich speichern (in einer variable!) um ihn später in Funktionen aufrufen zu können! Das geht dann per Key_pressed! Key_Pressed ist der Knopf der grade gedrückt ist! Nun muss man allerdings aufpassen bei den abspeichern von Key_lastpressed! Man kann sich das ungefähr so vorstellen:

while(key_any == 0) { wait(1);  /* solange in den Optionsmenü kein Button gedrückt worden ist soll das Programm warten! */ }

key_press_test = key_lastpressed;

Bei diesem Codeschnipsel wird Key_lastpressed in Key_press_test gespeichert! Nun hat key_press_test den Wert des Scancodes der jeweiligen Taste die als letztes gedrückt worden ist! Also wenn zum Beispiel "ESC" als letztes gedrückt worden ist hat die Variable den Wert 1 !

Hier eine Auflistung von allen Scancodes:

F1-F12

Taste Scancode
F1 59
F2 60
F3 61
F4 62
F5 63
F6 64
F7 65
F8 66
F9 67
F10 68
F11 87
F12 88

 Zahlen

Key 1 2
Key 2 3
Key 3 4
Key 4 5
Key 5 6
Key 6 7
Key 7 8
Key 8 9
Key 9 10
Key 0 11

Alle Buchstaben

A 30
B 48
C 46
D 32
E 18
F 33
G 34
H 35
I 23
J 36
K 37
L 38
M 50
N 49
O 24
P 25
Q 16
R 19
S 31
T 20
U 22
V 47
W 17
X 45
Y 44
Z 21

 

Sonderzeichen

Pfeil Aufwärts 72
Pfeil Abwärts 80
Pfeil nach rechts 77
Pfeil nach links 75
Enter 28
Backspace 14
Shift Rechts 54
Shift Links 42
Tabulator 15
Alt 56
Ctrl 29
Pause 69
Insert 82
Entfernen (Del)  83
Pos1 (Aufpassen heißt on_HOME) 71
Ende 79
Bild Auf  73
Bild Ab  81
ß //  ?  12
+ // * 27
Ö 39
Ü 26
Ä 40
Komma 59

 

Joystick Tasten:

Joystick 1 Taste 1 256
Joystick 1 Taste 2 257
Joystick 1 Taste 3 258
Joystick 1 Taste 4 259
Joystick 1 Taste 5 260
Joystick 1 Taste 6 261
Joystick 1 Taste 7 262
Joystick 1 Taste 8 263
Joystick 1 Taste 9 264
Joystick 1 Taste 10 265
Joystick 2 Taste 1 266
Joystick 2 Taste 2 267
Joystick 2 Taste 3 268
Joystick 2 Taste 4 269
Joystick 2 Taste 5 270
Joystick 2 Taste 6 271
Joystick 2 Taste 7 272
Joystick 2 Taste 8 273
Joystick 2 Taste 9 274
Joystick 2 Taste 10 275

 

Und noch die Maustasten

Maustaste Links 280
Maustaste Rechts 281
Maustaste Mittel (Druck aufs Mausrad) 282

 

Übrigens das Mausrad erreicht man via MICKEY.Z ! Also ungefähr so:

if(mickey.z > 0) //wenn sich das Mausrad nach oben dreht!

So nun wieder zurück zum Thema!

Nun haben wir also alle Scancodes! Was uns das hilft werden sie sich vielleicht fragen! Nun ja so können wir schauen was die Variable für einen Wert hat! So nun sind wir so weit das ich ihnen einen kleinen Code zeigen kann!

/* In diesem Beispiel wollen wir versuchen das man Key_cuu neu belegt! */

var test_tasten = 72; //NUR EINE TESTVARIABLE! Am Anfang ist test_tasten 72!

function teste_tasten
{
while(key_any == null) 
{
wait(1);
}

test_tasten = key_lastpressed; // Test_tasten = key_lastpressed!
}

//nun müssen wir in unserer Move-Funktion noch den dist.x vektor überarbeiten!
//aus dem move-code in den vorherigen Kapitel:
//if(key_w==1) { my.bewegungsart=gehen; dist.x=key_w*time*my.geschwindigkeit_skill; }
// aus dem hier wird:
if(key_pressed(test_tasten)==1) { my.bewegungsart=gehen; dist.x = test_tasten*time*my.geschwindigkeit_skill; }

Wie sie sehen ist das wirklich nicht so schwer! Key_pressed stellt wie gesagt die Taste dar die grade gedrückt ist! Da test_tasten den Scan der jeweilig gedrückten Taste beinhaltet kann man es so schreiben! Zu besserem Verständinss: if(key_pressed(1)) täte bedeuten : Wenn Esc (Scancode für Esc = 1) gedrückt ist!

Nun hoffe ich das sie das alles verstanden haben!

 

Hier ein Link zu einer kleinen Demo von mir! LEST BITTE DIE README-DATEI!

Demo