| 
 
| 赞 | 0 |  
| VIP | 1 |  
| 好人卡 | 10 |  
| 积分 | 1 |  
| 经验 | 14593 |  
| 最后登录 | 2017-6-2 |  
| 在线时间 | 201 小时 |  
 Lv1.梦旅人 
	梦石0 星屑50 在线时间201 小时注册时间2013-1-23帖子270 | 
| 
本帖最后由 love896624434 于 2013-5-29 22:52 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 好吧,事实证明是脚本冲突,因为和好几个脚本冲突,我把物品栏优化脚本删掉了后就正常了。。。抱歉打扰各位了QAQ[code]$脸图战斗 = true
 $imported = {} if $imported.nil?
 module YEA
 module BATTLE
 SKIP_PARTY_COMMAND = true
 BATTLESTATUS_NAME_FONT_SIZE = 20
 BATTLESTATUS_TEXT_FONT_SIZE = 16
 BATTLESTATUS_NO_ACTION_ICON = 185
 BATTLESTATUS_HPGAUGE_Y_PLUS = 11
 BATTLESTATUS_CENTER_FACES   = false
 HELP_TEXT_ALL_FOES        = "全体敌人"
 HELP_TEXT_ONE_RANDOM_FOE  = "单个敌人"
 HELP_TEXT_MANY_RANDOM_FOE = "%d个随机敌人"
 HELP_TEXT_ALL_ALLIES      = "全体队友"
 HELP_TEXT_ALL_DEAD_ALLIES = "全体死亡队友"
 HELP_TEXT_ONE_RANDOM_ALLY = "单个随机队友"
 HELP_TEXT_RANDOM_ALLIES   = "%d个随机队友"
 end
 end
 class Game_Battler
 def can_collapse?
 return false unless dead?
 unless actor?
 return false unless sprite.battler_visible
 array = [:collapse, :boss_collapse, :instant_collapse]
 return false if array.include?(sprite.effect_type)
 end
 return true
 end
 def draw_mp?
 return true
 end
 def draw_tp?
 return $data_system.opt_display_tp
 end
 end
 module Icon
 def self.no_action; return YEA::BATTLE::BATTLESTATUS_NO_ACTION_ICON; end
 end
 class Game_Temp
 attr_accessor :battle_aid
 attr_accessor :evaluating
 end
 class Game_Action
 alias evaluate_item_with_target_abe evaluate_item_with_target
 def evaluate_item_with_target(target)
 $game_temp.evaluating = true
 result = evaluate_item_with_target_abe(target)
 $game_temp.evaluating = false
 return result
 end
 end
 class Game_Actor < Game_Battler
 def draw_mp?
 return true unless draw_tp?
 for skill in skills
 next unless added_skill_types.include?(skill.stype_id)
 return true if skill.mp_cost > 0
 end
 return false
 end
 def draw_tp?
 return false unless $data_system.opt_display_tp
 for skill in skills
 next unless added_skill_types.include?(skill.stype_id)
 return true if skill.tp_cost > 0
 end
 return false
 end
 end
 class Window_BattleStatus < Window_Selectable
 def initialize
 super(0, 0, window_width, window_height)
 self.openness = 0
 @party = $game_party.battle_members.clone
 end
 def col_max; return $game_party.max_battle_members; end
 def battle_members; return $game_party.battle_members; end
 def actor; return battle_members[@index]; end
 def update
 super
 return if @party == $game_party.battle_members
 @party = $game_party.battle_members.clone
 refresh
 end
 def draw_item(index)
 return if index.nil?
 clear_item(index)
 actor = battle_members[index]
 rect = item_rect(index)
 return if actor.nil?
 draw_actor_face(actor, rect.x+2, rect.y+2, actor.alive?)
 draw_actor_name(actor, rect.x, rect.y, rect.width-8)
 draw_actor_action(actor, rect.x, rect.y)
 draw_actor_icons(actor, rect.x, line_height*1, rect.width)
 gx = YEA::BATTLE::BATTLESTATUS_HPGAUGE_Y_PLUS
 contents.font.size = YEA::BATTLE::BATTLESTATUS_TEXT_FONT_SIZE
 draw_actor_hp(actor, rect.x+2, line_height*2+gx, rect.width-4)
 if draw_tp?(actor) && draw_mp?(actor)
 dw = rect.width/2-2
 dw += 1 if $imported["YEA-CoreEngine"] && YEA::CORE::GAUGE_OUTLINE
 draw_actor_tp(actor, rect.x+2, line_height*3, dw)
 dw = rect.width - rect.width/2 - 2
 draw_actor_mp(actor, rect.x+rect.width/2, line_height*3, dw)
 elsif draw_tp?(actor) && !draw_mp?(actor)
 draw_actor_tp(actor, rect.x+2, line_height*3, rect.width-4)
 else
 draw_actor_mp(actor, rect.x+2, line_height*3, rect.width-4)
 end
 end
 def item_rect(index)
 rect = Rect.new
 rect.width = contents.width / $game_party.max_battle_members
 rect.height = contents.height
 rect.x = index * rect.width
 if YEA::BATTLE::BATTLESTATUS_CENTER_FACES
 rect.x += (contents.width - $game_party.members.size * rect.width) / 2
 end
 rect.y = 0
 return rect
 end
 def draw_face(face_name, face_index, dx, dy, enabled = true)
 bitmap = Cache.face(face_name)
 fx = [(96 - item_rect(0).width + 1) / 2, 0].max
 fy = face_index / 4 * 96 + 2
 fw = [item_rect(0).width - 4, 92].min
 rect = Rect.new(fx, fy, fw, 92)
 rect = Rect.new(face_index % 4 * 96 + fx, fy, fw, 92)
 contents.blt(dx, dy, bitmap, rect, enabled ? 255 : translucent_alpha)
 bitmap.dispose
 end
 def draw_actor_name(actor, dx, dy, dw = 112)
 reset_font_settings
 contents.font.size = YEA::BATTLE::BATTLESTATUS_NAME_FONT_SIZE
 change_color(hp_color(actor))
 draw_text(dx+24, dy, dw-24, line_height, actor.name)
 end
 def draw_actor_action(actor, dx, dy)
 draw_icon(action_icon(actor), dx, dy)
 end
 def action_icon(actor)
 return Icon.no_action if actor.current_action.nil?
 return Icon.no_action if actor.current_action.item.nil?
 return actor.current_action.item.icon_index
 end
 def draw_tp?(actor)
 return actor.draw_tp?
 end
 def draw_mp?(actor)
 return actor.draw_mp?
 end
 def draw_current_and_max_values(dx, dy, dw, current, max, color1, color2)
 change_color(color1)
 draw_text(dx, dy, dw, line_height, current.to_s, 2)
 end
 def draw_actor_hp(actor, dx, dy, width = 124)
 draw_gauge(dx, dy, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
 change_color(system_color)
 cy = (Font.default_size - contents.font.size) / 2 + 1
 draw_text(dx+2, dy+cy, 30, line_height, Vocab::hp_a)
 draw_current_and_max_values(dx, dy+cy, width, actor.hp, actor.mhp,
 hp_color(actor), normal_color)
 end
 def draw_actor_mp(actor, dx, dy, width = 124)
 draw_gauge(dx, dy, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
 change_color(system_color)
 cy = (Font.default_size - contents.font.size) / 2 + 1
 draw_text(dx+2, dy+cy, 30, line_height, Vocab::mp_a)
 draw_current_and_max_values(dx, dy+cy, width, actor.mp, actor.mmp,
 mp_color(actor), normal_color)
 end
 def draw_actor_tp(actor, dx, dy, width = 124)
 draw_gauge(dx, dy, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
 change_color(system_color)
 cy = (Font.default_size - contents.font.size) / 2 + 1
 draw_text(dx+2, dy+cy, 30, line_height, Vocab::tp_a)
 change_color(tp_color(actor))
 draw_text(dx + width - 42, dy+cy, 42, line_height, actor.tp.to_i, 2)
 end
 end
 class Window_BattleActor < Window_BattleStatus
 def show
 create_flags
 super
 end
 def create_flags
 set_select_flag(:any)
 select(0)
 return if $game_temp.battle_aid.nil?
 if $game_temp.battle_aid.need_selection?
 select(0)
 set_select_flag(:dead) if $game_temp.battle_aid.for_dead_friend?
 elsif $game_temp.battle_aid.for_user?
 battler = BattleManager.actor
 id = battler.nil? ? 0 : $game_party.battle_members.index(battler)
 select(id)
 set_select_flag(:user)
 elsif $game_temp.battle_aid.for_all?
 select(0)
 set_select_flag(:all)
 set_select_flag(:all_dead) if $game_temp.battle_aid.for_dead_friend?
 elsif $game_temp.battle_aid.for_random?
 select(0)
 set_select_flag(:random) if $game_temp.battle_aid.for_random?
 end
 end
 def set_select_flag(flag)
 @select_flag = flag
 case @select_flag
 when :all, :all_dead, :random
 @cursor_all = true
 else
 @cursor_all = false
 end
 end
 def update_cursor
 if @cursor_all
 cursor_rect.set(0, 0, contents.width, contents.height)
 self.top_row = 0
 elsif @index < 0
 cursor_rect.empty
 else
 ensure_cursor_visible
 cursor_rect.set(item_rect(@index))
 end
 end
 def cursor_movable?
 return false if @select_flag == :user
 return super
 end
 def current_item_enabled?
 return true if $game_temp.battle_aid.nil?
 if $game_temp.battle_aid.need_selection?
 member = $game_party.battle_members[@index]
 return member.dead? if $game_temp.battle_aid.for_dead_friend?
 elsif $game_temp.battle_aid.for_dead_friend?
 for member in $game_party.battle_members
 return true if member.dead?
 end
 return false
 end
 return true
 end
 end
 class Window_BattleStatusAid < Window_BattleStatus
 attr_accessor :status_window
 def initialize
 super
 self.visible = false
 self.openness = 255
 end
 def window_width; return 128; end
 def show
 super
 refresh
 end
 def refresh
 contents.clear
 return if @status_window.nil?
 draw_item(@status_window.index)
 end
 def item_rect(index)
 return Rect.new(0, 0, contents.width, contents.height)
 end
 end
 class Window_BattleEnemy < Window_Selectable
 def initialize(info_viewport)
 super(0, Graphics.height, window_width, fitting_height(1))
 refresh
 self.visible = false
 @info_viewport = info_viewport
 end
 def col_max; return item_max; end
 def show
 create_flags
 super
 end
 def create_flags
 set_select_flag(:any)
 select(0)
 return if $game_temp.battle_aid.nil?
 if $game_temp.battle_aid.need_selection?
 select(0)
 elsif $game_temp.battle_aid.for_all?
 select(0)
 set_select_flag(:all)
 elsif $game_temp.battle_aid.for_random?
 select(0)
 set_select_flag(:random)
 end
 end
 def set_select_flag(flag)
 @select_flag = flag
 case @select_flag
 when :all, :random
 @cursor_all = true
 else
 @cursor_all = false
 end
 end
 def select_all?
 return true if @select_flag == :all
 return true if @select_flag == :random
 return false
 end
 def update_cursor
 if @cursor_all
 cursor_rect.set(0, 0, contents.width, contents.height)
 self.top_row = 0
 elsif @index < 0
 cursor_rect.empty
 else
 ensure_cursor_visible
 cursor_rect.set(item_rect(@index))
 end
 end
 def cursor_movable?
 return false if @select_flag == :user
 return super
 end
 def current_item_enabled?
 return true if $game_temp.battle_aid.nil?
 if $game_temp.battle_aid.need_selection?
 member = $game_party.battle_members[@index]
 return member.dead? if $game_temp.battle_aid.for_dead_friend?
 elsif $game_temp.battle_aid.for_dead_friend?
 for member in $game_party.battle_members
 return true if member.dead?
 end
 return false
 end
 return true
 end
 def enemy; @data[index]; end
 def refresh
 make_item_list
 create_contents
 draw_all_items
 end
 def make_item_list
 @data = $game_troop.alive_members
 @data.sort! { |a,b| a.screen_x <=> b.screen_x }
 end
 def draw_item(index); return; end
 def update
 super
 return unless active
 enemy.sprite_effect_type = :whiten
 return unless select_all?
 for enemy in $game_troop.alive_members
 enemy.sprite_effect_type = :whiten
 end
 end
 end
 class Window_BattleHelp < Window_Help
 attr_accessor :actor_window
 attr_accessor :enemy_window
 def update
 super
 if !self.visible and @text != ""
 @text = ""
 return refresh
 end
 update_battler_name
 end
 def update_battler_name
 return unless @actor_window.active || @enemy_window.active
 if @actor_window.active
 battler = $game_party.battle_members[@actor_window.index]
 elsif @enemy_window.active
 battler = @enemy_window.enemy
 end
 if special_display?
 refresh_special_case(battler)
 else
 refresh_battler_name(battler) if battler_name(battler) != @text
 end
 end
 def battler_name(battler)
 text = battler.name.clone
 return text
 end
 def refresh_battler_name(battler)
 contents.clear
 reset_font_settings
 change_color(normal_color)
 @text = battler_name(battler)
 icons = battler.state_icons + battler.buff_icons
 dy = icons.size <= 0 ? line_height / 2 : 0
 draw_text(0, dy, contents.width, line_height, @text, 1)
 dx = (contents.width - (icons.size * 24)) / 2
 draw_actor_icons(battler, dx, line_height, contents.width)
 end
 def special_display?
 return false if $game_temp.battle_aid.nil?
 return false if $game_temp.battle_aid.for_user?
 return !$game_temp.battle_aid.need_selection?
 end
 def refresh_special_case(battler)
 if $game_temp.battle_aid.for_opponent?
 if $game_temp.battle_aid.for_all?
 text = YEA::BATTLE::HELP_TEXT_ALL_FOES
 else
 case $game_temp.battle_aid.number_of_targets
 when 1
 text = YEA::BATTLE::HELP_TEXT_ONE_RANDOM_FOE
 else
 number = $game_temp.battle_aid.number_of_targets
 text = sprintf(YEA::BATTLE::HELP_TEXT_MANY_RANDOM_FOE, number)
 end
 end
 else
 if $game_temp.battle_aid.for_dead_friend?
 text = YEA::BATTLE::HELP_TEXT_ALL_DEAD_ALLIES
 elsif $game_temp.battle_aid.for_random?
 case $game_temp.battle_aid.number_of_targets
 when 1
 text = YEA::BATTLE::HELP_TEXT_ONE_RANDOM_ALLY
 else
 number = $game_temp.battle_aid.number_of_targets
 text = sprintf(YEA::BATTLE::HELP_TEXT_RANDOM_ALLIES, number)
 end
 else
 text = YEA::BATTLE::HELP_TEXT_ALL_ALLIES
 end
 end
 return if text == @text
 @text = text
 contents.clear
 reset_font_settings
 draw_text(0, 0, contents.width, line_height*2, @text, 1)
 end
 end
 class Window_SkillList < Window_Selectable
 def spacing
 return 8 if $game_party.in_battle
 return super
 end
 end
 class Window_ItemList < Window_Selectable
 def spacing
 return 8 if $game_party.in_battle
 return super
 end
 end
 class Scene_Battle < Scene_Base
 attr_accessor :enemy_window
 attr_accessor :info_viewport
 attr_accessor :spriteset
 attr_accessor :status_window
 attr_accessor :status_aid_window
 attr_accessor :subject
 alias scene_battle_create_all_windows_abe create_all_windows
 def create_all_windows
 scene_battle_create_all_windows_abe
 create_battle_status_aid_window
 set_help_window
 end
 alias scene_battle_create_info_viewport_abe create_info_viewport
 def create_info_viewport
 scene_battle_create_info_viewport_abe
 @status_window.refresh
 end
 def create_battle_status_aid_window
 @status_aid_window = Window_BattleStatusAid.new
 @status_aid_window.status_window = @status_window
 @status_aid_window.x = Graphics.width - @status_aid_window.width
 @status_aid_window.y = Graphics.height - @status_aid_window.height
 end
 def create_help_window
 @help_window = Window_BattleHelp.new
 @help_window.hide
 end
 def set_help_window
 @help_window.actor_window = @actor_window
 @help_window.enemy_window = @enemy_window
 end
 alias scene_battle_create_skill_window_abe create_skill_window
 def create_skill_window
 scene_battle_create_skill_window_abe
 @skill_window.height = @info_viewport.rect.height
 @skill_window.width = Graphics.width - @actor_command_window.width
 @skill_window.y = Graphics.height - @skill_window.height
 end
 alias scene_battle_create_item_window_abe create_item_window
 def create_item_window
 scene_battle_create_item_window_abe
 @item_window.height = @skill_window.height
 @item_window.width = @skill_window.width
 @item_window.y = Graphics.height - @item_window.height
 end
 alias scene_battle_next_command_abe next_command
 def next_command
 @status_window.show
 redraw_current_status
 @actor_command_window.show
 @status_aid_window.hide
 scene_battle_next_command_abe
 end
 alias scene_battle_prior_command_abe prior_command
 def prior_command
 redraw_current_status
 scene_battle_prior_command_abe
 end
 def redraw_current_status
 return if @status_window.index < 0
 @status_window.draw_item(@status_window.index)
 end
 alias scene_battle_command_attack_abe command_attack
 def command_attack
 $game_temp.battle_aid = $data_skills[BattleManager.actor.attack_skill_id]
 scene_battle_command_attack_abe
 end
 alias scene_battle_command_skill_abe command_skill
 def command_skill
 scene_battle_command_skill_abe
 @status_window.hide
 @actor_command_window.hide
 @status_aid_window.show
 end
 alias scene_battle_command_item_abe command_item
 def command_item
 scene_battle_command_item_abe
 @status_window.hide
 @actor_command_window.hide
 @status_aid_window.show
 end
 def on_skill_ok
 @skill = @skill_window.item
 $game_temp.battle_aid = @skill
 BattleManager.actor.input.set_skill(@skill.id)
 BattleManager.actor.last_skill.object = @skill
 if @skill.for_opponent?
 select_enemy_selection
 elsif @skill.for_friend?
 select_actor_selection
 else
 @skill_window.hide
 next_command
 $game_temp.battle_aid = nil
 end
 end
 alias scene_battle_on_skill_cancel_abe on_skill_cancel
 def on_skill_cancel
 scene_battle_on_skill_cancel_abe
 @status_window.show
 @actor_command_window.show
 @status_aid_window.hide
 end
 def on_item_ok
 @item = @item_window.item
 $game_temp.battle_aid = @item
 BattleManager.actor.input.set_item(@item.id)
 if @item.for_opponent?
 select_enemy_selection
 elsif @item.for_friend?
 select_actor_selection
 else
 @item_window.hide
 next_command
 $game_temp.battle_aid = nil
 end
 $game_party.last_item.object = @item
 end
 alias scene_battle_on_item_cancel_abe on_item_cancel
 def on_item_cancel
 scene_battle_on_item_cancel_abe
 @status_window.show
 @actor_command_window.show
 @status_aid_window.hide
 end
 alias scene_battle_select_actor_selection_abe select_actor_selection
 def select_actor_selection
 @status_aid_window.refresh
 scene_battle_select_actor_selection_abe
 @status_window.hide
 @skill_window.hide
 @item_window.hide
 @help_window.show
 end
 alias scene_battle_on_actor_ok_abe on_actor_ok
 def on_actor_ok
 $game_temp.battle_aid = nil
 scene_battle_on_actor_ok_abe
 @status_window.show
 if $imported["YEA-BattleCommandList"] && !@confirm_command_window.nil?
 @actor_command_window.visible = !@confirm_command_window.visible
 else
 @actor_command_window.show
 end
 @status_aid_window.hide
 end
 alias scene_battle_on_actor_cancel_abe on_actor_cancel
 def on_actor_cancel
 BattleManager.actor.input.clear
 @status_aid_window.refresh
 $game_temp.battle_aid = nil
 scene_battle_on_actor_cancel_abe
 case @actor_command_window.current_symbol
 when :skill
 @skill_window.show
 when :item
 @item_window.show
 end
 end
 alias scene_battle_select_enemy_selection_abe select_enemy_selection
 def select_enemy_selection
 @status_aid_window.refresh
 scene_battle_select_enemy_selection_abe
 @help_window.show
 end
 alias scene_battle_on_enemy_ok_abe on_enemy_ok
 def on_enemy_ok
 $game_temp.battle_aid = nil
 scene_battle_on_enemy_ok_abe
 end
 alias scene_battle_on_enemy_cancel_abe on_enemy_cancel
 def on_enemy_cancel
 BattleManager.actor.input.clear
 @status_aid_window.refresh
 $game_temp.battle_aid = nil
 scene_battle_on_enemy_cancel_abe
 if @skill_window.visible || @item_window.visible
 @help_window.show
 else
 @help_window.hide
 end
 end
 def end_battle_conditions?
 return true if $game_party.members.empty?
 return true if $game_party.all_dead?
 return true if $game_troop.all_dead?
 return true if BattleManager.aborting?
 return false
 end
 def refresh_status
 #如果你是程序员,请顺手帮忙优化下这里,谢谢。
 @status_window.refresh
 for i in $game_party.battle_members
 @status_window.draw_item($game_party.battle_members.index(i))
 end
 end
 end
 好吧,事实证明是脚本冲突,因为和好几个脚本冲突,我把物品栏优化脚本删掉了后就正常了。。。抱歉打扰各位了QAQ
 | 
 |