Requesting a Script that displays a value based on an integer

deathsia

Pegisister
Veteran
Joined
Feb 26, 2014
Messages
648
Reaction score
55
First Language
English
Primarily Uses
Yanfly equipment engine

Yami's Equipment Learning Script

Now while this request sounds like something extremely simple...It actully most likely is.

Or its not and I'm asking for a WHOLE LOT MORE than i thought...

Okay, so to start this off I'm going to provide a visual example:

16-21062011_082538.png

Okay so, you see how in this image, it displays the spell and the % to completion.

What I'm asking for is a script that grabs the values that Yami's Equipment Learning Script for the spells the character is currently learning and displayed either in it's own scene or as an added value next to the spells name in the skills window where spells and abilities are displayed.

Yami's equipment script already does this but he coded in a failsafe to detect if Yanfly's equipment manager script was installed or not and if it was, it would hide itself to prevent conflicting between scripts. Smart. :)

I'm attempting to make my own addon for the equipment learning script that displays these values but considering my knowledge is limited, I doubt I'll have any success.

EDIT: I found what "I think" is the part of the script that draws the values. I'll put it here for reference though chances are I'm so far off the mark of what's exactly needed that this will be useless but oh well..

Code:
#==============================================================================# ¡ Window_EquipLearning#==============================================================================class Window_EquipLearning < Window_Selectable    #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize(x, y, width, height)    super(x, y, width, height)    self.opacity = 0  end    #--------------------------------------------------------------------------  # ap_gauge_color1  #--------------------------------------------------------------------------  def ap_gauge_color1    text_color(YES::EQUIPMENT_LEARNING::COLOR_GAUGE[:color1])  end    #--------------------------------------------------------------------------  # ap_gauge_color2  #--------------------------------------------------------------------------  def ap_gauge_color2    text_color(YES::EQUIPMENT_LEARNING::COLOR_GAUGE[:color2])  end    #--------------------------------------------------------------------------  # item_max  #--------------------------------------------------------------------------  def item_max    @data.nil? ? 1 : @data.size  end    #--------------------------------------------------------------------------  # current_item_enabled?  #--------------------------------------------------------------------------  def current_item_enabled?    false  end    #--------------------------------------------------------------------------  # enable?  #--------------------------------------------------------------------------  def enable?(skill)    true  end    #--------------------------------------------------------------------------  # equip=  #--------------------------------------------------------------------------  def equip=(equip)    contents.clear    @equip = equip    return unless @equip    @data = @equip.el_skills.collect { |i| $data_skills[i] }    refresh  end    #--------------------------------------------------------------------------  # actor=  #--------------------------------------------------------------------------  def actor=(actor)    @actor = actor  end    #--------------------------------------------------------------------------  # item  #--------------------------------------------------------------------------  def item    @data.nil? ? nil : @data[index]  end    #--------------------------------------------------------------------------  # draw_item  #--------------------------------------------------------------------------  def draw_item(index)    skill = @data[index]    if skill      rect = item_rect(index)      rect.width -= 4      draw_ap(skill, rect.x + 2, rect.y, rect.width, enable?(skill))      draw_item_name(skill, rect.x, rect.y, enable?(skill))    end  end    #--------------------------------------------------------------------------  # draw_ap  #--------------------------------------------------------------------------  def draw_ap(item, x, y, width, enable = true)    if @actor      draw_gauge(x, y, width - 4, @actor.per_elp(item.id),                  ap_gauge_color1, ap_gauge_color2)      draw_current_and_max_values(x, y, width - 4, @actor.cur_elp(item.id),                                   @actor.req_elp(item.id), normal_color, normal_color)    else      draw_gauge(x, y, width - 4, 0,                  ap_gauge_color1, ap_gauge_color2)      draw_current_and_max_values(x, y, width - 4, 0,                                   item.el_require, normal_color, normal_color)    end  end      #--------------------------------------------------------------------------  # update_help  #--------------------------------------------------------------------------  def update_help    @help_window.set_item(item)  end    #--------------------------------------------------------------------------  # activate  #--------------------------------------------------------------------------  def activate    self.index = 0    super  end  end # Window_EquipLearning
 
Last edited by a moderator:

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
You should post a link to all scripts involved... it might even be easier to edit them than to make a new scene...
 

deathsia

Pegisister
Veteran
Joined
Feb 26, 2014
Messages
648
Reaction score
55
First Language
English
Primarily Uses
You should post a link to all scripts involved... it might even be easier to edit them than to make a new scene...
WHOOPS! In my mists of fiddling with the script in rpg maker and making this post i spaced that! adding now!

EDIT: added both
 
Last edited by a moderator:

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,682
Reaction score
3,003
First Language
Tagalog
Primarily Uses
RMVXA
I'm pretty sure that previously I was able to make it such that if you press a button on Yanfly's equipment menu, it toggles the skill learning window... I'll try to find if the project still exists in my computer.

I found it, it involved me editing both of them actually...

Equip Learning

