[RESOLVED] Hotkeys to call for a script/event/common event/ etc

Started by karldaylo, April 20, 2011, 09:14:47 am

Previous topic - Next topic

karldaylo

i need a realy simple script which declares a hotkey for a certain script (for now... just a hot key for a class scene script)

for) instance:
i got a script which that action will be demonstrated on the screen
or maybe a hot key which calls a scene_class (example: makin an hotkey for this script $scene = Scene_Item.new)

you might think i know stuff, cuz i already had an experience within scripting...

well yeah... bout a week ago XD, and i have no idea how you guys do those wicked hotkey script to call an event,script etc

quick respond will be trully appriciated.

thanks
RESPECT LIST:Blizzard, Game_guy, Foreverzer0, Winkio, Nathmatt

stripe103

You can have a paralell process common event that all the time checks if a specific keys are pressed, and then do what you want after that.

Something like

@>Conditional Branch: The X button is being pressed
   @>Comment: Do what you want if the one button is pressed here
: Branch End
@>Conditional Branch: The Y button is being pressed
   @>Comment: Do what you want if the another button is pressed here
: Branch End

karldaylo

thank you but this isnt exactly what i needed...
the button conditional choices are limited...
so then im not able to pick freely which key i desire to use...
RESPECT LIST:Blizzard, Game_guy, Foreverzer0, Winkio, Nathmatt

ForeverZer0

You need a custom controls script to define more buttons.
Tons of Add-ons has the best one available in it. I believe it is the first script in the second part. All the instructions are there. You will need to use a script call as the condition, since the custom buttons won't be listed in the event command. Here's an example:

Say you define a button in the Custom Controls script that you have named TEST
You would make a conditional branch, with a scripted condition like this:
Input.trigger?(Input::TEST)
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.

karldaylo

i made a research ,moment ago... they say, to defin more buttons.. ill need to put the keyboard module script...

i found one... and i think its workin...

the problem is...
where should i put these?
# If I button was pressed
    if Input.trigger?(Input::I)
      # Calls Scene Script for Inventory
      $scene = Scene_Item.new
      return
    end

thanks
RESPECT LIST:Blizzard, Game_guy, Foreverzer0, Winkio, Nathmatt

ForeverZer0

April 20, 2011, 10:48:40 pm #5 Last Edit: April 20, 2011, 10:55:20 pm by ForeverZer0
It would depend on what you want to do, but I imagine you want it to be able to be called from the map?

Place this anywhere somewhere after the default scripts:

class Scene_Map
 alias added_input_upd update
 def update
 added_input_upd
 # If I button was pressed
   if Input.trigger?(Input::I)
     # Calls Scene Script for Inventory
     $scene = Scene_Item.new(true)
     return
   end
 end
end

class Scene_Item
 
  def initialize(map_flag = false)
    @map_flag = map_flag
  end
 
  alias back_to_map_main main
  def main
    back_to_map_main
    if @map_flag
      $scene = Scene_Map.new
    end
  end
end


You need to also keep in mind that Scene_Item returns to Scene_Menu on exit, not the game map. So you may press "I" from the map  to go to your item screen, but when you exit it, it will take you to your normal menu. Hold on a sec, I'll make you a fix real quick...


EDIT: Okay, the scriptlet in the box should do everything you need, so long as you set up the Input module correctly.
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.

karldaylo

April 21, 2011, 01:36:13 am #6 Last Edit: April 21, 2011, 01:38:51 am by karldaylo
I Finally Figure it out!!
(the last keyboard module i was using was a shitty full of craps... so i looked for another one.. and that my friend solved my problem XD)

of anyone who has the same request for hotkey script.... heres the steps...

first copy the keyboard module (that works) here:
#======================================
# ■ 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


then put this below the keyboard module and befor the main
class Scene_Map
 alias someshityalias update
 def update
 someshityalias
 # If "BUTTON NAME" button was pressed
   if Kboard.keyb($R_Key_BUTTON) == 1 #Change the $R_Key_BUTTON to the values shown in the Keyboard module script.
     # Calls Scene Script for Inventory
     $scene = Scene_Item.new #just an example, put any script call or statements you liked here
     return
   end
 end
end


anyways.. withouth your help foreverZer0, i would figure it out XD

(althou moment ago, i made an event which opens up inventory if action button was triggered... and can be exited directly to the map instead of main menu.. but after that... it changes back to the menu.. how weird)
RESPECT LIST:Blizzard, Game_guy, Foreverzer0, Winkio, Nathmatt

ForeverZer0

That's pretty much exactly what I was saying to do, except I told you where to get a better script to do it with.  :P
There is no shortage of custom control scripts out there, but some are better than others. That one works in a more "Ruby" kind of way, where others extend the Input module of RGSS to kind of cover-up all the Win32 hooks and dealing directly with the API, which makes it easier to script with, as well as just being a little better looking.

Someone following your code is going find it much easier to understand:

if Input.trigger?(Input::ITEMS)


than...

if  Kboard.keyb($R_Key_BUTTON) == 1


Just a tip, take it as you may.
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.

Blizzard

Tons of Add-ons', Blizz-ABS's and RMX-OS's Custom Controls are a lot more convenient and stable. This script can give 2 different results within the same frame without calling Input.update between.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

karldaylo

Quote from: Blizzard on April 21, 2011, 02:23:58 am
Tons of Add-ons', Blizz-ABS's and RMX-OS's Custom Controls are a lot more convenient and stable. This script can give 2 different results within the same frame without calling Input.update between.


2  reasons why i cant use that...
first, im using blizz abs, then i wont able to use the custom control config(i may able to disable it but the second reason explains all why cant use it)
second, the script is too advance for me... i dunno where or what to put a script for me able to use my own key for diferent purpose (not just a,b,x,z,y,up,down,left,right, but anything i desired and what does it do)

but if you teach me how... itll be awesome.. :D  :naughty:

thanks
RESPECT LIST:Blizzard, Game_guy, Foreverzer0, Winkio, Nathmatt

ForeverZer0

You can't use the Custom Controls from Tons with Blizz-Abs because the same thing is already in Blizz-ABS.

Creating keys is simple, and explained in the instructions. You will also see the currently defined keys in the script which give you all the example you need to follow.
I am done scripting for RMXP. I will likely not offer support for even my own scripts anymore, but feel free to ask on the forum, there are plenty of other talented scripters that can help you.