Maker Palace

¡El Reino del RpgMaker y del Ocio!
 
ÍndiceBuscarGrupos de UsuariosScriptsRecursosTutorialesPalaceJuegosPalaceWikiFAQRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Últimos temas
» Reparación de Conjuros
por kyonides-arkanthos Jue Oct 12, 2017 12:22 am

» Screenshot del nuevo KUnits XP oon menú
por LinkLuis55 Sáb Sep 23, 2017 10:03 pm

» Dando una vuelta por acá
por LinkLuis55 Dom Ago 20, 2017 2:56 pm

» Heroes del Crimen 2 DEMO
por jasuso Mar Ago 01, 2017 12:04 am

» The Legend of Celestia II: A World of Twilight Shadows Demo
por Jlopez_96 Vie Jul 28, 2017 6:20 pm

» The Legend of Celestia: Four Cristals
por Jlopez_96 Mar Abr 25, 2017 4:59 pm

» [VXAce] Burando Doragon
por gantzer49 Dom Abr 23, 2017 7:43 pm

Recomendados
RPG en RPG Maker
La importancia de un Backup
Que requiere un sistema de Batalla para ser exitoso
9 Minutos de Juegos por fans
Guía de Subforos para Tontos de Maker Palace
Indice de Scripts Locales XP
Falcao Pearl ABS Liquid
¿Quién está en línea?
En total hay 11 usuarios en línea: 0 Registrados, 0 Ocultos y 11 Invitados :: 1 Motor de búsqueda

Ninguno

La mayor cantidad de usuarios en línea fue 179 el Mar Ago 30, 2011 10:06 pm.
MiniChat
Mejores posteadores
Raiden (3346)
 
DaviX (2740)
 
Frikilangelo (2461)
 
SagahonArturo (1806)
 
Falcao (1775)
 
kyonides-arkanthos (1768)
 
Mur-mai-der (1755)
 
Ares (1613)
 
LinkLuis55 (1558)
 
Webmaster24 (1354)
 
Afiliados
Crear foro Mundo Maker Foro de anime y RM2k3/XP/VX Computer mix
Flag Counter
free counters
Visitas


Comparte | 
 

 Unik Weaponry XP

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
kyonides-arkanthos
Lord Guru Maker
Lord Guru Maker
avatar

Cantidad de envíos : 1768
Miembro desde : 03/02/2010
Sexo : Masculino

Maker : RMXP


MensajeTema: Unik Weaponry XP   Lun Nov 07, 2016 12:41 am

Unik Weaponry XP

por Kyonides-Arkanthos

Este script hace lo posible por permitirles que puedan crear armas o armaduras de un mismo tipo y que no sean clones de ellas mismas sino que puedan ser personalizadas por el jugador en pleno juego. Sigue en desarrollo, ya que solo ha llegado hasta la versión 0.5.0 el pasado febrero.

También se pretende que dichas armas o armaduras puedan llevar incrustadas unas runas u objetos que le agreguen más propiedades a las mismas o que incrementen su poder de ataque o de defensa, entre otras cosas.

El script hace cambios invisibles pero necesarios al menú de Equipamiento para facilitarles a los héroes el que puedan equipar esas armas o armaduras modificadas. Esto podría implicar que mi script no sea compatible con otros que también manejen asuntos relacionados con equipamiento.

Script Principal

Código:
# * Unik Weaponry XP
#   v 0.5.0 2016-02-12
#   Scripter : Kyonides-Arkanthos

#   La idea de este script es que se puedan individualizar las armas y las
#   piezas de armaduras. Esas cosas ya no serán un simple número como ocurre
#   por defecto en RMXP sino objetos 100% separados de otros objetos, incluso
#   de los de su misma clase.

#   El mínimo predefinido de Ranuras para Armas y Armaduras es de una Ranura.

module Unik
  EQUIP_MAX = 9 # Máxima Cantidad de Armas y Armaduras, el Mínimo es de 5.
  ARMOR_SLOTS = {} # No Edite Esta Línea
  WEAPON_SLOTS = {} # No Edite Esta Línea
  ARMOR_TYPES = {} # No Edite Esta Línea
  RUNES = {} # No Edite Esta Línea
  # IDs de Héroes que pueden blandir 2 Espadas, Hachas, etc.
  TWO_WEAPONS_ACTORS = []
  # Ranuras para Armas : [Número de Ranuras] = [ID Arma1, ID Arma2, etc.]
  WEAPON_SLOTS[2] = [2,3,6,7]
  WEAPON_SLOTS[3] = [4,8]
  # Ranuras para Piezas de Armadura : [Número de Ranuras] = [ID Pieza1, etc.]
  ARMOR_SLOTS[2] = [2,3,6,7]
  ARMOR_SLOTS[3] = [4,8]
  # [ID de Nueva Categoría de Armadura] = [IDs de Piezas de Armaduras]
  ARMOR_TYPES[5] = []
  ARMOR_TYPES[6] = []
  ARMOR_TYPES[7] = []
  ARMOR_TYPES[8] = []
  # [ID de Runa] = [N, ATK, DEF F, DEF M, EVA, PV, PM, FZA, INT, AGI, DES, CRIT]
  # N es igual a Multiplicador de Puntos.
  RUNES[1] = []
  RUNES[2] = []
  RUNES[3] = []
  RUNES[4] = []
  RUNES[5] = []
  RUNES[6] = []
  RUNES[7] = []
  RUNES[8] = []
  RUNES[9] = []
  RUNES[10] = []
  RUNES[11] = []
  # IDs de Objetos que sean Runas en Base de datos = (Primer_ID..Último_ID)
  RUNE_DATA = (40..50).to_a
