Project1

标题: 全局时间变量(仿牧场物语?)更新为2.0 增加昼夜系统 [打印本页]

作者: 塑望    时间: 2009-5-19 07:48
标题: 全局时间变量(仿牧场物语?)更新为2.0 增加昼夜系统
本帖最后由 塑望 于 2009-7-3 12:52 编辑

效果:年,月,天,时,分,秒全部可以挂上变量 直接可以在如11点11分11秒开启某事件


默认是50号开关 开启/关闭 时间窗口



效果图


2009.05.19更新日志:
  1,直接可以在脚本定义所有内容。初始时间只需在地图定义个变量数值即可,因为算法已经代入到脚本里。修改运算幅度是脚本39行
  2,优化下。初始时间为星期一.0点0分0秒.添加日期功能(如年,月)自行添加

2009.07.03更新日志:
  1,添加昼夜版.往下拉


直接MAIN前插入
  1. #--------------------------------------------------------------------------
  2.   # 使用方法:打开50号(默认)开启时间功能,关闭50号则窗口关闭
  3.   #
  4.   # 如当周六晚8点 某商店才会开门(某事件在指定时间触发)
  5.   #
  6.   #定义时间算法在脚本39行
  7.   #                                       66RPG 沉默一秒钟(塑望)
  8.   #                                       Blog:hi.baidu.com/yuilife
  9.   #转载请保留以上信息
  10.   #--------------------------------------------------------------------------
  11. class Window_Time < Window_Base
  12.   
  13.   $时间窗口开关 = 50 #时间的开关
  14.   #----------以上为开关----------#
  15.   #----------以下为变量----------#
  16.   $天 = 49 #天的变量
  17.   $时 = 48 #时的变量
  18.   $分 = 47 #分的变量
  19.   $秒 = 46 #秒的变量
  20.   
  21.   #--------------------------------------------------------------------------
  22.   # ● 初始化对像
  23.   #--------------------------------------------------------------------------
  24.   def initialize
  25.     super(0, 0, 250, 55) #窗口坐标以及大小
  26.     self.contents = Bitmap.new(width - 32, height - 32)
  27.     self.opacity = 0
  28.     refresh
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● 刷新  
  32.   #--------------------------------------------------------------------------
  33.   def refresh
  34.     if $game_switches[$时间窗口开关]
  35.     self.opacity = 255
  36.     self.contents.font.color = system_color
  37.     self.contents.font.size = 18

  38.          $game_variables[$秒] += 0.2#日期运算速度这里改.秒的运算

  39.    if $game_variables[$秒] >= 60
  40.      $game_variables[$秒] = 0
  41.      $game_variables[$分] += 1
  42.    end
  43.    
  44.    if $game_variables[$分] >= 60
  45.      $game_variables[$分] = 0
  46.      $game_variables[$时] += 1
  47.    end
  48.    
  49.    if $game_variables[$时] >= 24
  50.      $game_variables[$时] = 0
  51.      $game_variables[$天] += 1
  52.    end
  53.       if $game_variables[$天] >= 8
  54.      $game_variables[$天] = 1
  55.    end
  56.   self.contents.clear
  57.     if $game_variables[$时] >= 0 and $game_variables[$时] <= 12
  58.       self.contents.draw_text(4, -2, 120, 32, "AM")
  59.     elsif $game_variables[$时] >= 12 and $game_variables[$时] <= 24
  60.       self.contents.draw_text(4, -2, 120, 32, "PM")
  61.     end
  62.     self.contents.font.color = system_color
  63.     text = sprintf("星期"+"%01d  %02d:%02d:%02d", $game_variables[$天], $game_variables[$时], $game_variables[$分], $game_variables[$秒])
  64.     self.contents.font.color = normal_color
  65.     self.contents.draw_text(0, -2, 250, 32, text, 1)
  66.   else
  67.    self.contents.clear
  68.     self.opacity = 0
  69.   end
  70. end
  71. #--------------------------------------------------------------------------
  72.   # ● 刷新画面
  73.   #--------------------------------------------------------------------------
  74.   def update
  75.     super
  76.       refresh
  77.   end
  78. end
  79. #以下请无视 =_=
  80. class Scene_Map
  81.   #--------------------------------------------------------------------------
  82.   # ● 主处理
  83.   #--------------------------------------------------------------------------
  84.   def main
  85.     # 生成活动块
  86.     @spriteset = Spriteset_Map.new
  87.     # 生成信息窗口
  88.     @message_window = Window_Message.new
  89.     @time_window = Window_Time.new
  90.     $game_variables[$天] = 1
  91.     # 执行过渡
  92.     Graphics.transition
  93.     # 主循环
  94.     loop do
  95.       # 刷新游戏画面
  96.       Graphics.update
  97.       # 刷新输入信息
  98.       Input.update
  99.       # 刷新画面
  100.       update
  101.       # 如果画面切换的话就中断循环
  102.       if $scene != self
  103.         break
  104.       end
  105.     end
  106.     # 准备过渡
  107.     Graphics.freeze
  108.     # 释放活动块
  109.     @spriteset.dispose
  110.     # 释放信息窗口
  111.     @message_window.dispose
  112.     @time_window.dispose
  113.     # 标题画面切换中的情况下
  114.     if $scene.is_a?(Scene_Title)
  115.       # 淡入淡出画面
  116.       Graphics.transition
  117.       Graphics.freeze
  118.     end
  119.   end

  120. alias timedate_update update
  121. def update
  122.   @time_window.update
  123.    timedate_update
  124. end
  125. end
