Tach.
Habe vor nem Jahr von ner Gruppe RMXP Übersetzern (Jap-> Deutsch) erfahren, das es möglich wär per Ruby ein Mausskript zu schreiben. Gibt es schon eines?
Dennis
Druckbare Version
Tach.
Habe vor nem Jahr von ner Gruppe RMXP Übersetzern (Jap-> Deutsch) erfahren, das es möglich wär per Ruby ein Mausskript zu schreiben. Gibt es schon eines?
Dennis
Das heißt wohl nein, oder? :/
Dennis
En masse, gibt's die, hier eines das ich grad zur Hand hab: (afair von Cybersam)
Code:module Mouse
gsm = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i')
#--------------------------------------------------------------------------
@cursor_pos = Win32API.new('user32', 'GetCursorPos', 'p', 'i')
#--------------------------------------------------------------------------
$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
#--------------------------------------------------------------------------
GetKeyState = Win32API.new("user32","GetAsyncKeyState",['i'],'i')
GetKeyboardState = Win32API.new("user32","GetKeyState",['i'],'i')
GetSetKeyState = Win32API.new("user32","SetKeyboardState",['i'],'i')
#--------------------------------------------------------------------------
module_function
#--------------------------------------------------------------------------
def mouse_global_pos
pos = [0, 0].pack('ll')
if @cursor_pos.call(pos) != 0
return pos.unpack('ll')
else
return nil
end
end
#--------------------------------------------------------------------------
def mouse_pos(catch_anywhere = false)
x, y = screen_to_client(*mouse_global_pos)
width, height = client_size
if catch_anywhere or (x >= 0 and y >= 0 and x < width and y < height)
return x, y
else
return $m.x, $m.y
end
end
#--------------------------------------------------------------------------
def del
if @oldcursor == nil
return
else
@SetClassLong.call(handel ,-12, @oldcursor)
@oldcursor = nil
end
end
#--------------------------------------------------------------------------
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
$scr2cli = Win32API.new('user32', 'ScreenToClient', %w(l p), 'i')
$client_rect = Win32API.new('user32', 'GetClientRect', %w(l p), 'i')
$readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l')
$findwindow = Win32API.new('user32', 'FindWindowA', %w(p p), 'l')
def screen_to_client(x, y)
return nil unless x and y
pos = [x, y].pack('ll')
if $scr2cli.call(hwnd, pos) != 0
return pos.unpack('ll')
else
return nil
end
end
def hwnd
game_name = "\0" * 256
$readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
return $findwindow.call('RGSS Player',game_name)
end
def client_size
rect = [0, 0, 0, 0].pack('l4')
$client_rect.call(hwnd, rect)
right, bottom = rect.unpack('l4')[2..3]
return right, bottom
end
Hm, okay Danke.
Jetzt musst Du mir nur noch sagen, wie ich im Spiel damit umgehe kann und wo ich den Code einfügen sollte. ;)
Ansonsten: Kann man mit dem XP keine Videos mehr abspielen? :shocked:
Dennis
Dazu gibts auch massig Scripte.Zitat:
Zitat von dennis_meckel
Ich meine hier im Technikforum ist irgendwo n Thread gepinnt wo massig Links drin stehen.
Da gibts alles mögliche.... von Maussteuerung, zum SideViewKS, geänderter Titelscreen etc. da wirst du sicher fündig.
Ich würde es mal in ein neues Skript über alle anderen Skripte kopieren (falls du es in den darunterliegenden Skripten benutzt) und ansonsten brauchst du halt Ruby Kenntnisse um das ganze anständig zu verwenden.Zitat:
Zitat von dennis_meckel
Es wäre möglich passende Interpreter Methoden zu schreiben, sodass du das ganze auch von Events aus benutzen kannst... aber wozu die Mühe, mit Ruby gehts eh einfacher und schneller, imo.
Ansonsten... Mouse.mouse_pos gibt dir die Maus Position innerhalb des Fensters zurück, Mouse.keyboard($RMouse_BUTTON_L) gibt dir ein true zurück falls die linke Maustaste gedrückt ist und ein false falls nichts. (sprich, du kannst es in einem if benutzen)
Genauso gehts mit den anderen globalen Variablen. Eigentlich ziemlich selbsterklärend und einfach zu benutzen. ^^°