Project1

标题: 關於一個日夜系統. 求VX版轉VA用... [打印本页]

作者: a000b1745    时间: 2013-1-3 18:19
标题: 關於一個日夜系統. 求VX版轉VA用...
小妹在VX有用過一個不錯的日夜系統,原網址如下↓

http://ytomy.sakura.ne.jp/tkool/ ... m&tech=daynight

現在都用VX ACE做遊戲了,也想用這套日夜系統。
不知有沒有高手願意幫忙修改下腳本,讓 VA 也能使用這套腳本??{:2_280:}
作者: Sion    时间: 2013-1-3 19:22
本帖最后由 Sion 于 2013-1-3 19:25 编辑

看了一下,如果是需要采用步数来改变昼夜的话,这是我用的一个昼夜系统,在需要切换昼夜的地图建立这样一个并行处理的事件就行了。
(类似DQ系列的昼夜系统)
我设定的是10步切换昼夜,貌似太短了,测试用的。根据需要自己改吧。

QQ截图20130103191846.png (94.47 KB, 下载次数: 36)

QQ截图20130103191846.png

QQ截图20130103191917.png (92.65 KB, 下载次数: 32)

QQ截图20130103191917.png

作者: a000b1745    时间: 2013-1-3 19:53
很感謝你提供的方式~
但是我要的日夜判定並非步數,而是時間{:2_249:}

作者: a000b1745    时间: 2013-1-4 00:14
我要的是隨著遊戲進行時間變化的,而非現實時間和步數的{:2_275:}
作者: Sion    时间: 2013-1-4 12:27
本帖最后由 Sion 于 2013-1-4 12:33 编辑

建立公共事件,需要切换昼夜时开启对应开关(本例为开关1)。需要扩展黄昏跟黎明照猫画虎改改就行了。

QQ截图20130104122632.png (50.53 KB, 下载次数: 34)

QQ截图20130104122632.png

作者: a000b1745    时间: 2013-1-4 14:20
Sion 发表于 2013-1-4 12:27
建立公共事件,需要切换昼夜时开启对应开关(本例为开关1)。需要扩展黄昏跟黎明照猫画虎改改就行了。 ...

我有嘗試過這樣做了,但是發生了一些問題...

1.如何指定部分地圖不受遊戲時間影響
譬如我進入小屋子(地圖ID:003) 時間暫停

2.配上日夜的天氣變化後,我下了洞穴,該如何讓洞穴(地圖ID:004)不受日夜的天氣變化?
並且出來洞穴後又會恢復應該有的天氣?

3.進入夜晚 就是讓畫面變暗,如何進入部分地圖不受影響?
譬如我進入洞穴(地圖ID:004),外面白天但是裡面表現是夜晚??
離開洞穴後又恢復應有的白天?
作者: Sion    时间: 2013-1-4 15:24
本帖最后由 Sion 于 2013-1-4 15:46 编辑

这样就差不多了。这个变量编辑系统真是太不智能了……自己插入脚本操作要来得更快一些吧

公共事件.png (72.21 KB, 下载次数: 30)

公共事件.png

进入洞穴.png (10 KB, 下载次数: 32)

进入洞穴.png

离开洞穴.png (14.95 KB, 下载次数: 31)

离开洞穴.png

切换至的地图需加入的自动执行事件.png (3.84 KB, 下载次数: 30)

切换至的地图需加入的自动执行事件.png

作者: a000b1745    时间: 2013-1-5 01:29
其實不免還有一些卡卡的地方
用事件是可以頂替些基本功能,但如果用腳本
又可以帶進進行天數,再用天數去做隨機天氣變化

可能別人的腳本用慣了 自己被寵壞了{:2_254:}

還是希望有高手能幫忙轉轉看腳本.
作者: j433463    时间: 2013-1-5 13:21
不知道这国外网站您看不看得到:

http://forums.rpgmakerweb.com/in ... game-time-nightday/

介绍

提供了一系列的功能设置和调用一个新的变量,被称为游戏时间,根据当前的游戏时间,让白天和黑夜的外观,以及自定义的色彩。

