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

Project1

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

[已经解决] 本人脚本盲求帮助把昼夜交替脚本加开关

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
123 小时
注册时间
2012-2-12
帖子
73
跳转到指定楼层
1
发表于 2012-4-12 12:33:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 昼夜切り替え - KGC_DayNight ◆ VX ◆
  3. #_/    ◇ Last update : 2008/11/22 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  ゲーム中に昼夜の概念を作成します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ カスタマイズ項目 - Customize ★
  9. #==============================================================================

  10. module KGC
  11. module DayNight
  12.   # ◆ 昼夜切り替え方式
  13.   #  0..時間経過  1..歩数  2..現実時間(微妙)
  14.   METHOD = 1

  15.   # ◆ フェーズを保存する変数の番号
  16.   # ここで指定した変数に、現在のフェーズを格納します。
  17.   PHASE_VARIABLE     = 11
  18.   # ◆ 日数を保存する変数の番号
  19.   #  ここで指定した変数に、経過した日数を格納します。
  20.   PASS_DAYS_VARIABLE = 12

  21.   # ◆ イベント中はフェーズを変更しない
  22.   STOP_ON_EVENT = true
  23.   # ◆ 戦闘時は、背景のみ色調を適用する
  24.   #  false にすると、夜がとんでもないことになります。
  25.   TONE_BACK_ONLY_IN_BATTLE = true

  26.   # ◆ 各フェーズの設定
  27.   #  各フェーズを
  28.   #   ["名称", 色調(Tone), 切り替え時間],
  29.   #  という書式で作成。
  30.   #  フェーズを増やすこともできますが、慣れないうちはおすすめしません。
  31.   #
  32.   #  [名称]
  33.   #    フェーズの名前。
  34.   #    名前自体に意味はありません。
  35.   #  [色調]
  36.   #    画面全体の色。
  37.   #    よく分からない場合は変更しないでください。
  38.   #  [切り替え時間]
  39.   #    次のフェーズに移るまでの時間。
  40.   #    切り替え方式が時間経過の場合は秒、歩数の場合は歩数そのまま。
  41.   #    現実時間の場合、次の状態へ切り替える時刻 (24時間方式)。
  42.   PHASE = [
  43.     ["白天",   Tone.new(   0,    0,   0), 300],  # フェーズ 0
  44.     ["晚上", Tone.new( -32,  -96, -96), 100],  # フェーズ 1
  45.     ["夜里",   Tone.new(-128, -128, -32), 250],  # フェーズ 2
  46.     ["早晨",   Tone.new( -48,  -48, -16), 100],  # フェーズ 3
  47.   ]  # ← これは消さないこと!

  48.   # 現実時間のときは、
  49.   #  ["昼",   Tone.new(  0,   0,   0), 16],  # フェーズ 0 (16時に夕方)
  50.   #  ["夕方", Tone.new(  0, -96, -96), 20],  # フェーズ 1 (20時に夜)
  51.   #  ["夜",   Tone.new(-96, -96, -64),  6],  # フェーズ 2 (6時に朝)
  52.   #  ["朝",   Tone.new(-48, -48, -16), 10],  # フェーズ 3 (10時に昼)
  53.   # このような感じ。

  54.   # ◆ 日付が変わるフェーズ
  55.   #  ここで指定したフェーズになったとき、日数を加算する。
  56.   #  初期状態の場合  0..昼  1..夕方  2..夜  3..朝
  57.   # ※ 現実時間の場合、現実と同じ日数にはならないので注意。
  58.   PASS_DAY_PHASE = 3

  59.   # ◆ 状態切り替え時のフェード時間 (フレーム)
  60.   #  省略時もこの値を使用します。
  61.   PHASE_DURATION = 60

  62.   # ◆ 曜日名
  63.   #  初日は先頭から始まり、最後の曜日まで行くと最初の曜日に戻る。
  64.   #  曜日自体に意味はありません。
  65.   # ※ 現実時間を使用する場合は 7 個にしてください。
  66.   WEEK_NAME = ["日", "月", "火", "水", "木", "金", "土"]
  67. end
  68. end

  69. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  70. $imported = {} if $imported == nil
  71. $imported["DayNight"] = true

  72. if $data_mapinfos == nil
  73.   $data_mapinfos = load_data("Data/MapInfos.rvdata")
  74. end

  75. module KGC::DayNight
  76.   METHOD_TIME  = 0  # 時間経過
  77.   METHOD_STEP  = 1  # 歩数
  78.   METHOD_RTIME = 2  # 現実時間

  79.   # 正規表現
  80.   module Regexp
  81.     # マップ情報
  82.     module MapInfo
  83.       # 遷移を止める
  84.       DAYNIGHT_STOP = /\[DN_STOP\]/i
  85.       # 昼夜エフェクト無効
  86.       DAYNIGHT_VOID = /\[DN_VOID\]/i
  87.     end

  88.     # イベント
  89.     module Event
  90.       # 発光
  91.       LUMINOUS = /\[(?:LUMINOUS|发光)\]/i
  92.     end

  93.     # 敵グループ
  94.     module Troop
  95.       # 出現フェーズ
  96.       APPEAR_PHASE = /\[DN((?:[ ]*[\-]?\d+(?:[ ]*,)?)+)\]/i
  97.     end
  98.   end

  99.   #--------------------------------------------------------------------------
  100.   # ○ 敵グループ出現判定
  101.   #     troop : 判定対象の敵グループ
  102.   #     phase : 判定するフェーズ
  103.   #--------------------------------------------------------------------------
  104.   def self.troop_appear?(troop, phase = $game_system.daynight_phase)
  105.     # 出現判定
  106.     unless troop.appear_daynight_phase.empty?
  107.       return false unless troop.appear_daynight_phase.include?(phase)
  108.     end
  109.     # 非出現判定
  110.     unless troop.nonappear_daynight_phase.empty?
  111.       return false if troop.nonappear_daynight_phase.include?(phase)
  112.     end

  113.     return true
  114.   end
  115. end

  116. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  117. #==============================================================================
  118. # □ KGC::Commands
  119. #==============================================================================

  120. module KGC
  121. module Commands
  122.   module_function
  123.   #--------------------------------------------------------------------------
  124.   # ○ 昼夜切り替えを停止
  125.   #--------------------------------------------------------------------------
  126.   def stop_daynight
  127.     $game_system.daynight_change_enabled = false
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ○ 昼夜切り替えを起動
  131.   #--------------------------------------------------------------------------
  132.   def start_daynight
  133.     $game_system.daynight_change_enabled = true
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ○ 現在のフェーズ名を取得
  137.   #--------------------------------------------------------------------------
  138.   def get_daynight_name
  139.     return KGC::DayNight::PHASE[get_daynight_phase][0]
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ○ 現在の曜日を取得
  143.   #     variable_id : 代入する変数 ID
  144.   #--------------------------------------------------------------------------
  145.   def get_daynight_week(variable_id = 0)
  146.     if KGC::DayNight::METHOD == KGC::DayNight::METHOD_RTIME
  147.       week = Time.now.wday
  148.     else
  149.       days = $game_variables[KGC::DayNight::PASS_DAYS_VARIABLE]
  150.       week = (days % KGC::DayNight::WEEK_NAME.size)
  151.     end

  152.     if variable_id > 0
  153.       $game_variables[variable_id] = week
  154.     end
  155.     return week
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ○ 現在の曜日名を取得
  159.   #--------------------------------------------------------------------------
  160.   def get_daynight_week_name
  161.     return KGC::DayNight::WEEK_NAME[get_daynight_week]
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ○ フェーズ切り替え
  165.   #     phase     : 切り替え後のフェーズ
  166.   #     duration  : 切り替え時間(フレーム)
  167.   #     pass_days : 経過させる日数  (省略時: 0)
  168.   #--------------------------------------------------------------------------
  169.   def change_daynight_phase(phase,
  170.       duration = KGC::DayNight::PHASE_DURATION,
  171.       pass_days = 0)
  172.     $game_temp.manual_daynight_duration = duration
  173.     $game_system.daynight_counter = 0
  174.     $game_system.daynight_phase = phase
  175.     $game_variables[KGC::DayNight::PASS_DAYS_VARIABLE] += pass_days
  176.     $game_map.need_refresh = true
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ○ 次のフェーズへ遷移
  180.   #     duration : 切り替え時間(フレーム)
  181.   #--------------------------------------------------------------------------
  182.   def transit_daynight_phase(duration = KGC::DayNight::PHASE_DURATION)
  183.     $game_screen.transit_daynight_phase(duration)
  184.     $game_map.need_refresh = true
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ○ デフォルトの色調に戻す
  188.   #     duration : 切り替え時間(フレーム)
  189.   #--------------------------------------------------------------------------
  190.   def set_daynight_default(duration = KGC::DayNight::PHASE_DURATION)
  191.     $game_screen.set_daynight_default(duration)
  192.     $game_map.need_refresh = true
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ○ 現在のフェーズを復元
  196.   #     duration : 切り替え時間(フレーム)
  197.   #--------------------------------------------------------------------------
  198.   def restore_daynight_phase(duration = KGC::DayNight::PHASE_DURATION)
  199.     $game_screen.restore_daynight_phase(duration)
  200.     $game_map.need_refresh = true
  201.   end
  202. end
  203. end

  204. class Game_Interpreter
  205.   include KGC::Commands
  206. end

  207. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  208. #==============================================================================
  209. # ■ RPG::MapInfo
  210. #==============================================================================

  211. class RPG::MapInfo
  212.   #--------------------------------------------------------------------------
  213.   # ● マップ名取得
  214.   #--------------------------------------------------------------------------
  215.   def name
  216.     return @name.gsub(/\[.*\]/) { "" }
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ○ オリジナルマップ名取得
  220.   #--------------------------------------------------------------------------
  221.   def original_name
  222.     return @name
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ○ 昼夜切り替え停止
  226.   #--------------------------------------------------------------------------
  227.   def daynight_stop
  228.     return @name =~ KGC::DayNight::Regexp::MapInfo::DAYNIGHT_STOP
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ○ 昼夜エフェクト無効
  232.   #--------------------------------------------------------------------------
  233.   def daynight_void
  234.     return @name =~ KGC::DayNight::Regexp::MapInfo::DAYNIGHT_VOID
  235.   end
  236. end

  237. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  238. #==============================================================================
  239. # ■ RPG::Area
  240. #==============================================================================

  241. unless $@
  242. class RPG::Area
  243.   #--------------------------------------------------------------------------
  244.   # ○ エンカウントリストの取得
  245.   #--------------------------------------------------------------------------
  246.   alias encounter_list_KGC_DayNight encounter_list
  247.   def encounter_list
  248.     list = encounter_list_KGC_DayNight.clone

  249.     # 出現条件判定
  250.     list.each_index { |i|
  251.       list[i] = nil unless KGC::DayNight.troop_appear?($data_troops[list[i]])
  252.     }
  253.     return list.compact
  254.   end
  255. end
  256. end

  257. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  258. #==============================================================================
  259. # ■ RPG::Troop
  260. #==============================================================================

  261. class RPG::Troop
  262.   #--------------------------------------------------------------------------
  263.   # ○ 昼夜切り替えのキャッシュ生成
  264.   #--------------------------------------------------------------------------
  265.   def create_daynight_cache
  266.     @__appear_daynight_phase = []
  267.     @__nonappear_daynight_phase = []

  268.     # 出現するフェーズ
  269.     if @name =~ KGC::DayNight::Regexp::Troop::APPEAR_PHASE
  270.       $1.scan(/[\-]?\d+/).each { |num|
  271.         phase = num.to_i
  272.         if phase < 0
  273.           # 出現しない
  274.           @__nonappear_daynight_phase << phase.abs
  275.         else
  276.           # 出現する
  277.           @__appear_daynight_phase << phase
  278.         end
  279.       }
  280.     end
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ○ 出現するフェーズ
  284.   #--------------------------------------------------------------------------
  285.   def appear_daynight_phase
  286.     create_daynight_cache if @__appear_daynight_phase == nil
  287.     return @__appear_daynight_phase
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ○ 出現しないフェーズ
  291.   #--------------------------------------------------------------------------
  292.   def nonappear_daynight_phase
  293.     create_daynight_cache if @__nonappear_daynight_phase == nil
  294.     return @__nonappear_daynight_phase
  295.   end
  296. end

  297. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  298. #==============================================================================
  299. # ■ Game_Temp
  300. #==============================================================================

  301. class Game_Temp
  302.   #--------------------------------------------------------------------------
  303.   # ● 公開インスタンス変数
  304.   #--------------------------------------------------------------------------
  305.   attr_accessor :manual_daynight_duration # 手動フェーズ変更フラグ
  306.   #--------------------------------------------------------------------------
  307.   # ● オブジェクト初期化
  308.   #--------------------------------------------------------------------------
  309.   alias initialize_KGC_DayNight initialize
  310.   def initialize
  311.     initialize_KGC_DayNight

  312.     @manual_daynight_duration = nil
  313.   end
  314. end

  315. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  316. #==============================================================================
  317. # ■ Game_System
  318. #==============================================================================

  319. class Game_System
  320.   #--------------------------------------------------------------------------
  321.   # ● 公開インスタンス変数
  322.   #--------------------------------------------------------------------------
  323.   attr_writer   :daynight_counter         # フェーズ遷移カウンタ
  324.   attr_writer   :daynight_change_enabled  # 昼夜切り替え有効
  325.   #--------------------------------------------------------------------------
  326.   # ● オブジェクト初期化
  327.   #--------------------------------------------------------------------------
  328.   alias initialize_KGC_DayNight initialize
  329.   def initialize
  330.     initialize_KGC_DayNight

  331.     @daynight_counter = 0
  332.     @daynight_change_enabled = true
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ○ フェーズ遷移カウンタを取得
  336.   #--------------------------------------------------------------------------
  337.   def daynight_counter
  338.     @daynight_counter = 0 if @daynight_counter == nil
  339.     return @daynight_counter
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ○ 現在のフェーズを取得
  343.   #--------------------------------------------------------------------------
  344.   def daynight_phase
  345.     return $game_variables[KGC::DayNight::PHASE_VARIABLE]
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ○ 現在のフェーズを変更
  349.   #--------------------------------------------------------------------------
  350.   def daynight_phase=(value)
  351.     $game_variables[KGC::DayNight::PHASE_VARIABLE] = value
  352.   end
  353.   #--------------------------------------------------------------------------
  354.   # ○ 昼夜切り替え有効フラグを取得
  355.   #--------------------------------------------------------------------------
  356.   def daynight_change_enabled
  357.     @daynight_change_enabled = 0 if @daynight_change_enabled == nil
  358.     return @daynight_change_enabled
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ○ フェーズ進行
  362.   #--------------------------------------------------------------------------
  363.   def progress_daynight_phase
  364.     self.daynight_phase += 1
  365.     if self.daynight_phase >= KGC::DayNight::PHASE.size
  366.       self.daynight_phase = 0
  367.     end
  368.     $game_map.need_refresh = true
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ○ 現在のフェーズオブジェクトを取得
  372.   #--------------------------------------------------------------------------
  373.   def daynight_phase_object
  374.     return KGC::DayNight::PHASE[daynight_phase]
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ○ 以前のフェーズオブジェクトを取得
  378.   #--------------------------------------------------------------------------
  379.   def previous_daynight_phase_object
  380.     return KGC::DayNight::PHASE[daynight_phase - 1]
  381.   end
  382. end

  383. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  384. #==============================================================================
  385. # ■ Game_Screen
  386. #==============================================================================

  387. class Game_Screen
  388.   #--------------------------------------------------------------------------
  389.   # ● 公開インスタンス変数
  390.   #--------------------------------------------------------------------------
  391.   attr_reader   :daynight_tone            # 昼夜の色調
  392.   #--------------------------------------------------------------------------
  393.   # ● クリア
  394.   #--------------------------------------------------------------------------
  395.   alias clear_KGC_DayNight clear
  396.   def clear
  397.     clear_KGC_DayNight

  398.     clear_daynight
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ○ 昼夜切り替え用変数をクリア
  402.   #--------------------------------------------------------------------------
  403.   def clear_daynight
  404.     @default_tone = Tone.new(0, 0, 0)

  405.     # 移動判定用座標初期化
  406.     @daynight_x = 0
  407.     @daynight_y = 0

  408.     # フレーム更新用カウント初期化
  409.     @frame_count = Graphics.frame_count
  410.     @daynight_tone_duration = 0

  411.     apply_daynight
  412.   end
  413.   #--------------------------------------------------------------------------
  414.   # ○ 昼夜の色調を適用
  415.   #--------------------------------------------------------------------------
  416.   def apply_daynight
  417.     return if $game_map == nil

  418.     # 切り替えを無効化するマップの場合
  419.     if $game_map.daynight_void?
  420.       if @daynight_tone_changed
  421.         # 初期の色調に戻す
  422.         @tone = @default_tone.clone
  423.         @daynight_tone_changed = false
  424.       end
  425.       @daynight_tone = @tone.clone
  426.       return
  427.     end

  428.     # フェーズがおかしければ修復
  429.     if $game_system.daynight_phase_object == nil
  430.       $game_system.daynight_phase = 0
  431.     end

  432.     # 現在の色調を適用
  433.     @tone = $game_system.daynight_phase_object[1].clone
  434.     @daynight_tone = @tone.clone

  435.     # 現実時間遷移の場合
  436.     if KGC::DayNight::METHOD == KGC::DayNight::METHOD_RTIME
  437.       time = Time.now
  438.       # マッチするフェーズに遷移
  439.       KGC::DayNight::PHASE.each_with_index { |phase, i|
  440.         if phase[2] <= time.hour
  441.           start_tone_change(phase[1], 1)
  442.           $game_system.daynight_phase = i
  443.           break
  444.         end
  445.       }
  446.     end

  447.     @daynight_tone_changed = true
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ○ 色調の取得
  451.   #--------------------------------------------------------------------------
  452.   def tone
  453.     if $game_temp.in_battle && KGC::DayNight::TONE_BACK_ONLY_IN_BATTLE
  454.       return @default_tone
  455.     else
  456.       return @tone
  457.     end
  458.   end
  459.   #--------------------------------------------------------------------------
  460.   # ● 色調変更の開始
  461.   #     tone     : 色調
  462.   #     duration : 時間
  463.   #--------------------------------------------------------------------------
  464.   alias start_tone_change_KGC_DayNight start_tone_change
  465.   def start_tone_change(tone, duration)
  466.     duration = [duration, 1].max
  467.     start_tone_change_KGC_DayNight(tone, duration)

  468.     @daynight_tone_target = tone.clone
  469.     @daynight_tone_duration = duration
  470.   end
  471.   #--------------------------------------------------------------------------
  472.   # ● フレーム更新
  473.   #--------------------------------------------------------------------------
  474.   alias update_KGC_DayNight update
  475.   def update
  476.     update_KGC_DayNight

  477.     update_daynight_transit
  478.   end
  479.   #--------------------------------------------------------------------------
  480.   # ● 色調の更新
  481.   #--------------------------------------------------------------------------
  482.   alias update_tone_KGC_DayNight update_tone
  483.   def update_tone
  484.     update_tone_KGC_DayNight

  485.     if @daynight_tone_duration >= 1
  486.       d = @daynight_tone_duration
  487.       target = @daynight_tone_target
  488.       @daynight_tone.red = (@daynight_tone.red * (d - 1) + target.red) / d
  489.       @daynight_tone.green = (@daynight_tone.green * (d - 1) + target.green) / d
  490.       @daynight_tone.blue = (@daynight_tone.blue * (d - 1) + target.blue) / d
  491.       @daynight_tone.gray = (@daynight_tone.gray * (d - 1) + target.gray) / d
  492.       @daynight_tone_duration -= 1
  493.     end
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ○ フェーズ遷移の更新
  497.   #--------------------------------------------------------------------------
  498.   def update_daynight_transit
  499.     # 手動切り替えが行われた場合
  500.     if $game_temp.manual_daynight_duration
  501.       start_tone_change($game_system.daynight_phase_object[1],
  502.         $game_temp.manual_daynight_duration)
  503.       $game_temp.manual_daynight_duration = nil
  504.       @daynight_tone_changed = true
  505.     end

  506.     return unless $game_system.daynight_change_enabled  # 切り替えを
  507.     return if $game_map.daynight_stop?                  # 停止中

  508.     if KGC::DayNight::STOP_ON_EVENT
  509.       interpreter = ($game_temp.in_battle ? $game_troop.interpreter :
  510.         $game_map.interpreter)
  511.       return if interpreter.running?                    # イベント実行中
  512.     end

  513.     case KGC::DayNight::METHOD
  514.     when KGC::DayNight::METHOD_TIME   # 時間
  515.       update_daynight_pass_time
  516.     when KGC::DayNight::METHOD_STEP   # 歩数
  517.       update_daynight_step
  518.     when KGC::DayNight::METHOD_RTIME  # 現実時間
  519.       update_daynight_real_time
  520.     end
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # ○ 遷移 : 時間経過
  524.   #--------------------------------------------------------------------------
  525.   def update_daynight_pass_time
  526.     # カウント増加量計算
  527.     inc_count = Graphics.frame_count - @frame_count
  528.     # 加算量がおかしい場合は戻る
  529.     if inc_count >= 100
  530.       @frame_count = Graphics.frame_count
  531.       return
  532.     end
  533.     # カウント加算
  534.     $game_system.daynight_counter += inc_count
  535.     @frame_count = Graphics.frame_count

  536.     # 状態遷移判定
  537.     count = $game_system.daynight_counter / Graphics.frame_rate
  538.     if count >= $game_system.daynight_phase_object[2]
  539.       transit_daynight_next
  540.     end
  541.   end
  542.   #--------------------------------------------------------------------------
  543.   # ○ 遷移 : 歩数
  544.   #--------------------------------------------------------------------------
  545.   def update_daynight_step
  546.     # 移動していなければ戻る
  547.     return if @daynight_x == $game_player.x && @daynight_y == $game_player.y

  548.     @daynight_x = $game_player.x
  549.     @daynight_y = $game_player.y
  550.     # カウント加算
  551.     $game_system.daynight_counter += 1
  552.     # 状態遷移判定
  553.     count = $game_system.daynight_counter
  554.     if count >= $game_system.daynight_phase_object[2]
  555.       transit_daynight_next
  556.     end
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ○ 遷移 : 現実時間
  560.   #--------------------------------------------------------------------------
  561.   def update_daynight_real_time
  562.     time = Time.now
  563.     # 状態遷移判定
  564.     time1 = $game_system.daynight_phase_object[2]
  565.     transit = (time1 <= time.hour)
  566.     if $game_system.previous_daynight_phase_object != nil
  567.       time2 = $game_system.previous_daynight_phase_object[2]
  568.       if time1 < time2
  569.         transit &= (time.hour < time2)
  570.       end
  571.     end

  572.     if transit
  573.       transit_daynight_next
  574.     end
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ○ 次の状態へ遷移
  578.   #     duration : 遷移時間
  579.   #--------------------------------------------------------------------------
  580.   def transit_daynight_next(duration = KGC::DayNight::PHASE_DURATION)
  581.     $game_system.daynight_counter = 0
  582.     $game_system.progress_daynight_phase
  583.     # 日数経過判定
  584.     if $game_system.daynight_phase == KGC::DayNight::PASS_DAY_PHASE
  585.       $game_variables[KGC::DayNight::PASS_DAYS_VARIABLE] += 1
  586.     end
  587.     # 色調切り替え
  588.     start_tone_change($game_system.daynight_phase_object[1], duration)
  589.     @daynight_tone_changed = true
  590.   end
  591.   #--------------------------------------------------------------------------
  592.   # ○ デフォルトの状態(0, 0, 0)に戻す
  593.   #     duration : 遷移時間
  594.   #--------------------------------------------------------------------------
  595.   def set_daynight_default(duration)
  596.     start_tone_change(@default_tone, duration)
  597.   end
  598.   #--------------------------------------------------------------------------
  599.   # ○ 現在のフェーズを復元
  600.   #     duration : 遷移時間
  601.   #--------------------------------------------------------------------------
  602.   def restore_daynight_phase(duration)
  603.     start_tone_change($game_system.daynight_phase_object[1], duration)
  604.     @daynight_tone_changed = true
  605.   end
  606. end

  607. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  608. #==============================================================================
  609. # ■ Game_Map
  610. #==============================================================================

  611. class Game_Map
  612.   #--------------------------------------------------------------------------
  613.   # ● セットアップ
  614.   #     map_id : マップ ID
  615.   #--------------------------------------------------------------------------
  616.   alias setup_KGC_DayNight setup
  617.   def setup(map_id)
  618.     setup_KGC_DayNight(map_id)

  619.     @screen.apply_daynight
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # ○ 昼夜切り替えを停止するか
  623.   #--------------------------------------------------------------------------
  624.   def daynight_stop?
  625.     info = $data_mapinfos[map_id]
  626.     return false if info == nil
  627.     return (info.daynight_stop || info.daynight_void)
  628.   end
  629.   #--------------------------------------------------------------------------
  630.   # ○ 昼夜切り替えが無効か
  631.   #--------------------------------------------------------------------------
  632.   def daynight_void?
  633.     info = $data_mapinfos[map_id]
  634.     return false if info == nil
  635.     return info.daynight_void
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ● エンカウントリストの取得
  639.   #--------------------------------------------------------------------------
  640.   alias encounter_list_KGC_DayNight encounter_list
  641.   def encounter_list
  642.     list = encounter_list_KGC_DayNight.clone

  643.     # 出現条件判定
  644.     list.each_index { |i|
  645.       list[i] = nil unless KGC::DayNight.troop_appear?($data_troops[list[i]])
  646.     }
  647.     return list.compact
  648.   end
  649. end

  650. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  651. #==============================================================================
  652. # ■ Game_Character
  653. #==============================================================================

  654. class Game_Character
  655.   #--------------------------------------------------------------------------
  656.   # ○ 発光するか
  657.   #--------------------------------------------------------------------------
  658.   def luminous?
  659.     return false
  660.   end
  661. end

  662. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  663. #==============================================================================
  664. # ■ Game_Event
  665. #==============================================================================

  666. class Game_Event < Game_Character
  667.   #--------------------------------------------------------------------------
  668.   # ○ 発光するか
  669.   #--------------------------------------------------------------------------
  670.   def luminous?
  671.     return (@event.name =~ KGC::DayNight::Regexp::Event::LUMINOUS)
  672.   end
  673. end

  674. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  675. #==============================================================================
  676. # ■ Spriteset_Map
  677. #==============================================================================

  678. class Spriteset_Map
  679.   #--------------------------------------------------------------------------
  680.   # ● ビューポートの作成
  681.   #--------------------------------------------------------------------------
  682.   alias create_viewports_KGC_DayNight create_viewports
  683.   def create_viewports
  684.     create_viewports_KGC_DayNight

  685.     @viewport1_2 = Viewport.new(0, 0,
  686.       @viewport1.rect.width, @viewport1.rect.height)
  687.   end
  688.   #--------------------------------------------------------------------------
  689.   # ● キャラクタースプライトの作成
  690.   #--------------------------------------------------------------------------
  691.   alias create_characters_KGC_DayNight create_characters
  692.   def create_characters
  693.     create_characters_KGC_DayNight

  694.     # 発光オブジェクトを @viewport1_2 に移動
  695.     @character_sprites.each { |sprite|
  696.       sprite.viewport = @viewport1_2 if sprite.character.luminous?
  697.     }
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● ビューポートの解放
  701.   #--------------------------------------------------------------------------
  702.   alias dispose_viewports_KGC_DayNight dispose_viewports
  703.   def dispose_viewports
  704.     dispose_viewports_KGC_DayNight

  705.     @viewport1_2.dispose
  706.   end
  707.   #--------------------------------------------------------------------------
  708.   # ● ビューポートの更新
  709.   #--------------------------------------------------------------------------
  710.   alias update_viewports_KGC_DayNight update_viewports
  711.   def update_viewports
  712.     update_viewports_KGC_DayNight

  713.     @viewport1_2.ox = $game_map.screen.shake
  714.     @viewport1_2.update
  715.   end
  716. end

  717. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  718. #==============================================================================
  719. # ■ Spriteset_Battle
  720. #==============================================================================

  721. if KGC::DayNight::TONE_BACK_ONLY_IN_BATTLE
  722. class Spriteset_Battle
  723.   #--------------------------------------------------------------------------
  724.   # ● バトルバックスプライトの作成
  725.   #--------------------------------------------------------------------------
  726.   alias create_battleback_KGC_DayNight create_battleback
  727.   def create_battleback
  728.     create_battleback_KGC_DayNight

  729.     if @battleback_sprite.wave_amp == 0
  730.       @battleback_sprite.tone = $game_troop.screen.daynight_tone
  731.     end
  732.   end
  733.   #--------------------------------------------------------------------------
  734.   # ● バトルフロアスプライトの作成
  735.   #--------------------------------------------------------------------------
  736.   alias create_battlefloor_KGC_DayNight create_battlefloor
  737.   def create_battlefloor
  738.     create_battlefloor_KGC_DayNight

  739.     @battlefloor_sprite.tone = $game_troop.screen.daynight_tone
  740.   end
  741. end
  742. end

  743. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  744. #==============================================================================
  745. # ■ Scene_Map
  746. #==============================================================================

  747. class Scene_Map < Scene_Base
  748.   #--------------------------------------------------------------------------
  749.   # ● 開始処理
  750.   #--------------------------------------------------------------------------
  751.   alias start_KGC_DayNight start
  752.   def start
  753.     $game_map.screen.clear_daynight

  754.     start_KGC_DayNight
  755.   end
  756. end
