• Anmelden

Neo-Bahamut

Himmelsgleicher

  • »Neo-Bahamut« ist der Autor dieses Themas

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

1

Montag, 15. Dezember 2008, 19:46

Keyboardskript

Ich brauch ein Keyboardskript, das natürlich so ziemlich alle Tasten verfügbar macht und folgende Funktionen dafür hat:
- Wurde die Taste einmal gedrückt
- Wird die Taste gedrückt gehalten
- Wurde die Taste losgelassen

Ich hab bis jetzt noch kein derartiges Skript gefunden =(
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

2

Montag, 15. Dezember 2008, 20:14

Zwei Namen, die dir helfen:
1. Miikku
2. SoundSpawn
Miikku's Script dürfteste als Erstes finden. Wenn jmd. noch andere Tastaturscripte kennt als diese, bitte per PN an mich senden ;)
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

3

Montag, 15. Dezember 2008, 20:14

das script aus meiner engine ganz oben hat die drei funktionen!
ich würds hier reinstellen, aber ich hock grad am falschen pc.
also einfach im ersten script das module "Key" rauskopieren!

dann kannst du
Key.press?(key)
Key.trigger?(key)
Key.times?(key,times)
die ersten zwei kennst du ja schon!
das dritte ist ziemlich unnütz, ich glaub aber, dass kannst du als losgelassen benutzen, indem du für times einfach 0 einsetzt!

für key kannst du diese 0x42 dinger, wie auch immer sie genannt werden einsetzten
die dindest du im 2 script^^
das ist das script von cybersam, aus dem ich mir die immer abguck!

tut mir leid, dass ich das script jetzt nicht dem ganzen forum geben kann, aber das ist im grunde dasselbe wie cybersam's, nur das ich es mir ein bisschen verändert habe!

cow
Spoiler: Sachen
zum Lesen den Text mit der Maus markieren

Neo-Bahamut

Himmelsgleicher

  • »Neo-Bahamut« ist der Autor dieses Themas

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

4

Montag, 15. Dezember 2008, 20:23

@ Evrey: Scuh ich gleich ma^^
@Cow: Soll ichs dann posten?
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

5

Montag, 15. Dezember 2008, 20:24

Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#======================================
# ¦ Keyboard Script
#---------------------------------------------------------------------------
#  By: Cybersam
#   Date: 25/05/05
#   Version 4
#======================================
 
module Kboard
#--------------------------------------------------------------------------
$RMouse_BUTTON_L = 0x01    	# left mouse button
$RMouse_BUTTON_R = 0x02    	# right mouse button
$RMouse_BUTTON_M = 0x04    	# middle mouse button
$RMouse_BUTTON_4 = 0x05    	# 4th mouse button
$RMouse_BUTTON_5 = 0x06    	# 5th mouse button
#--------------------------------------------------------------------------
$R_Key_BACK  	= 0x08    	# BACKSPACE key
$R_Key_TAB   	= 0x09    	# TAB key
$R_Key_RETURN	= 0x0D    	# ENTER key
$R_Key_SHIFT 	= 0x10    	# SHIFT key
$R_Key_CTLR  	= 0x11    	# CTLR key
$R_Key_ALT   	= 0x12    	# ALT key
$R_Key_PAUSE 	= 0x13    	# PAUSE key
$R_Key_CAPITAL   = 0x14    	# CAPS LOCK key
$R_Key_ESCAPE	= 0x1B    	# ESC key
$R_Key_SPACE 	= 0x20    	# SPACEBAR
$R_Key_PRIOR 	= 0x21    	# PAGE UP key
$R_Key_NEXT  	= 0x22    	# PAGE DOWN key
$R_Key_END   	= 0x23    	# END key
$R_Key_HOME  	= 0x24    	# HOME key
$R_Key_LEFT  	= 0x25    	# LEFT ARROW key
$R_Key_UP    	= 0x26    	# UP ARROW key
$R_Key_RIGHT 	= 0x27    	# RIGHT ARROW key
$R_Key_DOWN  	= 0x28    	# DOWN ARROW key
$R_Key_SELECT	= 0x29    	# SELECT key
$R_Key_PRINT 	= 0x2A    	# PRINT key
$R_Key_SNAPSHOT  = 0x2C    	# PRINT SCREEN key
$R_Key_INSERT	= 0x2D    	# INS key
$R_Key_DELETE	= 0x2E    	# DEL key
#--------------------------------------------------------------------------
$R_Key_0     	= 0x30    	# 0 key
$R_Key_1     	= 0x31    	# 1 key
$R_Key_2     	= 0x32    	# 2 key
$R_Key_3     	= 0x33    	# 3 key
$R_Key_4     	= 0x34    	# 4 key
$R_Key_5     	= 0x35    	# 5 key
$R_Key_6     	= 0x36    	# 6 key
$R_Key_7     	= 0x37    	# 7 key
$R_Key_8     	= 0x38    	# 8 key
$R_Key_9     	= 0x39    	# 9 key
#--------------------------------------------------------------------------
$R_Key_A     	= 0x41    	# A key
$R_Key_B     	= 0x42    	# B key
$R_Key_C     	= 0x43    	# C key
$R_Key_D     	= 0x44    	# D key
$R_Key_E     	= 0x45    	# E key
$R_Key_F     	= 0x46    	# F key
$R_Key_G     	= 0x47    	# G key
$R_Key_H     	= 0x48    	# H key
$R_Key_I     	= 0x49    	# I key
$R_Key_J     	= 0x4A    	# J key
$R_Key_K     	= 0x4B    	# K key
$R_Key_L     	= 0x4C    	# L key
$R_Key_M     	= 0x4D    	# M key
$R_Key_N     	= 0x4E    	# N key
$R_Key_O     	= 0x4F    	# O key
$R_Key_P     	= 0x50    	# P key
$R_Key_Q     	= 0x51    	# Q key
$R_Key_R     	= 0x52    	# R key
$R_Key_S     	= 0x53    	# S key
$R_Key_T     	= 0x54    	# T key
$R_Key_U     	= 0x55    	# U key
$R_Key_V     	= 0x56    	# V key
$R_Key_W     	= 0x57    	# W key
$R_Key_X     	= 0x58    	# X key
$R_Key_Y     	= 0x59    	# Y key
$R_Key_Z     	= 0x5A    	# Z key
#--------------------------------------------------------------------------
$R_Key_LWIN  	= 0x5B    	# Left Windows key (Microsoft Natural keyboard)
$R_Key_RWIN  	= 0x5C    	# Right Windows key (Natural keyboard)
$R_Key_APPS  	= 0x5D    	# Applications key (Natural keyboard)
#--------------------------------------------------------------------------
$R_Key_NUMPAD0   = 0x60    	# Numeric keypad 0 key
$R_Key_NUMPAD1   = 0x61    	# Numeric keypad 1 key
$R_Key_NUMPAD2   = 0x62    	# Numeric keypad 2 key
$R_Key_NUMPAD3   = 0x63    	# Numeric keypad 3 key
$R_Key_NUMPAD4   = 0x64    	# Numeric keypad 4 key
$R_Key_NUMPAD5   = 0x65    	# Numeric keypad 5 key
$R_Key_NUMPAD6   = 0x66    	# Numeric keypad 6 key
$R_Key_NUMPAD7   = 0x67    	# Numeric keypad 7 key
$R_Key_NUMPAD8   = 0x68    	# Numeric keypad 8 key
$R_Key_NUMPAD9  = 0x69    	# Numeric keypad 9 key
$R_Key_MULTIPLY  = 0x6A    	# Multiply key (*)
$R_Key_ADD   	= 0x6B    	# Add key (+)
$R_Key_SEPARATOR = 0x6C    	# Separator key
$R_Key_SUBTRACT  = 0x6D    	# Subtract key (-)
$R_Key_DECIMAL   = 0x6E    	# Decimal key
$R_Key_DIVIDE	= 0x6F    	# Divide key (/)
#--------------------------------------------------------------------------
$R_Key_F1    	= 0x70    	# F1 key
$R_Key_F2    	= 0x71    	# F2 key
$R_Key_F3    	= 0x72    	# F3 key
$R_Key_F4    	= 0x73    	# F4 key
$R_Key_F5    	= 0x74    	# F5 key
$R_Key_F6    	= 0x75    	# F6 key
$R_Key_F7    	= 0x76    	# F7 key
$R_Key_F8    	= 0x77    	# F8 key
$R_Key_F9    	= 0x78    	# F9 key
$R_Key_F10   	= 0x79    	# F10 key
$R_Key_F11   	= 0x7A    	# F11 key
$R_Key_F12   	= 0x7B    	# F12 key
#--------------------------------------------------------------------------
$R_Key_NUMLOCK   = 0x90    	# NUM LOCK key
$R_Key_SCROLL	= 0x91    	# SCROLL LOCK key
#--------------------------------------------------------------------------
$R_Key_LSHIFT	= 0xA0    	# Left SHIFT key
$R_Key_RSHIFT	= 0xA1    	# Right SHIFT key
$R_Key_LCONTROL  = 0xA2    	# Left CONTROL key
$R_Key_RCONTROL  = 0xA3    	# Right CONTROL key
$R_Key_L_ALT	= 0xA4    	# Left ALT key
$R_Key_R_ALT	= 0xA5    	# Right ALT key
#--------------------------------------------------------------------------
$R_Key_SEP  	= 0xBC    	# , key
$R_Key_DASH  	= 0xBD    	# - key
$R_Key_DOTT  	= 0xBE    	# . key
#--------------------------------------------------------------------------
GetKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
GetKeyboardState = Win32API.new("user32","GetKeyState",['i'],'i')
GetSetKeyState = Win32API.new("user32","SetKeyboardState",['i'],'i')
#--------------------------------------------------------------------------
module_function
#--------------------------------------------------------------------------
def keyb(rkey)
   if GetKeyState.call(rkey) != 0
 	return 1
   end
   return 0
end
 #--------------------------------------------------------------------------
def keyboard(rkey)
  GetKeyState.call(rkey) & 0x01 == 1  #
end
#--------------------------------------------------------------------------
def key(rkey, key = 0)
  GetKeyboardState.call(rkey) & 0x01 == key #
end
end
zum Lesen den Text mit der Maus markieren


da is ein keyboard script

edit: zu langsam >.>

6

Montag, 15. Dezember 2008, 20:35

@Cow: Soll ichs dann posten?
hat supaiku ja schon mehr oder weniger, ich hab halt die methodennamen umgeschrieben...
Spoiler: Sachen
zum Lesen den Text mit der Maus markieren

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

7

Montag, 15. Dezember 2008, 21:00

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
if TasteGedrückt && !variable
 variable = true
 #tue etwas wenn erstes mal drücken
elsif !TasteGedrückt && variable
 #tue etwas wenn taste losgelassen wird
 variable = false
elsif TasteGedrückt && variable
 #tue etwas wenn taste gehalten wird
else
 #tue etwas wenn nix gedrückt wird/wurde
end

Wenn du deine Tastenabfrage so umschreibst, erhältst du das ergebnis, das du wolltest, die Abfrage von allen Möglichkeiten, eine Taste zu drücken^^"
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

8

Montag, 15. Dezember 2008, 22:38

Ich fand Cybersams Script nicht so gut, weil es die Tasten jedes Mal aufs neue abfragt. Ein schönerer Ansatz ist da der von Near Fantastica, der die Tasten einmal pro Frame abfragt und sich merkt. Allerdings funktionierte auch das Script nicht fehlerfrei.

Ich hätte daher noch ein Script anzubieten:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#============================================================================== 
# ** Keyboard Modul von Kai unter Verwendung von Near Fantasticas Keyboard-Script
# => Ermöglicht Abfrage von Tasten über den Aufruf
# Keyboard.key_down?(Keyboard::Taste)
# Keyboard.key_press?(Keyboard::Taste)
# Keyboard.key_up?(Keyboard::Taste)
# Wobei Taste eine der unten stehenden Konstanten darstellt
#==============================================================================
 
module Keyboard
  #--------------------------------------------------------------------------
  # * Konstanten von Near Fantastica
  #--------------------------------------------------------------------------
  Mouse_Left      = 1       ; Mouse_Right     = 2
  Back            = 8       ; Tab             = 9
  Enter           = 13      ; Shift           = 16
  Ctrl            = 17      ; Alt             = 18
  Capslock        = 20      ; Esc             = 27
  Space           = 32      ; End             = 35
  Home            = 36      ; Left            = 37
  Right           = 39
  Del             = 46      ; Collon          = 186
  Equal           = 187     ; Comma           = 188
  Underscore      = 189     ; Dot             = 190
  Backslash       = 191     ; Tilde           = 192
  Lb              = 219     ; Rb              = 221
  Forwardslash    = 220     ; Quote           = 222
  Numberkeys = ('0'..'9').inject({}) do |h, c| h[c] = c[0]; h end
  Numberpad       = {}      ; Numberpad[0]    = 45
  Numberpad[1]    = 35      ; Numberpad[2]    = 40
  Numberpad[3]    = 34      ; Numberpad[4]    = 37
  Numberpad[5]    = 12      ; Numberpad[6]    = 39
  Numberpad[7]    = 36      ; Numberpad[8]    = 38
  Numberpad[9]    = 33
  Numpad = {}               ; Numpad[0] = 96
  Numpad[1] = 97            ; Numpad[2] = 98
  Numpad[3] = 99            ; Numpad[4] = 100
  Numpad[5] = 101           ; Numpad[6] = 102
  Numpad[7] = 103           ; Numpad[8] = 104
  Numpad[9] = 105
  Letters = ('A'..'Z').inject({}) do |h, c| h[c] = c[0]; h end
 
  Fkeys           = {}      ; Fkeys[1]        = 112
  Fkeys[2]        = 113     ; Fkeys[3]        = 114
  Fkeys[4]        = 115     ; Fkeys[5]        = 116
  Fkeys[6]        = 117     ; Fkeys[7]        = 118
  Fkeys[8]        = 119     ; Fkeys[9]        = 120
  Fkeys[10]       = 121     ; Fkeys[11]       = 122
  Fkeys[12]       = 123
 
  #--------------------------------------------------------------------------
  # * WinAPI
  #--------------------------------------------------------------------------
  GetKeyboardState = Win32API.new('user32', 'GetKeyboardState', 'P', 'L')
  #--------------------------------------------------------------------------
  # * most significant bit
  #--------------------------------------------------------------------------
  MSB = 128
  #--------------------------------------------------------------------------
  # * Get Key State (Test Pressed)
  #--------------------------------------------------------------------------
  def self.getkeystate(buffer)
    GetKeyboardState.call(buffer)
  end
  #--------------------------------------------------------------------------
  # * Gibt true zurück, wenn Taste gedrückt und wieder losgelassen wurde
  #--------------------------------------------------------------------------
  def self.key_up?(key)
    (@last[key] & MSB == MSB) && (@pressed[key] & MSB != MSB)
  end
  #--------------------------------------------------------------------------
  # * Gibt true zurück, wenn Taste heruntergedrückt wurde
  #--------------------------------------------------------------------------
  def self.key_down?(taste)
    (@pressed[taste] & MSB == MSB) && (@last[taste] & MSB != MSB)
  end
  class << self; alias trigger? key_down?; end
  #--------------------------------------------------------------------------
  # * Gibt true zurück, wenn Taste gedrückt gehalten wird
  #--------------------------------------------------------------------------
  def self.key_press?(taste)
    @pressed[taste] & MSB == MSB
  end
  class << self; alias press? key_press? end
  #--------------------------------------------------------------------------
  # * Gibt true zurück, wenn Taste wiederholt gedrückt gehalten wird
  #--------------------------------------------------------------------------
  def self.repeat?(taste)
    not key_down(taste) and key_press?(taste)
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  @pressed = ' ' * 256
  @last = ' ' * 256
  def self.update
    @last.replace(@pressed)
    getkeystate(@pressed)
  end
end
#==============================================================================
# ** Input
#==============================================================================
class << Input
  alias update_rx_keys update
  def update
    Keyboard.update
    update_rx_keys
  end
end
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

Neo-Bahamut

Himmelsgleicher

  • »Neo-Bahamut« ist der Autor dieses Themas

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

9

Montag, 15. Dezember 2008, 22:47

Juhu, darauf hab ich gewartet xD
Du hast mir ja auch das tolle Mausskript gemacht^^
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Social Bookmarks