Project1

标题: 关于地图上按键盘来开启开关和状态的脚本 [打印本页]

作者: dorx2010    时间: 2015-9-14 17:01
标题: 关于地图上按键盘来开启开关和状态的脚本
小弟的想法是,在地图上按"R"键来开启或关闭"开关1"
"开关1"开启时,主角同时附加"状态1",,关闭时,主角解除"状态1",
希望大大可以帮忙><希望是脚本,,因为用纯事件会使游戏很卡吧{:2_270:}

作者: taroxd    时间: 2015-9-14 17:01
本帖最后由 taroxd 于 2015-9-14 20:47 编辑

RUBY 代码复制
  1. module Keyboard
  2.  
  3.   API = Win32API.new('user32', 'GetAsyncKeyState', 'I', 'I')
  4.  
  5.   # 以按键码为键,连续按下的帧数为值的 hash
  6.   @states = Hash.new { |h, k| h[k] = 0 }
  7.  
  8.   def self.update
  9.     @states.each_key do |key|
  10.       @states[key] = API.call(key) < 0 ? @states[key] + 1 : 0
  11.     end
  12.   end
  13.  
  14.   def self.clear
  15.     @states.clear
  16.   end
  17.  
  18.   def self.trigger?(key)
  19.     @states[key] == 1
  20.   end
  21. end
  22.  
  23. class Scene_Map
  24.   alias_method :ub_20150914, :update_basic
  25.   def update_basic
  26.     ub_20150914
  27.  
  28.     Keyboard.update
  29.  
  30.     return unless Keyboard.trigger? 'R'.ord
  31.  
  32.     s = $game_switches
  33.  
  34.     if s[1]
  35.       s[1] = false
  36.       $game_party.members.each { |actor| actor.remove_state 1 }
  37.     else
  38.       s[1] = true
  39.       $game_party.members.each { |actor| actor.add_state    1 }
  40.     end
  41.  
  42.   end
  43. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1