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

Project1

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

找人合并个脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
60 小时
注册时间
2008-8-27
帖子
531
跳转到指定楼层
1
发表于 2009-1-10 21:33:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
这个双远景脚本
  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,使用前请参考制作录像
  3. #==============================================================================
  4. # ■ Spriteset_Map
  5. #------------------------------------------------------------------------------
  6. #  处理地图画面活动块和元件的类。本类在
  7. # Scene_Map 类的内部使用。
  8. #==============================================================================

  9. class Spriteset_Map
  10.   #--------------------------------------------------------------------------
  11.   # ● 初始化对像
  12.   #--------------------------------------------------------------------------
  13.   def initialize
  14.     # 生成显示端口
  15.     @viewport1 = Viewport.new(0, 0, 640, 480)
  16.     @viewport2 = Viewport.new(0, 0, 640, 480)
  17.     @viewport3 = Viewport.new(0, 0, 640, 480)
  18.     @viewport2.z = 200
  19.     @viewport3.z = 5000
  20.     # 生成元件地图
  21.     @tilemap = Tilemap.new(@viewport1)
  22.     @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  23.     for i in 0..6
  24.       autotile_name = $game_map.autotile_names[i]
  25.       @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  26.     end
  27.     @tilemap.map_data = $game_map.data
  28.     @tilemap.priorities = $game_map.priorities
  29.     # 生成远景平面
  30.     @panorama = Plane.new(@viewport1)
  31.     @panorama.z = -1000
  32.     @panorama2 = Plane.new(@viewport1)
  33.     @panorama2.z = 800
  34.     # 生成雾平面
  35.     @fog = Plane.new(@viewport1)
  36.     @fog.z = 3000
  37.     # 生成角色活动块
  38.     @character_sprites = []
  39.     for i in $game_map.events.keys.sort
  40.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  41.       @character_sprites.push(sprite)
  42.     end
  43.     @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  44.     # 生成天气
  45.     @weather = RPG::Weather.new(@viewport1)
  46.     # 生成图片
  47.     @picture_sprites = []
  48.     for i in 1..50
  49.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  50.         $game_screen.pictures[i]))
  51.     end
  52.     # 生成计时器块
  53.     @timer_sprite = Sprite_Timer.new
  54.     # 刷新画面
  55.     update
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 释放
  59.   #--------------------------------------------------------------------------
  60.   def dispose
  61.     # 释放元件地图
  62.     @tilemap.tileset.dispose
  63.     for i in 0..6
  64.       @tilemap.autotiles[i].dispose
  65.     end
  66.     @tilemap.dispose
  67.     # 释放远景平面
  68.     @panorama.dispose
  69.     @panorama2.dispose
  70.     # 释放雾平面
  71.     @fog.dispose
  72.     # 释放角色活动块
  73.     for sprite in @character_sprites
  74.       sprite.dispose
  75.     end
  76.     # 释放天候
  77.     @weather.dispose
  78.     # 释放图片
  79.     for sprite in @picture_sprites
  80.       sprite.dispose
  81.     end
  82.     # 释放计时器块
  83.     @timer_sprite.dispose
  84.     # 释放显示端口
  85.     @viewport1.dispose
  86.     @viewport2.dispose
  87.     @viewport3.dispose
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 刷新画面
  91.   #--------------------------------------------------------------------------
  92.   def update
  93.     # 远景与现在的情况有差异发情况下
  94.     if @panorama_name != $game_map.panorama_name or
  95.        @panorama_hue != $game_map.panorama_hue
  96.       @panorama_name = $game_map.panorama_name
  97.       @panorama_hue = $game_map.panorama_hue
  98.       if @panorama.bitmap != nil
  99.         @panorama.bitmap.dispose
  100.         @panarama2.bitmap.dispose
  101.         @panorama2.bitmap = nil
  102.         @panarama.bitmap = nil
  103.       end
  104.       if @panorama_name != ""
  105.         @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  106.         Graphics.update #防卡死
  107.         @panorama2.bitmap = RPG::Cache.panorama(@panorama_name+"_2", @panorama_hue)
  108.       end
  109.       Graphics.frame_reset
  110.     end
  111.     # 雾与现在的情况有差异的情况下
  112.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  113.       @fog_name = $game_map.fog_name
  114.       @fog_hue = $game_map.fog_hue
  115.       if @fog.bitmap != nil
  116.         @fog.bitmap.dispose
  117.         @fog.bitmap = nil
  118.       end
  119.       if @fog_name != ""
  120.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  121.       end
  122.       Graphics.frame_reset
  123.     end
  124.     # 刷新元件地图
  125.     @tilemap.ox = $game_map.display_x / 4
  126.     @tilemap.oy = $game_map.display_y / 4
  127.     @tilemap.update
  128.     # 刷新远景平面
  129.     @panorama.ox = $game_map.display_x / 4
  130.     @panorama.oy = $game_map.display_y / 4
  131.     @panorama2.ox = @panorama.ox
  132.     @panorama2.oy = @panorama.oy
  133.     # 刷新雾平面
  134.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  135.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  136.     @fog.opacity = $game_map.fog_opacity
  137.     @fog.blend_type = $game_map.fog_blend_type
  138.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  139.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  140.     @fog.tone = $game_map.fog_tone
  141.     # 刷新角色活动块
  142.     for sprite in @character_sprites
  143.       sprite.update
  144.     end
  145.     # 刷新天候图形
  146.     @weather.type = $game_screen.weather_type
  147.     @weather.max = $game_screen.weather_max
  148.     @weather.ox = $game_map.display_x / 4
  149.     @weather.oy = $game_map.display_y / 4
  150.     @weather.update
  151.     # 刷新图片
  152.     for sprite in @picture_sprites
  153.       sprite.update
  154.     end
  155.     # 刷新计时器块
  156.     @timer_sprite.update
  157.     # 设置画面的色调与震动位置
  158.     @viewport1.tone = $game_screen.tone
  159.     @viewport1.ox = $game_screen.shake
  160.     # 设置画面的闪烁色
  161.     @viewport3.color = $game_screen.flash_color
  162.     # 刷新显示端口
  163.     @viewport1.update
  164.     @viewport3.update
  165.   end
  166. end
  167. #==============================================================================
  168. # 本脚本来自www.66rpg.com,使用前请参考制作录像
  169. #==============================================================================
复制代码

和这个远景自动移动脚本
  1. # ▼▲▼ XRXS34. パノラマスクロール ▼▲▼
  2. # by ぷのくー

  3. #——————————————————————————————————————
  4. # 这是一个非常简单的脚本,只要自定义自动滚动的地图编号和绝对不滚动的地图编号
  5. # 即可实现对远景的操作。
  6. #——————————————————————————————————————

  7. #==============================================================================
  8. # 初始化的一些常量
  9. #==============================================================================
  10. class Game_Map
  11.   
  12.   # 远景横向飘移速度速度
  13.   PANORAMA_SX = 2
  14.   
  15.   # 远景纵向飘移速度速度
  16.   PANORAMA_SY = 0
  17.   
  18.   # 自动滚动远景的地图编号(编号为1、4、7、5的地图远景会自动移动)
  19.   AUTO_SCROLL_PANORAMA_IDS = [1,4,7,15]
  20. end


  21. class Spriteset_Map
  22.   
  23.   # 锁定远景的地图编号(编号为2、8、10的地图远景会锁定)
  24.   SCROLL_FREEZE_PANORAMA_IDS = [2,8,9]  
  25.   
  26.   #——说明:如果自动滚动和锁定都包括了某张地图,则该地图不滚动。
  27.   #——如果自动滚动和锁定都没有包括某图,则还是会使用默认效果。
  28. end

  29. #==============================================================================
  30. # ■ Game_Map
  31. #==============================================================================
  32. class Game_Map
  33.   attr_accessor :panorama_sx         
  34.   attr_accessor :panorama_sy           
  35.   attr_reader   :panorama_ox              
  36.   attr_reader   :panorama_oy           
  37.   def setup(map_id)
  38.     @map_id = map_id
  39.     @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
  40.     tileset = $data_tilesets[@map.tileset_id]
  41.     @tileset_name = tileset.tileset_name
  42.     @autotile_names = tileset.autotile_names
  43.     @panorama_name = tileset.panorama_name
  44.     @panorama_hue = tileset.panorama_hue
  45.     @fog_name = tileset.fog_name
  46.     @fog_hue = tileset.fog_hue
  47.     @fog_opacity = tileset.fog_opacity
  48.     @fog_blend_type = tileset.fog_blend_type
  49.     @fog_zoom = tileset.fog_zoom
  50.     @fog_sx = tileset.fog_sx
  51.     @fog_sy = tileset.fog_sy
  52.     # ===================================
  53.      if AUTO_SCROLL_PANORAMA_IDS.include?(map_id)
  54.        @panorama_sx = PANORAMA_SX
  55.        @panorama_sy = PANORAMA_SY
  56.      else
  57.        @panorama_sx = 0
  58.        @panorama_sy = 0
  59.      end
  60.     # ===================================
  61.     @battleback_name = tileset.battleback_name
  62.     @passages = tileset.passages
  63.     @priorities = tileset.priorities
  64.     @terrain_tags = tileset.terrain_tags
  65.     @display_x = 0
  66.     @display_y = 0
  67.     @need_refresh = false
  68.     @events = {}
  69.     for i in @map.events.keys
  70.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  71.     end
  72.     @common_events = {}
  73.     for i in 1...$data_common_events.size
  74.       @common_events[i] = Game_CommonEvent.new(i)
  75.     end
  76.     @fog_ox = 0
  77.     @fog_oy = 0
  78.     @panorama_ox = 0
  79.     @panorama_oy = 0
  80.     @fog_tone = Tone.new(0, 0, 0, 0)
  81.     @fog_tone_target = Tone.new(0, 0, 0, 0)
  82.     @fog_tone_duration = 0
  83.     @fog_opacity_duration = 0
  84.     @fog_opacity_target = 0
  85.     @scroll_direction = 2
  86.     @scroll_rest = 0
  87.     @scroll_speed = 4
  88.   end
  89.   def update
  90.     if $game_map.need_refresh
  91.       refresh
  92.     end
  93.     if @scroll_rest > 0
  94.       distance = 2 ** @scroll_speed
  95.       case @scroll_direction
  96.       when 2  # 下
  97.         scroll_down(distance)
  98.       when 4  # 左
  99.         scroll_left(distance)
  100.       when 6  # 右
  101.         scroll_right(distance)
  102.       when 8  # 上
  103.         scroll_up(distance)
  104.       end
  105.       @scroll_rest -= distance
  106.     end
  107.     for event in @events.values
  108.       event.update
  109.     end
  110.     for common_event in @common_events.values
  111.       common_event.update
  112.     end
  113.     @fog_ox -= @fog_sx / 8.0
  114.     @fog_oy -= @fog_sy / 8.0
  115.     # ===================================
  116.     @panorama_ox -= @panorama_sx / 8.0
  117.     @panorama_oy -= @panorama_sy / 8.0
  118.     # ===================================
  119.     if @fog_tone_duration >= 1
  120.       d = @fog_tone_duration
  121.       target = @fog_tone_target
  122.       @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  123.       @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  124.       @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  125.       @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  126.       @fog_tone_duration -= 1
  127.     end
  128.     if @fog_opacity_duration >= 1
  129.       d = @fog_opacity_duration
  130.       @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  131.       @fog_opacity_duration -= 1
  132.     end
  133.   end
  134. end

  135. #==============================================================================
  136. # ■ Spriteset_Map
  137. #==============================================================================
  138. class Spriteset_Map
  139.   def update
  140.     if @panorama_name != $game_map.panorama_name or
  141.        @panorama_hue != $game_map.panorama_hue
  142.       @panorama_name = $game_map.panorama_name
  143.       @panorama_hue = $game_map.panorama_hue
  144.       if @panorama.bitmap != nil
  145.         @panorama.bitmap.dispose
  146.         @panorama.bitmap = nil
  147.       end
  148.       if @panorama_name != ""
  149.         @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  150.       end
  151.       Graphics.frame_reset
  152.     end
  153.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  154.       @fog_name = $game_map.fog_name
  155.       @fog_hue = $game_map.fog_hue
  156.       if @fog.bitmap != nil
  157.         @fog.bitmap.dispose
  158.         @fog.bitmap = nil
  159.       end
  160.       if @fog_name != ""
  161.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  162.       end
  163.       Graphics.frame_reset
  164.     end
  165.     @tilemap.ox = $game_map.display_x / 4
  166.     @tilemap.oy = $game_map.display_y / 4
  167.     @tilemap.update
  168.     # ===================================
  169.     if SCROLL_FREEZE_PANORAMA_IDS.include?($game_map.map_id)
  170.      @panorama.ox = 0
  171.      @panorama.oy = 0
  172.     else
  173.       @panorama.ox = $game_map.display_x / 8 +$game_map.panorama_ox
  174.       @panorama.oy = $game_map.display_y / 8 +$game_map.panorama_oy
  175.     end
  176.   # ===================================
  177.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  178.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  179.     @fog.opacity = $game_map.fog_opacity
  180.     @fog.blend_type = $game_map.fog_blend_type
  181.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  182.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  183.     @fog.tone = $game_map.fog_tone
  184.     for sprite in @character_sprites
  185.       sprite.update
  186.     end
  187.     @weather.type = $game_screen.weather_type
  188.     @weather.max = $game_screen.weather_max
  189.     @weather.ox = $game_map.display_x / 4
  190.     @weather.oy = $game_map.display_y / 4
  191.     @weather.update
  192.     for sprite in @picture_sprites
  193.       sprite.update
  194.     end
  195.     @timer_sprite.update
  196.     @viewport1.tone = $game_screen.tone
  197.     @viewport1.ox = $game_screen.shake
  198.     @viewport3.color = $game_screen.flash_color
  199.     @viewport1.update
  200.     @viewport3.update
  201.   end
  202. end
