| 赞 | 274 |
| VIP | |
| 好人卡 | |
| 积分 | 496 |
| 经验 | |
| 最后登录 | 2024-6-21 |
| 在线时间 | 1919 小时 |
- 梦石
- 10
- 星屑
- 39550
- 在线时间
- 1919 小时
- 注册时间
- 2010-11-14
- 回帖
- 3214

|
发表于 2020-4-17 14:24:35
|
显示全部楼层
本帖最后由 KB.Driver 于 2020-4-17 14:32 编辑
重写了一遍,新建工程测试通过。
[pre lang="ruby"]module BattleLogObserver
def self.observe(log_window, user, item, targets)
case user
when Game_Actor
observe_actor(log_window, user, item, targets)
end
end
def self.observe_actor(log_window, user, item, targets)
case item
when RPG::Skill
observe_actor_skill(log_window, user, item, targets)
end
end
def self.observe_actor_skill(log_window, user, item, targets)
case item.id
when 1
text = sprintf("尚余药水:%s瓶", $game_party.item_number($data_items[1]))
else return
end
log_window.display_observe_text(text)
end
end
class Scene_Battle
alias invoke_item_for_special_log invoke_item
def invoke_item(target, item)
invoke_item_for_special_log(target, item)
BattleLogObserver.observe(@log_window, @subject, item, target)
end
end
class Window_BattleLog
#--------------------------------------------------------------------------
# ● 删除一行文字
#--------------------------------------------------------------------------
def back_one
@last_pops ||= []
@last_pops << @lines.pop
refresh
end
#--------------------------------------------------------------------------
# ● 返回指定行
#--------------------------------------------------------------------------
def back_to(line_number)
@last_pops ||= []
@last_pops << @lines.pop while @lines.size > line_number
refresh
end
#--------------------------------------------------------------------------
# ● 清除
#--------------------------------------------------------------------------
alias clear_for_clearing_last_pop clear
def clear
clear_for_clearing_last_pop
@last_pops && @last_pops.clear
end
def display_observe_text(text)
@last_pops ||= []
@last_pops.reverse_each {|old_text| add_text(old_text) }
add_text(text)
wait
@last_pops.size.times { back_one }
back_one
end
end[/pre] |
评分
-
查看全部评分
|