Sign in to follow this  
Followers 0
Sampi

ffvii menu

14 posts in this topic

Una cosa, tngo el ff7 menu pero como lo hago para que haya tambien la ventanilla de limite y de materia, si alguien me lo postea con ya todo hecho mejor k a mi el scripteado no se me da muy bien

ffvii menu [SPOILER]
CODE
#*********************************************************
#Final Fantasy VII menu setup by AcedentProne
#*********************************************************
#To use:
#If you do not want Faces, go to line 94
#and change delete the # of draw_actor_graphic
#and put a # infront of draw_actor_face
#
#Create a new folder in the Characters folder, and call it Faces
#Adding faces: add a 80x80 picture with the same name as the characterset it
#corrosponds with in the Faces folder


#========================================
#■ Window_Base
#--------------------------------------------------------------------------------
# Setting functions for the "Base"
#========================================


class Window_Base < Window

def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
end
def draw_actor_battler_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end

#========================================
#■ Game_Map
#--------------------------------------------------------------------------------
# Setting functions for the Map
#========================================
class Game_Map

def name
$map_infos[@map_id]
end
end

#========================================
#■ Window_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end

#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
# Sets up the Choosing.
#==============================================================================

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 560, 454)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Drawing Info on Screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 94
y = i * 110
actor = $game_party.actors[i]
#draw_actor_face(actor, 12, y + 90) #To get rid of the Face, put a "#" before the draw_ of this line
draw_actor_graphic(actor, 48, y + 65) #and delete the "#" infront of draw of this line
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 72, y)
draw_actor_level(actor, x, y + 18)
draw_actor_state(actor, x + 168, y)
draw_actor_exp(actor, x+ 144, y + 38)
draw_actor_hp(actor, x, y + 38)
draw_actor_sp(actor, x, y + 58)
end
end
#--------------------------------------------------------------------------
# Update of Cursor
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 110, self.width - 32, 96)
end
end
end

#=======================================#
# ■Window_GameStats #
# written by AcedentProne #
#------------------------------------------------------------------------------#

class Window_GameStats < Window_Base
def initialize
super(0, 0, 160, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end

def refresh
self.contents.clear
#Drawing gold into separate commas by Dubealex
case $game_party.gold
when 0..9999
gold = $game_party.gold
when 10000..99999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+","+array[2].to_s+array[3].to_s+array[4].to_s
when 100000..999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+array[2].to_s+","+array[3].to_s+array[4].to_s+array[5].to_s
when 1000000..9999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+","+array[1].to_s+array[2].to_s+array[3].to_s+","+array[4].to_s+array[5].to_s+array[6].to_s
end
#Draw Gold
self.contents.font.color = system_color
gold_word = $data_system.words.gold.to_s
cx = contents.text_size(gold_word).width
cx2=contents.text_size(gold.to_s).width
self.contents.draw_text(4, 4, 120-cx-2, 32, gold_word)
self.contents.font.color = normal_color
self.contents.draw_text(124-cx2+1, 4, cx2, 32, gold.to_s, 2)
self.contents.font.color = system_color
# Draw "Time"
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, -10, 120, 32, text, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 120, 32, "Tiempo")
end
#--------------------------------------------------------------------------
# Update of The count
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end

#==============================================================================
# ■ Window_Mapname
#------------------------------------------------------------------------------
#  Draws the Map name
#==============================================================================

class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 320, 44)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end

#-------------------------------------------------------#
# Draws info on screen
#-------------------------------------------------------#
def refresh
self.contents.clear

# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 220, 32, "Localización")
self.contents.font.color = normal_color
self.contents.draw_text(120, -10, 310, 32, $game_map.name)
end
end

#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# FF7 menu layout as requested by AcedentProne.
#==============================================================================

class Scene_Menu
#--------------------------- edit-------------------------------
attr_reader :status_window
#/--------------------------- edit-------------------------------

def initialize(menu_index = 0)
@menu_index = menu_index
end
def main

s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Estado"
s5 = "Guardar"
s7 = "Salir"

#--------------------------- edit-------------------------------
# Command menu
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7])
@command_window.x = 640 - @command_window.width
@command_window.y = 480
@command_window.z = 110
@command_window.index = @menu_index
#If certain options are avaliable
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
#Showing location window
@map = Window_Mapname.new
@map.x = 640 - @map.width
@map.y = 0 - @map.height - 1
@map.z = 110
#Showing the game stats
@game_stats_window = Window_GameStats.new
@game_stats_window.x = 0 - @game_stats_window.width
@game_stats_window.y = 480 - @map.height - @game_stats_window.height
@game_stats_window.z =110

#Showing the Menu Status window
@status_window = Window_MenuStatus.new
@status_window.x = 640
@status_window.y = 8
@status_window.z = 100


Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@game_stats_window.dispose
@status_window.dispose
@map.dispose
end
#--------------------------------------------------------------------------
#Defining the delay
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
sleep 0.01
Graphics.update
end
end
#--------------------------------------------------------------------------
# Updating
#--------------------------------------------------------------------------
def update
@command_window.update
@game_stats_window.update
@status_window.update
@map.update
#Moving Windows inplace
gamepos = 640 - @game_stats_window.width
mappos = 480 - @map.height - 1
if @command_window.y > 0
@command_window.y -= 60
end
if @game_stats_window.x < gamepos
@game_stats_window.x += 80
end
if @map.y < mappos
@map.y += 80
end
if @status_window.x > 0
@status_window.x -= 80
end
#Saying if options are active
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# Updating the Command Selection
#--------------------------------------------------------------------------
def update_command
# If B button is pushed
if Input.trigger?(Input::B)
# Plays assigned SE
$game_system.se_play($data_system.cancel_se)
#Looping for moving windows out
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
# Go to Map
$scene = Scene_Map.new
return
end
# If C button is pused
if Input.trigger?(Input::C)
# Checks actor size
if $game_party.actors.size == 0 and @command_window.index < 4
# plays SE
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Item.new
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Save.new

when 5
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_End.new
end
return
end
end
#--------------------------------------------------------------------------
# Updating Status Screen
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 1
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Skill.new(@status_window.index)
when 2
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Equip.new(@status_window.index)
when 3
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
[/SPOILER]

Materia system
[SPOILER]
CODE
#==============================================================================
# Materia System
#==============================================================================
# SephirothSpawn
# 1.28.06
# Version 2.01
#==============================================================================

#------------------------------------------------------------------------------
# * Explanations:
#------------------------------------------------------------------------------
#    ~ Weapon & Armor Materia Slots
#        - Basic Syntax: Item ID # => Slots Array
#          - Slots Array: [Number of Paired Slots, Single Slots]
#        ** You must not exceed 8 (Paired * 2 + Single * 1 <= 10)
#    ~ Materia List
#      * Creating Your Own Materia
#        - Basic Syntax: Materia.new(id, name, type, stat_effects,
#                                   elements, states, new_value, m_value,
#                                   skills, exp_levels, special_effect)  
#
#     - id : The Idea Number of you materia. Start from 1 and add 1
#     - name : The Name of your materia
#     - type : The Type Of Materia. Choose From One of The Following:
#           'Skill', 'Command', 'Summon', 'Support', 'Independent'
#     - stat_effects : The Percent of each stat that materia will effect
#           [ Hp, Sp, Str, Dex, Agi, Int ]
#     - elements : An Array of each Element ID from the systems tab
#     - states : An Array of each State Id from the Status tab
#     - new_value : The cost to buy the Materia
#     - master_value : The value of the Materia when Mastered
#     - Skills : An array of the skills you learn from the Materia.
#          (Use for Skill, Command & Summon)
#     - Exp Levels : An array of the experience required to level
#           The First value in the array is required to get level 2
#     - Special Effect : A special Effect of the Materia.
#           ~ All
#           ~ Elemental
#           ~ Status
#           ~ Steal As Well
#           ~ HP Absorb
#           ~ MP Absorb
#           ~ MP Turbo
#           ~ Exp Plus
#           ~ Gil Plus
#           ~ HP Plus
#           ~ SP Plus
#           ~ Strength Plus
#           ~ Defense Plus
#           ~ Speed Plus
#           ~ Magic Plus
#------------------------------------------------------------------------------

#==============================================================================
# ** RPG
#==============================================================================

module RPG
 
 #============================================================================
 # ** Weapon
 #============================================================================
 class Weapon
   #--------------------------------------------------------------------------
   # * Public Instance Variables
   #--------------------------------------------------------------------------
   attr_accessor :paired_materia
   attr_accessor :single_materia
   #--------------------------------------------------------------------------
   # * Set Materia Slots
   #--------------------------------------------------------------------------
   def set_materia_slots(slots)
     @paired_materia, @single_materia = slots[0], slots[1]
   end
 end
 
 #============================================================================
 # ** Armor
 #============================================================================
 class Armor
   #--------------------------------------------------------------------------
   # * Public Instance Variables
   #--------------------------------------------------------------------------
   attr_accessor :paired_materia
   attr_accessor :single_materia
   #--------------------------------------------------------------------------
   # * Set Materia Slots
   #--------------------------------------------------------------------------
   def set_materia_slots(slots)
     @paired_materia, @single_materia = slots[0], slots[1]
   end
 end
end

#==============================================================================
# ** Materia
#==============================================================================

class Materia
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader      :id
 attr_accessor   :name
 attr_accessor   :type
 attr_accessor   :stat_effects
 attr_accessor   :elements
 attr_accessor   :states
 attr_accessor   :new_value
 attr_accessor   :master_value
 attr_accessor   :skills
 attr_accessor   :exp_levels
 attr_accessor   :special_effect
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(id, name, type, stat_effects = [], elements = [], states = [],
   n_value = 500, m_value = 1000, skills = [], exp_levels = [], s_effect = nil)
   # Sets Parameters
   @id, @name, @type, @stat_effects, @elements, @states,
   @new_value, @master_value, @skills, @exp_levels, @special_effect =
     id, name, type, stat_effects, elements, states,
     n_value, m_value, skills, exp_levels, s_effect
   # Sets Exp
   @experience = 0
 end
 #--------------------------------------------------------------------------
 # * Experince
 #--------------------------------------------------------------------------
 def experience
   return @experience
 end
 #--------------------------------------------------------------------------
 # * Experince
 #--------------------------------------------------------------------------
 def experience=(num)
   @experience = [num, @exp_levels[@exp_levels.size - 1]].min
 end
 #--------------------------------------------------------------------------
 # * Level
 #--------------------------------------------------------------------------
 def level
   for i in 0...@exp_levels.size
     if @experience >= @exp_levels[@exp_levels.size - (1 + i)]
       return @exp_levels.size - i + 1
     end
   end
   return 1
 end
 #--------------------------------------------------------------------------
 # * Buy Value
 #--------------------------------------------------------------------------
 def buy_value
   return @new_value
 end
 #--------------------------------------------------------------------------
 # * Sell Value
 #--------------------------------------------------------------------------
 def sell_value
   return [(@master_value * (@experience / @exp_levels[@exp_levels.size - 1].to_f)).to_i,
     @new_value / 2].max
 end
 #--------------------------------------------------------------------------
 # * Get Hue
 #--------------------------------------------------------------------------
 def get_hue
   case @type
   when 'Skill'
     hue = 130
   when 'Command'
     hue = 60
   when 'Summon'
     hue = 10
   when 'Support'
     hue = 180
   when 'Independent'
     hue = 300
   end
   return hue
 end
end

#==============================================================================
# ** Materia_System
#==============================================================================

module Materia_System
 
 #==============================================================================
 # ** CONSTANTS
 #==============================================================================

 # ~ Weapons Materia Slots
   WEAPON_MATERIA_SLOTS = {
     1 => [1, 1], 2 => [1, 2], 3 => [2, 2], 4 => [4, 0],
     5 => [1, 1], 6 => [1, 2], 7 => [2, 2], 8 => [4, 0],
     9 => [1, 1], 10 => [1, 2], 11 => [2, 2], 12 => [4, 0],
     13 => [1, 1], 14 => [1, 2], 15 => [2, 2], 16 => [4, 0],
     17 => [1, 1], 18 => [1, 2], 19 => [2, 2], 20 => [4, 0],
     21 => [1, 1], 22 => [1, 2], 23 => [2, 2], 24 => [4, 0],
     25 => [1, 1], 26 => [1, 2], 27 => [2, 2], 28 => [4, 0],
     29 => [1, 1], 30 => [1, 2], 31 => [2, 2], 32 => [4, 0],
     33 => [2, 1], 34 => [2, 2], 35 => [3, 2], 36 => [3, 2],
     37 => [1, 2], 38 => [2, 2], 39 => [4, 0], 40 => [2, 1],
     41 => [2, 2], 42 => [2, 1], 43 => [2, 2], 44 => [2, 1],
     45 => [2, 2], 46 => [2, 1], 47 => [4, 0], 48 => [2, 3],
     49 => [2, 3], 50 => [2, 3]
     }
 # ~ Armors Materia Slots
   ARMORS_MATERIA_SLOTS = {
     1 => [1, 1], 2 => [1, 2], 3 => [2, 2], 4 => [4, 0],
     5 => [1, 1], 6 => [1, 2], 7 => [2, 2], 8 => [4, 0],
     9 => [1, 1], 10 => [1, 2], 11 => [2, 2], 12 => [4, 0],
     13 => [1, 1], 14 => [1, 2], 15 => [2, 2], 16 => [4, 0],
     17 => [1, 1], 18 => [1, 2], 19 => [2, 2], 20 => [4, 0],
     21 => [1, 1], 22 => [1, 2], 23 => [2, 2], 24 => [4, 0],
     25 => [1, 1], 26 => [1, 2], 27 => [2, 2], 28 => [4, 0],
     29 => [1, 1], 30 => [1, 2], 31 => [2, 2], 32 => [4, 0]
     }
 # ~ Materia List
