Guten Abend meine Herren,
für das Spiel, an dem ich zurzeit arbeite, wollte ich im ersten Level Hilfetexte einbauen, darunter solche Standardsachen wie "Press <Left> and <Right> to move". Da ich jedoch dem Spieler die Möglichkeit gebe, die Steuerung selbst festzulegen, musste ich den Code schreiben, den ich, damit der alte Jesus auch ja zufrieden mit mir ist, hier mit euch teilen möchte.
Was er tut, ist, dass er die GML-Bezeichung für eine bestimmte Taste (z.B. vk_left) in den eigentlichen (englischen) Namen umwandelt (also in dem Fall "Left"). Hier ist er also:
Spoiler anzeigen
So, ich hoffe nun, dass euch das alles vielleicht mal nützlich wird. War mir eine Ehre!
für das Spiel, an dem ich zurzeit arbeite, wollte ich im ersten Level Hilfetexte einbauen, darunter solche Standardsachen wie "Press <Left> and <Right> to move". Da ich jedoch dem Spieler die Möglichkeit gebe, die Steuerung selbst festzulegen, musste ich den Code schreiben, den ich, damit der alte Jesus auch ja zufrieden mit mir ist, hier mit euch teilen möchte.
Was er tut, ist, dass er die GML-Bezeichung für eine bestimmte Taste (z.B. vk_left) in den eigentlichen (englischen) Namen umwandelt (also in dem Fall "Left"). Hier ist er also:
Struktur: key_name(taste,abkuerzungen,rechenzeichen,grossbuchstaben)
taste: die taste
ab hier immer 0=nein, 1=ja
abkuerzungen: Sollen abkürzbare Namen abgekürzt werden?
rechenzeichen: Sollen für die Numpad-Rechen-Tasten statt Divide, Multiply, Add und Subtract die Zeichen /, *, + und - verwendet werden?
grossbuchstaben: Sollen die Namen großgeschrieben werden?
Der Code:
Wichtig ist, dass das keine Funktion ist, die etwas ausführt, sondern es ist eine Return-Funktion. Das bedeutet, dass die einen Wert (argument0) umwandelt und einen anderen wieder ausspuckt. verwenden kannst du das zum Beispiel, um Variablen zu setzen oder so:
taste: die taste
ab hier immer 0=nein, 1=ja
abkuerzungen: Sollen abkürzbare Namen abgekürzt werden?
rechenzeichen: Sollen für die Numpad-Rechen-Tasten statt Divide, Multiply, Add und Subtract die Zeichen /, *, + und - verwendet werden?
grossbuchstaben: Sollen die Namen großgeschrieben werden?
Der Code:
GML-Quellcode
- //structure: key_name(key,abbreviations,operations,capitals)
- var val;
- if argument0==vk_add then { if argument2==1 then val='+' else val='Add' }if argument0==vk_alt then val='Alt'if argument0==vk_anykey then val='Any key'if argument0==vk_backspace then val='Backspace'if argument0==vk_control then { if argument1==1 then val='Ctrl' else val='Control' }if argument0==vk_decimal then val='Decimal'if argument0==vk_delete then { if argument1==1 then val='Del' else val='Delete' }if argument0==vk_divide then { if argument2==1 then val='/' else val='Divide' }if argument0==vk_down then val='Down'if argument0==vk_end then val='End'if argument0==vk_enter then val='Enter'if argument0==vk_escape then { if argument1==1 then val='Esc' else val='Escape' }if argument0==vk_f1 then val='F1'if argument0==vk_f2 then val='F2'if argument0==vk_f3 then val='F3'if argument0==vk_f4 then val='F4'if argument0==vk_f5 then val='F5'if argument0==vk_f6 then val='F6'if argument0==vk_f7 then val='F7'if argument0==vk_f8 then val='F8'if argument0==vk_f9 then val='F9'if argument0==vk_f10 then val='F10'if argument0==vk_f11 then val='F11'if argument0==vk_f12 then val='F12'if argument0==vk_home then val='Home'if argument0==vk_insert then { if argument1==1 then val='Ins' else val='Insert' }if argument0==vk_lalt then val='Alt Left'if argument0==vk_lcontrol then { if argument1==1 then val='Ctrl Left' else val='Control Left' }if argument0==vk_left then val='Left'if argument0==vk_lshift then val='Shift Left'if argument0==vk_multiply { if argument2==1 then val='*' else val='Multiply' }if argument0==vk_nokey then val='No key'if argument0==vk_numpad0 then { if argument1==1 then val='Num0' else val='Numpad 0' }if argument0==vk_numpad1 then { if argument1==1 then val='Num1' else val='Numpad 1' }if argument0==vk_numpad2 then { if argument1==1 then val='Num2' else val='Numpad 2' }if argument0==vk_numpad3 then { if argument1==1 then val='Num3' else val='Numpad 3' }if argument0==vk_numpad4 then { if argument1==1 then val='Num4' else val='Numpad 4' }if argument0==vk_numpad5 then { if argument1==1 then val='Num5' else val='Numpad 5' }if argument0==vk_numpad6 then { if argument1==1 then val='Num6' else val='Numpad 6' }if argument0==vk_numpad7 then { if argument1==1 then val='Num7' else val='Numpad 7' }if argument0==vk_numpad8 then { if argument1==1 then val='Num8' else val='Numpad 8' }if argument0==vk_numpad9 then { if argument1==1 then val='Num9' else val='Numpad 9' }if argument0==vk_pagedown then val='Page Down'if argument0==vk_pageup then val='Page Up'if argument0==vk_pause then val='Pause'if argument0==vk_printscreen then val='Print Screen'if argument0==vk_ralt then val='Alt Right'if argument0==vk_rcontrol then { if argument1==1 then val='Ctrl Right' else val='Control Right' }if argument0==vk_return then val='Return'if argument0==vk_right then val='Right'if argument0==vk_rshift then val='Shift Right'if argument0==vk_shift then val='Shift'if argument0==vk_space then val='Space'if argument0==vk_subtract then { if argument2==1 then val='-' else val='Subtract' }if argument0==vk_tab then val='Tab'if argument0==vk_up then val='Up'if argument0==ord('A') then val='A'if argument0==ord('B') then val='B'if argument0==ord('C') then val='C'if argument0==ord('D') then val='D'if argument0==ord('E') then val='E'if argument0==ord('F') then val='F'if argument0==ord('G') then val='G'if argument0==ord('H') then val='H'if argument0==ord('I') then val='I'if argument0==ord('J') then val='J'if argument0==ord('K') then val='K'if argument0==ord('L') then val='L'if argument0==ord('M') then val='M'if argument0==ord('N') then val='N'if argument0==ord('O') then val='O'if argument0==ord('P') then val='P'if argument0==ord('Q') then val='Q'if argument0==ord('R') then val='R'if argument0==ord('S') then val='S'if argument0==ord('T') then val='T'if argument0==ord('U') then val='U'if argument0==ord('V') then val='V'if argument0==ord('W') then val='W'if argument0==ord('X') then val='X'if argument0==ord('Y') then val='Y'if argument0==ord('Z') then val='Z'if argument0==ord('0') then val='0'if argument0==ord('1') then val='1'if argument0==ord('2') then val='2'if argument0==ord('3') then val='3'if argument0==ord('4') then val='4'if argument0==ord('5') then val='5'if argument0==ord('6') then val='6'if argument0==ord('7') then val='7'if argument0==ord('8') then val='8'if argument0==ord('9') then val='9'
- if argument3==0 then val=string_lower(val);
- return val;
Wichtig ist, dass das keine Funktion ist, die etwas ausführt, sondern es ist eine Return-Funktion. Das bedeutet, dass die einen Wert (argument0) umwandelt und einen anderen wieder ausspuckt. verwenden kannst du das zum Beispiel, um Variablen zu setzen oder so:
So, ich hoffe nun, dass euch das alles vielleicht mal nützlich wird. War mir eine Ehre!