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

Project1

 找回密码
 注册会员
搜索
查看: 2569|回复: 1

[结贴] 【50元】本地电脑时间昼夜系统

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3981
在线时间
603 小时
注册时间
2017-4-21
帖子
228
发表于 2018-4-16 12:43:07 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 阮声悠悠 于 2018-4-16 13:22 编辑

平台:rmxp
脚本:本地电脑时间昼夜系统
脚本解释:判断本地电脑时间,做出"白天", "黄昏", "夜晚", "破晓"的效果,本地时间05:30~08:00是破晓、08:00~17:30是白天、17:30~19:30是黄昏、19:30~05:30是夜晚
价格:50元
交易方式:加QQ974550039,脚本ok后先发给我确认,确认ok后QQ红包直接付款。
需求:
1. 需要一个开关,控制色相是否显示。解释:比如打开游戏1号开关,昼夜系统的色相不显示
2. 要一个  室内不显示色相[10‚20,30]。
3. 把本地的月和日代入变量。
4. 不同时间段同一个变量得到不同的值。比如白天则变量1=1、黄昏则变量1=2、夜晚则变量1=3、破晓则变量1=4
5. 关于四个时间阶段,下面的脚本有色相值,使用下面这段脚本里面的色相值

RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆昼夜切り替え - KGC_DayNight◆
  3. #_/----------------------------------------------------------------------------
  4. #_/  ゲーム中に昼夜の概念を作成します。
  5. #_/  Makes the concept of day and night in the game.
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  7.  
  8. #==============================================================================
  9. # ★ カスタマイズ項目 - Customize ★
  10. #==============================================================================
  11.  
  12. module KGC
  13.   # ◆旧式のメソッドを使用可能にする
  14.   #  どうしても昔のまま使いたい場合だけ true。
  15.   DAYNIGHT_ENABLE_OLD_METHOD = false
  16.  
  17.   # ◆昼夜切り替え方式
  18.   #  0:時間経過  1:歩数  2:現実時間(微妙)
  19.   DAYNIGHT_METHOD = 1
  20.  
  21.   # ◆イベント中は時間を止める
  22.   #  DAYNIGHT_METHOD で「時間経過」使用時のみ有効
  23.   DAYNIGHT_EVENT_STOP = true
  24.   # ◆戦闘時は、背景のみ色調を適用する
  25.   DAYNIGHT_TONE_BACK_ONLY = true
  26.  
  27.   # ◆日付が変わる状態
  28.   #  ここで指定した状態になったとき、日数を加算する。
  29.   #  初期状態の場合  0:昼  1:夕方  2:夜  3:朝
  30.   # ※現実時間の場合、現実と同じ日数にはならないので注意。
  31.   DAYNIGHT_PASS_PHASE = 3
  32.  
  33.   # ◆状態切り替え時のフェード時間【単位:フレーム】
  34.   #  省略時もこの値を使用します。
  35.   DAYNIGHT_DURATION = 40
  36.  
  37.   # ◆曜日名(あまり意味は無い)
  38.   DAYNIGHT_WEEK_NAME = ["日", "月", "火", "水", "木", "金", "土"]
  39.  
  40.   # ★☆以下の3項目は全て同じ要素数にしてください☆★
  41.   # 処理の都合上、最初を昼にするとベター
  42.   ### ** Please make all of the following 3 items the same number. **
  43.  
  44.   # ◆昼夜の名称(あまり意味は無い)
  45.   DAYNIGHT_NAME = ["昼", "夕方", "夜", "朝"]
  46.  
  47.   # ◆昼夜の色調(よく分からない場合はこのまま)
  48.   DAYNIGHT_TONE = [Tone.new(0, 0, 0),
  49.     Tone.new(-32, -96, -96),
  50.     Tone.new(-128, -128, -32),
  51.     Tone.new(-48, -48, -16)]
  52.  
  53.   # ◆昼夜切り替え時間(次の状態へ移るまでの期間)
  54.   #  切り替え方式が時間の場合は秒、歩数の場合は歩数そのまま。
  55.   #  戦闘中は切り替え時間が10倍(1/10の速度)
  56.   #  現実時間の場合、次の状態へ切り替える時刻(24時間方式)
  57.   DAYNIGHT_TIME = [30, 10, 25, 10]
  58.  
  59.   # DAYNIGHT_TIME = [16, 20, 6, 10]
  60.   # ↑現実時間用のサンプル。試す場合はコメントを解除。
  61.   #   The sample of Real time.
  62. end
  63.  
  64. #### DAYNIGHT_METHOD
  65. ### Method of change day and night.
  66. # 0..Passage of time.  1..Number of steps.  2..Real time.(imperfection)
  67.  
  68. #### DAYNIGHT_EVENT_STOP
  69. ### Time is stopped when event is running.
  70. # When DAYNIGHT_METHOD is 0, this is effective.
  71.  
  72. #### DAYNIGHT_PASS_PHASE
  73. ### Phase which date is changed.
  74. # 0..Day   1..Evening  2..Night  3..Morning
  75.  
  76. #### DAYNIGHT_DURATION
  77. ### Duration which phase is changed. {Unit : frame}
  78. # When duration is omitted, this value is applied.
  79.  
  80. #### DAYNIGHT_WEEK_NAME
  81. ### The day of the week names. (Not so significant.)
  82. #DAYNIGHT_WEEK_NAME = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
  83.  
  84. #### DAYNIGHT_NAME
  85. ### Day and night name. (Not so significant.)
  86. #DAYNIGHT_NAME = ["Day", "Evening", "Night", "Morning"]
  87.  
  88. #### DAYNIGHT_TONE
  89. ### Tone of day and night.
  90. # (If you don't understanding well, please leave this as it is.)
  91. #### DAYNIGHT_TONE_BACK_ONLY
  92. ### In battle, it applies tone of day and night to background.
  93.  
  94. #### DAYNIGHT_TIME
  95. ### Necessary period until changing for the next phase.
  96. #  Passage of time -- sec.
  97. #  Number of steps -- steps.
  98. #  Real time -------- time when phase is changed.
  99. # In battle, time progress speed becomes 1/10.
  100.  
  101. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  102.  
  103. $imported = {} if $imported == nil
  104. $imported["DayNight"] = true
  105.  
  106. module DayNight
  107.   #--------------------------------------------------------------------------
  108.   # ● 変数初期化
  109.   #--------------------------------------------------------------------------
  110.   def self._init_var_
  111.     $game_system.daynight_count = 0 if $game_system.daynight_count == nil
  112.     $game_system.daynight_phase = 0 if $game_system.daynight_phase == nil
  113.     $game_system.daynight_pass_days = 0 if $game_system.daynight_pass_days == nil
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 現在の状態
  117.   #--------------------------------------------------------------------------
  118.   def self.now
  119.     # 現在の状態を返す
  120.     return $game_system.daynight_phase
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 状態名取得
  124.   #--------------------------------------------------------------------------
  125.   def self.now_name
  126.     # 現在の状態名を返す
  127.     return KGC::DAYNIGHT_NAME[self.now]
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 昼夜手動切り替え
  131.   #     phase     : 切り替え後の状態INDEX
  132.   #     duration  : 切り替え時間(フレーム)  (省略時 : KGC::DAYNIGHT_DURATION)
  133.   #     pass_days : 経過させる日数  (省略時:0)
  134.   #--------------------------------------------------------------------------
  135.   def self.change(phase, duration = KGC::DAYNIGHT_DURATION, pass_days = 0)
  136.     # カウント初期化
  137.     $game_system.daynight_count = 0
  138.     # フェーズ更新
  139.     $game_system.daynight_phase = phase
  140.     # 手動切り替え有効
  141.     $game_temp.manual_daynight_change = duration
  142.     # 日数経過
  143.     $game_system.daynight_pass_days += pass_days
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 次の状態へ移行
  147.   #     duration : 切り替え時間(フレーム)  (省略時 : KGC::DAYNIGHT_DURATION)
  148.   #--------------------------------------------------------------------------
  149.   def self.change_next(duration = KGC::DAYNIGHT_DURATION)
  150.     $game_screen.change_daynight_next(duration)
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 現在の曜日
  154.   #--------------------------------------------------------------------------
  155.   def self.now_week
  156.     # 現在の曜日を返す
  157.     if KGC::DAYNIGHT_METHOD == 2
  158.       return Time.now.wday
  159.     else
  160.       return $game_system.daynight_pass_days % KGC::DAYNIGHT_WEEK_NAME.size
  161.     end
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 曜日名取得
  165.   #--------------------------------------------------------------------------
  166.   def self.now_week_name
  167.     # 現在の曜日名を返す
  168.     return KGC::DAYNIGHT_WEEK_NAME[self.now_week]
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● デフォルトの状態(0, 0, 0)に戻す
  172.   #     duration : 切り替え時間(フレーム)  (省略時 : KGC::DAYNIGHT_DURATION)
  173.   #--------------------------------------------------------------------------
  174.   def self.set_default(duration = KGC::DAYNIGHT_DURATION)
  175.     $game_screen.set_daynight_default(duration)
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 現在の状態を適用
  179.   #     duration : 切り替え時間(フレーム)  (省略時 : KGC::DAYNIGHT_DURATION)
  180.   #--------------------------------------------------------------------------
  181.   def self.apply(duration = KGC::DAYNIGHT_DURATION)
  182.     $game_screen.apply_daynight(duration)
  183.   end
  184. end
  185.  
  186. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  187.  
  188. #==============================================================================
  189. # ■ Game_Temp
  190. #==============================================================================
  191.  
  192. class Game_Temp
  193.   attr_accessor :manual_daynight_change
  194.   #--------------------------------------------------------------------------
  195.   # ● オブジェクト初期化
  196.   #--------------------------------------------------------------------------
  197.   alias initialize_KGC_DayNight initialize
  198.   def initialize
  199.     # 元の処理を実行
  200.     initialize_KGC_DayNight
  201.  
  202.     @manual_daynight_change = false
  203.   end
  204. end
  205.  
  206. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  207.  
  208. #==============================================================================
  209. # ■ Game_System
  210. #==============================================================================
  211.  
  212. class Game_System
  213.   attr_accessor :daynight_count, :daynight_phase, :daynight_pass_days,
  214.     :daynight_change, :daynight_change_battle
  215.   #--------------------------------------------------------------------------
  216.   # ● オブジェクト初期化
  217.   #--------------------------------------------------------------------------
  218.   alias initialize_KGC_DayNight initialize
  219.   def initialize
  220.     initialize_KGC_DayNight
  221.  
  222.     @daynight_count = @daynight_phase = @daynight_pass_days = 0
  223.     @daynight_change = true
  224.     @daynight_change_battle = true
  225.   end
  226. end
  227.  
  228. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  229.  
  230. #==============================================================================
  231. # ■ Game_Screen
  232. #==============================================================================
  233.  
  234. class Game_Screen
  235.   attr_reader :daynight_tone
  236.   #--------------------------------------------------------------------------
  237.   # ● オブジェクト初期化
  238.   #--------------------------------------------------------------------------
  239.   alias initialize_KGC_DayNight initialize
  240.   def initialize
  241.     # 元の処理を実行
  242.     initialize_KGC_DayNight
  243.  
  244.     # とりあえず現在の状態に設定
  245.     @default_tone = Tone.new(0, 0, 0)
  246.     @tone = KGC::DAYNIGHT_TONE[$game_system.daynight_phase].clone
  247.     @daynight_tone = @tone.clone
  248.     # 移動判定用座標
  249.     @x = @y = 0
  250.     # フレーム更新用カウント初期化
  251.     @frame_count = Graphics.frame_count
  252.     @daynight_tone_duration = 0
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 色調の取得
  256.   #--------------------------------------------------------------------------
  257.   def tone
  258.     if $game_temp.in_battle && KGC::DAYNIGHT_TONE_BACK_ONLY
  259.       return @default_tone
  260.     else
  261.       return @tone
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 色調変更の開始
  266.   #     tone     : 色調
  267.   #     duration : 時間
  268.   #--------------------------------------------------------------------------
  269.   alias start_tone_change_KGC_DayNight start_tone_change
  270.   def start_tone_change(tone, duration)
  271.     start_tone_change_KGC_DayNight(tone, duration)
  272.  
  273.     @daynight_tone_target = tone.clone
  274.     @daynight_tone_duration = duration
  275.     if @daynight_tone_duration == 0
  276.       @daynight_tone = @daynight_tone_target.clone
  277.     end
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● フレーム更新
  281.   #--------------------------------------------------------------------------
  282.   alias update_KGC_DayNight update
  283.   def update
  284.     update_KGC_DayNight
  285.  
  286.     if @daynight_tone_duration >= 1
  287.       d = @daynight_tone_duration
  288.       @daynight_tone.red =
  289.         (@daynight_tone.red * (d - 1) + @daynight_tone_target.red) / d
  290.       @daynight_tone.green =
  291.         (@daynight_tone.green * (d - 1) + @daynight_tone_target.green) / d
  292.       @daynight_tone.blue =
  293.         (@daynight_tone.blue * (d - 1) + @daynight_tone_target.blue) / d
  294.       @daynight_tone.gray =
  295.         (@daynight_tone.gray * (d - 1) + @daynight_tone_target.gray) / d
  296.       @daynight_tone_duration -= 1
  297.     end
  298.  
  299.     # 昼夜切り替え判定
  300.     if (!$game_temp.in_battle && $game_system.daynight_change) ||
  301.         ($game_temp.in_battle && $game_system.daynight_change &&
  302.         $game_system.daynight_change_battle)
  303.       case KGC::DAYNIGHT_METHOD
  304.       when 0  # 時間判定
  305.         update_daynight_pass_time
  306.       when 1  # 歩数判定
  307.         update_daynight_step
  308.       when 2  # 現実時間
  309.         update_daynight_real_time
  310.       end
  311.     end
  312.     # 手動切り替えが行われた場合
  313.     if $game_temp.manual_daynight_change != nil
  314.       # 色調切り替え
  315.       start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase],
  316.         KGC::DAYNIGHT_DURATION)
  317.       # 手動切り替え解除
  318.       $game_temp.manual_daynight_change = nil
  319.     end
  320.   end
  321.   #--------------------------------------------------------------------------
  322.   # ● 更新 : 時間経過
  323.   #--------------------------------------------------------------------------
  324.   def update_daynight_pass_time
  325.     # カウント増加量計算
  326.     inc_count = Graphics.frame_count - @frame_count
  327.     # 加算量がおかしい場合は戻る
  328.     if inc_count >= 100
  329.       @frame_count = Graphics.frame_count
  330.       return
  331.     end
  332.     # イベント中は戻る
  333.     if KGC::DAYNIGHT_EVENT_STOP && $game_system.map_interpreter.running?
  334.       @frame_count = Graphics.frame_count
  335.       return
  336.     end
  337.     # カウント加算
  338.     if $game_temp.in_battle
  339.       inc_count /= 10.0
  340.       $game_system.daynight_count += inc_count
  341.     else
  342.       $game_system.daynight_count += inc_count
  343.     end
  344.     # カウントを戻す
  345.     @frame_count = Graphics.frame_count
  346.     # 状態移行判定
  347.     count = $game_system.daynight_count / Graphics.frame_rate
  348.     if count >= KGC::DAYNIGHT_TIME[$game_system.daynight_phase]
  349.       # 次の状態へ移行
  350.       change_daynight_next
  351.     end
  352.   end
  353.   private :update_daynight_pass_time
  354.   #--------------------------------------------------------------------------
  355.   # ● 更新 : 歩数
  356.   #--------------------------------------------------------------------------
  357.   def update_daynight_step
  358.     # 移動判定
  359.     if @x != $game_player.x || @y != $game_player.y
  360.       # 座標更新
  361.       @x = $game_player.x
  362.       @y = $game_player.y
  363.       # カウント加算
  364.       $game_system.daynight_count += 1
  365.       # 状態移行判定
  366.       count = $game_system.daynight_count
  367.       if count >= KGC::DAYNIGHT_TIME[$game_system.daynight_phase]
  368.         # 次の状態へ移行
  369.         change_daynight_next
  370.       end
  371.     end
  372.   end
  373.   private :update_daynight_step
  374.   #--------------------------------------------------------------------------
  375.   # ● 更新 : 現実時間
  376.   #--------------------------------------------------------------------------
  377.   def update_daynight_real_time
  378.     # 現在の時間を取得
  379.     time = Time.now
  380.     # 状態移行判定
  381.     time1 = KGC::DAYNIGHT_TIME[$game_system.daynight_phase]
  382.     time2 = KGC::DAYNIGHT_TIME[$game_system.daynight_phase - 1]
  383.     if time2 != nil && time1 < time2
  384.       change = time.hour < time2 && time1 <= time.hour
  385.     else
  386.       change = time1 <= time.hour
  387.     end
  388.     if change
  389.       # 次の状態へ移行
  390.       change_daynight_next
  391.     end
  392.   end
  393.   private :update_daynight_real_time
  394.   #--------------------------------------------------------------------------
  395.   # ● 次の状態へ移行
  396.   #--------------------------------------------------------------------------
  397.   def change_daynight_next(duration = KGC::DAYNIGHT_DURATION)
  398.     $game_system.daynight_count = 0
  399.     $game_system.daynight_phase += 1
  400.     # 最後の状態に達した場合
  401.     if $game_system.daynight_phase >= KGC::DAYNIGHT_TONE.size
  402.       # 最初の状態に戻す
  403.       $game_system.daynight_phase = 0
  404.     end
  405.     # 日数経過判定
  406.     if $game_system.daynight_phase == KGC::DAYNIGHT_PASS_PHASE
  407.       $game_system.daynight_pass_days += 1
  408.     end
  409.     # 色調切り替え
  410.     start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase],
  411.       duration)
  412.   end
  413.   #--------------------------------------------------------------------------
  414.   # ● デフォルトの状態(0, 0, 0)に戻す
  415.   #--------------------------------------------------------------------------
  416.   def set_daynight_default(duration)
  417.     start_tone_change(Tone.new(0, 0, 0), duration)
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 現在の状態を適用
  421.   #--------------------------------------------------------------------------
  422.   def apply_daynight(duration)
  423.     start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase], duration)
  424.   end
  425.   if KGC::DAYNIGHT_ENABLE_OLD_METHOD
  426.   #--------------------------------------------------------------------------
  427.   # ● デフォルトの状態(0, 0, 0)に戻す
  428.   #     duration : 切り替え時間(フレーム)  (省略時:40)
  429.   #--------------------------------------------------------------------------
  430.   def daynight_default(duration = KGC::DAYNIGHT_DURATION)
  431.     start_tone_change(Tone.new(0, 0, 0), duration)
  432.   end
  433.   #--------------------------------------------------------------------------
  434.   # ● 現在の状態を適用
  435.   #     duration : 切り替え時間(フレーム)  (省略時:40)
  436.   #--------------------------------------------------------------------------
  437.   def daynight_apply(duration = KGC::DAYNIGHT_DURATION)
  438.     start_tone_change(KGC::DAYNIGHT_TONE[$game_system.daynight_phase], duration)
  439.   end
  440.   end
  441. end
  442.  
  443. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  444.  
  445. #==============================================================================
  446. # ■ Game_Map
  447. #==============================================================================
  448.  
  449. class Game_Map
  450.   #--------------------------------------------------------------------------
  451.   # ● エンカウントリストの取得
  452.   #--------------------------------------------------------------------------
  453.   alias encounter_list_KGC_DayNight encounter_list
  454.   def encounter_list
  455.     # 元の処理を実行
  456.     list = encounter_list_KGC_DayNight.dup
  457.  
  458.     # 出現条件判定
  459.     list.each_index { |i|
  460.       appear = false
  461.       troop = $data_troops[list[i]]
  462.       # 出現条件が無い場合は次へ
  463.       next unless troop.name =~ /\[DN((?:[ ]*[\-]?\d+(?:,[ ]*)?)+)\]/i
  464.       # 出現条件を適用
  465.       $1.split(/,/).each { |dn|
  466.         dn.gsub!(/[ ]/) {""}
  467.         appear |= dn[0, 1] == "-" ?
  468.           $game_system.daynight_phase != dn.to_i.abs :
  469.           $game_system.daynight_phase == dn.to_i
  470.       }
  471.       list[i] = nil unless appear
  472.     }
  473.     return list.compact
  474.   end
  475. end
  476.  
  477. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  478.  
  479. #==============================================================================
  480. # ■ Spriteset_Battle
  481. #==============================================================================
  482.  
  483. if KGC::DAYNIGHT_TONE_BACK_ONLY
  484. class Spriteset_Battle
  485.   #--------------------------------------------------------------------------
  486.   # ● フレーム更新
  487.   #--------------------------------------------------------------------------
  488.   alias update_KGC_DayNight update
  489.   def update
  490.     update_KGC_DayNight
  491.  
  492.     @battleback_sprite.tone = $game_screen.daynight_tone
  493.   end
  494. end
  495. end
  496.  
  497. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  498.  
  499. #==============================================================================
  500. # ■ Scene_Map
  501. #==============================================================================
  502.  
  503. class Scene_Map
  504.   #--------------------------------------------------------------------------
  505.   # ● メイン処理
  506.   #--------------------------------------------------------------------------
  507.   alias main_KGC_DayNight main
  508.   def main
  509.     DayNight._init_var_
  510.  
  511.     main_KGC_DayNight
  512.   end
  513. end

Lv3.寻梦者

梦石
0
星屑
3981
在线时间
603 小时
注册时间
2017-4-21
帖子
228
 楼主| 发表于 2018-4-16 17:27:29 | 显示全部楼层
已经解决
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 07:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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