#==============================================================================# # ¥ Yami Engine Symphony - Equipment Learning# -- Last Updated: 2012.12.21# -- Level: Easy# -- Requires: n/a# #==============================================================================$imported = {} if $imported.nil?$imported["YES-EquipmentLearning"] = true#==============================================================================# ¥ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2012.12.21 - Add compatible method for YEA - Ace Equip Engine.# 2012.12.09 - Fixed: Victory bugs.# - Fixed: Major crash with more than one equipment.# 2012.12.08 - Finished Script.# 2012.12.05 - Started Script.# #==============================================================================# ¥ Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script provides a feature which allows actors to learn skills through# their equipments by earning Ability Point (AP).##==============================================================================# ¥ Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To install this script, open up your script editor and copy/paste this script# to an open slot below ¥ Materials/‘fÞ but above ¥ Main. Remember to save.## -----------------------------------------------------------------------------# Skill Notetags - These notetags go in the skills notebox in the database.# -----------------------------------------------------------------------------# <el require: x># Changes requiring Ability Point (AP) to learn skill to x.## -----------------------------------------------------------------------------# Enemy Notetags - These notetags go in the enemy notebox in the database.# -----------------------------------------------------------------------------# <el gain: x># Changes gaining Ability Point (AP) from killing enemy to x.## -----------------------------------------------------------------------------# Actor Notetags - These notetags go in the actor notebox in the database.# -----------------------------------------------------------------------------# <el rate: x%># Changes Ability Point (AP) gaining rate to x percent.## -----------------------------------------------------------------------------# Class Notetags - These notetags go in the class notebox in the database.# -----------------------------------------------------------------------------# <el rate: x%># Changes Ability Point (AP) gaining rate to x percent.## -----------------------------------------------------------------------------# Weapon Notetags - These notetags go in the weapon notebox in the database.# -----------------------------------------------------------------------------# <el skill: x># Adds skill id x to weapon's learning skills pool.## -----------------------------------------------------------------------------# Armor Notetags - These notetags go in the armor notebox in the database.# -----------------------------------------------------------------------------# <el skill: x># Adds skill id x to armor's learning skills pool.## -----------------------------------------------------------------------------# Script Calls - These commands are used with script calls.# -----------------------------------------------------------------------------# $game_actors[x].el_gain(y)# This will cause actor x to gain y amount of AP.##==============================================================================# ¥ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjustments.# #==============================================================================#==============================================================================# ¡ Configuration#==============================================================================module YES module EQUIPMENT_LEARNING #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - General AP Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This adjusts the way AP appears visually in your game. AP is the kind of # point need to learn skill from Equipments. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ICON = 0 # Icon index used to represent AP. VOCAB = "AP" # What AP will be called in your game. # Below options are the Settings for Learning Window. LEARN_TITLE = "Available Skills" SHOW_GAUGE = true COLOR_GAUGE = { # Start. :color1 => 9, :color2 => 1, } # End. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Scenes Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This adjusts the way Learning Skills appears in your game. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ENABLE_WINDOW = true # Enable Learning Window in Scene Equip. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Default AP Gain Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # The following constants adjust how much AP is earned by default through # enemy kills, leveling up, and performing actions. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ENEMY_KILL = 5 # AP earned for the whole party. LEVEL_UP = 0 # AP earned when leveling up! #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Default AP Required Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # The following constants adjust how much AP is required by default to learn # skills from equipments. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- REQUIRE_AP = 100 # AP required for learning skill. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Victory Message - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This adjusts the victory message shown for the default battle system and # the Yanfly Engine Ace - Victory Aftermath script (if used together). #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- VICTORY_MESSAGE = "%s has earned %s %s!" VICTORY_LEARN = "%s has learned new abilities!" # Below options are compatible settings for YEA - Victory Aftermath VICTORY_AFTERMATH = "+%s%s" VICTORY_AFTERMATH_QUOTES = { # Start. :el_learn => [ # Occurs when actor has learnt skills from Equipments. '"I have mastered some skills from equipments!"', '"Yeah! New skills!"', ],# Do not remove this. } # End. endend#==============================================================================# ¥ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#==============================================================================#==============================================================================# ¡ YEA - Victory Aftermath Compatible Area.#==============================================================================module YEA module VICTORY_AFTERMATH if $imported["YEA-VictoryAftermath"] VICTORY_QUOTES.merge!(YES::EQUIPMENT_LEARNING::VICTORY_AFTERMATH_QUOTES) end endend#==============================================================================# ¡ Regular Expression#==============================================================================module REGEXP module EQUIPMENT_LEARNING AP_RATE = /<(?:EL_RATE|el rate):[ ]*(\d+)(?:[%“])*>/i AP_GAIN = /<(?:EL_GAIN|el gain):[ ]*(\d+)>/i TEACH_SKILL = /<(?:EL_SKILL|el skill):[ ]*(\d+)>/i TEACH_REQ = /<(?:EL_REQUIRE|el require):[ ]*(\d+)>/i EL_QUOTE_ON = /<(?:EL_QUOTES|el quote|el quotes)>/i EL_QUOTE_OFF = /<\/(?:EL_QUOTES|el quote|el quotes)>/i end # EQUIPMENT_LEARNINGend # REGEXP#==============================================================================# ¡ BattleManager#==============================================================================module BattleManager unless $imported["YEA-VictoryAftermath"] #-------------------------------------------------------------------------- # alias method: display_exp #-------------------------------------------------------------------------- class<< self; alias yes_equip_learning_display_exp display_exp; end def self.display_exp yes_equip_learning_display_exp if $game_troop.elp_total > 0 text = "" $game_party.all_members.each { |actor| s = YES::EQUIPMENT_LEARNING::VICTORY_MESSAGE name = actor.name amount = ($game_troop.elp_total * actor.elr / 100).round vocab = YES::EQUIPMENT_LEARNING::VOCAB text += "\n" if text != "" text += sprintf(s, name, amount.to_s, vocab) } $game_message.add('\.' + text) end end #-------------------------------------------------------------------------- # alias method: gain_exp #-------------------------------------------------------------------------- class<< self; alias yes_equip_learning_gain_exp gain_exp; end def self.gain_exp yes_equip_learning_gain_exp $game_party.all_members.each { |actor| result = actor.el_gain($game_troop.elp_total) if result $game_message.new_page $game_message.add(sprintf(YES::EQUIPMENT_LEARNING::VICTORY_LEARN, actor.name)) result.uniq.each do |skill| $game_message.add(sprintf(Vocab::obtainSkill, skill.name)) end end } wait_for_message end else #-------------------------------------------------------------------------- # alias method: gain_exp #-------------------------------------------------------------------------- class<< self; alias yes_equip_learning_gain_exp gain_exp; end def self.gain_exp @temp = {} $game_party.all_members.each { |actor| @temp[actor.object_id] = Marshal.load(Marshal.dump(actor)) } yes_equip_learning_gain_exp gain_el end #-------------------------------------------------------------------------- # new method: gain_el #-------------------------------------------------------------------------- def self.gain_el $game_party.all_members.each { |actor| temp_actor = @temp[actor.object_id] actor.el_gain($game_troop.elp_total) next if actor.skills == temp_actor.skills SceneManager.scene.show_victory_el_learn(actor, temp_actor) set_victory_text(actor, :el_learn) wait_for_message } end end end # BattleManager#==============================================================================# ¡ DataManager#==============================================================================module DataManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class <<self; alias load_database_equipment_learning load_database; end def self.load_database load_database_equipment_learning initialize_equipment_learning end #-------------------------------------------------------------------------- # new method: initialize_equipment_learning #-------------------------------------------------------------------------- def self.initialize_equipment_learning groups = [$data_actors, $data_classes, $data_weapons, $data_armors, $data_skills, $data_enemies, $data_items] groups.each { |group| group.each { |obj| next if obj.nil? obj.initialize_equipment_learning } } end end # DataManager#==============================================================================# ¡ RPG::BaseItem#==============================================================================class RPG::BaseItem #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :el_skills attr_accessor :el_rate attr_accessor :el_gain attr_accessor :el_require attr_accessor :el_quotes #-------------------------------------------------------------------------- # new method: initialize_equipment_learning #-------------------------------------------------------------------------- def initialize_equipment_learning @el_quotes = [""] @el_skills = [] @el_gain = self.is_a?(RPG::Item) ? 0 : YES::EQUIPMENT_LEARNING::ENEMY_KILL @el_require = YES::EQUIPMENT_LEARNING::REQUIRE_AP self.note.split(/[\r\n]+/).each { |line| case line when REGEXP::EQUIPMENT_LEARNING::AP_RATE @el_rate = $1.to_i when REGEXP::EQUIPMENT_LEARNING::AP_GAIN @el_gain = $1.to_i when REGEXP::EQUIPMENT_LEARNING::TEACH_SKILL @el_skills.push($1.to_i) when REGEXP::EQUIPMENT_LEARNING::TEACH_REQ @el_require = $1.to_i end } if $imported["YEA-VictoryAftermath"] self.note.split(/[\r\n]+/).each { |line| case line when REGEXP::EQUIPMENT_LEARNING::EL_QUOTE_ON @victory_quote_type = :el_quote when REGEXP::EQUIPMENT_LEARNING::EL_QUOTE_OFF @victory_quote_type = nil #--- when YEA::REGEXP::BASEITEM::NEW_QUOTE case @victory_quote_type when nil; next when :el_quote; @el_quotes.push("") end #--- else case @victory_quote_type when nil; next when :el_quote; @el_quotes[@el_quote.size-1] += line.to_s end end } return unless self.is_a?(RPG::Class) quotes = YEA::VICTORY_AFTERMATH::VICTORY_QUOTES @el_quotes = quotes[:el_learn].clone if @el_quotes == [""] end end end # RPG::BaseItem#==============================================================================# ¡ Game_Actor#==============================================================================class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # alias method: setup #-------------------------------------------------------------------------- alias yes_equip_learning_setup setup def setup(actor_id) yes_equip_learning_setup(actor_id) init_equip_learning end #-------------------------------------------------------------------------- # new method: init_equip_learning #-------------------------------------------------------------------------- def init_equip_learning @equip_learning ||= {} end #-------------------------------------------------------------------------- # new method: el_skills #-------------------------------------------------------------------------- def el_skills result = [] self.equips.each { |e| next if e.nil? e.el_skills.inject(result) { |r, i| r.push(i) } } result.compact.uniq end #-------------------------------------------------------------------------- # new method: elr #-------------------------------------------------------------------------- def elr [self.class.el_rate, self.actor.el_rate, 100].compact[0].to_f end #-------------------------------------------------------------------------- # new method: req_elp #-------------------------------------------------------------------------- def req_elp(skill_id) return 0 unless $data_skills[skill_id] $data_skills[skill_id].el_require end #-------------------------------------------------------------------------- # new method: cur_elp #-------------------------------------------------------------------------- def cur_elp(skill_id) return 0 unless $data_skills[skill_id] if skill_learn?($data_skills[skill_id]) r = req_elp(skill_id) else r = @equip_learning.has_key?(skill_id) ? @equip_learning[skill_id] : 0 end return r end #-------------------------------------------------------------------------- # new method: fin_elp #-------------------------------------------------------------------------- def fin_elp(skill_id) return req_elp(skill_id) == cur_elp(skill_id) end #-------------------------------------------------------------------------- # new method: per_elp #-------------------------------------------------------------------------- def per_elp(skill_id) cur_elp(skill_id) / req_elp(skill_id).to_f end #-------------------------------------------------------------------------- # new method: el_gain #-------------------------------------------------------------------------- def el_gain(amount = 0) return unless self.el_skills.size > 0 return unless amount > 0 learn = [] point = (amount * elr / 100).round self.el_skills.each { |id| next unless $data_skills[id] @equip_learning.has_key?(id) ? @equip_learning[id] += point : @equip_learning[id] = point if @equip_learning[id] >= req_elp(id) learn.push(id) unless skill_learn?($data_skills[id]) learn_skill(id) @equip_learning[id] = req_elp(id) end } return learn.size > 0 ? learn.collect { |id| $data_skills[id] } : false end #-------------------------------------------------------------------------- # alias method: level_up #-------------------------------------------------------------------------- alias yes_equip_learning_level_up level_up def level_up yes_equip_learning_level_up el_gain(YES::EQUIPMENT_LEARNING::LEVEL_UP) end #-------------------------------------------------------------------------- # alias method: victory_quotes # Compatible with Yanfly Engine Ace - Victory Aftermath #-------------------------------------------------------------------------- if $imported["YEA-VictoryAftermath"] alias yes_equip_learning_victory_quotes victory_quotes def victory_quotes(type) case type when :el_learn return self.actor.el_quotes if self.actor.el_quotes != [""] return self.class.el_quotes else return yes_equip_learning_victory_quotes(type) end end end end # Game_Actor#==============================================================================# ¡ Game_Enemy#==============================================================================class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # new method: elp #-------------------------------------------------------------------------- def elp enemy.el_gain end end # Game_Enemy#==============================================================================# ¡ Game_Troop#==============================================================================class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # new method: elp_total #-------------------------------------------------------------------------- def elp_total dead_members.inject(0) {|r, enemy| r += enemy.elp } end end # Game_Troop#==============================================================================# ¡ Window_VictoryEXP_Back#==============================================================================class Window_VictoryEXP_Back < Window_Selectable #-------------------------------------------------------------------------- # alias method: draw_exp_gain # Compatible with Yanfly Engine Ace - Victory Aftermath #-------------------------------------------------------------------------- if $imported["YEA-VictoryAftermath"] alias yes_equip_learning_draw_exp_gain draw_exp_gain def draw_exp_gain(actor, rect) yes_equip_learning_draw_exp_gain(actor, rect) draw_el_gain(actor, rect) end end #-------------------------------------------------------------------------- # new method: draw_el_gain # Compatible with Yanfly Engine Ace - Victory Aftermath #-------------------------------------------------------------------------- def draw_el_gain(actor, rect) dw = rect.width - (rect.width - [rect.width, 96].min) / 2 dy = rect.y + line_height * 4 + 96 dy += line_height if $imported["YEA-JPManager"] fmt = YES::EQUIPMENT_LEARNING::VICTORY_AFTERMATH text = sprintf(fmt, actor_elp_gain(actor).to_s, YES::EQUIPMENT_LEARNING::VOCAB) contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP change_color(power_up_color) draw_text(rect.x, dy, dw, line_height, text, 2) end #-------------------------------------------------------------------------- # actor_elp_gain #-------------------------------------------------------------------------- def actor_elp_gain(actor) n = $game_troop.elp_total if actor.exp + actor_exp_gain(actor) > actor.exp_for_level(actor.level + 1) n += YES::EQUIPMENT_LEARNING::LEVEL_UP unless actor.max_level? end return (n * actor.elr / 100).round end end # Window_VictoryEXP_Back#==============================================================================# ¡ Window_EquipLearning#==============================================================================class Window_EquipLearning < Window_Selectable #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) self.opacity = 0 end #-------------------------------------------------------------------------- # ap_gauge_color1 #-------------------------------------------------------------------------- def ap_gauge_color1 text_color(YES::EQUIPMENT_LEARNING::COLOR_GAUGE[:color1]) end #-------------------------------------------------------------------------- # ap_gauge_color2 #-------------------------------------------------------------------------- def ap_gauge_color2 text_color(YES::EQUIPMENT_LEARNING::COLOR_GAUGE[:color2]) end #-------------------------------------------------------------------------- # item_max #-------------------------------------------------------------------------- def item_max @data.nil? ? 1 : @data.size end #-------------------------------------------------------------------------- # current_item_enabled? #-------------------------------------------------------------------------- def current_item_enabled? false end #-------------------------------------------------------------------------- # enable? #-------------------------------------------------------------------------- def enable?(skill) true end #-------------------------------------------------------------------------- # equip= #-------------------------------------------------------------------------- def equip=(equip) contents.clear @equip = equip return unless @equip @data = @equip.el_skills.collect { |i| $data_skills } refresh end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(actor) @actor = actor end #-------------------------------------------------------------------------- # item #-------------------------------------------------------------------------- def item @data.nil? ? nil : @data[index] end #-------------------------------------------------------------------------- # draw_item #-------------------------------------------------------------------------- def draw_item(index) skill = @data[index] if skill rect = item_rect(index) rect.width -= 4 draw_ap(skill, rect.x + 2, rect.y, rect.width, enable?(skill)) draw_item_name(skill, rect.x, rect.y, enable?(skill)) end end #-------------------------------------------------------------------------- # draw_ap #-------------------------------------------------------------------------- def draw_ap(item, x, y, width, enable = true) if @actor draw_gauge(x, y, width - 4, @actor.per_elp(item.id), ap_gauge_color1, ap_gauge_color2) draw_current_and_max_values(x, y, width - 4, @actor.cur_elp(item.id), @actor.req_elp(item.id), normal_color, normal_color) else draw_gauge(x, y, width - 4, 0, ap_gauge_color1, ap_gauge_color2) draw_current_and_max_values(x, y, width - 4, 0, item.el_require, normal_color, normal_color) end end #-------------------------------------------------------------------------- # update_help #-------------------------------------------------------------------------- def update_help @help_window.set_item(item) end #-------------------------------------------------------------------------- # activate #-------------------------------------------------------------------------- def activate self.index = 0 super end end # Window_EquipLearning#==============================================================================# ¡ Window_EquipLearning#==============================================================================class Window_EquipLearningBack < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh contents.clear text = YES::EQUIPMENT_LEARNING::LEARN_TITLE change_color(system_color) draw_text(0,0,contents.width,line_height,text,1) end end # Window_EquipLearningBack#==============================================================================# ¡ Window_EquipItem#==============================================================================class Window_EquipItem < Window_ItemList if YES::EQUIPMENT_LEARNING::ENABLE_WINDOW #-------------------------------------------------------------------------- # overwrite method: col_max #-------------------------------------------------------------------------- def col_max return 1 end #-------------------------------------------------------------------------- # new method: equip_learning_window #-------------------------------------------------------------------------- def equip_learning_window=(window) @equip_learning_window = window call_update_help end #-------------------------------------------------------------------------- # alias method: update_help #-------------------------------------------------------------------------- alias yes_equip_learning_update_help update_help def update_help yes_equip_learning_update_help @equip_learning_window.equip = self.item end end end # Window_EquipItem#==============================================================================# ¡ Window_EquipSlot#==============================================================================class Window_EquipSlot < Window_Selectable if YES::EQUIPMENT_LEARNING::ENABLE_WINDOW #-------------------------------------------------------------------------- # new method: equip_learning_window #-------------------------------------------------------------------------- def equip_learning_window=(window) @equip_learning_window = window call_update_help end #-------------------------------------------------------------------------- # alias method: update_help #-------------------------------------------------------------------------- alias yes_equip_learning_update_help update_help def update_help yes_equip_learning_update_help @equip_learning_window.equip = self.item end end end # Window_EquipSlot#==============================================================================# ¡ Scene_Battle#==============================================================================class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # new method: show_victory_el_learn #-------------------------------------------------------------------------- def show_victory_el_learn(actor, temp_actor) @victory_exp_window_back.hide @victory_exp_window_front.hide #--- fmt = YES::EQUIPMENT_LEARNING::VICTORY_LEARN text = sprintf(fmt, actor.name) @victory_title_window.refresh(text) #--- @victory_level_window.show @victory_level_window.refresh(actor, temp_actor) @victory_level_skills.show @victory_level_skills.refresh(actor, temp_actor) end end # Scene_Battle#==============================================================================# ¡ Scene_Equip#==============================================================================class Scene_Equip < Scene_MenuBase if YES::EQUIPMENT_LEARNING::ENABLE_WINDOW #-------------------------------------------------------------------------- # alias method: start #-------------------------------------------------------------------------- alias yes_equip_learning_start start def start yes_equip_learning_start create_equip_learning end #-------------------------------------------------------------------------- # alias method: create_item_window #-------------------------------------------------------------------------- alias yes_equip_learning_create_item_window create_item_window def create_item_window yes_equip_learning_create_item_window unless $imported["YEA-AceEquipEngine"] @item_window.width = Graphics.width / 2 @item_window.create_contents end end #-------------------------------------------------------------------------- # new method: create_equip_learning #-------------------------------------------------------------------------- def create_equip_learning wx = @item_window.width wy = @item_window.y ww = Graphics.width - @item_window.width wh = @item_window.height @equip_learning_back = Window_EquipLearningBack.new(wx, wy, ww, wh) @equip_learning_back.viewport = @viewport @equip_learning = Window_EquipLearning.new(wx, wy + 24, ww, wh - 24) @equip_learning.viewport = @viewport @equip_learning.help_window = @help_window @equip_learning.actor = @actor @item_window.equip_learning_window = @equip_learning @slot_window.equip_learning_window = @equip_learning #--- if $imported["YEA-AceEquipEngine"] if not $game_switches[15] @equip_learning_back.hide @equip_learning.hide end end end #-------------------------------------------------------------------------- # alias method: on_slot_cancel #-------------------------------------------------------------------------- alias yes_equip_learning_on_slot_cancel on_slot_cancel def on_slot_cancel yes_equip_learning_on_slot_cancel @equip_learning.equip = nil end #-------------------------------------------------------------------------- # alias method: on_actor_change #-------------------------------------------------------------------------- alias yes_equip_learning_on_actor_change on_actor_change def on_actor_change yes_equip_learning_on_actor_change @equip_learning.actor = @actor @equip_learning.equip = nil end #-------------------------------------------------------------------------- # new method: command_learning #-------------------------------------------------------------------------- def command_learning if !@equip_learning.visible @equip_learning.show @equip_learning_back.show @status_window.hide else @equip_learning.hide @equip_learning_back.hide @status_window.show end @command_window.activate end end end # Scene_Equip#==============================================================================# # ¥ End of File# #==============================================================================
Yanfly's Equip