复制代码
工程(714KB):http://rpg.blue/upload_program/d ... ��作_123119477.rar(工程保留.不过里面脚本为事件关联算法.即在公共事件里定义时间算法.不推荐伸手党使用.伸手党自行复制以上脚本)

------------------------------
以下为昼夜版
----------------------------------
  1. #--------------------------------------------------------------------------
  2.   # 使用方法:打开50号(默认)开启时间功能,关闭50号则窗口关闭
  3.   #
  4.   #
  5.   #
  6.   #
  7.   #                                       66RPG 沉默一秒钟(塑望)
  8.   #                                       Blog:hi.baidu.com/yuilife
  9.   #(加入昼夜系统版。2.0版)
  10.   #转载请保留以上信息
  11.   #--------------------------------------------------------------------------
  12. class Window_Time < Window_Base
  13.   
  14.   $时间窗口开关 = 50 #时间的开关
  15.   #----------以上为开关----------#
  16.   #----------以下为变量----------#
  17.   $天 = 49 #天的变量
  18.   $时 = 48 #时的变量
  19.   $分 = 47 #分的变量
  20.   $秒 = 46 #秒的变量

  21.   $白天 = Tone.new(0,0,0,0)#白天的色调值
  22.   $晚上 = Tone.new(-100,-100,-100,0)#夜晚的色调值

  23.   HOUSE_ID = [2,3,4,5,6] #进入指定地图(ID)后不改变色调(天气).可以进行修改或添加
  24.   
  25.   #--------------------------------------------------------------------------
  26.   # ● 初始化对像
  27.   #--------------------------------------------------------------------------
  28.   def initialize
  29.     super(0, 0, 250, 55) #窗口坐标以及大小
  30.     self.contents = Bitmap.new(width - 32, height - 32)
  31.     self.opacity = 0
  32.     @id = $game_map.map_id
  33.     refresh
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 刷新  
  37.   #--------------------------------------------------------------------------
  38.   def refresh
  39.     if $game_switches[$时间窗口开关]
  40.     self.opacity = 255
  41.     self.contents.font.color = system_color
  42.     self.contents.font.size = 18
  43.          $game_variables[$秒] += 0.1#日期速度
  44.    if $game_variables[$秒] >= 60
  45.      $game_variables[$秒] = 0
  46.      $game_variables[$分] += 1
  47.    end
  48.    
  49.    if $game_variables[$分] >= 60
  50.      $game_variables[$分] = 0
  51.      $game_variables[$时] += 1
  52.    end
  53.    
  54.    if $game_variables[$时] >= 24
  55.      $game_variables[$时] = 0
  56.      $game_variables[$天] += 1
  57.    end
  58.       if $game_variables[$天] >= 8
  59.      $game_variables[$天] = 1
  60.    end
  61.     self.contents.clear  
  62.     if $game_variables[$时] >= 0 and $game_variables[$时] <= 12
  63.       $game_screen.start_tone_change($白天,0)
  64.       self.contents.draw_text(4, -2, 120, 32, "AM")
  65.     elsif $game_variables[$时] >= 12 and $game_variables[$时] <= 24
  66.       $game_screen.start_tone_change($晚上,0)
  67.       self.contents.draw_text(4, -2, 120, 32, "PM")
  68.     end
  69.     if HOUSE_ID.include?($game_map.map_id)
  70.         $game_screen.start_tone_change($白天,0)
  71.       end  
  72.     self.contents.font.color = system_color
  73.     text = sprintf("星期"+"%01d  %02d:%02d:%02d", $game_variables[$天], $game_variables[$时], $game_variables[$分], $game_variables[$秒])
  74.     self.contents.font.color = normal_color
  75.     self.contents.draw_text(0, -2, 250, 32, text, 1)
  76.   else
  77. self.contents.clear
  78.     self.opacity = 0
  79.   end
  80. end
  81. #--------------------------------------------------------------------------
  82.   # ● 刷新画面
  83.   #--------------------------------------------------------------------------
  84.   def update
  85.     super
  86.       refresh
  87.   end
  88. end
  89. #以下请无视 =_=
  90. class Scene_Map
  91.   #--------------------------------------------------------------------------
  92.   # ● 主处理
  93.   #--------------------------------------------------------------------------
  94.   def main
  95.     # 生成活动块
  96.     @spriteset = Spriteset_Map.new
  97.     # 生成信息窗口
  98.     @message_window = Window_Message.new
  99.     @time_window = Window_Time.new
  100.     $game_variables[$天] = 1
  101.     # 执行过渡
  102.     Graphics.transition
  103.     # 主循环
  104.     loop do
  105.       # 刷新游戏画面
  106.       Graphics.update
  107.       # 刷新输入信息
  108.       Input.update
  109.       # 刷新画面
  110.       update
  111.       # 如果画面切换的话就中断循环
  112.       if $scene != self
  113.         break
  114.       end
  115.     end
  116.     # 准备过渡
  117.     Graphics.freeze
  118.     # 释放活动块
  119.     @spriteset.dispose
  120.     # 释放信息窗口
  121.     @message_window.dispose
  122.     @time_window.dispose
  123.     # 标题画面切换中的情况下
  124.     if $scene.is_a?(Scene_Title)
  125.       # 淡入淡出画面
  126.       Graphics.transition
  127.       Graphics.freeze
  128.     end
  129.   end

  130. alias timedate_update update
  131. def update
  132.   @time_window.update
  133.    timedate_update
  134. end
  135. end
  136. #end
