赞 | 0 |
VIP | 0 |
好人卡 | 6 |
积分 | 2 |
经验 | 8430 |
最后登录 | 2024-11-25 |
在线时间 | 91 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 153
- 在线时间
- 91 小时
- 注册时间
- 2008-7-14
- 帖子
- 113
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
前提:vx
请求:将1的脚本弄成脚本2一样在游戏中直接可视时间等信息。
谁可以给我一个烛光脚本。。66虽然有了,但是,不知道我哪里出问题了。。用脚本3,,但是烛光的效果没弄出来。。并且不能进入另一张地图的说。。
不要有脚本冲突哦!!!
最终结果是,我还要有步数的显示(显示的地方不重要。哪都可以,只是方便与否)。。也是随时可以看的类型。。
再问一个,步数也会触发某些事件,怎么弄。。。(最好是:假设a事件结束时,步数为A。那么,设定,再走B步,就可以触发另一个事件。。。
或者是:当事件a开始时,走A步,就触发另一个事件。)
1- .#==============================================================================
- # ■ Kylock的时间系统 VX 1.5
- # 6.3.2008
- #------------------------------------------------------------------------------
- # 脚本 by: Kylock
- #==============================================================================
- # 从XP版本改写,优化代码(更加兼容)
- # 这是完全时间和昼夜系统.
- # 这脚本增加了一个新窗口到游戏菜单,如果使用CMS
- # 这个脚本在它之上,以便它不会使CMS错误.
- # 如果使用战斗背景的变动的脚本,在它下面如此放置KTS
- # 那您没得到延迟口气作用在您争斗.除那之外
- # 不应该有任何其他剧本兼容性问题.
- # 我设法使这个脚本尽可能和customizable的原脚本一样
- # 虽然时间可以输出到游戏
- # 变量可以随意改变,强烈建议这样使用,以便更加容易操作
- # 事件在时间在游戏根据的修造.
- ===============================================================================
- # ● 更新日志
- #------------------------------------------------------------------------------
- # 1.0 - 开始发布.
- # 1.1 - 修正问题在战斗开始,放置这个脚本
- # 在所有战斗之下背景写Game脚本,如果使用“跳动设色”
- # 1.2 - 修正了$kts.stop和$kts.go的准确性
- # 1.3 - $kts.stop现在真实的停止一切,并且增加游戏开关为
- # 更加容易eventing。
- # 1.4 - 固定的战斗测试兼容性(模仿正常白天为战斗
- # 测试而不是黑暗一片).
- # 现在交换,并且可变量只将更新,当地图装载,以便
- # 事件不突然消失,当时间到。
- # 增加的$kts_anti_tone -回归允许相反颜色
- # 通常出现在一个被设色的屏幕。
- # 1.5 - 改写了发现的RegeXp [KTS]在映射的名字,
- # 解决错误地图是被设色的问题.
- #==============================================================================
- # ● 自动指示
- #------------------------------------------------------------------------------
- # 地图被选定作为野外是此的将影响的唯一的地图
- # 对自动定义的脚本用途.要符号化地图是“野外”,您必须
- # 以地图的名义包括[KTS].例如,您世界地图可能是
- # 名为“世界地图[KTS]”或“[KTS]世界地图”.供应被做以后在
- # 去除的脚本[KTS]从映射名字,当它另外读取
- # 脚本时.这意味着“[KTS]”在映射名字的时候不会出现弹出式
- # 窗口.
- #==============================================================================
- # ● 脚本函数调用
- #------------------------------------------------------------------------------
- # 下列是可以通过使用执行脚本命令
- # “脚本…” 命令在事件。
- # ● $kts.stop - 停止时间(能为cutscenes使用)
- # ● $kts.go - 简历计时(不要忘记使用此!)
- # ● $kts.sec(n) - 增加时间向前(n)秒
- # ● $kts.min(n) - 增加时间向前(n)分
- # ● $kts.hours(n) - 增加时间向前(n)时
- # ● $kts.days(n) - 增加时间向前(n)天
- # ● $kts.jump_to_hour(n) - 以后进步时间到指定的小时。
- # 特别有用在情况
- # 要某一事件发生在有些时光,
- # 这个命令也许导致游戏
- # 看上去冷却在几秒钟或更慢计算机。
- #==============================================================================
- # ● 数据库设定
- #------------------------------------------------------------------------------
- # 这个脚本,由defult,使用以下游戏可变量和开关:
- # 数据库变量:
- # [1]当前时间 [4]当前小时
- # [2]其次潮流 [5]当前天
- # [3]当前分钟 [6]当前天的名称
- # 数据库开关:
- # [1]在夜小时 (2200-0400) (10pm-4am)
- # [2]在黎明小时(0500-0800) (5am-8am)
- # [3]在白天小时(0900-1800) (9am-6pm)
- # [4]在日落小时(1900-2100) (7pm-9pm)
- #==============================================================================
- #==============================================================================
- # 商店变量和用户定义的设置为时间系统。
- #==============================================================================
- module KTS
- #-----------------------------------------------------------------------
- # 用户下定义的时钟设置
- #-----------------------------------------------------------------------
- # 设置时钟的速度乘算器。 1是真正的时间。 更高
- # 价值将给您一个更加快速的时钟。 缺省是100。
- SPEED = 100
- #AMPM (True: 12-小时制, False: 24-小时制)
- AMPM = false
- # 在游戏的开始设置时间.
- START_HOUR = 1
- START_DAY = 1
- #-----------------------------------------------------------------------
- # 如果您想要习惯天名字,编辑!
- #-----------------------------------------------------------------------
- DAY_NAMES = ["星期天","星期一","星期二","星期三","星期四","星期五","星期六"]
- #-----------------------------------------------------------------------
- # 设置时期
- #-----------------------------------------------------------------------
- T1 = [ 0,5 ] # 夜 #集合时期为设色作用
- T2 = [ 6,8 ] # 黎明 #[开头小时,结尾小时]为时期
- T3 = [ 9,18] # 天 #用途24小时价值时期
- T4 = [19,21] # 傍晚
- T5 = [22,24] # 夜 #<-前:夜在23:00和24:00之间
- #-----------------------------------------------------------------------
- # 设置到游戏变量选择.
- #-----------------------------------------------------------------------
- # 设置输出当前时间到游戏变量。
- DATABASE_OUTPUT = true
- # 在时间将使用的游戏变量输出。
- TIME = 1 # (时间以串格式。 Ex: "2:48 AM" or "02:48")
- SECONDS = 2
- MINUTES = 3
- HOURS = 4
- DAYS = 5
- DAYNAME = 6
- # 游戏交换用于在时间输出。
- NIGHT = 1 #这个开关是在夜小时 (2200-0400) (10pm-4am)
- DAWN = 2 #这个开关是在黎明小时 (0500-0800) (5am-8am)
- DAY = 3 #这个开关是在白天小时(0900-1800) (9am-6pm)
- SUNSET = 4 #这个开关是在日落小时(1900-2100) (7pm-9pm)
- #-----------------------------------------------------------------------
- # 设置为时间控制屏幕定色调
- #-----------------------------------------------------------------------
- # 真实的意志使能屏幕色调由脚本使用。
- USE_TONE = true
- # 设置口气的期间改变(在框架)
- FADE_LENGTH = 120
- # 定义了用于对应的时期被定义以上。
- # 红色,绿色,蓝色,灰色
- C1 = Tone.new(-187, -119, -17, 68)
- C2 = Tone.new( 17, -51, -102, 0)
- C3 = Tone.new( 0, 0, 0, 0)
- C4 = Tone.new( -68, -136, -34, 0)
- C5 = Tone.new(-187, -119, -17, 68)
- # 定义反
- A1 = Tone.new( 187, 119, 17, -68)
- A2 = Tone.new( -17, 51, 102, 0)
- A3 = Tone.new( 0, 0, 0, 0)
- A4 = Tone.new( 68, 136, 34, 0)
- A5 = Tone.new( 187, 119, 17, -68)
- end
- #==============================================================================
- # 时间系统核心引擎
- #==============================================================================
- class Kylock_Time_System
- # 设置实例变量
- def initialize
- $kts_map_data = load_data("Data/MapInfos.rvdata")
- @event_offset = (KTS::START_HOUR * 3600) + (KTS::START_DAY * 86400)
- @kts_stop = false
- $kts_event_tone = false
- $kts_battle_tone = true
- $kts_anti_tone = Tone.new(0,0,0,0)
- end
-
- # 估计当前时间和更新变量(如果使用)
- def update
- if !@kts_stop
- @total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
- @seconds = (@total_seconds) % 60
- @minutes = (@total_seconds / 60) % 60
- @hours = (@total_seconds / 3600) % 24
- @days = (@total_seconds / 86400)
- update_tint
- if KTS::DATABASE_OUTPUT
- $game_variables[KTS::TIME] = getTime
- end
- end
- end
- def update_variables
- $game_variables[KTS::SECONDS] = @seconds
- $game_variables[KTS::MINUTES] = @minutes
- $game_variables[KTS::HOURS] = @hours
- $game_variables[KTS::DAYS] = @days
- $game_variables[KTS::DAYNAME] = getDayName
- end
- def update_switches
- if @period == 1 || @period == 5
- $game_switches[KTS::NIGHT] = true
- else
- $game_switches[KTS::NIGHT] = false
- end
- if @period == 2
- $game_switches[KTS::DAWN] = true
- else
- $game_switches[KTS::DAWN] = false
- end
- if @period == 3
- $game_switches[KTS::DAY] = true
- else
- $game_switches[KTS::DAY] = false
- end
- if @period == 4
- $game_switches[KTS::SUNSET] = true
- else
- $game_switches[KTS::SUNSET] = false
- end
- end
- def getTime
- if KTS::AMPM
- # 格式化 12-小时制
- if @hours > 12
- hours1 = @hours - 12
- if hours1 > 9
- time = sprintf("%02d:%02d" + " PM", hours1, @minutes)
- else
- time = sprintf("%01d:%02d" + " PM", hours1, @minutes)
- end
- else
- if @hours > 9
- time = sprintf("%02d:%02d" + " AM", @hours, @minutes)
- else
- time = sprintf("%01d:%02d" + " AM", @hours, @minutes)
- end
- end
- return time
- else
- # 格式化 24-小时制
- time = sprintf("%02d:%02d", @hours, @minutes)
- return time
- end
- end
- #-----------------------------------------------------------------------
- # 脚本命令函数
- #-----------------------------------------------------------------------
- def stop
- @time_stopped = @total_seconds
- @kts_stop = true
- end
- def go
- total_seconds = (Graphics.frame_count * KTS::SPEED / 60) + @event_offset
- @event_offset -= (total_seconds - @time_stopped)
- @kts_stop = false
- end
- def sec(sec = 0)
- @event_offset += sec
- end
- def min(min = 0)
- @event_offset += min * 60
- end
- def hours(hours = 0)
- @event_offset += hours * 3600
- end
- def days(days = 0)
- @event_offset += days * 86400
- end
- def jump_to_hour(jhour = 0)
- while @hours != jhour
- @event_offset += 1
- $kts.update
- end
- end
- #-----------------------------------------------------------------------
- # 脚本支持/混杂作用
- #-----------------------------------------------------------------------
- def getDayName
- weekday = (@days % KTS::DAY_NAMES.length)
- return KTS::DAY_NAMES[weekday]
- end
- #-----------------------------------------------------------------------
- # 屏幕作用
- #-----------------------------------------------------------------------
- def update_tint(duration = KTS::FADE_LENGTH)
- return if $BTEST
- if KTS::USE_TONE && !$kts_event_tone && $kts_map_data[$game_map.map_id].outside_tint?
- if @hours >= KTS::T1[0] and @hours <= KTS::T1[1]
- @period = 1
- screen.start_tone_change(KTS::C1,duration)
- $kts_anti_tone = KTS::A1
- elsif @hours >= KTS::T2[0] and @hours <= KTS::T2[1]
- @period = 2
- screen.start_tone_change(KTS::C2,duration)
- $kts_anti_tone = KTS::A2
- elsif @hours >= KTS::T3[0] and @hours <= KTS::T3[1]
- @period = 3
- screen.start_tone_change(KTS::C3,duration)
- $kts_anti_tone = KTS::A3
- elsif @hours >= KTS::T4[0] and @hours <= KTS::T4[1]
- @period = 4
- screen.start_tone_change(KTS::C4,duration)
- $kts_anti_tone = KTS::A4
- elsif @hours >= KTS::T5[0] and @hours <= KTS::T5[1]
- @period = 5
- screen.start_tone_change(KTS::C5,duration)
- $kts_anti_tone = KTS::A5
- end
- else
- # 没有??如果内景
- if !$kts_map_data[$game_map.map_id].outside_tint?
- screen.start_tone_change(Tone.new(0,0,0,0),duration)
- end
- end
- end
- def screen
- if $game_temp.in_battle
- return $game_troop.screen
- else
- return $game_map.screen
- end
- end
- end
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # * 对象初始化
- #--------------------------------------------------------------------------
- alias kts_initialize initialize
- def initialize
- $kts.update_switches if !@kts_stop && KTS::DATABASE_OUTPUT
- $kts.update_variables if !@kts_stop && KTS::DATABASE_OUTPUT
- kts_initialize
- end
- end
- #==============================================================================
- # 当一张新的地图被装载时,立即更新屏幕。
- #==============================================================================
- class Game_Map
- alias kts_setup setup
- def setup(map_id)
- kts_setup(map_id)
- $kts_event_tone = false
- $kts.update
- $kts.update_tint(0)
- end
- end
- #==============================================================================
- # 当战斗开始时,立即更新屏幕。
- #==============================================================================
- class Spriteset_Battle
- alias kts_create_battleback create_battleback
- def create_battleback
- $kts.update_tint(0)
- kts_create_battleback
- end
- end
- #==============================================================================
- # 如果事件设色屏幕,临时地使自动色调失去能力。
- #==============================================================================
- class Game_Interpreter
- alias kts_Interpreter_command_223 command_223
- def command_223
- $kts_event_tone = true
- kts_Interpreter_command_223
- end
- end
- #==============================================================================
- # 集成时间系统游戏系统。
- #==============================================================================
- class Game_System
- # inits KTS 对象
- alias kts_initialize initialize
- def initialize
- $kts=Kylock_Time_System.new
- kts_initialize
- end
- # 更新KTS每个游戏框架
- alias kts_update update
- def update
- $kts.update
- kts_update
- end
- end
- #==============================================================================
- # 扫瞄映射名字对于色调
- #==============================================================================
- class RPG::MapInfo
- def name # 定义防止地点脚本任何内
- return @name.gsub(/\[.*\]/) {""} # 托架,包括托架
- end
- def original_name
- return @name
- end
- def outside_tint?
- return @name.scan(/\[KTS\]/).size > 0
- # RegeXp : 回归@name.scan (/[\ KTS]/) .size > 0
- end
- end
- #==============================================================================
- # 设定时间窗口为菜单。
- #==============================================================================
- class Window_KTS < Window_Base
- def initialize(x, y)
- super(x, y, 160, WLH + 32)
- refresh
- end
- def refresh
- self.contents.clear
- self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)
- end
- def update
- super
- $kts.update
- self.contents.clear
- self.contents.draw_text(4, -6, 120, 32, $kts.getTime, 2)
- end
- end
- #==============================================================================
- # 增加时间窗口到菜单。
- #==============================================================================
- class Scene_Menu < Scene_Base
- alias kts_start start
- def start
- kts_start
- @kts_window = Window_KTS.new(0,305)
- end
- alias kts_terminate terminate
- def terminate
- kts_terminate
- @kts_window.dispose
- end
- alias kts_update update
- def update
- kts_update
- @kts_window.update
- end
- end
- #==============================================================================
- # 节省并且装载游戏时间到/从保存游戏文件。
- #==============================================================================
- class Scene_File
- alias kts_write_save_data write_save_data
- def write_save_data(file)
- kts_write_save_data(file)
- Marshal.dump($kts, file)
- end
- alias kts_read_save_data read_save_data
- def read_save_data(file)
- kts_read_save_data(file)
- $kts = Marshal.load(file)
- end
- end
复制代码
2.
- #==============================================================================
- # ■ 时间系统
- #------------------------------------------------------------------------------
- # by 八云 紫
- #==============================================================================
- #==============================================================================
- # ■ Time_byz
- #------------------------------------------------------------------------------
- # 定义 时间相关的 信息。
- #==============================================================================
- module Time_byz
- #--------------初始化定义---------------
- # 起始时间 [秒,分,时,日,月, 年]
- INIT_TIME = [55,58,23,28,02,2008]
- #--------------时间格式定义-------------
- # 时间流失方式
- # true.. 按帧数的倍数流失;false.. 按现实时间流失
- TIME_MODULE = true
- #---------------速度定义----------------
- # 流失速度(越大速度越慢)
- TIME_SPEED = 60
- # 流失速度单位
- # 1..时;2..分;3..秒
- TIME_UNIT = 3
-
- #---------------事件定义----------------
- TIME_EVENT = {
- # 事件的起始条件就是时间,但是时间的格式要与起始时间的相同。
- # 事件使用的是 公共事件,为了避免使用太多的公共事件,所以增加变量操作,
- # 以便于在相同的公共事件里可以使用条件分歧。
- # [秒,分,时,日,月, 年] => [变量ID,变量改变后的值,公共事件ID]
- [00,59,23,28,02,2008] => [1, 1, 1]
- } # 这个不要去掉
-
- #---------------窗口定义----------------
- WINDOW_X = 0
- WINDOW_Y = 0
-
- =begin
- ---------------------------------------
- 时间间隔的判断
- ---------------------------------------
- 1. 首先需要先定义一个计时器
- $game_system.set_byz_timer(id)
- 其中的 id 可以是任何数字,字符串。
- 2. 然后在需要计算时间间隔的地方使用 条件分歧 里的脚本, 里面可以写上
- $game_system.after_time(id) > 5
- 这里的 id 要和定义的时候一致。 这个的意思是 时间经过 5秒后.....
-
- =end
- end
-
- #==============================================================================
- # ■ Game_System
- #------------------------------------------------------------------------------
- # 处理系统附属数据的类。也可执行诸如交通工具、 BGM 等管理之类的功能。
- # 本类的实例请参考$game_system 。
- #==============================================================================
- class Game_System
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_accessor :time_now
- attr_accessor :byz_timer
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- alias old_initialize initialize
- def initialize
- if Time_byz::TIME_MODULE
- year = Time_byz::INIT_TIME[5];
- mon = Time_byz::INIT_TIME[4];
- day = Time_byz::INIT_TIME[3];
- hour = Time_byz::INIT_TIME[2];
- min = Time_byz::INIT_TIME[1];
- sec = Time_byz::INIT_TIME[0];
- @time_now = Time.local(year, mon, day, hour, min, sec);
- else
- @time_now = Time.new;
- end
- @byz_timer = []
- old_initialize
- end
- #--------------------------------------------------------------------------
- # ● 增加时间
- #--------------------------------------------------------------------------
- def add_time(unit)
- case unit
- when 3
- @time_now += 1;
- when 2
- @time_now += 60;
- when 1
- @time_now += 3600;
- end
- end
- #--------------------------------------------------------------------------
- # ● 设定时间计时器
- #--------------------------------------------------------------------------
- def set_byz_timer(id)
- @byz_timer[id] = @time_now;
- end
- #--------------------------------------------------------------------------
- # ● 计算时间 (秒数)
- #--------------------------------------------------------------------------
- def after_time(id)
- return 0 if @byz_timer[id] == nil;
- return @time_now - @byz_timer[id];
- end
- end
- #==============================================================================
- # ■ Window_Byz_Time
- #------------------------------------------------------------------------------
- # 调试画面、个别显示开关及变量的窗口。
- #==============================================================================
- class Window_Byz_Time < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # x : 窗口 X 座标
- # y : 窗口 Y 座标
- #--------------------------------------------------------------------------
- def initialize(x, y)
- super(x, y, 170, 87);
- if Time_byz::TIME_MODULE
- @time_speed = Time_byz::TIME_SPEED;
- else
- @time_speed = 60;
- end
- @time = @time_speed - 1;
- refresh;
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- @time += 1;
- if @time_speed == @time;
- $game_system.add_time(Time_byz::TIME_UNIT);
- draw_time($game_system.time_now);
- event_run;
- @time = 0;
- end
- end
- #--------------------------------------------------------------------------
- # ● 描绘
- #--------------------------------------------------------------------------
- def draw_time(time)
- self.contents.clear;
- text = $game_system.time_now.strftime("%X")
- self.contents.draw_text(0, 0, 105, WLH, text, 2);
- text = $game_system.time_now.strftime("%Y年%m月%d日");
- self.contents.draw_text(0, 32, 170, WLH, text);
- end
- #--------------------------------------------------------------------------
- # ● 启动事件
- #--------------------------------------------------------------------------
- def event_run
- array = ($game_system.time_now.to_a)[0,6];
- if Time_byz::TIME_EVENT[array] != nil
- unless !$scene.is_a?(Scene_Map) or $game_message.visible or $game_temp.in_battle
- variables_id = Time_byz::TIME_EVENT[array][0];
- variables_number = Time_byz::TIME_EVENT[array][1];
- commonevent_id = Time_byz::TIME_EVENT[array][2];
- $game_variables[variables_id] = variables_number;
- $game_temp.common_event_id = commonevent_id;
- end
- end
- end
- end
- #==============================================================================
- # ■ Scene_Map
- #------------------------------------------------------------------------------
- # 处理地图画面的类。
- #==============================================================================
- class Scene_Map < Scene_Base
-
- alias old_start start
- #--------------------------------------------------------------------------
- # ● 开始处理
- #--------------------------------------------------------------------------
- def start
- old_start;
- @time_window = Window_Byz_Time.new(Time_byz::WINDOW_X, Time_byz::WINDOW_Y);
- end
- alias old_terminate terminate
- #--------------------------------------------------------------------------
- # ● 结束处理
- #--------------------------------------------------------------------------
- def terminate
- old_terminate;
- @time_window.dispose;
- end
- alias old_update update
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- old_update;
- @time_window.refresh;
- end
- end
复制代码
3
- # 设置烛光种类数
- 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 = 500
-
- # 生成烛光
- $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
复制代码
本贴由论坛斑竹八云紫结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^ |
|