じ☆ve冰风 发表于 2026-7-6 20:15:44

Three Actor Menu

Three Actor Menu 1.0.0

by Todd (or DoctorTodd on RMRK)

Introduction

A menu that is modified to work as if you are only using three actors.

Features

Original design

No configuration required

Screenshots

http://desmond.image....png&res=medium

How to Use

Paste above main

Demo

I don't think it's really neccessary.

Script

Spoiler#===============================================================================#

# DT's Three actor menu

# Author: DoctorTodd

# Date (02/19/2012)

# Type: (Menu)

# Version: (1.0.0)

# Level: (Simple)

# Email: BeaconGames2011@gmail.com

#

#===============================================================================

#

# Description: A menu that is modified to work as if you are only using three

# actors.

#

# Credits: Me (DoctorTodd), Sykval for location window.

#

#===============================================================================

#

# Instructions

# Paste above main.

#

#===============================================================================

#

# This script requires no editing.

#

#===============================================================================

class Scene_Menu < Scene_Base

#--------------------------------------------------------------------------

# * Object Initialization

#       menu_index : command cursor's initial position

#--------------------------------------------------------------------------

def initialize(menu_index = 0)

        @menu_index = menu_index

end

#--------------------------------------------------------------------------

# * Start processing

#--------------------------------------------------------------------------

def start

        super

        create_menu_background

        create_command_window

        @gold_window = Window_Gold.new(0, 360)

        @status_window = Window_MenuStatus.new(0, 55)

        @win_loc = Scene_Menu::Window_location.new(272, 360)

        @title = Window_MenuTitle.new(0, 0)

end

#--------------------------------------------------------------------------

# * Termination Processing

#--------------------------------------------------------------------------

def terminate

        super

        dispose_menu_background

        @command_window.dispose

        @gold_window.dispose

        @status_window.dispose

        @win_loc.dispose

        @title.dispose

end

#--------------------------------------------------------------------------

# * Frame Update

#--------------------------------------------------------------------------

def update

        super

        update_menu_background

        @command_window.update

        @gold_window.update

        @status_window.update

        if @command_window.active

        update_command_selection

        elsif @status_window.active

          update_actor_selection

        end

end

#--------------------------------------------------------------------------

# * Create Command Window

#--------------------------------------------------------------------------

def create_command_window

        s1 = Vocab::item

        s2 = Vocab::skill

        s3 = Vocab::equip

        s4 = Vocab::status

        s5 = Vocab::save

        s6 = Vocab::game_end

        @command_window = Window_Command.new(165, )

        @command_window.index = @menu_index

        @command_window.x = 381

        @command_window.y = 55

        if $game_party.members.size == 0                  # If number of party members is 0

          @command_window.draw_item(0, false)       # Disable item

          @command_window.draw_item(1, false)       # Disable skill

          @command_window.draw_item(2, false)       # Disable equipment

          @command_window.draw_item(3, false)       # Disable status

        end

        if $game_system.save_disabled                       # If save is forbidden

          @command_window.draw_item(4, false)       # Disable save

        end

end

#--------------------------------------------------------------------------

# * Update Command Selection

#--------------------------------------------------------------------------