复制代码

作者: TERENCE    时间: 2009-5-19 08:19
沙发一个,事件自由度创造极高!


其实之前就想写一个跟这个相关的脚本,
只是因为懒的写就没写了@_@

作者: 后知后觉    时间: 2009-5-21 20:37
这个应该是养成、精英类游戏用的吧
RPG感觉不怎么用得上{/bz}
说起年月日
我突然想起以前的三国类的策略类游戏
好像还没见过有人用RM做这类的游戏。。。
作者: 塑望    时间: 2009-5-22 06:28
以下引用后知后觉于2009-5-21 12:37:56的发言:

这个应该是养成、精英类游戏用的吧
RPG感觉不怎么用得上
说起年月日
我突然想起以前的三国类的策略类游戏
好像还没见过有人用RM做这类的游戏。。。

不一定是养成等类的吧。RPG方面的都可以用。不过与时间挂钩的游戏都会要人命
作者: 越前リョーマ    时间: 2009-5-23 02:10
又想起以前做的牧场物语了…… - -

话说那个脚本单纯就是为了显示用的吧?
作者: 虚幻死神    时间: 2009-5-24 02:01
不错也。。。。不知道可不可以读取电脑时间的脚本。。。
作者: 塑望    时间: 2009-5-24 05:07
以下引用虚幻死神于2009-5-23 18:01:47的发言:

不错也。。。。不知道可不可以读取电脑时间的脚本。。。

最初的版本的确是与现实一样.

不过..挂个变量后.如果有个商店周六才开门,而玩家星期天的玩这个游戏... ...{/gg}
作者: 小小功夫    时间: 2009-8-5 20:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小小功夫    时间: 2009-8-5 20:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 风中承诺    时间: 2009-8-6 11:54
能否定义在某天发生事件呢?
作者: waya    时间: 2009-9-22 14:25
最初的版本的确是与现实一样.

不过..挂个变量后.如果有个商店周六才开门,而玩家星期天的玩这个游戏... ...{/gg}
塑望 发表于 2009-5-24 05:07
也可以时间段内开店8-22点相信也有趣

小小个人意见:时间流失显示能否按小时计算 看这数字飞转有点=-=吓人
作者: 塑望    时间: 2009-9-23 10:18
小小个人意见:时间流失显示能否按小时计算 看这数字飞转有点=-=吓人
waya 发表于 2009-9-22 14:25

我想你误解了什么.
工程里只是测试而已

具体见脚本39行.我有写时间流逝方法的自定义[昼夜版的见45行]

另外,变量不建议在脚本里设定数值.而是在地图事件需要时间的起始处.




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1