复制代码
求在白天打开变量1=1   中午打开变量1=2    晚上打开变量1=3

Lv2.观梦者

梦石
0
星屑
728
在线时间
687 小时
注册时间
2011-2-13
帖子
638
2
发表于 2012-4-12 17:48:54 | 只看该作者
我觉白昼脚本只适合做 牧场物语类的游戏
冒险扮演的 还是自己依剧本来调天色
反正就一个事件
与帖子不符的回帖
阿门
无视我吧...

点评

以后这种……回复,就用点评吧,不然LZ生气和你聊起来了怎么办=。=  发表于 2012-4-12 20:01
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
508
在线时间
1478 小时
注册时间
2011-9-17
帖子
1316

开拓者贵宾

3
发表于 2012-4-17 13:32:37 | 只看该作者
本帖最后由 iisnow 于 2012-4-17 13:33 编辑

注意脚本第20行的提示……因为是日语,可能LZ不是很懂吧……总之11号变量就是标识所处时间阶段的:
至于每个阶段对应什么值:47-52行,PHASE就是阶段的数组;在后面的注释就是每个阶段说对应的变量的值;

当然LZ想用别的变量标识的话,就修改第20行就够了=。=

点评

这不科学。。。⑨怎么可以这么聪明。。。  发表于 2012-4-17 13:42
我帖子中要有是不HX的空白,请Ctrl + A
回复

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
261
在线时间
223 小时
注册时间
2012-8-18
帖子
143
4
发表于 2013-12-28 21:59:46 | 只看该作者
我有一个疑问,不是加开关吗,怎么变成变量了?

点评

变量个开关都是一个东西  发表于 2013-12-28 22:41

评分

参与人数 1星屑 -50 收起 理由
铃仙·优昙华院·因幡 -50 挖坟

查看全部评分

取名不慎,我的名字是BobCheng,做游戏什么的,其实是安慰自己而已。
很烧脑的推理游戏
猜不到结局的故事
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 03:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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