Script zur Beschaffung des Namens einer Taste

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Script zur Beschaffung des Namens einer Taste

      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
      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:

      GML-Quellcode

      1. //structure: key_name(key,abbreviations,operations,capitals)
      2. var val;
      3. 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'
      4. if argument3==0 then val=string_lower(val);
      5. 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:

      GML-Quellcode

      1. draw_text(16,16,'Press '+key_name(vk_up,1,1,1)+' to jump.');






      So, ich hoffe nun, dass euch das alles vielleicht mal nützlich wird. War mir eine Ehre!
    • Hi,

      dein Skript ist gut und funktional, allerdings funktioniert er nicht für alle Tasten,
      als ich vor längerer Zeit mal das Problem hatte, hat elvissteinjr dieses Skript geschrieben
      Spoiler anzeigen

      GML-Quellcode

      1. var name
      2. switch(argument0)
      3. {
      4. case 8: name = "Rücktaste" break;
      5. case 13: name = "Enter" break;
      6. case 16: name = "Shift" break;
      7. case 17: name = "Strg" break;
      8. case 18: name = "Alt" break;
      9. case 19: name = "Pause" break;
      10. case 20: name = "Caps Lock" break;
      11. case 27: name = "Escape" break;
      12. case 32: name = "Leertaste" break;
      13. case 33: name = "Bild Hoch" break;
      14. case 34: name = "Bild Runter" break;
      15. case 35: name = "Ende" break;
      16. case 36: name = "Pos1" break;
      17. case 37: name = "Links" break;
      18. case 38: name = "Hoch" break;
      19. case 39: name = "Rechts" break;
      20. case 40: name = "Runter" break;
      21. case 41: name = "Select" break;
      22. case 42: name = "Druck" break;
      23. case 43: name = "Ausführen" break;
      24. case 44: name = "Druck" break;
      25. case 45: name = "Einfügen" break;
      26. case 46: name = "Löschen" break;
      27. case 47: name = "Hilfe" break;
      28. case 96: name = "Num 0" break;
      29. case 97: name = "Num 1" break;
      30. case 98: name = "Num 2" break;
      31. case 99: name = "Num 3" break;
      32. case 100: name = "Num 4" break;
      33. case 101: name = "Num 5" break;
      34. case 102: name = "Num 6" break;
      35. case 103: name = "Num 7" break;
      36. case 104: name = "Num 8" break;
      37. case 105: name = "Num 9" break;
      38. case 106: name = "Multiplizieren" break;
      39. case 107: name = "Addieren" break;
      40. case 108: name = "Seperator" break;
      41. case 109: name = "Subtrahieren" break;
      42. case 110: name = "Dezimal" break;
      43. case 111: name = "Dividieren" break;
      44. case 112: name = "F1" break;
      45. case 113: name = "F2" break;
      46. case 114: name = "F3" break;
      47. case 115: name = "F4" break;
      48. case 116: name = "F5" break;
      49. case 117: name = "F6" break;
      50. case 118: name = "F7" break;
      51. case 119: name = "F8" break;
      52. case 120: name = "F9" break;
      53. case 121: name = "F10" break;
      54. case 122: name = "F11" break;
      55. case 123: name = "F12" break;
      56. case 191: name = "\#" break;
      57. case 220: name = "^" break;
      58. case 221: name = "´" break;
      59. case 222: name = "Ä" break;
      60. case 192: name = "Ö" break;
      61. case 186: name = "Ü" break;
      62. default: name = chr(argument0) break;
      63. } break;
      64. return name
      Alles anzeigen


      edit: ok angepasst, wie es MewX vorgeschlagen hat

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von andre111 ()