Project1

标题: 读取电脑日期和时间 [打印本页]

作者: xiaoxiyp    时间: 2014-11-9 18:11
标题: 读取电脑日期和时间
我想在游戏里加一个脚本,如果今天是几月几日,则……这种怎么做?
还有就是每天的12:00自动触发一个事件。怎么做?最好是脚本。
作者: taroxd    时间: 2014-11-9 18:23
使用 Time.now,详情参考Ruby文档

第二个要求可以在场景的 update 中每帧判断一次时间
作者: tseyik    时间: 2014-11-9 20:00
本帖最后由 tseyik 于 2014-11-9 20:05 编辑

現実時刻(=PC時計)取得。
使用方法
在事件指令的「脚本」使用以詞法。
nrt_year(n)  :年数存入変数n
nrt_month(n)  :月数存入変数n
nrt_day(n)  :日数存入変数n
nrt_hour(n)  :時数存入変数n
nrt_min(n)  :分数存入変数n
nrt_sec(n)  :秒数存入変数n
nrt_wday(n)  :曜日数(星期)存入変数n(0星期日、1星期一...)

脚本中
#常月~秒自動取得(予設不取得)及使用変数ID
  ALLWAYS_MODE = false
  AW_MONTH = 1  #月を受け取る変数ID
  AW_DAY = 2    #日を受け取る変数ID
  AW_HOUR = 3   #時を受け取る変数ID
  AW_MIN = 4    #分を受け取る変数ID
  AW_SEC = 5    #秒を受け取る変数ID
