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

Project1

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

[RMVX发布] VX版真。烛光系统

 关闭 [复制链接]

Lv2.观梦者

天仙

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

贵宾

跳转到指定楼层
1
发表于 2008-6-12 08:49:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 风雪优游 于 2009-8-21 21:06 编辑

根据http://rpg.blue/web/htm/news865.htm
第三种烛光系统制作的

原作者:亿万星辰?
        错的话请指正{/pz}

更新:
  6/12/208: 更新了一个BUG
            新增了使用开关控制的功能

功能:
  1. 可以设置多种烛光形状(图片放在picture里面)
  2. 一个事件控制所有烛光
  3. 原版本将脚本写在事件里面,我直接改到脚本编辑器里面,并做了一些优化
     把原本的变量名称改掉,减少冲突可能。
     大大的简化了事件调用方式

使用方法:
  需要两张烛光的图,请下载范例,在Picture文件夹内
  在脚本内设置好黑暗程度、图片等(直接使用默认的也可以)
  在事件中使用脚本:

    candles(烛光编号, 角色编号)  设置有烛光效果的角色
                 烛光编号(默认):1号为放射型,2号为圆形
                 角色编号:0为主角,其他用事件编号,
                 candles(1, [1, 2, 3, 4])  表示1~4号事件全部都用放射型烛光
                 candles(1, 0)             表示主角使用圆形烛光
    最後在事件中写:initialize_candle
    设置结束

    candlelight(false)  关闭烛光

追加烛光效果:仿造 @candle_rect[2] 就行了,[2]代表编号

范例:
点此下载范例

效果截图:


