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

Project1

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

[VX] 简易时间脚本

 关闭 [复制链接]

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

跳转到指定楼层
1
发表于 2008-10-19 20:25:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
先贴上范例:

http://rpg.blue/upload_program/d/八云紫_时间_104847546.rar

使用说明脚本里有说。

功能:
   1. 在地图上显示 时间;
   2. 在 某个 时间里调用事件, 比如 10点 的时候,说话;(举例,举例)

   

   3. 可以计算 时间间隔,可以做出 “种树, 过 60 秒,然后摘果实” 这样的效果。




以下是代码:

  1. #==============================================================================
  2. #                            ■ 时间系统
  3. #------------------------------------------------------------------------------
  4. #                             by 八云 紫
  5. #==============================================================================

  6. #==============================================================================
  7. # ■ Time_byz
  8. #------------------------------------------------------------------------------
  9. #  定义 时间相关的 信息。
  10. #==============================================================================

  11. module Time_byz
  12.   #--------------初始化定义---------------
  13.   #  起始时间 [秒,分,时,日,月,  年]
  14.   INIT_TIME = [55,58,23,28,02,2008]
  15.   #--------------时间格式定义-------------
  16.   # 时间流失方式
  17.   # true.. 按帧数的倍数流失;false.. 按现实时间流失
  18.   TIME_MODULE = true
  19.   #---------------速度定义----------------
  20.   # 流失速度(越大速度越慢)
  21.   TIME_SPEED = 60
  22.   # 流失速度单位
  23.   # 1..时;2..分;3..秒
  24.   TIME_UNIT = 3
  25.   
  26.   #---------------事件定义----------------
  27.   TIME_EVENT = {
  28.     # 事件的起始条件就是时间,但是时间的格式要与起始时间的相同。
  29.     # 事件使用的是 公共事件,为了避免使用太多的公共事件,所以增加变量操作,
  30.     # 以便于在相同的公共事件里可以使用条件分歧。
  31.     # [秒,分,时,日,月,  年] => [变量ID,变量改变后的值,公共事件ID]
  32.       [00,59,23,28,02,2008] => [1, 1, 1]
  33.   }  # 这个不要去掉
  34.   
  35.   #---------------窗口定义----------------
  36.   WINDOW_X = 0
  37.   WINDOW_Y = 0
  38.   
  39. =begin

  40.   ---------------------------------------
  41.              时间间隔的判断
  42.   ---------------------------------------
  43.   1. 首先需要先定义一个计时器
  44.     $game_system.set_byz_timer(id)
  45.     其中的 id 可以是任何数字,字符串。
  46.   2. 然后在需要计算时间间隔的地方使用 条件分歧 里的脚本, 里面可以写上
  47.     $game_system.after_time(id) > 5
  48.     这里的 id 要和定义的时候一致。 这个的意思是 时间经过 5秒后.....
  49.    
  50. =end
  51. end
  52.   
  53. #==============================================================================
  54. # ■ Game_System
  55. #------------------------------------------------------------------------------
  56. #  处理系统附属数据的类。也可执行诸如交通工具、 BGM 等管理之类的功能。
  57. # 本类的实例请参考$game_system 。
  58. #==============================================================================

  59. class Game_System
  60.   #--------------------------------------------------------------------------
  61.   # ● 定义实例变量
  62.   #--------------------------------------------------------------------------  
  63.   attr_accessor :time_now
  64.   attr_accessor :byz_timer
  65.   #--------------------------------------------------------------------------
  66.   # ● 初始化对像
  67.   #--------------------------------------------------------------------------  
  68.   alias old_initialize initialize
  69.   def initialize
  70.     if Time_byz::TIME_MODULE
  71.       year = Time_byz::INIT_TIME[5];
  72.       mon  = Time_byz::INIT_TIME[4];
  73.       day  = Time_byz::INIT_TIME[3];
  74.       hour = Time_byz::INIT_TIME[2];
  75.       min  = Time_byz::INIT_TIME[1];
  76.       sec  = Time_byz::INIT_TIME[0];
  77.       @time_now = Time.local(year, mon, day, hour, min, sec);
  78.     else
  79.       @time_now = Time.new;
  80.     end
  81.     @byz_timer = []
  82.     old_initialize
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 增加时间
  86.   #--------------------------------------------------------------------------  
  87.   def add_time(unit)
  88.     case unit
  89.     when 3
  90.       @time_now += 1;
  91.     when 2
  92.       @time_now += 60;
  93.     when 1
  94.       @time_now += 3600;
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 设定时间计时器
  99.   #--------------------------------------------------------------------------  
  100.   def set_byz_timer(id)
  101.     @byz_timer[id] = @time_now;
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 计算时间 (秒数)
  105.   #--------------------------------------------------------------------------
  106.   def after_time(id)
  107.     return 0 if @byz_timer[id] == nil;
  108.     return @time_now - @byz_timer[id];
  109.   end
  110. end
  111. #==============================================================================
  112. # ■ Window_Byz_Time
  113. #------------------------------------------------------------------------------
  114. #  调试画面、个别显示开关及变量的窗口。
  115. #==============================================================================

  116. class Window_Byz_Time < Window_Base
  117.   #--------------------------------------------------------------------------
  118.   # ● 初始化对像
  119.   #     x      : 窗口 X 座标
  120.   #     y      : 窗口 Y 座标
  121.   #--------------------------------------------------------------------------
  122.   def initialize(x, y)
  123.     super(x, y, 170, 87);
  124.     if Time_byz::TIME_MODULE
  125.       @time_speed = Time_byz::TIME_SPEED;
  126.     else
  127.       @time_speed = 60;
  128.     end
  129.     @time = @time_speed - 1;
  130.     refresh;
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 刷新
  134.   #--------------------------------------------------------------------------
  135.   def refresh
  136.     @time += 1;
  137.     if @time_speed == @time;
  138.       $game_system.add_time(Time_byz::TIME_UNIT);
  139.       draw_time($game_system.time_now);
  140.       event_run;
  141.       @time = 0;
  142.     end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 描绘
  146.   #--------------------------------------------------------------------------
  147.   def draw_time(time)
  148.     self.contents.clear;
  149.     text = $game_system.time_now.strftime("%X")
  150.     self.contents.draw_text(0, 0, 105, WLH, text, 2);
  151.     text = $game_system.time_now.strftime("%Y年%m月%d日");
  152.     self.contents.draw_text(0, 32, 170, WLH, text);
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 启动事件
  156.   #--------------------------------------------------------------------------
  157.   def event_run
  158.     array = ($game_system.time_now.to_a)[0,6];
  159.     if Time_byz::TIME_EVENT[array] != nil
  160.       unless !$scene.is_a?(Scene_Map) or $game_message.visible or $game_temp.in_battle
  161.         variables_id     = Time_byz::TIME_EVENT[array][0];
  162.         variables_number = Time_byz::TIME_EVENT[array][1];
  163.         commonevent_id   = Time_byz::TIME_EVENT[array][2];
  164.         $game_variables[variables_id] = variables_number;
  165.         $game_temp.common_event_id = commonevent_id;
  166.       end
  167.     end
  168.   end
  169. end
  170. #==============================================================================
  171. # ■ Scene_Map
  172. #------------------------------------------------------------------------------
  173. #  处理地图画面的类。
  174. #==============================================================================

  175. class Scene_Map < Scene_Base
  176.   
  177.   alias old_start start
  178.   #--------------------------------------------------------------------------
  179.   # ● 开始处理
  180.   #--------------------------------------------------------------------------
  181.   def start
  182.     old_start;
  183.     @time_window = Window_Byz_Time.new(Time_byz::WINDOW_X, Time_byz::WINDOW_Y);
  184.   end
  185.   alias old_terminate terminate
  186.   #--------------------------------------------------------------------------
  187.   # ● 结束处理
  188.   #--------------------------------------------------------------------------
  189.   def terminate
  190.     old_terminate;
  191.     @time_window.dispose;
  192.   end
  193.   alias old_update update
  194.   #--------------------------------------------------------------------------
  195.   # ● 更新画面
  196.   #--------------------------------------------------------------------------
  197.   def update
  198.     old_update;
  199.     @time_window.refresh;
  200.   end
  201. end