end

module Weaponry
  def price
    total = @price
    @slots.each {|r| total += r.price }
    total
  end

  def pdef
    pdef_plus = @pdef
    @slots.each {|r| pdef_plus += r.pdef }
    pdef_plus
  end

  def mdef
    mdef_plus = @mdef
    @slots.each {|r| mdef_plus += r.mdef }
    mdef_plus
  end
end

class KWeapon < RPG::Weapon
  include Weaponry
  attr_accessor :class_id
  attr_reader :slots, :slot_max
  def initialize(wid)
    @class_id = wid
    w = $data_weapons[wid]
    w.instance_variables.each {|var| val = w.instance_variable_get(var)
      val = val.dup unless val == nil or val.is_a?(Integer) or val.is_a?(Float)
      instance_variable_set(var, val) }
    @id = self.object_id
    slots = Unik::WEAPON_SLOTS
    slots.keys.each {|key| @slot_max = key if slots[key].include?(wid) }
    @slot_max = 1 unless @slot_max
    @slots = Array.new(@slot_max, KRune.new(0))
  end

  def atk
    atk_plus = @atk
    @slots.each {|s| atk_plus += s.atk }
    atk_plus
  end
end

class KArmor < RPG::Armor
  include Weaponry
  attr_accessor :class_id
  attr_reader :slots, :slot_max
  def initialize(aid)
    @class_id = aid
    armor = $data_armors[aid]
    armor.instance_variables.each {|var| val = armor.instance_variable_get(var)
      val = val.dup unless val == nil or val.is_a?(Integer) or val.is_a?(Float)
      instance_variable_set(var, val) }
    @id = self.object_id
    slots = Unik::ARMOR_SLOTS
    slots.keys.each {|key| @slot_max = key if slots[key].include?(aid) }
    @slot_max = 1 unless @slot_max
    @slots = Array.new(@slot_max, KRune.new(0))
  end

  def eva
    eva_plus = @eva
    @slots.each {|s| eva_plus += s.eva }
    eva_plus
  end
end

class KRune
  attr_reader :id, :class_id, :level, :price, :atk, :eva
  attr_accessor :block
  def initialize(rid)
    @id = rid == 0 ? rid : self.object_id
    @class_id = rid
    @level = 0
    rune = $data_items[Unik::RUNE_DATA[rid-1]]
    rune_exist = rune != nil
    @name = rune_exist ? rune.name : ''
    @icon_name = rune_exist ? rune.icon_name : ''
    @description = rune_exist ? rune.description : ''
    @price = rune_exist ? rune.price : 0
    @atk = 0
    @pdf = 0
    @mdef = 0
    @eva = 0
    @maxhp_plus = 0
    @maxsp_plus = 0
    @str_plus = 0
    @int_plus = 0
    @agi_plus = 0
    @dex_plus = 0
    @crit_plus = 0
    @block = true
  end

  def level=(new_lvl)
    rune = Unik::RUNES[@class_id]
    current_lvl = rune[0] * (new_lvl + 1)
    @atk = rune[1] * current_lvl
    @pdf = rune[2] * current_lvl
    @mdef = rune[3] * current_lvl
    @eva = rune[4] * current_lvl
    @maxhp_plus = rune[5] * current_lvl
    @maxsp_plus = rune[6] * current_lvl
    @str_plus = rune[7] * current_lvl
    @int_plus = rune[8] * current_lvl
    @agi_plus = rune[9] * current_lvl
    @dex_plus = rune[10] * current_lvl
    @crit_plus = rune[11] * current_lvl
    @level = new_lvl
  end
end

