累计送礼: 0 个 累计收礼: 1 个 TA的每日心情 开心 2026-7-12 04:10
签到天数: 209 天
连续签到: 2 天
[LV.7]常住居民III
管理员
VIP
7
卡币
58857
OK点
16
推广点
0
同能卷
50
积分 68819
DQ Style Battle
Jamiras843
Introduction
This script slightly alters the battle screen to make it similar to the DQ series. The battle system is pretty simplistic but incompatible with a lot of other scripts; I don't know why, I'm not good enough to figure it out.[/SIZE]
Features
V1.00
Dragon Quest VIII style battle
Limited options to have list style Status or block style
Face graphics optional
Level Up option available for sound.
Screenshots
[url=http://s1109.photobucket.com/user/jamiras843/media/Script%20Example%20Shots/battle_zpsd4993253.png.html][/url]
How to Use
Plug and play in the Materials section above main
Script
#============================================================================# [VXAce] Dragon Quest Battle V1.00 (Finished)#----------------------------------------------------------------------------# By Jamiras843## Features: # V1.00# * Dragon Quest VIII style battle # * Limited options to have list style Status or block style# * Face graphics optional# * Level Up option available for sound.#============================================================================$imported = {} if $imported.nil?$imported["Dragon Quest Battle"] = true module Jami_DQ_Battle #======================================================================== # Script options #------------------------------------------------------------------------ # Here you edit some simple aspects of the Battle System # #======================================================================== SHOW_FACE = true # Shows actor face in menu HUD_HIDE = true #Hides Battle status during combat if true LVL_UP = true #Play level up sounde effect LVL_UP_SND = "Level_Up" #Name of sound effect end #end module Jami_DQ_Battle #============================================================================ # WARNING: Do not edit below unless you know what you are doing. This script# is rather sloppy but it does its job. #============================================================================#==============================================================================# ** Game_Actor#------------------------------------------------------------------------------# This class handles actors. It's used within the Game_Actors class# ($game_actors) and referenced by the Game_Party class ($game_party).#============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Show Level Up Message # new_skills : Array of newly learned skills #-------------------------------------------------------------------------- def display_level_up(new_skills) Audio.me_play("Audio/ME/" + Jami_DQ_Battle::LVL_UP_SND) $game_message.new_page $game_message.add(sprintf(Vocab::LevelUp, @name, Vocab::level, @level)) new_skills.each do |skill| $game_message.add(sprintf(Vocab:
btainSkill, skill.name)) end endend#==============================================================================# ** Window_Base#------------------------------------------------------------------------------# This is a super class of all windows within the game.#============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Close Window #-------------------------------------------------------------------------- def close @closing = true @opening = false self endend #class Window_Base #==============================================================================# ** Window_Help#------------------------------------------------------------------------------# This window shows skill and item explanations along with actor status.#============================================================================== class Window_Help < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize(line_number = 2) super(0, 0, Graphics.width, fitting_height(line_number)) endend #==============================================================================# ** Window_BattleItem#------------------------------------------------------------------------------# This window is for selecting items to use in the battle window.#============================================================================== class Window_BattleItem < Window_ItemList #-------------------------------------------------------------------------- # * Object Initialization # info_viewport : Viewport for displaying information #-------------------------------------------------------------------------- def initialize(help_window, info_viewport) y = help_window.height super(0, y, Graphics.width, 416) self.visible = false @help_window = help_window @info_viewport = info_viewport endend#==============================================================================# ** Window_BattleSkill#------------------------------------------------------------------------------# This window is for selecting skills to use in the battle window.#============================================================================== class Window_BattleSkill < Window_SkillList #-------------------------------------------------------------------------- # * Object Initialization # info_viewport : Viewport for displaying information #-------------------------------------------------------------------------- def initialize(help_window, info_viewport) y = help_window.height super(0, y, Graphics.width, 416) self.visible = false @help_window = help_window @info_viewport = info_viewport endend#==============================================================================# ** Window_BattleActor#------------------------------------------------------------------------------# This window is for selecting an actor's action target on the battle screen.#============================================================================== class Window_BattleActor < Window_BattleStatus #-------------------------------------------------------------------------- # * Object Initialization # info_viewport : Viewport for displaying information #-------------------------------------------------------------------------- def initialize(info_viewport) super() self.y = 416 - 120 self.visible = false self.openness = 255 @info_viewport = info_viewport @info_viewport2 = info_viewport endend #============================================================================# ** Actor Window #============================================================================class Window_DQ_BattleStatus < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize if $game_party.members.size < 4 super(100, 0, 110 * $game_party.members.size,120) else super(100, 0, 110 * 4,120) end create_contents @actor1 = $game_party.members[0] @actor2 = $game_party.members[1] @actor3 = $game_party.members[2] @actor4 = $game_party.members[3] refresh self.openness = 0 end #-------------------------------------------------------------------------- # * Draw Item #-------------------------------------------------------------------------- def draw_item(index) actor = $game_party.battle_members[index] end #-------------------------------------------------------------------------- # * Get Number of Lines to Show #-------------------------------------------------------------------------- def visible_line_number return 1 end #-------------------------------------------------------------------------- # * Get Digit Count #-------------------------------------------------------------------------- def col_max return 4 end #---------------------------------------------------- # * Refresh #---------------------------------------------------- def refresh contents.clear draw_window_content draw_horiz_line (line_height * 1) end #---------------------------------------------------- # * Draw Window Contents #---------------------------------------------------- def draw_window_content # Face if Jami_DQ_Battle::SHOW_FACE == true draw_face(@actor1.face_name, @actor1.face_index, 0, 0, enabled = false) if $game_party.members.size > 1 draw_face(@actor2.face_name, @actor2.face_index, 110, 0, enable = false) end # > 1 if $game_party.members.size > 2 draw_face(@actor3.face_name, @actor3.face_index, 220, 0, enable = false) end # > 2 if $game_party.members.size > 3 draw_face(@actor4.face_name, @actor4.face_index, 330, 0, enable = false) end # > 3 end # if face # Actor Name draw_actor_name(@actor1, 0, 0) if $game_party.members.size > 1 draw_actor_name(@actor2, 110, 0) end # > 1 if $game_party.members.size > 2 draw_actor_name(@actor3, 220, 0) end # > 2 if $game_party.members.size > 3 draw_actor_name(@actor4, 330, 0) end # > 3 # Actor HP draw_actor_hp(@actor1, 0, 24, 80) if $game_party.members.size > 1 draw_actor_hp(@actor2, 110, 24, 80) end # > 1 if $game_party.members.size > 2 draw_actor_hp(@actor3, 220, 24, 80) end # > 2 if $game_party.members.size > 3 draw_actor_hp(@actor4, 330, 24, 80) end # > 3 # Actor MP draw_actor_mp(@actor1, 0, 44, 80) if $game_party.members.size > 1 draw_actor_mp(@actor2, 110, 44, 80) end # > 1 if $game_party.members.size > 2 draw_actor_mp(@actor3, 220, 44, 80) end # > 2 if $game_party.members.size > 3 draw_actor_mp(@actor4, 330, 44, 80) end # > 3 # Actor LV draw_actor_level(@actor1, 0, 64) if $game_party.members.size > 1 draw_actor_level(@actor2, 110, 64) end # > 1 if $game_party.members.size > 2 draw_actor_level(@actor3, 220, 64) end # > 2 if $game_party.members.size > 3 draw_actor_level(@actor4, 330, 64) end # > 3 draw_actor_icons(@actor1, 60, 0) if $game_party.members.size > 1 draw_actor_icons(@actor2, 170, 0) end # > 1 if $game_party.members.size > 2 draw_actor_icons(@actor3, 280, 0) end # > 2 if $game_party.members.size > 3 draw_actor_icons(@actor4, 400, 0) end # > 3 end #end draw_window_contentend #==============================================================================# ** Window_BattleEnemy#------------------------------------------------------------------------------# Window for selecting the enemy who is the action target on the battle# screen.#============================================================================== class Window_BattleEnemy < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization # info_viewport : Viewport for displaying information #-------------------------------------------------------------------------- def initialize(info_viewport) super(200, 296, 344, fitting_height(4)) refresh self.visible = false endend #class Window_BattleEnemy #==============================================================================# ** Window_BattleLog#------------------------------------------------------------------------------# Window edited to be more like DQVIII#============================================================================== class Window_BattleLog < Window_Selectable #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 296, window_width, window_height) self.z = 200 self.hide self.opacity = 255 @lines = [] @num_wait = 0 create_back_bitmap create_back_sprite refresh end #-------------------------------------------------------------------------- # * Free #-------------------------------------------------------------------------- def dispose super self.close dispose_back_bitmap dispose_back_sprite end #-------------------------------------------------------------------------- # * Get Window Width #-------------------------------------------------------------------------- def window_width Graphics.width end #-------------------------------------------------------------------------- # * Get Window Height #-------------------------------------------------------------------------- def window_height fitting_height(max_line_number) end #-------------------------------------------------------------------------- # * Get Maximum Number of Lines #-------------------------------------------------------------------------- def max_line_number return 4 end #-------------------------------------------------------------------------- # * Clear #-------------------------------------------------------------------------- def clear self.hide @num_wait = 0 @lines.clear refresh end #-------------------------------------------------------------------------- # * Add Text #-------------------------------------------------------------------------- def add_text(text) self.show @lines.push(text) refresh end #-------------------------------------------------------------------------- # * Get Background Opacity #-------------------------------------------------------------------------- def back_opacity return 0 end end #Window_Battlelog#==============================================================================# ** Window_ActorCommand#------------------------------------------------------------------------------# This window is for selecting an actor's action on the battle screen.#============================================================================== class Window_ActorCommand < Window_Command #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0) self.openness = 0 deactivate @actor = nil end #-------------------------------------------------------------------------- # * Get Window Width #-------------------------------------------------------------------------- def window_width return 200 end #-------------------------------------------------------------------------- # * Get Number of Lines to Show #-------------------------------------------------------------------------- def visible_line_number return 4 end #-------------------------------------------------------------------------- # * Get Digit Count #-------------------------------------------------------------------------- def col_max return 2 endend#==============================================================================# ** Scene_Battle#------------------------------------------------------------------------------# This class performs battle screen processing.#============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # * Start Processing #-------------------------------------------------------------------------- def start super create_spriteset create_all_windows BattleManager.method_wait_for_message = method
wait_for_message) @game_party = $game_party.members end #-------------------------------------------------------------------------- # * Update Frame (Basic) #-------------------------------------------------------------------------- def update_basic super $game_timer.update $game_troop.update @spriteset.update update_message_open end #-------------------------------------------------------------------------- # * Create All Windows #-------------------------------------------------------------------------- def create_all_windows create_message_window create_log_window create_DQ_status_window create_info_viewport create_party_command_window create_actor_command_window create_help_window create_skill_window create_item_window create_actor_window create_enemy_window end #-------------------------------------------------------------------------- # * Create Message Window #-------------------------------------------------------------------------- def create_message_window @message_window = Window_Message.new end #-------------------------------------------------------------------------- # * Create DQ Status Window #-------------------------------------------------------------------------- def create_DQ_status_window @DQ_status_window = Window_DQ_BattleStatus.new @DQ_status_window.x = 128 end #-------------------------------------------------------------------------- # * Create Log Window #-------------------------------------------------------------------------- def create_log_window @log_window = Window_BattleLog.new @log_window.method_wait = method
wait) @log_window.method_wait_for_effect = method
wait_for_effect) end #-------------------------------------------------------------------------- # * Create Information Display Viewport #-------------------------------------------------------------------------- def create_info_viewport @info_viewport = Viewport.new @info_viewport.rect.y = 0 @info_viewport.rect.height = Graphics.height - @DQ_status_window.height @info_viewport.z = 100 @info_viewport.ox = 544 - 104 * 4 @DQ_status_window.viewport = @info_viewport end #-------------------------------------------------------------------------- # * Create Party Commands Window #-------------------------------------------------------------------------- def create_party_command_window @DQ_status_window.show @party_command_window = Window_PartyCommand.new @party_command_window.set_handler
fight, method
command_fight)) @party_command_window.set_handler
escape, method
command_escape)) @party_command_window.x = 0 @party_command_window.y = 296 @party_command_window.unselect end #-------------------------------------------------------------------------- # * Create Actor Commands Window #-------------------------------------------------------------------------- def create_actor_command_window @actor_command_window = Window_ActorCommand.new @actor_command_window.set_handler
attack, method
command_attack)) @actor_command_window.set_handler
skill, method
command_skill)) @actor_command_window.set_handler
guard, method
command_guard)) @actor_command_window.set_handler
item, method
command_item)) @actor_command_window.set_handler
cancel, method
prior_command)) @actor_command_window.x = 0 @actor_command_window.y = 296 end #-------------------------------------------------------------------------- # * Create Help Window #-------------------------------------------------------------------------- def create_help_window @help_window = Window_Help.new @help_window.visible = false end #-------------------------------------------------------------------------- # * Create Enemy Window #-------------------------------------------------------------------------- def create_enemy_window @enemy_window = Window_BattleEnemy.new(@help_window) @enemy_window.index = 0 @enemy_window.set_handler
ok, method
on_enemy_ok)) @enemy_window.set_handler
cancel, method
on_enemy_cancel)) end #-------------------------------------------------------------------------- # * Start Enemy Selection #-------------------------------------------------------------------------- def select_enemy_selection @enemy_window.refresh @enemy_window.show.activate @enemy_window.index = 0 end #-------------------------------------------------------------------------- # * Create Skill Window #-------------------------------------------------------------------------- def create_skill_window @skill_window = Window_BattleSkill.new(@help_window, @info_viewport) @skill_window.set_handler
ok, method
on_skill_ok)) @skill_window.set_handler
cancel, method
on_skill_cancel)) end #-------------------------------------------------------------------------- # * Create Item Window #-------------------------------------------------------------------------- def create_item_window @item_window = Window_BattleItem.new(@help_window, @info_viewport) @item_window.set_handler
ok, method
on_item_ok)) @item_window.set_handler
cancel, method
on_item_cancel)) end #-------------------------------------------------------------------------- # * Update Status Window Information #-------------------------------------------------------------------------- def refresh_status @DQ_status_window.refresh end #-------------------------------------------------------------------------- # * Start Party Command Selection #-------------------------------------------------------------------------- def start_party_command_selection unless scene_changing? refresh_status @DQ_status_window.open if BattleManager.input_start @actor_command_window.close @party_command_window.setup else @party_command_window.deactivate turn_start end end end #-------------------------------------------------------------------------- # * Start Actor Command Selection #-------------------------------------------------------------------------- def start_actor_command_selection @party_command_window.close @actor_command_window.setup(BattleManager.actor) end #-------------------------------------------------------------------------- # * Update Processing for Opening Message Window # Set openness to 0 until the status window and so on are finished closing. #-------------------------------------------------------------------------- def update_message_open if $game_message.busy? && !@DQ_status_window.close? @message_window.openness = 0 @DQ_status_window.close @party_command_window.close @actor_command_window.close end end #-------------------------------------------------------------------------- # * Start Turn #-------------------------------------------------------------------------- def turn_start @party_command_window.close @actor_command_window.close @subject = nil BattleManager.turn_start if Jami_DQ_Battle::HUD_HIDE == true @info_viewport.rect.height = 60 end #if HUDE_HIDE @log_window.clear end #-------------------------------------------------------------------------- # * End Turn #-------------------------------------------------------------------------- def turn_end all_battle_members.each do |battler| battler.on_turn_end refresh_status if Jami_DQ_Battle::HUD_HIDE == true @info_viewport.rect.height = @DQ_status_window.height end @log_window.display_auto_affected_status(battler) @log_window.wait_and_clear end BattleManager.turn_end process_event start_party_command_selection end #-------------------------------------------------------------------------- # * Battle Action Processing #-------------------------------------------------------------------------- def process_action return if scene_changing? if !@subject || !@subject.current_action @subject = BattleManager.next_subject end return turn_end unless @subject if @subject.current_action @subject.current_action.prepare if @subject.current_action.valid? @DQ_status_window.open execute_action end @subject.remove_current_action end process_action_end unless @subject.current_action end end # end Scene_battle
FAQ
None as of yet
Credit and Thanks
Author's Notes (AKA Bug Log)
本贴来自国际rpgmaker官方论坛作者:jamiras843处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/dragon-quest-style-scripts-battle-scene.15573/
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x