设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1393|回复: 3
打印 上一主题 下一主题

[已经解决] 如何在地图上显示当前播放的音乐名称?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-6-3
帖子
90
跳转到指定楼层
1
发表于 2012-10-30 18:04:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 梦幻迷梦 于 2012-10-30 18:33 编辑

在地图的左下角显示当前播放的名称
切换地图时,音乐名称如果有切换的话
也要显示相当的音乐名称
这个怎么做

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
2
发表于 2012-10-30 18:24:39 | 只看该作者
直接替换脚本Scene_Map类的所有代码:因为时间紧,没做优化与美化.若lz需要,请再次说明,不过希望再给点经验....
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

  6. class Scene_Map
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     @playing_bgm = Sprite.new
  12.     @playing_bgm.z = 200;@playing_bgm.y = 480-32
  13.     @playing_bgm.bitmap = Bitmap.new(640,32)
  14.     # 生成活动块
  15.     @spriteset = Spriteset_Map.new
  16.     # 生成信息窗口
  17.     @message_window = Window_Message.new
  18.     # 执行过渡
  19.     Graphics.transition
  20.     # 主循环
  21.     loop do
  22.       # 刷新游戏画面
  23.       Graphics.update
  24.       # 刷新输入信息
  25.       Input.update
  26.       # 刷新画面
  27.       update
  28.       # 如果画面切换的话就中断循环
  29.       if $scene != self
  30.         break
  31.       end
  32.     end
  33.     # 准备过渡
  34.     Graphics.freeze
  35.     # 释放活动块
  36.     @spriteset.dispose
  37.     # 释放信息窗口
  38.     @playing_bgm.dispose
  39.     @playing_bgm.bitmap.dispose
  40.     @message_window.dispose
  41.     # 标题画面切换中的情况下
  42.     if $scene.is_a?(Scene_Title)
  43.       # 淡入淡出画面
  44.       Graphics.transition
  45.       Graphics.freeze
  46.     end
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 刷新画面
  50.   #--------------------------------------------------------------------------
  51.   def update
  52.     if $game_system.playing_bgm != @playing_bgm_old
  53.       @playing_bgm_old = $game_system.playing_bgm
  54.       @playing_bgm.bitmap.clear
  55.       @playing_bgm.bitmap.draw_text(0,0,640,32,@playing_bgm_old.name)
  56.     end
  57.     # 循环
  58.     loop do
  59.       # 按照地图、实例、主角的顺序刷新
  60.       # (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
  61.       #  的机会的重要因素)
  62.       $game_map.update
  63.       $game_system.map_interpreter.update
  64.       $game_player.update
  65.       # 系统 (计时器)、画面刷新
  66.       $game_system.update
  67.       $game_screen.update
  68.       # 如果主角在场所移动中就中断循环
  69.       unless $game_temp.player_transferring
  70.         break
  71.       end
  72.       # 执行场所移动
  73.       transfer_player
  74.       # 处理过渡中的情况下、中断循环
  75.       if $game_temp.transition_processing
  76.         break
  77.       end
  78.     end
  79.     # 刷新活动块
  80.     @spriteset.update
  81.     # 刷新信息窗口
  82.     @message_window.update
  83.     # 游戏结束的情况下
  84.     if $game_temp.gameover
  85.       # 切换的游戏结束画面
  86.       $scene = Scene_Gameover.new
  87.       return
  88.     end
  89.     # 返回标题画面的情况下
  90.     if $game_temp.to_title
  91.       # 切换到标题画面
  92.       $scene = Scene_Title.new
  93.       return
  94.     end
  95.     # 处理过渡中的情况下
  96.     if $game_temp.transition_processing
  97.       # 清除过渡处理中标志
  98.       $game_temp.transition_processing = false
  99.       # 执行过渡
  100.       if $game_temp.transition_name == ""
  101.         Graphics.transition(20)
  102.       else
  103.         Graphics.transition(40, "Graphics/Transitions/" +
  104.           $game_temp.transition_name)
  105.       end
  106.     end
  107.     # 显示信息窗口中的情况下
  108.     if $game_temp.message_window_showing
  109.       return
  110.     end
  111.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  112.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  113.       # 不是在事件执行中或者禁止遇敌中
  114.       unless $game_system.map_interpreter.running? or
  115.              $game_system.encounter_disabled
  116.         # 确定队伍
  117.         n = rand($game_map.encounter_list.size)
  118.         troop_id = $game_map.encounter_list[n]
  119.         # 队伍有效的话
  120.         if $data_troops[troop_id] != nil
  121.           # 设置调用战斗标志
  122.           $game_temp.battle_calling = true
  123.           $game_temp.battle_troop_id = troop_id
  124.           $game_temp.battle_can_escape = true
  125.           $game_temp.battle_can_lose = false
  126.           $game_temp.battle_proc = nil
  127.         end
  128.       end
  129.     end
  130.     # 按下 B 键的情况下
  131.     if Input.trigger?(Input::B)
  132.       # 不是在事件执行中或菜单禁止中
  133.       unless $game_system.map_interpreter.running? or
  134.              $game_system.menu_disabled
  135.         # 设置菜单调用标志以及 SE 演奏
  136.         $game_temp.menu_calling = true
  137.         $game_temp.menu_beep = true
  138.       end
  139.     end
  140.     # 调试模式为 ON 并且按下 F9 键的情况下
  141.     if $DEBUG and Input.press?(Input::F9)
  142.       # 设置调用调试标志
  143.       $game_temp.debug_calling = true
  144.     end
  145.     # 不在主角移动中的情况下
  146.     unless $game_player.moving?
  147.       # 执行各种画面的调用
  148.       if $game_temp.battle_calling
  149.         call_battle
  150.       elsif $game_temp.shop_calling
  151.         call_shop
  152.       elsif $game_temp.name_calling
  153.         call_name
  154.       elsif $game_temp.menu_calling
  155.         call_menu
  156.       elsif $game_temp.save_calling
  157.         call_save
  158.       elsif $game_temp.debug_calling
  159.         call_debug
  160.       end
  161.     end
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 调用战斗
  165.   #--------------------------------------------------------------------------
  166.   def call_battle
  167.     # 清除战斗调用标志
  168.     $game_temp.battle_calling = false
  169.     # 清除菜单调用标志
  170.     $game_temp.menu_calling = false
  171.     $game_temp.menu_beep = false
  172.     # 生成遇敌计数
  173.     $game_player.make_encounter_count
  174.     # 记忆地图 BGM 、停止 BGM
  175.     $game_temp.map_bgm = $game_system.playing_bgm
  176.     $game_system.bgm_stop
  177.     # 演奏战斗开始 SE
  178.     $game_system.se_play($data_system.battle_start_se)
  179.     # 演奏战斗 BGM
  180.     $game_system.bgm_play($game_system.battle_bgm)
  181.     # 矫正主角姿势
  182.     $game_player.straighten
  183.     # 切换到战斗画面
  184.     $scene = Scene_Battle.new
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 调用商店
  188.   #--------------------------------------------------------------------------
  189.   def call_shop
  190.     # 清除商店调用标志
  191.     $game_temp.shop_calling = false
  192.     # 矫正主角姿势
  193.     $game_player.straighten
  194.     # 切换到商店画面
  195.     $scene = Scene_Shop.new
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 调用名称输入
  199.   #--------------------------------------------------------------------------
  200.   def call_name
  201.     # 清除商店调用名称输入标志
  202.     $game_temp.name_calling = false
  203.     # 矫正主角姿势
  204.     $game_player.straighten
  205.     # 切换到名称输入画面
  206.     $scene = Scene_Name.new
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 调用菜单
  210.   #--------------------------------------------------------------------------
  211.   def call_menu
  212.     # 清除商店调用菜单标志
  213.     $game_temp.menu_calling = false
  214.     # 已经设置了菜单 SE 演奏标志的情况下
  215.     if $game_temp.menu_beep
  216.       # 演奏确定 SE
  217.       $game_system.se_play($data_system.decision_se)
  218.       # 清除菜单演奏 SE 标志
  219.       $game_temp.menu_beep = false
  220.     end
  221.     # 矫正主角姿势
  222.     $game_player.straighten
  223.     # 切换到菜单画面
  224.     $scene = Scene_Menu.new
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 调用存档
  228.   #--------------------------------------------------------------------------
  229.   def call_save
  230.     # 矫正主角姿势
  231.     $game_player.straighten
  232.     # 切换到存档画面
  233.     $scene = Scene_Save.new
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● 调用调试
  237.   #--------------------------------------------------------------------------
  238.   def call_debug
  239.     # 清除商店调用调试标志
  240.     $game_temp.debug_calling = false
  241.     # 演奏确定 SE
  242.     $game_system.se_play($data_system.decision_se)
  243.     # 矫正主角姿势
  244.     $game_player.straighten
  245.     # 切换到调试画面
  246.     $scene = Scene_Debug.new
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 主角的场所移动
  250.   #--------------------------------------------------------------------------
  251.   def transfer_player
  252.     # 清除主角场所移动调试标志
  253.     $game_temp.player_transferring = false
  254.     # 移动目标与现在的地图有差异的情况下
  255.     if $game_map.map_id != $game_temp.player_new_map_id
  256.       # 设置新地图
  257.       $game_map.setup($game_temp.player_new_map_id)
  258.     end
  259.     # 设置主角位置
  260.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  261.     # 设置主角朝向
  262.     case $game_temp.player_new_direction
  263.     when 2  # 下
  264.       $game_player.turn_down
  265.     when 4  # 左
  266.       $game_player.turn_left
  267.     when 6  # 右
  268.       $game_player.turn_right
  269.     when 8  # 上
  270.       $game_player.turn_up
  271.     end
  272.     # 矫正主角姿势
  273.     $game_player.straighten
  274.     # 刷新地图 (执行并行事件)
  275.     $game_map.update
  276.     # 在生成活动块
  277.     @spriteset.dispose
  278.     @spriteset = Spriteset_Map.new
  279.     # 处理过渡中的情况下
  280.     if $game_temp.transition_processing
  281.       # 清除过渡处理中标志
  282.       $game_temp.transition_processing = false
  283.       # 执行过渡
  284.       Graphics.transition(20)
  285.     end
  286.     # 执行地图设置的 BGM、BGS 的自动切换
  287.     $game_map.autoplay
  288.     # 设置画面
  289.     Graphics.frame_reset
  290.     # 刷新输入信息
  291.     Input.update
  292.   end
  293. end
复制代码

点评

感谢  发表于 2012-11-2 10:16
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-6-3
帖子
90
3
 楼主| 发表于 2012-10-30 18:32:57 | 只看该作者
沙漠点灰 发表于 2012-10-30 18:24
直接替换脚本Scene_Map类的所有代码:因为时间紧,没做优化与美化.若lz需要,请再次说明,不过希望再给点经 ...

场所移动后无法显示切换后的音乐名称
依然是当前的音乐名

点评

只要更换音乐就会更换显示,估计你换地图后没换音乐  发表于 2012-10-30 19:25
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
4
发表于 2012-10-30 19:21:24 | 只看该作者
我觉得如果有空余的公用事件栏位和变数栏位,可以直接以一个并行公用事件来做,一个地图ID变数判断是否切换场景,一个执行音乐名称变数用来显示音乐名,这会不会简单些?

当然,如果有像自动显示地图名脚本那样也不错,或者,是否可以直接在这脚本加上显示背景音乐名?上面一行是地图名,下一行是音乐名,这样好改吧?不用替换 Scene_Map 了。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-14 15:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表