Nome
Multi Slot de Equipamentos
AutorGuillaume777
Introdução Ele permite que você adicione slots extras para equipamentos, crie armas de duas-mãos, amaldiçoadas, usar duas ou mais armas, criar slots novos para equipamentos, mudar individualmente o número de slots de equips de cada personagem, adicionar nomes individuais para os slots de equipamentos de cada personagem...
São muitas opções.
E ainda por cima o script fornece formas diferentes de se configurar muitas das opções.
Características
- Armas de duas mãos
- Duas armas
- Armas multi-hit
- Armas e armaduras amaldiçoadas
- novos slots de itens, como botas, luvas, amuletos, etc...
ScreenshotsRedimensionado em 97% (640 x 481) - Clique para ampliarComo usarConfiguração:
Muitas configurações podem ser feitas através do mudulo "G7_MS_MOD"
no inicio do script.
Para mudar os slots disponíveis dos personagens, use o comando
"Chamar Evento" e adicione as seguintes linhas:
Para mudar armas:
$game_actors[ID].weapon_slots = [X,X]
ID = ID do personagem
X = 0 (x deve ser sempre igual a zero)
A quantidade de "X" qeu você coloca na Array define quantas armas
o pesronagem pode usar.
Para mudar armas:
$game_actors[ID].armor_slots = [A,B,C,D]
Os valores devem ser as IDs dos equipamentos.
ID = ID do personagem
A, B, C e D = ID do tipo de armadura
As IDs são
1 = escudo
2 = elmo
3 = armadura
4 = acessorio
Você pode repetir o valor, assim o personagem irá usar mais de
um item daquele tipo. por exemplo:
$game_actors[1].armor_slots = [1,2,3,4,4,4]
o Personagem ID 1 pode usar 3 Acessórios
Você pode adicionar novas ID que representarão equipamentos
para os novos slots.
Por exemplo:
$game_actors[1].armor_slots = [1,2,3,4,4,5,6,7]
Além de dois acessorios, o personagem poderá usar mais 3 tipos
de equipamentos diferentes (mais detalhes sobre esses equipamentos
logo abaixo
Para que uma arma possa ser equipada em um dos novos slots você
deve adicionar ao nome da arma (X) (com os parenteses)
onde X é o numero do slot.
Fazer armas de duas Mãos:
Existem 3 formas de fazer com que umar arma seja de 2 mãos
- Adicione a ID dar arma na Array TWO_HANDED_WEAPONS = []
- Crie um novo atributo na aba de sistemas chamado 2mãos
e adicione esse elemento à arma
- Adicione (2mãos) ao nome da arma.(com os parenteses)
Usando os dois últimos sistmas, você pode criar armas de 3 ou mais
mãos, bastando mudar o número
Digamos que você tenha um "Goro" do Mortal Kombat em seu grupo...
Fazer armas Multi-Ataque
Existem 3 formas de fazer com que umar arma seja de 2 mãos
- Adicione a ID dar arma na Array DOUBLE_ATTACK_WEAPONS = []
- Crie um novo atributo na aba de sistemas chamado 2atqs
e adicione esse elemento à arma
- Adicione (2atqs) ao nome da arma.(com os parenteses)
Usando os dois últimos sistmas, você pode aumentar o número de
ataques, bastando mudar o número.
Fazer Equipamentos Amaldiçoados
- Adicione a ID da Arma/Armadura nas Arrays CURSED_WEAPONS = []
ou CURSED_ARMORS = []
- Adicione (mald) ao nome da arma.(com os parenteses)
Fazer Armas que só possam ser equipadas na mão direita
- Adicione a ID da Arma na Array NEEDS_OFFHAND = []
- Adicione (m_princ) ao nome da arma.(com os parenteses)
Troca de equipamentos automática:
Ao equipar um certo equipamento ele é trocado automáticamente
por outro, uma ótima forma de adicionar equipamentos amaldiçoados
ao jogo, o jogador acha que conseguiu uma arma boa e a equipa
e tem uma infeliz surpresa.
- Para fazer isso vá em SWITCH_EQUIP_WEAPONS = [] ou
SWITCH_EQUIP_ARMORS = []
Adicione na Array dois valores seguindo o exemplo
SWITCH_EQUIP_WEAPONS = [[38,36], [43,42]]
Assim, quando o personagem equipar a arma ID 38, ela será trocada
pela arma ID 36, e ao equipar a Arma ID 43, ela será trocada pela 42.
ScriptCódigo:
#------------------------------------------------------------------------------# Feito por Guillaume777 e traduzido por Apokalipsy# 4.3# 7/01/2006#==============================================================================#Para mudar os seguintes slots do personagem# $game_actors[1].weapon_slots = [0,0] (são os slots de armas, cada 0 representa uma mão)# $game_actors[1].armor_slots = [2,3,4,5,6,7] (são os slots de armaduras, eu explico depois o funcionamento)##Para fazer uma armadura equipável nos novos slots :# Adicione (5), (6) ou (7) após o seu nome, entre parênteses mesmo, onde cada número representa um slot extra.#Como fazer armas de 2mãos :# Adicione um atributo à ela, chamado 2handed#Como fazer uma arma de duplo ataque:# Adicione um atributo à ela, chamado attackx2##--------------------------------------------------------------------------# * SDK Log Script#--------------------------------------------------------------------------if defined? SDK #if SDK module is there then log script SDK.log('Multi-slot equipment script', 'Guillaume777', '4.3', '2005/12/30')end#--------------------------------------------------------------------------# * Begin SDK Enable Test#--------------------------------------------------------------------------if not defined? SDK or SDK.state('Multi-slot equipment script')
#--------------------------------------------------------------------------# * Begin Multi-slot equipment script#--------------------------------------------------------------------------module G7_MS_MOD #logo abaixo, você definirá todas as opções dos slots dos equipamentos
WEAPON_KINDS = [0,0] #número de armas, cada zero representa um slot de armas# 0 = weapon WEAPON_KIND_NAMES = ['Mão direita', 'Mão esquerda'] #nome customizado para os dois slots extras de armas, deixe em branco ou coloque nil para deixá-los como no padrão ARMOR_KINDS = [1,2,3,4,5,6,7]# 1 = escudo# 2 = capacete# 3 = armadura# 4 = acessório principal# 5, 6 e 7 = acessórios extras EXTRA_SLOT_NAMES = ['Luvas','Botas','Amuleto']
#Estes acima são os nomes para os três slots de equipamentos extras, se você quiser, pode mudá-los sem problema#Você precisa do mesmo número de palavras para definir o mesmo número de slots extras#Para fazê-lo ser um equipamento de um slot extra, crie-o na aba de armaduras,#E adicione um número entre parênteses, definindo qual slot ele deverá ocupar. # MULTI_ATTACK_ELEMENT = 'attackx' #O nome padrão do atributo para armas de múltiplos ataques, o script#irá detectar automaticamente o número de ataques, dependendo do número que estiver após o 'x' HANDS_ELEMENT = 'handed' #O nome padrão para armas que ocupam mais de uma mão, o script#irá detectar automaticamente o número de mãos a ocupar, dependendo do número que estiver antes da palavra 'handed', #ino seu database
SHIELD_HAND_WIELD = true#true = possibilita o uso de escudos, mesmo com armas que ocupam mais de uma mão SHIELD_HAND_SLOT = 1 #o número do slot em que o escudo irá ocupar WEAPON_HAND_WIELD = true #true = possibilita o uso de armas, quando forem mais de 2mãos
WINDOWS_STRETCH = true #true : a janela equip_right se auto-ajusta para caber os slots extras MAX_SHOW_SLOTS = 6 #máximo de slots mostrados em uma mesma janela, se os slots não caberem, você poderá deslizar a janela para mostrar os outros slots#Esta opção não será possível, se você não marcar 'true' na opção de window_strech
STATUS_WINDOW_ARRANGE = false #se você marcar 'true', uma nova janela aparecerá para mostrar os outros slots
HELP_AT_BOTTOM = true #if true : deixará o espaço para aparecer a janela de descrição#inútil, se você não ajustar a coordenada y dessa janela FONT_NAME = "Monotype Corsiva" #font usada, se você não tiver esta, coloque o nome de outra font do tipo TTF
EVADE = false # se o parâmetro draw_actor_parameter estiver configurado para mostrar o parâmetro 7, #( evasão ), então este será mostrado na janela do status_menu# EVADE = true não terá efeito se o STATUS_WINDOW_ARRANGE estiver marcado como falsedef initialize
#Isto ajusta no $data_armors para corrigir o tipo e o slot a ocuparfor armor in $data_armors #para cada armaduraunless armor == nil #se for uma armadura armor.set_adv_type #seta um novo tipoendendsuperend # end initend #end modulemodule RPG
#--------------------------------------------------------------------------# New armor type = number in name of armor#--------------------------------------------------------------------------class Armordef set_adv_type
if @name.sub!(/\((\d+)\)/, '') != nil
@kind = $1.to_i - 1 #seta o tipo e o número no nome de cada armaduraendendend #end armorclass Weapon#--------------------------------------------------------------------------# Returns number of hands needed for weapons#--------------------------------------------------------------------------def number_hands
nb_hands = 1for elementnb in self.element_set #procurar atributo elementname = $data_system.elements[elementnb].downcase
if elementname[-1* G7_MS_MOD::HANDS_ELEMENT.size, G7_MS_MOD::HANDS_ELEMENT.size] == G7_MS_MOD::HANDS_ELEMENT.downcase #if weapons has element for another attack elementname = elementname.delete('a-z') #detecta o número de ataquesif elementname != '' then nb_hands = elementname.to_i
endendendif nb_hands.is_a?(Integer) == false or nb_hands <= 0 nb_hands = 1endreturn nb_hands
end #end number_hands#--------------------------------------------------------------------------# Returns the number of attack the weapon can do#--------------------------------------------------------------------------def number_attacks
for elementnb in self.element_set #procura o atributo #que adiciona a possibilidade de mais ataques elementname = $data_system.elements[elementnb].downcase
if elementname[0,G7_MS_MOD::MULTI_ATTACK_ELEMENT.size] == G7_MS_MOD::MULTI_ATTACK_ELEMENT.downcase #if weapons has element for another attack elementname = elementname.delete('a-z') #detecta o número de ataquesif elementname != '' then nb_attacks = elementname.to_i
endendend
if nb_attacks.is_a?(Integer) == false or nb_attacks <= 0 nb_attacks = 1endreturn nb_attacks
endend #end weaponend #end module#--------------------------------------------------------------------------# Fix armor in $data_armors to correct kind and name#--------------------------------------------------------------------------class Scene_Load < Scene_Filealias g7_ms_scene_title_read_save_data read_save_data
def read_save_data(file)
g7_ms_scene_title_read_save_data(file)for actor in 0...$data_actors.size
if $game_actors[actor] != nil and $game_actors[actor] != 0 then $game_actors[actor].order_armor_ids #organiza as armadurasendendfor armor in $data_armors #para cada armaduraunless armor == nil #se for armadura armor.set_adv_type #seta um novo tipoendend
endendclass Game_Actor < Game_Battler include G7_MS_MOD
attr_accessor :equip_type_force
#--------------------------------------------------------------------------# Init the new slots#--------------------------------------------------------------------------alias g7_ms_game_actor_setup setup
def setup(actor_id)
g7_ms_game_actor_setup(actor_id) #setup normalmenteself.order_armor_ids
end#==============================================================================# Modify how equipment is equiped so that extra items can be equipped#==============================================================================alias g7_ms_game_actor_equip equip
def equip(equip_type, id)if @equip_type_force != nil equip_type = @equip_type_force #equip_type_force é usado para sobrepor o #equip_type argumentendif self.enough_hands?(equip_type,id) == false then return endif equip_type <4> 4for i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]]if armor != nil and armor.guard_element_set.include?(element_id) result /= 2endendendreturn result
endalias g7_ms_game_actor_base_str base_str
def base_str
n = g7_ms_game_actor_base_str
for i in 1...self.weapon_slots.size
weapon = $data_weapons[self.weapon_ids[i]] n += weapon != nil ? weapon.str_plus : 0
endfor i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.str_plus : 0endreturn n
endalias g7_ms_game_actor_base_dex base_dex
def base_dex
n = g7_ms_game_actor_base_dex
for i in 1...self.weapon_slots.size
weapon = $data_weapons[self.weapon_ids[i]] n += weapon != nil ? weapon.dex_plus : 0
endfor i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.dex_plus : 0
endreturn n
endalias g7_ms_game_actor_base_agi base_agi
def base_agi
n = g7_ms_game_actor_base_agi
for i in 1...self.weapon_slots.size
weapon = $data_weapons[self.weapon_ids[i]] n += weapon != nil ? weapon.agi_plus : 0
endfor i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.agi_plus : 0
endreturn n
endalias g7_ms_game_actor_base_int base_int
def base_int
n = g7_ms_game_actor_base_int
for i in 1...self.weapon_slots.size
weapon = $data_weapons[self.weapon_ids[i]] n += weapon != nil ? weapon.int_plus : 0
endfor i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.int_plus : 0
endreturn n
endalias g7_ms_game_actor_base_pdef base_pdef
def base_pdef
n = g7_ms_game_actor_base_pdef
for i in 1...self.weapon_slots.size
weapon = $data_weapons[self.weapon_ids[i]] n += weapon != nil ? weapon.pdef : 0
endfor i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.pdef : 0
endreturn n
endalias g7_ms_game_actor_base_mdef base_mdef
def base_mdef
n = g7_ms_game_actor_base_mdef
for i in 1...self.weapon_slots.size
weapon = $data_weapons[self.weapon_ids[i]] n += weapon != nil ? weapon.mdef : 0
endfor i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.mdef : 0endreturn n
endalias g7_ms_game_actor_base_eva base_eva
def base_eva
n = g7_ms_game_actor_base_eva
for i in 4...self.armor_slots.size
armor = $data_armors[self.armor_ids[i]] n += armor != nil ? armor.eva : 0endreturn n
endend #end class game actorclass Scene_Battle#==============================================================================# Go to phase4 step2 for attack if attack_count < attacks.size#==============================================================================alias g7_ms_scene_battle_phase4_step6 update_phase4_step6
def update_phase4_step6(battler=nil)
#This methods make the battler return to phase4 step2 if there #an extra attack to be madeif battler== nil then #if no parameters g7_ms_scene_battle_phase4_step6 #first do the appropriate action parameters = falseif @active_battler.is_a?(Game_Enemy) then return end
else #if it requires the battler as a parameters g7_ms_scene_battle_phase4_step6(battler) parameters = trueif battler.is_a?(Game_Enemy) then return endendif parameters == true #check which value to use for battler battler.attack_count += 1 #increase the number of attack madeif battler.attack_count == battler.attacks.size or battler.current_action.kind != 0 or battler.current_action.basic != 0 or judge == true#if all attacks are made battler.attack_count = 0 #end of turn and return attack count to 0elseif @action_battlers.include?(@active_battler) == false then @action_battlers.push(battler) end #add the battler again to the action battler.phase = 2 #returns for extra attackendelse@active_battler.attack_count += 1 #increase the number of attack madeif @active_battler.attack_count == @active_battler.attacks.size or @active_battler.current_action.kind != 0 or @active_battler.current_action.basic != 0 or judge == true#if all attacks are made@active_battler.attack_count = 0else@phase4_step = 2endendend #end defend #end classclass Window_Selectable = @actor.weapon_slots.size #if armorreturn index - (@actor.weapon_slots.size - 1)elsif index >= 1 #if extra weaponreturn index + [@actor.armor_slots.size, 4].max #make it lastelsereturn 0endend#==============================================================================# Convert index to equip kind#==============================================================================def index_to_equip_kind(index)#return index of slot in either actor.weapon_slots or actor.armor_slots i = index_to_equip_part(index)if index >= @actor.weapon_slots.size #if armorset = @actor.armor_slots[i-1]
else #if weapon i = i == 0 ? 0 : i - [@actor.armor_slots.size, 4].max
set = @actor.weapon_slots[i]endreturn set != nil ? set : 0endend #end scene_equip#==============================================================================# Shows a new status window if Status_window_arrange is true#==============================================================================if G7_MS_MOD::STATUS_WINDOW_ARRANGE
class Window_Status < Window_Basedef refresh
#------------------------------------------------------------------------------#Begin Multi-slot equipment script Edit#------------------------------------------------------------------------------self.contents.font.name = G7_MS_MOD::FONT_NAME
#------------------------------------------------------------------------------# End Multi-slot equipment script Edit#------------------------------------------------------------------------------self.contents.clear
draw_actor_graphic(@actor, 40, 112) draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 4 + 144, 0) draw_actor_level(@actor, 96, 32) draw_actor_state(@actor, 96, 64) draw_actor_hp(@actor, 96, 112, 172) draw_actor_sp(@actor, 96, 144, 172) draw_actor_parameter(@actor, 96, 192, 0) draw_actor_parameter(@actor, 96, 224, 1) draw_actor_parameter(@actor, 96, 256, 2) draw_actor_parameter(@actor, 96, 304, 3) draw_actor_parameter(@actor, 96, 336, 4) draw_actor_parameter(@actor, 96, 368, 5) draw_actor_parameter(@actor, 96, 400, 6)#------------------------------------------------------------------------------#Begin Multi-slot equipment script Edit#------------------------------------------------------------------------------if G7_MS_MOD::EVADE
draw_actor_parameter(@actor, 96, 432, 7) # activate if you have a draw_actor_paramter method that draw evadeendself.contents.font.color = system_color
self.contents.draw_text(320, 16, 80, 32, 'EXP')self.contents.draw_text(320, 48, 80, 32, 'NEXT')self.contents.font.color = normal_color
self.contents.draw_text(320 + 80, 16, 84, 32, @actor.exp_s, 2)self.contents.draw_text(320 + 80, 48, 84, 32, @actor.next_rest_exp_s, 2)self.contents.font.color = system_color
self.contents.draw_text(320, 80, 96, 32, 'Equipment')for i in 0...@actor.weapon_slots.size
draw_item_name($data_weapons[@actor.weapon_ids[i]], 320 + 16, 80 + 24 * (i+1))endfor i in 0...@actor.armor_slots.size
draw_item_name($data_armors[@actor.armor_ids[i]], 320 + 16, 200 + 24 * (i - 4 + @actor.weapon_slots.size))end#------------------------------------------------------------------------------# End Multi-slot equipment script Edit#------------------------------------------------------------------------------endendendend #end SDK