Project1

标题: 如何用事件脚本修改战斗菜单的名称 [打印本页]

作者: 黑舞嗜    时间: 2011-10-8 21:47
标题: 如何用事件脚本修改战斗菜单的名称
详细点说就是利用事件脚本即时更改"战斗""特技""防御""物品"这四个选项的名称,名称而已dsu_plus_rewardpost_czw
作者: 盈盈    时间: 2011-10-8 23:27
本帖最后由 盈盈 于 2011-10-9 10:17 编辑

右击main选择"插入"然后把这段代码复制进去

  1. #==============================================================================
  2. # ■ Window_Command
  3. #------------------------------------------------------------------------------
  4. #  一般的命令选择行窗口。
  5. #==============================================================================

  6. class Window_Command < Window_Selectable
  7.   def setcommands(commands=[])
  8.      return if commands == nil or commands==[]
  9.      if self.contents!=nil
  10.         self.contents.dispose         
  11.      end     
  12.      @item_max = commands.size
  13.      @commands = commands
  14.      self.contents = Bitmap.new(width - 32, @item_max * 32)
  15.      refresh
  16.    end
  17. end

  18. class Scene_Battle
  19.   attr_accessor :actor_command_window
  20.   def main
  21.     # 初始化战斗用的各种暂时数据
  22.     $game_temp.in_battle = true
  23.     $game_temp.battle_turn = 0
  24.     $game_temp.battle_event_flags.clear
  25.     $game_temp.battle_abort = false
  26.     $game_temp.battle_main_phase = false
  27.     $game_temp.battleback_name = $game_map.battleback_name
  28.     $game_temp.forcing_battler = nil
  29.     # 初始化战斗用事件解释器
  30.     $game_system.battle_interpreter.setup(nil, 0)
  31.     # 准备队伍
  32.     @troop_id = $game_temp.battle_troop_id
  33.     $game_troop.setup(@troop_id)
  34.     # 生成角色命令窗口
  35.     s1 = $data_system.words.attack
  36.     s2 = $data_system.words.skill
  37.     s3 = $data_system.words.guard
  38.     s4 = $data_system.words.item
  39.     @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
  40.     @actor_command_window.y = 160
  41.     @actor_command_window.back_opacity = 160
  42.     @actor_command_window.active = false
  43.     @actor_command_window.visible = false
  44.     # 设置公共事件数据
  45.     @common_events = {}
  46.     for i in 1...$data_common_events.size
  47.       @common_events[i] = Game_CommonEvent.new(i)      
  48.     end
  49.     $game_switches[1] = true #开关1为真时改变菜单内容
  50.     # 生成其它窗口
  51.     @party_command_window = Window_PartyCommand.new
  52.     @help_window = Window_Help.new
  53.     @help_window.back_opacity = 160
  54.     @help_window.visible = false
  55.     @status_window = Window_BattleStatus.new
  56.     @message_window = Window_Message.new
  57.     # 生成活动块
  58.     @spriteset = Spriteset_Battle.new
  59.     # 初始化等待计数
  60.     @wait_count = 0
  61.     # 执行过渡
  62.     if $data_system.battle_transition == ""
  63.       Graphics.transition(20)
  64.     else
  65.       Graphics.transition(40, "Graphics/Transitions/" +
  66.         $data_system.battle_transition)
  67.     end
  68.     # 开始自由战斗回合
  69.     start_phase1
  70.     # 主循环
  71.     loop do
  72.       # 刷新游戏画面
  73.       Graphics.update
  74.       # 刷新输入信息
  75.       Input.update
  76.       # 刷新全部的公共事件
  77.       for common_event in @common_events.values
  78.         common_event.refresh
  79.         common_event.update
  80.       end
  81.       # 刷新画面
  82.       update
  83.       # 如果画面切换的话就中断循环
  84.       if $scene != self
  85.         break
  86.       end
  87.     end
  88.     # 刷新地图
  89.     $game_map.refresh
  90.     # 准备过渡
  91.     Graphics.freeze
  92.     # 释放窗口
  93.     @actor_command_window.dispose
  94.     @party_command_window.dispose
  95.     @help_window.dispose
  96.     @status_window.dispose
  97.     @message_window.dispose
  98.     if @skill_window != nil
  99.       @skill_window.dispose
  100.     end
  101.     if @item_window != nil
  102.       @item_window.dispose
  103.     end
  104.     if @result_window != nil
  105.       @result_window.dispose
  106.     end
  107.     # 释放活动块
  108.     @spriteset.dispose
  109.     # 标题画面切换中的情况
  110.     if $scene.is_a?(Scene_Title)
  111.       # 淡入淡出画面
  112.       Graphics.transition
  113.       Graphics.freeze
  114.     end
  115.     # 战斗测试或者游戏结束以外的画面切换中的情况
  116.     if $BTEST and not $scene.is_a?(Scene_Gameover)
  117.       $scene = nil
  118.     end
  119.   end
  120. end
复制代码
然后在公共事件里就可以用

  1. if $scene.is_a?(Scene_Battle)
  2. c = ["1","2","3","4"]
  3. $scene.actor_command_window.setcommands(c)
  4. $game_switches[1] = false
  5. end
复制代码
调用


盈盈于2011-10-9 00:03补充以下内容:
改了一下,这样总看得懂了吧,现在命令还可以增多了


盈盈于2011-10-9 00:03补充以下内容:
这样应该看得懂了吧
作者: 各种压力的猫君    时间: 2011-10-9 00:38
本帖最后由 各种压力的猫君 于 2011-10-9 01:47 编辑
  1. $data_system.words.attack = "攻击"
  2. $data_system.words.skill = "技能"
  3. $data_system.words.guard = "防御"
  4. $data_system.words.item = "物品"
复制代码

需要战斗中修改的话(个人认为作用不大……)以下脚本插到Main上面。
  1. class Scene_Battle
  2.   alias old_phase3_setup_command_window phase3_setup_command_window
  3.   def update
  4.     actor_command_window_update
  5.     old_phase3_setup_command_window
  6.   end
  7.   def actor_command_window_update
  8.     s1 = $data_system.words.attack
  9.     s2 = $data_system.words.skill
  10.     s3 = $data_system.words.guard
  11.     s4 = $data_system.words.item
  12.     $commands = [s1, s2, s3, s4]
  13.     @actor_command_window.refresh
  14.     $commands = nil
  15.   end
  16. end
  17. class Window_Command < Window_Selectable
  18.   def draw_item(index, color)
  19.     self.contents.font.color = color
  20.     rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
  21.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  22.     if $commands == nil
  23.       self.contents.draw_text(rect, @commands[index])
  24.     else
  25.       self.contents.draw_text(rect, $commands[index])
  26.     end
  27.   end
  28. end
复制代码

作者: 黑舞嗜    时间: 2011-10-9 08:56
各种压力的猫君 发表于 2011-10-9 00:38

需要战斗中修改的话(个人认为作用不大……)以下脚本插到Main上面。

插入下面那个脚本以后,进入战斗会直接提示
作者: 盈盈    时间: 2011-10-9 10:19
改了一个错误,忘记事件不在战斗中执行了,现在可以了


盈盈于2011-10-9 10:55补充以下内容:
你的另一个贴子不是有人给一个链接了吗,那个就可以达到你的要求呀。

Project5.rar

198.87 KB, 下载次数: 15






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