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

Project1

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

昼夜系统,如何用事件完成分歧

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2006-5-19
帖子
69
跳转到指定楼层
1
发表于 2008-4-26 10:52:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 昼夜更替 - KGC_DayNight ◆ VX ◆
  3. #_/    ◇ Last update : 2008/01/30 ◇
  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), 20],  # 阶段 0
  44.     ["傍晚", Tone.new( -32,  -96, -96), 5],  # 阶段 1
  45.     ["夜晚",   Tone.new(-128, -128, -32), 5],  # 阶段 2
  46.     ["早上",   Tone.new( -48,  -48, -16), 10],  # 阶段 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. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

复制代码


比如这个脚本,事件中的条件分歧该怎么写?
特定的时间段发生特定的事件,其他时间段不发生。
版务信息:本贴由楼主自主结贴~
近期生活状况: 震不死人晃死人,晃不死人吓死人; 吓不死人困死人,困不死人累死人; 累不死人跑死人。 比地震可怕的是余震, 比余震可怕的是预报余震, 比预报余震更可怕的是预报了余震却一直不震~

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

2
发表于 2008-4-26 11:14:58 | 只看该作者
所以我就比较喜欢用公共事件+变量的方法做昼夜……
这样可以容易点判断……

整个脚本贴出来吧,只有注释我不太清楚哪个是控制的变量
虚无  堕落
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2006-5-19
帖子
69
3
 楼主| 发表于 2008-4-26 11:23:37 | 只看该作者