#==============================================================================# # ▼ Yanfly Engine Ace - Ace Equip Engine v1.06# -- Last Updated: 2012.02.02# -- Level: Normal, Hard# -- Requires: n/a# #==============================================================================$imported = {} if $imported.nil?$imported["YEA-AceEquipEngine"] = true#==============================================================================# ▼ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2012.02.02 - Bug Fixed: Crash when changing classes to different equip slots.# 2012.01.22 - Bug Fixed: <equip slot> notetags updated to factor in spaces.# 2012.01.05 - Compatibility Update: Equip Dynamic Stats# 2011.12.30 - Bug Fixed: Stats didn't update.# 2011.12.23 - Script efficiency optimized.# 2011.12.18 - Script efficiency optimized.# 2011.12.13 - Started Script and Finished.# #==============================================================================# ▼ Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# The default equipment system in RPG Maker VX is the standard equipment system# seen in all of the previous iterations, which consists of weapon, shield,# headgear, bodygear, and accessory. To break free of that norm, this script# allows users access to giving actors and/or classes dynamic equipment setups# (including having multiples of the same categories). In addition to having# different equip slot setups, newer equipment types can be made to allow for# more diversity in armour types.# #==============================================================================# ▼ Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To install this script, open up your script editor and copy/paste this script# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.# # -----------------------------------------------------------------------------# Actor Notetags - These notetags go in the actors notebox in the database.# -----------------------------------------------------------------------------# <equip slots># string# string# </equip slots># This sets the actor's default slots to whatever is listed in between the two# notetags. An actor's custom equip slots will take priority over a class's# custom equip slots, which will take priority over the default equip slots.# Replace "string" with the proper equipment type name or when in doubt, use# "equip type: x" with x as the equipment type.# # <starting gear: x># <starting gear: x, x># Adds armour x to the actor's list of starting gear. This is used primarily# for the newer pieces of gear that can't be added through the starting set of# equipment through the RPG Maker VX Ace editor by default. Insert multiple of# these notetags to add more pieces of starting gear if so desired.# # <fixed equip: x># <fixed equip: x, x># This will fix the equip type x. Fixed equip slots mean that the equipment# already on it are unable to be exchanged in or out by the player. This tag# has been made so that equip types can be fixed for equip type 5 and above.# Use multiple of these notetags to add more fixed equipment restrictions.# # <sealed equip: x># <sealed equip: x, x># This will seal the equip type x. Sealed equip slots mean that no equipment# can be equipped onto that equip type slot. This tag has been made so that# equip types can be sealed for equip type 5 and above. Use multiple of these# notetags to add more sealed equipment restrictions.# # -----------------------------------------------------------------------------# Class Notetags - These notetags go in the class notebox in the database.# -----------------------------------------------------------------------------# <equip slots># string# string# </equip slots># This sets the class's default slots to whatever is listed in between the two# notetags. An actor's custom equip slots will take priority over a class's# custom equip slots, which will take priority over the default equip slots.# Replace "string" with the proper equipment type name or when in doubt, use# "equip type: x" with x as the equipment type.# # <fixed equip: x># <fixed equip: x, x># This will fix the equip type x. Fixed equip slots mean that the equipment# already on it are unable to be exchanged in or out by the player. This tag# has been made so that equip types can be fixed for equip type 5 and above.# Use multiple of these notetags to add more fixed equipment restrictions.# # <sealed equip: x># <sealed equip: x, x># This will seal the equip type x. Sealed equip slots mean that no equipment# can be equipped onto that equip type slot. This tag has been made so that# equip types can be sealed for equip type 5 and above. Use multiple of these# notetags to add more sealed equipment restrictions.# # -----------------------------------------------------------------------------# Weapon Notetags - These notetags go in the weapons notebox in the database.# -----------------------------------------------------------------------------# <fixed equip: x># <fixed equip: x, x># This will fix the equip type x. Fixed equip slots mean that the equipment# already on it are unable to be exchanged in or out by the player. This tag# has been made so that equip types can be fixed for equip type 5 and above.# Use multiple of these notetags to add more fixed equipment restrictions.# # <sealed equip: x># <sealed equip: x, x># This will seal the equip type x. Sealed equip slots mean that no equipment# can be equipped onto that equip type slot. This tag has been made so that# equip types can be sealed for equip type 5 and above. Use multiple of these# notetags to add more sealed equipment restrictions.# # -----------------------------------------------------------------------------# Armour Notetags - These notetags go in the armour notebox in the database.# -----------------------------------------------------------------------------# <equip type: x># <equip type: string># For the newer equip types, replace x or string with the equip type ID or the# name of the equip type respectively. This will set that armour to that# particular equip type.# # <fixed equip: x># <fixed equip: x, x># This will fix the equip type x. Fixed equip slots mean that the equipment# already on it are unable to be exchanged in or out by the player. This tag# has been made so that equip types can be fixed for equip type 5 and above.# Use multiple of these notetags to add more fixed equipment restrictions.# # <sealed equip: x># <sealed equip: x, x># This will seal the equip type x. Sealed equip slots mean that no equipment# can be equipped onto that equip type slot. This tag has been made so that# equip types can be sealed for equip type 5 and above. Use multiple of these# notetags to add more sealed equipment restrictions.# # -----------------------------------------------------------------------------# State Notetags - These notetags go in the states notebox in the database.# -----------------------------------------------------------------------------# <fixed equip: x># <fixed equip: x, x># This will fix the equip type x. Fixed equip slots mean that the equipment# already on it are unable to be exchanged in or out by the player. This tag# has been made so that equip types can be fixed for equip type 5 and above.# Use multiple of these notetags to add more fixed equipment restrictions.# # <sealed equip: x># <sealed equip: x, x># This will seal the equip type x. Sealed equip slots mean that no equipment# can be equipped onto that equip type slot. This tag has been made so that# equip types can be sealed for equip type 5 and above. Use multiple of these# notetags to add more sealed equipment restrictions.# #==============================================================================# ▼ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.# #==============================================================================module YEA module EQUIP #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - General Equip Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This adjusts the default equip configuration. While actors can have their # own unique equipment configurations, it's recommended to not change too # much as things get really hairy when it comes to proper eventing. # # ID Equip Type # --- ------------ # 0 Weapon # 1 Shield # 2 Headgear # 3 Bodygear # 4 Accessory # # Whatever you set the below slots to, the dual wield setup will be exactly # identical except that the second slot will be changed to a weapon (0). #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Adjust this array to set the default slots used for all of your actors # and classes if they do not have a custom equipment slot setup. DEFAULT_BASE_SLOTS = [ 0, 1, 2, 3, 5, 6, 4, 4] # This hash adjusts the new equip types (past 4+). Adjust them to match # their names properly. You can choose to allow certain types of equipment # be removable or not, or whether or not optimize will affect them. TYPES ={ # TypeID => ["Type Name", Removable?, Optimize?], 0 => [ "Weapon", true, true], 1 => [ "Offhand", true, true], 2 => [ "Headgear", true, true], 3 => [ "Bodygear", true, true], 4 => ["Accessory", true, false], 5 => [ "Cloak", true, true], 6 => [ "Footwear", true, false], } # Do not remove this. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Equip Command List - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Here, you can adjust the order at which the commands appear (or even # remove commands as you see fit). Here's a list of which does what: # # ------------------------------------------------------------------------- # :command Description # ------------------------------------------------------------------------- # :equip Activates the manual equip window. Default. # :optimize Optimizes equipment for the actor. Default. # :clear Clears all equipment from the actor. Default # # And that's all of the currently available commands. This list will be # updated as more scripts become available. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This array arranges the order of which the commands appear in the Equip # Command window in the Equip Scene. COMMAND_LIST =[ :equip, :optimize, # :enchant, # Kread-EX's Runic enchantment :clear, # :custom1, # :custom2, ] # Do not remove this. #-------------------------------------------------------------------------- # - Equip Custom Commands - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # For those who use scripts to that may produce unique effects for # equipping, use this hash to manage the custom commands for the Equip # Command Window. You can disable certain commands or prevent them from # appearing by using switches. If you don't wish to bind them to a switch, # set the proper switch to 0 for it to have no impact. #-------------------------------------------------------------------------- CUSTOM_EQUIP_COMMANDS ={ # :command => ["Display Name", EnableSwitch, ShowSwitch, Handler Method], :enchant => [ "Enchantment", 0, 0, :command_enchant], :custom1 => [ "Show skills", 0, 0, :command_name1], :custom2 => [ "Custom Text", 13, 0, :command_name2], } # Do not remove this. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Misc Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This section adjusts the minor visuals that you see inside of the newly # organized Equip Scene. Adjust the settings as you see fit. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This sets the font size used for the status window in the lower right # corner of the screen (which shows stats and comparisons). STATUS_FONT_SIZE = 20 # This sets the remove equip command in the item window. REMOVE_EQUIP_ICON = 185 REMOVE_EQUIP_TEXT = "<Remove Equip>" # This sets the no-equipment text in the slot window. NOTHING_ICON = 185 NOTHING_TEXT = "<Empty>" end # EQUIPend # YEA#==============================================================================# ▼ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#==============================================================================module YEA module REGEXP module BASEITEM EQUIP_SLOTS_ON = /<(?:EQUIP_SLOTS|equip slots)>/i EQUIP_SLOTS_OFF = /<\/(?:EQUIP_SLOTS|equip slots)>/i EQUIP_TYPE_INT = /<(?:EQUIP_TYPE|equip type):[ ]*(\d+)>/i EQUIP_TYPE_STR = /<(?:EQUIP_TYPE|equip type):[ ]*(.*)>/i STARTING_GEAR = /<(?:STARTING_GEAR|starting gear):[ ](\d+(?:\s*,\s*\d+)*)>/i FIXED_EQUIP = /<(?:FIXED_EQUIP|fixed equip):[ ](\d+(?:\s*,\s*\d+)*)>/i SEALED_EQUIP = /<(?:SEALED_EQUIP|sealed equip):[ ](\d+(?:\s*,\s*\d+)*)>/i end # BASEITEM end # REGEXPend # YEA#==============================================================================# ■ Vocab#==============================================================================module Vocab #-------------------------------------------------------------------------- # overwrite method: self.etype #-------------------------------------------------------------------------- def self.etype(etype) return $data_system.terms.etypes[etype] if [0,1,2,3,4].include?(etype) return YEA::EQUIP::TYPES[etype][0] if YEA::EQUIP::TYPES.include?(etype) return "" end end # Vocab#==============================================================================# ■ Icon#==============================================================================module Icon #-------------------------------------------------------------------------- # self.remove_equip #-------------------------------------------------------------------------- def self.remove_equip; return YEA::EQUIP::REMOVE_EQUIP_ICON; end #-------------------------------------------------------------------------- # self.nothing_equip #-------------------------------------------------------------------------- def self.nothing_equip; return YEA::EQUIP::NOTHING_ICON; end end # Icon#==============================================================================# ■ Numeric#==============================================================================class Numeric #-------------------------------------------------------------------------- # new method: group_digits #-------------------------------------------------------------------------- unless $imported["YEA-CoreEngine"] def group; return self.to_s; end end # $imported["YEA-CoreEngine"] end # Numeric#==============================================================================# ■ DataManager#==============================================================================module DataManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class <<self; alias load_database_aee load_database; end def self.load_database load_database_aee load_notetags_aee end #-------------------------------------------------------------------------- # new method: load_notetags_aee #-------------------------------------------------------------------------- def self.load_notetags_aee groups = [$data_actors, $data_classes, $data_weapons, $data_armors, $data_states] for group in groups for obj in group next if obj.nil? obj.load_notetags_aee end end end end # DataManager#==============================================================================# ■ RPG::BaseItem#==============================================================================class RPG::BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :base_equip_slots attr_accessor :fixed_equip_type attr_accessor :sealed_equip_type attr_accessor :extra_starting_equips #-------------------------------------------------------------------------- # common cache: load_notetags_aee #-------------------------------------------------------------------------- def load_notetags_aee @base_equip_slots = [] @equip_slots_on = false @fixed_equip_type = [] @sealed_equip_type = [] @extra_starting_equips = [] #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEA::REGEXP::BASEITEM::EQUIP_SLOTS_ON next unless self.is_a?(RPG::Actor) ||self.is_a?(RPG::Class) @equip_slots_on = true when YEA::REGEXP::BASEITEM::EQUIP_SLOTS_OFF next unless self.is_a?(RPG::Actor) ||self.is_a?(RPG::Class) @equip_slots_on = false #--- when YEA::REGEXP::BASEITEM::STARTING_GEAR next unless self.is_a?(RPG::Actor) $1.scan(/\d+/).each { |num| @extra_starting_equips.push(num.to_i) if num.to_i > 0 } when YEA::REGEXP::BASEITEM::FIXED_EQUIP $1.scan(/\d+/).each { |num| @fixed_equip_type.push(num.to_i) if num.to_i > 0 } when YEA::REGEXP::BASEITEM::SEALED_EQUIP $1.scan(/\d+/).each { |num| @sealed_equip_type.push(num.to_i) if num.to_i > 0 } #--- when YEA::REGEXP::BASEITEM::EQUIP_TYPE_INT next unless self.is_a?(RPG::Armor) @etype_id = [1, $1.to_i].max when YEA::REGEXP::BASEITEM::EQUIP_TYPE_STR next unless self.is_a?(RPG::Armor) for key in YEA::EQUIP::TYPES id = key[0] next if YEA::EQUIP::TYPES[id][0].upcase != $1.to_s.upcase @etype_id = [1, id].max break end #--- else if @equip_slots_on case line.upcase when /EQUIP TYPE[ ](\d+)/i, /EQUIP TYPE:[ ](\d+)/i id = $1.to_i @base_equip_slots.push(id) if [0,1,2,3,4].include?(id) @base_equip_slots.push(id) if YEA::EQUIP::TYPES.include?(id) when /WEAPON/i @base_equip_slots.push(0) when /SHIELD/i @base_equip_slots.push(1) when /HEAD/i @base_equip_slots.push(2) when /BODY/i, /ARMOR/i, /ARMOUR/i @base_equip_slots.push(3) when /ETC/i, /OTHER/i, /ACCESSOR/i @base_equip_slots.push(4) else text = line.upcase.delete(" ") for key in YEA::EQUIP::TYPES id = key[0] next if YEA::EQUIP::TYPES[id][0].upcase.delete(" ")!= text @base_equip_slots.push(id) break end end end end } # self.note.split #--- return unless self.is_a?(RPG::Class) if @base_equip_slots.empty? @base_equip_slots = YEA::EQUIP::DEFAULT_BASE_SLOTS.clone end end end # RPG::BaseItem#==============================================================================# ■ Game_Temp#==============================================================================class Game_Temp #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :eds_actor attr_accessor :scene_equip_index attr_accessor :scene_equip_oy end # Game_Temp#==============================================================================# ■ Game_BaseItem#==============================================================================class Game_BaseItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :item_id end # Game_BaseItem#==============================================================================# ■ Game_BattlerBase#==============================================================================class Game_BattlerBase #-------------------------------------------------------------------------- # alias method: equip_type_fixed? #-------------------------------------------------------------------------- alias game_battlerbase_equip_type_fixed_aee equip_type_fixed? def equip_type_fixed?(etype_id) return true if fixed_etypes.include?(etype_id) if actor? return game_battlerbase_equip_type_fixed_aee(etype_id) end #-------------------------------------------------------------------------- # alias method: equip_type_sealed? #-------------------------------------------------------------------------- alias game_battlerbase_equip_type_sealed_aee equip_type_sealed? def equip_type_sealed?(etype_id) return true if sealed_etypes.include?(etype_id) if actor? return game_battlerbase_equip_type_sealed_aee(etype_id) end end # Game_BattlerBase#==============================================================================# ■ Game_Actor#==============================================================================class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # alias method: init_equips #-------------------------------------------------------------------------- alias game_actor_init_equips_aee init_equips def init_equips(equips) game_actor_init_equips_aee(equips) equip_extra_starting_equips end #-------------------------------------------------------------------------- # new method: equip_extra_starting_equips #-------------------------------------------------------------------------- def equip_extra_starting_equips for equip_id in actor.extra_starting_equips armour = $data_armors[equip_id] next if armour.nil? etype_id = armour.etype_id next unless equip_slots.include?(etype_id) slot_id = empty_slot(etype_id) @equips[slot_id].set_equip(etype_id == 0, armour.id) end refresh end #-------------------------------------------------------------------------- # overwrite method: equip_slots #-------------------------------------------------------------------------- def equip_slots return equip_slots_dual if dual_wield? return equip_slots_normal end #-------------------------------------------------------------------------- # new method: equip_slots_normal #-------------------------------------------------------------------------- def equip_slots_normal return self.actor.base_equip_slots if self.actor.base_equip_slots != [] return self.class.base_equip_slots end #-------------------------------------------------------------------------- # new method: equip_slots_dual #-------------------------------------------------------------------------- def equip_slots_dual array = equip_slots_normal.clone array[1] = 0 if array.size >= 2 return array end #-------------------------------------------------------------------------- # new method: fixed_etypes #-------------------------------------------------------------------------- def fixed_etypes array = [] array |= self.actor.fixed_equip_type array |= self.class.fixed_equip_type for equip in equips next if equip.nil? array |= equip.fixed_equip_type end for state in states next if state.nil? array |= state.fixed_equip_type end return array end #-------------------------------------------------------------------------- # new method: sealed_etypes #-------------------------------------------------------------------------- def sealed_etypes array = [] array |= self.actor.sealed_equip_type array |= self.class.sealed_equip_type for equip in equips next if equip.nil? array |= equip.sealed_equip_type end for state in states next if state.nil? array |= state.sealed_equip_type end return array end #-------------------------------------------------------------------------- # alias method: change_equip #-------------------------------------------------------------------------- alias game_actor_change_equip_aee change_equip def change_equip(slot_id, item) if item.nil? && !@optimize_clear etype_id = equip_slots[slot_id] return unless YEA::EQUIP::TYPES[etype_id][1] elsif item.nil? && @optimize_clear etype_id = equip_slots[slot_id] return unless YEA::EQUIP::TYPES[etype_id][2] end @equips[slot_id] = Game_BaseItem.new if @equips[slot_id].nil? game_actor_change_equip_aee(slot_id, item) end #-------------------------------------------------------------------------- # overwrite method: optimize_equipments #-------------------------------------------------------------------------- def optimize_equipments $game_temp.eds_actor = self @optimize_clear = true clear_equipments @optimize_clear = false equip_slots.size.times do |i| next if !equip_change_ok?(i) next unless can_optimize?(i) items = $game_party.equip_items.select do |item| item.etype_id == equip_slots && equippable?(item) && item.performance >= 0 end change_equip(i, items.max_by {|item| item.performance }) end $game_temp.eds_actor = nil end #-------------------------------------------------------------------------- # new method: can_optimize? #-------------------------------------------------------------------------- def can_optimize?(slot_id) etype_id = equip_slots[slot_id] return YEA::EQUIP::TYPES[etype_id][2] end #-------------------------------------------------------------------------- # alias method: force_change_equip #-------------------------------------------------------------------------- alias game_actor_force_change_equip_aee force_change_equip def force_change_equip(slot_id, item) @equips[slot_id] = Game_BaseItem.new if @equips[slot_id].nil? game_actor_force_change_equip_aee(slot_id, item) end #-------------------------------------------------------------------------- # alias method: weapons #-------------------------------------------------------------------------- alias game_actor_weapons_aee weapons def weapons anti_crash_equips return game_actor_weapons_aee end #-------------------------------------------------------------------------- # alias method: armors #-------------------------------------------------------------------------- alias game_actor_armors_aee armors def armors anti_crash_equips return game_actor_armors_aee end #-------------------------------------------------------------------------- # alias method: equips #-------------------------------------------------------------------------- alias game_actor_equips_aee equips def equips anti_crash_equips return game_actor_equips_aee end #-------------------------------------------------------------------------- # new method: equips #-------------------------------------------------------------------------- def anti_crash_equips for i in 0...@equips.size next unless @equips.nil? @equips = Game_BaseItem.new end end end # Game_Actor#==============================================================================# ■ Game_Interpreter#==============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # overwrite method: change equip #-------------------------------------------------------------------------- def command_319 actor = $game_actors[@params[0]] return if actor.nil? if @params[1] == 0 && @params[2] != 0 item = $data_weapons[@params[2]] return unless actor.equip_slots.include?(0) slot_id = actor.empty_slot(0) elsif @params[2] != 0 item = $data_armors[@params[2]] return unless actor.equip_slots.include?(item.etype_id) slot_id = actor.empty_slot(item.etype_id) else slot_id = @params[1] end actor.change_equip_by_id(slot_id, @params[2]) end end # Game_Interpreter#==============================================================================# ■ Window_EquipStatus#==============================================================================class Window_EquipStatus < Window_Base #-------------------------------------------------------------------------- # overwrite method: initialize #-------------------------------------------------------------------------- def initialize(dx, dy) super(dx, dy, window_width, Graphics.height - dy) @actor = nil @temp_actor = nil refresh end #-------------------------------------------------------------------------- # overwrite method: window_width #-------------------------------------------------------------------------- def window_width; return Graphics.width * 2 / 5; end #-------------------------------------------------------------------------- # overwrite method: refresh #-------------------------------------------------------------------------- def refresh contents.clear 8.times {|i| draw_item(0, line_height * i, i) } end #-------------------------------------------------------------------------- # overwrite method: draw_item #-------------------------------------------------------------------------- def draw_item(dx, dy, param_id) draw_background_colour(dx, dy) draw_param_name(dx + 4, dy, param_id) draw_current_param(dx + 4, dy, param_id) if @actor drx = (contents.width + 22) / 2 draw_right_arrow(drx, dy) draw_new_param(drx + 22, dy, param_id) if @temp_actor reset_font_settings end #-------------------------------------------------------------------------- # new method: draw_background_colour #-------------------------------------------------------------------------- def draw_background_colour(dx, dy) colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(dx+1, dy+1, contents.width - 2, line_height - 2) contents.fill_rect(rect, colour) end #-------------------------------------------------------------------------- # overwrite method: draw_param_name #-------------------------------------------------------------------------- def draw_param_name(dx, dy, param_id) contents.font.size = YEA::EQUIP::STATUS_FONT_SIZE change_color(system_color) draw_text(dx, dy, contents.width, line_height, Vocab::param(param_id)) end #-------------------------------------------------------------------------- # overwrite method: draw_current_param #-------------------------------------------------------------------------- def draw_current_param(dx, dy, param_id) change_color(normal_color) dw = (contents.width + 22) / 2 draw_text(0, dy, dw, line_height, @actor.param(param_id).group, 2) reset_font_settings end #-------------------------------------------------------------------------- # overwrite method: draw_new_param #-------------------------------------------------------------------------- def draw_new_param(dx, dy, param_id) contents.font.size = YEA::EQUIP::STATUS_FONT_SIZE new_value = @temp_actor.param(param_id) change_color(param_change_color(new_value - @actor.param(param_id))) draw_text(0, dy, contents.width-4, line_height, new_value.group, 2) reset_font_settings end end # Window_EquipStatus#==============================================================================# ■ Window_EquipCommand#==============================================================================class Window_EquipCommand < Window_HorzCommand #-------------------------------------------------------------------------- # overwrite method: make_command_list #-------------------------------------------------------------------------- def make_command_list for command in YEA::EQUIP::COMMAND_LIST case command when :equip add_command(Vocab::equip2, :equip) when :optimize add_command(Vocab::optimize, :optimize) when :clear add_command(Vocab::clear, :clear) else process_custom_command(command) end end end #-------------------------------------------------------------------------- # process_ok #-------------------------------------------------------------------------- def process_ok $game_temp.scene_equip_index = index $game_temp.scene_equip_oy = self.oy super end #-------------------------------------------------------------------------- # new method: process_custom_command #-------------------------------------------------------------------------- def process_custom_command(command) return unless YEA::EQUIP::CUSTOM_EQUIP_COMMANDS.include?(command) show = YEA::EQUIP::CUSTOM_EQUIP_COMMANDS[command][2] continue = show <= 0 ? true : $game_switches[show] return unless continue text = YEA::EQUIP::CUSTOM_EQUIP_COMMANDS[command][0] switch = YEA::EQUIP::CUSTOM_EQUIP_COMMANDS[command][1] enabled = switch <= 0 ? true : $game_switches[switch] add_command(text, command, enabled) end #-------------------------------------------------------------------------- # overwrite method: window_width #-------------------------------------------------------------------------- def window_width; return 160; end #-------------------------------------------------------------------------- # overwrite method: contents_width #-------------------------------------------------------------------------- def contents_width; return width - standard_padding * 2; end #-------------------------------------------------------------------------- # overwrite method: contents_height #-------------------------------------------------------------------------- def contents_height ch = height - standard_padding * 2 return [ch - ch % item_height, row_max * item_height].max end #-------------------------------------------------------------------------- # overwrite method: visible_line_number #-------------------------------------------------------------------------- def visible_line_number; return 4; end #-------------------------------------------------------------------------- # overwrite method: col_max #-------------------------------------------------------------------------- def col_max; return 1; end #-------------------------------------------------------------------------- # overwrite method: item_rect #-------------------------------------------------------------------------- def item_rect(index) rect = Rect.new rect.width = item_width rect.height = item_height rect.x = index % col_max * (item_width + spacing) rect.y = index / col_max * item_height rect end #-------------------------------------------------------------------------- # overwrite method: ensure_cursor_visible #-------------------------------------------------------------------------- def ensure_cursor_visible self.top_row = row if row < top_row self.bottom_row = row if row > bottom_row end #-------------------------------------------------------------------------- # overwrite method: cursor_down #-------------------------------------------------------------------------- def cursor_down(wrap = false) if index < item_max - col_max || (wrap && col_max == 1) select((index + col_max) % item_max) end end #-------------------------------------------------------------------------- # overwrite method: cursor_up #-------------------------------------------------------------------------- def cursor_up(wrap = false) if index >= col_max || (wrap && col_max == 1) select((index - col_max + item_max) % item_max) end end #-------------------------------------------------------------------------- # overwrite method: process_pageup #-------------------------------------------------------------------------- def process_pageup Sound.play_cursor Input.update deactivate call_handler:)pageup) end #-------------------------------------------------------------------------- # overwrite method: process_pagedown #-------------------------------------------------------------------------- def process_pagedown Sound.play_cursor Input.update deactivate call_handler:)pagedown) end end # Window_EquipCommand#==============================================================================# ■ Window_EquipSlot#==============================================================================class Window_EquipSlot < Window_Selectable #-------------------------------------------------------------------------- # overwrite method: initialize #-------------------------------------------------------------------------- def initialize(dx, dy, dw) super(dx, dy, dw, Graphics.height - dy) @actor = nil refresh end #-------------------------------------------------------------------------- # overwrite method: window_height #-------------------------------------------------------------------------- def window_height; return self.height; end #-------------------------------------------------------------------------- # overwrite method: visible_line_number #-------------------------------------------------------------------------- def visible_line_number; return item_max; end #-------------------------------------------------------------------------- # overwrite method: refresh #-------------------------------------------------------------------------- def refresh create_contents super end #-------------------------------------------------------------------------- # overwrite method: draw_item #-------------------------------------------------------------------------- def draw_item(index) return unless @actor rect = item_rect_for_text(index) change_color(system_color, enable?(index)) draw_text(rect.x, rect.y, 92, line_height, slot_name(index)) item = @actor.equips[index] dx = rect.x + 92 dw = contents.width - dx - 24 if item.nil? draw_nothing_equip(dx, rect.y, false, dw) else draw_item_name(item, dx, rect.y, enable?(index), dw) end end #-------------------------------------------------------------------------- # new method: draw_nothing_equip #-------------------------------------------------------------------------- def draw_nothing_equip(dx, dy, enabled, dw) change_color(normal_color, enabled) draw_icon(Icon.nothing_equip, dx, dy, enabled) text = YEA::EQUIP::NOTHING_TEXT draw_text(dx + 24, dy, dw - 24, line_height, text) end end # Window_EquipSlot#==============================================================================# ■ Window_EquipItem#==============================================================================class Window_EquipItem < Window_ItemList #-------------------------------------------------------------------------- # overwrite method: col_max #-------------------------------------------------------------------------- def col_max; return 1; end #-------------------------------------------------------------------------- # overwrite method: slot_id= #-------------------------------------------------------------------------- def slot_id=(slot_id) return if @slot_id == slot_id @slot_id = slot_id @last_item = nil self.oy = 0 end #-------------------------------------------------------------------------- # overwrite method: draw_item #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] rect = item_rect(index) rect.width -= 4 if item.nil? draw_remove_equip(rect) return end dw = contents.width - rect.x - 24 draw_item_name(item, rect.x, rect.y, enable?(item), dw) draw_item_number(rect, item) end #-------------------------------------------------------------------------- # new method: draw_remove_equip #-------------------------------------------------------------------------- def draw_remove_equip(rect) draw_icon(Icon.remove_equip, rect.x, rect.y) text = YEA::EQUIP::REMOVE_EQUIP_TEXT rect.x += 24 rect.width -= 24 draw_text(rect, text) end #-------------------------------------------------------------------------- # overwrite method: include? #-------------------------------------------------------------------------- def include?(item) if item.nil? && !@actor.nil? etype_id = @actor.equip_slots[@slot_id] return YEA::EQUIP::TYPES[etype_id][1] end return true if item.nil? return false unless item.is_a?(RPG::EquipItem) return false if @slot_id < 0 return false if item.etype_id != @actor.equip_slots[@slot_id] return @actor.equippable?(item) end #-------------------------------------------------------------------------- # overwrite method: enable? #-------------------------------------------------------------------------- def enable?(item) if item.nil? && !@actor.nil? etype_id = @actor.equip_slots[@slot_id] return YEA::EQUIP::TYPES[etype_id][1] end return @actor.equippable?(item) end #-------------------------------------------------------------------------- # new method: show #-------------------------------------------------------------------------- def show @last_item = 0 update_help super end #-------------------------------------------------------------------------- # overwrite method: update_help #-------------------------------------------------------------------------- def update_help super return if @actor.nil? return if @status_window.nil? return if @last_item == item @last_item = item temp_actor = Marshal.load(Marshal.dump(@actor)) temp_actor.force_change_equip(@slot_id, item) @status_window.set_temp_actor(temp_actor) end end # Window_EquipItem#==============================================================================# ■ Window_EquipActor#==============================================================================class Window_EquipActor < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(dx, dy) super(dx, dy, window_width, fitting_height(4)) @actor = nil end #-------------------------------------------------------------------------- # window_width #-------------------------------------------------------------------------- def window_width; return Graphics.width - 160; end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(actor) return if @actor == actor @actor = actor refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh contents.clear return unless @actor draw_actor_face(@actor, 0, 0) draw_actor_simple_status(@actor, 108, line_height / 2) end end # Window_EquipActor#==============================================================================# ■ Scene_Equip#==============================================================================class Scene_Equip < Scene_MenuBase #-------------------------------------------------------------------------- # overwrite method: create_status_window #-------------------------------------------------------------------------- def create_status_window wx = Graphics.width - (Graphics.width * 2 / 5) wy = @help_window.height + 120 @status_window = Window_EquipStatus.new(wx, wy) @status_window.viewport = @viewport @status_window.actor = @actor end #-------------------------------------------------------------------------- # overwrite method: create_command_window #-------------------------------------------------------------------------- def create_command_window wx = 0 wy = @help_window.height ww = 160 @command_window = Window_EquipCommand.new(wx, wy, ww) @command_window.viewport = @viewport @command_window.help_window = @help_window if !$game_temp.scene_equip_index.nil? @command_window.select($game_temp.scene_equip_index) @command_window.oy = $game_temp.scene_equip_oy end $game_temp.scene_equip_index = nil $game_temp.scene_equip_oy = nil @command_window.set_handler:)equip, method:)command_equip)) @command_window.set_handler:)optimize, method:)command_optimize)) @command_window.set_handler:)clear, method:)command_clear)) @command_window.set_handler:)cancel, method:)return_scene)) @command_window.set_handler:)pagedown, method:)next_actor)) @command_window.set_handler:)pageup, method:)prev_actor)) @command_window.set_handler:)adik_x, method:)command_name1)) process_custom_equip_commands create_actor_window end #-------------------------------------------------------------------------- # new method: create_actor_window #-------------------------------------------------------------------------- def create_actor_window wy = @help_window.height @actor_window = Window_EquipActor.new(@command_window.width, wy) @actor_window.viewport = @viewport @actor_window.actor = @actor end #-------------------------------------------------------------------------- # new method: process_custom_equip_commands #-------------------------------------------------------------------------- def process_custom_equip_commands for command in YEA::EQUIP::COMMAND_LIST next unless YEA::EQUIP::CUSTOM_EQUIP_COMMANDS.include?(command) called_method = YEA::EQUIP::CUSTOM_EQUIP_COMMANDS[command][3] @command_window.set_handler(command, method(called_method)) end end #-------------------------------------------------------------------------- # overwrite method: create_slot_window #-------------------------------------------------------------------------- def create_slot_window wx = 0 wy = @command_window.y + @command_window.height ww = Graphics.width - @status_window.width @slot_window = Window_EquipSlot.new(wx, wy, ww) @slot_window.viewport = @viewport @slot_window.help_window = @help_window @slot_window.status_window = @status_window @slot_window.actor = @actor @slot_window.set_handler:)ok, method:)on_slot_ok)) @slot_window.set_handler:)cancel, method:)on_slot_cancel)) end #-------------------------------------------------------------------------- # overwrite method: create_item_window #-------------------------------------------------------------------------- def create_item_window wx = @slot_window.x wy = @slot_window.y ww = @slot_window.width wh = @slot_window.height @item_window = Window_EquipItem.new(wx, wy, ww, wh) @item_window.viewport = @viewport @item_window.help_window = @help_window @item_window.status_window = @status_window @item_window.actor = @actor @item_window.set_handler:)ok, method:)on_item_ok)) @item_window.set_handler:)cancel, method:)on_item_cancel)) @slot_window.item_window = @item_window @item_window.hide end #-------------------------------------------------------------------------- # alias method: command_optimize #-------------------------------------------------------------------------- alias scene_equip_command_optimize_aee command_optimize def command_optimize scene_equip_command_optimize_aee @actor_window.refresh end #-------------------------------------------------------------------------- # alias method: command_clear #-------------------------------------------------------------------------- alias scene_equip_command_clear_aee command_clear def command_clear scene_equip_command_clear_aee @actor_window.refresh end #-------------------------------------------------------------------------- # alias method: on_slot_ok #-------------------------------------------------------------------------- alias scene_equip_on_slot_ok_aee on_slot_ok def on_slot_ok scene_equip_on_slot_ok_aee @slot_window.hide @item_window.refresh @item_window.show end #-------------------------------------------------------------------------- # alias method: on_item_ok #-------------------------------------------------------------------------- alias scene_equip_on_item_ok_aee on_item_ok def on_item_ok scene_equip_on_item_ok_aee @actor_window.refresh @slot_window.show @item_window.hide end #-------------------------------------------------------------------------- # alias method: on_item_cancel #-------------------------------------------------------------------------- alias scene_equip_on_item_cancel_aee on_item_cancel def on_item_cancel scene_equip_on_item_cancel_aee @slot_window.show @item_window.hide end #-------------------------------------------------------------------------- # alias method: on_actor_change #-------------------------------------------------------------------------- alias scene_equip_on_actor_change_aee on_actor_change def on_actor_change scene_equip_on_actor_change_aee @actor_window.actor = @actor end #-------------------------------------------------------------------------- # new method: command_name1 #-------------------------------------------------------------------------- def command_name1 if $game_switches[15] @equip_learning.hide @equip_learning_back.hide $game_switches[15] = false else @equip_learning.show @equip_learning_back.show $game_switches[15] = true end #@command_window.activate end #-------------------------------------------------------------------------- # new method: command_name2 #-------------------------------------------------------------------------- def command_name2 # Do nothing. end end # Scene_Equip#==============================================================================# # ▼ End of File# #==============================================================================
Plus a custom script that I made to make it work