复制代码

《天空之城 —— 破碎的命运》

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

2
发表于 2008-10-19 20:27:19 | 只看该作者
好像说明了不能用吧?


脚本使用权归塑望所有?
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

3
 楼主| 发表于 2008-10-19 20:29:59 | 只看该作者
以下引用木葬枫于2008-10-19 12:27:19的发言:

好像说明了不能用吧?

脚本使用权归塑望所有?

[本贴由作者于 2008-10-19 12:28:03 最后编辑]


嘛,这个是 不厚道 的改进版。{/tp}

而且, 他的申请没有按照规则。(好吧,规则是在他之后定的)

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

4
发表于 2008-10-19 20:36:55 | 只看该作者
呐……那就不厚道地收下了………


回去可以种花了………
>_<
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-4
帖子
608
5
发表于 2008-10-20 02:23:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

6
 楼主| 发表于 2008-10-20 02:27:07 | 只看该作者
以下引用約束于2008-10-19 18:23:49的发言:

种八云紫-=

春天在园子播下种子,到了秋天……

什么?种出一堆八云紫? 你错了-=

其实有八云紫,八云蓝,八云橙,八云绿,八云黄……


彩虹啊????

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-4
帖子
608
7
发表于 2008-10-20 02:33:15 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-10-19
帖子
219
8
发表于 2008-10-20 02:43:55 | 只看该作者
种樱花………
种出来后折下来放主人房间里……
>_<
您所请求的网址(URL)无法获取当尝试读取以下网址(URL)时:http://zh99998.vicp.net/bbs/发生了下列的错误:无法将您输入的主机名称:zh99998.vicp.net转换成 IP 地址域名服务器返回以下讯息:Name Error: The domain name does not exist.这表示: The cache was not able to resolve the hostname presented in the URL.  Check if the address is correct.  缓存服务器无法解析您输入网址(URL)中的主机名称, 请检查该名称是否正确。本缓存服务器管理员:[email protected] Wed, 23 Sep 2009 02:56:06 GMT by squid (squid/2.7.STABLE6)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

穿越一季:朔

梦石
0
星屑
50
在线时间
333 小时
注册时间
2007-4-11
帖子
5369

贵宾

9
发表于 2008-10-20 18:18:40 | 只看该作者
{/fd}.....原来你已经发布了....话说发到技术区....

{/hx}为人民服务的好娃子..捏
6R复活?别扯淡了.

柳柳一旦接手66RPG,我果断呵呵啊。
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

10
 楼主| 发表于 2008-10-20 18:19:55 | 只看该作者
以下引用塑望于2008-10-20 10:18:40的发言:

.....原来你已经发布了....话说发到技术区....

为人民服务的好娃子..捏


技术区人少,先放在 提问区 晾几天,然后我自己再转到 技术区去。

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 10:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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