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
Temas similares
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 6 usuarios en línea: 0 Registrados, 0 Ocultos y 6 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 | 
 

 KBets Versión Sistema de Batalla del 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: KBets Versión Sistema de Batalla del XP   Dom Dic 30, 2012 1:50 pm

KBets
Versión Sistema de Batallas Típico del XP

v 1.0.2

por Kyonides-Arkanthos


Este script les agrega una curiosísima función al sistema de batallas que viene por defecto en el Maker XP, la de hacer una apuesta antes de entrar de lleno en la lucha.

Los héroes pueden apostar:

  • Dinero
  • Posesiones (cualquiera de los 3 tipos básicos)
  • Técnicas o Habilidades (1 por batalla)
  • La Vida de 1 de sus héroes
  • NADA (¡No Sean Cobardes!)


Los enemigos pueden apostar:

  • Dinero
  • Experiencia para todos los héroes
  • Posesiones
  • Técnicas
  • Pueden ocultar la información de cualquiera de las anteriores


En realidad con los textos incluidos en el módulo KBets ya se dan una idea de lo que hace, pero, para aquellos a los que les gusta más ver los ejemplos de uso, igual les dejo un demo con una batalla en la que incluso se puede hacer que mediante evento se haga aleatoria la apuesta del oponente.


SCRIPT

Código:
#  KBets - Default BS Version
#  v 1.0.2 - 2012-12-30
#  Scripter : Kyonides-Arkanthos

#  Este script les permite hacer apuestas entre los enemigos y los héroes.

module KBets
  # ID de la Variable de la Apuesta del Enemigo
  ENEMYBETVARID = 1
  # ID de la Variable de la Apuesta del Jugador
  PLAYERBETVARID = 2
  # ID del Interruptor que oculta la información de la Apuesta Enemiga
  SECRETBETSWITCHID = 1
  ENEMYBET = 'Apuesta del Oponente'
  SECRETBET = 'Envuelta en el Misterio'
  MAKEABET = 'Elige un tipo de Apuesta'
  BETOPTIONS = ['El Dinero', 'Una Posesión', 'Una Técnica', 'La Vida', 'Nada']
  PARTYGOLD = '¿Cuánto dinero se apostará?'
  NOTENOUGHGOLD = 'El Monto de la Apuesta no puede ser mayor que su dinero'
  HEROESLIFE = '¿Quién apostará su vida?'
  NOBET = 'La pelea se cancela porque el retador se niega a apostar.'
  BETRESULTS = 'Resultados de la Apuesta'
  VICTORY = '¡La Victoria es toda suya!'
  DEFEAT = '¡Han sido aplastados sin misericordia!'
  PRIZE = "Obtienen %s %s"
  LEARNED = "¡%s aprendió la técnica %s!"
  NODEATH = "¡Por dicha %s seguirá con vida!"
  DECEASED = "%s ya dejó este mundo por el bien de todos"
  FORGETSKILL = "%s olvidó todo sobre la técnica %s"
  HANDOVER = "Se entregó %s %s cómo lo acordaron"
  @no_bet = true # NO EDITAR
  def self.no_bet() @no_bet end
  def self.no_bet=(bool) @no_bet = bool end
end

class Game_Party
  attr_reader :battle_results, :items, :weapons, :armors
  attr_accessor :last_battle_result
  alias kyon_KBets_gm_party_init initialize
  def initialize
    @battle_results = [0, 0, 0]
    kyon_KBets_gm_party_init
  end

  def battle_results=(index)
    @results[index] += 1
    @last_battle_result = index
  end

  def no_belongings?() @items.empty? and @weapons.empty? and @armors.empty? end
end

class Window_Command
  alias kyon_KBets_win_comm_init initialize
  def initialize(width, commands)
    @disabled = Array.new(commands.size, nil)
    kyon_KBets_win_comm_init(width, commands)
  end

  def disable_item(index)
    draw_item(index, disabled_color)
    @disabled[index] = true
  end

  def command_disabled?() @disabled[@index] end
end