脚本:

  1. # 设置烛光种类数
  2. CANDLE_NUMBER = 2

  3. # 设置控制开关,不用的话设0
  4. CANDLE_SWITCH = 4

  5. #--------------------------------------------------------------------------
  6. # ● 开启或关闭烛光
  7. #--------------------------------------------------------------------------
  8. def candlelight(on=true)
  9.   $candlelight_on = $game_switches[CANDLE_SWITCH] = on
  10.   if on
  11.     # 生成黑色画面
  12.     $black_rect = Sprite.new
  13.     $black_rect.bitmap = Bitmap.new(544, 416)
  14.     $black_rect.bitmap.fill_rect(0, 0, 544, 416, Color.new(200, 200, 200))
  15.     $black_rect.blend_type = 2
  16.    
  17.     # 黑色透明度,决定黑暗的程度
  18.     $black_rect.opacity = 180
  19.    
  20.     # 生成烛光
  21.     $candle_rect = Array.new(CANDLE_NUMBER+1).map{|sprite| sprite=Sprite.new}
  22. #===============================================================================]
  23. #                               烛光在此设置
  24. #===============================================================================
  25.     # 指定第一种烛光
  26.     $candle_rect[1].bitmap = Cache.picture("write1")
  27.    
  28.     # 指定第二种烛光
  29.     $candle_rect[2].bitmap = Cache.picture("write2")
  30. #===============================================================================
  31. #===============================================================================
  32.     $candle_rect.each {|sprite|
  33.         if sprite.bitmap
  34.           sprite.visible = false
  35.           sprite.ox, sprite.oy = sprite.bitmap.width/2, sprite.bitmap.height/2
  36.         end}
  37.   else
  38.     # 释放黑色画面和所有烛光
  39.     $black_rect.dispose
  40.     $candle_rect.each {|sprite| sprite.dispose}
  41.     $game_lighterlist.clear
  42.   end
  43. end
  44. #--------------------------------------------------------------------------
  45. # ● 设置有烛光的角色
  46. #     candle_index : 烛光编号
  47. #     object       : 角色编号,可以为数字或是数字数组
  48. #--------------------------------------------------------------------------
  49. def candles(candle_index, object)
  50.   $game_lighterlist ||= []
  51.   $game_lighterlist[candle_index] ||= []
  52.   if object.is_a?(Integer)
  53.     $game_lighterlist[candle_index] << object
  54.   elsif object.is_a?(Array)
  55.     $game_lighterlist[candle_index] += object
  56.   end
  57.   # 移除重复的角色
  58.   $game_lighterlist[candle_index].uniq!
  59.   # 开启烛光功能
  60.   candlelight unless $candlelight_on
  61. end
  62. #--------------------------------------------------------------------------
  63. # ● 初始化烛光
  64. #--------------------------------------------------------------------------
  65. def initialize_candle
  66.   for k in 1...$candle_rect.size
  67.     next unless $game_lighterlist[k]
  68.     for j in $game_lighterlist[k]
  69.       ch = j == 0 ? $game_player : $game_map.events[j]
  70.       $candle_rect[k].x = ch.screen_x
  71.       $candle_rect[k].y = ch.screen_y - 16
  72.       lsx = $candle_rect[k].x - $candle_rect[k].bitmap.width / 2
  73.       lsy = $candle_rect[k].y - $candle_rect[k].bitmap.height / 2
  74.       $black_rect.bitmap.blt(lsx, lsy, $candle_rect[k].bitmap, $black_rect.bitmap.rect)
  75.     end
  76.   end
  77. end
  78. #--------------------------------------------------------------------------
  79. # ● 更新烛光
  80. #--------------------------------------------------------------------------
  81. def update_candle
  82.   if $game_lighterlist != []
  83.     light = []
  84.     $game_lighterlist.each{|i| light+=i if i}
  85.     light.each do |i|
  86.       ch = i == 0 ? $game_player : $game_map.events[i]
  87.       unless ch.moving_judge?
  88.         $black_rect.bitmap.fill_rect(0, 0, 544, 416, Color.new(200, 200, 200))
  89.         initialize_candle
  90.       end
  91.       break
  92.     end
  93.   end
  94. end

  95. class Game_Character
  96.   #--------------------------------------------------------------------------
  97.   # ● 判断移动
  98.   #--------------------------------------------------------------------------
  99.   def moving_judge?
  100.     return (!stopping? or (@pattern != @original_pattern))
  101.   end
  102. end
  103. class Game_Map
  104.   #--------------------------------------------------------------------------
  105.   # ● 刷新烛光
  106.   #--------------------------------------------------------------------------
  107.   alias update_candle_system update
  108.   def update
  109.     if $candlelight_on
  110.       update_candle
  111.       $candlelight_on = false unless $game_switches[CANDLE_SWITCH]
  112.       candlelight(false) unless $candlelight_on
  113.     end
  114.     update_candle_system
  115.   end
  116. end   
  117. class Scene_Map < Scene_Base
  118.   #--------------------------------------------------------------------------
  119.   # ● 生成烛光
  120.   #--------------------------------------------------------------------------
  121.   alias candle_system_start start
  122.   def start
  123.     candle_system_start
  124.     candlelight if $candlelight_on
  125.     initialize_candle if $candlelight_on
  126.   end
  127. end
复制代码


RGSS类:
Game_Character
Game_Map
  alias update_candle_system update
Scene_Map
  alias candle_system_start start
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
614
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

2
发表于 2008-6-12 16:38:32 | 只看该作者
沙发?
很好很强大的脚本啊~~~
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

3
发表于 2008-6-12 18:57:36 | 只看该作者
个人感觉还是就主角有光就好了……

继续期待第一种……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
4
发表于 2008-6-12 20:17:01 | 只看该作者
感觉可以做成迷雾系统 {/se}
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

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

贵宾

5
 楼主| 发表于 2008-6-12 20:18:35 | 只看该作者
以下引用越前リョーマ于2008-6-12 10:57:36的发言:
继续期待第一种……

在事件裡面設定就行了
candle(1, 0)

其他不用設就好了
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-7-27
帖子
29
6
发表于 2009-8-9 00:45:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 00:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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