#    (id, name, type, stat_effects = [], elements = [], states = [],
#    n_value = 500, m_value = 1000, skills = [], exp_levels = [], s_effect = nil)      
   MATERIA_LIST = [nil,
     # Skill Materia
     Materia.new(1, 'Cura', 'Skill', [ -5, 5, -3, 0, 0, 3 ], [], [], 1000, 10000,
       [1, 2, 3, 6], [1000, 3000, 6000, 10000]),
     Materia.new(2,'Remedio', 'Skill', [ -4, 4, -3, 0, 0, 3 ], [], [], 750, 5000,
       [4, 5], [2500, 5000]),
     Materia.new(3, 'Fuego', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [1], [], 1000, 7500,
       [7, 8, 9], [1000, 3000, 7500]),
     Materia.new(4, 'Hielo', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [2], [], 1000, 7500,
       [10, 11, 12], [1000, 3000, 7500]),
     Materia.new(5, 'Rayo', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [3], [], 1000, 7500,
       [13, 14, 15], [1000, 3000, 7500]),
     Materia.new(6, 'Agua', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [4], [], 1000, 7500,
       [16, 17, 18], [1000, 3000, 7500]),
     Materia.new(7, 'Tierra', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [5], [], 1000, 7500,
       [19, 20, 21], [1000, 3000, 7500]),
     Materia.new(8, 'Viento', 'Skill', [ -3, 3, -1, 0, 0, 1 ], [6], [], 1000, 7500,
       [22, 23, 24], [1000, 3000, 7500]),
     Materia.new(9, 'Luz', 'Skill', [ -5, 5, -3, 0, 0, 3 ], [7], [], 1000, 7500,
       [25, 26, 27], [1000, 3000, 7500]),
     Materia.new(10, 'Oscuro', 'Skill', [ -5, 5, -3, 0, 0, 3 ], [8], [], 1000, 7500,
       [28, 29, 30], [1000, 3000, 7500]),
     Materia.new(11, 'Fulgor', 'Skill', [ -4, 4, -2, 0, 0, 2 ], [], [], 1500, 7500,
       [31, 32], [3000, 7500]),
     Materia.new(12, 'Veneno', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [3], 750, 4500,
       [33, 34], [1500, 4500]),
     Materia.new(13, 'Dizzy', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [4], 750, 4500,
       [35, 36], [1500, 4500]),
     Materia.new(14, 'Mudo', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [5], 750, 4500,
       [37, 38], [1500, 4500]),
     Materia.new(15, 'Confusion', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [6], 750, 4500,
       [39, 40], [1500, 4500]),
     Materia.new(16, 'Dormir', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [7], 750, 4500,
       [41, 42], [1500, 4500]),
     Materia.new(17, 'Paralizar', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [8], 750, 4500,
       [43, 44], [1500, 4500]),
     Materia.new(18, 'Debilidad', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [9], 750, 4500,
       [45, 46], [1500, 4500]),
     Materia.new(19, 'Maldicion', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [10], 750, 4500,
       [47, 48], [1500, 4500]),
     Materia.new(20, 'Freno', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [11], 750, 4500,
       [49, 50], [1500, 4500]),
     Materia.new(21, 'Reducción', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [12], 750, 4500,
       [51, 52], [1500, 4500]),
     Materia.new(22, 'Furia', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [13], 750, 4500,
       [53], [3000]),
     Materia.new(23, 'Barrera', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [14], 750, 4500,
       [54], [3000]),
     Materia.new(24, 'Resistir', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [15], 750, 4500,
       [55], [3000]),
     Materia.new(25, 'Blink', 'Skill', [ -2, 2, 0, 0, 0, 0 ], [], [16], 750, 4500,
       [56], [3000]),
     # Command Materia
     Materia.new(26, 'Guerrero',  'Command', [0, 0, 5, 3, - 3, - 5], [], [], 3000, 20000,
       [57, 58, 59, 60], [2500, 5000, 9000, 14000, 2000]),
     Materia.new(27, 'Lancero',  'Command', [0, 0, 4, 4, - 4, - 4], [], [], 3000, 20000,
       [61, 62, 63, 64], [2500, 5000, 9000, 14000, 2000]),
     Materia.new(28, 'Mercenario', 'Command', [0, 0, 7, 2, - 2, - 7], [], [], 3000, 20000,
       [65, 66, 67, 68], [2500, 5000, 9000, 14000, 2000]),
     Materia.new(29, 'Ladron', 'Command', [0, 0, 1, 8, - 8, - 1], [], [], 3000, 20000,
       [69, 70, 71, 72], [2500, 5000, 9000, 14000, 2000]),
     Materia.new(30, 'Cazador', 'Command', [2, 2, 2, 2, 2, 2], [], [], 3000, 20000,
       [73, 74, 75, 76], [2500, 5000, 9000, 14000, 2000]),
     Materia.new(31, 'Pistolero', 'Command', [0, 4, 4, 0, 4, 0], [], [], 3000, 20000,
       [77, 78, 79, 80], [2500, 5000, 9000, 14000, 2000]),
     # Summon Materia (Not real summons, but you would set them up the same
     Materia.new(32, 'Invocación 1', 'Summon', [-10, 10, -5, -5, 0, 10], [], [], 5000, 25000,
       [60, 64], [6500, 15000, 25000]),
     Materia.new(33, 'Invocación 2', 'Summon', [-10, 10, -5, -5, 0, 10], [], [], 5000, 25000,
       [68, 72], [6500, 15000, 25000]),
     Materia.new(34, 'Invocación 3', 'Summon', [-10, 10, -5, -5, 0, 10], [], [], 5000, 25000,
       [76, 80], [6500, 15000, 25000]),
     # Support Materia
     Materia.new(35, 'Todos', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'All'),
     Materia.new(36, 'Elemental', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Elemental'),
     Materia.new(37, 'Estado', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Status'),
     Materia.new(38, 'Robo', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Steal as well'),
     Materia.new(39, 'HP Absorber', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'HP Absorb'),
     Materia.new(40, 'MP Absorber', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'MP Absorb'),
     Materia.new(41, 'MP Turbo', 'Support', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'MP Turbo'),
     # Independent Mater
     Materia.new(42, 'Exp Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Exp Plus'),
     Materia.new(43, 'Guil Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Gil Plus'),
     Materia.new(44, 'HP Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'HP Plus'),
     Materia.new(45, 'SP Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'SP Plus'),
     Materia.new(46, 'Fuerza Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Strength Plus'),
     Materia.new(47, 'Defensa Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Defense Plus'),
     Materia.new(48, 'Velocidad Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Speed Plus'),
     Materia.new(49, 'Magia Plus', 'Independent', [0, 0, 0, 0, 0, 0], [], [], 2000, 10000,
       [], [2000, 4000, 7000, 11000], 'Magic Plus')
   ]
end

#==============================================================================
# ** Game_Battler (part 3)
#==============================================================================

class Game_Battler
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias seph_materiasystem_gamebattler_skilleffect skill_effect
 #--------------------------------------------------------------------------
 # * Apply Skill Effects
 #     user  : the one using skills (battler)
 #     skill : skill
 #--------------------------------------------------------------------------
 def skill_effect(user, skill)
   # Orginal Skill Effects Method
   seph_materiasystem_gamebattler_skilleffect(user, skill)
   if user.is_a?(Game_Actor)
     # Gets Paired Materia
     materia_set = user.return_paired_materia
     for paired_set in materia_set
       materia = paired_set[2]
       other_materia = paired_set[3]
       # HP Absorb
       if materia.special_effect == 'HP Absorb'
         for skill_id in other_materia.skills
           unless skill_id == 0
             m_skill = $data_skills[skill_id]
             if skill == m_skill
               hp = (user.maxhp * 0.1).to_i
               user.hp += [hp, user.maxhp - hp].min
               user.damage = - [hp, user.maxhp - hp].min
               user.damage_pop = true
             end
           end
         end
       end
       # MP Absorb
       if materia.special_effect == 'MP Absorb'
         for skill_id in other_materia.skills
           unless skill_id == 0
             m_skill = $data_skills[skill_id]
             if skill == m_skill
               sp = (user.maxsp * 0.1).to_i
               user.sp += [sp, user.maxsp - sp].min
               user.damage = - [sp, user.maxsp - sp].min
               user.damage_pop = true
             end
           end
         end
       end
       # MP Turbo
       if materia.special_effect == 'MP Turbo'
         for skill_id in other_materia.skills
           unless skill_id == 0
             m_skill = $data_skills[skill_id]
             if skill == m_skill
               unless user.sp < skill.sp_cost * 2
                 if self.damage > 0
                   self.damage *= 2
                   user.sp -= skill.sp_cost
                   user.damage = 'MP TURBO!'
                   user.damage_pop = true
                 end
               end
             end
           end
         end
       end
       # Steal As Well
       if materia.special_effect == 'Steal as well'
         for skill_id in other_materia.skills
           unless skill_id == 0
             m_skill = $data_skills[skill_id]
             if skill == m_skill
               if self.is_a?(Game_Battler)
                 if (rand(100) < self.treasure_prob)
                   unless self.item_id == 0
                     item = $data_items[self.item_id]
                   end
                   unless self.weapon_id == 0
                     item = $data_weapons[self.weapon_id]
                   end
                   unless self.armor_id == 0
                     item = $data_armors[self.armor_id]
                   end
                   unless item.nil?
                     case item
                     when RPG::Item
                       $game_party.gain_item(self.item_id, 1)
                     when RPG::Weapon
                       $game_party.gain_weapon(self.weapon_id, 1)
                     when RPG::Armor
                       $game_party.gain_armor(self.armor_id, 1)
                     end
                     user.damage = "Stole #{item.name}"
                     user.damage_pop = true
                   end
                 end
               end
             end
           end
         end
       end
     end
   end
 end
end

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor   :weapon_materia
 attr_accessor   :armor1_materia
 attr_accessor   :armor2_materia
 attr_accessor   :armor3_materia
 attr_accessor   :armor4_materia
 attr_accessor   :materia_skills
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias seph_materiasystem_gameactor_init initialize
 alias seph_materiasystem_gameactor_setup setup
 alias seph_materiasystem_gameactor_skills skills
 alias seph_materiasystem_gameactor_maxhp maxhp
 alias seph_materiasystem_gameactor_maxsp maxsp
 alias seph_materiasystem_gameactor_str str
 alias seph_materiasystem_gameactor_dex dex
 alias seph_materiasystem_gameactor_agi agi
 alias seph_materiasystem_gameactor_int int
 alias seph_materiasystem_gameactor_equip equip
 alias seph_materiasystem_gameactor_exp exp
 alias seph_materiasystem_gameactor_elementrate element_rate
 alias seph_materiasystem_gameactor_stateguard? state_guard?
 alias seph_materiasystem_gameactor_elementset element_set
 alias seph_materiasystem_gameactor_plusstateset plus_state_set
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(actor_id)
   # Sets Up Materia Slots
   @weapon_materia = Array.new
   @armor1_materia = Array.new
   @armor2_materia = Array.new
   @armor3_materia = Array.new
   @armor4_materia = Array.new
   # Orginal Initialization Method
   seph_materiasystem_gameactor_init(actor_id)
 end
 #--------------------------------------------------------------------------
 # * Setup
 #--------------------------------------------------------------------------
 def setup(actor_id)
   # Orginal Setup Method
   seph_materiasystem_gameactor_setup(actor_id)
   # Materia Skills
   @materia_skills = []
   # Adds Weapon Materia
   sn = $data_weapons[@weapon_id].paired_materia * 2 +
     $data_weapons[@weapon_id].single_materia unless @weapon_id == 0
   @weapon_materia = @weapon_id == 0 ? [] : Array.new(sn, nil)
   # Adds Shield Materia
   sn = $data_armors[@armor1_id].paired_materia * 2 +
     $data_armors[@armor1_id].single_materia unless @armor1_id == 0
   @armor1_materia = @armor1_id == 0 ? [] : Array.new(sn, nil)
   # Adds Head Materia
   sn = $data_armors[@armor2_id].paired_materia * 2 +
     $data_armors[@armor2_id].single_materia unless @armor2_id == 0
   @armor2_materia = @armor2_id == 0 ? [] : Array.new(sn, nil)
   # Adds Body Materia
   sn = $data_armors[@armor3_id].paired_materia * 2 +
     $data_armors[@armor3_id].single_materia unless @armor3_id == 0
   @armor3_materia = @armor3_id == 0 ? [] : Array.new(sn, nil)
   # Adds Accessory Materia
   sn = $data_armors[@armor4_id].paired_materia * 2 +
     $data_armors[@armor4_id].single_materia unless @armor4_id == 0
   @armor4_materia = @armor4_id == 0 ? [] : Array.new(sn, nil)
 end
 #--------------------------------------------------------------------------
 # * Skills
 #--------------------------------------------------------------------------
 def skills
   # Deletes Materia Skills
   for skill_id in @materia_skills
     self.forget_skill(skill_id)
   end
   # Original Skills Method
   skills = seph_materiasystem_gameactor_skills
   # Adds Skills Attached to Weapon & Armors
   for materia in @weapon_materia + @armor1_materia + @armor2_materia +
     @armor3_materia + @armor4_materia
     unless materia.nil?
       self.learn_materia_skill(materia)
     end
   end
   # Returns Skills
   return @skills
 end
 #--------------------------------------------------------------------------
 # * Learn Materia Skill
 #--------------------------------------------------------------------------
 def learn_materia_skill(materia)
   # If Skill Materia
   if materia.type == 'Skill' || materia.type == 'Command' || materia.type == 'Summon'
     for i in 0...materia.level
       skill_id = materia.skills[i]
       # Learn Skill
       self.learn_skill(skill_id)
       # Adds Skills To Materia Skills
       @materia_skills << skill_id
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Get Maximum HP
 #--------------------------------------------------------------------------
 def maxhp
   # Orginal Max Hp Method
   n = seph_materiasystem_gameactor_maxhp    
   # Collects HP Difference From Materia
   variance = 0
   for materia in @weapon_materia + @armor1_materia + @armor2_materia +
       @armor3_materia + @armor4_materia
     unless materia.nil?
       variance += materia.stat_effects[0]
       if materia.special_effect == 'HP Plus'
         variance += (materia.level * 10)
       end
     end
   end
   # Takes Percentage
   n *= ((100 + variance) / 100.0)
   n = [[Integer(n), 0].max, 9999].min
   return n
 end
 #--------------------------------------------------------------------------
 # * Get HP
 #--------------------------------------------------------------------------
 def hp
   @hp = [@hp, maxhp].min
   return @hp
 end
 #--------------------------------------------------------------------------
 # * Get Maximum SP
 #--------------------------------------------------------------------------
 def maxsp
   # Orginal Max Sp Method
   n = seph_materiasystem_gameactor_maxsp
   # Collects SP Difference From Materia
   variance = 0
   for materia in @weapon_materia + @armor1_materia + @armor2_materia +
       @armor3_materia + @armor4_materia
     unless materia.nil?
       variance += materia.stat_effects[1]
       if materia.special_effect == 'SP Plus'
         variance += (materia.level * 10)
       end
     end
   end
   # Takes Percentage
   n *= ((100 + variance) / 100.0)
   n = [[Integer(n), 0].max, 9999].min
   return n
 end
 #--------------------------------------------------------------------------
 # * Get SP
 #--------------------------------------------------------------------------
 def sp
   @sp = [@sp, maxsp].min
   return @sp
 end
 #--------------------------------------------------------------------------
 # * Get Strength (STR)
 #--------------------------------------------------------------------------
 def str
   # Orginal Max Str Method
   n = seph_materiasystem_gameactor_str  
   # Collects SP Difference From Materia
   variance = 0
   for materia in @weapon_materia + @armor1_materia + @armor2_materia +
       @armor3_materia + @armor4_materia
     unless materia.nil?
       variance += materia.stat_effects[2]
       if materia.special_effect == 'Strength Plus'
         variance += (materia.level * 5)
       end
     end
   end
   # Takes Percentage
   n *= ((100 + variance) / 100.0)
   n = [[Integer(n), 1].max, 999].min
   return n
 end
 #--------------------------------------------------------------------------
 # * Get Dexterity (DEX)
 #--------------------------------------------------------------------------
 def dex
   # Orginal Max Dex Method
   n = seph_materiasystem_gameactor_dex  
   # Collects SP Difference From Materia
   variance = 0
   for materia in @weapon_materia + @armor1_materia + @armor2_materia +
       @armor3_materia + @armor4_materia
     unless materia.nil?
       variance += materia.stat_effects[3]
       if materia.special_effect == 'Defense Plus'
         variance += (materia.level * 5)
       end
     end
   end
   # Takes Percentage
   n *= ((100 + variance) / 100.0)
   n = [[Integer(n), 1].max, 999].min
   return n
 end
 #--------------------------------------------------------------------------
 # * Get Agility (AGI)
 #--------------------------------------------------------------------------
 def agi
   # Orginal Max Agi Method
   n = seph_materiasystem_gameactor_agi  
   # Collects SP Difference From Materia
   variance = 0
   for materia in @weapon_materia + @armor1_materia + @armor2_materia +
       @armor3_materia + @armor4_materia
     unless materia.nil?
       
0

Share this post


Link to post
Share on other sites
No se si lo pueden borrar todos los usuarios... si quieres borro el último tuyo. Para que salgan la ventana de límite y materia tienes que tener esos dos scripts para empezar. Para seguir, ponme aquí cómo se llama a esos scripts y en un momento lo agrego. cool.gif
0

Share this post


Link to post
Share on other sites
es k no se como se llama a esos scripts XD aora posteo los scripts

http://www.freewebs.com/rsooo/limite.txt
http://www.freewebs.com/rsooo/materia.txt

EDIT: equipar materia $scene = Scene_MateriaEquip.new
pero el de limite no se Edited by Sampi
0

Share this post


Link to post
Share on other sites
Este tiene integrado el sistema de materia, si te gusta el lugar donde aparece dímelo para que te de u par de indicaciones más. No he podido poner el de límite porque parece que si pongo algo más a mi me crea conflicto con otro script... así que mejor dime primero si como está de momento te parece bien.
[spoiler]
CODE
#*********************************************************
#Final Fantasy VII menu setup by AcedentProne
#*********************************************************
#To use:
#If you do not want Faces, go to line 94
#and change delete the # of draw_actor_graphic
#and put a # infront of draw_actor_face
#
#Create a new folder in the Characters folder, and call it Faces
#Adding faces: add a 80x80 picture with the same name as the characterset it
#corrosponds with in the Faces folder


#========================================
#■ Window_Base
#--------------------------------------------------------------------------------
# Setting functions for the "Base"
#========================================


class Window_Base < Window

def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
end
def draw_actor_battler_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end

#========================================
#■ Game_Map
#--------------------------------------------------------------------------------
# Setting functions for the Map
#========================================
class Game_Map

def name
$map_infos[@map_id]
end
end

#========================================
#■ Window_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end




#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  Sets up the Choosing.
#==============================================================================

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 560, 454)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Drawing Info on Screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 94
y = i * 110
actor = $game_party.actors[i]
#draw_actor_face(actor, 12, y + 90) #To get rid of the Face, put a "#" before the draw_ of this line
draw_actor_graphic(actor, 48, y + 65) #and delete the "#" infront of draw of this line
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 72, y)
draw_actor_level(actor, x, y + 18)
draw_actor_state(actor, x + 168, y)
draw_actor_exp(actor, x+ 144, y + 38)
draw_actor_hp(actor, x, y + 38)
draw_actor_sp(actor, x, y + 58)
end
end
#--------------------------------------------------------------------------
# Update of Cursor
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 110, self.width - 32, 96)
end
end
end

#=======================================#
# ■Window_GameStats                                                             #
# written by AcedentProne                                                          #
#------------------------------------------------------------------------------#

class Window_GameStats < Window_Base
def initialize
super(0, 0, 160, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
end

def refresh
self.contents.clear
#Drawing gold into separate commas by Dubealex
case $game_party.gold
when 0..9999
gold = $game_party.gold
when 10000..99999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+" "+array[2].to_s+array[3].to_s+array[4].to_s
when 100000..999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+array[2].to_s+" "+array[3].to_s+array[4].to_s+array[5].to_s
when 1000000..9999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+" "+array[1].to_s+array[2].to_s+array[3].to_s+" "+array[4].to_s+array[5].to_s+array[6].to_s
end
#Draw Gold
self.contents.font.color = system_color
gold_word = $data_system.words.gold.to_s
cx = contents.text_size(gold_word).width
cx2=contents.text_size(gold.to_s).width
self.contents.draw_text(4, 4, 120-cx-2, 32, gold_word)
self.contents.font.color = normal_color
self.contents.draw_text(124-cx2+1, 4, cx2, 32, gold.to_s, 2)
self.contents.font.color = system_color
# Draw "Time"
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, -10, 120, 32, text, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 120, 32, "Tiempo")
end
#--------------------------------------------------------------------------
# Update of The count
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end

#==============================================================================
# ■ Window_Mapname
#------------------------------------------------------------------------------
#  Draws the Map name
#==============================================================================

class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 320, 44)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
end
#--------------------------------------------------------------------------
# Draws info on screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear

# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 220, 32, "Localización")
self.contents.font.color = normal_color
self.contents.draw_text(120, -10, 310, 32, $game_map.name)
end
end

#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# FF7 menu layout as requested by AcedentProne.
#==============================================================================

class Scene_Menu
#--------------------------- edit-------------------------------
attr_reader :status_window
#/--------------------------- edit-------------------------------

def initialize(menu_index = 0)
@menu_index = menu_index
end
def main
 
s1 = $data_system.words.item
s2 = "Materia"
s3 = $data_system.words.skill
s4 = $data_system.words.equip
s5 = "Estado"
s6 = "Guardar"
s7 = "Salir"

#--------------------------- edit-------------------------------  
# Command menu
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.x = 640 - @command_window.width
@command_window.y = 480
@command_window.z = 110
@command_window.index = @menu_index
#If certain options are avaliable
if $game_party.actors.size == 0
 @command_window.disable_item(0)
 @command_window.disable_item(1)
 @command_window.disable_item(2)
 @command_window.disable_item(3)
end
if $game_system.save_disabled
 @command_window.disable_item(4)
end
#Showing location window
@map = Window_Mapname.new
@map.x = 640 - @map.width
@map.y = 0 - @map.height - 1
@map.z = 110
#Showing the game stats
@game_stats_window = Window_GameStats.new
@game_stats_window.x = 0 - @game_stats_window.width
@game_stats_window.y = 480 - @map.height - @game_stats_window.height
@game_stats_window.z =110
 
#Showing the Menu Status window
@status_window = Window_MenuStatus.new
@status_window.x = 640
@status_window.y = 8
@status_window.z = 100

 
Graphics.transition
loop do
 Graphics.update
 Input.update
 update
 if $scene != self
   break
 end
end
Graphics.freeze
@command_window.dispose
@game_stats_window.dispose
@status_window.dispose
@map.dispose
end
#--------------------------------------------------------------------------
#Defining the delay
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
 sleep 0.01
 Graphics.update
end
end
#--------------------------------------------------------------------------
# Updating
#--------------------------------------------------------------------------
def update
@command_window.update
@game_stats_window.update
@status_window.update
@map.update
#Moving Windows inplace
gamepos = 640 - @game_stats_window.width
mappos = 480 - @map.height - 1
if @command_window.y > 0
@command_window.y -= 60
end
if @game_stats_window.x < gamepos
@game_stats_window.x += 80
end
if @map.y < mappos
@map.y += 80
end
if @status_window.x > 0
 @status_window.x -= 80
end
#Saying if options are active
if @command_window.active
 update_command
 return
end
if @status_window.active
 update_status
 return
end
end
#--------------------------------------------------------------------------
# Updating the Command Selection
#--------------------------------------------------------------------------
def update_command
# If B button is pushed
if Input.trigger?(Input::B)
 # Plays assigned SE
 $game_system.se_play($data_system.cancel_se)
 #Looping for moving windows out
  loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
# Go to Map
$scene = Scene_Map.new
 return
end
# If C button is pused
if Input.trigger?(Input::C)
 # Checks actor size
 if $game_party.actors.size == 0 and @command_window.index < 4
   # plays SE
   $game_system.se_play($data_system.buzzer_se)
   return
 end
 case @command_window.index
 when 0  
   $game_system.se_play($data_system.decision_se)
   loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
   $scene = Scene_Item.new
 when 1
   $game_system.se_play($data_system.decision_se)
   $scene = Scene_MateriaEquip.new
 when 2
   $game_system.se_play($data_system.decision_se)
   @command_window.active = false
   @status_window.active = true
   @status_window.index = 0
 when 3
   $game_system.se_play($data_system.decision_se)
   @command_window.active = false
   @status_window.active = true
   @status_window.index = 0
 when 4  
   $game_system.se_play($data_system.decision_se)
   @command_window.active = false
   @status_window.active = true
   @status_window.index = 0
 when 5
   if $game_system.save_disabled
     $game_system.se_play($data_system.buzzer_se)
     return
   end
   $game_system.se_play($data_system.decision_se)
   loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
  $scene = Scene_Save.new
 when 6
   $game_system.se_play($data_system.decision_se)
   loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
    $scene = Scene_End.new
 end
 return
end
end
#--------------------------------------------------------------------------
# Updating Status Screen
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
 $game_system.se_play($data_system.cancel_se)
 @command_window.active = true
 @status_window.active = false
 @status_window.index = -1
 return
end
if Input.trigger?(Input::C)
 case @command_window.index
 when 2
   if $game_party.actors[@status_window.index].restriction >= 2
     $game_system.se_play($data_system.buzzer_se)
     return
   end
   $game_system.se_play($data_system.decision_se)
   loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
   $scene = Scene_Skill.new(@status_window.index)
 when 3
   $game_system.se_play($data_system.decision_se)
   loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
   $scene = Scene_Equip.new(@status_window.index)
 when 4
   $game_system.se_play($data_system.decision_se)
   loop do
   if @command_window.y < 480
    @command_window.y += 40
   end
   if @game_stats_window.x > 0 - @game_stats_window.width
    @game_stats_window.x -= 40
   end
   if @map.y > 0 - @map.height
    @map.y -= 40
   end
   if @status_window.x < 640
    @status_window.x += 40
   end
   delay(0.5)
   if @status_window.x >= 640
    break
  end
 end
   $scene = Scene_Status.new(@status_window.index)
 end
 return
end
end
end
[/spoiler]
0

Share this post


Link to post
Share on other sites
creo q este script ya estaba posteado xD
0

Share this post


Link to post
Share on other sites
Para abrir el limite es $scene = Scene_Limit.new
EDIT: Fegarur ya que estas te puedes mirar el de limite, es k me da error de "Can't convert nil into string"
Cuando se carga del todo y se llena la barra del ABS Edited by Sampi
0

Share this post


Link to post
Share on other sites
Aquí está añadido el límite... intentaré mirar qué pasa pero no creo que sepa hacer nada con eso.

Script con Materia y Límite:[spoiler]
CODE
*********************************************************
#Final Fantasy VII menu setup by AcedentProne
#*********************************************************
#To use:
#If you do not want Faces, go to line 94
#and change delete the # of draw_actor_graphic
#and put a # infront of draw_actor_face
#
#Create a new folder in the Characters folder, and call it Faces
#Adding faces: add a 80x80 picture with the same name as the characterset it
#corrosponds with in the Faces folder


#========================================
#■ Window_Base
#--------------------------------------------------------------------------------
# Setting functions for the "Base"
#========================================


class Window_Base < Window

def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
end
def draw_actor_battler_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end

#========================================
#■ Game_Map
#--------------------------------------------------------------------------------
# Setting functions for the Map
#========================================
class Game_Map

def name
$map_infos[@map_id]
end
end

#========================================
#■ Window_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end




#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  Sets up the Choosing.
#==============================================================================

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 560, 454)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Drawing Info on Screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 94
y = i * 110
actor = $game_party.actors[i]
#draw_actor_face(actor, 12, y + 90) #To get rid of the Face, put a "#" before the draw_ of this line
draw_actor_graphic(actor, 48, y + 65) #and delete the "#" infront of draw of this line
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 72, y)
draw_actor_level(actor, x, y + 18)
draw_actor_state(actor, x + 168, y)
draw_actor_exp(actor, x+ 144, y + 38)
draw_actor_hp(actor, x, y + 38)
draw_actor_sp(actor, x, y + 58)
end
end
#--------------------------------------------------------------------------
# Update of Cursor
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 110, self.width - 32, 96)
end
end
end

