设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 93|回复: 0

[转载发布] Dragon Quest Style Scripts (Battle Scene)

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    9068

    主题

    864

    回帖

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    58857
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    68819

    灌水之王

    发表于 3 天前 | 显示全部楼层 |阅读模式
    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


    • Jamiras843
    Author's Notes (AKA Bug Log)


    • none note as of V1.00.



    本贴来自国际rpgmaker官方论坛作者:jamiras843处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/dragon-quest-style-scripts-battle-scene.15573/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-8-8 07:53 , Processed in 0.103043 second(s), 59 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表