脚本有些地方没翻译完,如下:
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 昼夜切り替え - KGC_DayNight ◆ VX ◆
  3. #_/    ◇ Last update : 2008/03/08 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  ゲーム中に昼夜の概念を作成します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

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

  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 = false

  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), 100],  # フェーズ 0
  44.     ["夕方", Tone.new( -32,  -96, -96), 40],  # フェーズ 1
  45.     ["夜",   Tone.new(-128, -128, -32), 80],  # フェーズ 2
  46.     ["朝",   Tone.new( -48,  -48, -16), 40],  # フェーズ 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 Troop
  90.       # 出現フェーズ
  91.       APPEAR_PHASE = /\[DN((?:[ ]*[\-]?\d+(?:[ ]*,)?)+)\]/i
  92.     end
  93.   end

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

  108.     return true
  109.   end
  110. end

  111. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  112. #==============================================================================
  113. # □ KGC::Commands
  114. #==============================================================================

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

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

  197. class Game_Interpreter
  198.   include KGC::Commands
  199. end

  200. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  201. #==============================================================================
  202. # ■ RPG::MapInfo
  203. #==============================================================================

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

  230. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  231. #==============================================================================
  232. # ■ RPG::Area
  233. #==============================================================================

  234. unless $@
  235. class RPG::Area
  236.   #--------------------------------------------------------------------------
  237.   # ○ エンカウントリストの取得
  238.   #--------------------------------------------------------------------------
  239.   alias encounter_list_KGC_DayNight encounter_list
  240.   def encounter_list
  241.     list = encounter_list_KGC_DayNight.clone

  242.     # 出現条件判定
  243.     list.each_index { |i|
  244.       list[i] = nil unless KGC::DayNight.troop_appear?($data_troops[list[i]])
  245.     }
  246.     return list.compact
  247.   end
  248. end
  249. end

  250. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  251. #==============================================================================
  252. # ■ RPG::Troop
  253. #==============================================================================

  254. class RPG::Troop
  255.   #--------------------------------------------------------------------------
  256.   # ○ 昼夜切り替えのキャッシュ生成
  257.   #--------------------------------------------------------------------------
  258.   def create_daynight_cache
  259.     @__appear_daynight_phase = []
  260.     @__nonappear_daynight_phase = []

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

  290. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  291. #==============================================================================
  292. # ■ Game_Temp
  293. #==============================================================================

  294. class Game_Temp
  295.   #--------------------------------------------------------------------------
  296.   # ● 公開インスタンス変数
  297.   #--------------------------------------------------------------------------
  298.   attr_accessor :manual_daynight_duration # 手動フェーズ変更フラグ
  299.   #--------------------------------------------------------------------------
  300.   # ● オブジェクト初期化
  301.   #--------------------------------------------------------------------------
  302.   alias initialize_KGC_DayNight initialize
  303.   def initialize
  304.     initialize_KGC_DayNight

  305.     @manual_daynight_duration = nil
  306.   end
  307. end

  308. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  309. #==============================================================================
  310. # ■ Game_System
  311. #==============================================================================

  312. class Game_System
  313.   #--------------------------------------------------------------------------
  314.   # ● 公開インスタンス変数
  315.   #--------------------------------------------------------------------------
  316.   attr_writer   :daynight_counter         # フェーズ遷移カウンタ
  317.   attr_writer   :daynight_change_enabled  # 昼夜切り替え有効
  318.   #--------------------------------------------------------------------------
  319.   # ● オブジェクト初期化
  320.   #--------------------------------------------------------------------------
  321.   alias initialize_KGC_DayNight initialize
  322.   def initialize
  323.     initialize_KGC_DayNight

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

  376. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  377. #==============================================================================
  378. # ■ Game_Screen
  379. #==============================================================================

  380. class Game_Screen
  381.   #--------------------------------------------------------------------------
  382.   # ● 公開インスタンス変数
  383.   #--------------------------------------------------------------------------
  384.   attr_reader   :daynight_tone            # 昼夜の色調
  385.   #--------------------------------------------------------------------------
  386.   # ● クリア
  387.   #--------------------------------------------------------------------------
  388.   alias clear_KGC_DayNight clear
  389.   def clear
  390.     clear_KGC_DayNight

  391.     clear_daynight
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ○ 昼夜切り替え用変数をクリア
  395.   #--------------------------------------------------------------------------
  396.   def clear_daynight
  397.     @default_tone = Tone.new(0, 0, 0)

  398.     # 移動判定用座標初期化
  399.     @daynight_x = 0
  400.     @daynight_y = 0

  401.     # フレーム更新用カウント初期化
  402.     @frame_count = Graphics.frame_count
  403.     @daynight_tone_duration = 0

  404.     apply_daynight
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ○ 昼夜の色調を適用
  408.   #--------------------------------------------------------------------------
  409.   def apply_daynight
  410.     return if $game_map == nil

  411.     # 切り替えを無効化するマップの場合
  412.     if $game_map.daynight_void?
  413.       if @daynight_tone_changed
  414.         # 初期の色調に戻す
  415.         @tone = @default_tone.clone
  416.         @daynight_tone_changed = false
  417.       end
  418.       @daynight_tone = @tone.clone
  419.       return
  420.     end

  421.     # フェーズがおかしければ修復
  422.     if $game_system.daynight_phase_object == nil
  423.       $game_system.daynight_phase = 0
  424.     end

  425.     # 現在の色調を適用
  426.     @tone = $game_system.daynight_phase_object[1].clone
  427.     @daynight_tone = @tone.clone

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

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

  461.     @daynight_tone_target = tone.clone
  462.     @daynight_tone_duration = duration
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ● フレーム更新
  466.   #--------------------------------------------------------------------------
  467.   alias update_KGC_DayNight update
  468.   def update
  469.     update_KGC_DayNight

  470.     update_daynight_transit
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # ● 色調の更新
  474.   #--------------------------------------------------------------------------
  475.   alias update_tone_KGC_DayNight update_tone
  476.   def update_tone
  477.     update_tone_KGC_DayNight

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

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

  501.     if KGC::DayNight::STOP_ON_EVENT
  502.       interpreter = ($game_temp.in_battle ? $game_troop.interpreter :
  503.         $game_map.interpreter)
  504.       return if interpreter.running?                    # イベント実行中
  505.     end

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

  529.     # 状態遷移判定
  530.     count = $game_system.daynight_counter / Graphics.frame_rate
  531.     if count >= $game_system.daynight_phase_object[2]
  532.       transit_daynight_next
  533.     end
  534.   end
  535.   #--------------------------------------------------------------------------
  536.   # ○ 遷移 : 歩数
  537.   #--------------------------------------------------------------------------
  538.   def update_daynight_step
  539.     # 移動していなければ戻る
  540.     return if @daynight_x == $game_player.x && @daynight_y == $game_player.y

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

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

  600. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  601. #==============================================================================
  602. # ■ Game_Map
  603. #==============================================================================

  604. class Game_Map
  605.   #--------------------------------------------------------------------------
  606.   # ● セットアップ
  607.   #     map_id : マップ ID
  608.   #--------------------------------------------------------------------------
  609.   alias setup_KGC_DayNight setup
  610.   def setup(map_id)
  611.     setup_KGC_DayNight(map_id)

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

  636.     # 出現条件判定
  637.     list.each_index { |i|
  638.       list[i] = nil unless KGC::DayNight.troop_appear?($data_troops[list[i]])
  639.     }
  640.     return list.compact
  641.   end
  642. end

  643. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


  644. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  645. #==============================================================================
  646. # ■ Scene_Map
  647. #==============================================================================

  648. class Scene_Map < Scene_Base
  649.   #--------------------------------------------------------------------------
  650.   # ● 開始処理
  651.   #--------------------------------------------------------------------------
  652.   alias start_KGC_DayNight start
  653.   def start
  654.     $game_map.screen.clear_daynight

  655.     start_KGC_DayNight
  656.   end
  657. end
