查看: 3009|回复: 1

[已经解决] 关于地图上按键盘来开启开关和状态的脚本

[复制链接]
梦石
0
星屑
50
在线时间
275 小时
注册时间
2010-8-19
回帖
50
发表于 2015-9-14 17:01:12 | 显示全部楼层 |阅读模式
悬赏5星屑已解决
小弟的想法是,在地图上按"R"键来开启或关闭"开关1"
"开关1"开启时,主角同时附加"状态1",,关闭时,主角解除"状态1",
希望大大可以帮忙><希望是脚本,,因为用纯事件会使游戏很卡吧{:2_270:}

最佳答案

查看完整内容

[pre lang="ruby"] module Keyboard API = Win32API.new('user32', 'GetAsyncKeyState', 'I', 'I') # 以按键码为键,连续按下的帧数为值的 hash @states = Hash.new { |h, k| h[k] = 0 } def self.update @states.each_key do |key| @states[key] = API.call(key) < 0 ? @states[key] + 1 : 0 end end def self.clear @states.clear end def self.trigger?(key) @states[key] == 1 ...

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-9-14 17:01:13 | 显示全部楼层
本帖最后由 taroxd 于 2015-9-14 20:47 编辑

[pre lang="ruby"]

module Keyboard

  API = Win32API.new('user32', 'GetAsyncKeyState', 'I', 'I')

  # 以按键码为键,连续按下的帧数为值的 hash
  @states = Hash.new { |h, k| h[k] = 0 }

  def self.update
    @states.each_key do |key|
      @states[key] = API.call(key) < 0 ? @states[key] + 1 : 0
    end
  end

  def self.clear
    @states.clear
  end

  def self.trigger?(key)
    @states[key] == 1
  end
end

class Scene_Map
  alias_method :ub_20150914, :update_basic
  def update_basic
    ub_20150914

    Keyboard.update

    return unless Keyboard.trigger? 'R'.ord

    s = $game_switches

    if s[1]
      s[1] = false
      $game_party.members.each { |actor| actor.remove_state 1 }
    else
      s[1] = true
      $game_party.members.each { |actor| actor.add_state    1 }
    end

  end
end
[/pre]

点评

因为怕要求太多没人帮....知道是版主大大便麻烦你了,,哈哈,,感谢大大  发表于 2015-9-14 20:55
OK。还有别的要求请一次性说完,谢谢  发表于 2015-9-14 20:48
啊不对……算了我改吧  发表于 2015-9-14 20:46
33行改为 $game_party.members.each do |actor| 然后脚本最后加个 end  发表于 2015-9-14 20:45
不好意思啊大大,,如果由角色1改为全体的话又怎样改??  发表于 2015-9-14 20:39
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部