赞 | 5 |
VIP | 71 |
好人卡 | 22 |
积分 | 6 |
经验 | 32145 |
最后登录 | 2013-8-9 |
在线时间 | 184 小时 |
Lv2.观梦者 天仙
- 梦石
- 0
- 星屑
- 620
- 在线时间
- 184 小时
- 注册时间
- 2008-4-15
- 帖子
- 5023
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
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]代表编号
范例:
点此下载范例
效果截图:
脚本:
- # 设置烛光种类数
- CANDLE_NUMBER = 2
- # 设置控制开关,不用的话设0
- CANDLE_SWITCH = 4
- #--------------------------------------------------------------------------
- # ● 开启或关闭烛光
- #--------------------------------------------------------------------------
- def candlelight(on=true)
- $candlelight_on = $game_switches[CANDLE_SWITCH] = on
- if on
- # 生成黑色画面
- $black_rect = Sprite.new
- $black_rect.bitmap = Bitmap.new(544, 416)
- $black_rect.bitmap.fill_rect(0, 0, 544, 416, Color.new(200, 200, 200))
- $black_rect.blend_type = 2
-
- # 黑色透明度,决定黑暗的程度
- $black_rect.opacity = 180
-
- # 生成烛光
- $candle_rect = Array.new(CANDLE_NUMBER+1).map{|sprite| sprite=Sprite.new}
- #===============================================================================]
- # 烛光在此设置
- #===============================================================================
- # 指定第一种烛光
- $candle_rect[1].bitmap = Cache.picture("write1")
-
- # 指定第二种烛光
- $candle_rect[2].bitmap = Cache.picture("write2")
- #===============================================================================
- #===============================================================================
- $candle_rect.each {|sprite|
- if sprite.bitmap
- sprite.visible = false
- sprite.ox, sprite.oy = sprite.bitmap.width/2, sprite.bitmap.height/2
- end}
- else
- # 释放黑色画面和所有烛光
- $black_rect.dispose
- $candle_rect.each {|sprite| sprite.dispose}
- $game_lighterlist.clear
- end
- end
- #--------------------------------------------------------------------------
- # ● 设置有烛光的角色
- # candle_index : 烛光编号
- # object : 角色编号,可以为数字或是数字数组
- #--------------------------------------------------------------------------
- def candles(candle_index, object)
- $game_lighterlist ||= []
- $game_lighterlist[candle_index] ||= []
- if object.is_a?(Integer)
- $game_lighterlist[candle_index] << object
- elsif object.is_a?(Array)
- $game_lighterlist[candle_index] += object
- end
- # 移除重复的角色
- $game_lighterlist[candle_index].uniq!
- # 开启烛光功能
- candlelight unless $candlelight_on
- end
- #--------------------------------------------------------------------------
- # ● 初始化烛光
- #--------------------------------------------------------------------------
- def initialize_candle
- for k in 1...$candle_rect.size
- next unless $game_lighterlist[k]
- for j in $game_lighterlist[k]
- ch = j == 0 ? $game_player : $game_map.events[j]
- $candle_rect[k].x = ch.screen_x
- $candle_rect[k].y = ch.screen_y - 16
- lsx = $candle_rect[k].x - $candle_rect[k].bitmap.width / 2
- lsy = $candle_rect[k].y - $candle_rect[k].bitmap.height / 2
- $black_rect.bitmap.blt(lsx, lsy, $candle_rect[k].bitmap, $black_rect.bitmap.rect)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 更新烛光
- #--------------------------------------------------------------------------
- def update_candle
- if $game_lighterlist != []
- light = []
- $game_lighterlist.each{|i| light+=i if i}
- light.each do |i|
- ch = i == 0 ? $game_player : $game_map.events[i]
- unless ch.moving_judge?
- $black_rect.bitmap.fill_rect(0, 0, 544, 416, Color.new(200, 200, 200))
- initialize_candle
- end
- break
- end
- end
- end
- class Game_Character
- #--------------------------------------------------------------------------
- # ● 判断移动
- #--------------------------------------------------------------------------
- def moving_judge?
- return (!stopping? or (@pattern != @original_pattern))
- end
- end
- class Game_Map
- #--------------------------------------------------------------------------
- # ● 刷新烛光
- #--------------------------------------------------------------------------
- alias update_candle_system update
- def update
- if $candlelight_on
- update_candle
- $candlelight_on = false unless $game_switches[CANDLE_SWITCH]
- candlelight(false) unless $candlelight_on
- end
- update_candle_system
- end
- end
- class Scene_Map < Scene_Base
- #--------------------------------------------------------------------------
- # ● 生成烛光
- #--------------------------------------------------------------------------
- alias candle_system_start start
- def start
- candle_system_start
- candlelight if $candlelight_on
- initialize_candle if $candlelight_on
- end
- end
复制代码
RGSS类:
Game_Character
Game_Map
alias update_candle_system update
Scene_Map
alias candle_system_start start |
|