幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2374|回复: 10

[转帖]昼夜交替脚本

[复制链接]

15

主题

172

帖子

1815

积分

⑥精研

ㄟ(▔︹▔ㄟ)

积分
1815
QQ
发表于 2005-1-29 22:50:31 | 显示全部楼层 |阅读模式
这个不是原创的,只是更改了部分由KGC工作组制作的脚本.某些地方有BUG,不过没有太大的影响.

的确是有些地方的注解错了,现在改过来了

$game_special_elements = {}
$imported = {}
$data_states = load_data("Data/States.rxdata")
$data_system = load_data("Data/System.rxdata")
$imported["DayNight"] = true
class Game_Screen
  # 昼夜更换方式
  #  0:时间流逝  1:行走步数  2:现实时间(有一定误差)
  DAYNIGHT_METHOD = 0
  # 昼夜的名称(好象没有什么实际的影响)
  DAYNIGHT_NAME = ["昼", "黄昏", "夜", "清晨"]

  # 昼夜的色调(如果对色调不太明白的话就不要更改)
  DAYNIGHT_TONE = [Tone.new(0, 0, 0),
    Tone.new(-32, -96, -96),
    Tone.new(-128, -128, -32),
    Tone.new(-48, -48, -16)]

  # 第昼夜交替的时间更改(这里指的是往下一个状态所经过的时间,例如:昼→黄昏)
  # 当昼夜交替方式为步数的时候,每次更换昼夜状态需要的步数
  # 战斗中的更换时间(为战斗外昼夜交替速度的10%)
  # 现实时间的话,往下面状态转换的时间 (24小时方式)
  DAYNIGHT_TIME = [30, 10, 25, 10]

  # DAYNIGHT_TIME = [16, 20, 6, 10]
  # ↑现实时间使用时的范例。试用的时候解除注解(删掉前面的#号)
end

#------------------------------传说中de分界线------------------------------

#--------------------------------------------------------------------------
# ● 现在的状态
#--------------------------------------------------------------------------
def now_daynight
  return $game_system.daynight_phase
end
def now_daynight_name
  return DAYNIGHT_NAME[now_daynight]
end
#--------------------------------------------------------------------------
# ● 昼夜手动更换
#     phase    : 更换之后的状态INDEX
#     duration : 更换时间 (框)   (省略时:40)
#--------------------------------------------------------------------------
def change_daynight(phase, duration = 40)
  # 计数初期化
  $game_system.daynight_count = 0
  # 相位更新
  $game_system.daynight_phase = phase
  # 手动更换有效
  $manual_daynight_change = duration
end

#------------------------------传说中de分界线------------------------------

#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  是经营系统相关的数据的组。 也进行BGM等等的管理。 这个组的实例参照$game_system
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_accessor :daynight_count           # 昼夜判定用计数
  attr_accessor :daynight_phase           # 现在的状态
  attr_accessor :daynight_change          # 进行昼夜变更的开关(或者标记)
  attr_accessor :daynight_change_battle   # 战斗中进行昼夜变更的开关
  #--------------------------------------------------------------------------
  # ● 客观初期化
  #--------------------------------------------------------------------------
  alias initialize_KGC_DayNight initialize
  def initialize
    # 实行原来的处理
    initialize_KGC_DayNight

    @daynight_count = 0
    @daynight_phase = 0
    @daynight_change = true
    @daynight_change_battle = true
  end
end

#------------------------------传说中de分界线------------------------------
#==============================================================================
# ■ Game_Screen
#------------------------------------------------------------------------------
#在保持与变更色调和闪光等等、画面全体有关的处理的数据的组。 这组里的实例参照$game_screen
#==============================================================================