复制代码


这两个脚本不能同时使用 找人合并一下

版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

梦石
0
星屑
50
在线时间
60 小时
注册时间
2008-8-27
帖子
531
6
 楼主| 发表于 2009-1-11 21:08:37 | 只看该作者
以下引用RXVincent于2009-1-11 12:21:18的发言:

我真的不是故意连帖的,真的

交货  (请先试验下再给予悬赏)
#==============================================================================
# 初始化的一些常量
#==============================================================================
class Game_Map
  
  # 远景横向飘移速度速度
  PANORAMA_SX = 2
  
  # 远景纵向飘移速度速度
  PANORAMA_SY = 0
  
  # 自动滚动远景的地图编号(编号为1、4、7、5的地图远景会自动移动)
  AUTO_SCROLL_PANORAMA_IDS = [1,4,7,15]
end


class Spriteset_Map
  
  # 锁定远景的地图编号(编号为2、8、10的地图远景会锁定)
  SCROLL_FREEZE_PANORAMA_IDS = [2,8,9]  
  
  #——说明:如果自动滚动和锁定都包括了某张地图,则该地图不滚动。
  #——如果自动滚动和锁定都没有包括某图,则还是会使用默认效果。
end

#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map
  attr_accessor :panorama_sx         
  attr_accessor :panorama_sy           
  attr_reader   :panorama_ox              
  attr_reader   :panorama_oy           
  def setup(map_id)
    @map_id = map_id
    @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
    tileset = $data_tilesets[@map.tileset_id]
    @tileset_name = tileset.tileset_name
    @autotile_names = tileset.autotile_names
    @panorama_name = tileset.panorama_name
    @panorama_hue = tileset.panorama_hue
    @fog_name = tileset.fog_name
    @fog_hue = tileset.fog_hue
    @fog_opacity = tileset.fog_opacity
    @fog_blend_type = tileset.fog_blend_type
    @fog_zoom = tileset.fog_zoom
    @fog_sx = tileset.fog_sx
    @fog_sy = tileset.fog_sy
    # ===================================
     if AUTO_SCROLL_PANORAMA_IDS.include?(map_id)
       @panorama_sx = PANORAMA_SX
       @panorama_sy = PANORAMA_SY
     else
       @panorama_sx = 0
       @panorama_sy = 0
     end
    # ===================================
    @battleback_name = tileset.battleback_name
    @passages = tileset.passages
    @priorities = tileset.priorities
    @terrain_tags = tileset.terrain_tags
    @display_x = 0
    @display_y = 0
    @need_refresh = false
    @events = {}
    for i in @map.events.keys
      @events = Game_Event.new(@map_id, @map.events)
    end
    @common_events = {}
    for i in 1...$data_common_events.size
      @common_events = Game_CommonEvent.new(i)
    end
    @fog_ox = 0
    @fog_oy = 0
    @panorama_ox = 0
    @panorama_oy = 0
    @fog_tone = Tone.new(0, 0, 0, 0)
    @fog_tone_target = Tone.new(0, 0, 0, 0)
    @fog_tone_duration = 0
    @fog_opacity_duration = 0
    @fog_opacity_target = 0
    @scroll_direction = 2
    @scroll_rest = 0
    @scroll_speed = 4
  end
  def update
    if $game_map.need_refresh
      refresh
    end
    if @scroll_rest > 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
      when 2  # 下
        scroll_down(distance)
      when 4  # 左
        scroll_left(distance)
      when 6  # 右
        scroll_right(distance)
      when 8  # 上
        scroll_up(distance)
      end
      @scroll_rest -= distance
    end
    for event in @events.values
      event.update
    end
    for common_event in @common_events.values
      common_event.update
    end
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0
    # ===================================
    @panorama_ox -= @panorama_sx / 8.0
    @panorama_oy -= @panorama_sy / 8.0
    # ===================================
    if @fog_tone_duration >= 1
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if @fog_opacity_duration >= 1
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
  end