class Window_Item
  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
    unless $game_temp.in_battle and KBets.no_bet
      for i in 1...$data_weapons.size
        @data.push($data_weapons[i]) if $game_party.weapon_number(i) > 0
      end
      for i in 1...$data_armors.size
        @data.push($data_armors[i]) if $game_party.armor_number(i) > 0
      end
    end
    @item_max = @data.size
    return unless @item_max > 0
    self.contents = Bitmap.new(width - 32, row_max * 32)
    (0...@item_max).each {|i| draw_item(i) }
  end

  def item_qty
    case self.item
    when RPG::Item;  $game_party.item_number(self.item.id)
    when RPG::Weapon; $game_party.weapon_number(self.item.id)
    when RPG::Armor;  $game_party.armor_number(self.item.id)  end
  end
end

class Window_EnemyBet < Window_Base
  def initialize
    super(8, 128, 204, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    @text = $game_variables[KBets::ENEMYBETVARID]
    refresh
  end

  def refresh
    self.contents.font.bold = true
    self.contents.draw_text(0, 0, self.width-32, 28, KBets::ENEMYBET, 1)
    self.contents.font.bold = nil
    if $game_switches[KBets::SECRETBETSWITCHID]
      @text = KBets::SECRETBET
    else
      @text = case @text[0]
      when :i, :item;  "#{@text[2]} #{$data_items[@text[1]].name}"
      when :w, :weapon; "#{@text[2]} #{$data_weapons[@text[1]].name}"
      when :a, :armor;  "#{@text[2]} #{$data_armors[@text[1]].name}"
      when :s, :skill;  "#{$data_skills[@text[1]].name}"
      when :g, :gold;  "#{@text[1]} #{$data_system.words.gold}"
      when :e, :exp;    "#{@text[1]} EXP"  end
    end
    self.contents.draw_text(0, 48, self.width-32, 28, @text, 1)
  end
end

class Window_BetResult < Window_Base
  def initialize(texts)
    super(136, 128, 380, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @texts = texts
    refresh
  end

  def refresh
    self.contents.font.bold = true
    self.contents.draw_text(0, 0, self.width-32, 28, KBets::BETRESULTS, 1)
    self.contents.font.bold, y = nil, 32
    @texts.each {|text|
      self.contents.draw_text(0, y += 32, self.width - 32, 28, text, 1) }
  end
end

class Interpreter
  def enemy_bet(*args)
    KBets.no_bet = nil
    $game_variables[KBets::ENEMYBETVARID] = case args[0]
    when :g, :gold, :e, :exp;  args
    when :i, :item;  [args[0], $data_items[args[1]].id, args[2]]
    when :w, :weapon; [args[0], $data_weapons[args[1]].id, args[2]]
    when :a, :armor;  [args[0], $data_armors[args[1]].id, args[2]]
    when :s, :skill;  [args[0], $data_skills[args[1]].id]  end
  end
end

class Scene_Battle
  alias kyon_KBets_scn_battle_update update
  alias kyon_KBets_scn_battle_start_phase1 start_phase1
  alias kyon_KBets_scn_battle_battle_end battle_end
  def update
    kyon_KBets_scn_battle_update
    update_phase0 if @phase == 0
  end

  def start_phase1
    var = $game_variables[KBets::ENEMYBETVARID]
    if !@made_bet and var != 0
      @phase = 0
      make_bet_select_window
      @help_window.set_text(KBets::MAKEABET, 1)
    else kyon_KBets_scn_battle_start_phase1 end
  end

  def update_phase0
    if @bet_window and @bet_window.active
      update_phase0_bet_select
    elsif @gold_input_window
      update_phase0_gold_input
    elsif @item_window
      update_phase0_item_select
    elsif @skill_window
      update_phase0_skill_select
    elsif @actor_arrow
      update_phase0_actor_select
    elsif @abort_battle
      if Input.trigger?(Input::B) or Input.trigger?(Input::C)
        $game_system.se_play($data_system.cancel_se)
        $game_temp.battle_abort = true
      end
    elsif @bet_result_window
      update_battle_end
    end
  end

  def update_phase0_bet_select
    @bet_window.update
    return unless Input.trigger?(Input::C)
    if @bet_window.command_disabled?
      $game_system.se_play($data_system.buzzer_se)
      return
    elsif @bet_window.index != 4
      $game_system.se_play($data_system.decision_se)
      $game_temp.battle_can_escape, KBets.no_bet = nil, true
    end
    @bet_window.active = @bet_window.visible = nil
    case @bet_window.index
    when 0; start_gold_input
    when 1; start_item_select
    when 2..3
      @actor_index = 0
      start_actor_select
      if @bet_window.index == 3
        @actor_arrow.help_window = nil
        @help_window.set_text(KBets::HEROESLIFE, 1)
      end
    when 4
      $game_system.se_play($data_system.cancel_se)
      dispose_bet_select_window
      @help_window.set_text(KBets::NOBET, 1)
      @abort_battle = KBets.no_bet = true
      battle_end(1)
    end
  end

  def make_bet_select_window
    @enemybet_window = Window_EnemyBet.new
    @enemybet_window.opacity = 180
    @bet_window = Window_Command.new(200, KBets::BETOPTIONS)
    @bet_window.x = (640 - @bet_window.width) / 2
    @bet_window.y = 480 - @bet_window.height - @status_window.height - 32
    @bet_window.active, @bet_window.opacity = true, 180
    @bet_window.disable_item(0) if $game_party.gold == 0
    @bet_window.disable_item(1) if $game_party.no_belongings?
    skills = $game_party.actors.map{|a| a.skills }.flatten
    @bet_window.disable_item(2) unless skills
  end

  def bet_windows_visible=(bool)
    @bet_window.active = @bet_window.visible = bool
    @enemybet_window.active = @enemybet_window.visible = bool
  end

  def dispose_bet_select_window
    @bet_window.active = @bet_window.visible = nil
    @bet_window.dispose
    @bet_window = nil
    @enemybet_window.dispose
    @enemybet_window = nil
  end

  def start_gold_input
    @help_window.set_text(KBets::PARTYGOLD, 1)
    max = $game_party.gold.to_s.size
    max = max < 9 ? max : 8
    @gold_input_window = Window_InputNumber.new(max)
    @gold_input_window.x = (640 - @gold_input_window.width) / 2
    @gold_input_window.y = (480 - @gold_input_window.height) / 2
    @gold_input_window.opacity = 255
  end

  def end_gold_input
    @gold_input_window.dispose
    @gold_input_window = nil
  end

  def update_phase0_gold_input
    @gold_input_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_gold_input
      bet_windows_visible = true
    elsif Input.trigger?(Input::C)
      if @gold_input_window.number <= $game_party.gold
        $game_system.se_play($data_system.decision_se)
        $game_variables[KBets::PLAYERBETVARID] = [:g, @gold_input_window.number]
        end_gold_input
        @help_window.visible = nil
        next_battle_phase
      else
        $game_system.se_play($data_system.buzzer_se)
        @help_window.set_text(KBets::NOTENOUGHGOLD, 1)
      end
    end
  end

  def update_phase0_item_select
    @item_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_skill_select
      start_actor_select
      bet_windows_visible = true
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      qty = @item_window.item_qty
      $game_variables[KBets::PLAYERBETVARID] = [@item_window.item, qty]
      @help_window.visible = nil
      end_item_select
      next_battle_phase
    end
  end

  def update_phase0_skill_select
    @skill_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_skill_select
      start_actor_select
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      $game_variables[KBets::PLAYERBETVARID] += [:s, @skill_window.skill.id]
      end_skill_select
      @help_window.visible = @active_battler = nil
      next_battle_phase
    end
  end

  def update_phase0_actor_select
    @actor_arrow.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_actor_select
      @bet_window.active = @bet_window.visible = true
      @help_window.set_text(KBets::MAKEABET, 1)
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      actor = $game_party.actors[@bet_index = @actor_arrow.index]
      bet_windows_visible = @help_window.visible = nil
      end_actor_select
      $game_variables[KBets::PLAYERBETVARID] = [@active_battler = actor]
      if @bet_window.index == 2
        start_skill_select
      elsif @bet_window.index == 3
        next_battle_phase
      end
    end
  end

  def next_battle_phase
    dispose_bet_select_window
    @made_bet = true
    start_phase1
  end

  def battle_end(result)
    if result != 1 and $game_variables[KBets::ENEMYBETVARID] != 0
      @result_window.visible = nil if @result_window
      text = result == 0 ? KBets::VICTORY : KBets::DEFEAT
      @help_window.set_text(text, 1)
      @phase, @bet_result_window = 0, 0
      check_bet_result(result)
      return
    elsif result == 1 and !@bet_canceled
      @phase, @battle_end_wait_count, @bet_canceled = 0, 60, true
      update_battle_end
    else kyon_KBets_scn_battle_battle_end(result) end
  end

  def check_bet_result(result)
    case @battle_result = result
    when 0; victory
    when 2; defeat  end
    @battle_end_wait_count = 100
  end

  def victory
    var = $game_variables[KBets::ENEMYBETVARID]
    message = case var[0]
    when :g, :gold
      $game_party.gain_gold(var[1])
      [sprintf(KBets::PRIZE, var[1], $data_system.words.gold)]
    when :i, :item
      $game_party.gain_item(var[1], var[2])
      [sprintf(KBets::PRIZE, var[2], $data_items[var[1]].name)]
    when :w, :weapon
      $game_party.gain_weapon(var[1], var[2])
      [sprintf(KBets::PRIZE, var[2], $data_weapons[var[1]].name)]
    when :a, :armor
      $game_party.gain_armor(var[1], var[2])
      [sprintf(KBets::PRIZE, var[2], $data_armors[var[1]].name)]
    when :s, :skill
      $game_party.actors[@bet_index].learn_skill(var[1])
      name = $game_party.actors[@bet_index].name
      [sprintf(KBets::LEARNED, name, $data_skills[var[1]].name)]
    when :e, :exp
      range = 0...$game_party.actors.size
      range.each {|index| $game_party.actors[index].exp += var[1] }
      [sprintf(KBets::PRIZE, var[1], 'EXP')]
    end
    if $game_variables[KBets::PLAYERBETVARID].is_a?(Game_Actor)
      name = $game_variables[KBets::PLAYERBETVARID].name
      message += [sprintf(KBets::NODEATH, name)]
    end
    make_bet_result_window(message)
  end

  def defeat
    var = $game_variables[KBets::PLAYERBETVARID]
    message = case var[0]
    when RPG::Item, RPG::Weapon, RPG::Armor
      name = var[0].name
      $game_party.lose_item(var[0].id, var[1]) if RPG::Item
      $game_party.lose_weapon(var[0].id, var[1]) if RPG::Weapon
      $game_party.lose_armor(var[0].id, var[1]) if RPG::Armor
      [sprintf(KBets::HANDOVER, var[1], name)]
    when Game_Actor
      if var[1]
        $game_party.actors[var[0].id].forget_skill(var[1])
        [sprintf(KBets::FORGETSKILL, var[0].name, $data_skills[var[1]].name)]
      else
        name = var[0].name
        $game_party.remove_actor(var[0].id)
        [sprintf(KBets::DECEASED, name)]
      end
    end
    make_bet_result_window(message)
  end

  def make_bet_result_window(message)
    @bet_result_window = Window_BetResult.new(message)
    @bet_result_window.opacity = 180
    $game_variables[KBets::ENEMYBETVARID] = 0
    $game_variables[KBets::PLAYERBETVARID] = 0
  end

  def update_battle_end
    (@battle_end_wait_count -= 1; return) if @battle_end_wait_count > 0
    return unless Input.trigger?(Input::B) or Input.trigger?(Input::C)
    $game_system.se_play($data_system.decision_se)
    @bet_result_window.dispose if @bet_result_window
    @bet_result_window = nil
    battle_end(@battle_result)
  end
end
Volver arriba Ir abajo
Ver perfil de usuario http://deloquesea.mforos.com/forums/
 
KBets Versión Sistema de Batalla del XP
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.
 Temas similares
-
» como agrgo un sistema de batalla nuevo a rpg maker vx
» Guia Sistema de batalla Behemoth
» Duda sobre el sistema de batalla en el juego
» Mi tutorial: Sistema de batalla Tankentai + armas de fuego y arcos en enemigos VX
» Batalla lateral Simple para VXace. "Symphony"

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