复制代码
近期生活状况: 震不死人晃死人,晃不死人吓死人; 吓不死人困死人,困不死人累死人; 累不死人跑死人。 比地震可怕的是余震, 比余震可怕的是预报余震, 比预报余震更可怕的是预报了余震却一直不震~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

4
发表于 2008-4-26 11:33:17 | 只看该作者
看样子应该是判断第11号变量,条件分歧判断该变量试下吧。
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
虚无  堕落
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2006-5-19
帖子
69
5
 楼主| 发表于 2008-4-26 11:37:59 | 只看该作者
{/dk}貌似不行啊,白天晚上都说同样的话...
近期生活状况: 震不死人晃死人,晃不死人吓死人; 吓不死人困死人,困不死人累死人; 累不死人跑死人。 比地震可怕的是余震, 比余震可怕的是预报余震, 比预报余震更可怕的是预报了余震却一直不震~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

6
发表于 2008-4-26 11:43:49 | 只看该作者
以下引用幻影忧郁于2008-4-26 3:37:59的发言:

貌似不行啊,白天晚上都说同样的话...

貌似是那个11号变量为0时是早上,1是傍晚,2是晚上,这样设条件分歧看下?
虚无  堕落
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2006-5-19
帖子
69
7
 楼主| 发表于 2008-4-26 11:49:29 | 只看该作者
我设定的是这样的:


但是不管白天晚上都说11...
近期生活状况: 震不死人晃死人,晃不死人吓死人; 吓不死人困死人,困不死人累死人; 累不死人跑死人。 比地震可怕的是余震, 比余震可怕的是预报余震, 比预报余震更可怕的是预报了余震却一直不震~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2006-5-19
帖子
69
8
 楼主| 发表于 2008-4-26 11:52:52 | 只看该作者
有一段脚本是这样的
#--------------------------------------------------------------------------
  # ○ 現在的阶段名取得
  #--------------------------------------------------------------------------
  def get_daynight_name
    return KGC::DayNight::PHASE[get_daynight_phase][0]
  end

用这个能做条件分歧吗?
近期生活状况: 震不死人晃死人,晃不死人吓死人; 吓不死人困死人,困不死人累死人; 累不死人跑死人。 比地震可怕的是余震, 比余震可怕的是预报余震, 比预报余震更可怕的是预报了余震却一直不震~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2006-5-19
帖子
69
9
 楼主| 发表于 2008-4-26 12:06:05 | 只看该作者
不知道刚才怎么搞得...现在可以了...奇怪啊   {/lh}

对了,如果我要设置一个人在白天是看不见的,到了晚上才出现,应该怎么设置事件呢?
近期生活状况: 震不死人晃死人,晃不死人吓死人; 吓不死人困死人,困不死人累死人; 累不死人跑死人。 比地震可怕的是余震, 比余震可怕的是预报余震, 比预报余震更可怕的是预报了余震却一直不震~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

10
发表于 2008-4-26 13:39:29 | 只看该作者
以下引用幻影忧郁于2008-4-26 4:06:05的发言:

不知道刚才怎么搞得...现在可以了...奇怪啊   

对了,如果我要设置一个人在白天是看不见的,到了晚上才出现,应该怎么设置事件呢?

可以设置个空白事件,第一页是空白的,然后第二页写上个触发条件为变量为2以上……
然后那页设置个行走图吧
虚无  堕落
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 08:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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