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

Project1

 找回密码
 注册会员
搜索
查看: 1348|回复: 6
打印 上一主题 下一主题

[已经解决] 大航海昼夜系统如何去掉时间窗口加个图片

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-29
帖子
18
跳转到指定楼层
1
发表于 2009-9-29 16:14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
2
发表于 2009-9-30 05:29:53 | 只看该作者
去掉窗口又加图片的意思,还是希望显示时间,只不过想换个华丽界面吧。
那么在scene_Map里。
@time_window.opacity=0
然后用公共事件显示图片,或者用脚本,语法请自行搜索
血瞳睨世

也来玩一下养小龙吧
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-29
帖子
18
3
 楼主| 发表于 2009-10-1 01:25:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
73 小时
注册时间
2008-7-9
帖子
234
4
发表于 2009-10-1 06:45:06 | 只看该作者
@time_window是时间窗口,你可以用@time_window_pic。位置就跟在@time_window后面好了。dispose的时候正好也一起省得忘记。
血瞳睨世

也来玩一下养小龙吧
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-29
帖子
18
5
 楼主| 发表于 2009-10-1 19:53:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

神之瞳

梦石
0
星屑
60
在线时间
5 小时
注册时间
2009-7-5
帖子
314
6
发表于 2009-10-1 21:09:02 | 只看该作者
本帖最后由 上帝的眼睛 于 2009-10-1 21:11 编辑