class Game_Actor
  attr_reader :equip, :two_weapons
  alias kyon_unik_weaponry_gm_actor_setup setup
  def setup(actor_id)
    kyon_unik_weaponry_gm_actor_setup(actor_id)
    @two_weapons = Unik::TWO_WEAPONS_ACTORS[actor_id]
    @equip = Array.new(Unik::EQUIP_MAX, nil)
    @equip[0] = KWeapon.new(@weapon_id) if @weapon_id > 0
    @equip[1] = KArmor.new(@armor1_id) if @armor1_id > 0 and !@two_weapons
    @equip[2] = KArmor.new(@armor2_id) if @armor2_id > 0
    @equip[3] = KArmor.new(@armor3_id) if @armor3_id > 0
    @equip[4] = KArmor.new(@armor4_id) if @armor4_id > 0
  end

  def armor_ids() @equip[1...Unik::EQUIP_MAX].map {|a| a ? a.class_id : 0 } end

  def element_rate(element_id)
    result = @element_resistances[element_id]
    result += @temp_element_resistances[element_id]
    armor_res = KElemRES.armor_resistances
    for armor_id in self.armor_ids
      next if armor_id == 0
      result += armor_res[armor_id][element_id] if armor_res[armor_id]
    end
    for gem in @gem_resistances
      result -= gem.resistance if gem.kind == element_id
    end
    map_elem = KElemRES.map_elements[$game_map.map_id]
    result += map_elem[element_id] if map_elem and map_elem[element_id]
    for i in @states
      next unless $data_states[i].guard_element_set.include?(element_id)
      result -= KElemRES::STATE_RESISTANCE_BUFF
    end
    return result
  end

  def state_guard?(state_id)
    for armor in @equip[1...Unik::EQUIP_MAX]
      return true if armor and armor.guard_state_set.include?(state_id)
    end
    return false
  end

  def element_set
    weapon = @equip[0]
    return weapon ? weapon.element_set : []
  end

  def plus_state_set
    weapon = @equip[0]
    return weapon ? weapon.plus_state_set : []
  end

  def minus_state_set
    weapon = @equip[0]
    return weapon ? weapon.minus_state_set : []
  end

  def base_str
    n = $data_actors[@actor_id].parameters[2, @level]
    Unik::EQUIP_MAX.times {|n| n += @equip[n] ? @equip[n].str_plus : 0 }
    return [[n, 1].max, 999].min
  end

  def base_dex
    n = $data_actors[@actor_id].parameters[3, @level]
    Unik::EQUIP_MAX.times {|n| n += @equip[n] ? @equip[n].dex_plus : 0 }
    return [[n, 1].max, 999].min
  end

  def base_agi
    n = $data_actors[@actor_id].parameters[4, @level]
    Unik::EQUIP_MAX.times {|n| n += @equip[n] ? @equip[n].agi_plus : 0 }
    return [[n, 1].max, 999].min
  end

  def base_int
    n = $data_actors[@actor_id].parameters[5, @level]
    Unik::EQUIP_MAX.times {|n| n += @equip[n] ? @equip[n].int_plus : 0 }
    return [[n, 1].max, 999].min
  end

  def base_atk
    weapon = @equip[0]
    atk1 = weapon ? weapon.atk : 0
    atk1 += @equip[1].atk if @two_weapons and @equip[1]
    return atk1
  end

  def base_pdef
    pdef = 0
    Unik::EQUIP_MAX.times {|n| pdef += @equip[n] ? @equip[n].pdef : 0 }
    return pdef
  end

  def base_mdef
    mdef = 0
    Unik::EQUIP_MAX.times {|n| mdef += @equip[n] ? @equip[n].mdef : 0 }
    return mdef
  end

  def base_eva
    eva = 0
    (Unik::EQUIP_MAX-1).times {|n| eva += @equip[n+1] ? @equip[n+1].eva : 0 }
    return eva
  end

  def animation1_id
    weapon = @equip[0]
    return weapon ? weapon.animation1_id : 0
  end

  def animation2_id
    weapon = @equip[0]
    return weapon ? weapon.animation2_id : 0
  end

  def exchange_equip(kind, equipment)
    if kind == 0 # Weapon
      @equip[0] = weapon = $game_party.exchange_weapon(@equip[0], equipment)
      @weapon_id = weapon ? weapon.class_id : 0
    end
    if kind == 1 and @two_weapons
      @equip[1] = $game_party.exchange_weapon(@equip[1], equipment)
      @armor1_id = 0
    else # Armor or Accessory
      cid = @equip[kind] ? @equip[kind].class_id : 0
      aid = equipment ? equipment.id : 0
      update_auto_state($data_armors[cid], $data_armors[aid])
      armor = $game_party.exchange_armor(@equip[kind], equipment)
      @equip[kind] = armor
      case kind
      when 1 then @armor1_id = armor ? armor.class_id : 0
      when 2 then @armor2_id = armor ? armor.class_id : 0
      when 3 then @armor3_id = armor ? armor.class_id : 0
      when 4 then @armor4_id = armor ? armor.class_id : 0
      end
    end
  end

  def class_id=(class_id)
    return unless $data_classes[class_id]
    @class_id = class_id
    unless equippable?($data_weapons[@weapon_id])
      $game_party.exchange_weapon(@equip[0], nil)
      start = 1
    end
    if @two_weapons and !equippable?(@equip[1])
      $game_party.exchange_weapon(@equip[1], nil)
      start = 2
    end
    start.upto(Unik::EQUIP_MAX-1){|n| next if equippable?(@equip[n])
      $game_party.exchange_armor(@equip[n], nil)  }
    @armor1_id = 0 if @two_weapons or @equip[1] == nil
    @armor2_id = 0 if @equip[2] == nil
    @armor3_id = 0 if @equip[3] == nil
    @armor4_id = 0 if @equip[4] == nil
  end
end

class Dummy_Actor < Game_Actor
  def try_on_equip(kind, item) @equip[kind] = item end
end

class Game_Party
  attr_reader :weapons, :armors, :runes
  alias kyon_unik_weaponry_gm_party_init initialize
  def initialize
    kyon_unik_weaponry_gm_party_init
    @weapons = []
    @armors = []
    @runes = []
  end

  def exchange_weapon(weapon, next_weapon)
    index = @weapons.index(next_weapon)
    index ? @weapons[index] = weapon : @weapons << weapon
    @weapons = @weapons.compact
    return next_weapon
  end

  def exchange_armor(armor, next_armor)
    index = @armors.index(next_armor)
    index ? @armors[index] = armor : @armors << armor
    @armors = @armors.compact
    return next_armor
  end

  def gain_weapon(w_id, amount)
    if amount > 0
      amount.times { @weapons << KWeapon.new(w_id) }
    else
      wpns = @weapons.reject{|w| w.class_id != w_id }
      wpns = wpns[0...-amount] if !wpns.empty? and -amount < wpns.size
      wpns.each {|w| @weapons.delete(w) }
    end
  end

  def gain_armor(armor_id, amount)
    if amount > 0
      new_kind = Unik::ARMOR_TYPES[armor_id]
      amount.times { @armors << KArmor.new(armor_id)
        @armors[-1].kind = new_kind if new_kind }
    else
      armr = @armors.reject {|a| a.class_id != armor_id }
      armr = armr[0...-amount] if !armr.empty? and -amount < armr.size
      armr.each {|a| @armors.delete(a) }
    end
  end

  def gain_rune(cid, amount) amount.times { @runes << KRune.new(cid) } end
  def lose_rune(rune_index) @runes.delete_at(rune_index) end
