查看: 2738|回复: 7

[已经解决] 怎么让脚本控制公共事件的开关?

[复制链接]
梦石
0
星屑
796
在线时间
54 小时
注册时间
2018-1-1
回帖
33
发表于 2018-12-16 15:18:06 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 2224573639 于 2018-12-16 17:02 编辑

就是在esc菜单里想添加一个选项控制一个公共事件的开关~ 求教
梦石
0
星屑
796
在线时间
54 小时
注册时间
2018-1-1
回帖
33
 楼主| 发表于 2018-12-16 17:45:44 | 显示全部楼层
没人吗?
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2018-12-16 18:27:56 | 显示全部楼层
2.gif

XP没有窗口自适应= =
就当提供个思路好了(

[pre lang="ruby"]module CLD99_MenuNewCommand
  
  NAME = "开关"
  #指令名称
  
  SWI = 1
  #要操纵的开关
  
end

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 生成命令窗口
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "状态"
    s5 = "存档"
    s6 = "结束游戏"
    #==================================================================
    s7 = CLD99_MenuNewCommand::NAME
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    #==================================================================
    @command_window.index = @menu_index
    # 同伴人数为 0 的情况下
    if $game_party.actors.size == 0
      # 物品、特技、装备、状态无效化
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # 禁止存档的情况下
    if $game_system.save_disabled
      # 存档无效
      @command_window.disable_item(4)
    end
    # 生成游戏时间窗口
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # 生成步数窗口
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # 生成金钱窗口
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # 生成状态窗口
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面 (命令窗口被激活的情况下)
  #--------------------------------------------------------------------------
  def update_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换的地图画面
      $scene = Scene_Map.new
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 同伴人数为 0、存档、游戏结束以外的场合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 命令窗口的光标位置分支
      case @command_window.index
      when 0  # 物品
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到物品画面
        $scene = Scene_Item.new
      when 1  # 特技
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # 装备
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # 状态
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # 存档
        # 禁止存档的情况下
        if $game_system.save_disabled
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到存档画面
        $scene = Scene_Save.new
      when 5  # 游戏结束
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到游戏结束画面
        $scene = Scene_End.new
      #==================================================================
      when 6 #新加功能
        id = CLD99_MenuNewCommand::SWI
        return if $game_switches[id].nil?
        $game_switches[id] = !$game_switches[id]
        
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Map.new
      #==================================================================
      end
      return
    end
  end
end
[/pre]

点评

应该是被之后创建的游戏时间窗口挡住了。  发表于 2018-12-16 18:36
_(:3」∠)_不过窗口不能自适应好麻烦啊  发表于 2018-12-16 18:33
= =晚几秒。。  发表于 2018-12-16 18:29

评分

参与人数 1星屑 +75 收起 理由
RyanBern + 75 认可答案

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2018-12-16 18:28:52 | 显示全部楼层
【Scene_Menu】
第26行改成
  1. @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, "事件1"])
复制代码

第165行下面加上
  1.       when 6  # 公共事件
  2.         $game_temp.common_event_id = 1 # 执行的公共事件ID
  3.         $scene = Scene_Map.new
复制代码

评分

参与人数 1星屑 +75 收起 理由
RyanBern + 75 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
796
在线时间
54 小时
注册时间
2018-1-1
回帖
33
 楼主| 发表于 2018-12-16 21:22:27 | 显示全部楼层
多谢两位了~
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部