end



#####合并部分


class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    # 生成显示端口
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 200
    @viewport3.z = 5000
    # 生成元件地图
    @tilemap = Tilemap.new(@viewport1)
    @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    for i in 0..6
      autotile_name = $game_map.autotile_names
      @tilemap.autotiles = RPG::Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.data
    @tilemap.priorities = $game_map.priorities
    # 生成远景平面
    @panorama = Plane.new(@viewport1)
    @panorama.z = -1000
    @panorama2 = Plane.new(@viewport1)
    @panorama2.z = 800
    # 生成雾平面
    @fog = Plane.new(@viewport1)
    @fog.z = 3000
    # 生成角色活动块
    @character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new(@viewport1, $game_map.events)
      @character_sprites.push(sprite)
    end
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
    # 生成天气
    @weather = RPG::Weather.new(@viewport1)
    # 生成图片
    @picture_sprites = []
    for i in 1..50
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
        $game_screen.pictures))
    end
    # 生成计时器块
    @timer_sprite = Sprite_Timer.new
    # 刷新画面
    update
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    # 释放元件地图
    @tilemap.tileset.dispose
    for i in 0..6
      @tilemap.autotiles.dispose
    end
    @tilemap.dispose
    # 释放远景平面
    @panorama.dispose
    @panorama2.dispose
    # 释放雾平面
    @fog.dispose
    # 释放角色活动块
    for sprite in @character_sprites
      sprite.dispose
    end
    # 释放天候
    @weather.dispose
    # 释放图片
    for sprite in @picture_sprites
      sprite.dispose
    end
    # 释放计时器块
    @timer_sprite.dispose
    # 释放显示端口
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 远景与现在的情况有差异发情况下
    if @panorama_name != $game_map.panorama_name or
       @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panarama2.bitmap.dispose
        @panorama2.bitmap = nil
        @panarama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
        Graphics.update #防卡死
        @panorama2.bitmap = RPG::Cache.panorama(@panorama_name+"_2", @panorama_hue)
      end
      Graphics.frame_reset
    end
    # 雾与现在的情况有差异的情况下
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    # 刷新元件地图
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    # 刷新远景平面
    @panorama.ox = $game_map.display_x / 4
    @panorama.oy = $game_map.display_y / 4
    @panorama2.ox = @panorama.ox
    @panorama2.oy = @panorama.oy
    if SCROLL_FREEZE_PANORAMA_IDS.include?($game_map.map_id)
     @panorama.ox = 0
     @panorama.oy = 0
    else
      @panorama.ox = $game_map.display_x / 8 +$game_map.panorama_ox
      @panorama.oy = $game_map.display_y / 8 +$game_map.panorama_oy
    end
    # 刷新雾平面
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    # 刷新角色活动块
    for sprite in @character_sprites
      sprite.update
    end
    # 刷新天候图形
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    # 刷新图片
    for sprite in @picture_sprites
      sprite.update
    end
    # 刷新计时器块
    @timer_sprite.update
    # 设置画面的色调与震动位置
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    # 设置画面的闪烁色
    @viewport3.color = $game_screen.flash_color
    # 刷新显示端口
    @viewport1.update
    @viewport3.update
  end