end



  1. #==============================================================================
  2. #                   「リアル時刻の取得」(ACE) ver1.0
  3. #   製作者:奈々(なな)
  4. #   へぷたなすくろーる http://heptanas.mamagoto.com/
  5. #
  6. #   ◇使用規約
  7. #   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
  8. #   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
  9. #   その場合も元のスクリプトの作成者として名前は載せて下さい。
  10. #
  11. #------------------------------------------------------------------------------
  12. #
  13. #   現実の時刻を(PCの時計から)変数に入れることができます。
  14. #   期間限定イベントや、某ど○ぶつの森のようなシステムにどうぞ。
  15. #   
  16. #   使い方はイベントコマンドの「スクリプト」で行います。
  17. #   nrt_year(n)   変数n番に年が入ります。
  18. #   nrt_month(n)           月
  19. #   nrt_day(n)             日
  20. #   nrt_hour(n)            時
  21. #   nrt_min(n)             分
  22. #   nrt_sec(n)             秒
  23. #   nrt_wday(n)   曜日(0が日曜、1が月曜...)
  24. #   
  25. #   また、拡張機能が2つあります。(falseをtrueに変えると有効になる)
  26. #   1つはセーブ時とロード時に日数を変数に取得する機能です。
  27. #   ロード時の日数からセーブ時の日数を引けば「何日後に再開したか」が分かります。
  28. #   
  29. #   もう1つは時刻を常に変数に取得し続ける機能です。
  30. #
  31. #==============================================================================
  32. # ◇拡張機能
  33. module Nana
  34. module Real_Time
  35.   
  36.   #セーブ&ロード時に日数取得
  37.   #日数は、一ヶ月が30日、一年が360日と換算
  38.   SAVE_LOAD_MODE = false
  39.   SAVE_DAYS = 1 #セーブ時に受け取る変数ID
  40.   LOAD_DAYS = 2 #ロード時に受け取る変数ID
  41.   
  42.   #常に月~秒までを取得
  43.   ALLWAYS_MODE = false
  44.   AW_MONTH = 1  #月を受け取る変数ID
  45.   AW_DAY = 2    #日を受け取る変数ID
  46.   AW_HOUR = 3   #時を受け取る変数ID
  47.   AW_MIN = 4    #分を受け取る変数ID
  48.   AW_SEC = 5    #秒を受け取る変数ID
  49. end
  50. end

  51. if Nana::Real_Time::SAVE_LOAD_MODE == true
  52. #==============================================================================
  53. # ■ DataManager
  54. #------------------------------------------------------------------------------
  55. #  データベースとゲームオブジェクトを管理するモジュールです。ゲームで使用する
  56. # ほぼ全てのグローバル変数はこのモジュールで初期化されます。
  57. #==============================================================================
  58. module DataManager
  59.   #--------------------------------------------------------------------------
  60.   # ○ セーブの実行
  61.   #--------------------------------------------------------------------------
  62.   def self.save_game(index)
  63.     x = Time.now
  64.     $game_variables[Nana::Real_Time::SAVE_DAYS] = x.year * 360 + x.month * 30 + x.day
  65.     begin
  66.       save_game_without_rescue(index)
  67.     rescue
  68.       delete_save_file(index)
  69.       false
  70.     end
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ○ ロードの実行
  74.   #--------------------------------------------------------------------------
  75.   def self.load_game(index)
  76.     load_game_without_rescue(index) rescue false
  77.     x = Time.now
  78.     $game_variables[Nana::Real_Time::LOAD_DAYS] = x.year * 360 + x.month * 30 + x.day
  79.   end
  80. end
  81. end

  82. if Nana::Real_Time::ALLWAYS_MODE == true
  83. #==============================================================================
  84. # ■ Scene_Base
  85. #------------------------------------------------------------------------------
  86. #  ゲーム中の全てのシーンのスーパークラスです。
  87. #==============================================================================

  88. class Scene_Base
  89.   #--------------------------------------------------------------------------
  90.   # ◎ フレーム更新
  91.   #--------------------------------------------------------------------------
  92.   alias nrt_update update
  93.   def update
  94.     nrt_update
  95.     x = Time.now
  96.     $game_variables[Nana::Real_Time::AW_MONTH] = x.month
  97.     $game_variables[Nana::Real_Time::AW_DAY] = x.day
  98.     $game_variables[Nana::Real_Time::AW_HOUR] = x.hour
  99.     $game_variables[Nana::Real_Time::AW_MIN] = x.min
  100.     $game_variables[Nana::Real_Time::AW_SEC] = x.sec
  101.   end
  102. end
  103. end

  104. #==============================================================================
  105. # ■ Game_Interpreter
  106. #------------------------------------------------------------------------------
  107. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  108. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  109. #==============================================================================

  110. class Game_Interpreter
  111.   #--------------------------------------------------------------------------
  112.   # ● 年を変数に代入
  113.   #--------------------------------------------------------------------------
  114.   def nrt_year(id)
  115.     x = Time.now
  116.     $game_variables[id] = x.year
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 月を変数に代入
  120.   #--------------------------------------------------------------------------
  121.   def nrt_month(id)
  122.     x = Time.now
  123.     $game_variables[id] = x.month
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 日を変数に代入
  127.   #--------------------------------------------------------------------------
  128.   def nrt_day(id)
  129.     x = Time.now
  130.     $game_variables[id] = x.day
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 時を変数に代入
  134.   #--------------------------------------------------------------------------
  135.   def nrt_hour(id)
  136.     x = Time.now
  137.     $game_variables[id] = x.hour
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 分を変数に代入
  141.   #--------------------------------------------------------------------------
  142.   def nrt_min(id)
  143.     x = Time.now
  144.     $game_variables[id] = x.min
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 秒を変数に代入
  148.   #--------------------------------------------------------------------------
  149.   def nrt_sec(id)
  150.     x = Time.now
  151.     $game_variables[id] = x.sec
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 曜日を変数に代入(0が日曜)
  155.   #--------------------------------------------------------------------------
  156.   def nrt_wday(id)
  157.     x = Time.now
  158.     $game_variables[id] = x.wday
  159.   end
  160. end

复制代码

作者: myownroc    时间: 2014-11-9 20:11
本帖最后由 myownroc 于 2014-11-9 21:02 编辑
  1. t = Time.now.to_a # => [second, minute, hour, day, month, year, wday, yday, isdst, zone]
复制代码
说明:
second:秒
minute:分钟
hour:小时
day:日
month:月
year:年
wday:星期(星期天为0)
yday:第yday天
isdst:有无夏令时
zone:时区

这样判断日期:
  1. if t[3] == day && t[4] == month
  2. end
复制代码
12:00触发事件就要用一个并行事件
事件的第一项内容为脚本:
  1. @h = Time.now.to_a[2]
  2. @m = Time.now.to_a[1]
复制代码
然后用条件分歧,选脚本:
  1. @h == 12 && @m == 0
复制代码
进行判断




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