Project1
标题:
VX版真。烛光系统
[打印本页]
作者:
雪流星
时间:
2008-6-12 08:49
标题:
VX版真。烛光系统
本帖最后由 风雪优游 于 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
复制代码
[LINE]1,#dddddd[/LINE]
RGSS类:
Game_Character
Game_Map
alias update_candle_system update
Scene_Map
alias candle_system_start start
作者:
zh99998
时间:
2008-6-12 16:38
沙发?
很好很强大的脚本啊~~~
作者:
越前リョーマ
时间:
2008-6-12 18:57
个人感觉还是就主角有光就好了……
继续期待第一种……
作者:
火鸡三毛老大
时间:
2008-6-12 20:17
感觉可以做成迷雾系统 {/se}
作者:
雪流星
时间:
2008-6-12 20:18
以下引用
越前リョーマ于2008-6-12 10:57:36
的发言:
继续期待第一种……
在事件裡面設定就行了
candle(1, 0)
其他不用設就好了
作者:
sukalink
时间:
2009-8-9 00:45
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1