end



系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~


[本贴由作者于 2009-1-11 12:22:32 最后编辑]


太满意了 非常感谢  

回复 支持 反对

使用道具 举报

Lv3.寻梦者

无限の阿尔艾克斯

梦石
0
星屑
981
在线时间
304 小时
注册时间
2007-6-24
帖子
2106

贵宾

5
发表于 2009-1-11 20:21:18 | 只看该作者
我真的不是故意连帖的,真的

交货  (请先试验下再给予悬赏)
  1. #==============================================================================
  2. # 初始化的一些常量
  3. #==============================================================================
  4. class Game_Map
  5.   
  6.   # 远景横向飘移速度速度
  7.   PANORAMA_SX = 2
  8.   
  9.   # 远景纵向飘移速度速度
  10.   PANORAMA_SY = 0
  11.   
  12.   # 自动滚动远景的地图编号(编号为1、4、7、5的地图远景会自动移动)
  13.   AUTO_SCROLL_PANORAMA_IDS = [1,4,7,15]
  14. end


  15. class Spriteset_Map
  16.   
  17.   # 锁定远景的地图编号(编号为2、8、10的地图远景会锁定)
  18.   SCROLL_FREEZE_PANORAMA_IDS = [2,8,9]  
  19.   
  20.   #——说明:如果自动滚动和锁定都包括了某张地图,则该地图不滚动。
  21.   #——如果自动滚动和锁定都没有包括某图,则还是会使用默认效果。
  22. end

  23. #==============================================================================
  24. # ■ Game_Map
  25. #==============================================================================
  26. class Game_Map
  27.   attr_accessor :panorama_sx         
  28.   attr_accessor :panorama_sy           
  29.   attr_reader   :panorama_ox              
  30.   attr_reader   :panorama_oy           
  31.   def setup(map_id)
  32.     @map_id = map_id
  33.     @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
  34.     tileset = $data_tilesets[@map.tileset_id]
  35.     @tileset_name = tileset.tileset_name
  36.     @autotile_names = tileset.autotile_names
  37.     @panorama_name = tileset.panorama_name
  38.     @panorama_hue = tileset.panorama_hue
  39.     @fog_name = tileset.fog_name
  40.     @fog_hue = tileset.fog_hue
  41.     @fog_opacity = tileset.fog_opacity
  42.     @fog_blend_type = tileset.fog_blend_type
  43.     @fog_zoom = tileset.fog_zoom
  44.     @fog_sx = tileset.fog_sx
  45.     @fog_sy = tileset.fog_sy
  46.     # ===================================
  47.      if AUTO_SCROLL_PANORAMA_IDS.include?(map_id)
  48.        @panorama_sx = PANORAMA_SX
  49.        @panorama_sy = PANORAMA_SY
  50.      else
  51.        @panorama_sx = 0
  52.        @panorama_sy = 0
  53.      end
  54.     # ===================================
  55.     @battleback_name = tileset.battleback_name
  56.     @passages = tileset.passages
  57.     @priorities = tileset.priorities
  58.     @terrain_tags = tileset.terrain_tags
  59.     @display_x = 0
  60.     @display_y = 0
  61.     @need_refresh = false
  62.     @events = {}
  63.     for i in @map.events.keys
  64.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  65.     end
  66.     @common_events = {}
  67.     for i in 1...$data_common_events.size
  68.       @common_events[i] = Game_CommonEvent.new(i)
  69.     end
  70.     @fog_ox = 0
  71.     @fog_oy = 0
  72.     @panorama_ox = 0
  73.     @panorama_oy = 0
  74.     @fog_tone = Tone.new(0, 0, 0, 0)
  75.     @fog_tone_target = Tone.new(0, 0, 0, 0)
  76.     @fog_tone_duration = 0
  77.     @fog_opacity_duration = 0
  78.     @fog_opacity_target = 0
  79.     @scroll_direction = 2
  80.     @scroll_rest = 0
  81.     @scroll_speed = 4
  82.   end
  83.   def update
  84.     if $game_map.need_refresh
  85.       refresh
  86.     end
  87.     if @scroll_rest > 0
  88.       distance = 2 ** @scroll_speed
  89.       case @scroll_direction
  90.       when 2  # 下
  91.         scroll_down(distance)
  92.       when 4  # 左
  93.         scroll_left(distance)
  94.       when 6  # 右
  95.         scroll_right(distance)
  96.       when 8  # 上
  97.         scroll_up(distance)
  98.       end
  99.       @scroll_rest -= distance
  100.     end
  101.     for event in @events.values
  102.       event.update
  103.     end
  104.     for common_event in @common_events.values
  105.       common_event.update
  106.     end
  107.     @fog_ox -= @fog_sx / 8.0
  108.     @fog_oy -= @fog_sy / 8.0
  109.     # ===================================
  110.     @panorama_ox -= @panorama_sx / 8.0
  111.     @panorama_oy -= @panorama_sy / 8.0
  112.     # ===================================
  113.     if @fog_tone_duration >= 1
  114.       d = @fog_tone_duration
  115.       target = @fog_tone_target
  116.       @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  117.       @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  118.       @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  119.       @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  120.       @fog_tone_duration -= 1
  121.     end
  122.     if @fog_opacity_duration >= 1
  123.       d = @fog_opacity_duration
  124.       @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  125.       @fog_opacity_duration -= 1
  126.     end
  127.   end
  128. end



  129. #####合并部分


  130. class Spriteset_Map
  131.   #--------------------------------------------------------------------------
  132.   # ● 初始化对像
  133.   #--------------------------------------------------------------------------
  134.   def initialize
  135.     # 生成显示端口
  136.     @viewport1 = Viewport.new(0, 0, 640, 480)
  137.     @viewport2 = Viewport.new(0, 0, 640, 480)
  138.     @viewport3 = Viewport.new(0, 0, 640, 480)
  139.     @viewport2.z = 200
  140.     @viewport3.z = 5000
  141.     # 生成元件地图
  142.     @tilemap = Tilemap.new(@viewport1)
  143.     @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  144.     for i in 0..6
  145.       autotile_name = $game_map.autotile_names[i]
  146.       @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  147.     end
  148.     @tilemap.map_data = $game_map.data
  149.     @tilemap.priorities = $game_map.priorities
  150.     # 生成远景平面
  151.     @panorama = Plane.new(@viewport1)
  152.     @panorama.z = -1000
  153.     @panorama2 = Plane.new(@viewport1)
  154.     @panorama2.z = 800
  155.     # 生成雾平面
  156.     @fog = Plane.new(@viewport1)
  157.     @fog.z = 3000
  158.     # 生成角色活动块
  159.     @character_sprites = []
  160.     for i in $game_map.events.keys.sort
  161.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  162.       @character_sprites.push(sprite)
  163.     end
  164.     @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  165.     # 生成天气
  166.     @weather = RPG::Weather.new(@viewport1)
  167.     # 生成图片
  168.     @picture_sprites = []
  169.     for i in 1..50
  170.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  171.         $game_screen.pictures[i]))
  172.     end
  173.     # 生成计时器块
  174.     @timer_sprite = Sprite_Timer.new
  175.     # 刷新画面
  176.     update
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 释放
  180.   #--------------------------------------------------------------------------
  181.   def dispose
  182.     # 释放元件地图
  183.     @tilemap.tileset.dispose
  184.     for i in 0..6
  185.       @tilemap.autotiles[i].dispose
  186.     end
  187.     @tilemap.dispose
  188.     # 释放远景平面
  189.     @panorama.dispose
  190.     @panorama2.dispose
  191.     # 释放雾平面
  192.     @fog.dispose
  193.     # 释放角色活动块
  194.     for sprite in @character_sprites
  195.       sprite.dispose
  196.     end
  197.     # 释放天候
  198.     @weather.dispose
  199.     # 释放图片
  200.     for sprite in @picture_sprites
  201.       sprite.dispose
  202.     end
  203.     # 释放计时器块
  204.     @timer_sprite.dispose
  205.     # 释放显示端口
  206.     @viewport1.dispose
  207.     @viewport2.dispose
  208.     @viewport3.dispose
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 刷新画面
  212.   #--------------------------------------------------------------------------
  213.   def update
  214.     # 远景与现在的情况有差异发情况下
  215.     if @panorama_name != $game_map.panorama_name or
  216.        @panorama_hue != $game_map.panorama_hue
  217.       @panorama_name = $game_map.panorama_name
  218.       @panorama_hue = $game_map.panorama_hue
  219.       if @panorama.bitmap != nil
  220.         @panorama.bitmap.dispose
  221.         @panarama2.bitmap.dispose
  222.         @panorama2.bitmap = nil
  223.         @panarama.bitmap = nil
  224.       end
  225.       if @panorama_name != ""
  226.         @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  227.         Graphics.update #防卡死
  228.         @panorama2.bitmap = RPG::Cache.panorama(@panorama_name+"_2", @panorama_hue)
  229.       end
  230.       Graphics.frame_reset
  231.     end
  232.     # 雾与现在的情况有差异的情况下
  233.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  234.       @fog_name = $game_map.fog_name
  235.       @fog_hue = $game_map.fog_hue
  236.       if @fog.bitmap != nil
  237.         @fog.bitmap.dispose
  238.         @fog.bitmap = nil
  239.       end
  240.       if @fog_name != ""
  241.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  242.       end
  243.       Graphics.frame_reset
  244.     end
  245.     # 刷新元件地图
  246.     @tilemap.ox = $game_map.display_x / 4
  247.     @tilemap.oy = $game_map.display_y / 4
  248.     @tilemap.update
  249.     # 刷新远景平面
  250.     @panorama.ox = $game_map.display_x / 4
  251.     @panorama.oy = $game_map.display_y / 4
  252.     @panorama2.ox = @panorama.ox
  253.     @panorama2.oy = @panorama.oy
  254.     if SCROLL_FREEZE_PANORAMA_IDS.include?($game_map.map_id)
  255.      @panorama.ox = 0
  256.      @panorama.oy = 0
  257.     else
  258.       @panorama.ox = $game_map.display_x / 8 +$game_map.panorama_ox
  259.       @panorama.oy = $game_map.display_y / 8 +$game_map.panorama_oy
  260.     end
  261.     # 刷新雾平面
  262.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  263.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  264.     @fog.opacity = $game_map.fog_opacity
  265.     @fog.blend_type = $game_map.fog_blend_type
  266.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  267.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  268.     @fog.tone = $game_map.fog_tone
  269.     # 刷新角色活动块
  270.     for sprite in @character_sprites
  271.       sprite.update
  272.     end
  273.     # 刷新天候图形
  274.     @weather.type = $game_screen.weather_type
  275.     @weather.max = $game_screen.weather_max
  276.     @weather.ox = $game_map.display_x / 4
  277.     @weather.oy = $game_map.display_y / 4
  278.     @weather.update
  279.     # 刷新图片
  280.     for sprite in @picture_sprites
  281.       sprite.update
  282.     end
  283.     # 刷新计时器块
  284.     @timer_sprite.update
  285.     # 设置画面的色调与震动位置
  286.     @viewport1.tone = $game_screen.tone
  287.     @viewport1.ox = $game_screen.shake
  288.     # 设置画面的闪烁色
  289.     @viewport3.color = $game_screen.flash_color
  290.     # 刷新显示端口
  291.     @viewport1.update
  292.     @viewport3.update
  293.   end
  294. end
复制代码

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
兴趣使然的独立开发者
回复 支持 反对

使用道具 举报

Lv3.寻梦者

无限の阿尔艾克斯

梦石
0
星屑
981
在线时间
304 小时
注册时间
2007-6-24
帖子
2106

贵宾

4
发表于 2009-1-11 20:03:37 | 只看该作者
这个任务我接了,下午交货(只是尝试)
兴趣使然的独立开发者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
60 小时
注册时间
2008-8-27
帖子
531
3
 楼主| 发表于 2009-1-11 19:44:12 | 只看该作者
我再顶  十万火急 帮帮我啊{/dk}

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
60 小时
注册时间
2008-8-27
帖子
531
2
 楼主| 发表于 2009-1-11 00:19:26 | 只看该作者
来个高手帮帮忙啊 我顶上去

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-19 16:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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