查看: 2592|回复: 4

[已经解决] 想把Rmxp中的流星雨天气脚本用到vx,能够通过修改实现吗?

[复制链接]
梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
回帖
1074
发表于 2018-1-28 20:35:58 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby"]module RPG
class Weather
#--------------------------------------------------------------------------
# ● 初始化物件
#--------------------------------------------------------------------------
   def initialize(viewport = nil)
     # 天气类型
     @type = 0
     @max = 0
     @ox = 0
     @oy = 0
     color1 = Color.new(255, 255, 255, 255)
     color2 = Color.new(255, 255, 255, 128)
     # 雨
     @rain_bitmap = Bitmap.new(7, 30)
     for i in 0..6
       @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
       @rain_bitmap.fill_rect(5-i, i*10, 1, 8, color2)
     end
     # 风
     @storm_bitmap = Bitmap.new(34, 64)
     for i in 0..31
       @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
       @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
       @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
     end
     # 雪
     @snow_bitmap = Bitmap.new(6, 6)
     @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
     @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
     @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
     @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
     # 流星
     @Hail_bitmap = Bitmap.new("Graphics/Pictures/star")
     @sprites = []
     for i in 1..40#40
       sprite = Sprite.new(viewport)
       sprite.z = 1000
       sprite.visible = false
       sprite.opacity = 0
       @sprites.push(sprite)
       # for
     end
     # initialize
   end
#--------------------------------------------------------------------------
# ● 设定天气类型
#--------------------------------------------------------------------------
   def type=(type)
     return if @type == type
     @type = type
     # 分歧-天气类型
     case @type
     # 雨
     when 1
       bitmap = @rain_bitmap
       # 风
     when 2
       bitmap = @storm_bitmap
       # 雪
     when 3
       bitmap = @snow_bitmap
       # 流星
     when 4
       bitmap = @Hail_bitmap
       # 类型在 1234 以外的场合
     else
       # bitmap = 空
       bitmap = nil
     end
     for i in 1..40
       sprite = @sprites
       # 如bitmap非空
       if sprite != nil
         sprite.visible = (i <= @max)
         sprite.bitmap = bitmap
       end
     end
   end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
   def update
     # 如天气类型等于 0 则返回
     return if @type == 0
     for i in 1..@max
       sprite = @sprites
       # 如sprite等于空
       if sprite == nil
         # 中断循环
         break
       end
       # 如天气类型等于 1
       if @type == 1
         sprite.x -= 2
         sprite.y += 16
         sprite.opacity -= 8
       end
       # 如天气类型等于 2
       if @type == 2
         sprite.x -= 8
         sprite.y += 16
         sprite.opacity -= 12
       end
       # 如天气类型等于 3
       if @type == 3
         sprite.x -= 2
         sprite.y += 8
         sprite.opacity -= 8
       end
       # 如天气类型等于 4
       if @type == 4
         sprite.x -= 5
         sprite.y += 5
         sprite.opacity -= 2
       end
       x = sprite.x - @ox
       y = sprite.y - @oy
       # 如天气图片不透明度小于 64 或 x 小于 -50 或 x 大于 750 或 y 小于 -300 或 y 大于 500
    #   if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
        if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 180
       case @type
      when 4
         # 图片不透明度x,y,不透明度调整
         sprite.x = rand(1200) + 100 + @ox
         sprite.y = rand(600) - 600 + @oy
         sprite.opacity = 255
       else
        sprite.x = rand(800) - 50 + @ox
         sprite.y = rand(800) - 200 + @oy
         sprite.opacity = 255
            end
         # if
       end
       # for
     end
     #update
   end
   # class
end
#module
end[/pre]

这是Rmxp的流星雨脚本。
但好像无法直接运在VX。
貌似是有点设定不一样了。
不知可否通过修改脚本的方式,达到可以运行该段脚本?
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2018-1-28 21:44:42 | 显示全部楼层
module去掉,class名改成Spriteset_Weather
调用方法:$game_map.screen.weather(类型, 强度, 渐变时间)

点评

ok  发表于 2018-1-31 16:59
VA结构不同,要写很多个方法,但是属性还是那四个  发表于 2018-1-31 09:42
那va用还需要改哪些地方呢?  发表于 2018-1-31 01:50

评分

参与人数 2星屑 +70 赞 +1 收起 理由
怪蜀黍 + 70 认可答案
文雅夕露 + 1 谢谢,原来是这样...

查看全部评分

回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部