#=======================================#
# ■Window_GameStats                                                             #
# written by AcedentProne                                                          #
#------------------------------------------------------------------------------#

class Window_GameStats < Window_Base
def initialize
super(0, 0, 160, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
end

def refresh
self.contents.clear
#Drawing gold into separate commas by Dubealex
case $game_party.gold
when 0..9999
gold = $game_party.gold
when 10000..99999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+" "+array[2].to_s+array[3].to_s+array[4].to_s
when 100000..999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+array[2].to_s+" "+array[3].to_s+array[4].to_s+array[5].to_s
when 1000000..9999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+" "+array[1].to_s+array[2].to_s+array[3].to_s+" "+array[4].to_s+array[5].to_s+array[6].to_s
end
#Draw Gold
self.contents.font.color = system_color
gold_word = $data_system.words.gold.to_s
cx = contents.text_size(gold_word).width
cx2=contents.text_size(gold.to_s).width
self.contents.draw_text(4, 4, 120-cx-2, 32, gold_word)
self.contents.font.color = normal_color
self.contents.draw_text(124-cx2+1, 4, cx2, 32, gold.to_s, 2)
self.contents.font.color = system_color
# Draw "Time"
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, -10, 120, 32, text, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 120, 32, "Tiempo")
end
#--------------------------------------------------------------------------
# Update of The count
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end