end

class Window_Item
  def add_weaponry
    @data += $game_party.weapons if @mode == :all or @mode == :weapons
    @data += $game_party.armors if @mode == :all or @mode == :all_armors
    @data += $game_party.armors.reject {|a| a.kind != 2 } if @mode == :armors
    @data += $game_party.armors.reject {|a| a.kind != 1 } if @mode == :helmets
    @data += $game_party.armors.reject {|a| a.kind != 0 } if @mode == :shields
    if @mode == :accessories
      @data += $game_party.armors.reject {|a| a.kind != 3 }
    end
  end

  def draw_item(index)
    item = @data[index]
    iid = item.id
    number = case item
    when RPG::Item then $game_party.item_number(item.id)
    when RPG::Skill then $game_party.skills[item.id]
    else 0
    end
    can_use = (item.is_a?(RPG::Item) and $game_party.item_can_use?(iid))
    can_use = (can_use or number == 0)
    self.contents.font.color = can_use ? normal_color : disabled_color
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    return if number == 0
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
end

class Window_EquipRight
  def initialize(actor)
    super(272, 64, 368, 224)
    self.contents = Bitmap.new(width - 32, Unik::EQUIP_MAX * 32)
    @actor = actor
    refresh
    self.index = 0
  end

  def refresh
    self.contents.clear
    weapons = @actor.two_weapons
    equipment = weapons ? $data_system.words.weapon : $data_system.words.armor1
    accessory = $data_system.words.armor4
    @data = @actor.equip.map {|e| e if e != nil }
    @item_max = @data.size
    self.contents.font.color = system_color
    self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
    self.contents.draw_text(4, 32 * 1, 92, 32, equipment)
    self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
    self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
    4.upto(Unik::EQUIP_MAX-1) {|n|
      self.contents.draw_text(4, 32 * n, 92, 32, accessory) }
    @item_max.times {|n| draw_item_name(@data[n], 92, 32 * n) }
  end
end

class Window_EquipItem
  def initialize(actor, equip_type)
    super(0, 288, 640, 192)
    @actor = actor
    @equip_type = equip_type
    @column_max = 2
    refresh
    self.active = false
    self.index = -1
  end

  def equip_type=(type)
    @equip_type = type
    refresh
  end

  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if @equip_type == 0 or (@equip_type == 1 and @actor.two_weapons)
      weapon_set = $data_classes[@actor.class_id].weapon_set
      return if $game_party.weapons.empty?
      $game_party.weapons.each {|weapon| next unless weapon
        next unless weapon_set.include?(weapon.class_id)
        @data << weapon }
    else
      type = @equip_type - 1  
      armor_set = $data_classes[@actor.class_id].armor_set
      $game_party.armors.each {|a| next unless armor_set.include?(a.class_id)
        @data << a if a.kind == type or (a.kind == 3 and type > 3) }
    end
    @data << nil
    @item_max = @data.size
    self.contents = Bitmap.new(width - 32, row_max * 32)
    @item_max.times {|n| draw_item(n) if @data[n] }
  end

  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  end
end

class Window_Status
  attr_accessor :mode
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    @mode = 0
    refresh
  end

  def refresh
    self.contents.clear
    self.contents.font.size = 22
    draw_actor_graphic(@actor, 44, 144)
    draw_actor_name(@actor, 4, 0)
    draw_actor_class(@actor, 4, 32)
    self.contents.font.color = system_color
    @mode == 0 ? refresh_hp_sp_param : refresh_elem_param
    self.contents.font.size = 20
    return unless Object.const_defined?('KElemRES')
    self.contents.draw_text(0, 422, 604, 32, KElemRES::PRESS_UP_DOWN_BUTTON, 1)
  end

  def refresh_hp_sp_param
    kelemres = Object.const_defined?('KElemRES')
    if kelemres
     self.contents.draw_text(0, 0, 608, 32, KElemRES::WINDOW_STATUS_LABELS[0],1)
    end
    draw_actor_level(@actor, 104, 32)
    draw_actor_state(@actor, 104, 64)
    draw_actor_hp(@actor, 104, 112, 172)
    draw_actor_sp(@actor, 104, 144, 172)
    draw_actor_parameter(@actor, 104, 192, 0)
    draw_actor_parameter(@actor, 104, 224, 1)
    draw_actor_parameter(@actor, 104, 256, 2)
    draw_actor_parameter(@actor, 104, 300, 3)
    draw_actor_parameter(@actor, 104, 332, 4)
    draw_actor_parameter(@actor, 104, 364, 5)
    draw_actor_parameter(@actor, 104, 396, 6)
    self.contents.font.color = system_color
    self.contents.draw_text(320, 48, 80, 32, "EXP")
    self.contents.draw_text(320, 80, 80, 32, "NEXT")
    self.contents.font.color = normal_color
    self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
    self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(320, 160, 96, 32, KElemRES::EQUIPMENT) if kelemres
    y = 204
    (Unik::ARMOR_TYPES + 1).times {|n| next unless @actor.equip[n]
      draw_item_name(@actor.equip[n], 320 + 16, y + n * 28) }
  end
end

class Window_ShopBuy
  def draw_item(index)
    item = @data[index]
    iid = item.id
    number = case item
    when RPG::Item then $game_party.item_number(iid)
    when RPG::Weapon
      w = $game_party.weapons
      w.size == 0 ? w.size : w.reject{|w| w.class_id != @item.id }.size
    when RPG::Armor
      a = $game_party.armors
      a.size == 0 ? a.size : a.reject{|a| a.class_id != @item.id }.size
    end
    is_item = (item.is_a?(RPG::Item) and number < 99)
    no_item = !item.is_a?(RPG::Item)
    salable = (item.price <= $game_party.gold and (is_item or no_item))
    self.contents.font.color = salable ? normal_color : disabled_color
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  end
end

