class Game_System attr_accessor :timers # 计时器 attr_accessor :timers_working # 计时器执行中的标志 alias mohuaiyuan2016115_initialize initialize def initialize @timers = 0 @timers_working = false mohuaiyuan2016115_initialize end alias mohuaiyuan2016115_update update def update # 计时器减 1 if @timers_working and @timers > 0 @timers -= 1 end mohuaiyuan2016115_update end end
class Sprite_Timers < Sprite #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super self.bitmap = Bitmap.new(88, 48)#88 self.bitmap.font.name = "方正隶变_GBK"#Arial self.bitmap.font.size = 28 self.x = 460 - self.bitmap.width self.y = 55 self.z = 500 update end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update super # 设置计时器执行中为可见 self.visible = $game_system.timers_working # 如果有必要再次描绘计时器 if $game_system.timers / Graphics.frame_rate != @total_sec # 清除窗口内容 self.bitmap.clear # 计算总计秒数 @total_sec = $game_system.timers / Graphics.frame_rate # 生成计时器显示用字符串 min = @total_sec / 60 sec = @total_sec % 60 text = sprintf("%02d:%02d", min, sec) # 描绘计时器 self.bitmap.font.color.set(255, 255, 255) self.bitmap.draw_text(self.bitmap.rect, text, 1) end end end
#============================================================================== # ■ Spriteset_Battle #------------------------------------------------------------------------------ # 处理战斗画面的活动块的类。本类在 Scene_Battle 类 # 的内部使用。 #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- attr_reader :viewport1 # 敌人方的显示端口 attr_reader :viewport2 # 角色方的显示端口 #-------------------------------------------------------------------------- # ● 初始化变量 #-------------------------------------------------------------------------- def initialize # 生成显示端口 @viewport1 = Viewport.new(0, 0, 640, 480) #改动 @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport4 = Viewport.new(0, 0, 640, 480) @viewport5 = Viewport.new(0, 0, 640, 480)#5人制战斗 @viewport2.z = 101 @viewport3.z = 200 @viewport4.z = 5000 # 生成战斗背景活动块 @battleback_sprite = Sprite.new(@viewport1) @magic_sprite = Sprite.new(@viewport1) #改动 @magics_sprite = Sprite.new(@viewport1) #改动 @lagic_sprite = Sprite.new(@viewport1) #改动 # 生成敌人活动块 @enemy_sprites = [] for enemy in $game_troop.enemies.reverse @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy)) end # 生成敌人活动块 @actor_sprites = [] @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) @actor_sprites.push(Sprite_Battler.new(@viewport2)) # 生成天候 @weather = RPG::Weather.new(@viewport1) # 生成图片活动块 @picture_sprites = [] for i in 51..100 @picture_sprites.push(Sprite_Picture.new(@viewport3, $game_screen.pictures[i])) end # 生成计时器块 @timer_sprite = Sprite_Timer.new ################################ @timers_sprite = Sprite_Timers.new ################################ # 刷新画面 update end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- def dispose # 如果战斗背景位图存在的情况下就释放 if @battleback_sprite.bitmap != nil @battleback_sprite.bitmap.dispose end # 释放战斗背景活动块 @battleback_sprite.dispose @magic_sprite.dispose #改动 @magics_sprite.dispose #改动 @lagic_sprite.dispose #改动 # 释放敌人活动块、角色活动块 for sprite in @enemy_sprites + @actor_sprites sprite.dispose end # 释放天候 @weather.dispose # 释放图片活动块 for sprite in @picture_sprites sprite.dispose end # 释放计时器活动块 @timer_sprite.dispose #################################### @timers_sprite.dispose ################################# # 释放显示端口 @viewport1.dispose @viewport2.dispose @viewport3.dispose @viewport4.dispose @viewport5.dispose end #-------------------------------------------------------------------------- # ● 显示效果中判定 #-------------------------------------------------------------------------- def effect? # 如果是在显示效果中的话就返回 true for sprite in @enemy_sprites + @actor_sprites return true if sprite.effect? end return false end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update # 刷新角色的活动块 (对应角色的替换) @actor_sprites[0].battler = $game_party.actors[0] @actor_sprites[1].battler = $game_party.actors[1] @actor_sprites[2].battler = $game_party.actors[2] @actor_sprites[3].battler = $game_party.actors[3] @actor_sprites[4].battler = $game_party.actors[4]#5人制度战斗 # 战斗背景的文件名与现在情况有差异的情况下 if @battleback_name != $game_temp.battleback_name @battleback_name = $game_temp.battleback_name if @battleback_sprite.bitmap != nil @battleback_sprite.bitmap.dispose end @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name) @battleback_sprite.src_rect.set(0, 0, 640, 480) end # 刷新战斗者的活动块 for sprite in @enemy_sprites + @actor_sprites sprite.update end # 刷新天气图形 @weather.type = $game_screen.weather_type @weather.max = $game_screen.weather_max @weather.update # 刷新图片活动块 for sprite in @picture_sprites sprite.update end # 刷新计时器活动块 @timer_sprite.update #################################### @timers_sprite.update ###################################### # 设置画面的色调与震动位置 @viewport1.tone = $game_screen.tone @viewport1.ox = $game_screen.shake # 设置画面的闪烁色 @viewport4.color = $game_screen.flash_color # 刷新显示端口 @viewport1.update @viewport2.update @viewport4.update end end
QQ截图20161105152901.png (3.49 KB, 下载次数: 7)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |