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

Project1

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

[已经解决] 请教游戏日历问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8378
在线时间
1505 小时
注册时间
2016-4-8
帖子
209

开拓者

跳转到指定楼层
1
发表于 2016-4-18 17:24:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x


请教各位大神,如何与关联变量起来?我想用年、月、日、时间来控制事件。

日历.zip (1.44 MB, 下载次数: 39)

Lv1.梦旅人

梦石
0
星屑
185
在线时间
54 小时
注册时间
2012-12-28
帖子
31
2
发表于 2016-4-23 15:24:45 | 只看该作者
11區有人寫了
  1. =begin  =======================================================================
  2.   ☆ カレンダー機能追加  by 白雪レイカ
  3. -------------------------------------------------------------------------------
  4.   プロジェクトに「時刻」の概念を加えます。
  5.   時間帯でBGMや画面の色調が切り替わり、季節ごとにランダムで天候が変化します。
  6.   主なデータはすべて変数に格納されるので、
  7.   それを使ってイベントを分岐させたりできます。
  8. -------------------------------------------------------------------------------

  9.   ◆使い方
  10.     基本的に設定項目をカスタマイズして導入するだけなのですが、
  11.     一部説明が必要な部分があるのでご説明します。
  12.    
  13.     ○時間帯について
  14.    
  15.        3:00 ~  5:59 => 早朝 (:early_morning)
  16.        6:00 ~ 10:59 => 朝   (:morning)
  17.       11:00 ~ 15:59 => 昼   (:noon)
  18.       16:00 ~ 18:59 => 夕方 (:evening)
  19.       19:00 ~ 22:59 => 夜   (:night)
  20.       23:00 ~  2:59 => 深夜 (:midnight)
  21.       
  22.       となっています。
  23.       
  24.    
  25.     ○時間帯ごとのBGM切り替え
  26.       マップ設定の「BGMの自動切換え」にチェックが入っているときのみ有効。
  27.       マップのメモ欄に以下のように記述してください。
  28.       
  29.       <早朝(またはearly) ファイル名, 音量, ピッチ>
  30.       
  31.       これで早朝のBGMが設定できます。
  32.       早朝 の部分を 朝(またはmorning)、昼(またはnoon)、夕方(またはevening)、
  33.       夜(またはnight)、深夜(またはmid)とすることで
  34.       対応する時間帯のBGMを設定することができます。
  35.       ファイル名の拡張子は省略することができます(例 Town1)。
  36.       
  37.       
  38.     ○イベントでの時刻etc設定
  39.       イベントコマンド「スクリプト」から実行
  40.       
  41.         set_time(hour, min)
  42.           # 時刻を hour:min に設定します。
  43.           # このメソッドによって日数が経過することはありません。
  44.         
  45.         set_date(month, date, day)
  46.           # カレンダーを month月 date日 day曜日に設定します。
  47.           # 曜日の経過とか完全に無視してしまうので非推奨です。
  48.           # 曜日はシンボルで設定します。
  49.          
  50.           # 日曜 => :Sun  月曜 => :Mon  火曜 => :Tue
  51.           # 水曜 => :Wed  木曜 => :Thr  金曜 => :Fri
  52.           # 土曜 => :Sat
  53.          
  54.         set_year(year)
  55.           # カレンダーをyear年に設定します。
  56.           # 上と同じく非推奨です。
  57.         
  58.         shift_date(date)
  59.           # カレンダーをdate日だけ進めます。
  60.           # こちらは曜日もちゃんと加味します。
  61.          
  62.         shift_month(month)
  63.           # カレンダーをmonth月だけ進め、
  64.           # 進めた月の1日に設定します。
  65.            
  66.          shift_year(year)
  67.           # カレンダーを指定した年数経過させます。
  68.           # shift_monthと違って日付は変わりません。
  69.          
  70.         shift_date_to(month, date[, year])
  71.           # カレンダーを指定した日付(year年 month月 date日)まで進めます。
  72.           # yearを省略した場合は現在の年と同じ値になります。
  73.           # 現在の日付よりも前の日付を設定すると、
  74.           # その日まで時間が巻き戻ります。
  75.            
  76.          set_weather(weather)
  77.           # 天候を設定します。
  78.           # weatherはシンボルで指定します。
  79.          
  80.           # 晴れ => :fine  雨 => :rain   雪 => :snow
  81.           # 雷 => :thunder 嵐 => :storm  晴れ(夜) => :star
  82.           # 吹雪 => :s_storm
  83.          
  84.   ◆おことわり
  85.     改造・再配布等自由です。
  86.     再配布の際には作者の明示をお願いします。
  87.     バグを発見したら速やかにご報告ください。
  88.    
  89. =end
  90. #==============================================================================
  91. # ■ 設定項目
  92. #==============================================================================
  93. module WhiteSnow

  94.   # ↓↓ここから初期設定↓↓

  95.   INITAL_MIN = 0
  96.     # ゲーム開始時の「分」の値

  97.   INITAL_HOUR = 7
  98.     # ゲーム開始時の「時」の値

  99.   INITAL_DATE = 6
  100.     # ゲーム開始時の「日」の値

  101.   INITAL_DAY = :Sun
  102.     # ゲーム開始時の「曜日」の値

  103.   INITAL_MONTH = 4
  104.     # ゲーム開始時の「月」の値

  105.   INITAL_YEAR = 395
  106.     # ゲーム開始時の「年」の値

  107.   # ↑↑ここまで初期設定↑↑


  108.   TIME_COUNT_FORBID_SID = 10
  109.     # 時間経過を禁止するスイッチID

  110.   TONE_CHANGE_FORBID_SID = 11
  111.     # 時間経過による画面の色調変更を禁止するスイッチID

  112.   WEATHER_EFFECT_FORBID_SID = 12
  113.     # 天候エフェクトを無効化するスイッチID

  114.   CALENDER_WINDOW_HIDE_SID = 13
  115.     # 日付ウィンドウを消すスイッチID
  116.     # ウィンドウが消えていても止めない限り時間は経過します

  117.   INSIDE_FLAG_SID = 14
  118.     # 屋内フラグを立てるスイッチID
  119.     # 色調変更、天候エフェクトをまとめて無効化します

  120.   WEATHER_BGS_ENABLE = true
  121.     # 天候によるBGS機能を使用するか
  122.     # trueで使用する、falseで使用しないとなります

  123.   INSIDE_BGS_TYPE = 1
  124.     # 屋内フラグまたは天候エフェクト無効フラグのスイッチがONになった
  125.     # ときのBGSのタイプ
  126.     # BGS機能を使用するときのみ有効
  127.     # 0で音を消す、1で音量を60%にして流す、2でそのまま流す
  128.     # となります。

  129.   WEATHER_BGS_DISABLE = 15
  130.     # 天候BGS機能停止スイッチ

  131.     # このスイッチIDがONのときは天候BGSは流れません。
  132.     # ただしこのスイッチ単体では、今流れているBGSの再生を止める効果はありません。
  133.     # あくまで一時的にBGS機能を無効化するだけです。
  134.     # 屋内フラグを切り替えるスイッチと一緒に使うなりしてください。

  135.     # また、このスイッチがOFFになっても止まっていたBGSが再び流れるような
  136.     # ことはありません。


  137.   MIN_STORE_VID = 101
  138.     # 現在の「分」の値が格納される変数ID

  139.   HOUR_STORE_VID = 102
  140.     # 現在の「時」の値が格納される変数ID

  141.   TIME_ZONE_STORE_VID = 103
  142.     # 現在の「時間帯」が格納される変数ID
  143.     # 早朝に0、朝に1、昼に2、夕方に3、夜に4、深夜で5になります。

  144.   DATE_STORE_VID = 104
  145.     # 現在の「日」の値が格納される変数ID

  146.   DAY_STORE_VID = 105
  147.     # 現在の「曜日」が格納される変数ID
  148.     # 日曜のとき0、月曜のとき1、と続き土曜のとき6になります。

  149.   MONTH_STORE_VID = 106
  150.     # 現在の「月」の値が格納される変数ID

  151.   SEASON_STORE_VID = 107
  152.     # 現在の「季節」が格納される変数ID
  153.     # 春のとき0、夏のとき1、秋のとき2、冬のとき3になります。

  154.   WEATHER_STORE_VID = 108
  155.     # 現在の「天候」が格納される変数ID
  156.     # 晴れのとき0、雨のとき1、雪のとき2、雷のとき3、
  157.     # 嵐のとき4、晴れ(夜)のとき5、吹雪のとき6になります。

  158.   YEAR_STORE_VID = 109
  159.     # 現在の「年」の値が格納される変数ID


  160.   EARLY_MORNING_SCREEN_TONE = [15, 10, 0, 0]
  161.     # 早朝の画面の色調
  162.     # R, G, B, Darkの順に指定してください。

  163.   MORNING_SCREEN_TONE = [0, 0, 0, 0]
  164.     # 朝の画面の色調
  165.     # R, G, B, Darkの順に指定してください。

  166.   NOON_SCREEN_TONE = [15, 15, 15, 0]
  167.     # 昼の画面の色調
  168.     # R, G, B, Darkの順に指定してください。

  169.   AFTERNOON_SCREEN_TONE = [32, -8, -32, 16]
  170.     # 夕方の画面の色調
  171.     # R, G, B, Darkの順に指定してください。

  172.   NIGHT_SCREEN_TONE = [-64, -64, -16, 32]
  173.     # 夜の画面の色調
  174.     # R, G, B, Darkの順に指定してください。

  175.   MIDNIGHT_SCREEN_TONE = [-72, -72, -20, 48]
  176.     # 深夜の画面の色調
  177.     # R, G, B, Darkの順に指定してください。


  178.   DAYS_TABLE = {0 => 31, 1 => 31, 2 => 28, 3 => 31, 4 => 30, 5 => 31, 6 => 30,
  179.                 7 => 31, 8 => 31, 9 => 30, 10 => 31, 11 => 30, 12 => 31}
  180.     # 月毎の日数のテーブル
  181.     # 基本的に変更しないでください。


  182.     # 以下天候リスト

  183.     # 設定例
  184.     # WEATHER = {:icon => 天候アイコンインデックス,
  185.     #            :weather => [天候エフェクトの種類, 強さ]},
  186.     #            :bgs => ["ファイル名", 音量, ピッチ](設定しない場合はnil),
  187.     #
  188.     # 天候エフェクトの種類  :noneで「なし」、:rainで「雨」、
  189.     #                       :stormで「嵐」、:snowで「雪」となります。

  190.   FINE = {:icon => 1, :weather => [:none, 0],
  191.           :bgs => nil}
  192.     # 天候:晴れ

  193.   RAIN = {:icon => 2, :weather => [:rain, 5],
  194.           :bgs => ["Rain", 50, 90]}
  195.     # 天候:雨

  196.   SNOW = {:icon => 3, :weather => [:snow, 4],
  197.           :bgs => nil}
  198.     # 天候:雪

  199.   THUNDER = {:icon => 4, :weather => [:storm, 4],
  200.              :bgs => ["Storm", 60, 75],

  201.              :flash => [255, 255, 200, 180, 12],
  202.              :se => ["Thunder9", 80, 95]}
  203.     # 天候:雷
  204.     # 雷エフェクト用の設定項目について
  205.     # :flash => [(フラッシュの色)R, G, B, Alpha, フラッシュの長さ]
  206.     # :se => フラッシュの後に鳴るSE

  207.   STORM = {:icon => 5, :weather => [:storm, 8],
  208.            :bgs => ["Storm", 70, 100]}
  209.     # 天候:嵐

  210.   STAR = {:icon => 6, :weather => [:none, 0],
  211.           :bgs => nil}
  212.     # 天候:晴れ(夜)

  213.   S_STORM = {:icon => 7, :weather => [:snow, 9],
  214.              :bgs => ["Wind", 70, 95]}
  215.     # 天候:吹雪
  216. end

  217. #==============================================================================
  218. # ■ Calender
  219. #------------------------------------------------------------------------------
  220. #  カレンダーのクラスです。
  221. #==============================================================================

  222. class Calender
  223.   #--------------------------------------------------------------------------
  224.   # ● 公開インスタンス変数
  225.   #--------------------------------------------------------------------------
  226.   attr_accessor :count
  227.   attr_accessor :min
  228.   attr_accessor :hour
  229.   attr_accessor :date
  230.   attr_accessor :day
  231.   attr_accessor :month
  232.   attr_accessor :season
  233.   attr_accessor :year
  234.   attr_accessor :weather
  235.   attr_accessor :weather_count
  236.   attr_accessor :time_zone
  237.   attr_reader   :interpreter
  238.   attr_accessor :thunder_count
  239.   #--------------------------------------------------------------------------
  240.   # ● オブジェクト初期化
  241.   #--------------------------------------------------------------------------
  242.   def initialize
  243.     @count = 0
  244.     @weather = :fine
  245.     @interpreter = Game_Interpreter.new
  246.     init_calender
  247.     change_weather
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● カレンダーの初期化
  251.   #--------------------------------------------------------------------------
  252.   def init_calender
  253.     [url=home.php?mod=space&uid=25749]@min[/url]    = WhiteSnow::INITAL_MIN
  254.     @hour   = WhiteSnow::INITAL_HOUR
  255.     @date   = WhiteSnow::INITAL_DATE
  256.     [url=home.php?mod=space&uid=11519]@day[/url]    = WhiteSnow::INITAL_DAY
  257.     [url=home.php?mod=space&uid=26122]@Month[/url]  = WhiteSnow::INITAL_MONTH
  258.     @year   = WhiteSnow::INITAL_YEAR
  259.     get_time_zone

  260.     $game_variables[WhiteSnow::MIN_STORE_VID] = @min
  261.     $game_variables[WhiteSnow::HOUR_STORE_VID] = @hour
  262.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date

  263.     case @month
  264.     when 1..2
  265.       [url=home.php?mod=space&uid=31546]@season[/url] = :Winter
  266.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  267.     when 3..5
  268.       [url=home.php?mod=space&uid=31546]@season[/url] = :Spring
  269.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  270.     when 6..8
  271.       [url=home.php?mod=space&uid=31546]@season[/url] = :Summer
  272.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  273.     when 9..11
  274.       @season = :Autumn
  275.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  276.     when 12
  277.       @season = :Winter
  278.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  279.     end

  280.     case @day
  281.     when :Sun
  282.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  283.     when :Mon
  284.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  285.     when :Tue
  286.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  287.     when :Wed
  288.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  289.     when :Thr
  290.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  291.     when :Fri
  292.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  293.     when :Sat
  294.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  295.     end
  296.     $game_variables[WhiteSnow::MONTH_STORE_VID] = @month
  297.     $game_variables[WhiteSnow::YEAR_STORE_VID] = @year
  298.     change_tone_by_calender
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 時間帯の取得
  302.   #--------------------------------------------------------------------------
  303.   def get_time_zone
  304.     case @hour
  305.     when 0..2
  306.       @time_zone = :midnight
  307.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 5
  308.     when 3..5
  309.       @time_zone = :early_morning
  310.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 0
  311.     when 6..10
  312.       @time_zone = :morning
  313.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 1
  314.     when 11..15
  315.       @time_zone = :noon
  316.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 2
  317.     when 16..18
  318.       @time_zone = :evening
  319.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 3
  320.     when 19..22
  321.       @time_zone = :night
  322.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 4
  323.     when 23..24
  324.       @time_zone = :midnight
  325.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 5
  326.     end
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 天候カウントの取得
  330.   #--------------------------------------------------------------------------
  331.   def randomize_weather_count
  332.     @weather_count = p_ex_rand(40, 100) + (109 - p_ex_rand(40, 110)) + 90
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 画面の色調変更
  336.   #--------------------------------------------------------------------------
  337.   def change_tone_by_calender(dur = 60)
  338.     return if $game_switches[WhiteSnow::TONE_CHANGE_FORBID_SID]
  339.     return if $game_switches[WhiteSnow::INSIDE_FLAG_SID]
  340.     case @time_zone
  341.     when :early_morning
  342.       tone = WhiteSnow::EARLY_MORNING_SCREEN_TONE
  343.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  344.     when :morning
  345.       tone = WhiteSnow::MORNING_SCREEN_TONE
  346.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  347.     when :noon
  348.       tone = WhiteSnow::NOON_SCREEN_TONE
  349.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  350.     when :evening
  351.       tone = WhiteSnow::AFTERNOON_SCREEN_TONE
  352.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  353.     when :night
  354.       tone = WhiteSnow::NIGHT_SCREEN_TONE
  355.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  356.     when :midnight
  357.       tone = WhiteSnow::MIDNIGHT_SCREEN_TONE
  358.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  359.     end
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● 天候の変更
  363.   #--------------------------------------------------------------------------
  364.   def change_weather
  365.     srand
  366.     p_weather = @weather
  367.     case @month
  368.     when 1
  369.       case rand
  370.       when 0...0.2
  371.         if @hour >= 3 and @hour < 18
  372.           @weather = :fine
  373.         else
  374.           @weather = :star
  375.         end
  376.       when 0.2...0.8
  377.         @weather = :snow
  378.       when 0.8...1
  379.         @weather = :s_storm
  380.       end
  381.     when 2
  382.       case rand
  383.       when 0...0.3
  384.         if @hour >= 3 and @hour < 18
  385.           @weather = :fine
  386.         else
  387.           @weather = :star
  388.         end
  389.       when 0.3...0.8
  390.         @weather = :snow
  391.       when 0.8...0.9
  392.         @weather = :rain
  393.       when 0.9...1
  394.         @weather = :s_storm
  395.       end
  396.     when 3..4
  397.       case rand
  398.       when 0...0.8
  399.         if @hour >= 3 and @hour < 18
  400.           @weather = :fine
  401.         else
  402.           @weather = :star
  403.         end
  404.       when 0.8...0.9
  405.         @weather = :rain
  406.       when 0.9...1
  407.         @weather = :storm
  408.       end
  409.     when 5
  410.       case rand
  411.       when 0...0.7
  412.         if @hour >= 3 and @hour < 18
  413.           @weather = :fine
  414.         else
  415.           @weather = :star
  416.         end
  417.       when 0.7...0.8
  418.         @weather = :rain
  419.       when 0.8...0.9
  420.         @weather = :thunder
  421.       when 0.9...1
  422.         @weather = :storm
  423.       end
  424.     when 6
  425.       case rand
  426.       when 0...0.4
  427.         if @hour >= 3 and @hour < 18
  428.           @weather = :fine
  429.         else
  430.           @weather = :star
  431.         end
  432.       when 0.4...0.8
  433.         @weather = :rain
  434.       when 0.8...0.9
  435.         @weather = :thunder
  436.       when 0.9...1
  437.         @weather = :storm
  438.       end
  439.     when 7..8
  440.       case rand
  441.       when 0...0.6
  442.         if @hour >= 3 and @hour < 18
  443.           @weather = :fine
  444.         else
  445.           @weather = :star
  446.         end
  447.       when 0.6...0.7
  448.         @weather = :rain
  449.       when 0.7...0.9
  450.         @weather = :storm
  451.       when 0.9...1
  452.         @weather = :thunder
  453.       end
  454.     when 9..10
  455.       case rand
  456.       when 0...0.6
  457.         if @hour >= 3 and @hour < 18
  458.           @weather = :fine
  459.         else
  460.           @weather = :star
  461.         end
  462.       when 0.6...0.8
  463.         @weather = :storm
  464.       when 0.8...0.9
  465.         @weather = :rain
  466.       when 0.9...1
  467.         @weather = :thunder
  468.       end
  469.     when 11
  470.       if @date < 25
  471.         case rand
  472.         when 0...0.7
  473.           if @hour >= 3 and @hour < 18
  474.             @weather = :fine
  475.           else
  476.             @weather = :star
  477.           end
  478.         when 0.7...0.8
  479.           @weather = :storm
  480.         when 0.8...0.9
  481.           @weather = :rain
  482.         when 0.9...1
  483.           @weather = :thunder
  484.         end
  485.       else
  486.         case rand
  487.         when 0...0.6
  488.           if @hour >= 3 and @hour < 18
  489.             @weather = :fine
  490.           else
  491.             @weather = :star
  492.           end
  493.         when 0.6...0.7
  494.           @weather = :storm
  495.         when 0.7...0.8
  496.           @weather = :rain
  497.         when 0.8...0.9
  498.           @weather = :thunder
  499.         when 0.9...1
  500.           @weather = :snow
  501.         end
  502.       end
  503.     when 12
  504.       case rand
  505.       when 0...0.2
  506.         if @hour >= 3 and @hour < 18
  507.           @weather = :fine
  508.         else
  509.           @weather = :star
  510.         end
  511.       when 0.2...0.8
  512.         @weather = :snow
  513.       when 0.8...1
  514.         @weather = :s_storm
  515.       end
  516.     end
  517.     if @weather != p_weather
  518.       RPG::BGS.fade(10)
  519.       perform_weather_effect
  520.     end
  521.     randomize_weather_count
  522.   end
  523.   #--------------------------------------------------------------------------
  524.   # ● 天候エフェクト
  525.   #--------------------------------------------------------------------------
  526.   def perform_weather_effect(dur = 30)
  527.     return unless SceneManager.scene_is?(Scene_Map)
  528.     return if $game_switches[WhiteSnow::WEATHER_EFFECT_FORBID_SID]
  529.     return if $game_switches[WhiteSnow::INSIDE_FLAG_SID]
  530.     case @weather
  531.     when :fine
  532.       weather = WhiteSnow::FINE
  533.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  534.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  535.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  536.         bgs.play
  537.       end
  538.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 0

  539.     when :rain
  540.       weather = WhiteSnow::RAIN
  541.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  542.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  543.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  544.         bgs.play
  545.       end
  546.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 1

  547.     when :snow
  548.       weather = WhiteSnow::SNOW
  549.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  550.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  551.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  552.         bgs.play
  553.       end
  554.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 2

  555.     when :thunder
  556.       weather = WhiteSnow::THUNDER
  557.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  558.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  559.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  560.         bgs.play
  561.       end
  562.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 3

  563.     when :storm
  564.       weather = WhiteSnow::STORM
  565.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  566.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  567.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  568.         bgs.play
  569.       end
  570.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 4

  571.     when :star
  572.       weather = WhiteSnow::STAR
  573.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  574.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  575.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  576.         bgs.play
  577.       end
  578.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 5

  579.     when :s_storm
  580.       weather = WhiteSnow::S_STORM
  581.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  582.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  583.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  584.         bgs.play
  585.       end
  586.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 6
  587.     end
  588.   end
  589.   #--------------------------------------------------------------------------
  590.   # ● 屋内BGSの演奏
  591.   #--------------------------------------------------------------------------
  592.   def play_inside_bgs
  593.     case @weather
  594.     when :fine
  595.       weather = WhiteSnow::FINE
  596.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  597.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.6, weather[:bgs][2])
  598.         bgs.play
  599.       end

  600.     when :rain
  601.       weather = WhiteSnow::RAIN
  602.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  603.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  604.         bgs.play
  605.       end

  606.     when :snow
  607.       weather = WhiteSnow::SNOW
  608.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  609.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  610.         bgs.play
  611.       end

  612.     when :thunder
  613.       weather = WhiteSnow::THUNDER
  614.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  615.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  616.         bgs.play
  617.       end

  618.     when :storm
  619.       weather = WhiteSnow::STORM
  620.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  621.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  622.         bgs.play
  623.       end

  624.     when :star
  625.       weather = WhiteSnow::STAR
  626.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  627.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  628.         bgs.play
  629.       end

  630.     when :s_storm
  631.       weather = WhiteSnow::S_STORM
  632.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  633.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  634.         bgs.play
  635.       end
  636.     end
  637.   end
  638.   #--------------------------------------------------------------------------
  639.   # ● 天候「雷」エフェクトの実行
  640.   #--------------------------------------------------------------------------
  641.   def perform_thunder_effect(r, g, b, alpha, dur)
  642.     @interpreter.perform_flash(r, g, b, alpha, dur)
  643.   end
  644.   #--------------------------------------------------------------------------
  645.   # ● 曜日の更新
  646.   #--------------------------------------------------------------------------
  647.   def shift_day
  648.     case @day
  649.     when :Sun
  650.       [url=home.php?mod=space&uid=11519]@day[/url] = :Mon
  651.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  652.     when :Mon
  653.       [url=home.php?mod=space&uid=11519]@day[/url] = :Tue
  654.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  655.     when :Tue
  656.       @day = :Wed
  657.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  658.     when :Wed
  659.       @day = :Thr
  660.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  661.     when :Thr
  662.       @day = :Fri
  663.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  664.     when :Fri
  665.       @day = :Sat
  666.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  667.     when :Sat
  668.       @day = :Sun
  669.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  670.     end
  671.   end
  672.   #--------------------------------------------------------------------------
  673.   # ● 曜日を戻す
  674.   #--------------------------------------------------------------------------
  675.   def back_day
  676.     case @day
  677.     when :Sun
  678.       @day = :Sat
  679.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  680.     when :Sat
  681.       @day = :Fri
  682.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  683.     when :Fri
  684.       @day = :Thr
  685.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  686.     when :Thr
  687.       @day = :Wed
  688.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  689.     when :Wed
  690.       @day = :Tue
  691.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  692.     when :Tue
  693.       @day = :Mon
  694.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  695.     when :Mon
  696.       @day = :Sun
  697.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  698.     end
  699.   end
  700.   #--------------------------------------------------------------------------
  701.   # ● 月の更新
  702.   #--------------------------------------------------------------------------
  703.   def shift_month
  704.     case @month
  705.     when 1
  706.       return unless @date > 31
  707.       [url=home.php?mod=space&uid=26122]@Month[/url] += 1
  708.       @date = 1
  709.     when 2
  710.       return unless @date > 28
  711.       [url=home.php?mod=space&uid=26122]@Month[/url] += 1
  712.       @season = :Spring
  713.       @date = 1
  714.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  715.     when 3
  716.       return unless @date > 31
  717.       @month += 1
  718.       @date = 1
  719.     when 4
  720.       return unless @date > 30
  721.       @month += 1
  722.       @date = 1
  723.     when 5
  724.       return unless @date > 31
  725.       @month += 1
  726.       @season = :Summer
  727.       @date = 1
  728.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  729.     when 6
  730.       return unless @date > 30
  731.       @month += 1
  732.       @date = 1
  733.     when 7
  734.       return unless @date > 31
  735.       @month += 1
  736.       @date = 1
  737.     when 8
  738.       return unless @date > 31
  739.       @month += 1
  740.       @season = :Autumn
  741.       @date = 1
  742.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  743.     when 9
  744.       return unless @date > 30
  745.       @month += 1
  746.       @date = 1
  747.     when 10
  748.       return unless @date > 31
  749.       @month += 1
  750.       @date = 1
  751.     when 11
  752.       return unless @date > 30
  753.       @month += 1
  754.       @season = :Winter
  755.       @date = 1
  756.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  757.     when 12
  758.       return unless @date > 31
  759.       @year += 1
  760.       @month = 1
  761.       @date = 1
  762.       $game_variables[WhiteSnow::YEAR_STORE_VID] = @year
  763.     end
  764.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  765.     $game_variables[WhiteSnow::MONTH_STORE_VID] = @month
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ● 月を戻す
  769.   #--------------------------------------------------------------------------
  770.   def back_month
  771.     return unless @date < 1
  772.     case @month
  773.     when 1
  774.       @month = 12
  775.       @date = 31
  776.       @year -= 1
  777.       $game_variables[WhiteSnow::YEAR_STORE_VID] = @year
  778.     when 2
  779.       @month -= 1
  780.       @date = 31
  781.     when 3
  782.       @month -= 1
  783.       @date = 28
  784.       @season = :Winter
  785.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  786.     when 4
  787.       @month -= 1
  788.       @date = 31
  789.     when 5
  790.       @month -= 1
  791.       @date = 30
  792.     when 6
  793.       @month -= 1
  794.       @date = 31
  795.       @season = :Spring
  796.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  797.     when 7
  798.       @month -= 1
  799.       @date = 30
  800.     when 8
  801.       @month -= 1
  802.       @date = 31
  803.     when 9
  804.       @month -= 1
  805.       @date = 31
  806.       @season = :Summer
  807.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  808.     when 10
  809.       @month -= 1
  810.       @date = 30
  811.     when 11
  812.       @month -= 1
  813.       @date = 31
  814.     when 12
  815.       @month -= 1
  816.       @date = 30
  817.       @season = :Autumn
  818.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  819.     end
  820.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  821.     $game_variables[WhiteSnow::MONTH_STORE_VID] = @month
  822.   end
  823.   #--------------------------------------------------------------------------
  824.   # ● 日付を進める
  825.   #--------------------------------------------------------------------------
  826.   def shift_date
  827.     @date += 1
  828.     shift_day
  829.     shift_month
  830.     $game_variables[WhiteSnow::HOUR_STORE_VID] = @hour
  831.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  832.   end
  833.   #--------------------------------------------------------------------------
  834.   # ● 日付を戻す
  835.   #--------------------------------------------------------------------------
  836.   def back_date
  837.     @date += 1
  838.     back_day
  839.     back_month
  840.     $game_variables[WhiteSnow::HOUR_STORE_VID] = @hour
  841.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  842.   end
  843.   #--------------------------------------------------------------------------
  844.   # ● 指定された日時と現在の日時の差を求める
  845.   #--------------------------------------------------------------------------
  846.   def days_dif(y, m, d)
  847.     table = WhiteSnow::DAYS_TABLE
  848.     dy_n = (@year - 1) * 365
  849.     dy_s = (y - 1) * 365
  850.     dm_n = 0 ; 1.upto(@month - 1){|n| dm_n += table[n]} unless @month == 1
  851.     dm_s = 0 ; 1.upto(m - 1){|n| dm_s += table[n]} unless m == 1
  852.     d_n = @date - 1
  853.     d_s = d - 1
  854.     n = dy_n + dm_n + d_n
  855.     s = dy_s + dm_s + d_s
  856.     return s - n
  857.   end
  858. end

  859. #==============================================================================
  860. # ■ Window_Calender
  861. #------------------------------------------------------------------------------
  862. #  カレンダーの内容を表示するウィンドウです。
  863. #==============================================================================

  864. class Window_Calender < Window_Base
  865.   #--------------------------------------------------------------------------
  866.   # ● オブジェクト初期化
  867.   #--------------------------------------------------------------------------
  868.   def initialize(x = Graphics.width - 208, y = 0, w = 208)
  869.     super(x, y, w, fitting_height(2))
  870.     refresh
  871.   end
  872.   #--------------------------------------------------------------------------
  873.   # ● フレーム更新
  874.   #--------------------------------------------------------------------------
  875.   def update
  876.     self.visible = false if $game_switches[WhiteSnow::CALENDER_WINDOW_HIDE_SID]
  877.     super
  878.     refresh if $calender.count == 0
  879.   end
  880.   #--------------------------------------------------------------------------
  881.   # ● リフレッシュ
  882.   #--------------------------------------------------------------------------
  883.   def refresh
  884.     contents.clear
  885.     draw_year
  886.     draw_date
  887.     draw_time
  888.     draw_weather_icon
  889.   end
  890.   #--------------------------------------------------------------------------
  891.   # ● 年・季節の描画
  892.   #--------------------------------------------------------------------------
  893.   def draw_year
  894.     season = $calender.season.to_s
  895.     season.gsub!("Spring"){"春"}
  896.     season.gsub!("Summer"){"夏"}
  897.     season.gsub!("Autumn"){"秋"}
  898.     season.gsub!("Winter"){"冬"}
  899.     draw_text(0, 0, contents_width, line_height, "#{$calender.year}" + "年")
  900.     draw_text(0, 0, contents_width, line_height, season, 1)
  901.   end
  902.   #--------------------------------------------------------------------------
  903.   # ● 月・日付・曜日の描画
  904.   #--------------------------------------------------------------------------
  905.   def draw_date
  906.     w = contents_width
  907.     h = line_height
  908.     month = $calender.month
  909.     if (0..9).to_a.include?(month)
  910.       month = "0" + month.to_s
  911.     else
  912.       month = month.to_s
  913.     end
  914.     date = $calender.date
  915.     if (0..9).to_a.include?(date)
  916.       date = "0" + date.to_s
  917.     else
  918.       date = date.to_s
  919.     end
  920.     day = $calender.day.to_s
  921.     day.gsub!("Sun"){"\\c[2]日\\c[0]"}
  922.     day.gsub!("Mon"){"月"}
  923.     day.gsub!("Tue"){"火"}
  924.     day.gsub!("Wed"){"水"}
  925.     day.gsub!("Thr"){"木"}
  926.     day.gsub!("Fri"){"金"}
  927.     day.gsub!("Sat"){"土"}
  928.     draw_text_ex(0, h, month + "月" + date + "日" + "(" + day + ")")
  929.   end
  930.   #--------------------------------------------------------------------------
  931.   # ● 時・分の描画
  932.   #--------------------------------------------------------------------------
  933.   def draw_time
  934.     w = contents_width - 6
  935.     h = line_height
  936.     hour = "#{$calender.hour}"
  937.     min = $calender.min
  938.     if (0..9).to_a.include?(min)
  939.       min = "0" + min.to_s
  940.     else
  941.       min = min.to_s
  942.     end
  943.     draw_text(0, h, w, h, hour + ":" + min, 2)
  944.   end
  945.   #--------------------------------------------------------------------------
  946.   # ● 天候アイコンの描画
  947.   #--------------------------------------------------------------------------
  948.   def draw_weather_icon
  949.     case $calender.weather
  950.     when :fine
  951.       icon_index = WhiteSnow::FINE[:icon]
  952.     when :rain
  953.       icon_index = WhiteSnow::RAIN[:icon]
  954.     when :snow
  955.       icon_index = WhiteSnow::SNOW[:icon]
  956.     when :thunder
  957.       icon_index = WhiteSnow::THUNDER[:icon]
  958.     when :storm
  959.       icon_index = WhiteSnow::STORM[:icon]
  960.     when :star
  961.       icon_index = WhiteSnow::STAR[:icon]
  962.     when :s_storm
  963.       icon_index = WhiteSnow::S_STORM[:icon]
  964.     end
  965.     draw_icon(icon_index, contents_width - 30, 0)
  966.   end
  967. end

  968. #==============================================================================
  969. # ■ Window_MenuCalender
  970. #------------------------------------------------------------------------------
  971. #  カレンダーの内容を表示するウィンドウです(メニュー画面用)。
  972. #==============================================================================

  973. class Window_MenuCalender < Window_Base
  974.   #--------------------------------------------------------------------------
  975.   # ● オブジェクト初期化
  976.   #--------------------------------------------------------------------------
  977.   def initialize(x = Graphics.width - 220, y = 0, w = 220)
  978.     super(x, y, w, fitting_height(3))
  979.     refresh
  980.   end
  981.   #--------------------------------------------------------------------------
  982.   # ● リフレッシュ
  983.   #--------------------------------------------------------------------------
  984.   def refresh
  985.     contents.clear
  986.     draw_year
  987.     draw_date
  988.     draw_time
  989.     draw_weather_icon
  990.   end
  991.   #--------------------------------------------------------------------------
  992.   # ● 年の描画
  993.   #--------------------------------------------------------------------------
  994.   def draw_year
  995.     season = $calender.season.to_s
  996.     season.gsub!("Spring"){"春"}
  997.     season.gsub!("Summer"){"夏"}
  998.     season.gsub!("Autumn"){"秋"}
  999.     season.gsub!("Winter"){"冬"}
  1000.     draw_text(0, 0, contents_width, line_height, "#{$calender.year}" + "年")
  1001.     draw_text(0, 0, contents_width + 12, line_height, season, 1)
  1002.   end
  1003.   #--------------------------------------------------------------------------
  1004.   # ● 月・日付・曜日の描画
  1005.   #--------------------------------------------------------------------------
  1006.   def draw_date
  1007.     w = contents_width
  1008.     h = line_height
  1009.     month = $calender.month
  1010.     if (0..9).to_a.include?(month)
  1011.       month = "0" + month.to_s
  1012.     else
  1013.       month = month.to_s
  1014.     end
  1015.     date = $calender.date
  1016.     if (0..9).to_a.include?(date)
  1017.       date = "0" + date.to_s
  1018.     else
  1019.       date = date.to_s
  1020.     end
  1021.     day = $calender.day.to_s
  1022.     day.gsub!("Sun"){"\\c[2]日\\c[0]"}
  1023.     day.gsub!("Mon"){"月"}
  1024.     day.gsub!("Tue"){"火"}
  1025.     day.gsub!("Wed"){"水"}
  1026.     day.gsub!("Thr"){"木"}
  1027.     day.gsub!("Fri"){"金"}
  1028.     day.gsub!("Sat"){"土"}
  1029.     draw_text_ex(12, h, month + "月" + date + "日" + "(" + day + ")")
  1030.   end
  1031.   #--------------------------------------------------------------------------
  1032.   # ● 時・分の描画
  1033.   #--------------------------------------------------------------------------
  1034.   def draw_time
  1035.     w = contents_width - 12
  1036.     h = line_height
  1037.     hour = "#{$calender.hour}"
  1038.     min = $calender.min
  1039.     if (0..9).to_a.include?(min)
  1040.       min = "0" + min.to_s
  1041.     else
  1042.       min = min.to_s
  1043.     end
  1044.     draw_text(0, h * 2, w, h, hour + ":" + min, 2)
  1045.   end
  1046.   #--------------------------------------------------------------------------
  1047.   # ● 天候アイコンの描画
  1048.   #--------------------------------------------------------------------------
  1049.   def draw_weather_icon
  1050.     case $calender.weather
  1051.     when :fine
  1052.       icon_index = WhiteSnow::FINE[:icon]
  1053.     when :rain
  1054.       icon_index = WhiteSnow::RAIN[:icon]
  1055.     when :snow
  1056.       icon_index = WhiteSnow::SNOW[:icon]
  1057.     when :thunder
  1058.       icon_index = WhiteSnow::THUNDER[:icon]
  1059.     when :storm
  1060.       icon_index = WhiteSnow::STORM[:icon]
  1061.     when :star
  1062.       icon_index = WhiteSnow::STAR[:icon]
  1063.     when :s_storm
  1064.       icon_index = WhiteSnow::S_STORM[:icon]
  1065.     end
  1066.     draw_icon(icon_index, contents_width - 30, 0)
  1067.   end
  1068. end

  1069. #==============================================================================
  1070. # ■ Scene_Map
  1071. #------------------------------------------------------------------------------
  1072. #  マップ画面の処理を行うクラスです。
  1073. #==============================================================================

  1074. class Scene_Map < Scene_Base
  1075.   #--------------------------------------------------------------------------
  1076.   # ● 全ウィンドウの作成
  1077.   #--------------------------------------------------------------------------
  1078.   alias calender_create_all_windows create_all_windows
  1079.   def create_all_windows
  1080.     calender_create_all_windows
  1081.     create_calender_window
  1082.   end
  1083.   #--------------------------------------------------------------------------
  1084.   # ● 日付表示ウィンドウの作成
  1085.   #--------------------------------------------------------------------------
  1086.   def create_calender_window
  1087.     @calender_window = Window_Calender.new
  1088.   end
  1089. end

  1090. #==============================================================================
  1091. # ■ Scene_Base
  1092. #------------------------------------------------------------------------------
  1093. #  ゲーム中の全てのシーンのスーパークラスです。
  1094. #==============================================================================

  1095. class Scene_Base
  1096.   #--------------------------------------------------------------------------
  1097.   # ● フレーム更新(基本)
  1098.   #--------------------------------------------------------------------------
  1099.   alias calender_update_basic update_basic
  1100.   def update_basic
  1101.     calender_update_basic
  1102.     update_calender
  1103.   end
  1104.   #--------------------------------------------------------------------------
  1105.   # ● 時刻の更新
  1106.   #--------------------------------------------------------------------------
  1107.   def update_calender
  1108.     return unless SceneManager.scene_is?(Scene_Map)
  1109.     return if $game_switches[WhiteSnow::TIME_COUNT_FORBID_SID]
  1110.     $calender.count += 1
  1111.     if $calender.weather == :thunder and !($game_switches[WhiteSnow::WEATHER_EFFECT_FORBID_SID] or $game_switches[WhiteSnow::INSIDE_FLAG_SID])
  1112.       $calender.thunder_count ||= [Graphics.frame_rate * 5 + (rand * Graphics.frame_rate * 10).floor, false]
  1113.       $calender.thunder_count[0] -= 1
  1114.       if $calender.thunder_count[1]
  1115.         if $calender.thunder_count[0] == 0
  1116.           se = RPG::SE.new(WhiteSnow::THUNDER[:se][0], WhiteSnow::THUNDER[:se][1], WhiteSnow::THUNDER[:se][2])
  1117.           se.play
  1118.           $calender.thunder_count = nil
  1119.         end
  1120.       elsif $calender.thunder_count[0] < 12 + rand(43)
  1121.         flash = WhiteSnow::THUNDER[:flash]
  1122.         $calender.perform_thunder_effect(flash[0], flash[1], flash[2], flash[3], flash[4])
  1123.         $calender.thunder_count[1] = true
  1124.       end
  1125.     else
  1126.       $calender.thunder_count = nil
  1127.     end
  1128.     if $calender.count % Graphics.frame_rate == 0
  1129.       $calender.min += 1
  1130.       $calender.count = 0
  1131.       $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.min
  1132.       $calender.weather_count -= 1
  1133.       $calender.change_weather if $calender.weather_count <= 0
  1134.     end
  1135.     if $calender.min == 60
  1136.       $calender.hour += 1
  1137.       $calender.min = 0
  1138.       if $calender.hour >= 3 and $calender.hour < 19
  1139.         $calender.weather = :fine if $calender.weather == :star
  1140.       else
  1141.         $calender.weather = :star if $calender.weather == :fine
  1142.       end
  1143.       $calender.get_time_zone
  1144.       $calender.change_tone_by_calender
  1145.       $game_map.autoplay
  1146.       $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.min
  1147.       $game_variables[WhiteSnow::HOUR_STORE_VID] = $calender.hour
  1148.     end
  1149.     if $calender.hour == 24
  1150.       $calender.hour = 0
  1151.       $calender.shift_date
  1152.     end
  1153.   end
  1154. end

  1155. #==============================================================================
  1156. # ■ Scene_Menu
  1157. #------------------------------------------------------------------------------
  1158. #  メニュー画面の処理を行うクラスです。
  1159. #==============================================================================

  1160. class Scene_Menu
  1161.   #--------------------------------------------------------------------------
  1162.   # ● 開始処理
  1163.   #--------------------------------------------------------------------------
  1164.   alias calender_start start
  1165.   def start
  1166.     calender_start
  1167.     create_calender_window
  1168.   end
  1169.   #--------------------------------------------------------------------------
  1170.   # ● 日付ウィンドウの作成
  1171.   #--------------------------------------------------------------------------
  1172.   def create_calender_window
  1173.     x = 0
  1174.     w = @gold_window.width
  1175.     @calender_window = Window_MenuCalender.new(x, 0, w)
  1176.     @calender_window.y = Graphics.height - @gold_window.height - @calender_window.height
  1177.   end
  1178. end

  1179. #==============================================================================
  1180. # ■ DataManager
  1181. #------------------------------------------------------------------------------
  1182. #  データベースとゲームオブジェクトを管理するモジュールです。ゲームで使用する
  1183. # ほぼ全てのグローバル変数はこのモジュールで初期化されます。
  1184. #==============================================================================

  1185. module DataManager
  1186.   #--------------------------------------------------------------------------
  1187.   # ● エイリアス用特異メソッド
  1188.   #--------------------------------------------------------------------------
  1189.   class << self
  1190.     alias :calender_create_game_objects :create_game_objects
  1191.     alias :calender_extract_save_contents :extract_save_contents
  1192.   end
  1193.   #--------------------------------------------------------------------------
  1194.   # ● 各種ゲームオブジェクトの作成
  1195.   #--------------------------------------------------------------------------
  1196.   def self.create_game_objects
  1197.     calender_create_game_objects
  1198.     $calender = Calender.new
  1199.   end
  1200.   #--------------------------------------------------------------------------
  1201.   # ● セーブ内容の作成 (再定義)
  1202.   #--------------------------------------------------------------------------
  1203.   def self.make_save_contents
  1204.     contents = {}
  1205.     contents[:system]           = $game_system
  1206.     contents[:timer]            = $game_timer
  1207.     contents[:message]          = $game_message
  1208.     contents[:switches]         = $game_switches
  1209.     contents[:variables]        = $game_variables
  1210.     contents[:self_switches]    = $game_self_switches
  1211.     contents[:actors]           = $game_actors
  1212.     contents[:party]            = $game_party
  1213.     contents[:troop]            = $game_troop
  1214.     contents[:map]              = $game_map
  1215.     contents[:player]           = $game_player
  1216.     contents[:calender]         = $calender
  1217.     contents
  1218.   end
  1219.   #--------------------------------------------------------------------------
  1220.   # ● セーブ内容の作成
  1221.   #--------------------------------------------------------------------------
  1222.   def self.extract_save_contents(contents)
  1223.     calender_extract_save_contents(contents)
  1224.     $calender = contents[:calender]
  1225.   end
  1226. end

  1227. #==============================================================================
  1228. # ■ Game_Interpreter
  1229. #------------------------------------------------------------------------------
  1230. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  1231. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  1232. #==============================================================================

  1233. class Game_Interpreter
  1234.   #--------------------------------------------------------------------------
  1235.   # ● 画面の色調変更(引数指定)
  1236.   #--------------------------------------------------------------------------
  1237.   def change_tone(r, g, b, gray = 0, dur = 60)
  1238.     tone = Tone.new(r, g, b, gray)
  1239.     screen.start_tone_change(tone, dur)
  1240.   end
  1241.   #--------------------------------------------------------------------------
  1242.   # ● 天候の変更(引数指定)
  1243.   #--------------------------------------------------------------------------
  1244.   def change_weather(type, power, dur = 30)
  1245.     return if $game_party.in_battle
  1246.     screen.change_weather(type, power, dur)
  1247.   end
  1248.   #--------------------------------------------------------------------------
  1249.   # ● 時間を設定
  1250.   #--------------------------------------------------------------------------
  1251.   def set_time(hour, min)
  1252.     hour = 23 if hour > 23
  1253.     hour = 0 if hour < 0
  1254.     min = 59 if min > 59
  1255.     min = 0 if min < 0
  1256.     $calender.hour = hour
  1257.     $calender.min = min
  1258.     $calender.get_time_zone
  1259.     $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.min
  1260.     $game_variables[WhiteSnow::HOUR_STORE_VID] = $calender.hour
  1261.     $game_variables[WhiteSnow::DATE_STORE_VID] = $calender.date
  1262.     $game_map.autoplay
  1263.     $calender.change_weather
  1264.     $calender.change_tone_by_calender
  1265.     if $calender.hour >= 3 and $calender.hour < 19
  1266.       $calender.weather = :fine if $calender.weather == :star
  1267.     else
  1268.       $calender.weather = :star if $calender.weather == :fine
  1269.     end
  1270.   end
  1271.   #--------------------------------------------------------------------------
  1272.   # ● 日付を設定
  1273.   #--------------------------------------------------------------------------
  1274.   def set_date(month, date, day)
  1275.     $calender.month = month
  1276.     $calender.date = date
  1277.     $calender.day = day
  1278.     $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.month
  1279.     $game_variables[WhiteSnow::DATE_STORE_VID] = $calender.date
  1280.     case $calender.day
  1281.     when :Sun
  1282.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  1283.     when :Mon
  1284.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  1285.     when :Tue
  1286.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  1287.     when :Wed
  1288.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  1289.     when :Thr
  1290.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  1291.     when :Fri
  1292.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  1293.     when :Sat
  1294.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  1295.     end

  1296.     case $calender.month
  1297.     when 1..2
  1298.       $calender.season = :Winter
  1299.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  1300.     when 3..5
  1301.       $calender.season = :Spring
  1302.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  1303.     when 6..8
  1304.       $calender.season = :Summer
  1305.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  1306.     when 9..11
  1307.       $calender.season = :Autumn
  1308.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  1309.     when 12
  1310.       $calender.season = :Winter
  1311.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  1312.     end
  1313.     $calender.change_weather
  1314.   end
  1315.   #--------------------------------------------------------------------------
  1316.   # ● 年を設定
  1317.   #--------------------------------------------------------------------------
  1318.   def set_year(year)
  1319.     $calender.year = year
  1320.     $game_variables[WhiteSnow::YEAR_STORE_VID] = year
  1321.     $calender.change_weather
  1322.   end
  1323.   #--------------------------------------------------------------------------
  1324.   # ● 天候を設定
  1325.   #--------------------------------------------------------------------------
  1326.   def set_weather(weather)
  1327.     $calender.weather = weather
  1328.     $calender.randomize_weather_count
  1329.     $calender.perform_weather_effect
  1330.     case weather
  1331.     when :fine
  1332.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 0
  1333.     when :rain
  1334.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 1
  1335.     when :snow
  1336.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 2
  1337.     when :thunder
  1338.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 3
  1339.     when :storm
  1340.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 4
  1341.     when :star
  1342.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 5
  1343.     when :s_storm
  1344.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 6
  1345.     end
  1346.   end
  1347.   #--------------------------------------------------------------------------
  1348.   # ● 天候エフェクトを発生させる
  1349.   #--------------------------------------------------------------------------
  1350.   def perform_weather_effect
  1351.     $calender.perform_weather_effect
  1352.   end
  1353.   #--------------------------------------------------------------------------
  1354.   # ● 画面のフラッシュ(引数指定)
  1355.   #--------------------------------------------------------------------------
  1356.   def perform_flash(r, g, b, alpha, dur = 12)
  1357.     color = Color.new(r, g, b, alpha)
  1358.     screen.start_flash(color, dur)
  1359.   end
  1360.   #--------------------------------------------------------------------------
  1361.   # ● 日付を進める
  1362.   #--------------------------------------------------------------------------
  1363.   def shift_date(num)
  1364.     num.times{$calender.shift_date}
  1365.     $calender.change_weather
  1366.   end
  1367.   #--------------------------------------------------------------------------
  1368.   # ● 月を進める
  1369.   #--------------------------------------------------------------------------
  1370.   def shift_month(num)
  1371.     table = WhiteSnow::DAYS_TABLE
  1372.     days = table[$calender.month] - $calender.date + 1
  1373.     for i in 1..num
  1374.       days += table[($calender.month + i) % 12]
  1375.     end
  1376.     days.times{$calender.shift_date}
  1377.     $calender.change_weather
  1378.   end
  1379.   #--------------------------------------------------------------------------
  1380.   # ● 年を進める
  1381.   #--------------------------------------------------------------------------
  1382.   def shift_year(num)
  1383.     (num * 365).times{$calender.shift_date}
  1384.     $calender.change_weather
  1385.   end
  1386.   #--------------------------------------------------------------------------
  1387.   # ● 指定した日まで日付を進める
  1388.   #--------------------------------------------------------------------------
  1389.   def shift_date_to(m, d, y = -1)
  1390.     y = $calender.year if y == -1
  1391.     if $calender.days_dif(y, m, d) > 0
  1392.       $calender.days_dif(y, m, d).times{$calender.shift_date}
  1393.     else
  1394.       $calender.days_dif(y, m, d).abs.times{$calender.back_date}
  1395.     end
  1396.     $calender.change_weather
  1397.   end
  1398. end

  1399. #==============================================================================
  1400. # ■ SceneManager
  1401. #------------------------------------------------------------------------------
  1402. #  シーン遷移を管理するモジュールです。たとえばメインメニューからアイテム画面
  1403. # を呼び出し、また戻るというような階層構造を扱うことができます。
  1404. #==============================================================================

  1405. module SceneManager
  1406.   #--------------------------------------------------------------------------
  1407.   # ● エイリアス用特異メソッド
  1408.   #--------------------------------------------------------------------------
  1409.   class << self
  1410.     alias :calender_goto   :goto
  1411.     alias :calender_call   :call
  1412.     alias :calender_return :return
  1413.   end
  1414.   #--------------------------------------------------------------------------
  1415.   # ● 直接遷移
  1416.   #--------------------------------------------------------------------------
  1417.   def self.goto(scene_class)
  1418.     calender_goto(scene_class)
  1419.     if scene_class == Scene_Map
  1420.       $calender.perform_weather_effect
  1421.       $calender.change_tone_by_calender
  1422.     end
  1423.   end
  1424.   #--------------------------------------------------------------------------
  1425.   # ● 呼び出し
  1426.   #--------------------------------------------------------------------------
  1427.   def self.call(scene_class)
  1428.     calender_call(scene_class)
  1429.     if scene_class == Scene_Map
  1430.       $calender.perform_weather_effect
  1431.       $calender.change_tone_by_calender
  1432.     end
  1433.   end
  1434.   #--------------------------------------------------------------------------
  1435.   # ● 呼び出し元へ戻る
  1436.   #--------------------------------------------------------------------------
  1437.   def self.return
  1438.     calender_return
  1439.     if @scene.class == Scene_Map
  1440.       $calender.perform_weather_effect
  1441.       $calender.change_tone_by_calender
  1442.     end
  1443.   end
  1444. end

  1445. #==============================================================================
  1446. # ■ Game_Switches
  1447. #------------------------------------------------------------------------------
  1448. #  スイッチを扱うクラスです。組み込みクラス Array のラッパーです。このクラス
  1449. # のインスタンスは $game_switches で参照されます。
  1450. #==============================================================================

  1451. class Game_Switches
  1452.   #--------------------------------------------------------------------------
  1453.   # ● スイッチの設定 (再定義)
  1454.   #     value : ON (true) / OFF (false)
  1455.   #--------------------------------------------------------------------------
  1456.   def []=(switch_id, value)
  1457.     @data[switch_id] = value
  1458.     on_change
  1459.     if switch_id == WhiteSnow::TONE_CHANGE_FORBID_SID or switch_id == WhiteSnow::INSIDE_FLAG_SID
  1460.       case value
  1461.       when true
  1462.         $calender.interpreter.change_tone(0, 0, 0, 0, 0)
  1463.       when false
  1464.         $calender.change_tone_by_calender(0)
  1465.       end
  1466.     end
  1467.     if switch_id == WhiteSnow::WEATHER_EFFECT_FORBID_SID or switch_id == WhiteSnow::INSIDE_FLAG_SID
  1468.       case value
  1469.       when true
  1470.         $calender.interpreter.change_weather(:none, 0, 0)
  1471.         RPG::BGS.stop if (WhiteSnow::WEATHER_BGS_ENABLE and [0, 1].include?(WhiteSnow::INSIDE_BGS_TYPE)) or $game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  1472.         $calender.play_inside_bgs if WhiteSnow::WEATHER_BGS_ENABLE and WhiteSnow::INSIDE_BGS_TYPE == 1 and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  1473.       when false
  1474.         $calender.perform_weather_effect(0)
  1475.       end
  1476.     end
  1477.   end
  1478. end

  1479. #==============================================================================
  1480. # ■ Game_Player
  1481. #------------------------------------------------------------------------------
  1482. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  1483. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  1484. #==============================================================================

  1485. class Game_Player
  1486.   #--------------------------------------------------------------------------
  1487.   # ● 場所移動の実行
  1488.   #--------------------------------------------------------------------------
  1489.   alias calender_perform_transfer perform_transfer
  1490.   def perform_transfer
  1491.     if transfer?
  1492.       $calender.perform_weather_effect(0)
  1493.       $calender.change_tone_by_calender(0)
  1494.     end
  1495.     calender_perform_transfer
  1496.   end
  1497. end

  1498. #==============================================================================
  1499. # ■ RPG::Map
  1500. #------------------------------------------------------------------------------
  1501. #  マップのデータクラスです。
  1502. #==============================================================================

  1503. class RPG::Map
  1504.   #--------------------------------------------------------------------------
  1505.   # ● マップBGM
  1506.   #--------------------------------------------------------------------------
  1507.   def bgm
  1508.     bgm = Hash.new(@bgm)
  1509.     @note.each_line do |line|
  1510.       case line
  1511.       when /<(?:早朝|early)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1512.         bgm[:early_morning] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1513.       when /<(?:朝|morning)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1514.         bgm[:morning] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1515.       when /<(?:昼|noon)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1516.         bgm[:noon] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1517.       when /<(?:夕方|evening)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1518.         bgm[:evening] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1519.       when /<(?:夜|night)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1520.         bgm[:night] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1521.       when /<(?:深夜|mid)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1522.         bgm[:midnight] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1523.       end
  1524.     end
  1525.     return bgm
  1526.   end
  1527. end

  1528. #==============================================================================
  1529. # ■ Game_Map
  1530. #------------------------------------------------------------------------------
  1531. #  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
  1532. # このクラスのインスタンスは $game_map で参照されます。
  1533. #==============================================================================

  1534. class Game_Map
  1535.   #--------------------------------------------------------------------------
  1536.   # ● BGM / BGS 自動切り替え (再定義)
  1537.   #--------------------------------------------------------------------------
  1538.   def autoplay
  1539.     case $calender.time_zone
  1540.     when :early_morning
  1541.       @map.bgm[:early_morning].play if @map.autoplay_bgm
  1542.     when :morning
  1543.       @map.bgm[:morning].play if @map.autoplay_bgm
  1544.     when :noon
  1545.       @map.bgm[:noon].play if @map.autoplay_bgm
  1546.     when :evening
  1547.       @map.bgm[:evening].play if @map.autoplay_bgm
  1548.     when :night
  1549.       @map.bgm[:night].play if @map.autoplay_bgm
  1550.     when :midnight
  1551.       @map.bgm[:midnight].play if @map.autoplay_bgm
  1552.     end
  1553.     @map.bgs.play if @map.autoplay_bgs
  1554.   end
  1555. end

  1556. module Kernel
  1557.   #--------------------------------------------------------------------------
  1558.   # ● 重み付きの乱数を生成
  1559.   #--------------------------------------------------------------------------
  1560.   def p_ex_rand(rate, n = 0)
  1561.     srand
  1562.     rate = 99 if rate == 100
  1563.     if n == 0
  1564.       r = 1 - rand ** (1 - rate * 0.01)
  1565.       if r == 1
  1566.         return 0
  1567.       else
  1568.         return r
  1569.       end
  1570.     else
  1571.       num = n.truncate
  1572.       r = 1 - rand ** (1 - rate * 0.01)
  1573.       r = 0 if r == 1
  1574.       return (r * num).floor
  1575.     end
  1576.   end
  1577. end
复制代码
159左右開始,就是年月日左右的變量,應該做到你想要的效果?

点评

非常感谢,虽然我已经在论坛里找到了时间脚本的说......一直没人回复我都忘了还有这个问题。  发表于 2016-4-23 18:01

评分

参与人数 1梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 02:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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