class Window_ShopSell
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 1...$data_items.size
      @data.push($data_items[i]) if $game_party.item_number(i) > 0
    end
    @data += $game_party.weapons
    @data += $game_party.armors
    @item_max = @data.size
    return if @item_max == 0
    self.contents = Bitmap.new(width - 32, row_max * 32)
    @item_max.times {|i| draw_item(i) }
  end
end

class Window_ShopStatus
  def refresh
    self.contents.clear
    return unless @item
    number = case @item
    when RPG::Item then $game_party.item_number(@item.id)
    when RPG::Weapon
      w = $game_party.weapons
      w.size == 0 ? w.size : w.reject{|w| w.class_id != @item.id }.size
    when RPG::Armor
      a = $game_party.armors
      a.size == 0 ? a.size : a.reject{|a| a.class_id != @item.id }.size
    end
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 200, 32, "number in possession")
    self.contents.font.color = normal_color
    self.contents.draw_text(204, 0, 32, 32, number.to_s, 2)
    return if @item.is_a?(RPG::Item)
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      equip = actor.equippable?(@item)
      self.contents.font.color = equip ? normal_color : disabled_color
      self.contents.draw_text(4, 64 + 64 * i, 120, 32, actor.name)
      if @item.is_a?(RPG::Weapon)
        item1 = $data_weapons[actor.weapon_id]
      elsif @item.kind == 0
        item1 = $data_armors[actor.armor1_id]
      elsif @item.kind == 1
        item1 = $data_armors[actor.armor2_id]
      elsif @item.kind == 2
        item1 = $data_armors[actor.armor3_id]
      else
        item1 = $data_armors[actor.armor4_id]
      end
      if actor.equippable?(@item)
        if @item.is_a?(RPG::Weapon)
          atk1 = item1 != nil ? item1.atk : 0
          atk2 = @item != nil ? @item.atk : 0
          change = atk2 - atk1
        end
        if @item.is_a?(RPG::Armor)
          pdef1 = item1 != nil ? item1.pdef : 0
          mdef1 = item1 != nil ? item1.mdef : 0
          pdef2 = @item != nil ? @item.pdef : 0
          mdef2 = @item != nil ? @item.mdef : 0
          change = pdef2 - pdef1 + mdef2 - mdef1
        end
        self.contents.draw_text(124, 64 + 64 * i, 112, 32,
          sprintf("%+d", change), 2)
      end
      return unless item1
      x = 4
      y = 64 + 64 * i + 32
      bitmap = RPG::Cache.icon(item1.icon_name)
      opacity = self.contents.font.color == normal_color ? 255 : 128
      self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
      self.contents.draw_text(x + 28, y, 212, 32, item1.name)
    end
  end
end

class Interpreter
  def command_127
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    $game_party.gain_weapon(@parameters[0], value)
    return true
  end

  def command_128
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    $game_party.gain_armor(@parameters[0], value)
    return true
  end
end

class Scene_Equip
  def main
    @erase_stats = true
    @actor = $game_party.actors[@actor_index]
    @clone = Dummy_Actor.new(@actor.id)
    @clone.level = @actor.level
    @help_window = Window_Help.new
    @left_window = Window_EquipLeft.new(@actor)
    @right_window = Window_EquipRight.new(@actor)
    @item_window = Window_EquipItem.new(@actor, @equip_index)
    @right_window.help_window = @help_window
    @item_window.help_window = @help_window
    @right_window.index = @equip_index
    refresh
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @left_window.dispose
    @right_window.dispose
    @item_window.dispose
    @clone = nil
  end

  def refresh
    return unless @erase_stats
    @left_window.set_new_parameters(nil, nil, nil)
    @item_window.equip_type = @right_window.index
    @erase_stats = nil
  end

  def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(2)
      return
    end
    if Input.trigger?(Input::C)
      if @actor.equip_fix?(@right_window.index)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @right_window.active = false
      @item_window.active = true
      @item_window.index = 0
      show_param
      return
    end
    if Input.trigger?(Input::R)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
    if Input.trigger?(Input::L)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Equip.new(@actor_index, @right_window.index)
      return
    end
    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
      @erase_stats = true
    end
  end

  def update_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.equip_se)
      @actor.exchange_equip(@right_window.index, @item_window.item)
      @right_window.active = true
      @item_window.active = false
      @item_window.index = -1
      @left_window.refresh
      @right_window.refresh
      @item_window.refresh
      return
    end
    if Input.trigger?(Input.dir4)
      show_param
    end
  end

  def show_param
    Unik::ARMOR_TYPES.times {|n| equip = @actor.equip[n]
        @clone.equip[n] = equip ? @actor.equip[n].clone : nil }
    new_item = @item_window.item ? @item_window.item.clone : nil
    @clone.try_on_equip(@right_window.index, new_item)
    new_atk = @clone.atk
    new_pdef = @clone.pdef
    new_mdef = @clone.mdef
    @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
  end
end

Complemento para Tienda Normal
Solo dejen un renglón en blanco entre el final del script principal y el complemento en el lado derecho del Editor de Scripts.

Código:


# * Typical Scene_Shop Add-On for Unik Weaponry XP
#   Scripter : Kyonides-Arkanthos

