幻想森林

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

[个人创意] rpgxp传统干支式计时脚本(改进版)

[复制链接]

4

主题

11

帖子

153

积分

③业余

积分
153
发表于 2009-6-24 09:57:46 | 显示全部楼层 |阅读模式
  

这是改进后的传统方式计时脚本。原来的计时方式不变,还是12进制(12帧为一个时辰,12个时辰为一天,12天为一月,12月为一年(这样的计时虽然不合理,但对于游戏来说并不存在)),现在以12年为周期不断循环。并且将原来两个脚本整合为一个。直接删除原脚本中的Window_PlayTime和Window_Steps,在Main前insert本脚本,然后,Scene_Menu中45到48行的内容 (如下)
    # 生成步数窗口
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
73行的 @steps_window.dispose和84行的    @steps_window.update必须删去,否则会出错。如果使用本脚本,这些内容删去后对游戏没有任何影响请放心。其他修改游戏时间和步数的脚本则无法兼容,不公我想使用了本脚本的话,也就用不到其他的同类脚本了。
                         正文如下
#==============================================================================
# ■ Window_PlayTime
#------------------------------------------------------------------------------
#  菜单画面显示年月日的窗口。 ————作者铩羽
#==============================================================================
class Window_PlayTime < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 120, 32, "天元纪年")
    self.contents.draw_text(0, 64, 60, 32, "时辰")
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    @years = @total_sec / 12 / 12 / 12 / 12 % 12
    months = @total_sec / 12 / 12 / 12 % 12
    days = @total_sec / 12 / 12 % 12
    times = @total_sec / 12 % 12
   
    if @years == 0
      year = "子鼠"
    elsif @years == 1
      years = "丑牛"
    elsif @years == 2
      years = "寅虎"
    elsif @years == 3
      year = "卯兔"
    elsif @years == 4
      year = "辰龙"
    elsif @years == 5
      year = "巳蛇"
    elsif @years == 6
      year = "午马"
    elsif @years == 7
      year = "未羊"
    elsif @years == 8
      year = "申猴"
    elsif @years == 9
      year = "酉鸡"
    elsif @years == 10
      year = "戌狗"
    elsif @years == 11
      year = "亥猪"
    end
   
    if months == 0
      month = "正"
    elsif months == 1
      month = "贰"
    elsif months == 2
      month = "叁"
    elsif months == 3
      month = "肆"
    elsif months == 4
      month = "伍"
    elsif months == 5
      month = "陆"
    elsif months == 6
      month = "柒"
    elsif months == 7
      month = "捌"
    elsif months == 8
      month = "玖"
    elsif months == 9
      month == "拾"
    elsif months == 10
      month = "拾壹"
    elsif months == 11
      month = "腊"
    end
   
    if days == 0
      day = "初壹"
    elsif days == 1
      day = "初贰"
    elsif days == 2
      day = "初叁"
    elsif days == 3
      day = "初肆"
    elsif days == 4
      day = "初伍"
    elsif days == 5
      day = "初陆"
    elsif days == 6
      day = "初柒"
    elsif days == 7
      day = "初捌"
    elsif days == 8
      day = "初玖"
    elsif days == 9
      day = "初拾"
    elsif days == 10
      day = "月末"
    elsif days == 11
      day = "月终"
    end
   
    if times == 0
      time = "子"
    elsif times == 1
      time = "丑"
    elsif times == 2
      time = "寅"
    elsif times == 3
      time = "卯"
    elsif times == 4
      time = "辰"
    elsif times == 5
      time = "巳"
    elsif times == 6
      time = "午"
    elsif times == 7
      time = "未"
    elsif times == 8
      time = "申"
    elsif times == 9
      time = "酉"
    elsif times == 10
      time = "戌"
    elsif times == 11
      time = "亥"
    end
    texta = sprintf("%s年%s月%s",year,month,day)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, 120, 32, texta, 2)
    textb = sprintf("%s时",time)
    self.contents.font.color = normal_color
    self.contents.draw_text(30, 64, 100, 32, textb, 2)
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    if @years >= 12
      Graphics.frame_count = 1
    elsif Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end
回复

使用道具 举报

7

主题

84

帖子

769

积分

⑤进阶

积分
769
发表于 2010-1-31 14:29:15 | 显示全部楼层
。。。小小挖坟一下……
1,为啥不用case语句……这代码看了纠结
2,year和years……乱套
哎呀呀呀~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 16:41 , Processed in 0.018854 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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