提供范例……内附图片一张……
代码如下
  1. =begin

  2. 大航海时代昼夜系统 v0.4

  3. 作者:秀秀

  4. 功能:1.地图显示时间
  5.        2.随时间变化 产生昼夜交替 房间内不会产生变化
  6.        3.自定义进入某地图会消耗时间
  7.       
  8. 用法:设置模块常量 HOUSE 为房间属性(不会产生色相变化)

  9.        设置模块常量 HOUSE_TIME 为消耗时间
  10.        比如 1=>20 代表进入ID为1的地图 消耗时间20分钟
  11.       
  12.        其他设置见脚本开始的其他模块常量
  13.        基本已经注释的非常清楚了

  14.   更新:v0.2
  15.        增加了事件中判断时间         
  16.        可用于某房间(商店)在某时间段才开放
  17.        用法:在事件中插入条件分歧
  18.        在第四页脚本中输入:Time_System.kind_of_time(kind) == true
  19.        kind 是时间段种类 比如kind设置为4 就判断是否为酒吧
  20.        具体看脚本开头的kind_of_time(kind)方法 可以自行添加修改
  21.       
  22.   更新:v0.3
  23.        更新了通过事件脚本功能 Time_System.time = x
  24.        更改时间 x 为时间
  25.        此功能可以实现大航海时代睡觉选择 起床时间
  26.        用法见范例或者截图
  27.       
  28.   更新:v0.4
  29.        新增了一些插件(非大航海用)(菜刀灯笼王的提议)
  30.        1. 时光倒流
  31.        2. 疯狂时钟功能,自定义时间流速。
  32.        3.时间闸门功能,时间流速为之前的几分之一。
  33.        4.时间银行功能,可以把时间存起来,需要的时候提取出来,这个时候时间停止
  34.        5.双重时间系统(精灵使者的提议)
  35.       
  36.        使用方法
  37.        1.时光倒流
  38.          HOUSE_TIME里面  时间改为负数就可以了 比如 1=> -20
  39.        2.疯狂时钟和时间闸门
  40.          Time_System.time_speed=(x) x就是倍数 默认为1
  41.        3.时间银行  
  42.          Time_System.stop_time    设置为时间停止
  43.          Time_System.start_time   设置为时间恢复运行
  44.        4.双重时间系统
  45.          模块常量 HOUSE_TIME2 设置世界2的 世界消耗
  46.          Time_System.change_time_world1  还原世界世界
  47.          Time_System.change_time_world2  改变时间世界
  48. =end     

  49. module Time_System

  50. # 最大时间(分钟)
  51. MAX = 24 * 60

  52. # 初始时间
  53. INIT_TIME = 8 * 60
  54.   
  55. # 窗口信息 x坐标 y坐标 是否在地图上显示
  56. X = 0
  57. Y = 0
  58. VISIBLE = true

  59. # 对应白天 黄昏 夜晚 的色调 自己设置
  60. DAY = Tone.new(0,0,0,0)
  61. EVE = Tone.new(-255,-85,68,0)
  62. DUSK = Tone.new(34,-17,-17,0)

  63. # 天气类型
  64. @@kind = -1

  65. # 真实时间
  66. @@time = 0

  67. # 文本
  68. @@text = ""

  69. # 时间流速(默认1倍速)
  70. @@time_speed = 1

  71. # 时间停止
  72. @@stop = false

  73. #保存双重时间(默认初始时间)
  74. @@time1 = 8 * 60
  75. @@time2 = 8 * 60
  76. @@time_world = 1

  77. #时间世界(用于双重时间系统)
  78. @@time_world = 1

  79. @@proc = Proc.new{ self.start }

  80. # 房间ID的数组(地图) 对应地图ID 不会改变天气色相
  81. HOUSE = [2,3,4,5,6]

  82. # 各个地图ID消耗时间表
  83. # 世界1
  84. HOUSE_TIME = { 1=>20,
  85.                 2=>80,
  86.                 3=>60,
  87.                 4=>80,
  88.                 5=>100,
  89.                 6=>120,
  90.                 }
  91. # 世界2
  92. HOUSE_TIME2 = { 1=>10,
  93.                 2=>20,
  94.                 3=>30,
  95.                 4=>40,
  96.                 5=>50,
  97.                 6=>60,
  98.                 }
  99.                
  100. # 这里设置几种时间段 用于某房间或者商店何时可以进入  
  101. def self.kind_of_time(kind)
  102.    case kind
  103.    when 1 #时间段1 上午8点到晚上8点
  104.      if @@time >= 8*60 and @@time < 20*60
  105.        return true
  106.      end  
  107.    when 2 #时间段2 中午12点到晚上6点
  108.      if @@time >= 12*60 and @@time < 18*60
  109.        return true
  110.      end  
  111.    when 3 #时间段3 晚上六点到晚上12点
  112.      if @@time >= 18*60 and @@time < 24*60
  113.        return true
  114.      end  
  115.    when 4#时间段4 (酒吧分2个间段 0:00-6.00 , 20:00-24:00)
  116.      if @@time >= 0*60 and @@time < 6*60
  117.        return true
  118.      end  
  119.      if @@time >= 20*60 and @@time < 24*60
  120.        return true
  121.      end  
  122.    end
  123. end         
  124.                
  125. def self.start
  126.    $game_system.time_window_need_refresh = true
  127.    self.time
  128.    self.change
  129. end  
  130.                
  131. def self.load
  132.    @@time = $game_system.change_time
  133.    @@time_speed = $game_system.time_speed
  134.    @@stop = $game_system.stop
  135.    @@time1 = $game_system.time1
  136.    @@time2 = $game_system.time2
  137.    @@time_world = $game_system.time_world
  138.    self.init_set_text
  139.    self.change
  140.    $game_system.time_window_need_refresh = true
  141. end

  142. def self.save_time
  143.    $game_system.change_time = @@time
  144.    $game_system.time_speed = @@time_speed
  145.    $game_system.stop = @@stop
  146.    $game_system.time1 = @@time1
  147.    $game_system.time2 = @@time2
  148.    $game_system.time_world = @@time_world
  149. end

  150. def self.start_time
  151.    @@stop = false
  152.    return
  153. end

  154. def self.stop_time
  155.    @@stop = true
  156.    return
  157. end  

  158. def self.stop!
  159.    return @@stop
  160. end  
  161.    
  162. def self.time_speed=(speed)
  163.    return (@@time_speed = speed)
  164. end
  165.    
  166. def self.change_time_world1
  167.    @@time2 = @@time #保存世界2
  168.    @@time = @@time1
  169.    @@time_world = 1
  170.    return
  171. end  

  172. def self.change_time_world2
  173.    @@time1 = @@time #保存世界1
  174.    @@time = @@time2
  175.    @@time_world = 2
  176.    return
  177. end

  178. def self.init_set_text
  179.    @@time = (@@time - MAX) if @@time >= MAX
  180.    hour = @@time / 60
  181.    min = @@time % 60
  182.    @@text = sprintf("%02d:%02d", hour, min)
  183. end  

  184. def self.time=(time)
  185.    @@time = time * 60
  186.    hour = @@time / 60
  187.    min = @@time % 60
  188.    @@text = sprintf("%02d:%02d", hour, min)
  189.    $game_system.time_window_need_refresh = true
  190. end  
  191.    
  192. def self.time
  193.    case @@time_world
  194.     when 1
  195.       time = HOUSE_TIME[$game_map.map_id]
  196.     when 2
  197.       time = HOUSE_TIME2[$game_map.map_id]
  198.    end   
  199.     @@time += (time.to_i * @@time_speed) unless self.stop!
  200.     @@time = (@@time - MAX) if @@time >= MAX
  201.     hour = @@time / 60
  202.     min = @@time % 60
  203.     text = sprintf("%02d:%02d", hour, min)
  204.     case hour
  205.       when 6..15   # 白天
  206.         @@kind = 0
  207.       when 16..20  # 黄昏
  208.         @@kind = 1
  209.       when 21..23  #夜晚
  210.         @@kind = 2
  211.       when 0..5    #夜晚
  212.         @@kind = 3
  213.     end
  214.     @@text = text
  215.     $game_system.time_window_need_refresh = true
  216. end  
  217.   
  218. def self.set_text
  219.    return @@text
  220. end  
  221.   
  222. def self.set_time
  223.    return @@time
  224. end
  225.    
  226. def self.change #改变天气(色相)  
  227.      case @@kind
  228.        when 0
  229.          $game_screen.start_tone_change(DAY,0)
  230.        when 1
  231.          $game_screen.start_tone_change(DUSK,0)
  232.        when 2
  233.          $game_screen.start_tone_change(EVE,0)
  234.        when 3  
  235.          $game_screen.start_tone_change(EVE,0)
  236.      end
  237.      if HOUSE.include?($game_map.map_id)
  238.        $game_screen.start_tone_change(DAY,0)
  239.      end  
  240. end
  241.    
  242. def self.start_trace
  243.    Kernel.trace_var :$game_temp.player_transferring,@@proc
  244. end  

  245. def self.stop_trace
  246.    Kernel.trace_var(:$game_temp.player_transferring,nil)
  247. end  

  248. end  

  249. class Game_System
  250. attr_accessor :change_time
  251. attr_accessor :time_window_need_refresh
  252. attr_accessor :time_speed
  253. attr_accessor :stop
  254. attr_accessor :time1
  255. attr_accessor :time2
  256. attr_accessor :time_world
  257. alias ori_initialize initialize
  258. def initialize
  259.    ori_initialize
  260.    @change_time = Time_System::INIT_TIME
  261.    @time_window_need_refresh = false
  262.    @time_speed = 1
  263.    @stop = false
  264.    @time1 = 8 * 60
  265.    @time2 = 8 * 60
  266.    @time_world = 1
  267. end
  268. end  

  269. class Scene_Map
  270. #--------------------------------------------------------------------------
  271. # ● 主角的场所移动
  272. #--------------------------------------------------------------------------
  273. def transfer_player
  274.    # 清除主角场所移动调试标志
  275.    $game_temp.player_transferring = false
  276.    # 移动目标与现在的地图有差异的情况下
  277.    if $game_map.map_id != $game_temp.player_new_map_id
  278.      # 设置新地图
  279.      $game_map.setup($game_temp.player_new_map_id)
  280.    end
  281.    
  282.    Time_System.start
  283.    
  284.    # 设置主角位置
  285.    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  286.    # 设置主角朝向
  287.    case $game_temp.player_new_direction
  288.    when 2  # 下
  289.      $game_player.turn_down
  290.    when 4  # 左
  291.      $game_player.turn_left
  292.    when 6  # 右
  293.      $game_player.turn_right
  294.    when 8  # 上
  295.      $game_player.turn_up
  296.    end
  297.    # 矫正主角姿势
  298.    $game_player.straighten
  299.    # 刷新地图 (执行并行事件)
  300.    $game_map.update
  301.    # 在生成活动块
  302.    @spriteset.dispose
  303.    @spriteset = Spriteset_Map.new
  304.    # 处理过渡中的情况下
  305.    if $game_temp.transition_processing
  306.      # 清除过渡处理中标志
  307.      $game_temp.transition_processing = false
  308.      # 执行过渡
  309.      Graphics.transition(20)
  310.    end
  311.    # 执行地图设置的 BGM、BGS 的自动切换
  312.    $game_map.autoplay
  313.    # 设置画面
  314.    Graphics.frame_reset
  315.    # 刷新输入信息
  316.    Input.update
  317. end
  318. end

  319. class Game_Map
  320. attr_reader  :map_id
  321. end  

  322. class Scene_Title
  323. alias ori_command_new_game command_new_game
  324. def command_new_game
  325.    ori_command_new_game
  326.    Time_System.load
  327.    
  328. end
  329. end

  330. class Scene_Save < Scene_File
  331. def on_decision(filename)
  332.    # 演奏存档 SE
  333.    $game_system.se_play($data_system.save_se)
  334.    Time_System.save_time
  335.    # 写入存档数据
  336.    file = File.open(filename, "wb")
  337.    write_save_data(file)
  338.    file.close
  339.    # 如果被事件调用
  340.    if $game_temp.save_calling
  341.      # 清除存档调用标志
  342.      $game_temp.save_calling = false
  343.      # 切换到地图画面
  344.      $scene = Scene_Map.new
  345.      return
  346.    end
  347.    # 切换到菜单画面
  348.    $scene = Scene_Menu.new(4)
  349. end
  350. end

  351. class Scene_Load < Scene_File
  352. def on_decision(filename)
  353.    unless FileTest.exist?(filename)
  354.      $game_system.se_play($data_system.buzzer_se)
  355.      return
  356.    end
  357.    $game_system.se_play($data_system.load_se)
  358.    file = File.open(filename, "rb")
  359.    read_save_data(file)
  360.    file.close
  361.    $game_system.bgm_play($game_system.playing_bgm)
  362.    $game_system.bgs_play($game_system.playing_bgs)
  363.    $game_map.update
  364.    Time_System.load
  365.    $scene = Scene_Map.new
  366. end
  367. end

  368. class Scene_Map
  369. alias ori_main main
  370. def main
  371.    @back_com = Sprite.new#修改
  372.    @back_com.bitmap = RPG::Cache.picture("timeback.png")#修改
  373.    @back_com.z=900#修改
  374.    @time_window = Window_Base.new(0,0,100,64)
  375.    @time_window.x = 90#修改坐标
  376.    @time_window.y =10#修改坐标
  377.    @time_window.z =901#修改
  378.    @time_window.opacity = 0#此处修改~
  379.    @time_window.visible = Time_System::VISIBLE
  380.    @time_window.contents = Bitmap.new(64,32)
  381.    $game_system.time_window_need_refresh = true
  382.    ori_main
  383.    @time_window.dispose
  384.    @back_com.dispose#修改
  385. end

  386. alias ori_update update
  387. def update
  388.    if $game_system.time_window_need_refresh
  389.      time_window_refresh
  390.    end
  391.    ori_update
  392. end  

  393. def time_window_refresh
  394.    @time_window.contents.clear
  395.    @time_window.contents.draw_text(0,0,100,32,Time_System.set_text)
  396.    $game_system.time_window_need_refresh = false
  397. end
  398. end
复制代码
@time_window_pic = Sprite.new
@time_window_pic.bitmap = Bitmap.new("Graphics/Pictures/图片")
@time_window_pic.y = 200
@time_window_pic.x = 0
@time_window_pic.dispose

显示不出来的原因很简单,z值太低,地图遮挡住了图片

Project4.rar

199.49 KB, 下载次数: 63


九月三日

  有时我真不理解,怎么有另一个人能够爱她,可以爱她,殊不知我爱她爱得如此真切,如此忘情,如此情意缱倦,除了她我什么也不了解,什么也不知道,什么也没有呀!
——摘自《少年维特之烦恼》

谨以 纪念一段消逝了的感情
ILY ZXY

NOIp什么的最讨厌了!

啊……讨厌,为什么我的网盘全部坏掉了……
zoomshare恢复了,虚惊一场
可恶的skydrive,我XX你的OO,竟把我的帐号封了!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-9-29
帖子
18
7
 楼主| 发表于 2009-10-1 23:15:22 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-4 19:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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