特点
- 游戏的时间,完整的与unfancy小钟
- 白天和黑夜循环使用自定义的色彩和时间


似乎与您说的要求相符合。
作者: a000b1745    时间: 2013-1-7 13:40
這我有用過~可是我想請問,假如我做一個"床"的睡眠
如何讓時間系統快轉八小時??
也就是起床後腳色是在八小時候的時間??
作者: j433463    时间: 2013-1-7 14:31
我个人没用过,不过看脚本中的说明,应该是用 GameTime::change(time) 吧,
脚本说 time 值不能大于 1440,1440/60 = 24,也就是1440分钟了,
所以八小时就是 60*8=480,设 GameTime::change(480) 应该可以。

作者: a000b1745    时间: 2013-1-8 02:03
那可以設定地圖ID002. 不受日夜的畫面顏色控制,或是進入地圖ID003時,讓時間暫停嗎??
另外我想在06:00加入一個開關001,18:00加入另一個開關002,可行嗎?
作者: 風痕天翼    时间: 2013-2-9 19:00
a000b1745 发表于 2013-1-8 02:03
那可以設定地圖ID002. 不受日夜的畫面顏色控制,或是進入地圖ID003時,讓時間暫停嗎??
另外我想在06:00加入 ...

请问要怎么用那个变量制作开关?
作者: tseyik    时间: 2013-2-9 20:54
本帖最后由 tseyik 于 2013-2-9 21:20 编辑

時間管理
# 事件「脚本」使用的命令操作時間
#「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秒

#地図名(不表示那個)記入下述關鍵字。
  MAP  = "UMD"