#==============================================================================
# ■ Window_Mapname
#------------------------------------------------------------------------------
#  Draws the Map name
#==============================================================================

class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 320, 44)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
end
#--------------------------------------------------------------------------
# Draws info on screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear

# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 220, 32, "Localización")
self.contents.font.color = normal_color
self.contents.draw_text(120, -10, 310, 32, $game_map.name)
end
end

#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# FF7 menu layout as requested by AcedentProne.
#==============================================================================

class Scene_Menu
#--------------------------- edit-------------------------------
attr_reader :status_window
#/--------------------------- edit-------------------------------

def initialize(menu_index = 0)
@menu_index = menu_index
end
def main
 
s1 = $data_system.words.item
s2 = "Materia"
s3 = "Límite"
s4 = $data_system.words.skill
s5 = $data_system.words.equip
s6 = "Estado"
s7 = "Guardar"
s8 = "Salir"

#--------------------------- edit-------------------------------  
# Command menu
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8])
@command_window.x = 640 - @command_window.width
@command_window.y = 480
@command_window.z = 110
@command_window.index = @menu_index
#If certain options are avaliable
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
#Showing location window
@map = Window_Mapname.new
@map.x = 640 - @map.width
@map.y = 0 - @map.height - 1
@map.z = 110
#Showing the game stats
@game_stats_window = Window_GameStats.new
@game_stats_window.x = 0 - @game_stats_window.width
@game_stats_window.y = 480 - @map.height - @game_stats_window.height
@game_stats_window.z =110