class Game_Screen
  #--------------------------------------------------------------------------
  # ● 客观初期化
  #--------------------------------------------------------------------------
  alias initialize_KGC_DayNight initialize
  def initialize
    # 实行原来的处理
    initialize_KGC_DayNight

    # 暂且(暂停?)现在的状态设定
    @tone = DAYNIGHT_TONE[$game_system.daynight_phase].clone
    # 移动判定用座标
    @x = 0
    @y = 0
    @frame_count = Graphics.frame_count
  end
  alias update_KGC_DayNight update
  def update
    # 实行原来的处理
    update_KGC_DayNight
    # 昼夜更换判定
    if (!$game_temp.in_battle && $game_system.daynight_change) ||
        ($game_temp.in_battle && $game_system.daynight_change &&
        $game_system.daynight_change_battle)
      case DAYNIGHT_METHOD
      when 0  # 时间判定
        inc_count = Graphics.frame_count - @frame_count
        if $game_temp.in_battle
          inc_count /= 10.0
          $game_system.daynight_count += inc_count
        else
          $game_system.daynight_count += inc_count
        end
        # 计数还原
        @frame_count = Graphics.frame_count
        count = $game_system.daynight_count / Graphics.frame_rate
        if count >= DAYNIGHT_TIME[$game_system.daynight_phase]
          $game_system.daynight_count = 0
          $game_system.daynight_phase += 1
          if $game_system.daynight_phase >= DAYNIGHT_TONE.size
            $game_system.daynight_phase = 0
          end
          start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], 40)
        end
      when 1  # 步数判定
        if @x != $game_player.x || @y != $game_player.y
          @x = $game_player.x
          @y = $game_player.y
          $game_system.daynight_count += 1
          count = $game_system.daynight_count
          if count >= DAYNIGHT_TIME[$game_system.daynight_phase]
            $game_system.daynight_count = 0
            $game_system.daynight_phase += 1
            if $game_system.daynight_phase >= DAYNIGHT_TONE.size
              $game_system.daynight_phase = 0
            end
            start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], 40)
          end
        end
      when 2  # 现实时间
        time = Time.now
        time1 = DAYNIGHT_TIME[$game_system.daynight_phase]
        time2 = DAYNIGHT_TIME[$game_system.daynight_phase - 1]
        if time2 != nil && time2 > time1
          change = time.hour < time2 && time.hour >= time1
        else
          change = time.hour >= time1
        end
        if change
          $game_system.daynight_count = 0
          $game_system.daynight_phase += 1
          if $game_system.daynight_phase >= DAYNIGHT_TONE.size
            $game_system.daynight_phase = 0
          end
          start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], 40)
        end
      end
    end
    if $manual_daynight_change != nil
      start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], $manual_daynight_change)
      $manual_daynight_change = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 错误的状态(0, 0, 0)返还
  #     duration : 更换时间 (框)   (省略时:40)
  #--------------------------------------------------------------------------
  def daynight_default(duration = 40)
    start_tone_change(Tone.new(0, 0, 0), duration)
  end
  #--------------------------------------------------------------------------
  # ● 适用现在的状态
  #     duration : 更换时间 (框)   (省略时:40)
  #--------------------------------------------------------------------------
  def daynight_apply(duration = 40)
    start_tone_change(DAYNIGHT_TONE[$game_system.daynight_phase], duration)
  end
end

[此贴子已经被作者于2005-1-30 19:10:44编辑过]
ㄟ(▔︹▔ㄟ)~~~ 飘啊飘啊飘...... 飘过来...... 飘过去...... 又飘过来...... 又飘过去...... 飘走......
回复

使用道具 举报

512 该用户已被删除
发表于 2005-1-30 09:38:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

1

主题

9

帖子

313

积分

④见习

积分
313
发表于 2005-1-30 09:45:14 | 显示全部楼层
总觉得时间过得特别快呀,一下就中午一下就晚上的。。。
不过在战斗时背景也会跟着变色真是    COOL呢
回复 支持 反对

使用道具 举报

512 该用户已被删除
发表于 2005-1-30 15:21:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

15

主题

172

帖子

1815

积分

⑥精研

ㄟ(▔︹▔ㄟ)

积分
1815
QQ
 楼主| 发表于 2005-1-30 19:21:54 | 显示全部楼层
这个脚本的缺陷就是晚上和白天除了颜色外没有什么地方是不同的
ㄟ(▔︹▔ㄟ)~~~ 飘啊飘啊飘...... 飘过来...... 飘过去...... 又飘过来...... 又飘过去...... 飘走......
回复 支持 反对

使用道具 举报

1

主题

9

帖子

313

积分

④见习

积分
313
发表于 2005-1-30 22:40:47 | 显示全部楼层
可以设置什么时间什么店开门呀~
回复 支持 反对

使用道具 举报

2

主题

19

帖子

1481

积分

⑥精研

积分
1481
发表于 2005-2-3 09:59:20 | 显示全部楼层
有什么bug?...
回复 支持 反对

使用道具 举报

512 该用户已被删除
发表于 2005-2-3 10:08:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

carol3 该用户已被删除
发表于 2005-2-3 13:05:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

15

主题

172

帖子

1815

积分

⑥精研

ㄟ(▔︹▔ㄟ)

积分
1815
QQ
 楼主| 发表于 2005-2-3 14:33:14 | 显示全部楼层
柳柳帮忙改一下黄昏的色调.现在这个真的有点可怕
ㄟ(▔︹▔ㄟ)~~~ 飘啊飘啊飘...... 飘过来...... 飘过去...... 又飘过来...... 又飘过去...... 飘走......
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-19 07:18 , Processed in 0.012516 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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