Project1

标题: 请求修改一下一个地方…… [打印本页]

作者: 水野·迪尔    时间: 2008-6-6 20:31
标题: 请求修改一下一个地方……
说不清是哪个地方……

就是按下ESC后,不呼出菜单,而是执行一个公共事件 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 八云色    时间: 2008-6-6 20:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 八云紫    时间: 2008-6-6 20:43
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

  6. $common_event_number = 1


  7. class Scene_Map < Scene_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 开始处理
  10.   #--------------------------------------------------------------------------
  11.   def start
  12.     super
  13.     $game_map.refresh
  14.     @spriteset = Spriteset_Map.new
  15.     @message_window = Window_Message.new
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 执行渐变
  19.   #--------------------------------------------------------------------------
  20.   def perform_transition
  21.     if Graphics.brightness == 0       # 战斗後或载入後等
  22.       fadein(30)
  23.     else                              # 从菜单中回来等
  24.       Graphics.transition(15)
  25.     end
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 结束处理
  29.   #--------------------------------------------------------------------------
  30.   def terminate
  31.     super
  32.     if $scene.is_a?(Scene_Battle)     # 切换至战斗场景的场合
  33.       @spriteset.dispose_characters   # 隐藏角色来生成战斗背景
  34.     end
  35.     snapshot_for_background
  36.     @spriteset.dispose
  37.     @message_window.dispose
  38.     if $scene.is_a?(Scene_Battle)     # 切换至战斗场景的场合
  39.       perform_battle_transition       # 执行战斗渐变
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 基本更新处理
  44.   #--------------------------------------------------------------------------
  45.   def update_basic
  46.     Graphics.update                   # 更新游戏画面
  47.     Input.update                      # 更新输入信息
  48.     $game_map.update                  # 更新地图
  49.     @spriteset.update                 # 更新活动块组
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 更新画面
  53.   #--------------------------------------------------------------------------
  54.   def update
  55.     super
  56.     $game_map.interpreter.update      # 更新解释器
  57.     $game_map.update                  # 更新地图
  58.     $game_player.update               # 更新主角
  59.     $game_system.update               # 更新计时器
  60.     @spriteset.update                 # 更新活动块组
  61.     @message_window.update            # 更新信息窗口
  62.     unless $game_message.visible      # 信息窗口显示中除外
  63.       update_transfer_player
  64.       update_encounter
  65.       update_call_menu
  66.       update_call_debug
  67.       update_scene_change
  68.     end
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 淡入画面
  72.   #     duration : 时间
  73.   #    如果直接使用 Graphics.fadeout 的话会出现一些状况,如天候效果和远景
  74.   #    滚动都会被强迫停止,所以用动态的 fade-in 效果会好些。
  75.   #--------------------------------------------------------------------------
  76.   def fadein(duration)
  77.     Graphics.transition(0)
  78.     for i in 0..duration-1
  79.       Graphics.brightness = 255 * i / duration
  80.       update_basic
  81.     end
  82.     Graphics.brightness = 255
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 淡出画面
  86.   #     duration : 时间
  87.   #    与上面的 fadein 一样,不是直接调用 Graphics.fadein。
  88.   #--------------------------------------------------------------------------
  89.   def fadeout(duration)
  90.     Graphics.transition(0)
  91.     for i in 0..duration-1
  92.       Graphics.brightness = 255 - 255 * i / duration
  93.       update_basic
  94.     end
  95.     Graphics.brightness = 0
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 场所移动处理
  99.   #--------------------------------------------------------------------------
  100.   def update_transfer_player
  101.     return unless $game_player.transfer?
  102.     fade = (Graphics.brightness > 0)
  103.     fadeout(30) if fade
  104.     @spriteset.dispose              # 释放活动块组
  105.     $game_player.perform_transfer   # 执行场所移动
  106.     $game_map.autoplay              # 自动更改 BGM 和 BGS
  107.     $game_map.update
  108.     Graphics.wait(15)
  109.     @spriteset = Spriteset_Map.new  # 重新生成活动块组
  110.     fadein(30) if fade
  111.     Input.update
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 遇敌处理
  115.   #--------------------------------------------------------------------------
  116.   def update_encounter
  117.     return if $game_player.encounter_count > 0        # 检查步数
  118.     return if $game_map.interpreter.running?          # 判断是否有事件正在执行
  119.     return if $game_system.encounter_disabled         # 判断是否禁止遇敌
  120.     troop_id = $game_player.make_encounter_troop_id   # 判断敌人队伍
  121.     return if $data_troops[troop_id] == nil           # 判断队伍是否无效
  122.     $game_troop.setup(troop_id)
  123.     $game_troop.can_escape = true
  124.     $game_temp.battle_proc = nil
  125.     $game_temp.next_scene = "battle"
  126.     preemptive_or_surprise
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 判断先下手或被偷袭
  130.   #--------------------------------------------------------------------------
  131.   def preemptive_or_surprise
  132.     actors_agi = $game_party.average_agi
  133.     enemies_agi = $game_troop.average_agi
  134.     if actors_agi >= enemies_agi
  135.       percent_preemptive = 5
  136.       percent_surprise = 3
  137.     else
  138.       percent_preemptive = 3
  139.       percent_surprise = 5
  140.     end
  141.     if rand(100) < percent_preemptive
  142.       $game_troop.preemptive = true
  143.     elsif rand(100) < percent_surprise
  144.       $game_troop.surprise = true
  145.     end
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 判断是否呼叫菜单(按下B键)
  149.   #--------------------------------------------------------------------------
  150.   def update_call_menu
  151.     if Input.trigger?(Input::B)
  152.       return if $game_map.interpreter.running?        # 判断是否有事件正在执行
  153.       return if $game_system.menu_disabled            # 判断是否禁止菜单呼叫
  154.       $game_temp.menu_beep = true                     # 设置音效标志
  155.       $game_temp.next_scene = "menu"
  156.        #$game_temp.common_event_id = $common_event_number
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 判断是否呼叫DEBUG场景(按下F9键)
  161.   #--------------------------------------------------------------------------
  162.   def update_call_debug
  163.     if $TEST and Input.press?(Input::F9)    # 游戏测试并按下F9
  164.       $game_temp.next_scene = "debug"
  165.     end
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 执行场景交替
  169.   #--------------------------------------------------------------------------
  170.   def update_scene_change
  171.     return if $game_player.moving?    # 判断主角是否移动中
  172.     case $game_temp.next_scene
  173.     when "battle"
  174.       call_battle
  175.     when "shop"
  176.       call_shop
  177.     when "name"
  178.       call_name
  179.     when "menu"
  180.       call_menu
  181.       $game_temp.common_event_id = $common_event_number
  182.     when "save"
  183.       call_save
  184.     when "debug"
  185.       call_debug
  186.     when "gameover"
  187.       call_gameover
  188.     when "title"
  189.       call_title
  190.     else
  191.       $game_temp.next_scene = nil
  192.     end
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 切换至战斗画面
  196.   #--------------------------------------------------------------------------
  197.   def call_battle
  198.     @spriteset.update
  199.     Graphics.update
  200.     $game_player.make_encounter_count
  201.     $game_player.straighten
  202.     $game_temp.map_bgm = RPG::BGM.last
  203.     $game_temp.map_bgs = RPG::BGS.last
  204.     RPG::BGM.stop
  205.     RPG::BGS.stop
  206.     Sound.play_battle_start
  207.     $game_system.battle_bgm.play
  208.     $game_temp.next_scene = nil
  209.     $scene = Scene_Battle.new
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● 切换至商店画面
  213.   #--------------------------------------------------------------------------
  214.   def call_shop
  215.     $game_temp.next_scene = nil
  216.     $scene = Scene_Shop.new
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 切换至名称输入画面
  220.   #--------------------------------------------------------------------------
  221.   def call_name
  222.     $game_temp.next_scene = nil
  223.     $scene = Scene_Name.new
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 切换至菜单画面
  227.   #--------------------------------------------------------------------------
  228.   def call_menu
  229.     if $game_temp.menu_beep
  230.       Sound.play_decision
  231.       $game_temp.menu_beep = false
  232.     end
  233.     $game_temp.next_scene = nil
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● 切换至存档画面
  237.   #--------------------------------------------------------------------------
  238.   def call_save
  239.     $game_temp.next_scene = nil
  240.     $scene = Scene_File.new(true, false, true)
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 切换至DEBUG画面
  244.   #--------------------------------------------------------------------------
  245.   def call_debug
  246.     Sound.play_decision
  247.     $game_temp.next_scene = nil
  248.     $scene = Scene_Debug.new
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 切换至游戏结束画面
  252.   #--------------------------------------------------------------------------
  253.   def call_gameover
  254.     $game_temp.next_scene = nil
  255.     $scene = Scene_Gameover.new
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 切换至标题画面
  259.   #--------------------------------------------------------------------------
  260.   def call_title
  261.     $game_temp.next_scene = nil
  262.     $scene = Scene_Title.new
  263.     fadeout(60)
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ● 执行战斗渐变
  267.   #--------------------------------------------------------------------------
  268.   def perform_battle_transition
  269.     Graphics.transition(80, "Graphics/System/BattleStart", 80)
  270.     Graphics.freeze
  271.   end
  272. end
复制代码


覆盖掉 原来的 Scene_Map [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 雪流星    时间: 2008-6-6 20:43
LSS正解
就像自制菜单一样
作者: 八云紫    时间: 2008-6-6 20:47
以下引用snstar2006于2008-6-6 12:43:34的发言:

LSS正解
就像自制菜单一样


[本贴由作者于 2008-6-6 12:45:15 最后编辑]


LSSS的会出现问题,如果角色在移动,在执行事件,在播放动画的时候就会出问题。
作者: 八云色    时间: 2008-6-6 20:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 八云紫    时间: 2008-6-6 20:49
以下引用八云色于2008-6-6 12:48:38的发言:

八云好厉害好强大



那啥,你比我强。 有版聊的倾向了,闪人先。
作者: 越前リョーマ    时间: 2008-6-6 20:54
话说用事件自制菜单肯定很麻烦……




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