#Showing the Menu Status window
@status_window = Window_MenuStatus.new
@status_window.x = 640
@status_window.y = 8
@status_window.z = 100

 
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
  break
end
end
Graphics.freeze
@command_window.dispose
@game_stats_window.dispose
@status_window.dispose
@map.dispose
end
#--------------------------------------------------------------------------
#Defining the delay
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
sleep 0.01
Graphics.update
end
end
#--------------------------------------------------------------------------
# Updating
#--------------------------------------------------------------------------
def update
@command_window.update
@game_stats_window.update
@status_window.update
@map.update
#Moving Windows inplace
gamepos = 640 - @game_stats_window.width
mappos = 480 - @map.height - 1
if @command_window.y > 0
@command_window.y -= 60
end
if @game_stats_window.x < gamepos
@game_stats_window.x += 80
end
if @map.y < mappos
@map.y += 80
end
if @status_window.x > 0
@status_window.x -= 80
end
#Saying if options are active
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# Updating the Command Selection
#--------------------------------------------------------------------------
def update_command
# If B button is pushed
if Input.trigger?(Input::B)
# Plays assigned SE
$game_system.se_play($data_system.cancel_se)
#Looping for moving windows out
 loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
# Go to Map
$scene = Scene_Map.new
return
end
# If C button is pused
if Input.trigger?(Input::C)
# Checks actor size
if $game_party.actors.size == 0 and @command_window.index < 4
  # plays SE
  $game_system.se_play($data_system.buzzer_se)
  return
