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

Project1

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

[RMVA发布] 使用雾图片 VA 版 v1.0

[复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2012-3-2 10:28:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Sion 于 2013-12-16 18:51 编辑

RMXP 的地图上可以设定雾的图片显示
但是从VX之後,此功能就消失了...

有人在提问区求水底效果的脚本,就顺便把雾图片效果做出来
先做出水底效果,其他效果在慢慢制作修改

使用方法:
在 Graphics 里面新建一个文件夹 ,取名叫做 Fog,雾图片的图档放里面
在地图的备注里面填写 [fog 文件名],就会读取 Fog 文件夹里面的图片,设定为地图的雾图片
在地图的备注里面填写 [fog_opacity 数字],设定雾图片的不透明度,范围 0-255
在地图的备注里面填写 [fog_type 文字],设定雾图片的类型,目前只支援 "water"(水),其他效果会陆续加入
如果要显示水底效果,请设置为 [fog_type water]

- 2012-03-02 更新 1.0
  * 增加功能:可以使用两张雾图片,使用效果不同
  * 增加功能:可以指定雾图片流动速度与方向
  * 增加功能:可以用事件脚本修改当前地图的雾图片
  * 新增效果:增加“雾”效果

素材:
水纹雾图片
雾图片

范例:
http://dl.dbank.com/c08rxgczud
补充附件: fog.zip (1.98 MB, 下载次数: 1441)
  1. module Cache
  2.   #--------------------------------------------------------------------------
  3.   # ● 载入雾图片
  4.   #--------------------------------------------------------------------------
  5.   def self.load_fog(filename)
  6.     load_bitmap("Graphics/Fogs/", filename)
  7.   end
  8. end
  9. class RPG::Map
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取雾图片文件名
  12.   #--------------------------------------------------------------------------
  13.   def fog1_name # 精灵
  14.     self.note.split(/[\r\n]+/).each { |line|
  15.       return $1.to_s if line =~ /\[fog1 (\S+)\]/
  16.     }
  17.     return ""
  18.   end
  19.   def fog2_name # 平面
  20.     self.note.split(/[\r\n]+/).each { |line|
  21.       return $1.to_s if line =~ /\[fog2 (\S+)\]/
  22.     }
  23.     return ""
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 获取雾图片不透明度
  27.   #--------------------------------------------------------------------------
  28.   def fog_opacity
  29.     self.note.split(/[\r\n]+/).each { |line|
  30.       return $1.to_i if line =~ /\[fog_opacity (\d+)\]/
  31.     }
  32.     return 64
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 获取雾图片类型
  36.   #--------------------------------------------------------------------------
  37.   def fog_type
  38.     self.note.split(/[\r\n]+/).each { |line|
  39.       if line =~ /\[fog_type (\S+)\]/
  40.         return $1.nil? ? "plain" : $1
  41.       end
  42.     }
  43.     return "plain"
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 获取雾图片速度
  47.   #--------------------------------------------------------------------------
  48.   def get_fog_speed
  49.     return @fog_speed if @fog_speed
  50.     self.note.split(/[\r\n]+/).each { |line|
  51.       if line =~ /\[fog_speed (\d+)\]/
  52.         @fog_speed = $1 ? $1.to_i : 0
  53.       end
  54.     }
  55.     return @fog_speed
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 获取雾图片速度
  59.   #--------------------------------------------------------------------------
  60.   def get_fog_speed_den
  61.     return @fog_speed_den if @fog_speed_den
  62.     self.note.split(/[\r\n]+/).each { |line|
  63.       if line =~ /\[fog_speed_den (\d+)\]/
  64.         @fog_speed_den = $1 ? $1.to_i : 1
  65.       end
  66.     }
  67.     return @fog_speed_den
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 获取雾图片流动方向
  71.   #--------------------------------------------------------------------------
  72.   def get_fog_direction
  73.     return @fog_direction if @fog_direction
  74.     self.note.split(/[\r\n]+/).each { |line|
  75.       if line =~ /\[fog_dir (\d)\]/
  76.         @fog_direction = $1 ? $1.to_i : 5
  77.       end
  78.     }
  79.     return @fog_direction
  80.   end
  81. end
  82. class Game_Map
  83.   #--------------------------------------------------------------------------
  84.   # ● 地图设置
  85.   #--------------------------------------------------------------------------
  86.   alias process_fog_setup setup
  87.   def setup(map_id)
  88.     process_fog_setup(map_id)
  89.     @has_fog = false
  90.     @fog1_name = ""
  91.     @fog2_name = ""
  92.     set_fog_name(@map.fog1_name, 1)
  93.     set_fog_name(@map.fog2_name, 2)
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 设定雾图片文件名
  97.   #--------------------------------------------------------------------------
  98.   def set_fog_name(filename, id=1)
  99.     if id==1
  100.       @fog1_name = filename
  101.     elsif id==2
  102.       @fog2_name = filename
  103.     else
  104.       return
  105.     end
  106.     @has_fog = true
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 判断是否使用雾
  110.   #--------------------------------------------------------------------------
  111.   def has_fog?
  112.     return @has_fog
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 返回雾图片类型
  116.   #--------------------------------------------------------------------------
  117.   def fog_type
  118.     return @map.fog_type
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 返回雾图片流动速度
  122.   #--------------------------------------------------------------------------
  123.   def fog_speed
  124.     return @map.get_fog_speed
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 返回雾图片流动方向
  128.   #--------------------------------------------------------------------------
  129.   def fog_direction
  130.     dir = @map.get_fog_direction
  131.     return 5 unless ((1..9).to_a.include?(dir))
  132.     return dir
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 返回雾图片摇摆幅度最大值
  136.   #--------------------------------------------------------------------------
  137.   def max_wave_amp
  138.     return 16
  139.   end
  140.   attr_reader :fog1_name
  141.   attr_reader :fog2_name
  142.   attr_reader :map
  143. end
  144. class Game_Interpreter
  145.   def set_fog_name(filename, id=1)
  146.     $game_map.set_fog_name(filename, id)
  147.   end
  148. end
  149. class Spriteset_Map
  150.   #--------------------------------------------------------------------------
  151.   # ● 创建远景图
  152.   #--------------------------------------------------------------------------
  153.   alias process_fog_create_parallax create_parallax
  154.   def create_parallax
  155.     process_fog_create_parallax
  156.     create_fog_sprite
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 创建雾图片
  160.   #--------------------------------------------------------------------------
  161.   def create_fog_sprite
  162.     @fog1_name = $game_map.fog1_name
  163.     @fog2_name = $game_map.fog2_name
  164.     @fog_sprite = Sprite.new(@viewport1)
  165.     initialize_fog1 # 初始化雾图片2
  166.     @fog_plane = Plane.new(@viewport1)
  167.     initialize_fog2 # 初始化雾图片2
  168.     @fog_sprite.z = 200
  169.     @fog_plane.z = 200
  170.     set_fog_opacity($game_map.map.fog_opacity)
  171.     set_fog_effect # 设定其于效果
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 初始化雾图片1
  175.   #--------------------------------------------------------------------------
  176.   def initialize_fog1
  177.     source = Cache.load_fog(@fog1_name)
  178.     @fog_sprite.bitmap.dispose if @fog_sprite.bitmap
  179.     max_amp = $game_map.max_wave_amp
  180.     bitmap = Bitmap.new(Graphics.width+max_amp*2, Graphics.height+max_amp*2)
  181.     bitmap.stretch_blt(bitmap.rect, source, source.rect)
  182.     @fog_sprite.x = -max_amp
  183.     @fog_sprite.bitmap = bitmap
  184.     Graphics.frame_reset
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 初始化雾图片2
  188.   #--------------------------------------------------------------------------
  189.   def initialize_fog2
  190.     source = Cache.load_fog(@fog2_name)
  191.     @fog_plane.bitmap.dispose if @fog_plane.bitmap
  192.     @fog_plane.bitmap = source
  193.     Graphics.frame_reset
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 设定雾图片效果
  197.   #--------------------------------------------------------------------------
  198.   def set_fog_effect
  199.     case $game_map.fog_type
  200.     when "water"
  201.       @fog_sprite.wave_amp = 8
  202.       @fog_sprite.wave_length = 240
  203.       @fog_sprite.wave_speed = 120
  204.     when "fog"
  205.       @fog_sprite.wave_amp = 16
  206.       @fog_sprite.wave_length = 480
  207.       @fog_sprite.wave_speed = 240
  208.     end
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 设定雾图片不透明度
  212.   #--------------------------------------------------------------------------
  213.   def set_fog_opacity(opacity)
  214.     @fog_sprite.opacity = opacity
  215.     @fog_plane.opacity = opacity
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● 释放远景图
  219.   #--------------------------------------------------------------------------
  220.   alias process_fog_dispose_parallax dispose_parallax
  221.   def dispose_parallax
  222.     process_fog_dispose_parallax
  223.     dispose_fog
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 释放雾图片
  227.   #--------------------------------------------------------------------------
  228.   def dispose_fog
  229.     @fog_sprite.bitmap.dispose if @fog_sprite.bitmap
  230.     @fog_sprite.dispose
  231.     @fog_plane.bitmap.dispose if @fog_plane.bitmap
  232.     @fog_plane.dispose
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 更新远景图
  236.   #--------------------------------------------------------------------------
  237.   alias process_fog_update_parallax update_parallax
  238.   def update_parallax
  239.     process_fog_update_parallax
  240.     update_fog
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 更新雾图片
  244.   #--------------------------------------------------------------------------
  245.   def update_fog
  246.     if @fog1_name != $game_map.fog1_name
  247.       @fog1_name = $game_map.fog1_name
  248.       initialize_fog1
  249.     end
  250.     if @fog2_name != $game_map.fog2_name
  251.       @fog2_name = $game_map.fog2_name
  252.       initialize_fog2
  253.     end
  254.     @fog_sprite.update
  255.     update_fog_flowing
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 更新雾图片流动
  259.   #--------------------------------------------------------------------------
  260.   def update_fog_flowing
  261.     speed = $game_map.fog_speed
  262.     dir = $game_map.fog_direction
  263.     den = $game_map.map.get_fog_speed_den
  264.     return if speed == 0
  265.     return if dir == 5
  266.     return if den > 1 && Graphics.frame_count % den > 0
  267.     if ![2, 8].include?(dir)
  268.       sign = (dir%3 == 0 ? -1 : 1)
  269.       @fog_plane.ox += speed * sign
  270.     end
  271.     if ![4, 6].include?(dir)
  272.       sign = (dir/3 == 0 ? -1 : 1)
  273.       @fog_plane.oy += speed * sign
  274.     end
  275.   end
  276. end
复制代码
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv1.梦旅人

梦石
0
星屑
66
在线时间
140 小时
注册时间
2012-2-6
帖子
384
2
发表于 2012-3-2 10:29:50 | 只看该作者
本帖最后由 杂兵天下 于 2012-3-2 14:40 编辑

恩,水底效果貌似不错
先顶再看。
水纹像肥皂泡一样惨不忍睹。。。或许用XP默认Fog会好些吧。。。
附:
发骚的程序员之只用三行跳过标题
RUBY 代码复制
  1. def SceneManager.first_scene_class
  2.   $BTEST ? Scene_Battle : DataManager.setup_new_game ; Scene_Map
  3. end

点评

非常谢谢你那脚本  发表于 2012-12-13 19:44
没错,水纹图片就是XP的  发表于 2012-3-2 10:50
恩,总体来说是非常不错的,至少可以做潜水艇了。。 看了再顶  发表于 2012-3-2 10:36
默认那张水纹图片就是XP的。。。。。。。  发表于 2012-3-2 10:35
这么快回复 = =  发表于 2012-3-2 10:31
签名是什么?可以吃么?
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

3
 楼主| 发表于 2012-3-3 12:34:12 | 只看该作者
- 2012-03-02 更新 1.0
  * 增加功能:可以使用两张雾图片,使用效果不同
  * 增加功能:可以指定雾图片流动速度与方向
  * 增加功能:可以用事件脚本修改当前地图的雾图片
  * 新增效果:增加“雾”效果
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
59
在线时间
831 小时
注册时间
2010-8-23
帖子
487
4
发表于 2012-3-3 13:28:39 | 只看该作者
可以增加 落叶 的效果不
正统RPG进度更新~
剧情:■■■■■■■■■
系统:■■■■■■■■□□
设定:■■■■■■■■□□
左右时尚鞋坊 美丽从脚开始
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
337 小时
注册时间
2010-12-17
帖子
86
5
发表于 2012-3-6 06:51:04 | 只看该作者
可以請問一下 你的範例工程還是舊版的嗎?
因為我用了你的新版腳本結果霧都沒有效果............

点评

已經更新,謝謝提醒  发表于 2012-3-6 11:33
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2011-11-6
帖子
61
6
发表于 2012-3-31 11:45:06 | 只看该作者
云的图层如果不跟随主角的走动而移动的话,就非常完美了,现在的感觉太假了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
7
发表于 2012-10-28 12:44:51 | 只看该作者
如果在使用雾效果之后要怎么关闭?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2012-1-11
帖子
26
8
发表于 2013-11-24 12:47:56 | 只看该作者
哈哈正需要呢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
416 小时
注册时间
2012-11-30
帖子
162
9
发表于 2013-11-26 11:58:46 | 只看该作者
可以设个开关吗??
还有可以用  if   end做开关吗

<object width="630" height="500" align="middle" id="reader" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-44455354000
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
5 小时
注册时间
2018-5-29
帖子
3
10
发表于 2018-6-4 11:00:24 | 只看该作者
雾气系统的透明度是无法更新的吗?就是在前一张地图设置了雾气,在移动到后一张后透明度无法增加。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 18:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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