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

Project1

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

[已经解决] 昼夜脚本求开关?脚本无力!日文无力!求大神指教

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2013-8-6
帖子
101
跳转到指定楼层
1
发表于 2013-8-24 11:25:46 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
用了此脚本后,进入游戏就自动开启昼夜和时间系统,且一直在右上角显示,求如何调用,开关操作
新人初到贵地,希望大神们指点下,谢谢
另外,大神们能指教下,如何调用此脚本的时间来控制事件那就更好啦,{:2_270:} 可以做出有趣的剧情了,谢谢
RUBY 代码复制
  1. #==============================================================================
  2. # ■ BMSP 暦システム[KOYOMISYSTEM] Ver1.10 2013/06/04
  3. #------------------------------------------------------------------------------
  4. #  日付,時間の概念を導入します.
  5. #==============================================================================
  6. #------------------------------------------------------------------------------
  7. # ■内容
  8. # ゲームに日付,時間の概念を導入します.
  9. # 自由に暦を設定して任意のタイミングで時間を進めることができます.
  10. # 時間に合わせて画面の色調を自動で変更することも可能です.
  11. #
  12. # 位置:特に指定はありません
  13. #
  14. # ■使用方法
  15. # スクリプトに丸ごと貼り付けていただければ使用できます.
  16. #
  17. # ●暦の設定
  18. # まずは詳細設定にて暦の設定を行って下さい.
  19. #
  20. # ○RANKS:ランクの設定を行います.
  21. # ランクとは秒,分,時,,などのような時間の単位を表します.
  22. # ランクは上から順にランク0,ランク1と呼び,
  23. # あるランクの値が上限を超えると一つ上のランクに繰り上げされます.
  24. # 各ランクは
  25. #   ランク名 => 値の範囲
  26. # のように設定します.
  27. # 例
  28. #   RANKS = {
  29. #     :sec => 0...60,
  30. #     :min => 0...60,
  31. #     :hour => 0...24,
  32. #     :day => 1..30,
  33. #     :mon => 1..12,
  34. #     :year => 1..9999
  35. #   }
  36. # 上記の例ではランクの低い順に秒,分,時,日,月,年を設定しています.
  37. # また,それぞれ取り得る値の範囲も指定しています.
  38. # (一月30日で年は便宜上9999年を上限としています)
  39. # 例えばdayが25のときに7加算され32になると,
  40. # 結果としてdayは2になり,monは1加算されます.
  41. # このようにして基本となる暦を作成します.
  42. # この部分を任意に変えることで自由な暦を設定できます.
  43. #
  44. # ○ SPECIAL_EXP:ランク以外の特別な暦情報を設定します
  45. # 例えば曜日や季節,時間帯などを設定することができます.
  46. # 設定の仕方は以下のフォーマットにしたがってください.
  47. #   SPECIAL_EXP[:%special%] = ->(cal){
  48. #      任意の式
  49. #   }
  50. # %special%に設定する名前を指定し,対応する任意の式を記述します.
  51. # このときcalにより暦オブジェクトが参照できます.
  52. # 例・時間帯の設定
  53. #   SPECIAL_EXP[:timezone] = ->(cal){
  54. #     case cal.hour
  55. #    when 4,5
  56. #       0 # 早朝は0を返す
  57. #     when 6,7,8
  58. #       1 # 朝は1を返す
  59. #     when 9...16
  60. #       2 # 昼は2を返す
  61. #     when 16,17
  62. #       3 # 夕方は3を返す
  63. #     when 18...22
  64. #       4 # 夜は4を返す
  65. #     when 22...24,0...4
  66. #      5 # 深夜は5を返す
  67. #     end
  68. #   }
  69. #
  70. # ○ TRANSFORM:表示変換の設定を行います.
  71. # 暦を文字列として表現する際,整数以外の形式で表示したい場合に使用します.
  72. # また,全く新しい独自の表示形式を指定することも可能
  73. # 例・月の文字列表記
  74. #   TRANSFORM[:mon] = ->(cal){
  75. #     ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  76. #      "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  77. #   }
  78. #
  79. # ○ INITIAL_CAL:ゲーム開始時の暦を設定します.
  80. # 設定したいランクと対応する値を指定します.
  81. # 指定されなかったランクの初期値は値の範囲のうち最小のものになります.
  82. # 例
  83. #   INITIAL_CAL = {
  84. #     :day => 15,
  85. #     :mon => 12,
  86. #     :year => 2011
  87. #   }
  88. # この例では2011年12月15日0時0分0秒が初期値となります.
  89. #
  90. # ○ MAP_WINDOW:マップで暦ウインドウを表示するかを設定します.
  91. # この設定はゲーム中以下のスクリプトにて切り替え可能です.
  92. #   $game_map.koyomi_dispaly = true/false
  93. #
  94. # ○ MAP_WINDOW_FADE:マップでの暦ウインドウをフェードするか設定します.
  95. # trueのとき一定時間表示したあとフェードアウトします.
  96. # falseのとき暦ウインドウを常に表示します.
  97. #
  98. # ○ MAP_WINDOW_FORMAT:マップでの暦ウインドウの表示内容を設定します.
  99. # 配列でフォーマットを指定します.一つの要素につき一行となります.
  100. # フォーマットについては後述のメソッドstrftimeを参照してください.
  101. #
  102. # ○ MENU_WINDOW:メニューで暦ウインドウを表示するかを設定します.
  103. #
  104. # ○ MENU_WINDOW_FORAMT:メニューでの暦ウインドウの表示内容を設定します.
  105. # 設定の仕方はMAP_WINDOW_FORMATと同様です.
  106. #
  107. # ○ AUTO_TONE:暦による画面の色調の自動変更を設定します.
  108. # trueの時時間によって画面の色調が自動で変更されます.
  109. # また,イベントコマンドによる画面の色調変更は機能しなくなります.
  110. # ただし,後述する色調固定マップでは機能します.
  111. # この設定はゲーム中以下のスクリプトにて切り替え可能です.
  112. #   $game_koyomi.auto_tone = true/false
  113. #
  114. # ○ AUTO_TONE_DURATION:デフォルトの色調変更時間の設定です.
  115. # 色調変更の条件で色調変更時間が指定されない場合はこの値が適用されます.
  116. #
  117. # ○ AUTO_TONE_COND:色調変更の条件を設定します.
  118. # 色調を変更する条件となる時間とそれに対応する色調(Tone)を指定します.
  119. # 上にある条件ほど優先的にマッチします.
  120. # 条件の指定方法は条件に設定したいrankをキーにして対応する値を直接指定するか
  121. # 値の範囲で指定します.22..4(22...24かつ0..4)のような指定も可能です.
  122. # 範囲に関しては(0...3)の場合0から2まで,0...3の場合0から3までを表します.
  123. # また,対応する色調は以下で指定します.
  124. #   Tone.new(赤(-255~255),緑(-255~255),青(-255~255),グレー(0~255))
  125. # 例・時間帯によって色調を変える
  126. # AUTO_TONE_COND = {
  127. #   {:hour => 16...18} => Tone.new(68,-34,-34,0),
  128. #   {:hour => 18...22} => Tone.new(-34,-34,0,34),
  129. #   {:hour => 22...4} => Tone.new(-68,-68,0,68),
  130. #   {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  131. #   {:hour => 6...9} => Tone.new(34,34,34,34)
  132. # }
  133. #
  134. # ○ FIX_TONE_ON_BATTLE:バトル画面では画面の色調を変更しない設定にできます.
  135. # trueの場合マップで色調が自動変更されている場合でも画面の色調はデフォルト(0,0,0,0)になります.
  136. # また,色調固定マップの場合でもデフォルトの色調になります.
  137. #
  138. # ○ AUTO_TIME_PASS:時間が自動経過するかを設定します.
  139. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  140. #   $game_koyomi.auto_time_pass = true/false
  141. #
  142. # ○ AUTO_TIME_PASS_DURATION:時間の自動経過間隔を設定します.
  143. # 指定したフレームが経過するごとにTIME_PASSINGで指定した分の時間が経過します.
  144. #
  145. # ○ TIME_PASSING:時間の自動経過量を設定します.
  146. # 加算したいランクと対応する加算量を指定してください.
  147. # 例・1分30秒ずつ加算する
  148. #   TIME_PASSING = {:min => 1, :sec => 30}
  149. #
  150. # ○ STOP_ON_EVENT:イベント中は時間の自動経過を停止するか設定します.
  151. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  152. #   $game_koyomi.stop_auto_time_pass_on_event = true/false
  153. #
  154. # ○ STOP_ON_BATTLE:バトル中は時間の自動経過を停止するか設定します.
  155. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  156. #   $game_koyomi.stop_auto_time_pass_on_battle = true/false
  157. #
  158. # ○ MOVE_TIME_PASS:場所移動による時間経過を設定します.
  159. # 「場所移動」が行われる度に時間を経過させることができます.
  160. # 加算したいランクと対応する加算量を指定してください.
  161. # 場所移動により加算したくない場合は空のハッシュを指定してください.
  162. #
  163. # ○ BATTLE_START_TIME_PASS:戦闘開始による時間経過を設定します.
  164. # 戦闘開始時に時間を経過させることができます.
  165. # 加算したいランクと対応する加算量を指定してください.
  166. # 加算したくない場合は空のハッシュを指定してください.
  167. #
  168. # ○ BATTLE_END_TIME_PASS:戦闘終了による時間経過を設定します.
  169. # 戦闘終了時に時間を経過させることができます.
  170. # 加算したいランクと対応する加算量を指定してください.
  171. # 加算したくない場合は空のハッシュを指定してください.
  172. #
  173. # ●暦の操作
  174. # ゲーム中は基本的にスクリプトコマンドから$game_koyomiにアクセスすることで暦を操作できます.
  175. # 以下は$game_koyomiからできる主な操作一覧です.
  176. # ○ $game_koyomi.auto_tone = true/false
  177. # 時間による画面色調の自動変更をするかどうか設定できます.
  178. #
  179. # ○ $game_koyomi.tone_temp_diration = int
  180. # これを設定した次の画面色調自動変更時のみ指定した時間で色調が変化します.
  181. # イベント等で時間を進めた際早く色調を切り替えたいときなどに利用します.
  182. #
  183. # ○ $game_koyomi.move_temp_time_pass = {:rank => value, ...}
  184. # これを指定した次の場所移動時のみ指定した分だけ時間が経過します.
  185. #
  186. # ○ $game_koyomi.battle_start_temp_time_pass = {:rank => value, ...}
  187. # これを指定した次の戦闘開始時のみ指定した分だけ時間が経過します.
  188. #
  189. # ○ $game_koyomi.battle_end_temp_time_pass = {:rank => value, ...}
  190. # これを指定した次の戦闘終了時時のみ指定した分だけ時間が経過します.
  191. #
  192. # ○ $game_koyomi.auto_time_pass = true/false
  193. # 自動で時間を経過させるか設定できます.
  194. #
  195. # ○ $game_koyomi.stop_auto_time_pass_on_event = true/false
  196. # 自動で時間が経過するとき,イベント中は時間経過を停止するか設定できます.
  197. #
  198. # ○ $game_koyomi.stop_auto_time_pass_on_battlet = true/false
  199. # 自動で時間が経過するとき,バトル中は時間経過を停止するか設定できます.
  200. #
  201. # ○ $game_koyomi.rank
  202. # 設定した各ランクの値を取得できます.
  203. # 例・現在の月を取得
  204. #   $game_koyomi.mon
  205. #
  206. # ○ $game_koyomi.rank = value
  207. # 設定した各ランクの値を変更できます.
  208. # 例・現在の月を3に設定
  209. #   $game_koyomi.mon = 3
  210. # 例・3時間進める
  211. #   $game_koyomi.hour += 3
  212. #
  213. # ○ $game_koyomi.special
  214. # 設定した各特殊表現の値を取得できます.
  215. # 例・現在の時間帯を取得
  216. #   $game_koyomi.timezone
  217. #
  218. # ○ $game_koyomi.set(init)
  219. # 暦をセットします.
  220. # initは各ランクと対応する値のハッシュか,後述する起算時からのランク0からみた経過時間
  221. # を指定します.
  222. # 例・ハッシュで暦をセット
  223. #   $game_koyomi.set(year: 2011, mon: 12. day: 15)
  224. # 例・ある暦から得た起算時からの経過時間で暦をセット
  225. #   $game_koyomi.set(koyomi.to_i)
  226. #
  227. # ○ $game_koyomi.time_pass(amount)
  228. # amountに各ランクと対応する値のハッシュを指定して,その分だけ時間を経過させます.
  229. # 例・1月と3時間だけ時間をすすめる
  230. #   $game_koyomi.time_pass(mon: 1, hour: 3)
  231. #
  232. # ○ $game_koyomi.to_i
  233. # 起算時からのランク0からみた経過時間を取得します.
  234. # この結果を変数などに保存することで容易に暦を復元できます.
  235. # 例・暦を整数にして保存・復元する
  236. #   koyomi = $game_koyomi.to_i
  237. #   $game_koyomi.set(koyomi)
  238. #
  239. # ○ $game_koyomi.strftime(format)
  240. # formatに変換文字列を指定して現在の暦を文字列にします.
  241. # format中には以下の二つの特別な文字列を記述することで暦の値を置き換えることができます.
  242. #   <<表示桁#rank>>
  243. # 表示桁は先頭に - または 0 を付けた数字と置き換えます.
  244. # rankは設定したランクのいずれかと置き換えます.
  245. # ランクの値が指定した数字の桁分の幅の文字列と置換されます.
  246. # 先頭に 0 をつけると余った桁0で埋められます.
  247. # 先頭に - をつけると右寄せとなります.
  248. #   <<label>>
  249. # labelはTRANSFORMで指定した変換ラベルと置き換えます.
  250. # TRANSFORMで設定した内容に従って文字列に置換されます.
  251. # 例・2011年12月15日4時00分00秒の暦のとき
  252. #   $game_koyomi.strftime("<<4#year>>-<<4#mon>>-<<04#day>>")
  253. #   #=> 2011-  12-0015
  254. #   $game_koyomi.strftime("<<mon>>-<<-4#day>>:<<timezone>>")
  255. #   #=> Dec-15  :早朝
  256. #
  257. # ●マップの個別設定
  258. # マップのメモ欄に以下を記述することでマップごとに設定を行うことができます.
  259. #   ==暦非表示==
  260. # マップで暦ウインドウを表示する場合でもこの記述があるマップは暦ウインドウを表示しません.
  261. #
  262. #   ==暦停止==
  263. # 自動で時間が経過する場合でもこの記述があるマップは自動で時間が経過しません.
  264. #
  265. #   ==色調固定[r,g,b,gray]==
  266. # 自動で画面色調が変更される場合でもこの記述があるマップは指定した色調になります.
  267. # 屋内マップなどで利用します.薄暗い洞窟等も表現可能です.
  268. # r,g,b,grayはそれぞれ色調(トーン)を指定する値です.
  269. # 例・時間にかかわらず薄暗い洞窟
  270. #   ==色調固定[-34,-34,-34,34]==
  271. #
  272. # ■注意
  273. # このスクリプトでは
  274. # 「RPG::Map」「Game_Map」「Scene_Menu」「Scene_Map」
  275. # 「Game_Screen」「Game_Troop」「Scene_Battle」
  276. # のメソッドを改変しています.
  277. # ■情報
  278. # このスクリプトはgentlawkによって作られたものです.
  279. # 利用規約は[url]http://blueredzone.com[/url]をご覧ください.
  280. #------------------------------------------------------------------------------
  281. module BMSP
  282.   @@includes ||= {}
  283.   @@includes[:KoyomiSystem] = 1.00
  284.   module KoyomiSystem
  285.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  286.     #詳細設定
  287.     # ランクの設定
  288.     RANKS = {
  289.       :sec => 0...60,
  290.       :min => 0...60,
  291.       :hour => 0...24,
  292.       :day => 1..30,
  293.       :mon => 1..12,
  294.       :year => 1..9999
  295.     }
  296.     #------------------------------------------------------------
  297.     # ランク以外の暦情報の設定
  298.     SPECIAL_EXP = {}
  299.     SPECIAL_EXP[:timezone] = ->(cal){
  300.       case cal.hour
  301.       when 4,5
  302.         0 # 早朝は0を返す
  303.       when 6,7,8
  304.         1 # 朝は1を返す
  305.       when 9...16
  306.         2 # 昼は2を返す
  307.       when 16,17
  308.         3 # 夕方は3を返す
  309.       when 18...22
  310.         4 # 夜は4を返す
  311.       when 22...24,0...4
  312.         5 # 深夜は5を返す
  313.       end
  314.     }
  315.     #------------------------------------------------------------
  316.     # 表示変換の設定
  317.     TRANSFORM = {}
  318.     TRANSFORM[:mon] = ->(cal){
  319.       ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  320.        "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  321.     }
  322.     TRANSFORM[:timezone] = ->(cal){
  323.       case cal.timezone # 上で設定した時間帯で条件分岐
  324.       when 0
  325.         "黎明"
  326.       when 1
  327.         "上午"
  328.       when 2
  329.         "中午"
  330.       when 3
  331.         "下午"
  332.       when 4
  333.         "夜晚"
  334.       when 5
  335.         "深夜"
  336.       end
  337.     }
  338.     #------------------------------------------------------------
  339.     # ゲーム開始時の暦
  340.     INITIAL_CAL = {
  341.       :sec => 0,
  342.       :min => 0,
  343.       :hour => 0,
  344.       :day => 20,
  345.       :mon => 10,
  346.       :year => 1500
  347.     }
  348.     #------------------------------------------------------------
  349.     # マップで暦ウインドウを表示するか
  350.     MAP_WINDOW = true
  351.     # マップでの暦ウインドウをフェードするか(falseで常に表示)
  352.     MAP_WINDOW_FADE = false
  353.     # マップでの暦ウインドウの表示内容
  354.     MAP_WINDOW_FORMAT = [
  355.       "<<4#year>>年<<2#mon>>月<<2#day>>日",
  356.       "<<02#hour>>:<<02#min>>:<<02#sec>> [<<timezone>>]"
  357.     ]
  358.     # メニューで暦ウインドウを表示するか
  359.     MENU_WINDOW = true
  360.     # メニューでの暦ウインドウの表示内容
  361.     MENU_WINDOW_FORMAT = [
  362.       "<<4#year>>-<<2#mon>>-<<2#day>>",
  363.       "<<02#hour>>:<<02#min>>:<<02#sec>>"
  364.     ]
  365.     #------------------------------------------------------------
  366.     # 暦による画面の色調の自動変更
  367.     AUTO_TONE = true
  368.     # デフォルト色調変更時間
  369.     AUTO_TONE_DURATION = 120
  370.     # 色調変更の条件
  371.     AUTO_TONE_COND = {
  372.       {:hour => 16...18} => Tone.new(68,-34,-34,0),
  373.       {:hour => 18...22} => Tone.new(-34,-34,0,34),
  374.       {:hour => 22...4} => Tone.new(-68,-68,0,68),
  375.       {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  376.       {:hour => 6...9} => Tone.new(34,34,34,34)
  377.     }
  378.     # バトル画面では色調を変更しない
  379.     FIX_TONE_ON_BATTLE = false
  380.     #------------------------------------------------------------
  381.     # 時間が自動経過するか
  382.     AUTO_TIME_PASS = true
  383.     # 時間の自動経過間隔
  384.     AUTO_TIME_PASS_DURATION = 30
  385.     # 時間の自動経過量
  386.     TIME_PASSING = {:min => 10}
  387.     # イベント中は自動経過を停止するか
  388.     STOP_ON_EVENT = true
  389.     # バトル中は自動経過を停止するか
  390.     STOP_ON_BATTLE = false
  391.     #------------------------------------------------------------
  392.     # 場所移動による時間経過
  393.     MOVE_TIME_PASS = {:min => 5}
  394.     # 戦闘開始による時間経過
  395.     BATTLE_START_TIME_PASS = {}
  396.     # 戦闘終了による時間経過
  397.     BATTLE_END_TIME_PASS = {}
  398.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 導入スクリプトのチェック
  402.   #--------------------------------------------------------------------------
  403.   class << self
  404.     if method_defined?(:check_script)
  405.       alias koyomisystem_check_script check_script
  406.     end
  407.   end
  408.   def self.check_script(script, version)
  409.     if methods.include?(:koyomisystem_check_script)
  410.       koyomisystem_check_script(script, version)
  411.     end
  412.     @@includes[script] && @@includes[script] >= version
  413.   end
  414. end
  415. #==============================================================================
  416. # ■ RPG::Map
  417. #==============================================================================
  418. class RPG::Map
  419.   #--------------------------------------------------------------------------
  420.   # ● 暦ウインドウ表示のマップか
  421.   #--------------------------------------------------------------------------
  422.   def bmsp_koyomisystem_display_koyomi_on_map?
  423.     return @bmsp_koyomi_display if @bmsp_koyomi_display
  424.     @bmsp_koyomi_display = !self.note.include?('==暦非表示==')
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● 色調固定
  428.   #--------------------------------------------------------------------------
  429.   def bmsp_koyomisystem_fix_tone
  430.     return @bmsp_fix_tone unless @bmsp_fix_tone.nil?
  431.     if self.note =~ /==色調固定\[(\d+),(\d+),(\d+),(\d+)\]==/
  432.       r,g,b,g = $1.to_i,$2.to_i,$3.to_i,$4.to_i
  433.       @bmsp_fix_tone = Tone.new(r,g,b,g)
  434.     else
  435.       @bmsp_fix_tone = false
  436.     end
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● 暦停止のマップか
  440.   #--------------------------------------------------------------------------
  441.   def bmsp_koyomisystem_koyomi_stop?
  442.     return @bmsp_koyomi_stop if @bmsp_koyomi_stop
  443.     @bmsp_koyomi_stop = self.note.include?('==暦停止==')
  444.   end
  445. end
  446. #==============================================================================
  447. # ■ Game_Koyomi
  448. #==============================================================================
  449. class Game_Koyomi
  450.   #============================================================================
  451.   # ■ Ranks
  452.   #============================================================================
  453.   module Ranks
  454.     #--------------------------------------------------------------------------
  455.     # ● モジュール変数
  456.     #--------------------------------------------------------------------------
  457.     @@ranks = BMSP::KoyomiSystem::RANKS
  458.     @@transform = BMSP::KoyomiSystem::TRANSFORM
  459.     #--------------------------------------------------------------------------
  460.     # ● ランクの取得
  461.     #--------------------------------------------------------------------------
  462.     def self.ranks
  463.       @@ranks
  464.     end
  465.     #--------------------------------------------------------------------------
  466.     # ● 表示変換
  467.     #--------------------------------------------------------------------------
  468.     def self.transform(label)
  469.       @@transform[label]
  470.     end
  471.     #--------------------------------------------------------------------------
  472.     # ● ランクの取得(順位指定)
  473.     #--------------------------------------------------------------------------
  474.     def self.rank(i)
  475.       r = @@ranks.to_a[i]
  476.       return nil if r.nil?
  477.       r.first
  478.     end
  479.     #--------------------------------------------------------------------------
  480.     # ● ノーマライズ
  481.     #--------------------------------------------------------------------------
  482.     def self.normalize(i, rank)
  483.       i - @@ranks[rank].min
  484.     end
  485.     #--------------------------------------------------------------------------
  486.     # ● 指定した範囲の値か
  487.     #--------------------------------------------------------------------------
  488.     def self.include_range?(rank, range, value)
  489.       rank_min = @@ranks[rank].min
  490.       rank_max = @@ranks[rank].max
  491.       range_min = range.min
  492.       range_max = range.max
  493.       unless range_min.nil? || range_max.nil? # 有効なRange
  494.         min = [[range_min, rank_min].max, rank_max].min
  495.         max = [[range_max, rank_min].max, rank_max].min
  496.         (min..max).include?(value)
  497.       else # 無効なRange
  498.         first = range.first
  499.         last = range.last
  500.         nf = [[first, rank_min].max, rank_max].min
  501.         nl = [[last, rank_min].max, rank_max].min
  502.         range1 = (nf..rank_max)
  503.         range2 = nl <= last && range.exclude_end? ? (rank_min...nl) : (rank_min..nl)
  504.         range1.include?(value) || range2.include?(value)
  505.       end
  506.     end
  507.     #--------------------------------------------------------------------------
  508.     # ● ランクを一つ進める
  509.     #--------------------------------------------------------------------------
  510.     def self.succ(rank)
  511.       find = false
  512.       @@ranks.each do |r,|
  513.         return r if find
  514.         find = true if r == rank
  515.       end
  516.       return nil
  517.     end
  518.   end
  519.   #============================================================================
  520.   #--------------------------------------------------------------------------
  521.   # ● 公開インスタンス変数
  522.   #--------------------------------------------------------------------------
  523.   attr_accessor :auto_tone # 画面の色調自動変更フラグ
  524.   attr_accessor :tone_temp_duration # 画面の色調時間一時変更フラグ
  525.   attr_accessor :move_temp_time_pass # 場所移動による時間経過一時変更フラグ
  526.   attr_accessor :battle_start_temp_time_pass # 戦闘開始による時間経過一時変更フラグ
  527.   attr_accessor :battle_end_temp_time_pass # 戦闘終了による時間経過一時変更フラグ
  528.   attr_accessor :auto_time_pass # 時間自動経過フラグ
  529.   attr_accessor :stop_auto_time_pass_on_event # イベント中時間自動経過停止フラグ
  530.   attr_accessor :stop_auto_time_pass_on_battle # バトル中時間自動経過停止フラグ
  531.   attr_reader :fix_tone_on_battle # バトル画面色調固定フラグ
  532.   #--------------------------------------------------------------------------
  533.   # ● ランクアクセサの定義
  534.   #--------------------------------------------------------------------------
  535.   Ranks.ranks.each_key do |rank|
  536.     reader = rank
  537.     writer = :"#{rank}="
  538.     define_method(reader){ @calendar[rank] }
  539.     define_method(writer){ |value| @calendar[rank] = value; fit; value }
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ● 特別表現リーダーの定義
  543.   #--------------------------------------------------------------------------
  544.   BMSP::KoyomiSystem::SPECIAL_EXP.each do |special, exp|
  545.     define_method(special){ exp.call(self) }
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● オブジェクト初期化
  549.   #--------------------------------------------------------------------------
  550.   def initialize(init= {})
  551.     # 各種設定の初期化
  552.     @auto_tone = BMSP::KoyomiSystem::AUTO_TONE
  553.     @tone_temp_duration = 0
  554.     @default_tone = Tone.new(0,0,0,0)
  555.     @auto_time_pass = BMSP::KoyomiSystem::AUTO_TIME_PASS
  556.     @auto_time_pass_amount = {
  557.       :duration => BMSP::KoyomiSystem::AUTO_TIME_PASS_DURATION,
  558.       :amount => BMSP::KoyomiSystem::TIME_PASSING
  559.     }
  560.     @move_time_pass = BMSP::KoyomiSystem::MOVE_TIME_PASS
  561.     @battle_start_time_pass = BMSP::KoyomiSystem::BATTLE_START_TIME_PASS
  562.     @battle_end_time_pass = BMSP::KoyomiSystem::BATTLE_END_TIME_PASS
  563.     @stop_auto_time_pass_on_event = BMSP::KoyomiSystem::STOP_ON_EVENT
  564.     @stop_auto_time_pass_on_battle = BMSP::KoyomiSystem::STOP_ON_BATTLE
  565.     @fix_tone_on_battle = BMSP::KoyomiSystem::FIX_TONE_ON_BATTLE
  566.     # 暦の初期化
  567.     set(init)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ● 範囲外の暦を修正
  571.   #--------------------------------------------------------------------------
  572.   def fit
  573.     carry = 0
  574.     @calendar.each_key do |rank|
  575.       @calendar[rank] += carry
  576.       value = @calendar[rank]
  577.       if Ranks.ranks[rank].include?(value)
  578.         carry = 0
  579.       else
  580.         n_value = Ranks.normalize(value, rank)
  581.         card = Ranks.ranks[rank].count
  582.         carry = n_value / card
  583.         @calendar[rank] = n_value % card + Ranks.ranks[rank].min
  584.       end
  585.     end
  586.     @int = calc_to_i
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● 暦のセット
  590.   #--------------------------------------------------------------------------
  591.   def set(init)
  592.     @calendar = {}
  593.     ini_h = init.is_a?(Hash) ? init : {}
  594.     Ranks.ranks.each_key do |rank|
  595.       @calendar[rank] =
  596.         ini_h[rank] ? ini_h[rank] : Ranks.ranks[rank].min
  597.     end
  598.     @calendar[Ranks.rank(0)] += init if init.is_a?(Integer)
  599.     fit
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● 時間自動経過の設定
  603.   #--------------------------------------------------------------------------
  604.   def set_auto_time_pass(passing)
  605.     @auto_time_pass_amount[:duration] = passing[:duration] if passing[:duration]
  606.     @auto_time_pass_amount[:amount] = passing[:amount] if passing[:amount]
  607.   end
  608.   #--------------------------------------------------------------------------
  609.   # ● フレーム更新
  610.   #--------------------------------------------------------------------------
  611.   def update(screen)
  612.     update_auto_time_pass
  613.     update_auto_tone(screen)
  614.   end
  615.   #--------------------------------------------------------------------------
  616.   # ● 時間経過
  617.   #--------------------------------------------------------------------------
  618.   def time_pass(amount)
  619.     amount.each do |rank, value|
  620.       next unless @calendar[rank]
  621.       @calendar[rank] += value
  622.     end
  623.     fit
  624.   end
  625.   #--------------------------------------------------------------------------
  626.   # ● イベント中判定
  627.   #--------------------------------------------------------------------------
  628.   def check_event_running?
  629.     if $game_party.in_battle
  630.       $game_troop.interpreter.running?
  631.     elsif !$BTEST
  632.       $game_map.interpreter.running?
  633.     end
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● 時間自動経過
  637.   #--------------------------------------------------------------------------
  638.   def update_auto_time_pass
  639.     return unless @auto_time_pass
  640.     return if @stop_auto_time_pass_on_event && check_event_running?
  641.     return if @stop_auto_time_pass_on_battle && $game_party.in_battle
  642.     return if !$BTEST && $game_map.map.bmsp_koyomisystem_koyomi_stop?
  643.     if @auto_time_pass_amount[:duration] > 0
  644.       return if Graphics.frame_count % @auto_time_pass_amount[:duration] != 0
  645.       time_pass(@auto_time_pass_amount[:amount])
  646.     end
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ● 場所移動による時間経過
  650.   #--------------------------------------------------------------------------
  651.   def move_time_pass
  652.     unless @move_temp_time_pass
  653.       time_pass(@move_time_pass)
  654.     else
  655.       time_pass(@move_temp_time_pass)
  656.       @move_temp_time_pass = nil
  657.     end
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ● 戦闘開始による時間経過
  661.   #--------------------------------------------------------------------------
  662.   def battle_start_time_pass
  663.     unless @battle_start_temp_time_pass
  664.       time_pass(@battle_start_time_pass)
  665.     else
  666.       time_pass(@battler_start_temp_time_pass)
  667.       @battle_start_temp_time_pass = nil
  668.     end
  669.   end
  670.   #--------------------------------------------------------------------------
  671.   # ● 戦闘終了による時間経過
  672.   #--------------------------------------------------------------------------
  673.   def battle_end_time_pass
  674.     unless @battle_end_temp_time_pass
  675.       time_pass(@battle_end_time_pass)
  676.     else
  677.       time_pass(@battler_end_temp_time_pass)
  678.       @battle_end_temp_time_pass = nil
  679.     end
  680.   end
  681.   #--------------------------------------------------------------------------
  682.   # ● 画面の色調自動変更
  683.   #--------------------------------------------------------------------------
  684.   def update_auto_tone(screen)
  685.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  686.     return if $game_party.in_battle && @fix_tone_on_battle
  687.     target_tone,duration = get_match_tone
  688.     return if target_tone.nil? || screen.tone_target == target_tone
  689.     # 変更時間の設定
  690.     duration = BMSP::KoyomiSystem::AUTO_TONE_DURATION if duration.nil?
  691.     duration = @tone_temp_duration ? @tone_temp_duration : duration
  692.     @tone_temp_duration = nil
  693.     # 色調変更
  694.     screen.start_tone_change(target_tone, duration)
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● 条件にマッチする色調の取得
  698.   #--------------------------------------------------------------------------
  699.   def get_match_tone
  700.     BMSP::KoyomiSystem::AUTO_TONE_COND.each do |cond, (tone,duration)|
  701.       next unless cond.each { |rank, range|
  702.         case range
  703.         when Range
  704.           break unless Ranks.include_range?(rank, range, @calendar[rank])
  705.         else # それ以外(整数指定)
  706.           break if @calendar[rank] != range
  707.         end
  708.       }
  709.       return tone,duration
  710.     end
  711.     @default_tone
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 暦を一つ進める
  715.   #--------------------------------------------------------------------------
  716.   def succ
  717.     rank0 = Ranks.rank(0)
  718.     @calendar[rank0] += 1
  719.     fit
  720.   end
  721.   #--------------------------------------------------------------------------
  722.   # ● 文字列フォーマット
  723.   #--------------------------------------------------------------------------
  724.   def strftime(format)
  725.     format = format.dup
  726.     Ranks.ranks.each_key do |rank|
  727.       pattern = /<<(-?)(0?)(\d)#(#{rank.to_s})>>/
  728.       format.gsub!(pattern){
  729.         left,zero,digit,r = $1,$2,$3,$4
  730.         sprintf("%#{left + zero + digit}d", @calendar[rank])
  731.       }
  732.     end
  733.     format.gsub!(/<<(.+?)>>/){
  734.      trans =  Ranks.transform($1.to_sym)
  735.      trans.nil? ? "###" : trans.call(self)
  736.     }
  737.     format
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ● オブジェクト複製
  741.   #--------------------------------------------------------------------------
  742.   def dup
  743.     Marshal.load(Marshal.dump self)
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ● 起算時からのランク0からみた経過時間の計算
  747.   #--------------------------------------------------------------------------
  748.   def calc_to_i
  749.     @int = @calendar.each.reverse_each.inject(0) { |sum, (rank, value)|
  750.       sum * Ranks.ranks[rank].count + Ranks.normalize(value, rank)
  751.     }
  752.   end
  753.   #--------------------------------------------------------------------------
  754.   # ● 起算時からのランク0からみた経過時間の取得
  755.   #--------------------------------------------------------------------------
  756.   def to_i
  757.     @int
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● 比較演算子
  761.   #--------------------------------------------------------------------------
  762.   def ==(koyomi)
  763.     self.to_i == koyomi.to_i
  764.   end
  765.   def !=(koyomi)
  766.     self.to_i != koyomi.to_i
  767.   end
  768.   def <(koyomi)
  769.     self.to_i < koyomi.to_i
  770.   end
  771.   def <=(koyomi)
  772.     self.to_i <= koyomi.to_i
  773.   end
  774.   def >(koyomi)
  775.     self.to_i > koyomi.to_i
  776.   end
  777.   def >=(koyomi)
  778.     self.to_i >= koyomi.to_i
  779.   end
  780.   def <=>(koyomi)
  781.     self.to_i <=> koyomi.to_i
  782.   end
  783. end
  784. #==============================================================================
  785. # ■ DataManager
  786. #==============================================================================
  787. module DataManager
  788.   #--------------------------------------------------------------------------
  789.   # ● 各種ゲームオブジェクトの作成
  790.   #--------------------------------------------------------------------------
  791.   instance_eval{ alias bmsp_koyomisystem_create_game_objects create_game_objects }
  792.   def self.create_game_objects
  793.     bmsp_koyomisystem_create_game_objects
  794.     $game_koyomi = Game_Koyomi.new(BMSP::KoyomiSystem::INITIAL_CAL)
  795.   end
  796.   #--------------------------------------------------------------------------
  797.   # ● セーブ内容の作成
  798.   #--------------------------------------------------------------------------
  799.   instance_eval{ alias bmsp_koyomisystem_make_save_contents make_save_contents }
  800.   def self.make_save_contents
  801.     contents = bmsp_koyomisystem_make_save_contents
  802.     contents[:koyomi] = $game_koyomi
  803.     contents
  804.   end
  805.   #--------------------------------------------------------------------------
  806.   # ● セーブ内容の展開
  807.   #--------------------------------------------------------------------------
  808.   instance_eval{ alias bmsp_koyomisystem_extract_save_contents extract_save_contents }
  809.   def self.extract_save_contents(contents)
  810.     bmsp_koyomisystem_extract_save_contents(contents)
  811.     $game_koyomi = contents[:koyomi]
  812.   end
  813. end
  814. #==============================================================================
  815. # ■ Game_Map
  816. #==============================================================================
  817. class Game_Map
  818.   #--------------------------------------------------------------------------
  819.   # ● 公開インスタンス変数
  820.   #--------------------------------------------------------------------------
  821.   attr_reader :map # 現在のマップデータ
  822.   attr_accessor :koyomi_display             # 暦表示フラグ
  823.   #--------------------------------------------------------------------------
  824.   # ● オブジェクト初期化
  825.   #--------------------------------------------------------------------------
  826.   alias bmsp_koyomisytem_initialize initialize
  827.   def initialize
  828.     bmsp_koyomisytem_initialize
  829.     @koyomi_display = BMSP::KoyomiSystem::MAP_WINDOW
  830.   end
  831. end
  832. #==============================================================================
  833. # ■ Scene_Menu
  834. #==============================================================================
  835. class Scene_Menu < Scene_MenuBase
  836.   #--------------------------------------------------------------------------
  837.   # ● 開始処理
  838.   #--------------------------------------------------------------------------
  839.   alias bmsp_koyomisystem_start start
  840.   def start
  841.     bmsp_koyomisystem_start
  842.     bmsp_koyomisystem_create_koyomi_window if BMSP::KoyomiSystem::MENU_WINDOW
  843.   end
  844.   #--------------------------------------------------------------------------
  845.   # ● 暦ウィンドウの作成
  846.   #--------------------------------------------------------------------------
  847.   def bmsp_koyomisystem_create_koyomi_window
  848.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MenuKoyomi.new
  849.     @bmsp_koyomi_window.x = 0
  850.     @bmsp_koyomi_window.y = Graphics.height - @gold_window.height - @bmsp_koyomi_window.height
  851.     if BMSP.check_script(:EXPDistribution, 1.00) && BMSP::EXPDistribution::EXP_WINDOW
  852.       @bmsp_koyomi_window.y -= @bmsp_koyomi_window.fitting_height(1)
  853.     end
  854.   end
  855. end
  856. #==============================================================================
  857. # ■ Scene_Map
  858. #==============================================================================
  859. class Scene_Map < Scene_Base
  860.   #--------------------------------------------------------------------------
  861.   # ● 全ウィンドウの作成
  862.   #--------------------------------------------------------------------------
  863.   alias bmsp_koyomisystem_create_all_windows create_all_windows
  864.   def create_all_windows
  865.     bmsp_koyomisystem_create_all_windows
  866.     bmsp_koyomisystem_create_koyomi_window
  867.   end
  868.   #--------------------------------------------------------------------------
  869.   # ● 暦ウィンドウの作成
  870.   #--------------------------------------------------------------------------
  871.   def bmsp_koyomisystem_create_koyomi_window
  872.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MapKoyomi.new
  873.   end
  874.   #--------------------------------------------------------------------------
  875.   # ● 場所移動前の処理
  876.   #--------------------------------------------------------------------------
  877.   alias bmsp_koyomisystem_pre_transfer pre_transfer
  878.   def pre_transfer
  879.     @bmsp_koyomi_window.close
  880.     bmsp_koyomisystem_pre_transfer
  881.     bmsp_koyomisystem_move_time_pass
  882.   end
  883.   #--------------------------------------------------------------------------
  884.   # ● 場所移動後の処理
  885.   #--------------------------------------------------------------------------
  886.   alias bmsp_koyomisystem_post_transfer post_transfer
  887.   def post_transfer
  888.     bmsp_koyomisystem_change_fix_tone
  889.     @bmsp_koyomi_window.open unless BMSP::KoyomiSystem::MAP_WINDOW_FADE
  890.     bmsp_koyomisystem_post_transfer
  891.     @bmsp_koyomi_window.open if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  892.   end
  893.   #--------------------------------------------------------------------------
  894.   # ● 場所移動による時間経過
  895.   #--------------------------------------------------------------------------
  896.   def bmsp_koyomisystem_move_time_pass
  897.     $game_koyomi.move_time_pass
  898.   end
  899.   #--------------------------------------------------------------------------
  900.   # ● 色調固定マップの処理
  901.   #--------------------------------------------------------------------------
  902.   def bmsp_koyomisystem_change_fix_tone
  903.     tone = $game_map.map.bmsp_koyomisystem_fix_tone
  904.     if tone # 色調固定
  905.       $game_map.screen.start_tone_change(tone, 0)
  906.     else # それ以外
  907.       if $game_koyomi.auto_tone
  908.         tone,duration = $game_koyomi.get_match_tone
  909.         $game_map.screen.start_tone_change(tone, 0)
  910.       else
  911.         $game_map.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  912.       end
  913.     end
  914.   end
  915. end
  916. #==============================================================================
  917. # ■ BMSP::KoyomiSystem::Window_MenuKoyomi
  918. #==============================================================================
  919. class BMSP::KoyomiSystem::Window_MenuKoyomi < Window_Base
  920.   #--------------------------------------------------------------------------
  921.   # ● オブジェクト初期化
  922.   #--------------------------------------------------------------------------
  923.   def initialize
  924.     line_number = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT.size
  925.     super(0, 0, window_width, fitting_height(line_number))
  926.     @Time = $game_koyomi.to_i
  927.     @formats = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT
  928.     refresh
  929.   end
  930.   #--------------------------------------------------------------------------
  931.   # ● ウィンドウ幅の取得
  932.   #--------------------------------------------------------------------------
  933.   def window_width
  934.     return 160
  935.   end
  936.   #--------------------------------------------------------------------------
  937.   # ● フレーム更新
  938.   #--------------------------------------------------------------------------
  939.   def update
  940.     super
  941.     refresh if redraw?
  942.   end
  943.   #--------------------------------------------------------------------------
  944.   # ● 再描画するか
  945.   #--------------------------------------------------------------------------
  946.   def redraw?
  947.     if $game_koyomi.to_i != @time
  948.       @time = $game_koyomi.to_i
  949.       return true
  950.     end
  951.     false
  952.   end
  953.   #--------------------------------------------------------------------------
  954.   # ● リフレッシュ
  955.   #--------------------------------------------------------------------------
  956.   def refresh
  957.     contents.clear
  958.     draw_background(contents.rect)
  959.     rect = contents.rect
  960.     rect.height = line_height
  961.     rect.y = 0
  962.     @formats.each do |format|
  963.       draw_text(rect, $game_koyomi.strftime(format), 1)
  964.       rect.y += line_height
  965.     end
  966.   end
  967.   #--------------------------------------------------------------------------
  968.   # ● 背景の描画
  969.   #--------------------------------------------------------------------------
  970.   def draw_background(rect)
  971.   end
  972. end
  973. #==============================================================================
  974. # ■ BMSP::KoyomiSystem::Window_MapKoyomi
  975. #==============================================================================
  976. class BMSP::KoyomiSystem::Window_MapKoyomi < BMSP::KoyomiSystem::Window_MenuKoyomi
  977.   #--------------------------------------------------------------------------
  978.   # ● オブジェクト初期化
  979.   #--------------------------------------------------------------------------
  980.   def initialize
  981.     super
  982.     line_number = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT.size
  983.     x= Graphics.width - window_width
  984.     move(x, 0, window_width, fitting_height(line_number))
  985.     self.opacity = 0
  986.     self.contents_opacity = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  987.     @show_count = BMSP::KoyomiSystem::MAP_WINDOW_FADE ? 0 : 1
  988.     @time = $game_koyomi.to_i
  989.     @formats = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT
  990.     refresh
  991.   end
  992.   #--------------------------------------------------------------------------
  993.   # ● ウィンドウ幅の取得
  994.   #--------------------------------------------------------------------------
  995.   def window_width
  996.     return 320
  997.   end
  998.   #--------------------------------------------------------------------------
  999.   # ● フレーム更新
  1000.   #--------------------------------------------------------------------------
  1001.   def update
  1002.     super
  1003.     if @show_count > 0 && $game_map.koyomi_display && BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1004.       update_fadein
  1005.       @show_count -= 1
  1006.     elsif @show_count == 0
  1007.       update_fadeout
  1008.     end
  1009.   end
  1010.   #--------------------------------------------------------------------------
  1011.   # ● フェードインの更新
  1012.   #--------------------------------------------------------------------------
  1013.   def update_fadein
  1014.     self.contents_opacity += 16
  1015.   end
  1016.   #--------------------------------------------------------------------------
  1017.   # ● フェードアウトの更新
  1018.   #--------------------------------------------------------------------------
  1019.   def update_fadeout
  1020.     self.contents_opacity -= 16
  1021.   end
  1022.   #--------------------------------------------------------------------------
  1023.   # ● ウィンドウを開く
  1024.   #--------------------------------------------------------------------------
  1025.   def open
  1026.     refresh
  1027.     if $game_map.map.bmsp_koyomisystem_display_koyomi_on_map?
  1028.       if BMSP::KoyomiSystem::MAP_WINDOW_FADE || !$game_map.koyomi_display
  1029.         @show_count = 150
  1030.         self.contents_opacity = 0
  1031.       else
  1032.         @show_count = 1
  1033.         self.contents_opacity = 255
  1034.       end
  1035.     else
  1036.       @show_count = 0
  1037.       self.contents_opacity = 0
  1038.     end
  1039.     self
  1040.   end
  1041.   #--------------------------------------------------------------------------
  1042.   # ● ウィンドウを閉じる
  1043.   #--------------------------------------------------------------------------
  1044.   def close
  1045.     @show_count = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1046.     self
  1047.   end
  1048.   #--------------------------------------------------------------------------
  1049.   # ● 背景の描画
  1050.   #--------------------------------------------------------------------------
  1051.   def draw_background(rect)
  1052.     temp_rect = rect.clone
  1053.     temp_rect.width /= 2
  1054.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  1055.     temp_rect.x = temp_rect.width
  1056.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  1057.   end
  1058.   #--------------------------------------------------------------------------
  1059.   # ● 背景色 1 の取得
  1060.   #--------------------------------------------------------------------------
  1061.   def back_color1
  1062.     Color.new(0, 0, 0, 192)
  1063.   end
  1064.   #--------------------------------------------------------------------------
  1065.   # ● 背景色 2 の取得
  1066.   #--------------------------------------------------------------------------
  1067.   def back_color2
  1068.     Color.new(0, 0, 0, 0)
  1069.   end
  1070. end
  1071. #==============================================================================
  1072. # ■ Game_Screen
  1073. #==============================================================================
  1074. class Game_Screen
  1075.   #--------------------------------------------------------------------------
  1076.   # ● 公開インスタンス変数
  1077.   #--------------------------------------------------------------------------
  1078.   attr_reader :tone_target
  1079.   #--------------------------------------------------------------------------
  1080.   # ● フレーム更新
  1081.   #--------------------------------------------------------------------------
  1082.   alias bmsp_koyomisystem_update update
  1083.   def update
  1084.     bmsp_koyomisystem_update
  1085.     bmsp_koyomisystem_update_koyomi
  1086.   end
  1087.   #--------------------------------------------------------------------------
  1088.   # ● 暦の更新
  1089.   #--------------------------------------------------------------------------
  1090.   def bmsp_koyomisystem_update_koyomi
  1091.     $game_koyomi.update(self)
  1092.   end
  1093. end
  1094. #==============================================================================
  1095. # ■ Game_Troop
  1096. #==============================================================================
  1097. class Game_Troop < Game_Unit
  1098.   #--------------------------------------------------------------------------
  1099.   # ● セットアップ
  1100.   #--------------------------------------------------------------------------
  1101.   def setup(troop_id)
  1102.     clear
  1103.     @troop_id = troop_id
  1104.     @enemies = []
  1105.     troop.members.each do |member|
  1106.       next unless $data_enemies[member.enemy_id]
  1107.       enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  1108.       enemy.hide if member.hidden
  1109.       enemy.screen_x = member.x
  1110.       enemy.screen_y = member.y
  1111.       @enemies.push(enemy)
  1112.     end
  1113.     init_screen_tone
  1114.     make_unique_names
  1115.   end
  1116.   #--------------------------------------------------------------------------
  1117.   # ● 画面の色調を初期化
  1118.   #--------------------------------------------------------------------------
  1119.   alias bmsp_koyomisystem_init_screen_tone init_screen_tone
  1120.   def init_screen_tone
  1121.     bmsp_koyomisystem_init_screen_tone
  1122.     bmsp_koyomisystem_battle_start_time_pass
  1123.     bmsp_koyomisystem_fix_tone_on_battle
  1124.   end
  1125.   #--------------------------------------------------------------------------
  1126.   # ● 戦闘開始による時間経過
  1127.   #--------------------------------------------------------------------------
  1128.   def bmsp_koyomisystem_battle_start_time_pass
  1129.     $game_koyomi.battle_start_time_pass
  1130.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  1131.     tone,duration = $game_koyomi.get_match_tone
  1132.     $game_troop.screen.start_tone_change(tone, 0)
  1133.   end
  1134.   #--------------------------------------------------------------------------
  1135.   # ● バトル中の色調固定
  1136.   #--------------------------------------------------------------------------
  1137.   def bmsp_koyomisystem_fix_tone_on_battle
  1138.     return unless $game_koyomi.fix_tone_on_battle
  1139.     $game_troop.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  1140.   end
  1141. end
  1142. #==============================================================================
  1143. # ■ Scene_Battle
  1144. #==============================================================================
  1145. class Scene_Battle < Scene_Base
  1146.   #--------------------------------------------------------------------------
  1147.   # ● 終了処理
  1148.   #--------------------------------------------------------------------------
  1149.   alias bmsp_koyomisystem_terminate terminate
  1150.   def terminate
  1151.     bmsp_koyomisystem_terminate
  1152.     bmsp_koyomisystem_battle_end_time_pass
  1153.   end
  1154.   #--------------------------------------------------------------------------
  1155.   # ● 戦闘終了による時間経過
  1156.   #--------------------------------------------------------------------------
  1157.   def bmsp_koyomisystem_battle_end_time_pass
  1158.     $game_koyomi.battle_end_time_pass
  1159.     return if !$game_koyomi.auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  1160.     tone,duration = $game_koyomi.get_match_tone
  1161.     $game_map.screen.start_tone_change(tone, 0)
  1162.   end
  1163. end

Lv2.观梦者

梦石
0
星屑
590
在线时间
923 小时
注册时间
2011-5-11
帖子
438
7
发表于 2013-8-24 19:02:22 | 只看该作者
longshili 发表于 2013-8-24 17:22
$game_map.koyomi_dispaly = true/false

试验了好多次,包括关闭,开始,暂停,还是不行

原脚本中我个人认为有部分 变量拼写有误
以下为修正后的脚本
  1. #==============================================================================
  2. # ■ BMSP 暦システム[KOYOMISYSTEM] Ver1.10 2013/06/04
  3. #------------------------------------------------------------------------------
  4. #  日付,時間の概念を導入します.
  5. #==============================================================================
  6. #------------------------------------------------------------------------------
  7. # ■内容
  8. # ゲームに日付,時間の概念を導入します.
  9. # 自由に暦を設定して任意のタイミングで時間を進めることができます.
  10. # 時間に合わせて画面の色調を自動で変更することも可能です.
  11. #
  12. # 位置:特に指定はありません
  13. #
  14. # ■使用方法
  15. # スクリプトに丸ごと貼り付けていただければ使用できます.
  16. #
  17. # ●暦の設定
  18. # まずは詳細設定にて暦の設定を行って下さい.
  19. #
  20. # ○RANKS:ランクの設定を行います.
  21. # ランクとは秒,分,時,,などのような時間の単位を表します.
  22. # ランクは上から順にランク0,ランク1と呼び,
  23. # あるランクの値が上限を超えると一つ上のランクに繰り上げされます.
  24. # 各ランクは
  25. #   ランク名 => 値の範囲
  26. # のように設定します.
  27. # 例
  28. #   RANKS = {
  29. #     :sec => 0...60,
  30. #     :min => 0...60,
  31. #     :hour => 0...24,
  32. #     :day => 1..30,
  33. #     :mon => 1..12,
  34. #     :year => 1..9999
  35. #   }
  36. # 上記の例ではランクの低い順に秒,分,時,日,月,年を設定しています.
  37. # また,それぞれ取り得る値の範囲も指定しています.
  38. # (一月30日で年は便宜上9999年を上限としています)
  39. # 例えばdayが25のときに7加算され32になると,
  40. # 結果としてdayは2になり,monは1加算されます.
  41. # このようにして基本となる暦を作成します.
  42. # この部分を任意に変えることで自由な暦を設定できます.
  43. #
  44. # ○ SPECIAL_EXP:ランク以外の特別な暦情報を設定します
  45. # 例えば曜日や季節,時間帯などを設定することができます.
  46. # 設定の仕方は以下のフォーマットにしたがってください.
  47. #   SPECIAL_EXP[:%special%] = ->(cal){
  48. #      任意の式
  49. #   }
  50. # %special%に設定する名前を指定し,対応する任意の式を記述します.
  51. # このときcalにより暦オブジェクトが参照できます.
  52. # 例・時間帯の設定
  53. #   SPECIAL_EXP[:timezone] = ->(cal){
  54. #     case cal.hour
  55. #    when 4,5
  56. #       0 # 早朝は0を返す
  57. #     when 6,7,8
  58. #       1 # 朝は1を返す
  59. #     when 9...16
  60. #       2 # 昼は2を返す
  61. #     when 16,17
  62. #       3 # 夕方は3を返す
  63. #     when 18...22
  64. #       4 # 夜は4を返す
  65. #     when 22...24,0...4
  66. #      5 # 深夜は5を返す
  67. #     end
  68. #   }
  69. #
  70. # ○ TRANSFORM:表示変換の設定を行います.
  71. # 暦を文字列として表現する際,整数以外の形式で表示したい場合に使用します.
  72. # また,全く新しい独自の表示形式を指定することも可能
  73. # 例・月の文字列表記
  74. #   TRANSFORM[:mon] = ->(cal){
  75. #     ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  76. #      "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  77. #   }
  78. #
  79. # ○ INITIAL_CAL:ゲーム開始時の暦を設定します.
  80. # 設定したいランクと対応する値を指定します.
  81. # 指定されなかったランクの初期値は値の範囲のうち最小のものになります.
  82. # 例
  83. #   INITIAL_CAL = {
  84. #     :day => 15,
  85. #     :mon => 12,
  86. #     :year => 2011
  87. #   }
  88. # この例では2011年12月15日0時0分0秒が初期値となります.
  89. #
  90. # ○ MAP_WINDOW:マップで暦ウインドウを表示するかを設定します.
  91. # この設定はゲーム中以下のスクリプトにて切り替え可能です.
  92. #   $game_map.koyomi_display = true/false
  93. #
  94. # ○ MAP_WINDOW_FADE:マップでの暦ウインドウをフェードするか設定します.
  95. # trueのとき一定時間表示したあとフェードアウトします.
  96. # falseのとき暦ウインドウを常に表示します.
  97. #
  98. # ○ MAP_WINDOW_FORMAT:マップでの暦ウインドウの表示内容を設定します.
  99. # 配列でフォーマットを指定します.一つの要素につき一行となります.
  100. # フォーマットについては後述のメソッドstrftimeを参照してください.
  101. #
  102. # ○ MENU_WINDOW:メニューで暦ウインドウを表示するかを設定します.
  103. #
  104. # ○ MENU_WINDOW_FORAMT:メニューでの暦ウインドウの表示内容を設定します.
  105. # 設定の仕方はMAP_WINDOW_FORMATと同様です.
  106. #
  107. # ○ AUTO_TONE:暦による画面の色調の自動変更を設定します.
  108. # trueの時時間によって画面の色調が自動で変更されます.
  109. # また,イベントコマンドによる画面の色調変更は機能しなくなります.
  110. # ただし,後述する色調固定マップでは機能します.
  111. # この設定はゲーム中以下のスクリプトにて切り替え可能です.
  112. #   $game_koyomi.auto_tone = true/false
  113. #
  114. # ○ AUTO_TONE_DURATION:デフォルトの色調変更時間の設定です.
  115. # 色調変更の条件で色調変更時間が指定されない場合はこの値が適用されます.
  116. #
  117. # ○ AUTO_TONE_COND:色調変更の条件を設定します.
  118. # 色調を変更する条件となる時間とそれに対応する色調(Tone)を指定します.
  119. # 上にある条件ほど優先的にマッチします.
  120. # 条件の指定方法は条件に設定したいrankをキーにして対応する値を直接指定するか
  121. # 値の範囲で指定します.22..4(22...24かつ0..4)のような指定も可能です.
  122. # 範囲に関しては(0...3)の場合0から2まで,0...3の場合0から3までを表します.
  123. # また,対応する色調は以下で指定します.
  124. #   Tone.new(赤(-255~255),緑(-255~255),青(-255~255),グレー(0~255))
  125. # 例・時間帯によって色調を変える
  126. # AUTO_TONE_COND = {
  127. #   {:hour => 16...18} => Tone.new(68,-34,-34,0),
  128. #   {:hour => 18...22} => Tone.new(-34,-34,0,34),
  129. #   {:hour => 22...4} => Tone.new(-68,-68,0,68),
  130. #   {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  131. #   {:hour => 6...9} => Tone.new(34,34,34,34)
  132. # }
  133. #
  134. # ○ FIX_TONE_ON_BATTLE:バトル画面では画面の色調を変更しない設定にできます.
  135. # trueの場合マップで色調が自動変更されている場合でも画面の色調はデフォルト(0,0,0,0)になります.
  136. # また,色調固定マップの場合でもデフォルトの色調になります.
  137. #
  138. # ○ AUTO_TIME_PASS:時間が自動経過するかを設定します.
  139. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  140. #   $game_koyomi.auto_time_pass = true/false
  141. #
  142. # ○ AUTO_TIME_PASS_DURATION:時間の自動経過間隔を設定します.
  143. # 指定したフレームが経過するごとにTIME_PASSINGで指定した分の時間が経過します.
  144. #
  145. # ○ TIME_PASSING:時間の自動経過量を設定します.
  146. # 加算したいランクと対応する加算量を指定してください.
  147. # 例・1分30秒ずつ加算する
  148. #   TIME_PASSING = {:min => 1, :sec => 30}
  149. #
  150. # ○ STOP_ON_EVENT:イベント中は時間の自動経過を停止するか設定します.
  151. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  152. #   $game_koyomi.stop_auto_time_pass_on_event = true/false
  153. #
  154. # ○ STOP_ON_BATTLE:バトル中は時間の自動経過を停止するか設定します.
  155. # この設定はゲーム中以下のスクリプトによって切り替え可能です.
  156. #   $game_koyomi.stop_auto_time_pass_on_battle = true/false
  157. #
  158. # ○ MOVE_TIME_PASS:場所移動による時間経過を設定します.
  159. # 「場所移動」が行われる度に時間を経過させることができます.
  160. # 加算したいランクと対応する加算量を指定してください.
  161. # 場所移動により加算したくない場合は空のハッシュを指定してください.
  162. #
  163. # ○ BATTLE_START_TIME_PASS:戦闘開始による時間経過を設定します.
  164. # 戦闘開始時に時間を経過させることができます.
  165. # 加算したいランクと対応する加算量を指定してください.
  166. # 加算したくない場合は空のハッシュを指定してください.
  167. #
  168. # ○ BATTLE_END_TIME_PASS:戦闘終了による時間経過を設定します.
  169. # 戦闘終了時に時間を経過させることができます.
  170. # 加算したいランクと対応する加算量を指定してください.
  171. # 加算したくない場合は空のハッシュを指定してください.
  172. #
  173. # ●暦の操作
  174. # ゲーム中は基本的にスクリプトコマンドから$game_koyomiにアクセスすることで暦を操作できます.
  175. # 以下は$game_koyomiからできる主な操作一覧です.
  176. # ○ $game_koyomi.auto_tone = true/false
  177. # 時間による画面色調の自動変更をするかどうか設定できます.
  178. #
  179. # ○ $game_koyomi.tone_temp_diration = int
  180. # これを設定した次の画面色調自動変更時のみ指定した時間で色調が変化します.
  181. # イベント等で時間を進めた際早く色調を切り替えたいときなどに利用します.
  182. #
  183. # ○ $game_koyomi.move_temp_time_pass = {:rank => value, ...}
  184. # これを指定した次の場所移動時のみ指定した分だけ時間が経過します.
  185. #
  186. # ○ $game_koyomi.battle_start_temp_time_pass = {:rank => value, ...}
  187. # これを指定した次の戦闘開始時のみ指定した分だけ時間が経過します.
  188. #
  189. # ○ $game_koyomi.battle_end_temp_time_pass = {:rank => value, ...}
  190. # これを指定した次の戦闘終了時時のみ指定した分だけ時間が経過します.
  191. #
  192. # ○ $game_koyomi.auto_time_pass = true/false
  193. # 自動で時間を経過させるか設定できます.
  194. #
  195. # ○ $game_koyomi.stop_auto_time_pass_on_event = true/false
  196. # 自動で時間が経過するとき,イベント中は時間経過を停止するか設定できます.
  197. #
  198. # ○ $game_koyomi.stop_auto_time_pass_on_battlet = true/false
  199. # 自動で時間が経過するとき,バトル中は時間経過を停止するか設定できます.
  200. #
  201. # ○ $game_koyomi.rank
  202. # 設定した各ランクの値を取得できます.
  203. # 例・現在の月を取得
  204. #   $game_koyomi.mon
  205. #
  206. # ○ $game_koyomi.rank = value
  207. # 設定した各ランクの値を変更できます.
  208. # 例・現在の月を3に設定
  209. #   $game_koyomi.mon = 3
  210. # 例・3時間進める
  211. #   $game_koyomi.hour += 3
  212. #
  213. # ○ $game_koyomi.special
  214. # 設定した各特殊表現の値を取得できます.
  215. # 例・現在の時間帯を取得
  216. #   $game_koyomi.timezone
  217. #
  218. # ○ $game_koyomi.set(init)
  219. # 暦をセットします.
  220. # initは各ランクと対応する値のハッシュか,後述する起算時からのランク0からみた経過時間
  221. # を指定します.
  222. # 例・ハッシュで暦をセット
  223. #   $game_koyomi.set(year: 2011, mon: 12. day: 15)
  224. # 例・ある暦から得た起算時からの経過時間で暦をセット
  225. #   $game_koyomi.set(koyomi.to_i)
  226. #
  227. # ○ $game_koyomi.time_pass(amount)
  228. # amountに各ランクと対応する値のハッシュを指定して,その分だけ時間を経過させます.
  229. # 例・1月と3時間だけ時間をすすめる
  230. #   $game_koyomi.time_pass(mon: 1, hour: 3)
  231. #
  232. # ○ $game_koyomi.to_i
  233. # 起算時からのランク0からみた経過時間を取得します.
  234. # この結果を変数などに保存することで容易に暦を復元できます.
  235. # 例・暦を整数にして保存・復元する
  236. #   koyomi = $game_koyomi.to_i
  237. #   $game_koyomi.set(koyomi)
  238. #
  239. # ○ $game_koyomi.strftime(format)
  240. # formatに変換文字列を指定して現在の暦を文字列にします.
  241. # format中には以下の二つの特別な文字列を記述することで暦の値を置き換えることができます.
  242. #   <<表示桁#rank>>
  243. # 表示桁は先頭に - または 0 を付けた数字と置き換えます.
  244. # rankは設定したランクのいずれかと置き換えます.
  245. # ランクの値が指定した数字の桁分の幅の文字列と置換されます.
  246. # 先頭に 0 をつけると余った桁0で埋められます.
  247. # 先頭に - をつけると右寄せとなります.
  248. #   <<label>>
  249. # labelはTRANSFORMで指定した変換ラベルと置き換えます.
  250. # TRANSFORMで設定した内容に従って文字列に置換されます.
  251. # 例・2011年12月15日4時00分00秒の暦のとき
  252. #   $game_koyomi.strftime("<<4#year>>-<<4#mon>>-<<04#day>>")
  253. #   #=> 2011-  12-0015
  254. #   $game_koyomi.strftime("<<mon>>-<<-4#day>>:<<timezone>>")
  255. #   #=> Dec-15  :早朝
  256. #
  257. # ●マップの個別設定
  258. # マップのメモ欄に以下を記述することでマップごとに設定を行うことができます.
  259. #   ==暦非表示==
  260. # マップで暦ウインドウを表示する場合でもこの記述があるマップは暦ウインドウを表示しません.
  261. #
  262. #   ==暦停止==
  263. # 自動で時間が経過する場合でもこの記述があるマップは自動で時間が経過しません.
  264. #
  265. #   ==色調固定[r,g,b,gray]==
  266. # 自動で画面色調が変更される場合でもこの記述があるマップは指定した色調になります.
  267. # 屋内マップなどで利用します.薄暗い洞窟等も表現可能です.
  268. # r,g,b,grayはそれぞれ色調(トーン)を指定する値です.
  269. # 例・時間にかかわらず薄暗い洞窟
  270. #   ==色調固定[-34,-34,-34,34]==
  271. #
  272. # ■注意
  273. # このスクリプトでは
  274. # 「RPG::Map」「Game_Map」「Scene_Menu」「Scene_Map」
  275. # 「Game_Screen」「Game_Troop」「Scene_Battle」
  276. # のメソッドを改変しています.
  277. # ■情報
  278. # このスクリプトはgentlawkによって作られたものです.
  279. # 利用規約はhttp://blueredzone.comをご覧ください.
  280. #------------------------------------------------------------------------------
  281. module BMSP
  282.   @@includes ||= {}
  283.   @@includes[:KoyomiSystem] = 1.00
  284.   module KoyomiSystem
  285.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  286.     #詳細設定
  287.     # ランクの設定
  288.     RANKS = {
  289.       :sec => 0...60,
  290.       :min => 0...60,
  291.       :hour => 0...24,
  292.       :day => 1..30,
  293.       :mon => 1..12,
  294.       :year => 1..9999
  295.     }
  296.     #------------------------------------------------------------
  297.     # ランク以外の暦情報の設定
  298.     SPECIAL_EXP = {}
  299.     SPECIAL_EXP[:timezone] = ->(cal){
  300.       case cal.hour
  301.       when 4,5
  302.         0 # 早朝は0を返す
  303.       when 6,7,8
  304.         1 # 朝は1を返す
  305.       when 9...16
  306.         2 # 昼は2を返す
  307.       when 16,17
  308.         3 # 夕方は3を返す
  309.       when 18...22
  310.         4 # 夜は4を返す
  311.       when 22...24,0...4
  312.         5 # 深夜は5を返す
  313.       end
  314.     }
  315.     #------------------------------------------------------------
  316.     # 表示変換の設定
  317.     TRANSFORM = {}
  318.     TRANSFORM[:mon] = ->(cal){
  319.       ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  320.        "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  321.     }
  322.     TRANSFORM[:timezone] = ->(cal){
  323.       case cal.timezone # 上で設定した時間帯で条件分岐
  324.       when 0
  325.         "早朝"
  326.       when 1
  327.         "朝"
  328.       when 2
  329.         "昼"
  330.       when 3
  331.         "夕方"
  332.       when 4
  333.         "夜"
  334.       when 5
  335.         "深夜"
  336.       end
  337.     }
  338.     #------------------------------------------------------------
  339.     # ゲーム開始時の暦
  340.     INITIAL_CAL = {
  341.       :sec => 0,
  342.       :min => 0,
  343.       :hour => 0,
  344.       :day => 15,
  345.       :mon => 12,
  346.       :year => 2011
  347.     }
  348.     #------------------------------------------------------------
  349.     # マップで暦ウインドウを表示するか
  350.     MAP_WINDOW = true
  351.     # マップでの暦ウインドウをフェードするか(falseで常に表示)
  352.     MAP_WINDOW_FADE = false
  353.     # マップでの暦ウインドウの表示内容
  354.     MAP_WINDOW_FORMAT = [
  355.       "<<4#year>>年<<2#mon>>月<<2#day>>日",
  356.       "<<02#hour>>:<<02#min>>:<<02#sec>> [<<timezone>>]"
  357.     ]
  358.     # メニューで暦ウインドウを表示するか
  359.     MENU_WINDOW = true
  360.     # メニューでの暦ウインドウの表示内容
  361.     MENU_WINDOW_FORMAT = [
  362.       "<<4#year>>-<<2#mon>>-<<2#day>>",
  363.       "<<02#hour>>:<<02#min>>:<<02#sec>>"
  364.     ]
  365.     #------------------------------------------------------------
  366.     # 暦による画面の色調の自動変更
  367.     AUTO_TONE = true
  368.     # デフォルト色調変更時間
  369.     AUTO_TONE_DURATION = 120
  370.     # 色調変更の条件
  371.     AUTO_TONE_COND = {
  372.       {:hour => 16...18} => Tone.new(68,-34,-34,0),
  373.       {:hour => 18...22} => Tone.new(-34,-34,0,34),
  374.       {:hour => 22...4} => Tone.new(-68,-68,0,68),
  375.       {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  376.       {:hour => 6...9} => Tone.new(34,34,34,34)
  377.     }
  378.     # バトル画面では色調を変更しない
  379.     FIX_TONE_ON_BATTLE = false
  380.     #------------------------------------------------------------
  381.     # 時間が自動経過するか
  382.     AUTO_TIME_PASS = true
  383.     # 時間の自動経過間隔
  384.     AUTO_TIME_PASS_DURATION = 30
  385.     # 時間の自動経過量
  386.     TIME_PASSING = {:min => 10}
  387.     # イベント中は自動経過を停止するか
  388.     STOP_ON_EVENT = true
  389.     # バトル中は自動経過を停止するか
  390.     STOP_ON_BATTLE = false
  391.     #------------------------------------------------------------
  392.     # 場所移動による時間経過
  393.     MOVE_TIME_PASS = {:min => 5}
  394.     # 戦闘開始による時間経過
  395.     BATTLE_START_TIME_PASS = {}
  396.     # 戦闘終了による時間経過
  397.     BATTLE_END_TIME_PASS = {}
  398.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 導入スクリプトのチェック
  402.   #--------------------------------------------------------------------------
  403.   class << self
  404.     if method_defined?(:check_script)
  405.       alias koyomisystem_check_script check_script
  406.     end
  407.   end
  408.   def self.check_script(script, version)
  409.     if methods.include?(:koyomisystem_check_script)
  410.       koyomisystem_check_script(script, version)
  411.     end
  412.     @@includes[script] && @@includes[script] >= version
  413.   end
  414. end
  415. #==============================================================================
  416. # ■ RPG::Map
  417. #==============================================================================
  418. class RPG::Map
  419.   #--------------------------------------------------------------------------
  420.   # ● 暦ウインドウ表示のマップか
  421.   #--------------------------------------------------------------------------
  422.   def bmsp_koyomisystem_display_koyomi_on_map?
  423.     return @bmsp_koyomi_display if @bmsp_koyomi_display
  424.     @bmsp_koyomi_display = !self.note.include?('==暦非表示==')
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● 色調固定
  428.   #--------------------------------------------------------------------------
  429.   def bmsp_koyomisystem_fix_tone
  430.     return @bmsp_fix_tone unless @bmsp_fix_tone.nil?
  431.     if self.note =~ /==色調固定\[(\d+),(\d+),(\d+),(\d+)\]==/
  432.       r,g,b,g = $1.to_i,$2.to_i,$3.to_i,$4.to_i
  433.       @bmsp_fix_tone = Tone.new(r,g,b,g)
  434.     else
  435.       @bmsp_fix_tone = false
  436.     end
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● 暦停止のマップか
  440.   #--------------------------------------------------------------------------
  441.   def bmsp_koyomisystem_koyomi_stop?
  442.     return @bmsp_koyomi_stop if @bmsp_koyomi_stop
  443.     @bmsp_koyomi_stop = self.note.include?('==暦停止==')
  444.   end
  445. end
  446. #==============================================================================
  447. # ■ Game_Koyomi
  448. #==============================================================================
  449. class Game_Koyomi
  450.   #============================================================================
  451.   # ■ Ranks
  452.   #============================================================================
  453.   module Ranks
  454.     #--------------------------------------------------------------------------
  455.     # ● モジュール変数
  456.     #--------------------------------------------------------------------------
  457.     @@ranks = BMSP::KoyomiSystem::RANKS
  458.     @@transform = BMSP::KoyomiSystem::TRANSFORM
  459.     #--------------------------------------------------------------------------
  460.     # ● ランクの取得
  461.     #--------------------------------------------------------------------------
  462.     def self.ranks
  463.       @@ranks
  464.     end
  465.     #--------------------------------------------------------------------------
  466.     # ● 表示変換
  467.     #--------------------------------------------------------------------------
  468.     def self.transform(label)
  469.       @@transform[label]
  470.     end
  471.     #--------------------------------------------------------------------------
  472.     # ● ランクの取得(順位指定)
  473.     #--------------------------------------------------------------------------
  474.     def self.rank(i)
  475.       r = @@ranks.to_a[i]
  476.       return nil if r.nil?
  477.       r.first
  478.     end
  479.     #--------------------------------------------------------------------------
  480.     # ● ノーマライズ
  481.     #--------------------------------------------------------------------------
  482.     def self.normalize(i, rank)
  483.       i - @@ranks[rank].min
  484.     end
  485.     #--------------------------------------------------------------------------
  486.     # ● 指定した範囲の値か
  487.     #--------------------------------------------------------------------------
  488.     def self.include_range?(rank, range, value)
  489.       rank_min = @@ranks[rank].min
  490.       rank_max = @@ranks[rank].max
  491.       range_min = range.min
  492.       range_max = range.max
  493.       unless range_min.nil? || range_max.nil? # 有効なRange
  494.         min = [[range_min, rank_min].max, rank_max].min
  495.         max = [[range_max, rank_min].max, rank_max].min
  496.         (min..max).include?(value)
  497.       else # 無効なRange
  498.         first = range.first
  499.         last = range.last
  500.         nf = [[first, rank_min].max, rank_max].min
  501.         nl = [[last, rank_min].max, rank_max].min
  502.         range1 = (nf..rank_max)
  503.         range2 = nl <= last && range.exclude_end? ? (rank_min...nl) : (rank_min..nl)
  504.         range1.include?(value) || range2.include?(value)
  505.       end
  506.     end
  507.     #--------------------------------------------------------------------------
  508.     # ● ランクを一つ進める
  509.     #--------------------------------------------------------------------------
  510.     def self.succ(rank)
  511.       find = false
  512.       @@ranks.each do |r,|
  513.         return r if find
  514.         find = true if r == rank
  515.       end
  516.       return nil
  517.     end
  518.   end
  519.   #============================================================================
  520.   #--------------------------------------------------------------------------
  521.   # ● 公開インスタンス変数
  522.   #--------------------------------------------------------------------------
  523.   attr_accessor :auto_tone # 画面の色調自動変更フラグ
  524.   attr_accessor :tone_temp_duration # 画面の色調時間一時変更フラグ
  525.   attr_accessor :move_temp_time_pass # 場所移動による時間経過一時変更フラグ
  526.   attr_accessor :battle_start_temp_time_pass # 戦闘開始による時間経過一時変更フラグ
  527.   attr_accessor :battle_end_temp_time_pass # 戦闘終了による時間経過一時変更フラグ
  528.   attr_accessor :auto_time_pass # 時間自動経過フラグ
  529.   attr_accessor :stop_auto_time_pass_on_event # イベント中時間自動経過停止フラグ
  530.   attr_accessor :stop_auto_time_pass_on_battle # バトル中時間自動経過停止フラグ
  531.   attr_reader :fix_tone_on_battle # バトル画面色調固定フラグ
  532.   #--------------------------------------------------------------------------
  533.   # ● ランクアクセサの定義
  534.   #--------------------------------------------------------------------------
  535.   Ranks.ranks.each_key do |rank|
  536.     reader = rank
  537.     writer = :"#{rank}="
  538.     define_method(reader){ @calendar[rank] }
  539.     define_method(writer){ |value| @calendar[rank] = value; fit; value }
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ● 特別表現リーダーの定義
  543.   #--------------------------------------------------------------------------
  544.   BMSP::KoyomiSystem::SPECIAL_EXP.each do |special, exp|
  545.     define_method(special){ exp.call(self) }
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● オブジェクト初期化
  549.   #--------------------------------------------------------------------------
  550.   def initialize(init= {})
  551.     # 各種設定の初期化
  552.     @auto_tone = BMSP::KoyomiSystem::AUTO_TONE
  553.     @tone_temp_duration = 0
  554.     @default_tone = Tone.new(0,0,0,0)
  555.     @auto_time_pass = BMSP::KoyomiSystem::AUTO_TIME_PASS
  556.     @auto_time_pass_amount = {
  557.       :duration => BMSP::KoyomiSystem::AUTO_TIME_PASS_DURATION,
  558.       :amount => BMSP::KoyomiSystem::TIME_PASSING
  559.     }
  560.     @move_time_pass = BMSP::KoyomiSystem::MOVE_TIME_PASS
  561.     @battle_start_time_pass = BMSP::KoyomiSystem::BATTLE_START_TIME_PASS
  562.     @battle_end_time_pass = BMSP::KoyomiSystem::BATTLE_END_TIME_PASS
  563.     @stop_auto_time_pass_on_event = BMSP::KoyomiSystem::STOP_ON_EVENT
  564.     @stop_auto_time_pass_on_battle = BMSP::KoyomiSystem::STOP_ON_BATTLE
  565.     @fix_tone_on_battle = BMSP::KoyomiSystem::FIX_TONE_ON_BATTLE
  566.     # 暦の初期化
  567.     set(init)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ● 範囲外の暦を修正
  571.   #--------------------------------------------------------------------------
  572.   def fit
  573.     carry = 0
  574.     @calendar.each_key do |rank|
  575.       @calendar[rank] += carry
  576.       value = @calendar[rank]
  577.       if Ranks.ranks[rank].include?(value)
  578.         carry = 0
  579.       else
  580.         n_value = Ranks.normalize(value, rank)
  581.         card = Ranks.ranks[rank].count
  582.         carry = n_value / card
  583.         @calendar[rank] = n_value % card + Ranks.ranks[rank].min
  584.       end
  585.     end
  586.     @int = calc_to_i
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● 暦のセット
  590.   #--------------------------------------------------------------------------
  591.   def set(init)
  592.     @calendar = {}
  593.     ini_h = init.is_a?(Hash) ? init : {}
  594.     Ranks.ranks.each_key do |rank|
  595.       @calendar[rank] =
  596.         ini_h[rank] ? ini_h[rank] : Ranks.ranks[rank].min
  597.     end
  598.     @calendar[Ranks.rank(0)] += init if init.is_a?(Integer)
  599.     fit
  600.   end
  601.   #--------------------------------------------------------------------------
  602.   # ● 時間自動経過の設定
  603.   #--------------------------------------------------------------------------
  604.   def set_auto_time_pass(passing)
  605.     @auto_time_pass_amount[:duration] = passing[:duration] if passing[:duration]
  606.     @auto_time_pass_amount[:amount] = passing[:amount] if passing[:amount]
  607.   end
  608.   #--------------------------------------------------------------------------
  609.   # ● フレーム更新
  610.   #--------------------------------------------------------------------------
  611.   def update(screen)
  612.     update_auto_time_pass
  613.     update_auto_tone(screen)
  614.   end
  615.   #--------------------------------------------------------------------------
  616.   # ● 時間経過
  617.   #--------------------------------------------------------------------------
  618.   def time_pass(amount)
  619.     amount.each do |rank, value|
  620.       next unless @calendar[rank]
  621.       @calendar[rank] += value
  622.     end
  623.     fit
  624.   end
  625.   #--------------------------------------------------------------------------
  626.   # ● イベント中判定
  627.   #--------------------------------------------------------------------------
  628.   def check_event_running?
  629.     if $game_party.in_battle
  630.       $game_troop.interpreter.running?
  631.     elsif !$BTEST
  632.       $game_map.interpreter.running?
  633.     end
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● 時間自動経過
  637.   #--------------------------------------------------------------------------
  638.   def update_auto_time_pass
  639.     return unless @auto_time_pass
  640.     return if @stop_auto_time_pass_on_event && check_event_running?
  641.     return if @stop_auto_time_pass_on_battle && $game_party.in_battle
  642.     return if !$BTEST && $game_map.map.bmsp_koyomisystem_koyomi_stop?
  643.     if @auto_time_pass_amount[:duration] > 0
  644.       return if Graphics.frame_count % @auto_time_pass_amount[:duration] != 0
  645.       time_pass(@auto_time_pass_amount[:amount])
  646.     end
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ● 場所移動による時間経過
  650.   #--------------------------------------------------------------------------
  651.   def move_time_pass
  652.     unless @move_temp_time_pass
  653.       time_pass(@move_time_pass)
  654.     else
  655.       time_pass(@move_temp_time_pass)
  656.       @move_temp_time_pass = nil
  657.     end
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ● 戦闘開始による時間経過
  661.   #--------------------------------------------------------------------------
  662.   def battle_start_time_pass
  663.     unless @battle_start_temp_time_pass
  664.       time_pass(@battle_start_time_pass)
  665.     else
  666.       time_pass(@battler_start_temp_time_pass)
  667.       @battle_start_temp_time_pass = nil
  668.     end
  669.   end
  670.   #--------------------------------------------------------------------------
  671.   # ● 戦闘終了による時間経過
  672.   #--------------------------------------------------------------------------
  673.   def battle_end_time_pass
  674.     unless @battle_end_temp_time_pass
  675.       time_pass(@battle_end_time_pass)
  676.     else
  677.       time_pass(@battler_end_temp_time_pass)
  678.       @battle_end_temp_time_pass = nil
  679.     end
  680.   end
  681.   #--------------------------------------------------------------------------
  682.   # ● 画面の色調自動変更
  683.   #--------------------------------------------------------------------------
  684.   def update_auto_tone(screen)
  685.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  686.     return if $game_party.in_battle && @fix_tone_on_battle
  687.     target_tone,duration = get_match_tone
  688.     return if target_tone.nil? || screen.tone_target == target_tone
  689.     # 変更時間の設定
  690.     duration = BMSP::KoyomiSystem::AUTO_TONE_DURATION if duration.nil?
  691.     duration = @tone_temp_duration ? @tone_temp_duration : duration
  692.     @tone_temp_duration = nil
  693.     # 色調変更
  694.     screen.start_tone_change(target_tone, duration)
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ● 条件にマッチする色調の取得
  698.   #--------------------------------------------------------------------------
  699.   def get_match_tone
  700.     BMSP::KoyomiSystem::AUTO_TONE_COND.each do |cond, (tone,duration)|
  701.       next unless cond.each { |rank, range|
  702.         case range
  703.         when Range
  704.           break unless Ranks.include_range?(rank, range, @calendar[rank])
  705.         else # それ以外(整数指定)
  706.           break if @calendar[rank] != range
  707.         end
  708.       }
  709.       return tone,duration
  710.     end
  711.     @default_tone
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 暦を一つ進める
  715.   #--------------------------------------------------------------------------
  716.   def succ
  717.     rank0 = Ranks.rank(0)
  718.     @calendar[rank0] += 1
  719.     fit
  720.   end
  721.   #--------------------------------------------------------------------------
  722.   # ● 文字列フォーマット
  723.   #--------------------------------------------------------------------------
  724.   def strftime(format)
  725.     format = format.dup
  726.     Ranks.ranks.each_key do |rank|
  727.       pattern = /<<(-?)(0?)(\d)#(#{rank.to_s})>>/
  728.       format.gsub!(pattern){
  729.         left,zero,digit,r = $1,$2,$3,$4
  730.         sprintf("%#{left + zero + digit}d", @calendar[rank])
  731.       }
  732.     end
  733.     format.gsub!(/<<(.+?)>>/){
  734.      trans =  Ranks.transform($1.to_sym)
  735.      trans.nil? ? "###" : trans.call(self)
  736.     }
  737.     format
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ● オブジェクト複製
  741.   #--------------------------------------------------------------------------
  742.   def dup
  743.     Marshal.load(Marshal.dump self)
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ● 起算時からのランク0からみた経過時間の計算
  747.   #--------------------------------------------------------------------------
  748.   def calc_to_i
  749.     @int = @calendar.each.reverse_each.inject(0) { |sum, (rank, value)|
  750.       sum * Ranks.ranks[rank].count + Ranks.normalize(value, rank)
  751.     }
  752.   end
  753.   #--------------------------------------------------------------------------
  754.   # ● 起算時からのランク0からみた経過時間の取得
  755.   #--------------------------------------------------------------------------
  756.   def to_i
  757.     @int
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● 比較演算子
  761.   #--------------------------------------------------------------------------
  762.   def ==(koyomi)
  763.     self.to_i == koyomi.to_i
  764.   end
  765.   def !=(koyomi)
  766.     self.to_i != koyomi.to_i
  767.   end
  768.   def <(koyomi)
  769.     self.to_i < koyomi.to_i
  770.   end
  771.   def <=(koyomi)
  772.     self.to_i <= koyomi.to_i
  773.   end
  774.   def >(koyomi)
  775.     self.to_i > koyomi.to_i
  776.   end
  777.   def >=(koyomi)
  778.     self.to_i >= koyomi.to_i
  779.   end
  780.   def <=>(koyomi)
  781.     self.to_i <=> koyomi.to_i
  782.   end
  783. end
  784. #==============================================================================
  785. # ■ DataManager
  786. #==============================================================================
  787. module DataManager
  788.   #--------------------------------------------------------------------------
  789.   # ● 各種ゲームオブジェクトの作成
  790.   #--------------------------------------------------------------------------
  791.   instance_eval{ alias bmsp_koyomisystem_create_game_objects create_game_objects }
  792.   def self.create_game_objects
  793.     bmsp_koyomisystem_create_game_objects
  794.     $game_koyomi = Game_Koyomi.new(BMSP::KoyomiSystem::INITIAL_CAL)
  795.   end
  796.   #--------------------------------------------------------------------------
  797.   # ● セーブ内容の作成
  798.   #--------------------------------------------------------------------------
  799.   instance_eval{ alias bmsp_koyomisystem_make_save_contents make_save_contents }
  800.   def self.make_save_contents
  801.     contents = bmsp_koyomisystem_make_save_contents
  802.     contents[:koyomi] = $game_koyomi
  803.     contents
  804.   end
  805.   #--------------------------------------------------------------------------
  806.   # ● セーブ内容の展開
  807.   #--------------------------------------------------------------------------
  808.   instance_eval{ alias bmsp_koyomisystem_extract_save_contents extract_save_contents }
  809.   def self.extract_save_contents(contents)
  810.     bmsp_koyomisystem_extract_save_contents(contents)
  811.     $game_koyomi = contents[:koyomi]
  812.   end
  813. end
  814. #==============================================================================
  815. # ■ Game_Map
  816. #==============================================================================
  817. class Game_Map
  818.   #--------------------------------------------------------------------------
  819.   # ● 公開インスタンス変数
  820.   #--------------------------------------------------------------------------
  821.   attr_reader :map # 現在のマップデータ
  822.   attr_accessor :koyomi_display             # 暦表示フラグ
  823.   #--------------------------------------------------------------------------
  824.   # ● オブジェクト初期化
  825.   #--------------------------------------------------------------------------
  826.   alias bmsp_koyomisytem_initialize initialize
  827.   def initialize
  828.     bmsp_koyomisytem_initialize
  829.     @koyomi_display = BMSP::KoyomiSystem::MAP_WINDOW
  830.   end
  831. end
  832. #==============================================================================
  833. # ■ Scene_Menu
  834. #==============================================================================
  835. class Scene_Menu < Scene_MenuBase
  836.   #--------------------------------------------------------------------------
  837.   # ● 開始処理
  838.   #--------------------------------------------------------------------------
  839.   alias bmsp_koyomisystem_start start
  840.   def start
  841.     bmsp_koyomisystem_start
  842.     bmsp_koyomisystem_create_koyomi_window if BMSP::KoyomiSystem::MENU_WINDOW
  843.   end
  844.   #--------------------------------------------------------------------------
  845.   # ● 暦ウィンドウの作成
  846.   #--------------------------------------------------------------------------
  847.   def bmsp_koyomisystem_create_koyomi_window
  848.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MenuKoyomi.new
  849.     @bmsp_koyomi_window.x = 0
  850.     @bmsp_koyomi_window.y = Graphics.height - @gold_window.height - @bmsp_koyomi_window.height
  851.     if BMSP.check_script(:EXPDistribution, 1.00) && BMSP::EXPDistribution::EXP_WINDOW
  852.       @bmsp_koyomi_window.y -= @bmsp_koyomi_window.fitting_height(1)
  853.     end
  854.   end
  855. end
  856. #==============================================================================
  857. # ■ Scene_Map
  858. #==============================================================================
  859. class Scene_Map < Scene_Base
  860.   #--------------------------------------------------------------------------
  861.   # ● 全ウィンドウの作成
  862.   #--------------------------------------------------------------------------
  863.   alias bmsp_koyomisystem_create_all_windows create_all_windows
  864.   def create_all_windows
  865.     bmsp_koyomisystem_create_all_windows
  866.     bmsp_koyomisystem_create_koyomi_window
  867.   end
  868.   #--------------------------------------------------------------------------
  869.   # ● 暦ウィンドウの作成
  870.   #--------------------------------------------------------------------------
  871.   def bmsp_koyomisystem_create_koyomi_window
  872.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MapKoyomi.new
  873.   end
  874.   #--------------------------------------------------------------------------
  875.   # ● 場所移動前の処理
  876.   #--------------------------------------------------------------------------
  877.   alias bmsp_koyomisystem_pre_transfer pre_transfer
  878.   def pre_transfer
  879.     @bmsp_koyomi_window.close
  880.     bmsp_koyomisystem_pre_transfer
  881.     bmsp_koyomisystem_move_time_pass
  882.   end
  883.   #--------------------------------------------------------------------------
  884.   # ● 場所移動後の処理
  885.   #--------------------------------------------------------------------------
  886.   alias bmsp_koyomisystem_post_transfer post_transfer
  887.   def post_transfer
  888.     bmsp_koyomisystem_change_fix_tone
  889.     @bmsp_koyomi_window.open unless BMSP::KoyomiSystem::MAP_WINDOW_FADE
  890.     bmsp_koyomisystem_post_transfer
  891.     @bmsp_koyomi_window.open if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  892.   end
  893.   #--------------------------------------------------------------------------
  894.   # ● 場所移動による時間経過
  895.   #--------------------------------------------------------------------------
  896.   def bmsp_koyomisystem_move_time_pass
  897.     $game_koyomi.move_time_pass
  898.   end
  899.   #--------------------------------------------------------------------------
  900.   # ● 色調固定マップの処理
  901.   #--------------------------------------------------------------------------
  902.   def bmsp_koyomisystem_change_fix_tone
  903.     tone = $game_map.map.bmsp_koyomisystem_fix_tone
  904.     if tone # 色調固定
  905.       $game_map.screen.start_tone_change(tone, 0)
  906.     else # それ以外
  907.       if $game_koyomi.auto_tone
  908.         tone,duration = $game_koyomi.get_match_tone
  909.         $game_map.screen.start_tone_change(tone, 0)
  910.       else
  911.         $game_map.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  912.       end
  913.     end
  914.   end
  915. end
  916. #==============================================================================
  917. # ■ BMSP::KoyomiSystem::Window_MenuKoyomi
  918. #==============================================================================
  919. class BMSP::KoyomiSystem::Window_MenuKoyomi < Window_Base
  920.   #--------------------------------------------------------------------------
  921.   # ● オブジェクト初期化
  922.   #--------------------------------------------------------------------------
  923.   def initialize
  924.     line_number = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT.size
  925.     super(0, 0, window_width, fitting_height(line_number))
  926.     @Time= $game_koyomi.to_i
  927.     @formats = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT
  928.     refresh
  929.   end
  930.   #--------------------------------------------------------------------------
  931.   # ● ウィンドウ幅の取得
  932.   #--------------------------------------------------------------------------
  933.   def window_width
  934.     return 160
  935.   end
  936.   #--------------------------------------------------------------------------
  937.   # ● フレーム更新
  938.   #--------------------------------------------------------------------------
  939.   def update
  940.     super
  941.     refresh if redraw?
  942.   end
  943.   #--------------------------------------------------------------------------
  944.   # ● 再描画するか
  945.   #--------------------------------------------------------------------------
  946.   def redraw?
  947.     if $game_koyomi.to_i != @time
  948.       [url=home.php?mod=space&uid=134219]@Time[/url] = $game_koyomi.to_i
  949.       return true
  950.     end
  951.     false
  952.   end
  953.   #--------------------------------------------------------------------------
  954.   # ● リフレッシュ
  955.   #--------------------------------------------------------------------------
  956.   def refresh
  957.     contents.clear
  958.     draw_background(contents.rect)
  959.     rect = contents.rect
  960.     rect.height = line_height
  961.     rect.y = 0
  962.     @formats.each do |format|
  963.       draw_text(rect, $game_koyomi.strftime(format), 1)
  964.       rect.y += line_height
  965.     end
  966.   end
  967.   #--------------------------------------------------------------------------
  968.   # ● 背景の描画
  969.   #--------------------------------------------------------------------------
  970.   def draw_background(rect)
  971.   end
  972. end
  973. #==============================================================================
  974. # ■ BMSP::KoyomiSystem::Window_MapKoyomi
  975. #==============================================================================
  976. class BMSP::KoyomiSystem::Window_MapKoyomi < BMSP::KoyomiSystem::Window_MenuKoyomi
  977.   #--------------------------------------------------------------------------
  978.   # ● オブジェクト初期化
  979.   #--------------------------------------------------------------------------
  980.   def initialize
  981.     super
  982.     line_number = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT.size
  983.     x= Graphics.width - window_width
  984.     move(x, 0, window_width, fitting_height(line_number))
  985.     self.opacity = 0
  986.     self.contents_opacity = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  987.     @show_count = BMSP::KoyomiSystem::MAP_WINDOW_FADE ? 0 : 1
  988.     @time = $game_koyomi.to_i
  989.     @formats = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT
  990.     refresh
  991.   end
  992.   #--------------------------------------------------------------------------
  993.   # ● ウィンドウ幅の取得
  994.   #--------------------------------------------------------------------------
  995.   def window_width
  996.     return 320
  997.   end
  998.   #--------------------------------------------------------------------------
  999.   # ● フレーム更新
  1000.   #--------------------------------------------------------------------------
  1001.   def update
  1002.     super
  1003.     if @show_count > 0 && $game_map.koyomi_display && BMSP::KoyomiSystem::MAP_WINDOW
  1004.       @show_count -= 1
  1005.     elsif @show_count == 0 && !$game_map.koyomi_display
  1006.         update_fadeout
  1007.     end
  1008.   end
  1009.   #--------------------------------------------------------------------------
  1010.   # ● フェードインの更新
  1011.   #--------------------------------------------------------------------------
  1012.   def update_fadein
  1013.     self.contents_opacity += 5 if self.contents_opacity<255
  1014.    
  1015.   end
  1016.   #--------------------------------------------------------------------------
  1017.   # ● フェードアウトの更新
  1018.   #--------------------------------------------------------------------------
  1019.   def update_fadeout
  1020.     self.contents_opacity -= 5 if self.contents_opacity>0
  1021.     if self.contents_opacity <=0
  1022.       @show_count =51
  1023.     end
  1024.   end
  1025.   #--------------------------------------------------------------------------
  1026.   # ● ウィンドウを開く
  1027.   #--------------------------------------------------------------------------
  1028.   def open
  1029.     refresh
  1030.     if $game_map.map.bmsp_koyomisystem_display_koyomi_on_map?
  1031.       if BMSP::KoyomiSystem::MAP_WINDOW || !$game_map.koyomi_display
  1032.         @show_count = 51
  1033.         self.contents_opacity = 0
  1034.       else
  1035.         @show_count = 1
  1036.         self.contents_opacity = 255
  1037.       end
  1038.     else
  1039.       @show_count = 0
  1040.       self.contents_opacity = 0
  1041.     end
  1042.     self
  1043.   end
  1044.   #--------------------------------------------------------------------------
  1045.   # ● ウィンドウを閉じる
  1046.   #--------------------------------------------------------------------------
  1047.   def close
  1048.     @show_count = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  1049.     self
  1050.   end
  1051.   #--------------------------------------------------------------------------
  1052.   # ● 背景の描画
  1053.   #--------------------------------------------------------------------------
  1054.   def draw_background(rect)
  1055.     temp_rect = rect.clone
  1056.     temp_rect.width /= 2
  1057.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  1058.     temp_rect.x = temp_rect.width
  1059.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  1060.   end
  1061.   #--------------------------------------------------------------------------
  1062.   # ● 背景色 1 の取得
  1063.   #--------------------------------------------------------------------------
  1064.   def back_color1
  1065.     Color.new(0, 0, 0, 192)
  1066.   end
  1067.   #--------------------------------------------------------------------------
  1068.   # ● 背景色 2 の取得
  1069.   #--------------------------------------------------------------------------
  1070.   def back_color2
  1071.     Color.new(0, 0, 0, 0)
  1072.   end
  1073. end
  1074. #==============================================================================
  1075. # ■ Game_Screen
  1076. #==============================================================================
  1077. class Game_Screen
  1078.   #--------------------------------------------------------------------------
  1079.   # ● 公開インスタンス変数
  1080.   #--------------------------------------------------------------------------
  1081.   attr_reader :tone_target
  1082.   #--------------------------------------------------------------------------
  1083.   # ● フレーム更新
  1084.   #--------------------------------------------------------------------------
  1085.   alias bmsp_koyomisystem_update update
  1086.   def update
  1087.     bmsp_koyomisystem_update
  1088.     bmsp_koyomisystem_update_koyomi
  1089.   end
  1090.   #--------------------------------------------------------------------------
  1091.   # ● 暦の更新
  1092.   #--------------------------------------------------------------------------
  1093.   def bmsp_koyomisystem_update_koyomi
  1094.     $game_koyomi.update(self)
  1095.   end
  1096. end
  1097. #==============================================================================
  1098. # ■ Game_Troop
  1099. #==============================================================================
  1100. class Game_Troop < Game_Unit
  1101.   #--------------------------------------------------------------------------
  1102.   # ● セットアップ
  1103.   #--------------------------------------------------------------------------
  1104.   def setup(troop_id)
  1105.     clear
  1106.     @troop_id = troop_id
  1107.     @enemies = []
  1108.     troop.members.each do |member|
  1109.       next unless $data_enemies[member.enemy_id]
  1110.       enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  1111.       enemy.hide if member.hidden
  1112.       enemy.screen_x = member.x
  1113.       enemy.screen_y = member.y
  1114.       @enemies.push(enemy)
  1115.     end
  1116.     init_screen_tone
  1117.     make_unique_names
  1118.   end
  1119.   #--------------------------------------------------------------------------
  1120.   # ● 画面の色調を初期化
  1121.   #--------------------------------------------------------------------------
  1122.   alias bmsp_koyomisystem_init_screen_tone init_screen_tone
  1123.   def init_screen_tone
  1124.     bmsp_koyomisystem_init_screen_tone
  1125.     bmsp_koyomisystem_battle_start_time_pass
  1126.     bmsp_koyomisystem_fix_tone_on_battle
  1127.   end
  1128.   #--------------------------------------------------------------------------
  1129.   # ● 戦闘開始による時間経過
  1130.   #--------------------------------------------------------------------------
  1131.   def bmsp_koyomisystem_battle_start_time_pass
  1132.     $game_koyomi.battle_start_time_pass
  1133.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  1134.     tone,duration = $game_koyomi.get_match_tone
  1135.     $game_troop.screen.start_tone_change(tone, 0)
  1136.   end
  1137.   #--------------------------------------------------------------------------
  1138.   # ● バトル中の色調固定
  1139.   #--------------------------------------------------------------------------
  1140.   def bmsp_koyomisystem_fix_tone_on_battle
  1141.     return unless $game_koyomi.fix_tone_on_battle
  1142.     $game_troop.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  1143.   end
  1144. end
  1145. #==============================================================================
  1146. # ■ Scene_Battle
  1147. #==============================================================================
  1148. class Scene_Battle < Scene_Base
  1149.   #--------------------------------------------------------------------------
  1150.   # ● 終了処理
  1151.   #--------------------------------------------------------------------------
  1152.   alias bmsp_koyomisystem_terminate terminate
  1153.   def terminate
  1154.     bmsp_koyomisystem_terminate
  1155.     bmsp_koyomisystem_battle_end_time_pass
  1156.   end
  1157.   #--------------------------------------------------------------------------
  1158.   # ● 戦闘終了による時間経過
  1159.   #--------------------------------------------------------------------------
  1160.   def bmsp_koyomisystem_battle_end_time_pass
  1161.     $game_koyomi.battle_end_time_pass
  1162.     return if !$game_koyomi.auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  1163.     tone,duration = $game_koyomi.get_match_tone
  1164.     $game_map.screen.start_tone_change(tone, 0)
  1165.   end
  1166. end
复制代码
  1. #显示或隐藏时间窗口
  2. $game_map.koyomi_display = true/false
复制代码
如有其它问题自己解决

点评

谢谢,可以调用了,但还是有问题,只能调用一次,关闭就无法开启,开启也无法关闭,咋回事挖  发表于 2013-8-24 21:55

评分

参与人数 2星屑 +45 梦石 +1 收起 理由
Sion + 1 认可答案
longshili + 45 认可答案

查看全部评分

http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2013-8-6
帖子
101
6
 楼主| 发表于 2013-8-24 17:22:05 | 只看该作者
tseyik 发表于 2013-8-24 16:26
説明頁
http://blueredzone.com/script/vxace/vxace_koyomisystem.html
ゲーム中は基本的にスクリプトコマ ...

$game_map.koyomi_dispaly = true/false

试验了好多次,包括关闭,开始,暂停,还是不行
是什么脚本冲突了吗??

help.JPG (10.63 KB, 下载次数: 25)

help.JPG

点评

啊啊??不明白。。。  发表于 2013-8-24 18:05
是 $game_map.koyomi_display = true/false 说明中单词拼写错误  发表于 2013-8-24 18:00
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22963
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
5
发表于 2013-8-24 16:26:45 | 只看该作者
説明頁
http://blueredzone.com/script/vxace/vxace_koyomisystem.html
ゲーム中は基本的にスクリプトコマンドから$game_koyomiにアクセスすることで暦を操作できます.

以下は$game_koyomiからできる主な操作一覧です.

$game_koyomi.auto_tone = true/false

    時間による画面色調の自動変更をするかどうか設定できます.
$game_koyomi.tone_temp_diration = int

    これを設定した次の画面色調自動変更時のみ指定した時間で色調が変化します.
    イベント等で時間を進めた際早く色調を切り替えたいときなどに利用します.
$game_koyomi.move_temp_time_pass = {:rank => value, ...}

    これを指定した次の場所移動時のみ指定した分だけ時間が経過します.
$game_koyomi.battle_start_temp_time_pass = {:rank => value, ...}

    これを指定した次の戦闘開始時のみ指定した分だけ時間が経過します.
$game_koyomi.battle_end_temp_time_pass = {:rank => value, ...}

    これを指定した次の戦闘終了時時のみ指定した分だけ時間が経過します.
$game_koyomi.auto_time_pass = true/false

    自動で時間を経過させるか設定できます.
$game_koyomi.stop_auto_time_pass_on_event = true/false

    自動で時間が経過するとき,イベント中は時間経過を停止するか設定できます.
$game_koyomi.stop_auto_time_pass_on_battlet = true/false

    自動で時間が経過するとき,バトル中は時間経過を停止するか設定できます.
$game_koyomi.rank

    設定した各ランクの値を取得できます.

    例・現在の月を取得
    $game_koyomi.mon
$game_koyomi.rank = value

    設定した各ランクの値を変更できます.

    例・現在の月を3に設定
    $game_koyomi.mon = 3

    例・3時間進める
    $game_koyomi.hour += 3
$game_koyomi.special

    設定した各特殊表現の値を取得できます.

    例・現在の時間帯を取得
    $game_koyomi.timezone
$game_koyomi.set(init)

    暦をセットします.
    initは各ランクと対応する値のハッシュか,後述する起算時からのランク0からみた経過時間を指定します.

    例・ハッシュで暦をセット
    $game_koyomi.set(year: 2011, mon: 12. day: 15)

    例・ある暦から得た起算時からの経過時間で暦をセット
    $game_koyomi.set(koyomi.to_i)
$game_koyomi.time_pass(amount)

    amountに各ランクと対応する値のハッシュを指定して,その分だけ時間を経過させます.

    例・1月と3時間だけ時間をすすめる
    $game_koyomi.time_pass(mon: 1, hour: 3)
$game_koyomi.to_i

    起算時からのランク0からみた経過時間を取得します.
    この結果を変数などに保存することで容易に暦を復元できます.

    例・暦を整数にして保存・復元する
    koyomi = $game_koyomi.to_i
    $game_koyomi.set(koyomi)
$game_koyomi.strftime(format)

    formatに変換文字列を指定して現在の暦を文字列にします.

    format中には以下の二つの特別な文字列を記述することで暦の値を置き換えることができます.

    <<表示桁#rank>>
    表示桁は先頭に - または 0 を付けた数字と置き換えます.
    rankは設定したランクのいずれかと置き換えます.
    ランクの値が指定した数字の桁分の幅の文字列と置換されます.
    先頭に 0 をつけると余った桁0で埋められます.
    先頭に - をつけると右寄せとなります.

    <<label>>
    labelはTRANSFORMで指定した変換ラベルと置き換えます.
    TRANSFORMで設定した内容に従って文字列に置換されます.

    例・2011年12月15日4時00分00秒の暦のとき
    $game_koyomi.strftime("<<4#year>>-<<4#mon>>-<<04#day>>")
    #=> 2011- 12-0015
    $game_koyomi.strftime("<<mon>>-<<-4#day>>:<<timezone>>")
    #=> Dec-15 :早朝

マップの個別設定

マップのメモ欄に以下を記述することでマップごとに設定を行うことができます.
==暦非表示==

マップで暦ウインドウを表示する場合でもこの記述があるマップは暦ウインドウを表示しません.
==暦停止==

自動で時間が経過する場合でもこの記述があるマップは自動で時間が経過しません.
==色調固定[r,g,b,gray]==

自動で画面色調が変更される場合でもこの記述があるマップは指定した色調になります.
屋内マップなどで利用します.
薄暗い洞窟等も表現可能です.
r,g,b,grayはそれぞれ色調(トーン)を指定する値です.

例・時間にかかわらず薄暗い洞窟
==色調固定[-34,-34,-34,34]==
注意

このスクリプトでは「RPG::Map」「Game_Map」「Scene_Menu」「Scene_Map」「Game_Screen」「Game_Troop」「Scene_Battle」のメソッドを改変しています.
|ページトップへ|


点评

万分感谢,我在研究研究 :)  发表于 2013-8-24 17:02

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2013-8-6
帖子
101
4
 楼主| 发表于 2013-8-24 16:03:42 | 只看该作者
本帖最后由 longshili 于 2013-8-24 16:04 编辑

[quote]tseyik 发表于 2013-8-24 13:12

“1〜271不是有説明有舉例麼?”

我是对这翻译修改过
尝试修改无果{:2_253:}
只能在脚本里设置开启和关闭
游戏里事件调用不了,开启和关闭都没效果
不知道是不是语法错误,还是要怎么进一步弄下??
实在弄不懂了,新接触,新手
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
171 小时
注册时间
2013-8-6
帖子
101
3
 楼主| 发表于 2013-8-24 13:35:58 | 只看该作者
tseyik 发表于 2013-8-24 13:12
在线翻译_有道
http://fanyi.youdao.com/
免費線上翻譯器 - WorldLingo

我晕,老大,我尝试过了,可能是我无能还是不得其解
我不明白为这脚本进入游戏自动调用的,一般的脚本都是开关,菜单什么调用
要怎么控制这个昼夜时间脚本的开始和关闭啊

点评

尝试修改无果,只能开启和关闭。游戏里时间调用没效果,不知为什么??  发表于 2013-8-24 15:58
1〜271不是有説明有舉例麼?  发表于 2013-8-24 13:57
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22963
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2013-8-24 13:12:33 | 只看该作者
本帖最后由 tseyik 于 2013-8-24 13:20 编辑

在线翻译_有道
http://fanyi.youdao.com/
免費線上翻譯器 - WorldLingo
http://www.worldlingo.com/zh_tw/ ... ngo_translator.html
谷哥翻譯器
http://www.bestcnedu.cn/google-td.html
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 22:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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