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

Project1

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

[已经过期] VA昼夜脚本问题,请求帮助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
103
在线时间
10 小时
注册时间
2018-1-13
帖子
10
跳转到指定楼层
1
发表于 2018-2-16 23:11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 VIPArcher 于 2018-12-31 02:54 编辑

今天在论坛上找到了以前的帖子
这是那个帖子
我是个萌新,不知道怎么发ruby语言的那个框,我就直接先放在下面(也请大家教教我)

RUBY 代码复制
  1. module BMSP
  2.   @@includes ||= {}
  3.   @@includes[:KoyomiSystem] = 1.00
  4.   module KoyomiSystem
  5.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  6.     #詳細設定
  7.     # ランクの設定
  8.     RANKS = {
  9.       :sec => 0...60,
  10.       :min => 0...60,
  11.       :hour => 0...24,
  12.       :day => 1..30,
  13.       :mon => 1..12,
  14.       :year => 1..9999
  15.     }
  16.     #------------------------------------------------------------
  17.     # ランク以外の暦情報の設定
  18.     SPECIAL_EXP = {}
  19.     SPECIAL_EXP[:timezone] = ->(cal){
  20.       case cal.hour
  21.       when 4,5
  22.         0 # 早朝は0を返す
  23.       when 6,7,8
  24.         1 # 朝は1を返す
  25.       when 9...16
  26.         2 # 昼は2を返す
  27.       when 16,17
  28.         3 # 夕方は3を返す
  29.       when 18...22
  30.         4 # 夜は4を返す
  31.       when 22...24,0...4
  32.         5 # 深夜は5を返す
  33.       end
  34.     }
  35.     #------------------------------------------------------------
  36.     # 表示変換の設定
  37.     TRANSFORM = {}
  38.     TRANSFORM[:mon] = ->(cal){
  39.       ["Jan", "Fab", "Mar", "Apr", "May", "Jun",
  40.        "Jul", "Aug", "Seq", "Oct", "Nov", "Dec"][cal.mon]
  41.     }
  42.     TRANSFORM[:timezone] = ->(cal){
  43.       case cal.timezone # 上で設定した時間帯で条件分岐
  44.       when 0
  45.         "清晨"
  46.       when 1
  47.         "上午"
  48.       when 2
  49.         "中午"
  50.       when 3
  51.         "下午"
  52.       when 4
  53.         "夜晚"
  54.       when 5
  55.         "深夜"
  56.       end
  57.     }
  58.     #------------------------------------------------------------
  59.     # ゲーム開始時の暦
  60.     INITIAL_CAL = {
  61.       :sec => 0,
  62.       :min => 0,
  63.       :hour => 0,
  64.       :day => 1,
  65.       :mon => 12,
  66.       :year => 2015
  67.     }
  68.     #------------------------------------------------------------
  69.     # マップで暦ウインドウを表示するか
  70.     MAP_WINDOW = true
  71.     # マップでの暦ウインドウをフェードするか(falseで常に表示)
  72.     MAP_WINDOW_FADE = false
  73.     # マップでの暦ウインドウの表示内容
  74.     MAP_WINDOW_FORMAT = [
  75.       "<<4#year>>年<<2#mon>>月<<2#day>>日",
  76.       "<<02#hour>>:<<02#min>>:<<02#sec>> [<<timezone>>]"
  77.     ]
  78.     # メニューで暦ウインドウを表示するか
  79.     MENU_WINDOW = true
  80.     # メニューでの暦ウインドウの表示内容
  81.     MENU_WINDOW_FORMAT = [
  82.       "<<4#year>>-<<2#mon>>-<<2#day>>",
  83.       "<<02#hour>>:<<02#min>>:<<02#sec>>"
  84.     ]
  85.     #------------------------------------------------------------
  86.     # 暦による画面の色調の自動変更
  87.     AUTO_TONE = true
  88.     # デフォルト色調変更時間
  89.     AUTO_TONE_DURATION = 120
  90.     # 色調変更の条件
  91.     AUTO_TONE_COND = {
  92.       {:hour => 16...18} => Tone.new(68,-34,-34,0),
  93.       {:hour => 18...22} => Tone.new(-34,-34,0,34),
  94.       {:hour => 22...4} => Tone.new(-68,-68,0,68),
  95.       {:hour => 4...6} => Tone.new(-34,-34,-34,34),
  96.       {:hour => 6...9} => Tone.new(34,34,34,34)
  97.     }
  98.     # バトル画面では色調を変更しない
  99.     FIX_TONE_ON_BATTLE = false
  100.     #------------------------------------------------------------
  101.     # 時間が自動経過するか
  102.     AUTO_TIME_PASS = true
  103.     # 時間の自動経過間隔
  104.     AUTO_TIME_PASS_DURATION = 120
  105.     # 時間の自動経過量
  106.     TIME_PASSING = {:min => 1}
  107.     # イベント中は自動経過を停止するか
  108.     STOP_ON_EVENT = true
  109.     # バトル中は自動経過を停止するか
  110.     STOP_ON_BATTLE = false
  111.     #------------------------------------------------------------
  112.     # 場所移動による時間経過
  113.     MOVE_TIME_PASS = {:min => 5}
  114.     # 戦闘開始による時間経過
  115.     BATTLE_START_TIME_PASS = {}
  116.     # 戦闘終了による時間経過
  117.     BATTLE_END_TIME_PASS = {}
  118.     #▲▽▲▽▲▽▲▽▲▽▲▽▲▽▲▽
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 導入スクリプトのチェック
  122.   #--------------------------------------------------------------------------
  123.   class << self
  124.     if method_defined?(:check_script)
  125.       alias koyomisystem_check_script check_script
  126.     end
  127.   end
  128.   def self.check_script(script, version)
  129.     if methods.include?(:koyomisystem_check_script)
  130.       koyomisystem_check_script(script, version)
  131.     end
  132.     @@includes[script] && @@includes[script] >= version
  133.   end
  134. end
  135. #==============================================================================
  136. # ■ RPG::Map
  137. #==============================================================================
  138. class RPG::Map
  139.   #--------------------------------------------------------------------------
  140.   # ● 暦ウインドウ表示のマップか
  141.   #--------------------------------------------------------------------------
  142.   def bmsp_koyomisystem_display_koyomi_on_map?
  143.     return @bmsp_koyomi_display if @bmsp_koyomi_display
  144.     @bmsp_koyomi_display = !self.note.include?('==暦非表示==')
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 色調固定
  148.   #--------------------------------------------------------------------------
  149.   def bmsp_koyomisystem_fix_tone
  150.     return @bmsp_fix_tone unless @bmsp_fix_tone.nil?
  151.     if self.note =~ /==色調固定\[(\d+),(\d+),(\d+),(\d+)\]==/
  152.       r,g,b,g = $1.to_i,$2.to_i,$3.to_i,$4.to_i
  153.       @bmsp_fix_tone = Tone.new(r,g,b,g)
  154.     else
  155.       @bmsp_fix_tone = false
  156.     end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 暦停止のマップか
  160.   #--------------------------------------------------------------------------
  161.   def bmsp_koyomisystem_koyomi_stop?
  162.     return @bmsp_koyomi_stop if @bmsp_koyomi_stop
  163.     @bmsp_koyomi_stop = self.note.include?('==暦停止==')
  164.   end
  165. end
  166. #==============================================================================
  167. # ■ Game_Koyomi
  168. #==============================================================================
  169. class Game_Koyomi
  170.   #============================================================================
  171.   # ■ Ranks
  172.   #============================================================================
  173.   module Ranks
  174.     #--------------------------------------------------------------------------
  175.     # ● モジュール変数
  176.     #--------------------------------------------------------------------------
  177.     @@ranks = BMSP::KoyomiSystem::RANKS
  178.     @@transform = BMSP::KoyomiSystem::TRANSFORM
  179.     #--------------------------------------------------------------------------
  180.     # ● ランクの取得
  181.     #--------------------------------------------------------------------------
  182.     def self.ranks
  183.       @@ranks
  184.     end
  185.     #--------------------------------------------------------------------------
  186.     # ● 表示変換
  187.     #--------------------------------------------------------------------------
  188.     def self.transform(label)
  189.       @@transform[label]
  190.     end
  191.     #--------------------------------------------------------------------------
  192.     # ● ランクの取得(順位指定)
  193.     #--------------------------------------------------------------------------
  194.     def self.rank(i)
  195.       r = @@ranks.to_a[i]
  196.       return nil if r.nil?
  197.       r.first
  198.     end
  199.     #--------------------------------------------------------------------------
  200.     # ● ノーマライズ
  201.     #--------------------------------------------------------------------------
  202.     def self.normalize(i, rank)
  203.       i - @@ranks[rank].min
  204.     end
  205.     #--------------------------------------------------------------------------
  206.     # ● 指定した範囲の値か
  207.     #--------------------------------------------------------------------------
  208.     def self.include_range?(rank, range, value)
  209.       rank_min = @@ranks[rank].min
  210.       rank_max = @@ranks[rank].max
  211.       range_min = range.min
  212.       range_max = range.max
  213.       unless range_min.nil? || range_max.nil? # 有効なRange
  214.         min = [[range_min, rank_min].max, rank_max].min
  215.         max = [[range_max, rank_min].max, rank_max].min
  216.         (min..max).include?(value)
  217.       else # 無効なRange
  218.         first = range.first
  219.         last = range.last
  220.         nf = [[first, rank_min].max, rank_max].min
  221.         nl = [[last, rank_min].max, rank_max].min
  222.         range1 = (nf..rank_max)
  223.         range2 = nl <= last && range.exclude_end? ? (rank_min...nl) : (rank_min..nl)
  224.         range1.include?(value) || range2.include?(value)
  225.       end
  226.     end
  227.     #--------------------------------------------------------------------------
  228.     # ● ランクを一つ進める
  229.     #--------------------------------------------------------------------------
  230.     def self.succ(rank)
  231.       find = false
  232.       @@ranks.each do |r,|
  233.         return r if find
  234.         find = true if r == rank
  235.       end
  236.       return nil
  237.     end
  238.   end
  239.   #============================================================================
  240.   #--------------------------------------------------------------------------
  241.   # ● 公開インスタンス変数
  242.   #--------------------------------------------------------------------------
  243.   attr_accessor :auto_tone # 画面の色調自動変更フラグ
  244.   attr_accessor :tone_temp_duration # 画面の色調時間一時変更フラグ
  245.   attr_accessor :move_temp_time_pass # 場所移動による時間経過一時変更フラグ
  246.   attr_accessor :battle_start_temp_time_pass # 戦闘開始による時間経過一時変更フラグ
  247.   attr_accessor :battle_end_temp_time_pass # 戦闘終了による時間経過一時変更フラグ
  248.   attr_accessor :auto_time_pass # 時間自動経過フラグ
  249.   attr_accessor :stop_auto_time_pass_on_event # イベント中時間自動経過停止フラグ
  250.   attr_accessor :stop_auto_time_pass_on_battle # バトル中時間自動経過停止フラグ
  251.   attr_reader :fix_tone_on_battle # バトル画面色調固定フラグ
  252.   #--------------------------------------------------------------------------
  253.   # ● ランクアクセサの定義
  254.   #--------------------------------------------------------------------------
  255.   Ranks.ranks.each_key do |rank|
  256.     reader = rank
  257.     writer = :"#{rank}="
  258.     define_method(reader){ @calendar[rank] }
  259.     define_method(writer){ |value| @calendar[rank] = value; fit; value }
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 特別表現リーダーの定義
  263.   #--------------------------------------------------------------------------
  264.   BMSP::KoyomiSystem::SPECIAL_EXP.each do |special, exp|
  265.     define_method(special){ exp.call(self) }
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● オブジェクト初期化
  269.   #--------------------------------------------------------------------------
  270.   def initialize(init= {})
  271.     # 各種設定の初期化
  272.     @auto_tone = BMSP::KoyomiSystem::AUTO_TONE
  273.     @tone_temp_duration = 0
  274.     @default_tone = Tone.new(0,0,0,0)
  275.     @auto_time_pass = BMSP::KoyomiSystem::AUTO_TIME_PASS
  276.     @auto_time_pass_amount = {
  277.       :duration => BMSP::KoyomiSystem::AUTO_TIME_PASS_DURATION,
  278.       :amount => BMSP::KoyomiSystem::TIME_PASSING
  279.     }
  280.     @move_time_pass = BMSP::KoyomiSystem::MOVE_TIME_PASS
  281.     @battle_start_time_pass = BMSP::KoyomiSystem::BATTLE_START_TIME_PASS
  282.     @battle_end_time_pass = BMSP::KoyomiSystem::BATTLE_END_TIME_PASS
  283.     @stop_auto_time_pass_on_event = BMSP::KoyomiSystem::STOP_ON_EVENT
  284.     @stop_auto_time_pass_on_battle = BMSP::KoyomiSystem::STOP_ON_BATTLE
  285.     @fix_tone_on_battle = BMSP::KoyomiSystem::FIX_TONE_ON_BATTLE
  286.     # 暦の初期化
  287.     set(init)
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ● 範囲外の暦を修正
  291.   #--------------------------------------------------------------------------
  292.   def fit
  293.     carry = 0
  294.     @calendar.each_key do |rank|
  295.       @calendar[rank] += carry
  296.       value = @calendar[rank]
  297.       if Ranks.ranks[rank].include?(value)
  298.         carry = 0
  299.       else
  300.         n_value = Ranks.normalize(value, rank)
  301.         card = Ranks.ranks[rank].count
  302.         carry = n_value / card
  303.         @calendar[rank] = n_value % card + Ranks.ranks[rank].min
  304.       end
  305.     end
  306.     @int = calc_to_i
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 暦のセット
  310.   #--------------------------------------------------------------------------
  311.   def set(init)
  312.     @calendar = {}
  313.     ini_h = init.is_a?(Hash) ? init : {}
  314.     Ranks.ranks.each_key do |rank|
  315.       @calendar[rank] =
  316.         ini_h[rank] ? ini_h[rank] : Ranks.ranks[rank].min
  317.     end
  318.     @calendar[Ranks.rank(0)] += init if init.is_a?(Integer)
  319.     fit
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ● 時間自動経過の設定
  323.   #--------------------------------------------------------------------------
  324.   def set_auto_time_pass(passing)
  325.     @auto_time_pass_amount[:duration] = passing[:duration] if passing[:duration]
  326.     @auto_time_pass_amount[:amount] = passing[:amount] if passing[:amount]
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● フレーム更新
  330.   #--------------------------------------------------------------------------
  331.   def update(screen)
  332.     update_auto_time_pass
  333.     update_auto_tone(screen)
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ● 時間経過
  337.   #--------------------------------------------------------------------------
  338.   def time_pass(amount)
  339.     amount.each do |rank, value|
  340.       next unless @calendar[rank]
  341.       @calendar[rank] += value
  342.     end
  343.     fit
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● イベント中判定
  347.   #--------------------------------------------------------------------------
  348.   def check_event_running?
  349.     if $game_party.in_battle
  350.       $game_troop.interpreter.running?
  351.     elsif !$BTEST
  352.       $game_map.interpreter.running?
  353.     end
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # ● 時間自動経過
  357.   #--------------------------------------------------------------------------
  358.   def update_auto_time_pass
  359.     return unless @auto_time_pass
  360.     return if @stop_auto_time_pass_on_event && check_event_running?
  361.     return if @stop_auto_time_pass_on_battle && $game_party.in_battle
  362.     return if !$BTEST && $game_map.map.bmsp_koyomisystem_koyomi_stop?
  363.     if @auto_time_pass_amount[:duration] > 0
  364.       return if Graphics.frame_count % @auto_time_pass_amount[:duration] != 0
  365.       time_pass(@auto_time_pass_amount[:amount])
  366.     end
  367.   end
  368.   #--------------------------------------------------------------------------
  369.   # ● 場所移動による時間経過
  370.   #--------------------------------------------------------------------------
  371.   def move_time_pass
  372.     unless @move_temp_time_pass
  373.       time_pass(@move_time_pass)
  374.     else
  375.       time_pass(@move_temp_time_pass)
  376.       @move_temp_time_pass = nil
  377.     end
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● 戦闘開始による時間経過
  381.   #--------------------------------------------------------------------------
  382.   def battle_start_time_pass
  383.     unless @battle_start_temp_time_pass
  384.       time_pass(@battle_start_time_pass)
  385.     else
  386.       time_pass(@battler_start_temp_time_pass)
  387.       @battle_start_temp_time_pass = nil
  388.     end
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● 戦闘終了による時間経過
  392.   #--------------------------------------------------------------------------
  393.   def battle_end_time_pass
  394.     unless @battle_end_temp_time_pass
  395.       time_pass(@battle_end_time_pass)
  396.     else
  397.       time_pass(@battler_end_temp_time_pass)
  398.       @battle_end_temp_time_pass = nil
  399.     end
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 画面の色調自動変更
  403.   #--------------------------------------------------------------------------
  404.   def update_auto_tone(screen)
  405.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  406.     return if $game_party.in_battle && @fix_tone_on_battle
  407.     target_tone,duration = get_match_tone
  408.     return if target_tone.nil? || screen.tone_target == target_tone
  409.     # 変更時間の設定
  410.     duration = BMSP::KoyomiSystem::AUTO_TONE_DURATION if duration.nil?
  411.     duration = @tone_temp_duration ? @tone_temp_duration : duration
  412.     @tone_temp_duration = nil
  413.     # 色調変更
  414.     screen.start_tone_change(target_tone, duration)
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ● 条件にマッチする色調の取得
  418.   #--------------------------------------------------------------------------
  419.   def get_match_tone
  420.     BMSP::KoyomiSystem::AUTO_TONE_COND.each do |cond, (tone,duration)|
  421.       next unless cond.each { |rank, range|
  422.         case range
  423.         when Range
  424.           break unless Ranks.include_range?(rank, range, @calendar[rank])
  425.         else # それ以外(整数指定)
  426.           break if @calendar[rank] != range
  427.         end
  428.       }
  429.       return tone,duration
  430.     end
  431.     @default_tone
  432.   end
  433.   #--------------------------------------------------------------------------
  434.   # ● 暦を一つ進める
  435.   #--------------------------------------------------------------------------
  436.   def succ
  437.     rank0 = Ranks.rank(0)
  438.     @calendar[rank0] += 1
  439.     fit
  440.   end
  441.   #--------------------------------------------------------------------------
  442.   # ● 文字列フォーマット
  443.   #--------------------------------------------------------------------------
  444.   def strftime(format)
  445.     format = format.dup
  446.     Ranks.ranks.each_key do |rank|
  447.       pattern = /<<(-?)(0?)(\d)#(#{rank.to_s})>>/
  448.       format.gsub!(pattern){
  449.         left,zero,digit,r = $1,$2,$3,$4
  450.         sprintf("%#{left + zero + digit}d", @calendar[rank])
  451.       }
  452.     end
  453.     format.gsub!(/<<(.+?)>>/){
  454.      trans =  Ranks.transform($1.to_sym)
  455.      trans.nil? ? "###" : trans.call(self)
  456.     }
  457.     format
  458.   end
  459.   #--------------------------------------------------------------------------
  460.   # ● オブジェクト複製
  461.   #--------------------------------------------------------------------------
  462.   def dup
  463.     Marshal.load(Marshal.dump self)
  464.   end
  465.   #--------------------------------------------------------------------------
  466.   # ● 起算時からのランク0からみた経過時間の計算
  467.   #--------------------------------------------------------------------------
  468.   def calc_to_i
  469.     @int = @calendar.each.reverse_each.inject(0) { |sum, (rank, value)|
  470.       sum * Ranks.ranks[rank].count + Ranks.normalize(value, rank)
  471.     }
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● 起算時からのランク0からみた経過時間の取得
  475.   #--------------------------------------------------------------------------
  476.   def to_i
  477.     @int
  478.   end
  479.   #--------------------------------------------------------------------------
  480.   # ● 比較演算子
  481.   #--------------------------------------------------------------------------
  482.   def ==(koyomi)
  483.     self.to_i == koyomi.to_i
  484.   end
  485.   def !=(koyomi)
  486.     self.to_i != koyomi.to_i
  487.   end
  488.   def <(koyomi)
  489.     self.to_i < koyomi.to_i
  490.   end
  491.   def <=(koyomi)
  492.     self.to_i <= koyomi.to_i
  493.   end
  494.   def >(koyomi)
  495.     self.to_i > koyomi.to_i
  496.   end
  497.   def >=(koyomi)
  498.     self.to_i >= koyomi.to_i
  499.   end
  500.   def <=>(koyomi)
  501.     self.to_i <=> koyomi.to_i
  502.   end
  503. end
  504. #==============================================================================
  505. # ■ DataManager
  506. #==============================================================================
  507. module DataManager
  508.   #--------------------------------------------------------------------------
  509.   # ● 各種ゲームオブジェクトの作成
  510.   #--------------------------------------------------------------------------
  511.   instance_eval{ alias bmsp_koyomisystem_create_game_objects create_game_objects }
  512.   def self.create_game_objects
  513.     bmsp_koyomisystem_create_game_objects
  514.     $game_koyomi = Game_Koyomi.new(BMSP::KoyomiSystem::INITIAL_CAL)
  515.   end
  516.   #--------------------------------------------------------------------------
  517.   # ● セーブ内容の作成
  518.   #--------------------------------------------------------------------------
  519.   instance_eval{ alias bmsp_koyomisystem_make_save_contents make_save_contents }
  520.   def self.make_save_contents
  521.     contents = bmsp_koyomisystem_make_save_contents
  522.     contents[:koyomi] = $game_koyomi
  523.     contents
  524.   end
  525.   #--------------------------------------------------------------------------
  526.   # ● セーブ内容の展開
  527.   #--------------------------------------------------------------------------
  528.   instance_eval{ alias bmsp_koyomisystem_extract_save_contents extract_save_contents }
  529.   def self.extract_save_contents(contents)
  530.     bmsp_koyomisystem_extract_save_contents(contents)
  531.     $game_koyomi = contents[:koyomi]
  532.   end
  533. end
  534. #==============================================================================
  535. # ■ Game_Map
  536. #==============================================================================
  537. class Game_Map
  538.   #--------------------------------------------------------------------------
  539.   # ● 公開インスタンス変数
  540.   #--------------------------------------------------------------------------
  541.   attr_reader :map # 現在のマップデータ
  542.   attr_accessor :koyomi_display             # 暦表示フラグ
  543.   #--------------------------------------------------------------------------
  544.   # ● オブジェクト初期化
  545.   #--------------------------------------------------------------------------
  546.   alias bmsp_koyomisytem_initialize initialize
  547.   def initialize
  548.     bmsp_koyomisytem_initialize
  549.     @koyomi_display = BMSP::KoyomiSystem::MAP_WINDOW
  550.   end
  551. end
  552. #==============================================================================
  553. # ■ Scene_Menu
  554. #==============================================================================
  555. class Scene_Menu < Scene_MenuBase
  556.   #--------------------------------------------------------------------------
  557.   # ● 開始処理
  558.   #--------------------------------------------------------------------------
  559.   alias bmsp_koyomisystem_start start
  560.   def start
  561.     bmsp_koyomisystem_start
  562.     bmsp_koyomisystem_create_koyomi_window if BMSP::KoyomiSystem::MENU_WINDOW
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ● 暦ウィンドウの作成
  566.   #--------------------------------------------------------------------------
  567.   def bmsp_koyomisystem_create_koyomi_window
  568.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MenuKoyomi.new
  569.     @bmsp_koyomi_window.x = 0
  570.     @bmsp_koyomi_window.y = Graphics.height - @gold_window.height - @bmsp_koyomi_window.height
  571.     if BMSP.check_script(:EXPDistribution, 1.00) && BMSP::EXPDistribution::EXP_WINDOW
  572.       @bmsp_koyomi_window.y -= @bmsp_koyomi_window.fitting_height(1)
  573.     end
  574.   end
  575. end
  576. #==============================================================================
  577. # ■ Scene_Map
  578. #==============================================================================
  579. class Scene_Map < Scene_Base
  580.   #--------------------------------------------------------------------------
  581.   # ● 全ウィンドウの作成
  582.   #--------------------------------------------------------------------------
  583.   alias bmsp_koyomisystem_create_all_windows create_all_windows
  584.   def create_all_windows
  585.     bmsp_koyomisystem_create_all_windows
  586.     bmsp_koyomisystem_create_koyomi_window
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● 暦ウィンドウの作成
  590.   #--------------------------------------------------------------------------
  591.   def bmsp_koyomisystem_create_koyomi_window
  592.     @bmsp_koyomi_window = BMSP::KoyomiSystem::Window_MapKoyomi.new
  593.   end
  594.   #--------------------------------------------------------------------------
  595.   # ● 場所移動前の処理
  596.   #--------------------------------------------------------------------------
  597.   alias bmsp_koyomisystem_pre_transfer pre_transfer
  598.   def pre_transfer
  599.     @bmsp_koyomi_window.close
  600.     bmsp_koyomisystem_pre_transfer
  601.     bmsp_koyomisystem_move_time_pass
  602.   end
  603.   #--------------------------------------------------------------------------
  604.   # ● 場所移動後の処理
  605.   #--------------------------------------------------------------------------
  606.   alias bmsp_koyomisystem_post_transfer post_transfer
  607.   def post_transfer
  608.     bmsp_koyomisystem_change_fix_tone
  609.     @bmsp_koyomi_window.open unless BMSP::KoyomiSystem::MAP_WINDOW_FADE
  610.     bmsp_koyomisystem_post_transfer
  611.     @bmsp_koyomi_window.open if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   # ● 場所移動による時間経過
  615.   #--------------------------------------------------------------------------
  616.   def bmsp_koyomisystem_move_time_pass
  617.     $game_koyomi.move_time_pass
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ● 色調固定マップの処理
  621.   #--------------------------------------------------------------------------
  622.   def bmsp_koyomisystem_change_fix_tone
  623.     tone = $game_map.map.bmsp_koyomisystem_fix_tone
  624.     if tone # 色調固定
  625.       $game_map.screen.start_tone_change(tone, 0)
  626.     else # それ以外
  627.       if $game_koyomi.auto_tone
  628.         tone,duration = $game_koyomi.get_match_tone
  629.         $game_map.screen.start_tone_change(tone, 0)
  630.       else
  631.         $game_map.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  632.       end
  633.     end
  634.   end
  635. end
  636. #==============================================================================
  637. # ■ BMSP::KoyomiSystem::Window_MenuKoyomi
  638. #==============================================================================
  639. class BMSP::KoyomiSystem::Window_MenuKoyomi < Window_Base
  640.   #--------------------------------------------------------------------------
  641.   # ● オブジェクト初期化
  642.   #--------------------------------------------------------------------------
  643.   def initialize
  644.     line_number = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT.size
  645.     super(0, 0, window_width, fitting_height(line_number))
  646.     @time = $game_koyomi.to_i
  647.     @formats = BMSP::KoyomiSystem::MENU_WINDOW_FORMAT
  648.     refresh
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ● ウィンドウ幅の取得
  652.   #--------------------------------------------------------------------------
  653.   def window_width
  654.     return 160
  655.   end
  656.   #--------------------------------------------------------------------------
  657.   # ● フレーム更新
  658.   #--------------------------------------------------------------------------
  659.   def update
  660.     super
  661.     refresh if redraw?
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ● 再描画するか
  665.   #--------------------------------------------------------------------------
  666.   def redraw?
  667.     if $game_koyomi.to_i != @time
  668.       @time = $game_koyomi.to_i
  669.       return true
  670.     end
  671.     false
  672.   end
  673.   #--------------------------------------------------------------------------
  674.   # ● リフレッシュ
  675.   #--------------------------------------------------------------------------
  676.   def refresh
  677.     contents.clear
  678.     draw_background(contents.rect)
  679.     rect = contents.rect
  680.     rect.height = line_height
  681.     rect.y = 0
  682.     @formats.each do |format|
  683.       draw_text(rect, $game_koyomi.strftime(format), 1)
  684.       rect.y += line_height
  685.     end
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● 背景の描画
  689.   #--------------------------------------------------------------------------
  690.   def draw_background(rect)
  691.   end
  692. end
  693. #==============================================================================
  694. # ■ BMSP::KoyomiSystem::Window_MapKoyomi
  695. #==============================================================================
  696. class BMSP::KoyomiSystem::Window_MapKoyomi < BMSP::KoyomiSystem::Window_MenuKoyomi
  697.   #--------------------------------------------------------------------------
  698.   # ● オブジェクト初期化
  699.   #--------------------------------------------------------------------------
  700.   def initialize
  701.     super
  702.     line_number = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT.size
  703.     x= Graphics.width - window_width
  704.     move(x, 0, window_width, fitting_height(line_number))
  705.     self.opacity = 0
  706.     self.contents_opacity = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  707.     @show_count = BMSP::KoyomiSystem::MAP_WINDOW_FADE ? 0 : 1
  708.     @time = $game_koyomi.to_i
  709.     @formats = BMSP::KoyomiSystem::MAP_WINDOW_FORMAT
  710.     refresh
  711.   end
  712.   #--------------------------------------------------------------------------
  713.   # ● ウィンドウ幅の取得
  714.   #--------------------------------------------------------------------------
  715.   def window_width
  716.     return 320
  717.   end
  718.   #--------------------------------------------------------------------------
  719.   # ● フレーム更新
  720.   #--------------------------------------------------------------------------
  721.   def update
  722.     super
  723.     if @show_count > 0 && $game_map.koyomi_display && BMSP::KoyomiSystem::MAP_WINDOW_FADE
  724.       update_fadein
  725.       @show_count -= 1
  726.     elsif @show_count == 0
  727.       update_fadeout
  728.     end
  729.   end
  730.   #--------------------------------------------------------------------------
  731.   # ● フェードインの更新
  732.   #--------------------------------------------------------------------------
  733.   def update_fadein
  734.     self.contents_opacity += 16
  735.   end
  736.   #--------------------------------------------------------------------------
  737.   # ● フェードアウトの更新
  738.   #--------------------------------------------------------------------------
  739.   def update_fadeout
  740.     self.contents_opacity -= 16
  741.   end
  742.   #--------------------------------------------------------------------------
  743.   # ● ウィンドウを開く
  744.   #--------------------------------------------------------------------------
  745.   def open
  746.     refresh
  747.     if $game_map.map.bmsp_koyomisystem_display_koyomi_on_map?
  748.       if BMSP::KoyomiSystem::MAP_WINDOW_FADE || !$game_map.koyomi_display
  749.         @show_count = 150
  750.         self.contents_opacity = 0
  751.       else
  752.         @show_count = 1
  753.         self.contents_opacity = 255
  754.       end
  755.     else
  756.       @show_count = 0
  757.       self.contents_opacity = 0
  758.     end
  759.     self
  760.   end
  761.   #--------------------------------------------------------------------------
  762.   # ● ウィンドウを閉じる
  763.   #--------------------------------------------------------------------------
  764.   def close
  765.     @show_count = 0 if BMSP::KoyomiSystem::MAP_WINDOW_FADE
  766.     self
  767.   end
  768.   #--------------------------------------------------------------------------
  769.   # ● 背景の描画
  770.   #--------------------------------------------------------------------------
  771.   def draw_background(rect)
  772.     temp_rect = rect.clone
  773.     temp_rect.width /= 2
  774.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  775.     temp_rect.x = temp_rect.width
  776.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  777.   end
  778.   #--------------------------------------------------------------------------
  779.   # ● 背景色 1 の取得
  780.   #--------------------------------------------------------------------------
  781.   def back_color1
  782.     Color.new(0, 0, 0, 192)
  783.   end
  784.   #--------------------------------------------------------------------------
  785.   # ● 背景色 2 の取得
  786.   #--------------------------------------------------------------------------
  787.   def back_color2
  788.     Color.new(0, 0, 0, 0)
  789.   end
  790. end
  791. #==============================================================================
  792. # ■ Game_Screen
  793. #==============================================================================
  794. class Game_Screen
  795.   #--------------------------------------------------------------------------
  796.   # ● 公開インスタンス変数
  797.   #--------------------------------------------------------------------------
  798.   attr_reader :tone_target
  799.   #--------------------------------------------------------------------------
  800.   # ● フレーム更新
  801.   #--------------------------------------------------------------------------
  802.   alias bmsp_koyomisystem_update update
  803.   def update
  804.     bmsp_koyomisystem_update
  805.     bmsp_koyomisystem_update_koyomi
  806.   end
  807.   #--------------------------------------------------------------------------
  808.   # ● 暦の更新
  809.   #--------------------------------------------------------------------------
  810.   def bmsp_koyomisystem_update_koyomi
  811.     $game_koyomi.update(self)
  812.   end
  813. end
  814. #==============================================================================
  815. # ■ Game_Troop
  816. #==============================================================================
  817. class Game_Troop < Game_Unit
  818.   #--------------------------------------------------------------------------
  819.   # ● セットアップ
  820.   #--------------------------------------------------------------------------
  821.   def setup(troop_id)
  822.     clear
  823.     @troop_id = troop_id
  824.     @enemies = []
  825.     troop.members.each do |member|
  826.       next unless $data_enemies[member.enemy_id]
  827.       enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
  828.       enemy.hide if member.hidden
  829.       enemy.screen_x = member.x
  830.       enemy.screen_y = member.y
  831.       @enemies.push(enemy)
  832.     end
  833.     init_screen_tone
  834.     make_unique_names
  835.   end
  836.   #--------------------------------------------------------------------------
  837.   # ● 画面の色調を初期化
  838.   #--------------------------------------------------------------------------
  839.   alias bmsp_koyomisystem_init_screen_tone init_screen_tone
  840.   def init_screen_tone
  841.     bmsp_koyomisystem_init_screen_tone
  842.     bmsp_koyomisystem_battle_start_time_pass
  843.     bmsp_koyomisystem_fix_tone_on_battle
  844.   end
  845.   #--------------------------------------------------------------------------
  846.   # ● 戦闘開始による時間経過
  847.   #--------------------------------------------------------------------------
  848.   def bmsp_koyomisystem_battle_start_time_pass
  849.     $game_koyomi.battle_start_time_pass
  850.     return if !@auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  851.     tone,duration = $game_koyomi.get_match_tone
  852.     $game_troop.screen.start_tone_change(tone, 0)
  853.   end
  854.   #--------------------------------------------------------------------------
  855.   # ● バトル中の色調固定
  856.   #--------------------------------------------------------------------------
  857.   def bmsp_koyomisystem_fix_tone_on_battle
  858.     return unless $game_koyomi.fix_tone_on_battle
  859.     $game_troop.screen.start_tone_change(Tone.new(0,0,0,0), 0)
  860.   end
  861. end
  862. #==============================================================================
  863. # ■ Scene_Battle
  864. #==============================================================================
  865. class Scene_Battle < Scene_Base
  866.   #--------------------------------------------------------------------------
  867.   # ● 終了処理
  868.   #--------------------------------------------------------------------------
  869.   alias bmsp_koyomisystem_terminate terminate
  870.   def terminate
  871.     bmsp_koyomisystem_terminate
  872.     bmsp_koyomisystem_battle_end_time_pass
  873.   end
  874.   #--------------------------------------------------------------------------
  875.   # ● 戦闘終了による時間経過
  876.   #--------------------------------------------------------------------------
  877.   def bmsp_koyomisystem_battle_end_time_pass
  878.     $game_koyomi.battle_end_time_pass
  879.     return if !$game_koyomi.auto_tone || (!$BTEST && $game_map.map.bmsp_koyomisystem_fix_tone)
  880.     tone,duration = $game_koyomi.get_match_tone
  881.     $game_map.screen.start_tone_change(tone, 0)
  882.   end
  883. end

                     
以上就是脚本内容了,我有几个问题
1.在室内是没有这种昼夜系统的,怎么设置能让一些地图没有这种效果
2.我希望能加个睡觉的系统,就是干什么会增加时间,这个怎么做到                          

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

本版积分规则

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

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

GMT+8, 2024-11-17 09:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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