Code:
#==============================================================================# # Command XYZ v1.0# by AdiktuzMiko# --- Date Created: 09/01/2013# --- Last Date Updated: 09/01/2013# --- Level: Normal# Requires: n/a# # Basically, this allows you to register handlers for pressing the XYZ (ASD) button# on windows. ##==============================================================================#==============================================================================# Aliased methods:## process_handling (Window_Selectable)#==============================================================================#==============================================================================# How To Install:## Just put this anywhere before main and you're good to go.#==============================================================================#==============================================================================# Compatibility:## This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.##==============================================================================#==============================================================================# How To Use:## Just add a command handler line into your command window creation def.## Example:## @command_window.set_handler(:adik_x,   method(:command_name1))# -> Runs command_name1 when you press the X button which is by default A## @command_window.set_handler(:adik_y,   method(:command_name1))# -> Runs command_name1 when you press the Y button which is by default S# # @command_window.set_handler(:adik_z,   method(:command_name1))# -> Runs command_name1 when you press the Z button which is by default D##==============================================================================class Window_Selectable < Window_Base  alias adik_process_handling process_handling  def process_handling    adik_process_handling    return process_adik_x   if handle?(:adik_x)   && Input.trigger?(:X)    return process_adik_y   if handle?(:adik_y)   && Input.trigger?(:Y)    return process_adik_z   if handle?(:adik_z)   && Input.trigger?(:Z)  end    #The following methods run the handlers that you register    def process_adik_x    call_handler(:adik_x)  end    def process_adik_y    call_handler(:adik_y)  end    def process_adik_z    call_handler(:adik_z)  end  end
 
Last edited by a moderator:

deathsia

Pegisister
Veteran
Joined
Feb 26, 2014
Messages
648
Reaction score
55
First Language
English
Primarily Uses
Awesome! That worked thank you!
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??

Forum statistics

Threads
105,868
Messages
1,017,066
Members
137,576
Latest member
SadaSoda
Top