class Scene_Shop
  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = @dummy_window.visible = true
      @buy_window.active = @buy_window.visible = false
      @status_window.visible = @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      price = @item.methods.include?('price') ? @item.price : 0
      if @item == nil or price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      number = case @item
      when RPG::Item then $game_party.item_number(@item.id)
      when RPG::Skill then $game_party.skill_number(@item.id)
      when RPG::Weapon
        w = $game_party.weapons
        w.size == 0 ? w.size : w.reject{|w| w.class_id != @item.id }.size
      when RPG::Armor
        a = $game_party.armors
        a.size == 0 ? a.size : a.reject{|a| a.class_id != @item.id }.size
      end
      if number == (limit = check_limit)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = price == 0 ? limit : $game_party.gold / price
      max = [max, limit - number].min
      @buy_window.active = @buy_window.visible = false
      @number_window.set(@item, max, price)
      @number_window.active = @number_window.visible = true
    end
  end

  def update_sell
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @sell_window.item
      @status_window.item = @item
      if @item == nil or @item.price == 0
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      number = case @item
      when RPG::Item then $game_party.item_number(@item.id)
      when RPG::Weapon
        w = $game_party.weapons
        w.size == 0 ? w.size : w.reject{|w| w.class_id != @item.id }.size
      when RPG::Armor
        a = $game_party.armors
        a.size == 0 ? a.size : a.reject{|a| a.class_id != @item.id }.size
      end
      @sell_window.active = false
      @sell_window.visible = false
      @number_window.set(@item, number, @item.price / 2)
      @number_window.active = true
      @number_window.visible = true
      @status_window.visible = true
    end
  end

  def update_number
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @number_window.active = false
      @number_window.visible = false
      case @command_window.index
      when 0  # buy
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # sell
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.shop_se)
      @number_window.active = false
      @number_window.visible = false
      number = @number_window.number
      case @command_window.index
      when 0  # buy
        $game_party.lose_gold(@number_window.number * @item.price)
        case @item
        when RPG::Item then $game_party.gain_item(@item.id, number)
        when RPG::Weapon then $game_party.gain_weapon(@item.id, number)
        when RPG::Armor then $game_party.gain_armor(@item.id, number)
        end
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # sell
        $game_party.gain_gold(number * (@item.price / 2))
        case @item
        when RPG::Item then $game_party.lose_item(@item.id, number)
        when RPG::Weapon then $game_party.lose_weapon(@item.class_id, number)
        when RPG::Armor then $game_party.lose_armor(@item.class_id, number)
        end
        @gold_window.refresh
        @sell_window.refresh
        @status_window.refresh
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
  end
end

En el siguiente post encontrarán la otra versión del complemento para Unik Weaponry XP.


Última edición por kyonides-arkanthos el Lun Nov 07, 2016 3:38 am, editado 1 vez
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
kyonides-arkanthos
Lord Guru Maker
Lord Guru Maker
avatar

Cantidad de envíos : 1768
Miembro desde : 03/02/2010
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: Unik Weaponry XP   Lun Nov 07, 2016 3:36 am

Complemento para Unik Weaponry XP si utilizan KyoDiscounts XP

Deben de haber colocado Unik Weaponry XP o KyoDiscounts XP de primero, seguido por el otro y luego por este complemento, de lo contrario se produciría un tonto error que en realidad es bastante fácil de prevenir.

Código:
# * Scene_Shop Add-On for Unik Weaponry XP and KyoDiscounts XP
#  Scripter : Kyonides-Arkanthos