時間計算方法:
設定中PLUS指定(予設100=1秒)
事件実行計不計時間?
INTPRT  = false(不計)
強制指定時間的開関(設定的開関on(時間変化停止))
SWITCH = 1000
其他設定可看脚本
#

  1. #==============================================================================
  2. # ■ RGSS3 ゲーム内時間管理 Ver1.00 by 星潟
  3. #------------------------------------------------------------------------------
  4. # ゲーム内にゲーム内時間を追加すると共に
  5. #「夜明け」・「朝」・「昼」・「夕方」・「夜」・「深夜」の概念を追加します。
  6. # なお、時間経過はマップ上でのみ計算されます。
  7. # イベント中は時間経過を行わせないようにする機能等もあります。
  8. #
  9. # また、時間操作のイベントコマンド「スクリプト」で使用できるコマンドに
  10. #「time_control(a,b,c,d)」が追加されます。
  11. # aには"+"か"-"か"="の何れかを入れてください。
  12. # bには0から23までの数(時間)、
  13. # cには0から59までの数(分)、
  14. # dにも0から59までの数(秒)を入れてください。
  15. #
  16. # aに"+"を入れた場合、現在時間から指定した時間分、時間が経過します。
  17. # aに"-"を入れた場合、現在時間から指定した時間分、時間が巻戻ります。
  18. # ("+"と"-"で午前0時を跨いだ場合、日数変数を指定しているとその変数も変化します)
  19. # aに"="を入れた場合、現在時間を無視してその時間ぴったりに変更されます。
  20. #
  21. # 使用例
  22. # time_control("+",1,30,25)
  23. # 現在時間+1時間30分25秒
  24. #
  25. # time_control("-",1,30,25)
  26. # 現在時間+1時間30分25秒
  27. #
  28. # time_control("=",19,43,22)
  29. # 現在時間を19時43分22秒にする
  30. #
  31. #==============================================================================
  32. module TIME_SCHEDULE
  33.   
  34.   #フレーム更新毎の時間経過量
  35.   #100で1秒。6000で1分。360000で1時間。
  36.   PLUS    = 100
  37.   
  38.   #ゲーム開始時の1日の中の時間経過量(0~8639999で指定)
  39.   #経過量8640000到達で1日経過し、リセットされて0に戻る。
  40.   START   = 3600000
  41.   
  42.   #イベント実行中でも問答無用で時間を経過させるか?
  43.   #true 経過させる false 経過させない
  44.   INTPRT  = false
  45.   
  46.   #時間経過による色調変更を行うか
  47.   #true 行う false 行わない
  48.   COLOR = true
  49.   
  50.   #時間変化を強制停止するスイッチ番号の指定(増加も減少も無効化)
  51.   #0 強制停止機能の無効化 1~ 該当のスイッチがONの時、時間変化停止
  52.   SWITCH = 1000
  53.   
  54.   #時間経過による色調補正を実行しないマップの
  55.   #マップ名(表示しない方)に記入するキーワード。
  56.   MAP  = "UMD"
  57.   
  58.   #特定の変数に対し、常に時間帯の区分を代入し続けるか?
  59.   #0 代入しない 1~ 指定した数字のIDの変数に代入し続ける。
  60.   #代入された数字の対応は以下の通り
  61.   #0……夜明け
  62.   #1……朝
  63.   #2……昼
  64.   #3……夕方
  65.   #4……夜
  66.   #5……深夜
  67.   VAR1     = 4
  68.   
  69.   #特定の変数に対し、常に現在何時かを代入し続けるか?
  70.   #(0で機能を無効化)
  71.   VAR2     = 5
  72.   
  73.   #特定の変数に対し、常に現在何分かを代入し続けるか?
  74.   #(0で機能を無効化)
  75.   VAR3     = 6
  76.   
  77.   #特定の変数に対し、常に現在何秒かを代入し続けるか?
  78.   #(0で機能を無効化)
  79.   VAR4     = 7
  80.   
  81.   #ゲーム中にプレイヤーに見える形で日付を表す変数を用意していて
  82.   #なおかつ日数の経過で自動的に変数を変えたい場合、ここにその変数番号を記入
  83.   #(0で機能を無効化)
  84.   VAR5     = 8
  85.   
  86.   #色調変化速度(1~小数点以下で設定)
  87.   SPEED   = 0.1
  88.   
  89.   #夜明け時間設定(デフォルト 午前4時~)
  90.   Dawn    = 1440000
  91.   
  92.   #夜明け色調(R, G, B, alpha)
  93.   DaC     = [0, 0, 50, 100]
  94.   
  95.   #朝時間設定(デフォルト 午前5時30分~)
  96.   Morning = 1980000
  97.   
  98.   #朝色調(R, G, B, alpha)
  99.   MoC     = [0, 0, 0, 15]
  100.   
  101.   #昼時間設定(デフォルト 正午~)
  102.   Noon    = 4320000
  103.   
  104.   #昼色調(R, G, B, alpha)
  105.   NoC     = [0, 0, 0, 0]
  106.   
  107.   #夕方時間設定(デフォルト 午後16時30分~)
  108.   Evening = 5940000
  109.   
  110.   #夕方色調(R, G, B, alpha)
  111.   EvC     = [50, 0, 0, 150]
  112.   
  113.   #夜時間設定(デフォルト 午後18時30分~)
  114.   Night   = 6660000
  115.   
  116.   #夜色調(R, G, B, alpha)
  117.   NiC     = [0, 0, 50, 200]
  118.   
  119.   #深夜時間設定(デフォルト 深夜0時~)
  120.   MNight  = 0
  121.   
  122.   #深夜色調(R, G, B, alpha)
  123.   MNC     = [0, 0, 75, 225]
  124.   
  125. end
  126. #==============================================================================
  127. # ■ Game_Party
  128. #------------------------------------------------------------------------------
  129. #  パーティを扱うクラスです。所持金やアイテムなどの情報が含まれます。このクラ
  130. # スのインスタンスは $game_party で参照されます。
  131. #==============================================================================

  132. class Game_Party < Game_Unit
  133.   #--------------------------------------------------------------------------
  134.   # ● 公開インスタンス変数
  135.   #--------------------------------------------------------------------------
  136.   attr_accessor :time                    # 時間管理
  137.   attr_accessor :time_mode               # 時間帯データ
  138.   attr_accessor :day_red                 # R
  139.   attr_accessor :day_green               # G
  140.   attr_accessor :day_blue                # B
  141.   attr_accessor :day_alpha               # alpha
  142.   attr_accessor :daytimeview_force_change# ビューポート強制更新フラグ
  143.   #--------------------------------------------------------------------------
  144.   # ● オブジェクト初期化
  145.   #--------------------------------------------------------------------------
  146.   alias initialize_time initialize
  147.   def initialize
  148.     initialize_time
  149.     [url=home.php?mod=space&uid=134219]@Time[/url] = TIME_SCHEDULE::START
  150.     if [url=home.php?mod=space&uid=134219]@Time[/url] < TIME_SCHEDULE::Morning && [url=home.php?mod=space&uid=134219]@Time[/url] >= TIME_SCHEDULE::Dawn
  151.       @time_mode = 0
  152.       dr = TIME_SCHEDULE::DaC[0]
  153.       dg = TIME_SCHEDULE::DaC[1]
  154.       db = TIME_SCHEDULE::DaC[2]
  155.       da = TIME_SCHEDULE::DaC[3]
  156.     elsif [url=home.php?mod=space&uid=134219]@Time[/url] < TIME_SCHEDULE::Noon && [url=home.php?mod=space&uid=134219]@Time[/url] >= TIME_SCHEDULE::Morning
  157.       @time_mode = 1
  158.       dr = TIME_SCHEDULE::MoC[0]
  159.       dg = TIME_SCHEDULE::MoC[1]
  160.       db = TIME_SCHEDULE::MoC[2]
  161.       da = TIME_SCHEDULE::MoC[3]
  162.     elsif [url=home.php?mod=space&uid=134219]@Time[/url] < TIME_SCHEDULE::Evening && @time >= TIME_SCHEDULE::Noon
  163.       @time_mode = 2
  164.       dr = TIME_SCHEDULE::Noc[0]
  165.       dg = TIME_SCHEDULE::Noc[1]
  166.       db = TIME_SCHEDULE::Noc[2]
  167.       da = TIME_SCHEDULE::Noc[3]
  168.     elsif @time < TIME_SCHEDULE::Night && @time >= TIME_SCHEDULE::Evening
  169.       @time_mode = 3
  170.       dr = TIME_SCHEDULE::EvC[0]
  171.       dg = TIME_SCHEDULE::EvC[1]
  172.       db = TIME_SCHEDULE::EvC[2]
  173.       da = TIME_SCHEDULE::EvC[3]
  174.     elsif @time < TIME_SCHEDULE::MNight or @time >= TIME_SCHEDULE::Night
  175.       @time_mode = 4
  176.       dr = TIME_SCHEDULE::NiC[0]
  177.       dg = TIME_SCHEDULE::NiC[1]
  178.       db = TIME_SCHEDULE::NiC[2]
  179.       da = TIME_SCHEDULE::NiC[3]
  180.     elsif @time < TIME_SCHEDULE::Dawn or @time >= TIME_SCHEDULE::MNight
  181.       @time_mode = 5
  182.       dr = TIME_SCHEDULE::MNC[0]
  183.       dg = TIME_SCHEDULE::MNC[1]
  184.       db = TIME_SCHEDULE::MNC[2]
  185.       da = TIME_SCHEDULE::MNC[3]
  186.     end
  187.     @day_red = dr
  188.     @day_green = dg
  189.     @day_blue = db
  190.     @day_alpha = da
  191.   end
  192. end
  193. class Game_Map
  194.   #--------------------------------------------------------------------------
  195.   # ● フレーム更新
  196.   #     main : インタプリタ更新フラグ
  197.   #--------------------------------------------------------------------------
  198.   alias update_time update
  199.   def update(main = false)
  200.     update_time(main)
  201.     return if TIME_SCHEDULE::SWITCH > 0 && $game_switches[TIME_SCHEDULE::SWITCH] == true
  202.     return if TIME_SCHEDULE::INTPRT == false && @interpreter.running?
  203.     ts_update_base
  204.   end
  205.   def ts_update_base
  206.     $game_party.time += TIME_SCHEDULE::PLUS
  207.     if $game_party.time >= 8640000
  208.       $game_variables[TIME_SCHEDULE::VAR5] += 1 if TIME_SCHEDULE::VAR5 > 0
  209.       $game_party.time = 0
  210.     end
  211.     ts_update
  212.   end
  213.   def ts_update
  214.     time_data = $game_party.time
  215.     if time_data < TIME_SCHEDULE::Morning && time_data >= TIME_SCHEDULE::Dawn
  216.       if $game_party.time_mode != 0
  217.         $game_party.time_mode = 0
  218.       end
  219.     elsif time_data < TIME_SCHEDULE::Noon && time_data >= TIME_SCHEDULE::Morning
  220.       if $game_party.time_mode != 1
  221.         $game_party.time_mode = 1
  222.       end
  223.     elsif time_data < TIME_SCHEDULE::Evening && time_data >= TIME_SCHEDULE::Noon
  224.       if $game_party.time_mode != 2
  225.         $game_party.time_mode = 2
  226.       end
  227.     elsif time_data < TIME_SCHEDULE::Night && time_data >= TIME_SCHEDULE::Evening
  228.       if $game_party.time_mode != 3
  229.         $game_party.time_mode = 3
  230.       end
  231.     elsif time_data < TIME_SCHEDULE::MNight or time_data >= TIME_SCHEDULE::Night
  232.       if $game_party.time_mode != 4
  233.         $game_party.time_mode = 4
  234.       end
  235.     elsif time_data < TIME_SCHEDULE::Dawn or time_data >= TIME_SCHEDULE::MNight
  236.       if $game_party.time_mode != 5
  237.         $game_party.time_mode = 5
  238.       end
  239.     end
  240.     $game_variables[TIME_SCHEDULE::VAR1] = $game_party.time_mode if TIME_SCHEDULE::VAR1 > 0
  241.     $game_variables[TIME_SCHEDULE::VAR2] = $game_party.time / 100 / 60 / 60 if TIME_SCHEDULE::VAR2 > 0
  242.     $game_variables[TIME_SCHEDULE::VAR3] = $game_party.time / 100 / 60 % 60 if TIME_SCHEDULE::VAR3 > 0
  243.     $game_variables[TIME_SCHEDULE::VAR4] = $game_party.time / 100 % 60 if TIME_SCHEDULE::VAR4 > 0
  244.   end
  245. end
  246. class Spriteset_Map
  247.   #--------------------------------------------------------------------------
  248.   # ● ビューポートの作成
  249.   #--------------------------------------------------------------------------
  250.   alias create_viewports_daytime create_viewports
  251.   def create_viewports
  252.     create_viewports_daytime
  253.     create_daytime_viewports
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 時間経過で変化するビューポートの作成
  257.   #--------------------------------------------------------------------------
  258.   def create_daytime_viewports
  259.     @viewport_daytime = Viewport.new
  260.     @viewport_daytime.z = 150
  261.     return if TIME_SCHEDULE::COLOR == false
  262.     @viewport_daytime.color.set($game_party.day_red, $game_party.day_green, $game_party.day_blue, $game_party.day_alpha)
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● ビューポートの解放
  266.   #--------------------------------------------------------------------------
  267.   alias dispose_viewports_daytime dispose_viewports
  268.   def dispose_viewports
  269.     dispose_viewports_daytime
  270.     @viewport_daytime.dispose
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 天候の更新
  274.   #--------------------------------------------------------------------------
  275.   alias update_weather_daytime update_weather
  276.   def update_weather
  277.     update_weather_daytime
  278.     update_daytime
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ● 時間による画面の更新
  282.   #--------------------------------------------------------------------------
  283.   def update_daytime
  284.     return if TIME_SCHEDULE::COLOR == false
  285.     if $data_mapinfos[$game_map.map_id].name.include?(TIME_SCHEDULE::MAP)
  286.       @viewport_daytime.color.set(0, 0, 0, 0)
  287.       $game_party.daytimeview_force_change = true
  288.       return
  289.     end
  290.     dacd = TIME_SCHEDULE::DaC
  291.     mocd = TIME_SCHEDULE::MoC
  292.     nocd = TIME_SCHEDULE::NoC
  293.     evcd = TIME_SCHEDULE::EvC
  294.     nicd = TIME_SCHEDULE::NiC
  295.     mncd = TIME_SCHEDULE::MNC
  296.     spd = TIME_SCHEDULE::SPEED
  297.     case $game_party.time_mode
  298.     when 0
  299.       rdn = dacd[0]
  300.       gdn = dacd[1]
  301.       bdn = dacd[2]
  302.       adn = dacd[3]
  303.     when 1
  304.       rdn = mocd[0]
  305.       gdn = mocd[1]
  306.       bdn = mocd[2]
  307.       adn = mocd[3]
  308.     when 2
  309.       rdn = nocd[0]
  310.       gdn = nocd[1]
  311.       bdn = nocd[2]
  312.       adn = nocd[3]
  313.     when 3
  314.       rdn = evcd[0]
  315.       gdn = evcd[1]
  316.       bdn = evcd[2]
  317.       adn = evcd[3]
  318.     when 4
  319.       rdn = nicd[0]
  320.       gdn = nicd[1]
  321.       bdn = nicd[2]
  322.       adn = nicd[3]
  323.     when 5
  324.       rdn = mncd[0]
  325.       gdn = mncd[1]
  326.       bdn = mncd[2]
  327.       adn = mncd[3]
  328.     end
  329.     if $game_party.daytimeview_force_change == true
  330.       @viewport_daytime.color.set(rdn, gdn, bdn, adn)
  331.       $game_party.daytimeview_force_change = false
  332.     else
  333.       rdo = @viewport_daytime.color.red
  334.       gdo = @viewport_daytime.color.green
  335.       bdo = @viewport_daytime.color.blue
  336.       ado = @viewport_daytime.color.alpha
  337.       if rdo > rdn
  338.         rd = rdo - spd
  339.       elsif rdo < rdn
  340.         rd = rdo + spd
  341.       else
  342.         rd = rdo
  343.       end
  344.       if gdo > gdn
  345.         gd = gdo - spd
  346.       elsif rdo < gdn
  347.         gd = gdo + spd
  348.       else
  349.         gd = gdo
  350.       end
  351.       if bdo > bdn
  352.         bd = bdo - spd
  353.       elsif bdo < bdn
  354.         bd = bdo + spd
  355.       else
  356.         bd = bdo
  357.       end
  358.       if ado > adn
  359.         ad = ado - spd
  360.       elsif rdo < adn
  361.         ad = ado + spd
  362.       else
  363.         ad = ado
  364.       end
  365.       $game_party.day_red = rd
  366.       $game_party.day_green = gd
  367.       $game_party.day_blue = bd
  368.       $game_party.day_alpha = ad
  369.       @viewport_daytime.color.set(rd, gd, bd, ad)
  370.     end
  371.   end
  372. end
  373. class Game_Interpreter
  374.   def time_control(n1,n2,n3,n4)
  375.     return if TIME_SCHEDULE::SWITCH > 0 && $game_switches[TIME_SCHEDULE::SWITCH] == true
  376.     tcd = tcd(n2,n3,n4)
  377.     if n1 == "+"
  378.       data = tcd + $game_party.time
  379.       if data >= 8640000
  380.         data = data - 8640000
  381.         $game_variables[TIME_SCHEDULE::VAR5] += 1 if TIME_SCHEDULE::VAR5 > 0
  382.       end
  383.     elsif n1 == "-"
  384.       data = $game_party.time - tcd
  385.       if 0 > data
  386.         data = data + 8640000
  387.         $game_variables[TIME_SCHEDULE::VAR5] -= 1 if TIME_SCHEDULE::VAR5 > 0
  388.       end
  389.     elsif n1 == "="
  390.       data = tcd
  391.     else
  392.       return
  393.     end
  394.     $game_party.time = data
  395.     $game_map.ts_update
  396.     $game_party.daytimeview_force_change = true
  397.   end
  398.   def tcd(nd1,nd2,nd3)
  399.     data = 0
  400.     data += nd1 * 60 * 60 * 100
  401.     data += nd2 * 60 * 100
  402.     data += nd3 * 100
  403.     return data
  404.   end
  405. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1