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

Project1

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

[已经过期] 这里有个时间天气脚本哪位帮忙看看

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
160 小时
注册时间
2010-11-7
帖子
28
跳转到指定楼层
1
发表于 2013-7-29 09:33:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 394178110 于 2013-7-30 11:00 编辑

感觉功能上已经比较完善了 但是管日历窗口消失的83号开关 打开窗口可以正常消失 但是关闭后窗口却回不来了 有这个bug感觉好可惜 哪位可以帮帮忙看看这个能修复好吗
  CALENDER_WINDOW_HIDE_SID = 83
    # 日付ウィンドウを消すスイッチID
    # ウィンドウが消えていても止めない限り時間は経過します


RUBY 代码复制
  1. =begin  =======================================================================
  2.   ☆ カレンダー機能追加  by 白雪レイカ
  3. -------------------------------------------------------------------------------
  4.   プロジェクトに「時刻」の概念を加えます。
  5.   時間帯でBGMや画面の色調が切り替わり、季節ごとにランダムで天候が変化します。
  6.   主なデータはすべて変数に格納されるので、
  7.   それを使ってイベントを分岐させたりできます。
  8. -------------------------------------------------------------------------------
  9.  
  10.   ◆使い方
  11.     基本的に設定項目をカスタマイズして導入するだけなのですが、
  12.     一部説明が必要な部分があるのでご説明します。
  13.     
  14.     ○時間帯について
  15.     
  16.        3:00 ~  5:59 => 早朝 (:early_morning)
  17.        6:00 ~ 10:59 => 朝   (:morning)
  18.       11:00 ~ 15:59 => 昼   (:noon)
  19.       16:00 ~ 18:59 => 夕方 (:evening)
  20.       19:00 ~ 22:59 => 夜   (:night)
  21.       23:00 ~  2:59 => 深夜 (:midnight)
  22.       
  23.       となっています。
  24.       
  25.     
  26.     ○時間帯ごとのBGM切り替え
  27.       マップ設定の「BGMの自動切換え」にチェックが入っているときのみ有効。
  28.       マップのメモ欄に以下のように記述してください。
  29.       
  30.       <早朝(またはearly) ファイル名, 音量, ピッチ>
  31.       
  32.       これで早朝のBGMが設定できます。
  33.       早朝 の部分を 朝(またはmorning)、昼(またはnoon)、夕方(またはevening)、
  34.       夜(またはnight)、深夜(またはmid)とすることで
  35.       対応する時間帯のBGMを設定することができます。
  36.       ファイル名の拡張子は省略することができます(例 Town1)。
  37.       
  38.       
  39.     ○イベントでの時刻etc設定
  40.       イベントコマンド「スクリプト」から実行
  41.       
  42.         set_time(hour, min)
  43.           # 時刻を hour:min に設定します。
  44.           # このメソッドによって日数が経過することはありません。
  45.        
  46.         set_date(month, date, day)
  47.           # カレンダーを month月 date日 day曜日に設定します。
  48.           # 曜日の経過とか完全に無視してしまうので非推奨です。
  49.           # 曜日はシンボルで設定します。
  50.           
  51.           # 日曜 => :Sun  月曜 => :Mon  火曜 => :Tue
  52.           # 水曜 => :Wed  木曜 => :Thr  金曜 => :Fri
  53.           # 土曜 => :Sat
  54.           
  55.         set_year(year)
  56.           # カレンダーをyear年に設定します。
  57.           # 上と同じく非推奨です。
  58.        
  59.         shift_date(date)
  60.           # カレンダーをdate日だけ進めます。
  61.           # こちらは曜日もちゃんと加味します。
  62.           
  63.         shift_month(month)
  64.           # カレンダーをmonth月だけ進め、
  65.           # 進めた月の1日に設定します。
  66.           
  67.          shift_year(year)
  68.           # カレンダーを指定した年数経過させます。
  69.           # shift_monthと違って日付は変わりません。
  70.           
  71.         shift_date_to(month, date[, year])
  72.           # カレンダーを指定した日付(year年 month月 date日)まで進めます。
  73.           # yearを省略した場合は現在の年と同じ値になります。
  74.           # 現在の日付よりも前の日付を設定すると、
  75.           # その日まで時間が巻き戻ります。
  76.           
  77.          set_weather(weather)
  78.           # 天候を設定します。
  79.           # weatherはシンボルで指定します。
  80.           
  81.           # 晴れ => :fine  雨 => :rain   雪 => :snow
  82.           # 雷 => :thunder 嵐 => :storm  晴れ(夜) => :star
  83.           # 吹雪 => :s_storm
  84.           
  85.   ◆おことわり
  86.     改造・再配布等自由です。
  87.     再配布の際には作者の明示をお願いします。
  88.     バグを発見したら速やかにご報告ください。
  89.     
  90. =end
  91. #==============================================================================
  92. # ■ 設定項目
  93. #==============================================================================
  94. module WhiteSnow
  95.  
  96.   # ↓↓ここから初期設定↓↓
  97.  
  98.   INITAL_MIN = 40
  99.     # ゲーム開始時の「分」の値
  100.  
  101.   INITAL_HOUR = 7
  102.     # ゲーム開始時の「時」の値
  103.  
  104.   INITAL_DATE = 6
  105.     # ゲーム開始時の「日」の値
  106.  
  107.   INITAL_DAY = :Sun
  108.     # ゲーム開始時の「曜日」の値
  109.  
  110.   INITAL_MONTH = 4
  111.     # ゲーム開始時の「月」の値
  112.  
  113.   INITAL_YEAR = 618
  114.     # ゲーム開始時の「年」の値
  115.  
  116.   # ↑↑ここまで初期設定↑↑
  117.  
  118.  
  119.   TIME_COUNT_FORBID_SID = 80
  120.     # 時間経過を禁止するスイッチID
  121.  
  122.   TONE_CHANGE_FORBID_SID = 81
  123.     # 時間経過による画面の色調変更を禁止するスイッチID
  124.  
  125.   WEATHER_EFFECT_FORBID_SID = 82
  126.     # 天候エフェクトを無効化するスイッチID
  127.  
  128.   CALENDER_WINDOW_HIDE_SID = 83
  129.     # 日付ウィンドウを消すスイッチID
  130.     # ウィンドウが消えていても止めない限り時間は経過します
  131.  
  132.   INSIDE_FLAG_SID = 84
  133.     # 屋内フラグを立てるスイッチID
  134.     # 色調変更、天候エフェクトをまとめて無効化します
  135.  
  136.   WEATHER_BGS_ENABLE = true
  137.     # 天候によるBGS機能を使用するか
  138.     # trueで使用する、falseで使用しないとなります
  139.  
  140.   INSIDE_BGS_TYPE = 1
  141.     # 屋内フラグまたは天候エフェクト無効フラグのスイッチがONになった
  142.     # ときのBGSのタイプ
  143.     # BGS機能を使用するときのみ有効
  144.     # 0で音を消す、1で音量を60%にして流す、2でそのまま流す
  145.     # となります。
  146.  
  147.   WEATHER_BGS_DISABLE = 15
  148.     # 天候BGS機能停止スイッチ
  149.  
  150.     # このスイッチIDがONのときは天候BGSは流れません。
  151.     # ただしこのスイッチ単体では、今流れているBGSの再生を止める効果はありません。
  152.     # あくまで一時的にBGS機能を無効化するだけです。
  153.     # 屋内フラグを切り替えるスイッチと一緒に使うなりしてください。
  154.  
  155.     # また、このスイッチがOFFになっても止まっていたBGSが再び流れるような
  156.     # ことはありません。
  157.  
  158.  
  159.   MIN_STORE_VID = 101
  160.     # 現在の「分」の値が格納される変数ID
  161.  
  162.   HOUR_STORE_VID = 102
  163.     # 現在の「時」の値が格納される変数ID
  164.  
  165.   TIME_ZONE_STORE_VID = 103
  166.     # 現在の「時間帯」が格納される変数ID
  167.     # 早朝に0、朝に1、昼に2、夕方に3、夜に4、深夜で5になります。
  168.  
  169.   DATE_STORE_VID = 104
  170.     # 現在の「日」の値が格納される変数ID
  171.  
  172.   DAY_STORE_VID = 105
  173.     # 現在の「曜日」が格納される変数ID
  174.     # 日曜のとき0、月曜のとき1、と続き土曜のとき6になります。
  175.  
  176.   MONTH_STORE_VID = 106
  177.     # 現在の「月」の値が格納される変数ID
  178.  
  179.   SEASON_STORE_VID = 107
  180.     # 現在の「季節」が格納される変数ID
  181.     # 春のとき0、夏のとき1、秋のとき2、冬のとき3になります。
  182.  
  183.   WEATHER_STORE_VID = 108
  184.     # 現在の「天候」が格納される変数ID
  185.     # 晴れのとき0、雨のとき1、雪のとき2、雷のとき3、
  186.     # 嵐のとき4、晴れ(夜)のとき5、吹雪のとき6になります。
  187.  
  188.   YEAR_STORE_VID = 109
  189.     # 現在の「年」の値が格納される変数ID
  190.  
  191.  
  192.   EARLY_MORNING_SCREEN_TONE = [15, 10, 0, 0]
  193.     # 早朝の画面の色調
  194.     # R, G, B, Darkの順に指定してください。
  195.  
  196.   MORNING_SCREEN_TONE = [0, 0, 0, 0]
  197.     # 朝の画面の色調
  198.     # R, G, B, Darkの順に指定してください。
  199.  
  200.   NOON_SCREEN_TONE = [15, 15, 15, 0]
  201.     # 昼の画面の色調
  202.     # R, G, B, Darkの順に指定してください。
  203.  
  204.   AFTERNOON_SCREEN_TONE = [32, -8, -32, 16]
  205.     # 夕方の画面の色調
  206.     # R, G, B, Darkの順に指定してください。
  207.  
  208.   NIGHT_SCREEN_TONE = [-64, -64, -16, 32]
  209.     # 夜の画面の色調
  210.     # R, G, B, Darkの順に指定してください。
  211.  
  212.   MIDNIGHT_SCREEN_TONE = [-72, -72, -20, 48]
  213.     # 深夜の画面の色調
  214.     # R, G, B, Darkの順に指定してください。
  215.  
  216.  
  217.   DAYS_TABLE = {0 => 31, 1 => 31, 2 => 28, 3 => 31, 4 => 30, 5 => 31, 6 => 30,
  218.                 7 => 31, 8 => 31, 9 => 30, 10 => 31, 11 => 30, 12 => 31}
  219.     # 月毎の日数のテーブル
  220.     # 基本的に変更しないでください。
  221.  
  222.  
  223.     # 以下天候リスト
  224.  
  225.     # 設定例
  226.     # WEATHER = {:icon => 天候アイコンインデックス,
  227.     #            :weather => [天候エフェクトの種類, 強さ]},
  228.     #            :bgs => ["ファイル名", 音量, ピッチ](設定しない場合はnil),
  229.     #
  230.     # 天候エフェクトの種類  :noneで「なし」、:rainで「雨」、
  231.     #                       :stormで「嵐」、:snowで「雪」となります。
  232.  
  233.   FINE = {:icon => 1, :weather => [:none, 0],
  234.           :bgs => nil}
  235.     # 天候:晴れ
  236.  
  237.   RAIN = {:icon => 2, :weather => [:rain, 5],
  238.           :bgs => ["Rain", 20, 90]}
  239.     # 天候:雨
  240.  
  241.   SNOW = {:icon => 3, :weather => [:snow, 4],
  242.           :bgs => nil}
  243.     # 天候:雪
  244.  
  245.   THUNDER = {:icon => 4, :weather => [:storm, 4],
  246.              :bgs => ["Storm", 60, 75],
  247.  
  248.              :flash => [255, 255, 200, 180, 12],
  249.              :se => ["Thunder9", 80, 95]}
  250.     # 天候:雷
  251.     # 雷エフェクト用の設定項目について
  252.     # :flash => [(フラッシュの色)R, G, B, Alpha, フラッシュの長さ]
  253.     # :se => フラッシュの後に鳴るSE
  254.  
  255.   STORM = {:icon => 5, :weather => [:storm, 8],
  256.            :bgs => ["Storm", 70, 100]}
  257.     # 天候:嵐
  258.  
  259.   STAR = {:icon => 6, :weather => [:none, 0],
  260.           :bgs => nil}
  261.     # 天候:晴れ(夜)
  262.  
  263.   S_STORM = {:icon => 7, :weather => [:snow, 9],
  264.              :bgs => ["Wind", 70, 95]}
  265.     # 天候:吹雪
  266. end
  267.  
  268. #==============================================================================
  269. # ■ Calender
  270. #------------------------------------------------------------------------------
  271. #  カレンダーのクラスです。
  272. #==============================================================================
  273.  
  274. class Calender
  275.   #--------------------------------------------------------------------------
  276.   # ● 公開インスタンス変数
  277.   #--------------------------------------------------------------------------
  278.   attr_accessor :count
  279.   attr_accessor :min
  280.   attr_accessor :hour
  281.   attr_accessor :date
  282.   attr_accessor :day
  283.   attr_accessor :month
  284.   attr_accessor :season
  285.   attr_accessor :year
  286.   attr_accessor :weather
  287.   attr_accessor :weather_count
  288.   attr_accessor :time_zone
  289.   attr_reader   :interpreter
  290.   attr_accessor :thunder_count
  291.   #--------------------------------------------------------------------------
  292.   # ● オブジェクト初期化
  293.   #--------------------------------------------------------------------------
  294.   def initialize
  295.     @count = 0
  296.     @weather = :fine
  297.     @interpreter = Game_Interpreter.new
  298.     init_calender
  299.     change_weather
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● カレンダーの初期化
  303.   #--------------------------------------------------------------------------
  304.   def init_calender
  305.     [url=home.php?mod=space&uid=25749]@min[/url]    = WhiteSnow::INITAL_MIN
  306.     @hour   = WhiteSnow::INITAL_HOUR
  307.     @date   = WhiteSnow::INITAL_DATE
  308.     [url=home.php?mod=space&uid=11519]@day[/url]    = WhiteSnow::INITAL_DAY
  309.     [url=home.php?mod=space&uid=26122]@Month[/url]  = WhiteSnow::INITAL_MONTH
  310.     @year   = WhiteSnow::INITAL_YEAR
  311.     get_time_zone
  312.  
  313.     $game_variables[WhiteSnow::MIN_STORE_VID] = @min
  314.     $game_variables[WhiteSnow::HOUR_STORE_VID] = @hour
  315.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  316.  
  317.     case @month
  318.     when 1..2
  319.       [url=home.php?mod=space&uid=31546]@season[/url] = :Winter
  320.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  321.     when 3..5
  322.       [url=home.php?mod=space&uid=31546]@season[/url] = :Spring
  323.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  324.     when 6..8
  325.       [url=home.php?mod=space&uid=31546]@season[/url] = :Summer
  326.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  327.     when 9..11
  328.       @season = :Autumn
  329.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  330.     when 12
  331.       @season = :Winter
  332.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  333.     end
  334.  
  335.     case @day
  336.     when :Sun
  337.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  338.     when :Mon
  339.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  340.     when :Tue
  341.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  342.     when :Wed
  343.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  344.     when :Thr
  345.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  346.     when :Fri
  347.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  348.     when :Sat
  349.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  350.     end
  351.     $game_variables[WhiteSnow::MONTH_STORE_VID] = @month
  352.     $game_variables[WhiteSnow::YEAR_STORE_VID] = @year
  353.     change_tone_by_calender
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # ● 時間帯の取得
  357.   #--------------------------------------------------------------------------
  358.   def get_time_zone
  359.     case @hour
  360.     when 0..2
  361.       @time_zone = :midnight
  362.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 5
  363.     when 3..5
  364.       @time_zone = :early_morning
  365.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 0
  366.     when 6..10
  367.       @time_zone = :morning
  368.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 1
  369.     when 11..15
  370.       @time_zone = :noon
  371.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 2
  372.     when 16..18
  373.       @time_zone = :evening
  374.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 3
  375.     when 19..22
  376.       @time_zone = :night
  377.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 4
  378.     when 23..24
  379.       @time_zone = :midnight
  380.       $game_variables[WhiteSnow::TIME_ZONE_STORE_VID] = 5
  381.     end
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 天候カウントの取得
  385.   #--------------------------------------------------------------------------
  386.   def randomize_weather_count
  387.     @weather_count = p_ex_rand(40, 100) + (109 - p_ex_rand(40, 110)) + 90
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ● 画面の色調変更
  391.   #--------------------------------------------------------------------------
  392.   def change_tone_by_calender(dur = 60)
  393.     return if $game_switches[WhiteSnow::TONE_CHANGE_FORBID_SID]
  394.     return if $game_switches[WhiteSnow::INSIDE_FLAG_SID]
  395.     case @time_zone
  396.     when :early_morning
  397.       tone = WhiteSnow::EARLY_MORNING_SCREEN_TONE
  398.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  399.     when :morning
  400.       tone = WhiteSnow::MORNING_SCREEN_TONE
  401.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  402.     when :noon
  403.       tone = WhiteSnow::NOON_SCREEN_TONE
  404.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  405.     when :evening
  406.       tone = WhiteSnow::AFTERNOON_SCREEN_TONE
  407.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  408.     when :night
  409.       tone = WhiteSnow::NIGHT_SCREEN_TONE
  410.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  411.     when :midnight
  412.       tone = WhiteSnow::MIDNIGHT_SCREEN_TONE
  413.       @interpreter.change_tone(tone[0], tone[1], tone[2], tone[3], dur)
  414.     end
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ● 天候の変更
  418.   #--------------------------------------------------------------------------
  419.   def change_weather
  420.     srand
  421.     p_weather = @weather
  422.     case @month
  423.     when 1
  424.       case rand
  425.       when 0...0.2
  426.         if @hour >= 3 and @hour < 18
  427.           @weather = :fine
  428.         else
  429.           @weather = :star
  430.         end
  431.       when 0.2...0.8
  432.         @weather = :snow
  433.       when 0.8...1
  434.         @weather = :s_storm
  435.       end
  436.     when 2
  437.       case rand
  438.       when 0...0.3
  439.         if @hour >= 3 and @hour < 18
  440.           @weather = :fine
  441.         else
  442.           @weather = :star
  443.         end
  444.       when 0.3...0.8
  445.         @weather = :snow
  446.       when 0.8...0.9
  447.         @weather = :rain
  448.       when 0.9...1
  449.         @weather = :s_storm
  450.       end
  451.     when 3..4
  452.       case rand
  453.       when 0...0.8
  454.         if @hour >= 3 and @hour < 18
  455.           @weather = :fine
  456.         else
  457.           @weather = :star
  458.         end
  459.       when 0.8...0.9
  460.         @weather = :rain
  461.       when 0.9...1
  462.         @weather = :storm
  463.       end
  464.     when 5
  465.       case rand
  466.       when 0...0.7
  467.         if @hour >= 3 and @hour < 18
  468.           @weather = :fine
  469.         else
  470.           @weather = :star
  471.         end
  472.       when 0.7...0.8
  473.         @weather = :rain
  474.       when 0.8...0.9
  475.         @weather = :thunder
  476.       when 0.9...1
  477.         @weather = :storm
  478.       end
  479.     when 6
  480.       case rand
  481.       when 0...0.4
  482.         if @hour >= 3 and @hour < 18
  483.           @weather = :fine
  484.         else
  485.           @weather = :star
  486.         end
  487.       when 0.4...0.8
  488.         @weather = :rain
  489.       when 0.8...0.9
  490.         @weather = :thunder
  491.       when 0.9...1
  492.         @weather = :storm
  493.       end
  494.     when 7..8
  495.       case rand
  496.       when 0...0.6
  497.         if @hour >= 3 and @hour < 18
  498.           @weather = :fine
  499.         else
  500.           @weather = :star
  501.         end
  502.       when 0.6...0.7
  503.         @weather = :rain
  504.       when 0.7...0.9
  505.         @weather = :storm
  506.       when 0.9...1
  507.         @weather = :thunder
  508.       end
  509.     when 9..10
  510.       case rand
  511.       when 0...0.6
  512.         if @hour >= 3 and @hour < 18
  513.           @weather = :fine
  514.         else
  515.           @weather = :star
  516.         end
  517.       when 0.6...0.8
  518.         @weather = :storm
  519.       when 0.8...0.9
  520.         @weather = :rain
  521.       when 0.9...1
  522.         @weather = :thunder
  523.       end
  524.     when 11
  525.       if @date < 25
  526.         case rand
  527.         when 0...0.7
  528.           if @hour >= 3 and @hour < 18
  529.             @weather = :fine
  530.           else
  531.             @weather = :star
  532.           end
  533.         when 0.7...0.8
  534.           @weather = :storm
  535.         when 0.8...0.9
  536.           @weather = :rain
  537.         when 0.9...1
  538.           @weather = :thunder
  539.         end
  540.       else
  541.         case rand
  542.         when 0...0.6
  543.           if @hour >= 3 and @hour < 18
  544.             @weather = :fine
  545.           else
  546.             @weather = :star
  547.           end
  548.         when 0.6...0.7
  549.           @weather = :storm
  550.         when 0.7...0.8
  551.           @weather = :rain
  552.         when 0.8...0.9
  553.           @weather = :thunder
  554.         when 0.9...1
  555.           @weather = :snow
  556.         end
  557.       end
  558.     when 12
  559.       case rand
  560.       when 0...0.2
  561.         if @hour >= 3 and @hour < 18
  562.           @weather = :fine
  563.         else
  564.           @weather = :star
  565.         end
  566.       when 0.2...0.8
  567.         @weather = :snow
  568.       when 0.8...1
  569.         @weather = :s_storm
  570.       end
  571.     end
  572.     if @weather != p_weather
  573.       RPG::BGS.fade(10)
  574.       perform_weather_effect
  575.     end
  576.     randomize_weather_count
  577.   end
  578.   #--------------------------------------------------------------------------
  579.   # ● 天候エフェクト
  580.   #--------------------------------------------------------------------------
  581.   def perform_weather_effect(dur = 30)
  582.     return unless SceneManager.scene_is?(Scene_Map)
  583.     return if $game_switches[WhiteSnow::WEATHER_EFFECT_FORBID_SID]
  584.     return if $game_switches[WhiteSnow::INSIDE_FLAG_SID]
  585.     case @weather
  586.     when :fine
  587.       weather = WhiteSnow::FINE
  588.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  589.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  590.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  591.         bgs.play
  592.       end
  593.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 0
  594.  
  595.     when :rain
  596.       weather = WhiteSnow::RAIN
  597.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  598.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  599.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  600.         bgs.play
  601.       end
  602.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 1
  603.  
  604.     when :snow
  605.       weather = WhiteSnow::SNOW
  606.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  607.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  608.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  609.         bgs.play
  610.       end
  611.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 2
  612.  
  613.     when :thunder
  614.       weather = WhiteSnow::THUNDER
  615.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  616.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  617.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  618.         bgs.play
  619.       end
  620.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 3
  621.  
  622.     when :storm
  623.       weather = WhiteSnow::STORM
  624.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  625.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  626.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  627.         bgs.play
  628.       end
  629.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 4
  630.  
  631.     when :star
  632.       weather = WhiteSnow::STAR
  633.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  634.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  635.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  636.         bgs.play
  637.       end
  638.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 5
  639.  
  640.     when :s_storm
  641.       weather = WhiteSnow::S_STORM
  642.       @interpreter.change_weather(weather[:weather][0], weather[:weather][1], dur)
  643.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  644.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1], weather[:bgs][2])
  645.         bgs.play
  646.       end
  647.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 6
  648.     end
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ● 屋内BGSの演奏
  652.   #--------------------------------------------------------------------------
  653.   def play_inside_bgs
  654.     case @weather
  655.     when :fine
  656.       weather = WhiteSnow::FINE
  657.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  658.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.6, weather[:bgs][2])
  659.         bgs.play
  660.       end
  661.  
  662.     when :rain
  663.       weather = WhiteSnow::RAIN
  664.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  665.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  666.         bgs.play
  667.       end
  668.  
  669.     when :snow
  670.       weather = WhiteSnow::SNOW
  671.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  672.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  673.         bgs.play
  674.       end
  675.  
  676.     when :thunder
  677.       weather = WhiteSnow::THUNDER
  678.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  679.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  680.         bgs.play
  681.       end
  682.  
  683.     when :storm
  684.       weather = WhiteSnow::STORM
  685.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  686.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  687.         bgs.play
  688.       end
  689.  
  690.     when :star
  691.       weather = WhiteSnow::STAR
  692.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  693.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  694.         bgs.play
  695.       end
  696.  
  697.     when :s_storm
  698.       weather = WhiteSnow::S_STORM
  699.       if weather[:bgs] and WhiteSnow::WEATHER_BGS_ENABLE and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  700.         bgs = RPG::BGS.new(weather[:bgs][0], weather[:bgs][1] * 0.7, weather[:bgs][2])
  701.         bgs.play
  702.       end
  703.     end
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ● 天候「雷」エフェクトの実行
  707.   #--------------------------------------------------------------------------
  708.   def perform_thunder_effect(r, g, b, alpha, dur)
  709.     @interpreter.perform_flash(r, g, b, alpha, dur)
  710.   end
  711.   #--------------------------------------------------------------------------
  712.   # ● 曜日の更新
  713.   #--------------------------------------------------------------------------
  714.   def shift_day
  715.     case @day
  716.     when :Sun
  717.       [url=home.php?mod=space&uid=11519]@day[/url] = :Mon
  718.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  719.     when :Mon
  720.       [url=home.php?mod=space&uid=11519]@day[/url] = :Tue
  721.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  722.     when :Tue
  723.       @day = :Wed
  724.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  725.     when :Wed
  726.       @day = :Thr
  727.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  728.     when :Thr
  729.       @day = :Fri
  730.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  731.     when :Fri
  732.       @day = :Sat
  733.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  734.     when :Sat
  735.       @day = :Sun
  736.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  737.     end
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ● 曜日を戻す
  741.   #--------------------------------------------------------------------------
  742.   def back_day
  743.     case @day
  744.     when :Sun
  745.       @day = :Sat
  746.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  747.     when :Sat
  748.       @day = :Fri
  749.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  750.     when :Fri
  751.       @day = :Thr
  752.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  753.     when :Thr
  754.       @day = :Wed
  755.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  756.     when :Wed
  757.       @day = :Tue
  758.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  759.     when :Tue
  760.       @day = :Mon
  761.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  762.     when :Mon
  763.       @day = :Sun
  764.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  765.     end
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ● 月の更新
  769.   #--------------------------------------------------------------------------
  770.   def shift_month
  771.     case @month
  772.     when 1
  773.       return unless @date > 31
  774.       [url=home.php?mod=space&uid=26122]@Month[/url] += 1
  775.       @date = 1
  776.     when 2
  777.       return unless @date > 28
  778.       [url=home.php?mod=space&uid=26122]@Month[/url] += 1
  779.       @season = :Spring
  780.       @date = 1
  781.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  782.     when 3
  783.       return unless @date > 31
  784.       @month += 1
  785.       @date = 1
  786.     when 4
  787.       return unless @date > 30
  788.       @month += 1
  789.       @date = 1
  790.     when 5
  791.       return unless @date > 31
  792.       @month += 1
  793.       @season = :Summer
  794.       @date = 1
  795.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  796.     when 6
  797.       return unless @date > 30
  798.       @month += 1
  799.       @date = 1
  800.     when 7
  801.       return unless @date > 31
  802.       @month += 1
  803.       @date = 1
  804.     when 8
  805.       return unless @date > 31
  806.       @month += 1
  807.       @season = :Autumn
  808.       @date = 1
  809.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  810.     when 9
  811.       return unless @date > 30
  812.       @month += 1
  813.       @date = 1
  814.     when 10
  815.       return unless @date > 31
  816.       @month += 1
  817.       @date = 1
  818.     when 11
  819.       return unless @date > 30
  820.       @month += 1
  821.       @season = :Winter
  822.       @date = 1
  823.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  824.     when 12
  825.       return unless @date > 31
  826.       @year += 1
  827.       @month = 1
  828.       @date = 1
  829.       $game_variables[WhiteSnow::YEAR_STORE_VID] = @year
  830.     end
  831.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  832.     $game_variables[WhiteSnow::MONTH_STORE_VID] = @month
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ● 月を戻す
  836.   #--------------------------------------------------------------------------
  837.   def back_month
  838.     return unless @date < 1
  839.     case @month
  840.     when 1
  841.       @month = 12
  842.       @date = 31
  843.       @year -= 1
  844.       $game_variables[WhiteSnow::YEAR_STORE_VID] = @year
  845.     when 2
  846.       @month -= 1
  847.       @date = 31
  848.     when 3
  849.       @month -= 1
  850.       @date = 28
  851.       @season = :Winter
  852.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  853.     when 4
  854.       @month -= 1
  855.       @date = 31
  856.     when 5
  857.       @month -= 1
  858.       @date = 30
  859.     when 6
  860.       @month -= 1
  861.       @date = 31
  862.       @season = :Spring
  863.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  864.     when 7
  865.       @month -= 1
  866.       @date = 30
  867.     when 8
  868.       @month -= 1
  869.       @date = 31
  870.     when 9
  871.       @month -= 1
  872.       @date = 31
  873.       @season = :Summer
  874.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  875.     when 10
  876.       @month -= 1
  877.       @date = 30
  878.     when 11
  879.       @month -= 1
  880.       @date = 31
  881.     when 12
  882.       @month -= 1
  883.       @date = 30
  884.       @season = :Autumn
  885.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  886.     end
  887.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  888.     $game_variables[WhiteSnow::MONTH_STORE_VID] = @month
  889.   end
  890.   #--------------------------------------------------------------------------
  891.   # ● 日付を進める
  892.   #--------------------------------------------------------------------------
  893.   def shift_date
  894.     @date += 1
  895.     shift_day
  896.     shift_month
  897.     $game_variables[WhiteSnow::HOUR_STORE_VID] = @hour
  898.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  899.   end
  900.   #--------------------------------------------------------------------------
  901.   # ● 日付を戻す
  902.   #--------------------------------------------------------------------------
  903.   def back_date
  904.     @date += 1
  905.     back_day
  906.     back_month
  907.     $game_variables[WhiteSnow::HOUR_STORE_VID] = @hour
  908.     $game_variables[WhiteSnow::DATE_STORE_VID] = @date
  909.   end
  910.   #--------------------------------------------------------------------------
  911.   # ● 指定された日時と現在の日時の差を求める
  912.   #--------------------------------------------------------------------------
  913.   def days_dif(y, m, d)
  914.     table = WhiteSnow::DAYS_TABLE
  915.     dy_n = (@year - 1) * 365
  916.     dy_s = (y - 1) * 365
  917.     dm_n = 0 ; 1.upto(@month - 1){|n| dm_n += table[n]} unless @month == 1
  918.     dm_s = 0 ; 1.upto(m - 1){|n| dm_s += table[n]} unless m == 1
  919.     d_n = @date - 1
  920.     d_s = d - 1
  921.     n = dy_n + dm_n + d_n
  922.     s = dy_s + dm_s + d_s
  923.     return s - n
  924.   end
  925. end
  926.  
  927. #==============================================================================
  928. # ■ Window_Calender
  929. #------------------------------------------------------------------------------
  930. #  カレンダーの内容を表示するウィンドウです。
  931. #==============================================================================
  932.  
  933. class Window_Calender < Window_Base
  934.   #--------------------------------------------------------------------------
  935.   # ● オブジェクト初期化
  936.   #--------------------------------------------------------------------------
  937.   def initialize(x = Graphics.width - 208, y = 0, w = 208)
  938.     super(x, y, w, fitting_height(2))
  939.     refresh
  940.   end
  941.   #--------------------------------------------------------------------------
  942.   # ● フレーム更新
  943.   #--------------------------------------------------------------------------
  944.   def update
  945.     self.visible = false if $game_switches[WhiteSnow::CALENDER_WINDOW_HIDE_SID]
  946.     super
  947.     refresh if $calender.count == 0
  948.   end
  949.   #--------------------------------------------------------------------------
  950.   # ● リフレッシュ
  951.   #--------------------------------------------------------------------------
  952.   def refresh
  953.     contents.clear
  954.     draw_year
  955.     draw_date
  956.     draw_time
  957.     draw_weather_icon
  958.   end
  959.   #--------------------------------------------------------------------------
  960.   # ● 年・季節の描画
  961.   #--------------------------------------------------------------------------
  962.   def draw_year
  963.     season = $calender.season.to_s
  964.     season.gsub!("Spring"){"春"}
  965.     season.gsub!("Summer"){"夏"}
  966.     season.gsub!("Autumn"){"秋"}
  967.     season.gsub!("Winter"){"冬"}
  968.     draw_text(0, 0, contents_width, line_height, "#{$calender.year}" + "年")
  969.     draw_text(0, 0, contents_width, line_height, season, 1)
  970.   end
  971.   #--------------------------------------------------------------------------
  972.   # ● 月・日付・曜日の描画
  973.   #--------------------------------------------------------------------------
  974.   def draw_date
  975.     w = contents_width
  976.     h = line_height
  977.     month = $calender.month
  978.     if (0..9).to_a.include?(month)
  979.       month = "0" + month.to_s
  980.     else
  981.       month = month.to_s
  982.     end
  983.     date = $calender.date
  984.     if (0..9).to_a.include?(date)
  985.       date = "0" + date.to_s
  986.     else
  987.       date = date.to_s
  988.     end
  989.     day = $calender.day.to_s
  990.     day.gsub!("Sun"){"\\c[2]日\\c[0]"}
  991.     day.gsub!("Mon"){"月"}
  992.     day.gsub!("Tue"){"火"}
  993.     day.gsub!("Wed"){"水"}
  994.     day.gsub!("Thr"){"木"}
  995.     day.gsub!("Fri"){"金"}
  996.     day.gsub!("Sat"){"土"}
  997.     draw_text_ex(0, h, month + "月" + date + "日" + "(" + day + ")")
  998.   end
  999.   #--------------------------------------------------------------------------
  1000.   # ● 時・分の描画
  1001.   #--------------------------------------------------------------------------
  1002.   def draw_time
  1003.     w = contents_width - 6
  1004.     h = line_height
  1005.     hour = "#{$calender.hour}"
  1006.     min = $calender.min
  1007.     if (0..9).to_a.include?(min)
  1008.       min = "0" + min.to_s
  1009.     else
  1010.       min = min.to_s
  1011.     end
  1012.     draw_text(0, h, w, h, hour + ":" + min, 2)
  1013.   end
  1014.   #--------------------------------------------------------------------------
  1015.   # ● 天候アイコンの描画
  1016.   #--------------------------------------------------------------------------
  1017.   def draw_weather_icon
  1018.     case $calender.weather
  1019.     when :fine
  1020.       icon_index = WhiteSnow::FINE[:icon]
  1021.     when :rain
  1022.       icon_index = WhiteSnow::RAIN[:icon]
  1023.     when :snow
  1024.       icon_index = WhiteSnow::SNOW[:icon]
  1025.     when :thunder
  1026.       icon_index = WhiteSnow::THUNDER[:icon]
  1027.     when :storm
  1028.       icon_index = WhiteSnow::STORM[:icon]
  1029.     when :star
  1030.       icon_index = WhiteSnow::STAR[:icon]
  1031.     when :s_storm
  1032.       icon_index = WhiteSnow::S_STORM[:icon]
  1033.     end
  1034.     draw_icon(icon_index, contents_width - 30, 0)
  1035.   end
  1036. end
  1037.  
  1038. #==============================================================================
  1039. # ■ Window_MenuCalender
  1040. #------------------------------------------------------------------------------
  1041. #  カレンダーの内容を表示するウィンドウです(メニュー画面用)。
  1042. #==============================================================================
  1043.  
  1044. class Window_MenuCalender < Window_Base
  1045.   #--------------------------------------------------------------------------
  1046.   # ● オブジェクト初期化
  1047.   #--------------------------------------------------------------------------
  1048.   def initialize(x = Graphics.width - 220, y = 0, w = 220)
  1049.     super(x, y, w, fitting_height(3))
  1050.     refresh
  1051.   end
  1052.   #--------------------------------------------------------------------------
  1053.   # ● リフレッシュ
  1054.   #--------------------------------------------------------------------------
  1055.   def refresh
  1056.     contents.clear
  1057.     draw_year
  1058.     draw_date
  1059.     draw_time
  1060.     draw_weather_icon
  1061.   end
  1062.   #--------------------------------------------------------------------------
  1063.   # ● 年の描画
  1064.   #--------------------------------------------------------------------------
  1065.   def draw_year
  1066.     season = $calender.season.to_s
  1067.     season.gsub!("Spring"){"春"}
  1068.     season.gsub!("Summer"){"夏"}
  1069.     season.gsub!("Autumn"){"秋"}
  1070.     season.gsub!("Winter"){"冬"}
  1071.     draw_text(0, 0, contents_width, line_height, "#{$calender.year}" + "年")
  1072.     draw_text(0, 0, contents_width + 12, line_height, season, 1)
  1073.   end
  1074.   #--------------------------------------------------------------------------
  1075.   # ● 月・日付・曜日の描画
  1076.   #--------------------------------------------------------------------------
  1077.   def draw_date
  1078.     w = contents_width
  1079.     h = line_height
  1080.     month = $calender.month
  1081.     if (0..9).to_a.include?(month)
  1082.       month = "0" + month.to_s
  1083.     else
  1084.       month = month.to_s
  1085.     end
  1086.     date = $calender.date
  1087.     if (0..9).to_a.include?(date)
  1088.       date = "0" + date.to_s
  1089.     else
  1090.       date = date.to_s
  1091.     end
  1092.     day = $calender.day.to_s
  1093.     day.gsub!("Sun"){"\\c[2]日\\c[0]"}
  1094.     day.gsub!("Mon"){"月"}
  1095.     day.gsub!("Tue"){"火"}
  1096.     day.gsub!("Wed"){"水"}
  1097.     day.gsub!("Thr"){"木"}
  1098.     day.gsub!("Fri"){"金"}
  1099.     day.gsub!("Sat"){"土"}
  1100.     draw_text_ex(12, h, month + "月" + date + "日" + "(" + day + ")")
  1101.   end
  1102.   #--------------------------------------------------------------------------
  1103.   # ● 時・分の描画
  1104.   #--------------------------------------------------------------------------
  1105.   def draw_time
  1106.     w = contents_width - 12
  1107.     h = line_height
  1108.     hour = "#{$calender.hour}"
  1109.     min = $calender.min
  1110.     if (0..9).to_a.include?(min)
  1111.       min = "0" + min.to_s
  1112.     else
  1113.       min = min.to_s
  1114.     end
  1115.     draw_text(0, h * 2, w, h, hour + ":" + min, 2)
  1116.   end
  1117.   #--------------------------------------------------------------------------
  1118.   # ● 天候アイコンの描画
  1119.   #--------------------------------------------------------------------------
  1120.   def draw_weather_icon
  1121.     case $calender.weather
  1122.     when :fine
  1123.       icon_index = WhiteSnow::FINE[:icon]
  1124.     when :rain
  1125.       icon_index = WhiteSnow::RAIN[:icon]
  1126.     when :snow
  1127.       icon_index = WhiteSnow::SNOW[:icon]
  1128.     when :thunder
  1129.       icon_index = WhiteSnow::THUNDER[:icon]
  1130.     when :storm
  1131.       icon_index = WhiteSnow::STORM[:icon]
  1132.     when :star
  1133.       icon_index = WhiteSnow::STAR[:icon]
  1134.     when :s_storm
  1135.       icon_index = WhiteSnow::S_STORM[:icon]
  1136.     end
  1137.     draw_icon(icon_index, contents_width - 30, 0)
  1138.   end
  1139. end
  1140.  
  1141. #==============================================================================
  1142. # ■ Scene_Map
  1143. #------------------------------------------------------------------------------
  1144. #  マップ画面の処理を行うクラスです。
  1145. #==============================================================================
  1146.  
  1147. class Scene_Map < Scene_Base
  1148.   #--------------------------------------------------------------------------
  1149.   # ● 全ウィンドウの作成
  1150.   #--------------------------------------------------------------------------
  1151.   alias calender_create_all_windows create_all_windows
  1152.   def create_all_windows
  1153.     calender_create_all_windows
  1154.     create_calender_window
  1155.   end
  1156.   #--------------------------------------------------------------------------
  1157.   # ● 日付表示ウィンドウの作成
  1158.   #--------------------------------------------------------------------------
  1159.   def create_calender_window
  1160.     @calender_window = Window_Calender.new
  1161.   end
  1162. end
  1163.  
  1164. #==============================================================================
  1165. # ■ Scene_Base
  1166. #------------------------------------------------------------------------------
  1167. #  ゲーム中の全てのシーンのスーパークラスです。
  1168. #==============================================================================
  1169.  
  1170. class Scene_Base
  1171.   #--------------------------------------------------------------------------
  1172.   # ● フレーム更新(基本)
  1173.   #--------------------------------------------------------------------------
  1174.   alias calender_update_basic update_basic
  1175.   def update_basic
  1176.     calender_update_basic
  1177.     update_calender
  1178.   end
  1179.   #--------------------------------------------------------------------------
  1180.   # ● 時刻の更新
  1181.   #--------------------------------------------------------------------------
  1182.   def update_calender
  1183.     return unless SceneManager.scene_is?(Scene_Map)
  1184.     return if $game_switches[10]
  1185.     $calender.count += 1
  1186.     if $calender.weather == :thunder and !($game_switches[WhiteSnow::WEATHER_EFFECT_FORBID_SID] or $game_switches[WhiteSnow::INSIDE_FLAG_SID])
  1187.       $calender.thunder_count ||= [Graphics.frame_rate * 5 + (rand * Graphics.frame_rate * 10).floor, false]
  1188.       $calender.thunder_count[0] -= 1
  1189.       if $calender.thunder_count[1]
  1190.         if $calender.thunder_count[0] == 0
  1191.           se = RPG::SE.new(WhiteSnow::THUNDER[:se][0], WhiteSnow::THUNDER[:se][1], WhiteSnow::THUNDER[:se][2])
  1192.           se.play
  1193.           $calender.thunder_count = nil
  1194.         end
  1195.       elsif $calender.thunder_count[0] < 12 + rand(43)
  1196.         flash = WhiteSnow::THUNDER[:flash]
  1197.         $calender.perform_thunder_effect(flash[0], flash[1], flash[2], flash[3], flash[4])
  1198.         $calender.thunder_count[1] = true
  1199.       end
  1200.     else
  1201.       $calender.thunder_count = nil
  1202.     end
  1203.     if $calender.count % Graphics.frame_rate == 0
  1204.       $calender.min += 1
  1205.       $calender.count = 0
  1206.       $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.min
  1207.       $calender.weather_count -= 1
  1208.       $calender.change_weather if $calender.weather_count <= 0
  1209.     end
  1210.     if $calender.min == 60
  1211.       $calender.hour += 1
  1212.       $calender.min = 0
  1213.       if $calender.hour >= 3 and $calender.hour < 19
  1214.         $calender.weather = :fine if $calender.weather == :star
  1215.       else
  1216.         $calender.weather = :star if $calender.weather == :fine
  1217.       end
  1218.       $calender.get_time_zone
  1219.       $calender.change_tone_by_calender
  1220.       $game_map.autoplay
  1221.       $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.min
  1222.       $game_variables[WhiteSnow::HOUR_STORE_VID] = $calender.hour
  1223.     end
  1224.     if $calender.hour == 24
  1225.       $calender.hour = 0
  1226.       $calender.shift_date
  1227.     end
  1228.   end
  1229. end
  1230.  
  1231. #==============================================================================
  1232. # ■ Scene_Menu
  1233. #------------------------------------------------------------------------------
  1234. #  メニュー画面の処理を行うクラスです。
  1235. #==============================================================================
  1236.  
  1237. class Scene_Menu
  1238.   #--------------------------------------------------------------------------
  1239.   # ● 開始処理
  1240.   #--------------------------------------------------------------------------
  1241.   alias calender_start start
  1242.   def start
  1243.     calender_start
  1244.     create_calender_window
  1245.   end
  1246.   #--------------------------------------------------------------------------
  1247.   # ● 日付ウィンドウの作成
  1248.   #--------------------------------------------------------------------------
  1249.   def create_calender_window
  1250.     x = 0
  1251.     w = @gold_window.width
  1252.     @calender_window = Window_MenuCalender.new(x, 0, w)
  1253.     @calender_window.y = Graphics.height - @gold_window.height - @calender_window.height
  1254.   end
  1255. end
  1256.  
  1257. #==============================================================================
  1258. # ■ DataManager
  1259. #------------------------------------------------------------------------------
  1260. #  データベースとゲームオブジェクトを管理するモジュールです。ゲームで使用する
  1261. # ほぼ全てのグローバル変数はこのモジュールで初期化されます。
  1262. #==============================================================================
  1263.  
  1264. module DataManager
  1265.   #--------------------------------------------------------------------------
  1266.   # ● エイリアス用特異メソッド
  1267.   #--------------------------------------------------------------------------
  1268.   class << self
  1269.     alias :calender_create_game_objects :create_game_objects
  1270.     alias :calender_extract_save_contents :extract_save_contents
  1271.   end
  1272.   #--------------------------------------------------------------------------
  1273.   # ● 各種ゲームオブジェクトの作成
  1274.   #--------------------------------------------------------------------------
  1275.   def self.create_game_objects
  1276.     calender_create_game_objects
  1277.     $calender = Calender.new
  1278.   end
  1279.   #--------------------------------------------------------------------------
  1280.   # ● セーブ内容の作成 (再定義)
  1281.   #--------------------------------------------------------------------------
  1282.   def self.make_save_contents
  1283.     contents = {}
  1284.     contents[:system]           = $game_system
  1285.     contents[:timer]            = $game_timer
  1286.     contents[:message]          = $game_message
  1287.     contents[:switches]         = $game_switches
  1288.     contents[:variables]        = $game_variables
  1289.     contents[:self_switches]    = $game_self_switches
  1290.     contents[:actors]           = $game_actors
  1291.     contents[:party]            = $game_party
  1292.     contents[:troop]            = $game_troop
  1293.     contents[:map]              = $game_map
  1294.     contents[:player]           = $game_player
  1295.     contents[:calender]         = $calender
  1296.     contents
  1297.   end
  1298.   #--------------------------------------------------------------------------
  1299.   # ● セーブ内容の作成
  1300.   #--------------------------------------------------------------------------
  1301.   def self.extract_save_contents(contents)
  1302.     calender_extract_save_contents(contents)
  1303.     $calender = contents[:calender]
  1304.   end
  1305. end
  1306.  
  1307. #==============================================================================
  1308. # ■ Game_Interpreter
  1309. #------------------------------------------------------------------------------
  1310. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  1311. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  1312. #==============================================================================
  1313.  
  1314. class Game_Interpreter
  1315.   #--------------------------------------------------------------------------
  1316.   # ● 画面の色調変更(引数指定)
  1317.   #--------------------------------------------------------------------------
  1318.   def change_tone(r, g, b, gray = 0, dur = 60)
  1319.     tone = Tone.new(r, g, b, gray)
  1320.     screen.start_tone_change(tone, dur)
  1321.   end
  1322.   #--------------------------------------------------------------------------
  1323.   # ● 天候の変更(引数指定)
  1324.   #--------------------------------------------------------------------------
  1325.   def change_weather(type, power, dur = 30)
  1326.     return if $game_party.in_battle
  1327.     screen.change_weather(type, power, dur)
  1328.   end
  1329.   #--------------------------------------------------------------------------
  1330.   # ● 時間を設定
  1331.   #--------------------------------------------------------------------------
  1332.   def set_time(hour, min)
  1333.     hour = 23 if hour > 23
  1334.     hour = 0 if hour < 0
  1335.     min = 59 if min > 59
  1336.     min = 0 if min < 0
  1337.     $calender.hour = hour
  1338.     $calender.min = min
  1339.     $calender.get_time_zone
  1340.     $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.min
  1341.     $game_variables[WhiteSnow::HOUR_STORE_VID] = $calender.hour
  1342.     $game_variables[WhiteSnow::DATE_STORE_VID] = $calender.date
  1343.     $game_map.autoplay
  1344.     $calender.change_weather
  1345.     $calender.change_tone_by_calender
  1346.     if $calender.hour >= 3 and $calender.hour < 19
  1347.       $calender.weather = :fine if $calender.weather == :star
  1348.     else
  1349.       $calender.weather = :star if $calender.weather == :fine
  1350.     end
  1351.   end
  1352.   #--------------------------------------------------------------------------
  1353.   # ● 日付を設定
  1354.   #--------------------------------------------------------------------------
  1355.   def set_date(month, date, day)
  1356.     $calender.month = month
  1357.     $calender.date = date
  1358.     $calender.day = day
  1359.     $game_variables[WhiteSnow::MIN_STORE_VID] = $calender.month
  1360.     $game_variables[WhiteSnow::DATE_STORE_VID] = $calender.date
  1361.     case $calender.day
  1362.     when :Sun
  1363.       $game_variables[WhiteSnow::DAY_STORE_VID] = 0
  1364.     when :Mon
  1365.       $game_variables[WhiteSnow::DAY_STORE_VID] = 1
  1366.     when :Tue
  1367.       $game_variables[WhiteSnow::DAY_STORE_VID] = 2
  1368.     when :Wed
  1369.       $game_variables[WhiteSnow::DAY_STORE_VID] = 3
  1370.     when :Thr
  1371.       $game_variables[WhiteSnow::DAY_STORE_VID] = 4
  1372.     when :Fri
  1373.       $game_variables[WhiteSnow::DAY_STORE_VID] = 5
  1374.     when :Sat
  1375.       $game_variables[WhiteSnow::DAY_STORE_VID] = 6
  1376.     end
  1377.  
  1378.     case $calender.month
  1379.     when 1..2
  1380.       $calender.season = :Winter
  1381.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  1382.     when 3..5
  1383.       $calender.season = :Spring
  1384.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 0
  1385.     when 6..8
  1386.       $calender.season = :Summer
  1387.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 1
  1388.     when 9..11
  1389.       $calender.season = :Autumn
  1390.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 2
  1391.     when 12
  1392.       $calender.season = :Winter
  1393.       $game_variables[WhiteSnow::SEASON_STORE_VID] = 3
  1394.     end
  1395.     $calender.change_weather
  1396.   end
  1397.   #--------------------------------------------------------------------------
  1398.   # ● 年を設定
  1399.   #--------------------------------------------------------------------------
  1400.   def set_year(year)
  1401.     $calender.year = year
  1402.     $game_variables[WhiteSnow::YEAR_STORE_VID] = year
  1403.     $calender.change_weather
  1404.   end
  1405.   #--------------------------------------------------------------------------
  1406.   # ● 天候を設定
  1407.   #--------------------------------------------------------------------------
  1408.   def set_weather(weather)
  1409.     $calender.weather = weather
  1410.     $calender.randomize_weather_count
  1411.     $calender.perform_weather_effect
  1412.     case weather
  1413.     when :fine
  1414.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 0
  1415.     when :rain
  1416.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 1
  1417.     when :snow
  1418.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 2
  1419.     when :thunder
  1420.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 3
  1421.     when :storm
  1422.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 4
  1423.     when :star
  1424.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 5
  1425.     when :s_storm
  1426.       $game_variables[WhiteSnow::WEATHER_STORE_VID] = 6
  1427.     end
  1428.   end
  1429.   #--------------------------------------------------------------------------
  1430.   # ● 天候エフェクトを発生させる
  1431.   #--------------------------------------------------------------------------
  1432.   def perform_weather_effect
  1433.     $calender.perform_weather_effect
  1434.   end
  1435.   #--------------------------------------------------------------------------
  1436.   # ● 画面のフラッシュ(引数指定)
  1437.   #--------------------------------------------------------------------------
  1438.   def perform_flash(r, g, b, alpha, dur = 12)
  1439.     color = Color.new(r, g, b, alpha)
  1440.     screen.start_flash(color, dur)
  1441.   end
  1442.   #--------------------------------------------------------------------------
  1443.   # ● 日付を進める
  1444.   #--------------------------------------------------------------------------
  1445.   def shift_date(num)
  1446.     num.times{$calender.shift_date}
  1447.     $calender.change_weather
  1448.   end
  1449.   #--------------------------------------------------------------------------
  1450.   # ● 月を進める
  1451.   #--------------------------------------------------------------------------
  1452.   def shift_month(num)
  1453.     table = WhiteSnow::DAYS_TABLE
  1454.     days = table[$calender.month] - $calender.date + 1
  1455.     for i in 1..num
  1456.       days += table[($calender.month + i) % 12]
  1457.     end
  1458.     days.times{$calender.shift_date}
  1459.     $calender.change_weather
  1460.   end
  1461.   #--------------------------------------------------------------------------
  1462.   # ● 年を進める
  1463.   #--------------------------------------------------------------------------
  1464.   def shift_year(num)
  1465.     (num * 365).times{$calender.shift_date}
  1466.     $calender.change_weather
  1467.   end
  1468.   #--------------------------------------------------------------------------
  1469.   # ● 指定した日まで日付を進める
  1470.   #--------------------------------------------------------------------------
  1471.   def shift_date_to(m, d, y = -1)
  1472.     y = $calender.year if y == -1
  1473.     if $calender.days_dif(y, m, d) > 0
  1474.       $calender.days_dif(y, m, d).times{$calender.shift_date}
  1475.     else
  1476.       $calender.days_dif(y, m, d).abs.times{$calender.back_date}
  1477.     end
  1478.     $calender.change_weather
  1479.   end
  1480. end
  1481.  
  1482. #==============================================================================
  1483. # ■ SceneManager
  1484. #------------------------------------------------------------------------------
  1485. #  シーン遷移を管理するモジュールです。たとえばメインメニューからアイテム画面
  1486. # を呼び出し、また戻るというような階層構造を扱うことができます。
  1487. #==============================================================================
  1488.  
  1489. module SceneManager
  1490.   #--------------------------------------------------------------------------
  1491.   # ● エイリアス用特異メソッド
  1492.   #--------------------------------------------------------------------------
  1493.   class << self
  1494.     alias :calender_goto   :goto
  1495.     alias :calender_call   :call
  1496.     alias :calender_return :return
  1497.   end
  1498.   #--------------------------------------------------------------------------
  1499.   # ● 直接遷移
  1500.   #--------------------------------------------------------------------------
  1501.   def self.goto(scene_class)
  1502.     calender_goto(scene_class)
  1503.     if scene_class == Scene_Map
  1504.       $calender.perform_weather_effect
  1505.       $calender.change_tone_by_calender
  1506.     end
  1507.   end
  1508.   #--------------------------------------------------------------------------
  1509.   # ● 呼び出し
  1510.   #--------------------------------------------------------------------------
  1511.   def self.call(scene_class)
  1512.     calender_call(scene_class)
  1513.     if scene_class == Scene_Map
  1514.       $calender.perform_weather_effect
  1515.       $calender.change_tone_by_calender
  1516.     end
  1517.   end
  1518.   #--------------------------------------------------------------------------
  1519.   # ● 呼び出し元へ戻る
  1520.   #--------------------------------------------------------------------------
  1521.   def self.return
  1522.     calender_return
  1523.     if @scene.class == Scene_Map
  1524.       $calender.perform_weather_effect
  1525.       $calender.change_tone_by_calender
  1526.     end
  1527.   end
  1528. end
  1529.  
  1530. #==============================================================================
  1531. # ■ Game_Switches
  1532. #------------------------------------------------------------------------------
  1533. #  スイッチを扱うクラスです。組み込みクラス Array のラッパーです。このクラス
  1534. # のインスタンスは $game_switches で参照されます。
  1535. #==============================================================================
  1536.  
  1537. class Game_Switches
  1538.   #--------------------------------------------------------------------------
  1539.   # ● スイッチの設定 (再定義)
  1540.   #     value : ON (true) / OFF (false)
  1541.   #--------------------------------------------------------------------------
  1542.   def []=(switch_id, value)
  1543.     @data[switch_id] = value
  1544.     on_change
  1545.     if switch_id == WhiteSnow::TONE_CHANGE_FORBID_SID or switch_id == WhiteSnow::INSIDE_FLAG_SID
  1546.       case value
  1547.       when true
  1548.         $calender.interpreter.change_tone(0, 0, 0, 0, 0)
  1549.       when false
  1550.         $calender.change_tone_by_calender(0)
  1551.       end
  1552.     end
  1553.     if switch_id == WhiteSnow::WEATHER_EFFECT_FORBID_SID or switch_id == WhiteSnow::INSIDE_FLAG_SID
  1554.       case value
  1555.       when true
  1556.         $calender.interpreter.change_weather(:none, 0, 0)
  1557.         RPG::BGS.stop if (WhiteSnow::WEATHER_BGS_ENABLE and [0, 1].include?(WhiteSnow::INSIDE_BGS_TYPE)) or $game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  1558.         $calender.play_inside_bgs if WhiteSnow::WEATHER_BGS_ENABLE and WhiteSnow::INSIDE_BGS_TYPE == 1 and !$game_switches[WhiteSnow::WEATHER_BGS_DISABLE]
  1559.       when false
  1560.         $calender.perform_weather_effect(0)
  1561.       end
  1562.     end
  1563.   end
  1564. end
  1565.  
  1566. #==============================================================================
  1567. # ■ Game_Player
  1568. #------------------------------------------------------------------------------
  1569. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  1570. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  1571. #==============================================================================
  1572.  
  1573. class Game_Player
  1574.   #--------------------------------------------------------------------------
  1575.   # ● 場所移動の実行
  1576.   #--------------------------------------------------------------------------
  1577.   alias calender_perform_transfer perform_transfer
  1578.   def perform_transfer
  1579.     if transfer?
  1580.       $calender.perform_weather_effect(0)
  1581.       $calender.change_tone_by_calender(0)
  1582.     end
  1583.     calender_perform_transfer
  1584.   end
  1585. end
  1586.  
  1587. #==============================================================================
  1588. # ■ RPG::Map
  1589. #------------------------------------------------------------------------------
  1590. #  マップのデータクラスです。
  1591. #==============================================================================
  1592.  
  1593. class RPG::Map
  1594.   #--------------------------------------------------------------------------
  1595.   # ● マップBGM
  1596.   #--------------------------------------------------------------------------
  1597.   def bgm
  1598.     bgm = Hash.new(@bgm)
  1599.     @note.each_line do |line|
  1600.       case line
  1601.       when /<(?:早朝|early)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1602.         bgm[:early_morning] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1603.       when /<(?:朝|morning)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1604.         bgm[:morning] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1605.       when /<(?:昼|noon)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1606.         bgm[:noon] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1607.       when /<(?:夕方|evening)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1608.         bgm[:evening] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1609.       when /<(?:夜|night)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1610.         bgm[:night] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1611.       when /<(?:深夜|mid)\s*(.+)\s*\,\s*(\d+)\s*\,\s*(\d+)>/
  1612.         bgm[:midnight] = RPG::BGM.new($1, $2.to_i, $3.to_i)
  1613.       end
  1614.     end
  1615.     return bgm
  1616.   end
  1617. end
  1618.  
  1619. #==============================================================================
  1620. # ■ Game_Map
  1621. #------------------------------------------------------------------------------
  1622. #  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
  1623. # このクラスのインスタンスは $game_map で参照されます。
  1624. #==============================================================================
  1625.  
  1626. class Game_Map
  1627.   #--------------------------------------------------------------------------
  1628.   # ● BGM / BGS 自動切り替え (再定義)
  1629.   #--------------------------------------------------------------------------
  1630.   def autoplay
  1631.     case $calender.time_zone
  1632.     when :early_morning
  1633.       @map.bgm[:early_morning].play if @map.autoplay_bgm
  1634.     when :morning
  1635.       @map.bgm[:morning].play if @map.autoplay_bgm
  1636.     when :noon
  1637.       @map.bgm[:noon].play if @map.autoplay_bgm
  1638.     when :evening
  1639.       @map.bgm[:evening].play if @map.autoplay_bgm
  1640.     when :night
  1641.       @map.bgm[:night].play if @map.autoplay_bgm
  1642.     when :midnight
  1643.       @map.bgm[:midnight].play if @map.autoplay_bgm
  1644.     end
  1645.     @map.bgs.play if @map.autoplay_bgs
  1646.   end
  1647. end
  1648.  
  1649. module Kernel
  1650.   #--------------------------------------------------------------------------
  1651.   # ● 重み付きの乱数を生成
  1652.   #--------------------------------------------------------------------------
  1653.   def p_ex_rand(rate, n = 0)
  1654.     srand
  1655.     rate = 99 if rate == 100
  1656.     if n == 0
  1657.       r = 1 - rand ** (1 - rate * 0.01)
  1658.       if r == 1
  1659.         return 0
  1660.       else
  1661.         return r
  1662.       end
  1663.     else
  1664.       num = n.truncate
  1665.       r = 1 - rand ** (1 - rate * 0.01)
  1666.       r = 0 if r == 1
  1667.       return (r * num).floor
  1668.     end
  1669.   end
  1670. end
   
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-18 06:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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