class Scene_Shop
  alias kyon_discounts_scn_shop_main main
  alias kyon_discounts_scn_shop_up update
  def main
    @question_window = Window_ShopDiscountAlert.new
    @question_window.visible = false
    @discount_window = Window_ShopDiscountCoupon.new
    @discount_window.active = false
    @discount_window.visible = false
    kyon_discounts_scn_shop_main
    @question_window.dispose
    @discount_window.dispose
    $game_variables[KyoShop::STORECODEVAR] = 0
  end

  def update_discount_message
    cd = $game_party.check_discounts
    text = cd ? KyoShopLabels::SOMEDISCOUNTS : KyoShopLabels::NODISCOUNTS
    @question_window.set_text(text)
  end

  def update
    @discount_window.update
    kyon_discounts_scn_shop_up
    if @discount_window.active
      update_discount
      return
    end
  end

  def update_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0  # buy
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @dummy_window.visible = false
        @buy_window.active = true
        @buy_window.visible = true
        @buy_window.refresh
        @status_window.visible = true
        update_discount_message
        @question_window.visible = true
      when 1  # sell
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @dummy_window.visible = false
        @sell_window.active = true
        @sell_window.visible = true
        @sell_window.refresh
      when 2  # quit
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Map.new
      end
      return
    end
  end

  def update_buy
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
     @dummy_window.visible = true
      @buy_window.active = false
     @buy_window.visible = false
      @question_window.visible = false
      @status_window.visible = false
     @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(KyoShop::DISCOUNTBUTTON)
      if !$game_party.check_discounts or @discounts_allowed or
          @coupons_allowed
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @buy_window.active = false
      @buy_window.visible = false
      @discount_window.help_window ||= @help_window
      @discount_window.refresh
      @discount_window.active = true
      @discount_window.visible = true
      @question_window.set_text(KyoShopLabels::SELECTDISCOUNT)
      return
    end
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      @price = @item.methods.include?('price') ? @item.price : 0
     if @buy_window.discount > 0
        @price -= @item.price * @discount_window.item.price / 100
      end
      if @item == nil or @price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      number = case @item
      when RPG::Item then $game_party.item_number(@item.id)
      when RPG::Skill then $game_party.skill_number(@item.id)
      when RPG::Weapon
        w = $game_party.weapons
        w.size == 0 ? w.size : w.reject{|w| w.class_id != @item.id }.size
      when RPG::Armor
        a = $game_party.armors
        a.size == 0 ? a.size : a.reject{|a| a.class_id != @item.id }.size
      end
      if number == (limit = check_limit)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      max = @price == 0 ? limit : $game_party.gold / @price
      max = [max, limit - number].min
      @buy_window.active = false
     @buy_window.visible = false
      @number_window.set(@item, max, @price)
      @number_window.active = @number_window.visible = true
      return unless $game_party.check_discounts
      return if @discounts_allowed or @coupons_allowed
      @question_window.set_text(KyoShopLabels::NEEDADISCOUNT)
    end
  end

  def update_discount
    if Input.trigger?(Input::B)
      buy_window_active
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if KyoShop::DISCOUNT_IDS.include?(@discount_window.item.id)
        @discounts_allowed = true
      else
        @coupons_allowed = true
      end
      @buy_window.discount = @discount_window.item.price
      @buy_window.refresh
      buy_window_active
      @question_window.set_text(KyoShopLabels::APPLYDISCOUNT)
      return
    end
  end

  def buy_window_active
    @discount_window.active = false
    @discount_window.visible = false
    @buy_window.active = true
    @buy_window.visible = true
  end

  def check_number
    return number = case @item
    when RPG::Item then $game_party.item_number(@item.id)
    when RPG::Weapon then $game_party.weapon_number(@item.id)
    when RPG::Armor then $game_party.armor_number(@item.id)
    end
  end

  def update_sell
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end
    if Input.trigger?(Input::C)
      @item = @sell_window.item
      @status_window.item = @item
      if @item == nil or @item.price == 0
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      number = case @item
      when RPG::Item then $game_party.item_number(@item.id)
      when RPG::Weapon
        w = $game_party.weapons
        w.size == 0 ? w.size : w.reject{|w| w.class_id != @item.id }.size
      when RPG::Armor
        a = $game_party.armors
        a.size == 0 ? a.size : a.reject{|a| a.class_id != @item.id }.size
      end
      @sell_window.active = false
      @sell_window.visible = false
      @number_window.set(@item, number, @item.price / 2)
      @number_window.active = true
      @number_window.visible = true
      @status_window.visible = true
    end
  end

  def update_number
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
     update_discount_message
      @number_window.active = false
      @number_window.visible = false
      case @command_window.index
      when 0  # buy
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # sell
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.shop_se)
      @number_window.active = false
      @number_window.visible = false
      number = @number_window.number
      case @command_window.index
      when 0  # buy
        $game_party.lose_gold(@number_window.number * @price)
        case @item
        when RPG::Item then $game_party.gain_item(@item.id, number)
        when RPG::Weapon then $game_party.gain_weapon(@item.id, number)
        when RPG::Armor then $game_party.gain_armor(@item.id, number)
        end
        if @coupons_allowed
          @coupons_allowed = nil
          $game_party.lose_item(@discount_window.item.id, 1)
          update_discount_message
          @discount_window.refresh
          @buy_window.discount = 0
        end
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # sell
        $game_party.gain_gold(number * (@item.price / 2))
        case @item
        when RPG::Item then $game_party.lose_item(@item.id, number)
        when RPG::Weapon then $game_party.lose_weapon(@item.class_id, number)
        when RPG::Armor then $game_party.lose_armor(@item.class_id, number)
        end
        @gold_window.refresh
        @sell_window.refresh
        @status_window.refresh
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
  end
end


Última edición por kyonides-arkanthos el Mar Nov 08, 2016 12:58 am, editado 1 vez
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
Nyakuya
Caballero Experimentado
Caballero Experimentado
avatar

Cantidad de envíos : 225
Miembro desde : 09/10/2014
Edad : 21
Localización : Tandil
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: Unik Weaponry XP   Mar Nov 08, 2016 12:51 am

Bueno, hay 2 ideas que tengo y se me ocurrieron postearlas en el tema de este script debido a que tienen que ver con las armas, y sería algo útil que venga todo en el mismo script para que después no haya problemas con compatibilidades.

Son 2 ideas que tengo ya pensadas y escritas en txt con sus posibles variantes, así que cualquier duda me preguntan y listo, ya que lo tengo todo pensado y escrito, y no es una idea en el aire.

El primer tema, sería que las armas puedan tener límite de nivel, y con esto no me refiero a subir el arma de nivel ni a nada de esto, me refiero a que un arma que sea muy buena, posiblemente tenga un límite de nivel 40, y este significaría que solo la podrian equipar personajes con nivel 40 o superior. Básicamente es porque en un proyecto como el mio por ejemplo, el jugador tiene 16 compañeros de los cuales lógicamente 3 llevará en su grupo, y eso deja otros 13 personajes que no subirán de nivel a menos que el los utilice. Si el jugador crea super armas con este script y las mejora hasta el máximo, y luego se las puede equipar a los personajes nivel 1, estos personajes van a arrasar con todo muy facilmente, y la idea es que exista un equilibrio entre nivel y equipamiento, entre level y Gear.
Volver arriba Ir abajo
Ver perfil de usuario
Nyakuya
Caballero Experimentado
Caballero Experimentado
avatar

Cantidad de envíos : 225
Miembro desde : 09/10/2014
Edad : 21
Localización : Tandil
Sexo : Masculino

Maker : RMXP


