赞 | 153 |
VIP | 10 |
好人卡 | 39 |
积分 | 93 |
经验 | 146191 |
最后登录 | 2024-5-6 |
在线时间 | 2504 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 9280
- 在线时间
- 2504 小时
- 注册时间
- 2011-5-20
- 帖子
- 15389
|
三途亚梦 发表于 2015-1-26 19:09
想放多少都行,但是放第三个就挡住血条了,这样的效果你想要吗?
可以用滚动显示
你可以试试这个- #————————————————————————————————————————
- # ●Dicon_States By.Lyaci
- #https://rpg.blue/forum.php?mod=viewthread&tid=366991&extra=page%3D3%26filter%3Dtypeid%26typeid%3D368%26typeid%3D368
- #不同的是这个版本可以自定义栏数(即抛弃a版的固定栏数),
- #显示状态CD(状态剩余回合)的功能,默认按A键显示或者隐蔽
- # *状态与BUFF图标交替显示-b版
- # -b版理论比a版效率高,同时可以自定义图标栏数量
- # b版排序规则为默认,即不分固定状态或buff栏
- # Ver:1.0b Date:2014.6.20
- # Ver:1.1b Date:2014.6.20
- # -增加剩余回合数(状态CD)显示
- # Ver:1.2b Date:2014.6.21
- # -增加显示对话框时的开关补丁
- #————————————————————————————————————————
- class Dicon_States < Sprite
- #————————————————————————————————————————
- #●设置
- #————————————————————————————————————————
- TIME_INT = 60 #图标之间的更新帧,建议40~60
- ICON_NUM = 2 #显示图标栏数,建议 2
- ICON_X = 248 #显示的X坐标,建议更改栏数时改变
- ICON_Y = 12 #显示的Y坐标,建议不变
- #————————————————————————————————————————
- CD_TF_KEY = :X #隐蔽/显示 剩余回合数快捷键
- CD_TF_INI = false #初始时隐蔽/显示
- CDTXT_OX = 5 #剩余回合数显示的X坐标(相对)
- CDTXT_OY = 0 #剩余回合数显示的Y坐标(相对)
- CDTXT_NAME = "黑体" #设置字体
- CDTXT_SIZE = 24 #设置字号
- CDTXT_BOLD = true #是否粗体
- CDTXT_COLOR = Color.new(100,255,0,255) #字体颜色
- CDBACK_WH = 24 #背景尺寸
- CDBACK_COLOR = Color.new(0,0,0,164) #背景颜色
- #————————————————————————————————————————
- #初始化
- #————————————————————————————————————————
- def initialize(x,y,time_int)
- super()
- @count = @iconx = @iconw = 0
- @time_int = time_int
- @icon_bitmap = Cache.system("Iconset")
- @cdspr = Sprite.new
- sprite(self,x,y);sprite(@cdspr,x,y)
- cdspr_set ; update
- end
- #————————————————————————————————————————
- #设置精灵
- #————————————————————————————————————————
- def sprite(spr,x,y)
- spr.x,spr.y,spr.z = x,y,1000
- spr.bitmap = Bitmap.new(384,24)
- spr.src_rect = Rect.new(0,0,ICON_NUM*24,24)
- end
- #————————————————————————————————————————
- #设置CD文字
- #————————————————————————————————————————
- def cdspr_set
- @cdspr.visible = CD_TF_INI
- @cdspr.bitmap.font.name = CDTXT_NAME
- @cdspr.bitmap.font.size = CDTXT_SIZE
- @cdspr.bitmap.font.bold = CDTXT_BOLD
- @cdspr.bitmap.font.color = CDTXT_COLOR
- end
- #————————————————————————————————————————
- #设置视口
- #————————————————————————————————————————
- def vie=(v) ; self.viewport = @cdspr.viewport = v ; end
- #————————————————————————————————————————
- #设置图标、CD可视状态
- #————————————————————————————————————————
- def sprvis=(vis) ; self.visible = @cdspr.visible = vis ; end
- #————————————————————————————————————————
- #载入状态、BUFF
- #————————————————————————————————————————
- def actor_states(states,buffs)
- icon_index = states[0] + buffs[0]
- icon_trues = states[-1] + buffs[-1]
- icon_index.size <= ICON_NUM ?
- (icon_index ; src_rect.x = @cdspr.src_rect.x = 0) :
- (icon_index << icon_index[0] ; icon_trues << icon_trues[0])
- bitmap.clear ; @cdspr.bitmap.clear
- icon_index.each_with_index {|icon_id,index|
- icon_rect = Rect.new(icon_id % 16 * 24, icon_id / 16 * 24, 24, 24)
- bitmap.blt(index*24,0,@icon_bitmap,icon_rect)
- icon_cd = icon_trues[index]
- if icon_cd > 0
- @cdspr.bitmap.fill_rect(index*24,0,CDBACK_WH,CDBACK_WH,CDBACK_COLOR)
- @cdspr.bitmap.draw_text(index*24+CDTXT_OX,CDTXT_OY,24,24,icon_cd.truncate)
- end }
- @iconw = icon_index.size * 24
- @icon_true = @iconw > ICON_NUM * 24
- @width_end = @iconw - ICON_NUM * 24
- end
- #————————————————————————————————————————
- #按键更新
- #————————————————————————————————————————
- def key_update
- @cdspr.visible = [email protected] if Input.trigger?(CD_TF_KEY)
- end
- #————————————————————————————————————————
- #全部更新
- #————————————————————————————————————————
- def update
- super ; key_update
- if @count < @time_int ; @count += 1
- else ; @count = 0
- if @icon_true
- if @iconx < @width_end ; @iconx += 24
- else ; @iconx = 0 ; end
- src_rect.x = @cdspr.src_rect.x = @iconx
- end
- end
- end
- #————————————————————————————————————————
- #全部释放
- #————————————————————————————————————————
- def dispose
- if self.bitmap != nil
- self.bitmap.dispose ; @icon_bitmap.dispose
- @cdspr.dispose ; @cdspr.bitmap.dispose
- end
- super
- end
- end
- #————————————————————————————————————————
- # ●Window_BattleStatus
- # *战斗画面中,显示“队伍成员状态”的窗口。
- #————————————————————————————————————————
- class Window_BattleStatus < Window_Selectable
- #————————————————————————————————————————
- #初始化对象
- #————————————————————————————————————————
- def initialize
- super(0, 0, window_width, window_height)
- @self_true = self.class == Window_BattleStatus
- dicon if @self_true ; refresh
- self.openness = 0
- end
- #————————————————————————————————————————
- #建立精灵
- #————————————————————————————————————————
- def dicon
- mb = $game_party.max_battle_members
- x,y = Dicon_States::ICON_X,Dicon_States::ICON_Y
- @dicon = Array.new(mb) {|index|
- Dicon_States.new(x,y+index*24,Dicon_States::TIME_INT)}
- end
- #————————————————————————————————————————
- #绘制项目
- #————————————————————————————————————————
- def draw_item(index)
- actor = $game_party.battle_members[index]
- @dicon[index].actor_states(actor.state_data,actor.buff_data) if @self_true
- draw_basic_area(basic_area_rect(index), actor)
- draw_gauge_area(gauge_area_rect(index), actor)
- end
- #————————————————————————————————————————
- #窗口打开关闭时的处理
- #————————————————————————————————————————
- def close ; super ; @dicon.each {|dicon| dicon.sprvis = false } if open? ; end
- def open ; super ; @dicon.each {|dicon| dicon.sprvis = true } if close? ; end
- #————————————————————————————————————————
- #更新图标
- #————————————————————————————————————————
- def update ; super ; @dicon.each {|dicon| dicon.update} if @self_true ; end
- #————————————————————————————————————————
- #释放图标
- #————————————————————————————————————————
- def dispose ; super ; @dicon.each {|dicon| dicon.dispose} if @self_true ; end
- #————————————————————————————————————————
- #设置视口
- #————————————————————————————————————————
- def viewport=(v) ; super(v) ; @dicon.each {|dicon| dicon.vie = v} ; end
- #————————————————————————————————————————
- #绘制基本区域
- #————————————————————————————————————————
- def draw_basic_area(rect, actor)
- draw_actor_name(actor, rect.x + 0, rect.y, 100)
- end
- end
- #————————————————————————————————————————
- # ●Game_BattlerBase
- #————————————————————————————————————————
- class Game_BattlerBase
- #————————————————————————————————————————
- #状态数据
- #————————————————————————————————————————
- def state_data
- data = [[],[]]
- auto = [-1,1,0]
- states.each {|st| state_index = st.icon_index
- ftm = auto[st.auto_removal_timing]
- if state_index != 0 ; data[0]<<state_index;data[-1]<<@state_turns[st.id]+ftm
- end } ; data
- end
- #————————————————————————————————————————
- #BUFF数据
- #————————————————————————————————————————
- def buff_data
- data = [[],[]]
- @buffs.each_with_index {|lv, i| buff_index = buff_icon_index(lv, i)
- if buff_index != 0 ; data[0]<<buff_index ; data[-1]<<@buff_turns[i]+1
- end } ; data
- end
- end
复制代码 |
评分
-
查看全部评分
|