Project1

标题: 求修正脚本 [打印本页]

作者: kvkv97    时间: 2015-8-8 16:25
标题: 求修正脚本

  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class My_window < Window_Selectable
  7.   def initialize(width,aaa) #aaa表示光标选项
  8.     super(96,320,64,aaa.size* 32 + 32)#
  9.     @item_max = aaa.size
  10.     [url=home.php?mod=space&uid=5699]@aaa[/url] = aaa
  11.     self.contents = Bitmap.new(width, @item_max * 32)
  12.     refresh
  13.     self.index = 0
  14.   end

  15.   def refresh
  16.     for i in [email][email protected][/email]
  17.       draw_item(i)#
  18.     end
  19.   end
  20.   
  21.   def draw_item(index)
  22.     rect = Rect.new(4, 32*index, self.contents.width, 32)
  23.     self.contents.draw_text(rect, @aaa[index])#在矩形中描绘字符串(数组)
  24.   end
  25.   def index_tiayong
  26.   end

  27. end
  28. #———————————————————————————————————————
  29. #  ★我修改这个类,想达到的效果是:当没按键的时候,命令窗口工作同时“调用窗口”不
  30. #工作;当按下某个键,命令窗口不工作同时“调用窗口”工作——按下A键的时候,进入特
  31. #技场景;按下B键的时候,进入装备场景(场景可以根据个人喜好替换)
  32. #  ★本人是新手,修改后没达到效果;有请哪位大婶帮忙修改下;不胜感激!!!
  33. #  ★上面的class My_window是我自己创建的“调用窗口”
  34. #  ★Window_Steps的  窗口宽度该成 96(原来是192)
  35. #  ★带“★”号是我修改的
  36. #———————————————————————————————————————
  37. class Scene_Menu
  38.   #--------------------------------------------------------------------------
  39.   # ● 初始化对像
  40.   #     menu_index : 命令光标的初期位置
  41.   #--------------------------------------------------------------------------
  42.   def initialize(menu_index = 0)
  43.     @menu_index = menu_index
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 主处理
  47.   #--------------------------------------------------------------------------
  48.   def main
  49.     # 生成命令窗口
  50.     s1 = $data_system.words.item
  51.     s2 = $data_system.words.skill
  52.     s3 = $data_system.words.equip
  53.     s4 = "状态"
  54.     s5 = "存档"
  55.     s6 = "结束游戏"
  56.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
  57.     @command_window.index = @menu_index
  58.     # 同伴人数为 0 的情况下
  59.     if $game_party.actors.size == 0
  60.       # 物品、特技、装备、状态无效化
  61.       @command_window.disable_item(0)
  62.       @command_window.disable_item(1)
  63.       @command_window.disable_item(2)
  64.       @command_window.disable_item(3)
  65.     end
  66.     # 禁止存档的情况下
  67.     if $game_system.save_disabled
  68.       # 存档无效
  69.       @command_window.disable_item(4)
  70.     end
  71.     # 生成游戏时间窗口
  72.     @playtime_window = Window_PlayTime.new
  73.     @playtime_window.x = 0
  74.     @playtime_window.y = 224
  75.     # 生成步数窗口
  76.     @steps_window = Window_Steps.new
  77.     @steps_window.x = 0
  78.     @steps_window.y = 320
  79.     # 生成金钱窗口
  80.     @gold_window = Window_Gold.new
  81.     @gold_window.x = 0
  82.     @gold_window.y = 416
  83.     # 生成状态窗口
  84.     @status_window = Window_MenuStatus.new
  85.     @status_window.x = 160
  86.     @status_window.y = 0
  87.     #生成调用窗口
  88.     s1 = "A"                                 #★
  89.     s2 = "B"                                 #★
  90.     @my_window = My_window.new(32, [s1, s2]) #★
  91.     # 执行过渡
  92.     Graphics.transition
  93.     # 主循环
  94.     loop do
  95.       # 刷新游戏画面
  96.       Graphics.update
  97.       # 刷新输入信息
  98.       Input.update
  99.       # 刷新画面
  100.       update
  101.       # 如果切换画面就中断循环
  102.       if $scene != self
  103.         break
  104.       end
  105.     end
  106.     # 准备过渡
  107.     Graphics.freeze
  108.     # 释放窗口
  109.     @command_window.dispose
  110.     @playtime_window.dispose
  111.     @steps_window.dispose
  112.     @gold_window.dispose
  113.     @status_window.dispose
  114.     @my_window.dispose                   #★
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 刷新画面
  118.   #--------------------------------------------------------------------------
  119.   def update
  120.     # 刷新窗口
  121.     @command_window.update
  122.     @playtime_window.update   
  123.     @steps_window.update   
  124.     @gold_window.update   
  125.     @status_window.update
  126.     @my_window.update                     #★
  127.     # 命令窗口被激活的情况下: 调用 update_command
  128.     if @command_window.active
  129.       update_command
  130.       return
  131.     end
  132.     # 状态窗口被激活的情况下: 调用 update_status
  133.     if @status_window.active
  134.       update_status
  135.       return
  136.     end

  137.     # 调用窗口被激活的情况下: 调用 update_do
  138.     if @my_window.active and @command_window.active = false   #★
  139.       update_do                                               #★
  140.       return                                                  #★
  141.     end                                                       #★

  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 刷新画面 (命令窗口被激活的情况下)
  145.   #--------------------------------------------------------------------------
  146.   def update_command
  147.     # 按下 B 键的情况下
  148.     if Input.trigger?(Input::B)
  149.       # 演奏取消 SE
  150.       $game_system.se_play($data_system.cancel_se)
  151.       # 切换的地图画面
  152.       $scene = Scene_Map.new
  153.       return
  154.     end
  155.     # 按下 C 键的情况下
  156.     if Input.trigger?(Input::C)
  157.       # 同伴人数为 0、存档、游戏结束以外的场合
  158.       if $game_party.actors.size == 0 and @command_window.index < 4
  159.         # 演奏冻结 SE
  160.         $game_system.se_play($data_system.buzzer_se)
  161.         return
  162.       end
  163.       # 命令窗口的光标位置分支
  164.       case @command_window.index
  165.       when 0  # 物品
  166.         # 演奏确定 SE
  167.         $game_system.se_play($data_system.decision_se)
  168.         # 切换到物品画面
  169.         $scene = Scene_Item.new
  170.       when 1  # 特技
  171.         # 演奏确定 SE
  172.         $game_system.se_play($data_system.decision_se)
  173.         # 激活状态窗口
  174.         @command_window.active = false
  175.         @status_window.active = true
  176.         @status_window.index = 0
  177.       when 2  # 装备
  178.         # 演奏确定 SE
  179.         $game_system.se_play($data_system.decision_se)
  180.         # 激活状态窗口
  181.         @command_window.active = false
  182.         @status_window.active = true
  183.         @status_window.index = 0
  184.       when 3  # 状态
  185.         # 演奏确定 SE
  186.         $game_system.se_play($data_system.decision_se)
  187.         # 激活状态窗口
  188.         @command_window.active = false
  189.         @status_window.active = true
  190.         @status_window.index = 0
  191.       when 4  # 存档
  192.         # 禁止存档的情况下
  193.         if $game_system.save_disabled
  194.           # 演奏冻结 SE
  195.           $game_system.se_play($data_system.buzzer_se)
  196.           return
  197.         end
  198.         # 演奏确定 SE
  199.         $game_system.se_play($data_system.decision_se)
  200.         # 切换到存档画面
  201.         $scene = Scene_Save.new
  202.       when 5  # 游戏结束
  203.         # 演奏确定 SE
  204.         $game_system.se_play($data_system.decision_se)
  205.         # 切换到游戏结束画面
  206.         $scene = Scene_End.new
  207.       end
  208.       return
  209.     end
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● 刷新画面 (状态窗口被激活的情况下)
  213.   #--------------------------------------------------------------------------
  214.   def update_status
  215.     # 按下 B 键的情况下
  216.     if Input.trigger?(Input::B)
  217.       # 演奏取消 SE
  218.       $game_system.se_play($data_system.cancel_se)
  219.       # 激活命令窗口
  220.       @command_window.active = true
  221.       @status_window.active = false
  222.       @status_window.index = -1
  223.       return
  224.     end
  225.     # 按下 C 键的情况下
  226.     if Input.trigger?(Input::C)
  227.       # 命令窗口的光标位置分支
  228.       case @command_window.index
  229.       when 1  # 特技
  230.         # 本角色的行动限制在 2 以上的情况下
  231.         if $game_party.actors[@status_window.index].restriction >= 2
  232.           # 演奏冻结 SE
  233.           $game_system.se_play($data_system.buzzer_se)
  234.           return
  235.         end
  236.         # 演奏确定 SE
  237.         $game_system.se_play($data_system.decision_se)
  238.         # 切换到特技画面
  239.         $scene = Scene_Skill.new(@status_window.index)
  240.       when 2  # 装备
  241.         # 演奏确定 SE
  242.         $game_system.se_play($data_system.decision_se)
  243.         # 切换的装备画面
  244.         $scene = Scene_Equip.new(@status_window.index)
  245.       when 3  # 状态
  246.         # 演奏确定 SE
  247.         $game_system.se_play($data_system.decision_se)
  248.         # 切换到状态画面
  249.         $scene = Scene_Status.new(@status_window.index)
  250.       end
  251.       return
  252.     end
  253.   end
  254. #★  #--------------------------------------------------------------------------
  255. #★  # ● 刷新画面 (调用窗口被激活的情况下)
  256. #★  #--------------------------------------------------------------------------
  257.   def update_do
  258.     # 按下 B 键的情况下
  259.     if Input.trigger?(Input::B)
  260.       $game_system.se_play($data_system.cancel_se)
  261.       # 切换的地图画面
  262.       $scene = Scene_Skill.new
  263.       return
  264.     end
  265.     # 按下 C 键的情况下
  266.     if Input.trigger?(Input::C)
  267.         $game_system.se_play($data_system.decision_se)
  268.         # 切换到物品画面
  269.         $scene = Scene_Item.new
  270.     end
  271.       return
  272.   end

  273. end

复制代码

作者: kvkv97    时间: 2015-8-8 17:18
自己顶起!




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