def update_command_selection

        if Input.trigger?(Input::


          Sound.play_cancel

          $scene = Scene_Map.new

        elsif Input.trigger?(Input::C)

          if $game_party.members.size == 0 and @command_window.index < 4

                Sound.play_buzzer

                return

          elsif $game_system.save_disabled and @command_window.index == 4

                Sound.play_buzzer

                return

          end

          Sound.play_decision

          case @command_window.index

          when 0          # Item

                $scene = Scene_Item.new

          when 1,2,3# Skill, equipment, status

                start_actor_selection

          when 4          # Save

                $scene = Scene_File.new(true, false, false)

          when 5          # End Game

                $scene = Scene_End.new

          end

        end

end

#--------------------------------------------------------------------------

# * Start Actor Selection

#--------------------------------------------------------------------------

def start_actor_selection

        @command_window.active = false

        @status_window.active = true

        if $game_party.last_actor_index < @status_window.item_max

          @status_window.index = $game_party.last_actor_index

        else

          @status_window.index = 0

        end

end

#--------------------------------------------------------------------------

# * End Actor Selection

#--------------------------------------------------------------------------

def end_actor_selection

        @command_window.active = true

        @status_window.active = false

        @status_window.index = -1

end

#--------------------------------------------------------------------------

# * Update Actor Selection

#--------------------------------------------------------------------------

def update_actor_selection

        if Input.trigger?(Input::


          Sound.play_cancel

          end_actor_selection

        elsif Input.trigger?(Input::C)

          $game_party.last_actor_index = @status_window.index

          Sound.play_decision

          case @command_window.index

          when 1# skill

                $scene = Scene_Skill.new(@status_window.index)

          when 2# equipment

                $scene = Scene_Equip.new(@status_window.index)

          when 3# status

                $scene = Scene_Status.new(@status_window.index)

          end

        end

end

end

#==============================================================================

# ** Window_MenuStatus

#------------------------------------------------------------------------------

#This window displays party member status on the menu screen.

#==============================================================================

class Window_MenuStatus < Window_Selectable

#--------------------------------------------------------------------------

# * Object Initialization

#       x : window X coordinate

#       y : window Y coordinate

#--------------------------------------------------------------------------

def initialize(x, y)

        super(x, y, 384, 305)

        refresh

       self.active = false

        self.index = -1

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

        self.contents.clear

        @item_max = 3

        for actor in $game_party.members

          draw_actor_face(actor, 2, actor.index * 96 + 2, 92)

          x = 104

          y = actor.index * 96 + WLH / 2

          draw_actor_name(actor, x, y)

          draw_actor_class(actor, x + 120, y)

          draw_actor_level(actor, x, y + WLH * 1)

          draw_actor_state(actor, x, y + WLH * 2)

          draw_actor_hp(actor, x + 120, y + WLH * 1)

          draw_actor_mp(actor, x + 120, y + WLH * 2)

        end

end

#--------------------------------------------------------------------------

# * Update cursor

#--------------------------------------------------------------------------

def update_cursor

        if @index < 0                           # No cursor

          self.cursor_rect.empty

        elsif @index < @item_max        # Normal

          self.cursor_rect.set(0, @index * 96, contents.width, 96)

        elsif @index >= 100               # Self

          self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)

        else                                                # All

          self.cursor_rect.set(0, 0, contents.width, @item_max * 96)

        end

end

end

#==============================================================================

# ** Window_Gold

#------------------------------------------------------------------------------

#This window displays the amount of gold.

#==============================================================================

class Window_Gold < Window_Base

#--------------------------------------------------------------------------

# * Object Initialization

#       x : window X coordinate

#       y : window Y coordinate

#--------------------------------------------------------------------------

def initialize(x, y)

        super(x, y, 272, WLH + 32)

        refresh

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

        self.contents.clear

        draw_currency_value($game_party.gold, 4, 0, 230)

end

end

#==============================================================================

# ** Window_Location

#------------------------------------------------------------------------------

#This class shows the current map name.

#==============================================================================

class Window_location < Window_Base

#--------------------------------------------------------------------------

# * Object Initialization

#--------------------------------------------------------------------------

def initialize(x, y)

        super(x, y, 272, WLH + 32)

        self.contents = Bitmap.new(width - 32, height - 32)

        refresh

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

        self.contents.clear

        $maps = load_data("Data/MapInfos.rvdata")

        @map_id = $game_map.map_id

        @currmap = $maps[@map_id].name

        self.contents.font.color = system_color

        self.contents.draw_text(0, -4, 128, 35, "Location:")

        self.contents.font.color = normal_color

        self.contents.draw_text(0, -4, 230, 35, @currmap, 1)

end

end

#==============================================================================

# ** Window_MenuTitle

#------------------------------------------------------------------------------

#This window is almost pointless, it just draws a window saying Main Menu.

#==============================================================================

class Window_MenuTitle < Window_Base

#--------------------------------------------------------------------------

# * Object Initialization

#       x : window X coordinate

#       y : window Y coordinate

#--------------------------------------------------------------------------

def initialize(x, y)

        super(x, y, 544, WLH + 32)

        refresh

end

#--------------------------------------------------------------------------

# * Refresh

#--------------------------------------------------------------------------

def refresh

        self.contents.clear

        self.contents.font.color = system_color

        self.contents.draw_text(0, -4, 128, 35, "Main Menu")

end

end



                Code:        






FAQ

None right now.

Credit and Thanks

- Todd

- Sykval for location window

Author's Notes

Free for non-commercial and commercial games. You must credit me! If you use this in a commercial game I expect a free copy.


本贴来自国际rpgmaker官方论坛作者:Todd处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/three-actor-menu.179/
页: [1]
查看完整版本: Three Actor Menu