RPGVX.net
RPG-Maker VX => VX Technik [Frageforum] => Thema gestartet von: Boogatie Roll am August 12, 2010, 21:06:20
-
Ich suche schon eine Weile ein Script das einen erlaubt
mehr Tasten abzufragen, dh. mehr Tasten ins Spiel zu bringen,
da der Maker ja sehr wenige nur im Standard hat.
Wäre toll wenn man alle Tasten verwenden könnte,
mir würde aber auch schon 1,2,3 oder Q,W,E reichen.^^
-
Schau mal hier: http://www.rpgvx.net/index.php/topic,179.0.html (http://www.rpgvx.net/index.php/topic,179.0.html)
Notfalls kannst du auch das Inputscript aus einem Active Battle System verwenden, da brauchst du dann aber auch noch die Input.dll.
-
Schau mal hier: [url]http://www.rpgvx.net/index.php/topic,179.0.html[/url] ([url]http://www.rpgvx.net/index.php/topic,179.0.html[/url])
Notfalls kannst du auch das Inputscript aus einem Active Battle System verwenden, da brauchst du dann aber auch noch die Input.dll.
Danke aber der Link geht nicht zum Tastenscript,
da hab ich ja zuerst geschaut.
Mit der Inpu.dll hätte ich nichts dagegen, wenn mir einer zeigt wie ich genau damit
umgehen muss.
-
Es gibt noch ein ohne dll, aber der Author ist unbekannt. Habe es mal bei rrr gefunden, aber niemand konnte mir es sagen nichtmal der Publischer. :(
class << Input
# * Alias List
unless self.method_defined? (:oz_key_press)
alias oz_key_press press?
alias oz_key_trigger trigger?
alias oz_key_repeat repeat?
alias og_key_update update
end
end
module Input
# Numbers not in the numpad
Numbers = []
Numbers[0] = 48
Numbers[1] = 49
Numbers[2] = 50
Numbers[3] = 51
Numbers[4] = 52
Numbers[5] = 53
Numbers[6] = 54
Numbers[7] = 55
Numbers[8] = 56
Numbers[9] = 57
# Letters
Letters = {}
Letters['A'] = 65
Letters['B'] = 66
Letters['C'] = 67
Letters['D'] = 68
Letters['E'] = 69
Letters['F'] = 70
Letters['G'] = 71
Letters['H'] = 72
Letters['I'] = 73
Letters['J'] = 74
Letters['K'] = 75
Letters['L'] = 76
Letters['M'] = 77
Letters['N'] = 78
Letters['O'] = 79
Letters['P'] = 80
Letters['Q'] = 81
Letters['R'] = 82
Letters['S'] = 83
Letters['T'] = 84
Letters['U'] = 85
Letters['V'] = 86
Letters['W'] = 87
Letters['X'] = 88
Letters['Y'] = 89
Letters['Z'] = 90
# Other keys
Back = 138
Tab = 139
Enter = 143
Shift = 146
Ctrl = 147
Alt = 148
Capslock = 150
Esc = 157
Space = 32
End = 35
Home = 36
Left = 37
Right = 39
Del = 46
Collon = 186
Quote = 222
Equal = 187
Comma = 188
Underscore = 189
Dot = 190
Backslash = 191
Tilde = 192
Lb = 219
Rb = 221
Forwardslash = 220
# Api
State = Win32API.new("user32", "GetAsyncKeyState", ["i"], "i")
PressDuration = {} # A hash for pressed keys and their durations
#=============================================================================
module_function
#============================================================================
# Update
def update
og_key_update
for key in PressDuration.keys
(State.call(key).abs & 0x8000 == 0x8000) ? PressDuration[key] +=
1 : PressDuration.delete(key)
end
end
def key_pressed?(key)
if (State.call(key).abs & 0x8000 == 0x8000)
PressDuration[key] = 0
return true
else
return false
end
end
def comp_fix(numkey)
numkey -= 130 if numkey.between?(130, 158)
return numkey
end
def press?(numkey)
return oz_key_press(numkey) if numkey < 30
realkey = comp_fix(numkey)
return true unless PressDuration[realkey].nil?
return key_pressed?(realkey)
end
def trigger?(numkey)
return oz_key_trigger(numkey) if numkey < 30
realkey = comp_fix(numkey)
count = PressDuration[realkey]
return ((count == 0) or (count.nil? ? key_pressed?(realkey) : false))
end
def repeat?(numkey)
return oz_key_repeat(numkey) if numkey < 30
realkey = comp_fix(numkey)
count = PressDuration[realkey]
return true if count == 0
return (count.nil? ? key_pressed?(realkey) : (count >= 23 and
(count - 23) % 6 == 0))
end
end
Das Benutzen des Scripts ist gleich geblieben. Natürlich musst du aber Tastenabfragen nun per Script tätiggen.
Dafür gibt es 3 Typen von ABfragen:
if Input.trigger?(numkey)
Ob die Taste gedrückt wurde.
if Input.press?(numkey)
Ob die Taste gehalten wird.
Input.repeat?(numkey)
Ob die Taste wiederholt gedrückt wird/wurde.
numkey wird mit der Nummber der Taste ersetzt. Diese findest du im Script selbst hinter dem Namen der Taste.
Die Taste 'A' hat z.B. die Nummer 65.
MfG
Deity
-
Ah vielen Dank..^^
Sowas habe ich gesucht.
Und übrgiens, in deinem Variabel HUD ist irgendein Fehler.
Bei meinem Spiel, als ich 3 variabeln mehr angezeigt habe als vorher,
hing es extrem und alles lief voll langsam.
Als ich die 3 variabeln wieder rausgenommen habe,
gings wieder normal.
musste es dann halt mit meinen balken anzeigen...^^
Post zusammen gefügt: August 12, 2010, 22:06:05
Sry wegen Doppelpost, aber das Script geht bei mir irgendwie nicht.
Ich hab es einfach über Main eingefügt,
und ein Script bedingung so gemacht:
if Input.trigger?(81)
aber es kommt sofort ein syntax error...
mach ich irgendwas falsch?
-
hier findest du n gutes Tastenscript: http://www.hbgames.org/forums/viewtopic.php?f=11&t=71132&hilit=input
komplette beschreibung findest du dort (=
funktioniert ganz ohne DLL, einziger Nachteil was mir auf jeden Fall bei release aufgefallen ist, dass es auch reagiert, wenn das Window nicht aktiv ist.
lg flip
-
Wo hast du die Bedingung eingebaut?
Falls via Call Script, musst du das if mit einem end beenden.
Also im Conditional Branch => Script reicht: Input.trigger?(81)
Im Call Script:
if Input.trigger?(81)
end
Da es bei mir keine Fehler gibt und auch nur in richtigen Momment reagiert, kann ich es nicht nachvollziehen. :P
MfG
Deity
-
Es ist in nem ganz Normalen Event:
(http://www3.pic-upload.de/12.08.10/58o4t4925j9x.png) (http://www.pic-upload.de/view-6693899/ghjgj.png.html)
Hmm...
Edit:
Okay, hab das If weggemacht, dann gings..^^
Ich bedank mich nochmal...:)
~Ja, dann ist es ja geklärt :)
Closed.
Colo