end
case @command_window.index
when 0  
  $game_system.se_play($data_system.decision_se)
  loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
  $scene = Scene_Item.new
when 1
  $game_system.se_play($data_system.decision_se)
  $scene = Scene_MateriaEquip.new
when 2
  $game_system.se_play($data_system.decision_se)
  $scene = Scene_Limit.new
when 3
  $game_system.se_play($data_system.decision_se)
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0
when 4
  $game_system.se_play($data_system.decision_se)
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0
when 5  
  $game_system.se_play($data_system.decision_se)
  @command_window.active = false
  @status_window.active = true
  @status_window.index = 0
when 6
  if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
  end
  $game_system.se_play($data_system.decision_se)
  loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
 $scene = Scene_Save.new
when 7
  $game_system.se_play($data_system.decision_se)
  loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
   $scene = Scene_End.new
end
return
end
end
#--------------------------------------------------------------------------
# Updating Status Screen
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 3
  if $game_party.actors[@status_window.index].restriction >= 2
    $game_system.se_play($data_system.buzzer_se)
    return
  end
  $game_system.se_play($data_system.decision_se)
  loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
  $scene = Scene_Skill.new(@status_window.index)
when 4
  $game_system.se_play($data_system.decision_se)
  loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
  $scene = Scene_Equip.new(@status_window.index)
