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

Project1

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

[RMVX发布] 【小脚本】场所移动不淡入淡出

[复制链接]

Lv1.梦旅人

天空之神

梦石
0
星屑
156
在线时间
173 小时
注册时间
2009-5-3
帖子
612
跳转到指定楼层
1
发表于 2011-2-27 10:28:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

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

评分

参与人数 1星屑 +100 收起 理由
DeathKing + 100 D计划鼓励

查看全部评分

Lv3.寻梦者

弓箭手?剑兰

梦石
0
星屑
4794
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
2
发表于 2011-2-27 11:07:13 | 只看该作者
其实嘛~咱认为太长了,覆盖函数就可以, 插在Scene_Map之下:
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

  6. class Scene_Map < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 场所移动处理(来自小鱼子上面发的脚本)
  9.   #--------------------------------------------------------------------------
  10.   def update_transfer_player
  11.     return unless $game_player.transfer?
  12.     fade = (Graphics.brightness > 0)
  13.     #fadeout(30) if fade
  14.     @spriteset.dispose              # 释放活动块组
  15.     $game_player.perform_transfer   # 执行场所移动
  16.     $game_map.autoplay              # 自动更改 BGM 和 BGS
  17.     $game_map.update
  18.     #Graphics.wait(15)
  19.     @spriteset = Spriteset_Map.new  # 重新生成活动块组
  20.     #fadein(30) if fade
  21.     Input.update
  22.   end
  23. end
复制代码

评分

参与人数 1星屑 +100 收起 理由
DeathKing + 100 讨论鼓励

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1035
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
发表于 2011-2-27 16:25:02 | 只看该作者
推荐使用剑兰的方法,考虑到玩家可能使用了其他与Scene_Map相关的地图,这样做会使得一些被重定义的方法再次被重定义回默认。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

战国美少年森兰丸

梦石
0
星屑
204
在线时间
852 小时
注册时间
2008-7-20
帖子
3705
4
发表于 2011-2-28 22:15:35 | 只看该作者
这....我怎么觉得以前有过一个.......
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
19 小时
注册时间
2011-7-15
帖子
31
5
发表于 2011-7-16 19:41:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

6
发表于 2011-7-16 23:20:02 | 只看该作者
本帖最后由 精灵使者 于 2011-7-17 08:52 编辑

精灵的脚本:

  1. module FAY
  2. NO_TRANSPORT_SWITCH = 1 #控制是否不淡入淡出的开关
  3. end
  4. #==============================================================================
  5. # ■ Scene_Map
  6. #------------------------------------------------------------------------------
  7. #  处理地图画面的类。
  8. #==============================================================================

  9. class Scene_Map < Scene_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 场所移动处理(来自小鱼子上面发的脚本)
  12.   #--------------------------------------------------------------------------
  13.   def update_transfer_player
  14.     return unless $game_player.transfer?
  15.     fade = (Graphics.brightness > 0)
  16.     fadeout(30) if !fade and FAY::NO_TRANSPORT_SWITCH
  17.     @spriteset.dispose              # 释放活动块组
  18.     $game_player.perform_transfer   # 执行场所移动
  19.     $game_map.autoplay              # 自动更改 BGM 和 BGS
  20.     $game_map.update
  21.     Graphics.wait(15) if !FAY::NO_TRANSPORT_SWITCH
  22.     @spriteset = Spriteset_Map.new  # 重新生成活动块组
  23.     fadein(30) if fade and !FAY::NO_TRANSPORT_SWITCH
  24.     Input.update
  25.   end
  26. end
复制代码
使用方法:main前,默认是1号开关打开的时候,移动时不淡入淡出。
开关号在设定模块里可修改。

点评

默认是1号开关打开的时候,移动时不淡入淡出。  发表于 2012-8-11 16:01
开关打开时是淡出淡入还是无淡出淡入  发表于 2012-8-11 15:55
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-19 18:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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