赞 | 1 |
VIP | 20 |
好人卡 | 8 |
积分 | 3 |
经验 | 6181 |
最后登录 | 2022-8-5 |
在线时间 | 271 小时 |
Lv2.观梦者 神隐的主犯
- 梦石
- 0
- 星屑
- 289
- 在线时间
- 271 小时
- 注册时间
- 2008-2-22
- 帖子
- 7691
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
先贴上范例:
http://rpg.blue/upload_program/d/八云紫_时间_104847546.rar
使用说明脚本里有说。
功能:
1. 在地图上显示 时间;
2. 在 某个 时间里调用事件, 比如 10点 的时候,说话;(举例,举例)
3. 可以计算 时间间隔,可以做出 “种树, 过 60 秒,然后摘果实” 这样的效果。
以下是代码:
- #==============================================================================
- # ■ 时间系统
- #------------------------------------------------------------------------------
- # 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
复制代码 |
|