when 5
  $game_system.se_play($data_system.decision_se)
  loop do
  if @command_window.y < 480
   @command_window.y += 40
  end
  if @game_stats_window.x > 0 - @game_stats_window.width
   @game_stats_window.x -= 40
  end
  if @map.y > 0 - @map.height
   @map.y -= 40
  end
  if @status_window.x < 640
   @status_window.x += 40
  end
  delay(0.5)
  if @status_window.x >= 640
   break
 end
end
  $scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
[/spoiler]

Bien, así como está, cuando salgas al menú la flecha saldrá 2 opciones por encima de la correcta... así que vamos a arreglarlo.
En Scene_Skill busca
QUOTE
$scene = Scene_Menu.new(1)
y cambia el 1 por un 3.

En Scene_Equip cambia el 2 de
QUOTE
$scene = Scene_Menu.new(2)
por un 4.

En Scene_Status cambia el 3 de
QUOTE
$scene = Scene_Menu.new(3)
por un 5.

En Scene_Save cambia el 4 de
QUOTE
$scene = Scene_Menu.new(4)
por un 6, cuidado que aparece en dos sitios.

En Scene_End cambia el 5 de
QUOTE
$scene = Scene_Menu.new(5)
por un 7, también sale en dos sitios.

Por el momento al menos el script debería funcinar bien con eso incluido.
0

Share this post


Link to post
Share on other sites
esta muy bien fegarur pero no se puede hacer algo para que se pueda elegir de quien cambiar la materia o el limite?
0

Share this post


Link to post
Share on other sites
Cuando tienes seleccionado ya al protagonista, si pulsas W y Q (creo que eran esas) cambia entre los personajes. Al menos en el de materia...
Y siento lo del límite, pero no supe arreglar ese problemilla.
0

Share this post


Link to post
Share on other sites
se como hacer k salga lo de legir pero no se como hacer que entonces salga para equipar lo de materia de ese personaje, o con el limite
0

Share this post


Link to post
Share on other sites
Ya no recuerdo cómo funcionaba el de materia, pero su puedes elegir podrás equipar, ¿no? En el de límite ya no se nada...
0

Share this post


Link to post
Share on other sites
puedo elegir en los dos pero luego no me deja aceptar el personajee
0

Share this post


Link to post
Share on other sites
blink.gif blink.gif Pues me has dejado K.O. No se... ¿alguien que sepa?
0

Share this post


Link to post
Share on other sites
el d matria no me funciona con el sistema de mathura...
parece q el d limites tampoko...
pero no importa exelent script icon13.gif icon13.gif icon13.gif
QUOTE
Para abrir el limite es $scene = Scene_Limit.new
EDIT: Fegarur ya que estas te puedes mirar el de limite, es k me da error de "Can't convert nil into string"
Cuando se carga del todo y se llena la barra del ABS


eso pasa xq algun scrip te krea conflicto.
Revisa si no tienes el ABS y el de comandos individuales,
por ejemplo
s
a
l
u
d
o
s
s
s
!
0

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0