MensajeTema: Re: Unik Weaponry XP   Mar Nov 08, 2016 1:16 am

La segunda idea la posteo por separado para que se haga más ameno leer todo esto, ya que leyendo todo junto en un mismo mensaje puede llegar a ser pesado por la extención que tienen mis explicaciones. Sin divagar más paso a explicarla.

Esta segunda (y última) idea que tiene que ver con las armas, permitiría un sistema de Especialización, ó Maestría, ó Habilidad, o como se le quiera llamar.
Básicamente este sistema permitiría que mientras más utilice X personajes a X tipo de arma, su habilidad con esta aumentaría, pasando de ser un novato, a ser todo un gran experto. (Logicamente esto sucede porque el personaje en cuestión aprende con la práctica. El hecho de que su habilidad con X tipo de arma aumente, significaría que el nivel de Especialización con dicha arma aumentaría, desde nivel 1 al nivel que fuere).

Este sistema como se puede apreciar, trata de romper lo de "Esta clase de personaje no puede utilizar todos los demas tipos de armas. (Si, se que tiene brazos como para utilizar todas las armas, pero aun asi no puede porque lo digo yo, el creador del juego)".

(Esto de abajo es una imagen previa no exacta de como mostraría el script los datos. Supongamos que entramos a los datos del personaje ID 1. Lo que se define en el script funcionaría para todos los personajes existentes en la base da datos, solo que al subir de nivel, obviamente funciona para cada uno por separado)

[NOMBRE DE TIPO DE ARMA + ID] (Esto hace que todas las  ID de armas que metas en "ESPADA" sean reconocidas por el script como ESPADA. No hace falta que el script lea el tipo de arma desde la base de datos (aunque si queres podes hacer que lo lea de la base de datos, esto sería a tu gusto. Luego lo que el script hace, es que si el personaje ID 1 (porque estabamos hablando de este) utiliza cualquiera arma que esté marcada como ESPADA por el script, su nivel de Especializacion con esta arma comenzaría a ganar "experiencia", y si la utiliza lo suficiente subiría de nivel y obtendría beneficios pequeños (o grandes dependiendo del valor asignado) por cada nivel que suba).

( "Espada" = 1, 2, 3, 4, 11, 12, 13, 14)
( "Lanza" = 5, 6, 7, 8, 15, 16, 17, 18)

No creo que haga falta poner mas ejemplos, ya que creo que se entiende bien. El problema que seguro tu script va a tener y que ya pensé como arreglarlo, es que quizá al modificar un ID de arma deje de reconocerla como ESPADA, pero no pasa nada, porque en este caso (y obviamente si aceptas la idea de agregar esta funcion) lo que tu script haria es fijarse el arma que se está modificando, si dicha arma es ESPADA y se modifica, ahora esa arma sería marcada como ESPADA. De esta forma no importa cuantas veces modifiques que arma, ya que si tu script es capaz de decir "bueno, esta arma era ESPADA, asi que ahora va a ser ESPADA", entonces funcionará.

No se si hacer que el jugador gane "EXP" con cada ataque que de (es decir que la experiencia seria la cantidad de ataques que tiene que hacer para subir de nivel), ó hacer que la "EXP" sea cantidad de daño causado (es decir que tendria que causar X cantidad de daño para subir de nivel).
En todo caso, el calculo para saber cuanto se necesitaría en cualquiera de los 2 casos, sería algo como esto, si inicialmente necesita dar 10 golpes o causar 10 de daño para subir de nivel (valor que obviamente se puede cambiar), luego estaría el siguiente valor que se sumaría a la cantidad necesaria para subir de nivel, digamos +10... En ese caso sería que para nivel 1 el jugador necesitaria dar 10 golpes, para nivel 2 10+10=20, para nivel 3 20+10= 30, para nivel 4 30+10= 40, etc. Se le sumaria X cantidad en cada nivel.

Casi es todo, solo restaría decir que los aumentos que el jugador tendria al subir de nivel.
Digamos que tiene equipada ESPADA y su nivel de Especializacion con ESPADA es de 11, supongamos tambien que en el script pusimos que por cada nivel alcanzado obtenga +1 de ataque, (Si no se puede entonces que aumente +1 de alguna stat, fuerza, destreza, etc)... Entonces lo que pasaría es que el personaje tendría +10 de ataque mientras tenga esa arma equipada, porque ese es el bono que recibe gracias a tener nivel 11 de Especializacion con ese TIPO de arma.

Por cierto (esto depende de lo que vos elijas), si queres que haya una diferencia entre un guerrero y un mago cuando ambos empuñen armas de mago o espadas, entonces se podría hacer que dependiendo de la ID de personaje, inicien con "desventaja" en dicho tipo de arma. Supongamos que los magos inician en -10 de habilidad de Especializacion con ESPADAS, entonces al equipar una espada tendrian 10 niveles de desventaja ante un guerrero, por lo que si ambos son nivel 100, el Guerrero seguiría siendo más efectivo que el mago para utilizar espadas. (Como ya dije, es solo una idea por si no te gusta que todos tengan el mismo nivel con todas las armas).

Listo. Espero te sea ameno y que no tengas que romperte demasiado la cabeza con mis ideas locochonas rebeldes y revolucionariamente rompe pelot** Very Happy
Volver arriba Ir abajo
Ver perfil de usuario
Contenido patrocinado




MensajeTema: Re: Unik Weaponry XP   

Volver arriba Ir abajo
 
Unik Weaponry XP
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

Permisos de este foro:No puedes responder a temas en este foro.
Maker Palace :: RGSS Scripts :: Scripts Maker XP-
Cambiar a: