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

Project1

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

[已经解决] 游戏时间显示脚本问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2006-2-16
帖子
117
跳转到指定楼层
1
发表于 2011-7-27 11:45:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我想在地图上显示时间,于是我制作了一个脚本

class Window_11 < Window_Base

  def initialize
   super(0, 0, 220,100)
   self.contents = Bitmap.new(width-32, height-32)
   self.contents.font.name = "黑体"   
   self.contents.font.size = 20
   refresh
end

def refresh
   self.contents.clear
   self.contents.font.color = text_color(6)
   self.contents.draw_text(0, 0, 100, 32, "游戏时间:")

   @total_sec = Graphics.frame_count / Graphics.frame_rate
   hour = @total_sec / 60 / 60
   min = @total_sec / 60 % 60
   sec = @total_sec % 60
   text = sprintf("%02d:%02d:%02d", hour, min, sec)
   self.contents.font.color = normal_color
   self.contents.draw_text(100, 0, 120, 32, text)
end
def update
   if Graphics.frame_count / Graphics.frame_rate != @total_sec
     refresh
   end
end
end

接着,我在地图上用事件执行 Window_11.new 一看,发现不能够刷新,而且一会框框就消失了,我想请问怎么制作一个手动控制消失,而且能够刷新的啊?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
154 小时
注册时间
2011-7-9
帖子
423
11
发表于 2011-7-27 16:55:57 | 只看该作者
本帖最后由 灵魂の补给 于 2011-7-27 16:57 编辑
peter神人 发表于 2011-7-27 12:22
第51行       @ss.update if @ss 后面的  if @ss 是什么意思,


Sorry
那个@ss依然存在,需要改为是否释放,找到Scene_Map的刷新画面里把
  1. @ss.update if @ss
复制代码
替换为:
  1. @ss.update unless @ss.disposed?
复制代码
当然,吧bbs_jlweb_tk类替换为
  1. def bbs_jlweb_tk

  2. @ss.dispose unless @ss.disposed?

  3. end
复制代码
就更安全了
New Game:  【QQ堂4.6单机版】(9月新版!【点此】)个人提供快速网盘http://ad.jlweb.tk/upload/ --- 密码:abcdefg
激零工作室孵化中.....网游make中。。招收游戏监督一名,上线时间:5~12 小时 招收脚本员,美工数位。。
本人Q:330639889 验证:zs    ----广:愿意帮我宣传签名的,站内PM
下面的东西是什么?!请进:http://tieba.baidu.com/p/1453289014【2012最新炸弹型ARPG游戏,历时2年间断坚持制作!】
[img=646,262]http://ftp.66rpg.com/WEB_PLUS/attachment/forum/201203/28/1655578kbk8bqkfazk2
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2006-2-16
帖子
117
10
 楼主| 发表于 2011-7-27 12:22:44 | 只看该作者
第51行       @ss.update if @ss 后面的  if @ss 是什么意思,


peter神人于2011-7-27 12:25补充以下内容:
我不是问的这个意思,我的意思是说这个怎么可以控制停掉


peter神人于2011-7-27 12:32补充以下内容:
谢了,解决了


peter神人于2011-7-27 13:06补充以下内容:
刚刚出现BUG ,当我执行$scene.bbs_jlweb_tk时候,出现 我主题那里,self.contents.clear 出错,怎么解决啊

点评

http://bbs.66rpg.com/thread-199977-1-1.html 我在这里发图了  发表于 2011-7-27 17:50
肯定是已经释放窗口,而你又释放一次吧 你把情况说的再仔细些  发表于 2011-7-27 16:51
刚刚出现BUG ,当我执行$scene.bbs_jlweb_tk时候,出现 我主题那里,self.contents.clear 出错,怎么解决啊  发表于 2011-7-27 13:06
- - 把那10分赏给可怜的我吧。。结贴  发表于 2011-7-27 12:52
如果 @aa存在 。。。 - -  发表于 2011-7-27 12:24
在王宫中,张笑忽然站了起来,拔出了夜之哀伤之剑,走向国王-他的父亲,将夜之哀伤之剑刺入了他的身体。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
154 小时
注册时间
2011-7-9
帖子
423
9
发表于 2011-7-27 12:18:12 | 只看该作者
本帖最后由 灵魂の补给 于 2011-7-27 12:23 编辑
peter神人 发表于 2011-7-27 12:09
还是不太清楚,@ss.dispose这个是怎么调用的?


在父类Base窗口里已经定义好了,所以在Scene_Map这里面做手脚
- -我还是帮你写份吧:
说明下,我修改了16行,在那里初始化,光这里还不行
48行里,加入刷新@ss.update
如果要关闭,可以再加个def,外部访问不行的,除非是全局变量$ss = windows_11.new
我加了个def bbs_jlweb_tk ;end
访问$scene.bbs_jlweb_tk
#【只能在地图,其他界面时会自动消失】
如果你有其他关于 Scene_Map
此类得脚本最好把我修改的添加进去,否则以有些被覆盖
  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================

  6. class Scene_Map
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成活动块
  12.     @spriteset = Spriteset_Map.new
  13.     # 生成信息窗口
  14.     @message_window = Window_Message.new
  15.      @ss = Window_11.new
  16.     # 执行过渡
  17.     Graphics.transition
  18.     # 主循环
  19.     loop do
  20.       # 刷新游戏画面
  21.       Graphics.update
  22.       # 刷新输入信息
  23.       Input.update
  24.       # 刷新画面
  25.       update
  26.       # 如果画面切换的话就中断循环
  27.       if $scene != self
  28.         break
  29.       end
  30.     end
  31.     # 准备过渡
  32.     Graphics.freeze
  33.     # 释放活动块
  34.     @spriteset.dispose
  35.     # 释放信息窗口
  36.     @message_window.dispose
  37.     # 标题画面切换中的情况下
  38.     if $scene.is_a?(Scene_Title)
  39.       # 淡入淡出画面
  40.       Graphics.transition
  41.       Graphics.freeze
  42.     end
  43.   end
  44. ####################
  45. ####################
  46. def bbs_jlweb_tk
  47. @ss.dispose
  48. end

  49.   #--------------------------------------------------------------------------
  50.   # ● 刷新画面
  51.   #--------------------------------------------------------------------------
  52.   def update
  53.     # 循环
  54.     loop do
  55.       @ss.update if @ss
  56.       # 按照地图、实例、主角的顺序刷新
  57.       # (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
  58.       #  的机会的重要因素)
  59.       $game_map.update
  60.       $game_system.map_interpreter.update
  61.       $game_player.update
  62.       # 系统 (计时器)、画面刷新
  63.       $game_system.update
  64.       $game_screen.update
  65.       # 如果主角在场所移动中就中断循环
  66.       unless $game_temp.player_transferring
  67.         break
  68.       end
  69.       # 执行场所移动
  70.       transfer_player
  71.       # 处理过渡中的情况下、中断循环
  72.       if $game_temp.transition_processing
  73.         break
  74.       end
  75.     end
  76.     # 刷新活动块
  77.     @spriteset.update
  78.     # 刷新信息窗口
  79.     @message_window.update
  80.     # 游戏结束的情况下
  81.     if $game_temp.gameover
  82.       # 切换的游戏结束画面
  83.       $scene = Scene_Gameover.new
  84.       return
  85.     end
  86.     # 返回标题画面的情况下
  87.     if $game_temp.to_title
  88.       # 切换到标题画面
  89.       $scene = Scene_Title.new
  90.       return
  91.     end
  92.     # 处理过渡中的情况下
  93.     if $game_temp.transition_processing
  94.       # 清除过渡处理中标志
  95.       $game_temp.transition_processing = false
  96.       # 执行过渡
  97.       if $game_temp.transition_name == ""
  98.         Graphics.transition(20)
  99.       else
  100.         Graphics.transition(40, "Graphics/Transitions/" +
  101.           $game_temp.transition_name)
  102.       end
  103.     end
  104.     # 显示信息窗口中的情况下
  105.     if $game_temp.message_window_showing
  106.       return
  107.     end
  108.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  109.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  110.       # 不是在事件执行中或者禁止遇敌中
  111.       unless $game_system.map_interpreter.running? or
  112.              $game_system.encounter_disabled
  113.         # 确定队伍
  114.         n = rand($game_map.encounter_list.size)
  115.         troop_id = $game_map.encounter_list[n]
  116.         # 队伍有效的话
  117.         if $data_troops[troop_id] != nil
  118.           # 设置调用战斗标志
  119.           $game_temp.battle_calling = true
  120.           $game_temp.battle_troop_id = troop_id
  121.           $game_temp.battle_can_escape = true
  122.           $game_temp.battle_can_lose = false
  123.           $game_temp.battle_proc = nil
  124.         end
  125.       end
  126.     end
  127.     # 按下 B 键的情况下
  128.     if Input.trigger?(Input::B)
  129.       # 不是在事件执行中或菜单禁止中
  130.       unless $game_system.map_interpreter.running? or
  131.              $game_system.menu_disabled
  132.         # 设置菜单调用标志以及 SE 演奏
  133.         $game_temp.menu_calling = true
  134.         $game_temp.menu_beep = true
  135.       end
  136.     end
  137.     # 调试模式为 ON 并且按下 F9 键的情况下
  138.     if $DEBUG and Input.press?(Input::F9)
  139.       # 设置调用调试标志
  140.       $game_temp.debug_calling = true
  141.     end
  142.     # 不在主角移动中的情况下
  143.     unless $game_player.moving?
  144.       # 执行各种画面的调用
  145.       if $game_temp.battle_calling
  146.         call_battle
  147.       elsif $game_temp.shop_calling
  148.         call_shop
  149.       elsif $game_temp.name_calling
  150.         call_name
  151.       elsif $game_temp.menu_calling
  152.         call_menu
  153.       elsif $game_temp.save_calling
  154.         call_save
  155.       elsif $game_temp.debug_calling
  156.         call_debug
  157.       end
  158.     end
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 调用战斗
  162.   #--------------------------------------------------------------------------
  163.   def call_battle
  164.     # 清除战斗调用标志
  165.     $game_temp.battle_calling = false
  166.     # 清除菜单调用标志
  167.     $game_temp.menu_calling = false
  168.     $game_temp.menu_beep = false
  169.     # 生成遇敌计数
  170.     $game_player.make_encounter_count
  171.     # 记忆地图 BGM 、停止 BGM
  172.     $game_temp.map_bgm = $game_system.playing_bgm
  173.     $game_system.bgm_stop
  174.     # 演奏战斗开始 SE
  175.     $game_system.se_play($data_system.battle_start_se)
  176.     # 演奏战斗 BGM
  177.     $game_system.bgm_play($game_system.battle_bgm)
  178.     # 矫正主角姿势
  179.     $game_player.straighten
  180.     # 切换到战斗画面
  181.     $scene = Scene_Battle.new
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 调用商店
  185.   #--------------------------------------------------------------------------
  186.   def call_shop
  187.     # 清除商店调用标志
  188.     $game_temp.shop_calling = false
  189.     # 矫正主角姿势
  190.     $game_player.straighten
  191.     # 切换到商店画面
  192.     $scene = Scene_Shop.new
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 调用名称输入
  196.   #--------------------------------------------------------------------------
  197.   def call_name
  198.     # 清除商店调用名称输入标志
  199.     $game_temp.name_calling = false
  200.     # 矫正主角姿势
  201.     $game_player.straighten
  202.     # 切换到名称输入画面
  203.     $scene = Scene_Name.new
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 调用菜单
  207.   #--------------------------------------------------------------------------
  208.   def call_menu
  209.     # 清除商店调用菜单标志
  210.     $game_temp.menu_calling = false
  211.     # 已经设置了菜单 SE 演奏标志的情况下
  212.     if $game_temp.menu_beep
  213.       # 演奏确定 SE
  214.       $game_system.se_play($data_system.decision_se)
  215.       # 清除菜单演奏 SE 标志
  216.       $game_temp.menu_beep = false
  217.     end
  218.     # 矫正主角姿势
  219.     $game_player.straighten
  220.     # 切换到菜单画面
  221.     $scene = Scene_Menu.new
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ● 调用存档
  225.   #--------------------------------------------------------------------------
  226.   def call_save
  227.     # 矫正主角姿势
  228.     $game_player.straighten
  229.     # 切换到存档画面
  230.     $scene = Scene_Save.new
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 调用调试
  234.   #--------------------------------------------------------------------------
  235.   def call_debug
  236.     # 清除商店调用调试标志
  237.     $game_temp.debug_calling = false
  238.     # 演奏确定 SE
  239.     $game_system.se_play($data_system.decision_se)
  240.     # 矫正主角姿势
  241.     $game_player.straighten
  242.     # 切换到调试画面
  243.     $scene = Scene_Debug.new
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 主角的场所移动
  247.   #--------------------------------------------------------------------------
  248.   def transfer_player
  249.     # 清除主角场所移动调试标志
  250.     $game_temp.player_transferring = false
  251.     # 移动目标与现在的地图有差异的情况下
  252.     if $game_map.map_id != $game_temp.player_new_map_id
  253.       # 设置新地图
  254.       $game_map.setup($game_temp.player_new_map_id)
  255.     end
  256.     # 设置主角位置
  257.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  258.     # 设置主角朝向
  259.     case $game_temp.player_new_direction
  260.     when 2  # 下
  261.       $game_player.turn_down
  262.     when 4  # 左
  263.       $game_player.turn_left
  264.     when 6  # 右
  265.       $game_player.turn_right
  266.     when 8  # 上
  267.       $game_player.turn_up
  268.     end
  269.     # 矫正主角姿势
  270.     $game_player.straighten
  271.     # 刷新地图 (执行并行事件)
  272.     $game_map.update
  273.     # 在生成活动块
  274.     @spriteset.dispose
  275.     @spriteset = Spriteset_Map.new
  276.     # 处理过渡中的情况下
  277.     if $game_temp.transition_processing
  278.       # 清除过渡处理中标志
  279.       $game_temp.transition_processing = false
  280.       # 执行过渡
  281.       Graphics.transition(20)
  282.     end
  283.     # 执行地图设置的 BGM、BGS 的自动切换
  284.     $game_map.autoplay
  285.     # 设置画面
  286.     Graphics.frame_reset
  287.     # 刷新输入信息
  288.     Input.update
  289.   end
  290. end
复制代码
New Game:  【QQ堂4.6单机版】(9月新版!【点此】)个人提供快速网盘http://ad.jlweb.tk/upload/ --- 密码:abcdefg
激零工作室孵化中.....网游make中。。招收游戏监督一名,上线时间:5~12 小时 招收脚本员,美工数位。。
本人Q:330639889 验证:zs    ----广:愿意帮我宣传签名的,站内PM
下面的东西是什么?!请进:http://tieba.baidu.com/p/1453289014【2012最新炸弹型ARPG游戏,历时2年间断坚持制作!】
[img=646,262]http://ftp.66rpg.com/WEB_PLUS/attachment/forum/201203/28/1655578kbk8bqkfazk2
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2006-2-16
帖子
117
8
 楼主| 发表于 2011-7-27 12:17:25 | 只看该作者
Wind2010 发表于 2011-7-27 12:10
口胡

LZ的窗口的update指令在判断refresh后最好执行一下super

我弄明白刷新了,现在要的是能够自由控制关闭
在王宫中,张笑忽然站了起来,拔出了夜之哀伤之剑,走向国王-他的父亲,将夜之哀伤之剑刺入了他的身体。
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
7
发表于 2011-7-27 12:10:52 | 只看该作者
本帖最后由 Wind2010 于 2011-7-27 12:11 编辑

口胡

LZ的窗口的update指令在判断refresh后最好执行一下super

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2006-2-16
帖子
117
6
 楼主| 发表于 2011-7-27 12:09:08 | 只看该作者
灵魂の补给 发表于 2011-7-27 12:02
一般你情况下:
在MAP刷新里加入初始化与刷新
初始化:@SS=windows_11.new

还是不太清楚,@ss.dispose这个是怎么调用的?
在王宫中,张笑忽然站了起来,拔出了夜之哀伤之剑,走向国王-他的父亲,将夜之哀伤之剑刺入了他的身体。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
154 小时
注册时间
2011-7-9
帖子
423
5
发表于 2011-7-27 12:02:48 | 只看该作者
本帖最后由 灵魂の补给 于 2011-7-27 12:03 编辑

一般你情况下:
在MAP刷新里加入初始化与刷新
初始化:@SS=windows_11.new
然后总刷新def update 里
@SS.update
---
关闭直接调用@ss.dispose
可以弄个开关,限制继续刷新【- bb否则会错】
New Game:  【QQ堂4.6单机版】(9月新版!【点此】)个人提供快速网盘http://ad.jlweb.tk/upload/ --- 密码:abcdefg
激零工作室孵化中.....网游make中。。招收游戏监督一名,上线时间:5~12 小时 招收脚本员,美工数位。。
本人Q:330639889 验证:zs    ----广:愿意帮我宣传签名的,站内PM
下面的东西是什么?!请进:http://tieba.baidu.com/p/1453289014【2012最新炸弹型ARPG游戏,历时2年间断坚持制作!】
[img=646,262]http://ftp.66rpg.com/WEB_PLUS/attachment/forum/201203/28/1655578kbk8bqkfazk2
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
4
发表于 2011-7-27 11:56:39 | 只看该作者
peter神人 发表于 2011-7-27 11:55
我后面不是写刷新了嘛

你要在Scene_Map的update中写刷新,不然这只会在新建窗口的时候刷新一次

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
38 小时
注册时间
2006-2-16
帖子
117
3
 楼主| 发表于 2011-7-27 11:55:19 | 只看该作者
Wind2010 发表于 2011-7-27 11:48
窗口需要用.refresh刷新,但是频繁刷新会很卡

我后面不是写刷新了嘛
在王宫中,张笑忽然站了起来,拔出了夜之哀伤之剑,走向国王-他的父亲,将夜之哀伤之剑刺入了他的身体。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 09:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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