[resolved][XP] Small Script edit

Started by Viviatus, June 06, 2010, 10:20:06 am

Previous topic - Next topic

Viviatus

June 06, 2010, 10:20:06 am Last Edit: June 07, 2010, 12:41:45 am by Viviatus
Hey, people, I'm having a small issue with a scipt.

I'm having this "Licenseboard Script" which is pretty easy to use, I, however, didn't manage to edit it, so you pay your licenses with EXP (since I won't be using the normal Levelsystam at all.) instead of LP (which you have to by default). Would be cool if someone could do this for me, or even tells me what I have to edit.

Script I: ShowHide

#===============================================================================
# módulo FFXII::LICENCES
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

module FFXII
 
 module LICENCES
   
   #---------------------
   # INSTRUÇÕES
   #---------------------
   # To create the licence board, call:
   # $scene = Scene_Create_Licences.new(Hero ID)
   # To create de default board, call:
   # $scene = Scene_Create_Licences.new(0)
   # All the heros who don't have a board, the default one will be used.
   #---------------------
   
   # Licence table max width
   MAX_LICENCES_WIDTH = 20
   # Licence table max height
   MAX_LICENCES_HEIGHT = 15
   # Licence Points String
   LICENCE_POINTS_S = "LP"
   # Licence Points Cost String
   LICENCE_POINTS_COST_S = "LP Cost"
   # Table pictures
   PICTURE_SQUARE = ["Black", "White"]
   
   # Pictures' name
   # Folder: Graphics/Licences
   LICENCE_PICTURES = {}
   LICENCE_PICTURES["hp"]    = "HP"
   LICENCE_PICTURES["sp"]    = "SP"
   LICENCE_PICTURES["str"]   = "STR"
   LICENCE_PICTURES["dex"]   = "DEX"
   LICENCE_PICTURES["agi"]   = "AGI"
   LICENCE_PICTURES["int"]   = "INT"
   LICENCE_PICTURES["skill"] = "SKILL"
   LICENCE_PICTURES["skill_licence"] = "SKILL"
   
   # Back
   LICENCE_BACK = "Back"
   # Back OX/OY speed
   LICENCE_BACK_OX_SPEED = -1
   LICENCE_BACK_OY_SPEED = -1
   
   # Amount of LP won by defeating an enemy (default)
   ENEMIES_LP_DEFAULT = [10, 50, 80]
   # Invariável
   ENEMIES_LP = []
   # Amount of LP won by defeating an enemy
   # ENEMIES_LP[Enemy id] = X
   
   @@data = nil
   
   def self.data
     if @@data.nil?
       @@data = load_data("Data/Licences.rxdata")
     end
     return @@data
   end
   
 end  
 
end


Script II: ShowHide

#===============================================================================
# FFXII - Licence_Spot
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Licence_Spot
 
 attr_accessor :x
 attr_accessor :y
 attr_accessor :type
 attr_accessor :id
 attr_accessor :cost
 attr_accessor :get
 attr_accessor :near
 
 def initialize(x, y, type, id, cost=1)
   @x = x
   @y = y
   @type = type
   @id = id
   @cost = cost
   @get = false
   @near = false
 end
 
 def setup(spot)
   return unless spot.is_a?(Licence_Spot)
   @x = spot.x
   @y = spot.y
   @type = spot.type
   @id = spot.id
   @cost = spot.cost
   @get = spot.get
   @near = spot.near
 end
 
end

#===============================================================================
# FFXII - Licence_Table
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Licence_Table
 
 def initialize
   @data = []
 end
 
 def [](x, y)
   if @data[x].nil?
     @data[x] = []
   end
   return @data[x][y]
 end
 
 def []=(x, y, valor)
   if @data[x].nil?
     @data[x] = []
   end
   @data[x][y] = valor
 end
 
 def each
   for x in 0...@data.size
     next if @data[x].nil?
     for y in 0...@data[x].size
       next if @data[x][y].nil?
       yield @data[x][y]
     end
   end
 end
 
 def refresh_table
   data = [-1, 0, 1]
   self.each {|i|
     next if i.nil?
     i.near = false
   }
   for x in 0...@data.size
     next if @data[x].nil?
     for y in 0...@data[x].size
       if @data[x][y].get
         for i1 in 0..2
           for i2 in 0..2
             next if [[0, 0], [0, 2], [2, 0], [2, 2]].include?([i1, i2])
             real_i1 = [[x+i1-1, 0].max, @data.size-1].min
             real_i2 = [[y+i2-1, 0].max, @data[x].size-1].min
             self[real_i1, real_i2].near = true
           end
         end
       end
     end
   end
 end
 
end  

#===============================================================================
# FFXII - Sprite_Licences_Spot
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Sprite_Licences_Spot < Sprite
 
 include FFXII::LICENCES
 
 def initialize(viewport, house)
   super(viewport)
   @house = house
   @house_picture = RPG::Cache.licence(PICTURE_SQUARE[((@house.x + 1) + (@house.y + 1)) % PICTURE_SQUARE.size])
   @house_sprite = Sprite.new(@viewport)
   self.bitmap = Bitmap.new(@house_picture.width, @house_picture.height)
   refresh
 end
 
 def x=(valor)
   super
   @house_sprite.x = self.x
 end
 
 def y=(valor)
   super
   @house_sprite.y = self.y
 end
 
 def dispose
   if self.bitmap != nil
     self.bitmap.dispose
     self.bitmap = nil
   end
   @house_sprite.dispose
   super()
 end
 
 def refresh
   return if @house.type == ""
   @house_bonus = RPG::Cache.licence((LICENCE_PICTURES[@house.type].nil? ? "" : LICENCE_PICTURES[@house.type]))
   self.bitmap.clear
   self.bitmap.blt(0, 0, @house_picture, Rect.new(0, 0, @house_picture.width, @house_picture.height))
   if @house.near == false and @house.get == false
     @house_sprite.bitmap = nil
     return
   end
   x = (self.bitmap.width / 2) - (@house_bonus.width / 2)
   y = (self.bitmap.height / 2) - (@house_bonus.height / 2)
   @house_sprite.bitmap = @house_bonus
   @house_sprite.ox = -x
   @house_sprite.oy = -y
   @house_sprite.color.set(0, 0, 0, 0)
   if (@house.get == false)
     @house_sprite.color.set(128, 128, 128, 128)
     return
   end
 end
 
end

#===============================================================================
# FFXII - Spriteset_Licence_Spots
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Spriteset_Licence_Spots
 
 include FFXII::LICENCES

 attr_reader :ox
 attr_reader :oy
 
 def initialize(actor_data)
   @ox = 0
   @oy = 0
   @actor_data = actor_data
   @viewport = Viewport.new(0, 0, 640, 480)
   @back = Plane.new(@viewport)
   @back.bitmap = RPG::Cache.licence(LICENCE_BACK)
   @licence_spots = Licence_Table.new
   for x in 0...MAX_LICENCES_WIDTH
     for y in 0...MAX_LICENCES_HEIGHT
       sprite = Sprite_Licences_Spot.new(@viewport, @actor_data[x, y])
       sprite.x = x * 32
       sprite.y = y * 32
       @licence_spots[x, y] = sprite
     end
   end  
 end
 
 def refresh(x, y)
   @licence_spots[x, y].refresh
 end
 
 def refresh_all
   for x in 0...MAX_LICENCES_WIDTH
     for y in 0...MAX_LICENCES_HEIGHT
       @licence_spots[x, y].refresh
     end
   end
 end
 
 def update
   @back.ox += LICENCE_BACK_OX_SPEED
   @back.oy += LICENCE_BACK_OY_SPEED
 end
 
 def ox=(valor)
   return if @ox == valor
   @back.ox -= (@ox - valor)
   @ox = valor
   for x in 0...MAX_LICENCES_WIDTH
     for y in 0...MAX_LICENCES_HEIGHT
       @licence_spots[x, y].ox = @ox
     end
   end
 end
 
 def oy=(valor)
   return if @oy == valor
   @back.oy -= (@oy - valor)
   @oy = valor
   for x in 0...MAX_LICENCES_WIDTH
     for y in 0...MAX_LICENCES_HEIGHT
       @licence_spots[x, y].oy = @oy
     end
   end
 end
 
 def dispose
   for x in @licence_spots
     next if x.nil?
     x.dispose
   end
   @licence_spots = []
   @back.dispose
   @viewport.dispose
 end
 
end

#===============================================================================
# FFXII - Sprite_Licence_Cursor
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Sprite_Licence_Cursor < Sprite
 
 #--------------------------------------------------------------------------
 # - Inicialização dos Objetos
 #--------------------------------------------------------------------------
 
 def initialize(counter_max=0, viewport=nil)
   if viewport.nil?
     super()
   else
     super(viewport)
   end
   @up_down = true
   self.bitmap = RPG::Cache.licence("glove")
   @cursor_growing = false
   @cursor_counter_max = counter_max
   @cursor_counter = 0
   @updating = false
 end
 
 #--------------------------------------------------------------------------
 # - Muda o Up_Down
 #--------------------------------------------------------------------------
 
 def up_down=(valor)
   @up_down = valor
   self.ox = 0
   self.oy = 0
 end
 
 #--------------------------------------------------------------------------
 # - Muda o OX
 #--------------------------------------------------------------------------
 
 def ox=(valor)
   super
   if (@updating == false)
     @cursor_counter = 0
     @cursor_growing = false
   end
 end
 
 #--------------------------------------------------------------------------
 # - Muda o OY
 #--------------------------------------------------------------------------
 
 def oy=(valor)
   unless @up_down
     valor -= self.bitmap.height - 7
   end
   super
   if (@updating == false)
     @cursor_counter = 0
     @cursor_growing = false
   end
 end
 
 #--------------------------------------------------------------------------
 # - Atualização
 #--------------------------------------------------------------------------
 
 def update
   super()
   @updating = true
   if @cursor_counter_max > 0
     if @cursor_growing
       if @up_down
         self.oy = self.oy - 1
       else
         self.ox = self.ox - 1
       end
       @cursor_counter = @cursor_counter + 1
       if @cursor_counter >= @cursor_counter_max
         @cursor_growing = false
         @cursor_counter = 0
       end
     else
       if @up_down
         self.oy = self.oy + 1
       else
         self.ox = self.ox + 1
       end
       @cursor_counter = @cursor_counter + 1
       if @cursor_counter >= @cursor_counter_max
         @cursor_growing = true
         @cursor_counter = 0
       end
     end
   end
   @updating = false
 end
 
end  

#===============================================================================
# FFXII - Window_Licence_Select
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Window_Licence_Select < Window_Command
 
 def initialize
   @data = ["hp", "sp", "str", "dex", "agi", "int", "skill", "skill_licence", ""]
   commands = []
   for x in @data
     case x
     when ""
       commands.push("Nada")
     when "skill_licence"
       commands.push("Skill Licence")
     else
       eval("commands.push($data_system.words.#{x})")
     end
   end
   commands.push("Sair")
   super(240, commands)
   self.back_opacity = 160
   self.y = 64
   self.height = 480-64
 end
 
 def data
   return @data[self.index]
 end
 
 def last_index?
   return (self.index == (@item_max - 1))
 end
 
 def update_help
   text = @commands[self.index]
   @help_window.set_text(text)
 end
 
end

#===============================================================================
# FFXII - Window_Licence_Select
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Window_Licence_Spot_Status < Window_Base
 
 attr_reader :spot
 
 def initialize(spot, actor=nil)
   super(0, 480-96, 640, 96)
   @spot = spot
   @actor = actor
   self.contents = Bitmap.new(width - 32, height - 32)
   self.back_opacity = 160
   refresh
 end
 
 def spot=(valor)
   return if @spot == valor
   @spot = valor
   refresh
 end
 
 def refresh
   self.contents.clear
   if @actor != nil
     text = "#{FFXII::LICENCES::LICENCE_POINTS_S} "
     text2 = sprintf("%04d", @actor.lp)
     self.contents.font.color = system_color
     self.contents.draw_text((width - 40) - self.contents.text_size(text2).width - self.contents.text_size(text).width, 32, self.contents.text_size(text).width, 32, text)
     self.contents.font.color = normal_color
     self.contents.draw_text((width - 40) - self.contents.text_size(text2).width, 32, self.contents.text_size(text2).width, 32, text2)
   end
   return if @spot.type == ""
   x = 4
   if @spot.type == "skill" or @spot.type == "skill_licence"
     refresh_skill
   else
     text = eval("$data_system.words.#{@spot.type}")
     self.contents.font.color = system_color
     self.contents.draw_text(x, 0, width - 40, 32, text)
     x += self.contents.text_size(text).width
     text = " +" + ((@spot.near == false and !@spot.get and !$scene.instance_of?(Scene_Create_Licences)) ? "???" : "#{@spot.id}")
     self.contents.font.color = normal_color
     self.contents.draw_text(x, 0, width - 40, 32, text)
   end
   self.contents.font.color = system_color
   text = "#{FFXII::LICENCES::LICENCE_POINTS_COST_S} "
   text2 = ((@spot.near == false and !@spot.get and !$scene.instance_of?(Scene_Create_Licences)) ? "????" : sprintf("%04d", @spot.cost))
   self.contents.draw_text((width - 40) - self.contents.text_size(text2).width - self.contents.text_size(text).width, 0, self.contents.text_size(text).width, 32, text)
   self.contents.font.color = normal_color
   self.contents.draw_text((width - 40) - self.contents.text_size(text2).width, 0, self.contents.text_size(text2).width, 32, text2)
   self.contents.draw_text(4, 32, width - 40, 32, "Owned") if @spot.get
 end
 
 def refresh_skill
   x = 4
   self.contents.font.color = system_color
   self.contents.draw_text(x, 0, 200, 32, $data_system.words.skill + " - ")
   x += [self.contents.text_size($data_system.words.skill + " - ").width, 200].min
   self.contents.font.color = normal_color
   if (@spot.near == false and !@spot.get and !$scene.instance_of?(Scene_Create_Licences))
     self.contents.draw_text(x, 0, 200, 32, "???")
     return
   end
   opacity = 255
   if @spot.type == "skill_licence"
     opacity = 160 unless $game_party.skill_learn?(@spot.id)
   end
   if $data_skills[@spot.id].icon_name != ""
     self.contents.blt(x, 0, RPG::Cache.icon($data_skills[@spot.id].icon_name), Rect.new(0, 0, 24, 24), opacity)
     x += 28
   end
   self.contents.font.color = disabled_color if opacity == 160
   self.contents.draw_text(x, 0, 200, 32, $data_skills[@spot.id].name)
 end
 
end

#===============================================================================
# FFXII - Window_Licence_Skills
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Window_Licence_Skills < Window_Command
 
 attr_reader :spot
 
 def initialize()
   commands = []
   for i in 1...$data_skills.size
     commands.push($data_skills[i].name)
   end
   super(640, commands)
   self.back_opacity = 160
   self.y = 64
   self.height = 480 - 64
 end
 
 def skill
   return ($data_skills[self.index+1])
 end
 
end

#===============================================================================
# FFXII - Scene_Create_Licences
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Scene_Create_Licences
 
 include FFXII::LICENCES
 
 def initialize(actor_id)
   @actor_id = actor_id
 end
 
 def main
   # Carregar o Banco de Dados
   $data_actors        = load_data("Data/Actors.rxdata")
   $data_classes       = load_data("Data/Classes.rxdata")
   $data_skills        = load_data("Data/Skills.rxdata")
   $data_items         = load_data("Data/Items.rxdata")
   $data_weapons       = load_data("Data/Weapons.rxdata")
   $data_armors        = load_data("Data/Armors.rxdata")
   $data_enemies       = load_data("Data/Enemies.rxdata")
   $data_troops        = load_data("Data/Troops.rxdata")
   $data_states        = load_data("Data/States.rxdata")
   $data_animations    = load_data("Data/Animations.rxdata")
   $data_tilesets      = load_data("Data/Tilesets.rxdata")
   $data_common_events = load_data("Data/CommonEvents.rxdata")
   $data_system        = load_data("Data/System.rxdata")
   # Criar um Sistema
   $game_system = Game_System.new
   begin
     @data = load_data("Data/Licences.rxdata")
   rescue
     @data = []
   end
   @actor_data = @data[@actor_id]
   if @actor_data.nil?
     @actor_data = Licence_Table.new
   end
   for x in 0...MAX_LICENCES_WIDTH
     for y in 0...MAX_LICENCES_HEIGHT
       if @actor_data[x, y].nil?
         @actor_data[x, y] = Licence_Spot.new(x, y, "", 0)
       end
     end
   end
   @spriteset = Spriteset_Licence_Spots.new(@actor_data)
   @help_window = Window_Help.new
   @help_window.back_opacity = 160
   @window_select = Window_Licence_Select.new
   @window_select.help_window = @help_window
   @window_select.active = false
   @window_select.visible = false
   @window_select.index = 0
   @input_number = Window_InputNumber.new(4)
   @input_number.back_opacity = 160
   @input_number.opacity = 255
   @input_number.active = false
   @input_number.visible = false
   @help_window.visible = false
   @x = 0
   @y = 0
   @spot_info = Window_Licence_Spot_Status.new(@actor_data[@x, @y])
   @cursor = Sprite_Licence_Cursor.new(10)
   @cursor.x = (@x * 32)
   @cursor.y = (@y * 32) - 16
   Graphics.transition()
   loop {
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   }
   if decision_exit
     @actor_data = nil
   end
   Graphics.freeze
   Graphics.freeze
   @spriteset.dispose
   @window_select.dispose
   @help_window.dispose
   @input_number.dispose
   @spot_info.dispose
   @cursor.dispose
   @data[@actor_id] = @actor_data
   file = File.open("Data/Licences.rxdata", "wb")
   Marshal.dump(@data, file)
   file.close
 end
 
 def update
   if @window_select.active
     update_window_select
     return
   end
   @cursor.update
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = nil
     return
   end
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     @window_select.active = true
     @window_select.visible = true
     @help_window.visible = true
     @spot_info.visible = false
     return
   end
   if Input.repeat?(Input::DOWN)
     if Input.trigger?(Input::DOWN) or @y < (MAX_LICENCES_HEIGHT - 1)
       $game_system.se_play($data_system.cursor_se)
       self.y = (@y + 1) % MAX_LICENCES_HEIGHT
       return
     end
   end
   if Input.repeat?(Input::UP)
     if Input.trigger?(Input::UP) or @y > 0
       $game_system.se_play($data_system.cursor_se)
       self.y = (@y - 1) % MAX_LICENCES_HEIGHT
       return
     end
   end
   if Input.trigger?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     self.x = (@x - 1) % MAX_LICENCES_WIDTH
     return
   end
   if Input.trigger?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     self.x = (@x + 1) % MAX_LICENCES_WIDTH
     return
   end
 end
 
 def update_window_select
   @window_select.update
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @window_select.active = false
     @window_select.visible = false
     @help_window.visible = false
     @spot_info.visible = true
     return
   end
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     if @window_select.last_index?
       @window_select.active = false
       @window_select.visible = false
       @help_window.visible = false
       @spot_info.visible = true
       return
     end
     @actor_data[@x, @y].type = @window_select.data
     @spriteset.refresh(@x, @y)
     @window_select.active = false
     @window_select.visible = false
     if @actor_data[@x, @y].type == ""
       @help_window.y = 0
       @help_window.visible = false
       @spot_info.visible = true
       @spot_info.refresh
       return
     end
     phase = 0
     loop do
       if phase == 0
         if @window_select.data == "skill" or @window_select.data == "skill_licence"
           unless window_skill
             @window_select.active = true
             @window_select.visible = true
             return
           end          
         else
           unless input_number
             @window_select.active = true
             @window_select.visible = true
             return
           end
           @actor_data[@x, @y].id = @input_number.number
         end
       end
       unless input_lp_number
         phase = 0
         next
       end
       phase = 1
       if decision
         break
       end
     end
     @spriteset.refresh(@x, @y)
     @help_window.y = 0
     @help_window.visible = false
     @spot_info.visible = true
     @spot_info.refresh
     return
   end
 end
 
 def window_skill
   window = Window_Licence_Skills.new
   @help_window.y = 0
   @help_window.set_text("Choose the skill.")
   loop do
     Graphics.update
     Input.update
     window.update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       window.dispose
       return false
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       break
     end
   end  
   @actor_data[@x, @y].id = window.skill.id
   window.dispose
   @help_window.y = 0
   return true
 end
 
 def input_number
   @input_number.number = 0
   @input_number.x = 320 - (@input_number.width / 2)
   @input_number.y = 240 - (@input_number.height / 2)
   @help_window.y = @input_number.y - 64
   @help_window.set_text("Set the value.", 1)
   @input_number.active = true
   @input_number.visible = true
   loop do
     Graphics.update
     Input.update
     @input_number.update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       @input_number.active = false
       @input_number.visible = false
       @help_window.y = 0
       return false
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       break
     end
   end  
   @input_number.active = false
   @input_number.visible = false
   @help_window.y = 0
   return true
 end
 
 def input_lp_number
   @input_number.number = 0
   @input_number.x = 320 - (@input_number.width / 2)
   @input_number.y = 240 - (@input_number.height / 2)
   @help_window.y = @input_number.y - 64
   @help_window.set_text("Set the LP Cost value.", 1)
   @input_number.active = true
   @input_number.visible = true
   loop do
     Graphics.update
     Input.update
     @input_number.update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       @input_number.active = false
       @input_number.visible = false
       @help_window.y = 0
       return false
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       break
     end
   end  
   @actor_data[@x, @y].cost = @input_number.number
   @input_number.active = false
   @input_number.visible = false
   @help_window.y = 0
   return true
 end
 
 def decision
   command = Window_Command.new(100, ["Yes", "No"])
   command.x = 320 - (command.width / 2)
   command.y = 240 - (command.height / 2)
   command.back_opacity = 160
   @help_window.y = command.y - 64
   @help_window.set_text("Will the hero starts width this place owned?", 1)
   loop do
     Graphics.update
     Input.update
     command.update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       command.dispose
       @help_window.y = 0
       return false
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       break
     end
   end  
   @actor_data[@x, @y].get = (command.index == 0)
   command.dispose
   @help_window.y = 0
   return true
 end
 
 def decision_exit
   command = Window_Command.new(100, ["No", "Yes"])
   command.x = 320 - (command.width / 2)
   command.y = 240 - (command.height / 2)
   command.back_opacity = 160
   @help_window.y = command.y - 64
   @help_window.set_text("Would you like to DELETE this table?", 1)
   valor = false
   loop do
     Graphics.update
     Input.update
     command.update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       command.dispose
       @help_window.y = 0
       valor = false
       break
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       valor = (command.index == 1)
       break
     end
   end  
   command.dispose
   @help_window.visible = false
   return valor
 end
 
 def x=(valor)
   return if @x == valor
   @x = valor
   if ((@x + 1) * 32) > @spriteset.ox + 640
     @spriteset.ox = ((@x + 1) * 32) - 640
   elsif (@x * 32) < @spriteset.ox
     @spriteset.ox = (@x * 32)
   end
   @cursor.x = (@x * 32) - @spriteset.ox
   @spot_info.spot = @actor_data[@x, @y]
 end
 
 def y=(valor)
   return if @y == valor
   @y = valor
   if ((@y + 1) * 32) > @spriteset.oy + 480
     @spriteset.oy = ((@y + 1) * 32) - 480
   elsif (@y * 32) < @spriteset.oy
     @spriteset.oy = (@y * 32)
   end
   @cursor.y = (@y * 32) - 16 - @spriteset.oy
   @spot_info.spot = @actor_data[@x, @y]
 end
 
end

#===============================================================================
# FFXII - Scene_Create_Licences
#-------------------------------------------------------------------------------
# Criador: RTH
#===============================================================================

class Scene_Licences
 
 include FFXII::LICENCES
 
 def initialize(party_id, main_menu_index=0)
   @actor_id = $game_party.actors[party_id].id
   @main_menu_index = main_menu_index
 end
 
 def main
   @actor = $game_actors[@actor_id]
   @spriteset = Spriteset_Licence_Spots.new(@actor.licence_table)
   @help_window = Window_Help.new
   @help_window.back_opacity = 160
   @help_window.visible = false
   @x = 0
   @y = 0
   @spot_info = Window_Licence_Spot_Status.new(@actor.licence_table[@x, @y], @actor)
   @cursor = Sprite_Licence_Cursor.new(10)
   @cursor.x = (@x * 32)
   @cursor.y = (@y * 32) - 16
   Graphics.transition()
   loop {
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   }
   Graphics.freeze
   @spriteset.dispose
   @help_window.dispose
   @spot_info.dispose
   @cursor.dispose
 end
 
 def update
   @spriteset.update
   update_cursor
   if ((@y + 1) * 32) > @spriteset.oy + (480 - @spot_info.height + 32)
     @spot_info.y = 0
   elsif (@y * 32) < @spriteset.oy + (@spot_info.height + 32)
     @spot_info.y = 480 - @spot_info.height
   end
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Menu.new(@main_menu_index)
     return
   end
   if Input.trigger?(Input::C)
     if @actor.licence_table[@x, @y].type == ""
       return
     end
     if ((@actor.lp < @actor.licence_table[@x, @y].cost) or (@actor.licence_table[@x, @y].get) or (!@actor.licence_table[@x, @y].near))
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     $game_system.se_play($data_system.decision_se)
     if decision
       @actor.lp -= @actor.licence_table[@x, @y].cost
       @actor.licence_table[@x, @y].get = true
       @actor.licence_table.refresh_table
       case @actor.licence_table[@x, @y].type
       when "hp"
         @actor.maxhp += @actor.licence_table[@x, @y].id
       when "sp"
         @actor.maxsp += @actor.licence_table[@x, @y].id
       when "str"
         @actor.str += @actor.licence_table[@x, @y].id
       when "dex"
         @actor.dex += @actor.licence_table[@x, @y].id
       when "agi"
         @actor.agi += @actor.licence_table[@x, @y].id
       when "int"
         @actor.int += @actor.licence_table[@x, @y].id
       when "skill"
         @actor.learn_skill(@actor.licence_table[@x, @y].id)
       when "skill_licence"
         @actor.learn_skill_licence(@actor.licence_table[@x, @y].id)
       end
       for i1 in 0..2
         for i2 in 0..2
           next if [[0, 0], [0, 2], [2, 0], [2, 2]].include?([i1, i2])
           real_i1 = [[@x+i1-1, 0].max, MAX_LICENCES_WIDTH-1].min
           real_i2 = [[@y+i2-1, 0].max, MAX_LICENCES_HEIGHT-1].min
           @spriteset.refresh(real_i1, real_i2)
         end
       end
       @spot_info.refresh
     end
     return
   end
 end
 
 def update_cursor
   @cursor.update
   if Input.repeat?(Input::DOWN)
     if Input.trigger?(Input::DOWN) or @y < (MAX_LICENCES_HEIGHT - 1)
       $game_system.se_play($data_system.cursor_se)
       self.y = (@y + 1) % MAX_LICENCES_HEIGHT
       return
     end
   end
   if Input.repeat?(Input::UP)
     if Input.trigger?(Input::UP) or @y > 0
       $game_system.se_play($data_system.cursor_se)
       self.y = (@y - 1) % MAX_LICENCES_HEIGHT
       return
     end
   end
   if Input.trigger?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     self.x = (@x - 1) % MAX_LICENCES_WIDTH
     return
   end
   if Input.trigger?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     self.x = (@x + 1) % MAX_LICENCES_WIDTH
     return
   end
 end
 
 def decision
   command = Window_Command.new(100, ["Yes", "No"])
   command.x = 320 - (command.width / 2)
   command.y = 240 - (command.height / 2)
   command.back_opacity = 160
   @help_window.y = command.y - 64
   @help_window.set_text("Deseja ativar esta casa?", 1)
   for i in 0..20
     @help_window.back_opacity = (160 / 20.0) * i
     command.back_opacity = (160 / 20.0) * i
     Graphics.update
   end
   value = false
   loop do
     Graphics.update
     Input.update
     command.update
     if Input.trigger?(Input::B)
       $game_system.se_play($data_system.cancel_se)
       value = false
       break
     end
     if Input.trigger?(Input::C)
       $game_system.se_play($data_system.decision_se)
       value = (command.index == 0)
       break
     end
   end  
   for i in 0..20
     @help_window.back_opacity = 160 - (160 / 20.0) * i
     command.back_opacity = 160 - (160 / 20.0) * i
     Graphics.update
   end
   command.dispose
   @help_window.visible = false
   return value
 end
 
 def x=(valor)
   return if @x == valor
   @x = valor
   if ((@x + 1) * 32) > @spriteset.ox + 640
     @spriteset.ox = ((@x + 1) * 32) - 640
   elsif (@x * 32) < @spriteset.ox
     @spriteset.ox = (@x * 32)
   end
   @cursor.x = (@x * 32) - @spriteset.ox
   @spot_info.spot = @actor.licence_table[@x, @y]
 end
 
 def y=(valor)
   return if @y == valor
   @y = valor
   if ((@y + 1) * 32) > @spriteset.oy + 480
     @spriteset.oy = ((@y + 1) * 32) - 480
   elsif (@y * 32) < @spriteset.oy
     @spriteset.oy = (@y * 32)
   end
   @cursor.y = (@y * 32) - 16 - @spriteset.oy
   @spot_info.spot = @actor.licence_table[@x, @y]
 end
 
end


Thanks in advance for any help I get.

nathmatt

should just change this
@actor.lp -= @actor.licence_table[@x, @y].cost

to
@actor.exp -= @actor.licence_table[@x, @y].cost
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


SBR*

Doesn't he also compare the lp and the cost to see if the player can buy it? So also change this:
if ((@actor.lp < @actor.licence_table[@x, @y].cost) or (@actor.licence_table[@x, @y].get) or (!@actor.licence_table[@x, @y].near))

to
if ((@actor.exp < @actor.license_table[@x, @y].cost) or (@actor.license_table[@x, @y].get) or (!@actor.license_table[@x, @y].near))


BTW, isn't this a script request?

nathmatt

yea change that too and it should work
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


Viviatus

whoo... thank you! easier than I thought!

SBR*

You're welcome!

Don't forget to rename the thread with [resolved]!