赞 | 170 |
VIP | 6 |
好人卡 | 208 |
积分 | 229 |
经验 | 137153 |
最后登录 | 2024-11-8 |
在线时间 | 8636 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 22913
- 在线时间
- 8636 小时
- 注册时间
- 2011-12-31
- 帖子
- 3367
|
本帖最后由 tseyik 于 2013-1-17 19:36 编辑
ゲーム内時間管理脚本
- #==============================================================================
- # ■ RGSS3 ゲーム内時間管理 Ver1.00 by 星潟
- #------------------------------------------------------------------------------
- # ゲーム内にゲーム内時間を追加すると共に
- #「夜明け」・「朝」・「昼」・「夕方」・「夜」・「深夜」の概念を追加します。
- # なお、時間経過はマップ上でのみ計算されます。
- # イベント中は時間経過を行わせないようにする機能等もあります。
- #
- # また、時間操作のイベントコマンド「スクリプト」で使用できるコマンドに
- #「time_control(a,b,c,d)」が追加されます。
- # aには"+"か"-"か"="の何れかを入れてください。
- # bには0から23までの数(時間)、
- # cには0から59までの数(分)、
- # dにも0から59までの数(秒)を入れてください。
- #
- # aに"+"を入れた場合、現在時間から指定した時間分、時間が経過します。
- # aに"-"を入れた場合、現在時間から指定した時間分、時間が巻戻ります。
- # ("+"と"-"で午前0時を跨いだ場合、日数変数を指定しているとその変数も変化します)
- # aに"="を入れた場合、現在時間を無視してその時間ぴったりに変更されます。
- #
- # 使用例
- # time_control("+",1,30,25)
- # 現在時間+1時間30分25秒
- #
- # time_control("-",1,30,25)
- # 現在時間+1時間30分25秒
- #
- # time_control("=",19,43,22)
- # 現在時間を19時43分22秒にする
- #
- #==============================================================================
- module TIME_SCHEDULE
-
- #フレーム更新毎の時間経過量
- #100で1秒。6000で1分。360000で1時間。
- PLUS = 100
-
- #ゲーム開始時の1日の中の時間経過量(0~8639999で指定)
- #経過量8640000到達で1日経過し、リセットされて0に戻る。
- START = 3600000
-
- #イベント実行中でも問答無用で時間を経過させるか?
- #true 経過させる false 経過させない
- INTPRT = false
-
- #時間経過による色調変更を行うか
- #true 行う false 行わない
- COLOR = true
-
- #時間変化を強制停止するスイッチ番号の指定(増加も減少も無効化)
- #0 強制停止機能の無効化 1~ 該当のスイッチがONの時、時間変化停止
- SWITCH = 1000
-
- #時間経過による色調補正を実行しないマップの
- #マップ名(表示しない方)に記入するキーワード。
- MAP = "UMD"
-
- #特定の変数に対し、常に時間帯の区分を代入し続けるか?
- #0 代入しない 1~ 指定した数字のIDの変数に代入し続ける。
- #代入された数字の対応は以下の通り
- #0……夜明け
- #1……朝
- #2……昼
- #3……夕方
- #4……夜
- #5……深夜
- VAR1 = 4
-
- #特定の変数に対し、常に現在何時かを代入し続けるか?
- #(0で機能を無効化)
- VAR2 = 5
-
- #特定の変数に対し、常に現在何分かを代入し続けるか?
- #(0で機能を無効化)
- VAR3 = 6
-
- #特定の変数に対し、常に現在何秒かを代入し続けるか?
- #(0で機能を無効化)
- VAR4 = 7
-
- #ゲーム中にプレイヤーに見える形で日付を表す変数を用意していて
- #なおかつ日数の経過で自動的に変数を変えたい場合、ここにその変数番号を記入
- #(0で機能を無効化)
- VAR5 = 8
-
- #色調変化速度(1~小数点以下で設定)
- SPEED = 0.1
-
- #夜明け時間設定(デフォルト 午前4時~)
- Dawn = 1440000
-
- #夜明け色調(R, G, B, alpha)
- DaC = [0, 0, 50, 100]
-
- #朝時間設定(デフォルト 午前5時30分~)
- Morning = 1980000
-
- #朝色調(R, G, B, alpha)
- MoC = [0, 0, 0, 15]
-
- #昼時間設定(デフォルト 正午~)
- Noon = 4320000
-
- #昼色調(R, G, B, alpha)
- NoC = [0, 0, 0, 0]
-
- #夕方時間設定(デフォルト 午後16時30分~)
- Evening = 5940000
-
- #夕方色調(R, G, B, alpha)
- EvC = [50, 0, 0, 150]
-
- #夜時間設定(デフォルト 午後18時30分~)
- Night = 6660000
-
- #夜色調(R, G, B, alpha)
- NiC = [0, 0, 50, 200]
-
- #深夜時間設定(デフォルト 深夜0時~)
- MNight = 0
-
- #深夜色調(R, G, B, alpha)
- MNC = [0, 0, 75, 225]
-
- end
- #==============================================================================
- # ■ Game_Party
- #------------------------------------------------------------------------------
- # パーティを扱うクラスです。所持金やアイテムなどの情報が含まれます。このクラ
- # スのインスタンスは $game_party で参照されます。
- #==============================================================================
- class Game_Party < Game_Unit
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :time # 時間管理
- attr_accessor :time_mode # 時間帯データ
- attr_accessor :day_red # R
- attr_accessor :day_green # G
- attr_accessor :day_blue # B
- attr_accessor :day_alpha # alpha
- attr_accessor :daytimeview_force_change# ビューポート強制更新フラグ
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- alias initialize_time initialize
- def initialize
- initialize_time
- [url=home.php?mod=space&uid=134219]@Time[/url] = TIME_SCHEDULE::START
- if [url=home.php?mod=space&uid=134219]@Time[/url] < TIME_SCHEDULE::Morning && @time >= TIME_SCHEDULE::Dawn
- @time_mode = 0
- dr = TIME_SCHEDULE::DaC[0]
- dg = TIME_SCHEDULE::DaC[1]
- db = TIME_SCHEDULE::DaC[2]
- da = TIME_SCHEDULE::DaC[3]
- elsif @time < TIME_SCHEDULE::Noon && @time >= TIME_SCHEDULE::Morning
- @time_mode = 1
- dr = TIME_SCHEDULE::MoC[0]
- dg = TIME_SCHEDULE::MoC[1]
- db = TIME_SCHEDULE::MoC[2]
- da = TIME_SCHEDULE::MoC[3]
- elsif @time < TIME_SCHEDULE::Evening && @time >= TIME_SCHEDULE::Noon
- @time_mode = 2
- dr = TIME_SCHEDULE::Noc[0]
- dg = TIME_SCHEDULE::Noc[1]
- db = TIME_SCHEDULE::Noc[2]
- da = TIME_SCHEDULE::Noc[3]
- elsif @time < TIME_SCHEDULE::Night && @time >= TIME_SCHEDULE::Evening
- @time_mode = 3
- dr = TIME_SCHEDULE::EvC[0]
- dg = TIME_SCHEDULE::EvC[1]
- db = TIME_SCHEDULE::EvC[2]
- da = TIME_SCHEDULE::EvC[3]
- elsif @time < TIME_SCHEDULE::MNight or @time >= TIME_SCHEDULE::Night
- @time_mode = 4
- dr = TIME_SCHEDULE::NiC[0]
- dg = TIME_SCHEDULE::NiC[1]
- db = TIME_SCHEDULE::NiC[2]
- da = TIME_SCHEDULE::NiC[3]
- elsif @time < TIME_SCHEDULE::Dawn or @time >= TIME_SCHEDULE::MNight
- @time_mode = 5
- dr = TIME_SCHEDULE::MNC[0]
- dg = TIME_SCHEDULE::MNC[1]
- db = TIME_SCHEDULE::MNC[2]
- da = TIME_SCHEDULE::MNC[3]
- end
- @day_red = dr
- @day_green = dg
- @day_blue = db
- @day_alpha = da
- end
- end
- class Game_Map
- #--------------------------------------------------------------------------
- # ● フレーム更新
- # main : インタプリタ更新フラグ
- #--------------------------------------------------------------------------
- alias update_time update
- def update(main = false)
- update_time(main)
- return if TIME_SCHEDULE::SWITCH > 0 && $game_switches[TIME_SCHEDULE::SWITCH] == true
- return if TIME_SCHEDULE::INTPRT == false && @interpreter.running?
- ts_update_base
- end
- def ts_update_base
- $game_party.time += TIME_SCHEDULE::PLUS
- if $game_party.time >= 8640000
- $game_variables[TIME_SCHEDULE::VAR5] += 1 if TIME_SCHEDULE::VAR5 > 0
- $game_party.time = 0
- end
- ts_update
- end
- def ts_update
- time_data = $game_party.time
- if time_data < TIME_SCHEDULE::Morning && time_data >= TIME_SCHEDULE::Dawn
- if $game_party.time_mode != 0
- $game_party.time_mode = 0
- end
- elsif time_data < TIME_SCHEDULE::Noon && time_data >= TIME_SCHEDULE::Morning
- if $game_party.time_mode != 1
- $game_party.time_mode = 1
- end
- elsif time_data < TIME_SCHEDULE::Evening && time_data >= TIME_SCHEDULE::Noon
- if $game_party.time_mode != 2
- $game_party.time_mode = 2
- end
- elsif time_data < TIME_SCHEDULE::Night && time_data >= TIME_SCHEDULE::Evening
- if $game_party.time_mode != 3
- $game_party.time_mode = 3
- end
- elsif time_data < TIME_SCHEDULE::MNight or time_data >= TIME_SCHEDULE::Night
- if $game_party.time_mode != 4
- $game_party.time_mode = 4
- end
- elsif time_data < TIME_SCHEDULE::Dawn or time_data >= TIME_SCHEDULE::MNight
- if $game_party.time_mode != 5
- $game_party.time_mode = 5
- end
- end
- $game_variables[TIME_SCHEDULE::VAR1] = $game_party.time_mode if TIME_SCHEDULE::VAR1 > 0
- $game_variables[TIME_SCHEDULE::VAR2] = $game_party.time / 100 / 60 / 60 if TIME_SCHEDULE::VAR2 > 0
- $game_variables[TIME_SCHEDULE::VAR3] = $game_party.time / 100 / 60 % 60 if TIME_SCHEDULE::VAR3 > 0
- $game_variables[TIME_SCHEDULE::VAR4] = $game_party.time / 100 % 60 if TIME_SCHEDULE::VAR4 > 0
- end
- end
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # ● ビューポートの作成
- #--------------------------------------------------------------------------
- alias create_viewports_daytime create_viewports
- def create_viewports
- create_viewports_daytime
- create_daytime_viewports
- end
- #--------------------------------------------------------------------------
- # ● 時間経過で変化するビューポートの作成
- #--------------------------------------------------------------------------
- def create_daytime_viewports
- @viewport_daytime = Viewport.new
- @viewport_daytime.z = 150
- return if TIME_SCHEDULE::COLOR == false
- @viewport_daytime.color.set($game_party.day_red, $game_party.day_green, $game_party.day_blue, $game_party.day_alpha)
- end
- #--------------------------------------------------------------------------
- # ● ビューポートの解放
- #--------------------------------------------------------------------------
- alias dispose_viewports_daytime dispose_viewports
- def dispose_viewports
- dispose_viewports_daytime
- @viewport_daytime.dispose
- end
- #--------------------------------------------------------------------------
- # ● 天候の更新
- #--------------------------------------------------------------------------
- alias update_weather_daytime update_weather
- def update_weather
- update_weather_daytime
- update_daytime
- end
- #--------------------------------------------------------------------------
- # ● 時間による画面の更新
- #--------------------------------------------------------------------------
- def update_daytime
- return if TIME_SCHEDULE::COLOR == false
- if $data_mapinfos[$game_map.map_id].name.include?(TIME_SCHEDULE::MAP)
- @viewport_daytime.color.set(0, 0, 0, 0)
- $game_party.daytimeview_force_change = true
- return
- end
- dacd = TIME_SCHEDULE::DaC
- mocd = TIME_SCHEDULE::MoC
- nocd = TIME_SCHEDULE::NoC
- evcd = TIME_SCHEDULE::EvC
- nicd = TIME_SCHEDULE::NiC
- mncd = TIME_SCHEDULE::MNC
- spd = TIME_SCHEDULE::SPEED
- case $game_party.time_mode
- when 0
- rdn = dacd[0]
- gdn = dacd[1]
- bdn = dacd[2]
- adn = dacd[3]
- when 1
- rdn = mocd[0]
- gdn = mocd[1]
- bdn = mocd[2]
- adn = mocd[3]
- when 2
- rdn = nocd[0]
- gdn = nocd[1]
- bdn = nocd[2]
- adn = nocd[3]
- when 3
- rdn = evcd[0]
- gdn = evcd[1]
- bdn = evcd[2]
- adn = evcd[3]
- when 4
- rdn = nicd[0]
- gdn = nicd[1]
- bdn = nicd[2]
- adn = nicd[3]
- when 5
- rdn = mncd[0]
- gdn = mncd[1]
- bdn = mncd[2]
- adn = mncd[3]
- end
- if $game_party.daytimeview_force_change == true
- @viewport_daytime.color.set(rdn, gdn, bdn, adn)
- $game_party.daytimeview_force_change = false
- else
- rdo = @viewport_daytime.color.red
- gdo = @viewport_daytime.color.green
- bdo = @viewport_daytime.color.blue
- ado = @viewport_daytime.color.alpha
- if rdo > rdn
- rd = rdo - spd
- elsif rdo < rdn
- rd = rdo + spd
- else
- rd = rdo
- end
- if gdo > gdn
- gd = gdo - spd
- elsif rdo < gdn
- gd = gdo + spd
- else
- gd = gdo
- end
- if bdo > bdn
- bd = bdo - spd
- elsif bdo < bdn
- bd = bdo + spd
- else
- bd = bdo
- end
- if ado > adn
- ad = ado - spd
- elsif rdo < adn
- ad = ado + spd
- else
- ad = ado
- end
- $game_party.day_red = rd
- $game_party.day_green = gd
- $game_party.day_blue = bd
- $game_party.day_alpha = ad
- @viewport_daytime.color.set(rd, gd, bd, ad)
- end
- end
- end
- class Game_Interpreter
- def time_control(n1,n2,n3,n4)
- return if TIME_SCHEDULE::SWITCH > 0 && $game_switches[TIME_SCHEDULE::SWITCH] == true
- tcd = tcd(n2,n3,n4)
- if n1 == "+"
- data = tcd + $game_party.time
- if data >= 8640000
- data = data - 8640000
- $game_variables[TIME_SCHEDULE::VAR5] += 1 if TIME_SCHEDULE::VAR5 > 0
- end
- elsif n1 == "-"
- data = $game_party.time - tcd
- if 0 > data
- data = data + 8640000
- $game_variables[TIME_SCHEDULE::VAR5] -= 1 if TIME_SCHEDULE::VAR5 > 0
- end
- elsif n1 == "="
- data = tcd
- else
- return
- end
- $game_party.time = data
- $game_map.ts_update
- $game_party.daytimeview_force_change = true
- end
- def tcd(nd1,nd2,nd3)
- data = 0
- data += nd1 * 60 * 60 * 100
- data += nd2 * 60 * 100
- data += nd3 * 100
- return data
- end
- end
复制代码 |
评分
-
查看全部评分
|