Falcao Quest Script Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Falcao Quest Script

Ir para baixo

Falcao Quest Script Empty Falcao Quest Script

Mensagem por Ares Seg Jan 03, 2011 10:56 pm

Descripción:

Falcao quest script es un script que nos permite hacer un sistema de quest con su respectivas ventanas


Caracteristicas

- Permite crear todas las misiones que necesites
- Descripcion para cada mision
- Lista de mision
- Activar interruptor al completar mision
- Obtener recompensas como Items, weapon, armos o Dinero
- Facil de usar


Instrucciones

Solo copiar y pegar el script encima de main, No se requiere de ninguna imagen

Para agregar una mision ya creada al inventario hacerlo asi:
Tareas.mision(id) En vez de 'id' pon el ID de mision a agregar

Para completar una mision usar el siguiente comando
Tareas.completar_mision(id) En vez de 'id' pon el ID de mision a

Para llamar el script basta con pulsar tecla 'A' por defecto
Instrucciones mas detalladas estan dentro del script.

Screens:
Spoiler:
Spoiler:

Demo:
Quest Script

Script
Código:
#========================================================================#
#  #*****************#        Misiones interactivas V 1.0 Falcao script # 
#  #*** By Falcao ***#        Permite crear misiones mostrando la lista #
#  #*****************#        en una scene. Permite crear de 1 hasta    #
#        RMXP                un trillon de misiones segun el caso.    #
# makerpalace.onlinegoo.com    Date 11/16/2009                          # 
#========================================================================#

#------------------------------------------------------------------------
# * Instrucciones
#
# Solo basta con copiar y pegar el script encima de main, editar las
# misiones que necesites en el module de abajo
#
# Para llamar el script basta con pulsar tecla 'A' por defecto
# pero puede ser llamado manualmente usando el siguiente codigo
#
# $scene = Scene_Mision.new
#
# Para agregar una mision ya creada al inventario hacerlo asi:
#
# Tareas.mision(id)          En vez de 'id' pon el ID de mision a agregar
#
# Para completar una mision usar el siguiente comando
#
# Tareas.completar_mision(id)  En vez de 'id' pon el ID de mision a
# Completar. Ejemplo: Tareas.completar_mision(1) Completa id 1
#
#
# Licensia: Puede ser usado en juegos comerciales o no comerciales
#
# Creditos: By Falcao
#
#-------------------------------------------------------------------------

module Tareas
 
  # Nombre de la mision:  A = ID de mision, B = Nombre de mision
  Nombre = {
 
    1=> 'Rescatar a pulga',
    2=> 'Ver al Presidente',
    3=> 'La conquista',
    4=> 'Hierva Medicinal',
 
  }
 
 
  # Descripciones:  A = ID de mision, B = contenido soporta 3 lineas
  Descripcion = {
 
    1=> ['Ir al pueblo del rey falcao, robarle las llaves reales',
        'luego ir a rescatar a la princesa pulga barata encerrada',
        'en la masmorra oscura del castillo'],
     
    2=> ['Una de las prinsipales metas que tenes que cumplir es',
        'darle una buena patada en el culo al presidente de',
        'Enterbrain por sacar el maker mierda del vx'],
     
    3=> ['Conquistar el mundo es una de las tareas mas dificiles',
        'que solo se le ocurren a los enfermos mentales',
        'si quieres intentalo seria bueno ver el fracaso'],
       
    4=> ['La princesa Arisleyda a sido mordida por una de las',
        'serpientes mas venenosas del bosque Maker Palace',
        'se podra salvar solo con la planta hierva medicinal'],
       
  }
 
 
  # Tareas de mision:  A = ID de mision, B = contenido soporta 2 lineas
  Pasos = {
 
    1=> ['Robarle las llaves al rey Falcao',
        'Rescatar a la prinsesa pulga barata'],
     
    2=> ['Ir al pueblo donde se encuentra el presidente',
        'Darle una buena parada al presindete'],
     
    3=> ['Conquistar el mundo',
        'none'],
       
    4=> ['Conseguir 10 Hojas de hierva medicinal',
        'Darle el antidoto a la princesa Arisleyda'],         
 
       
  }
 
 
  # Recompensa en Items:  A = ID de mision, B = [Tipo de Item, ID de Item]
  Reward_Items = {
 
    1=> ['item',  2],
    2=> ['armor',  3],
    3=> ['weapon', 1],
    4=> ['weapon', 19],
 
  }
 
 
  # Recompensa en dinero:  A = ID de mision, B = Cantidad de dinero
  Reward_Gold = {
 
    1=> 5,
    2=> 10,
    3=> 20,
    4=> 10,
 
  }
 
 
  #-----------------------------------------------------------------------
  # * Funsiones extras tu decides si las usas o no
 
  # Items necesarios para completar una mision, esto es para realizar una
  # busqueda mas avanzada,
  # A = ID de mision,  B = [ID de item, Cantidad necesaria]
  Items_Needed = {
 
    4=> [11, 10],
 
  }
 
 
  # Activar interruptor al completar mision, esto puede ser opcional
  # A = ID de mision,  B = ID de interruptor
  Mision_Switch = {
 
    3=> 50,
 
  }
 
  #----------------------------------------------------------------------
  # *Configuracion del systema en general
 
  # Tocar sonido ME al completar una mision, si no se quiere sonido dejar
  # comillas en blanco ""
  Play_Mision_Me = "015-Mystery01"
 
  # Tiempo en segundos para mostrar la ventana cuando una mision se a
  # completado
  Pop_Mision_Time = 3
 
  # Boton para llamar el script tecla 'A' del teclado
  Call_Mision = Input::X
 
  # Impedir llamar el script por medio de la tecla especificada
  # Por defecto esto va desactivado  false
  Disable_Mision_Call = false
 
 #-----------------------------------------------------------------------
 # System
 
 $falcao_mision = []
 $falcao_completed = []
 $mision_data = [id = nil, item = nil, gold = nil, pop_time = 0, show = false]
 
 def self.mision(id)
  unless $falcao_mision.include?(id)
    $falcao_mision.push(id)
  end
 end
 
 def self.completar_mision(mision_id)
  return unless $falcao_mision.include?(mision_id)
  unless $falcao_completed.include?(mision_id)
    $mision_data[0] = mision_id
    Reward_Items.each do |id, value|
      if id == mision_id
        case value[0]
        when 'item'
          item = $data_items[value[1]]
          $game_party.gain_item(item.id, 1)
          $mision_data[1] = item
        when 'weapon'
          weapon = $data_weapons[value[1]]
          $game_party.gain_weapon(weapon.id, 1)
          $mision_data[1] = weapon
        when 'armor'
          armor = $data_armors[value[1]]
          $game_party.gain_armor(armor.id, 1)
          $mision_data[1] = armor
        end
      end
      $falcao_completed.push(mision_id)
    end
    #gold
    Reward_Gold.each do |id, value|
      if id == mision_id
        $game_party.gain_gold(value)
        $mision_data[2] = value
      end
    end
    # Switch
    Mision_Switch.each do |id, value|
      if id == mision_id
        $game_switches[value] = true
        $game_map.need_refresh = true
      end
    end
    Items_Needed.each do |id, value|
      if id == mision_id
        if $game_party.item_number(value[0]) < value[1]
          $game_party.gain_item(value[0], value[1])
        end
      end
    end
    $mision_data[4] = true
    $mision_data[3] = 40 * Pop_Mision_Time
    Audio.me_play("Audio/Me/" + Play_Mision_Me)
  end
 end
end

class Font
  alias falcaoBest_font initialize
  def initialize
    falcaoBest_font
    if $scene.is_a?(Scene_Mision) or $mision_data[4]
      self.name = "Georgia"
      self.size = 20
    end
  end
end

class Misiones < Window_Base
  include Tareas
  def initialize
    super(180, 64, 460, 416)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 255
  end
 
  def refresh(mision_id)
    self.contents.clear
    @mision_id = mision_id
    draw_grid(0,336)
    draw_grid(225,336)
    if $falcao_mision.include?(mision_id)
      draw_mision_contents
    else
      self.contents.draw_text(-20, 100, self.width, 50, "No hay datos",1)
    end
  end
 
  def draw_mision_contents
    Nombre.each do |id, value|
      if id == @mision_id
        self.contents.font.color = Color.new(255, 120, 0, 255)
        self.contents.draw_text(-20, 0, self.width, 50 , value,1)
      end
    end
    Descripcion.each do |id, value|
      if id == @mision_id
        self.contents.font.color = system_color
        self.contents.draw_text(0, 40, self.width, 50 , "Descripcion:")
        self.contents.font.color = normal_color
        self.contents.draw_text(0, 70, self.width, 50 , value[0])
        self.contents.draw_text(0, 94, self.width, 50 , value[1])
        self.contents.draw_text(0, 119, self.width, 50 , value[2])
      end
    end
    Pasos.each do |id, value|
      if id == @mision_id
        self.contents.font.color = system_color
        self.contents.draw_text(0, 165, self.width, 50 , "Tareas:")
        self.contents.font.color = normal_color
        self.contents.draw_text(0, 197, self.width, 50 ,'1-  ' + value[0])
        self.contents.draw_text(0, 222, self.width, 50 ,'2-  ' + value[1])
      end
    end
    Reward_Items.each do |id, value|
      if id == @mision_id
        case value[0]
        when 'item'
          item = $data_items[value[1]]
        when 'weapon'
          item = $data_weapons[value[1]]
        when 'armor'
          item = $data_armors[value[1]]
        end
        self.contents.font.color = system_color
        self.contents.draw_text(0, 270, self.width, 50 , "Recompensa:")
        self.contents.font.color = normal_color
        icon = RPG::Cache.icon(item.icon_name) rescue nil
        self.contents.blt(20, 344, icon, Rect.new(0, 0, 24, 24),255) rescue nil
        self.contents.draw_text(50, 335, self.width, 50 , item.name)
      end
    end
    Reward_Gold.each do |id, value|
      if id == @mision_id
        icon = RPG::Cache.icon("032-Item01") rescue nil
        self.contents.blt(240, 344,icon,Rect.new(0, 0, 24, 24), 255) rescue nil
        self.contents.draw_text(275, 335, self.width, 50,
        "#{value.to_s}  #{$data_system.words.gold}")
      end
    end
  end
 
  def draw_grid(x,y)
    width = 200
    color = system_color
    self.contents.fill_rect(x+2, y-2, width-4, 1, color)
    self.contents.fill_rect(x+1, y-1, width-2, 1, color)
    self.contents.fill_rect(x, y, width, 1, color)
    self.contents.fill_rect(x, y+1, 3, 45, color)
    self.contents.fill_rect(x+ 197, y+1, 3, 45, color)
    self.contents.fill_rect(x, y+45, width, 1, color)
    self.contents.fill_rect(x+1, y+46, width-2, 1, color)
    self.contents.fill_rect(x+2, y+47, width-4, 1, color)
  end
end

class Mision_Indice < Window_Selectable
  def initialize(x=0,y=0)
    super(x, y, 180, 390)
    @column_max = 1
    refresh
    self.index = 0
  end

  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in Tareas::Nombre.values
      @data.push(i)
    end
    @item_max = @data.size
    $all_quests = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
 
  def draw_item(index)
    nombre = @data[index]
    self.contents.font.color = normal_color
    x, y = 4, index * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    if $falcao_mision.include?(index + 1)
      self.contents.draw_text(x, y, 212, 32, nombre)
    else
      self.contents.font.color = disabled_color
      self.contents.draw_text(x, y, 212, 32, "Bloqueado")
    end
  end
end

class Mision_Help < Window_Base
  def initialize(x=0,y=0,ancho=640, alto=64)
    super(x, y, ancho, alto)
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  def set_progress
    self.contents.clear
    self.contents.draw_text(0, 0, self.width, 32 , "Misiones")
    mision = $falcao_mision.size
    texto = "#{"Progreso"}    #{mision * 100/$all_quests}%"
    self.contents.draw_text(0, 30, self.width, 32 , texto)
  end
 
  def set_status(mision_id)
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(0, 0, self.width, 32 , "Mision Status:")
    if $falcao_mision.include?(mision_id)
      draw_needed_items(mision_id)
      if $falcao_completed.include?(mision_id)
        self.contents.font.color = Color.new(128, 255, 128, 255)
        self.contents.draw_text(120, 0, self.width, 32 , "Completada!")
      else
        self.contents.font.color = normal_color
        self.contents.draw_text(120, 0, self.width, 32 , "En proceso")
      end
    else
      self.contents.font.color = disabled_color
      self.contents.draw_text(120, 0, self.width, 32 , "Bloqueada")
    end
  end
 
  def draw_needed_items(mision_id)
    Tareas::Items_Needed.each do |id, value|
      if id == mision_id
        draw_grid(280,1)
        item = $data_items[value[0]]
        icon = RPG::Cache.icon(item.icon_name) rescue nil
        self.contents.blt(290, 3, icon, Rect.new(0, 0, 24, 24), 255) rescue nil
        c = $game_party.item_number(item.id); n = value[1]; w = self.width
        self.contents.draw_text(340, 0, w, 32,"#{c.to_s}  /  #{n.to_s}")
      end
    end
  end
 
  def draw_grid(x,y)
    width = 150
    color = system_color
    self.contents.fill_rect(x+2, y-2, width-4, 1, color)
    self.contents.fill_rect(x+1, y-1, width-2, 1, color)
    self.contents.fill_rect(x, y, width, 1, color)
    self.contents.fill_rect(x, y+1, 3, 30, color)
    self.contents.fill_rect(x+ 147, y+1, 3, 30, color)
    self.contents.fill_rect(x, y+30, width, 1, color)
    self.contents.fill_rect(x+1, y+31, width-2, 1, color)
    self.contents.fill_rect(x+2, y+32, width-4, 1, color)
  end
end

class Pop_Mision < Window_Base
  def initialize
    super(170, 0, 300, 190)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Georgia"
    self.contents.font.size = 20
    self.opacity = 200
    refresh
  end
 
  def refresh
    self.contents.clear
    data = $mision_data
    return unless data[4]
    self.contents.font.color = normal_color
    if data[3] > 0; data[3] -= 1
    Tareas::Nombre.each do |id, value|
      if id == data[0]
        self.contents.draw_text(-20, 0,self.width,32, "#{value} Completada!",1)
      end
    end
    self.contents.font.color = system_color
    self.contents.draw_text(0, 45, self.width, 32 , "Recompensas:")
    #Items
    self.contents.font.color = normal_color
    if data[1] != nil
      icon = RPG::Cache.icon(data[1].icon_name) rescue nil
      self.contents.blt(0, 85, icon, Rect.new(0, 0, 24, 24), 255) rescue nil
      self.contents.draw_text(35, 85, self.width, 32 , data[1].name)
    end
    #Gold
    if data[2] != nil
      icon = RPG::Cache.icon("032-Item01") rescue nil
      if data[1] == nil
        x = 35; y = 85
      else
        x = 40; y = 121
      end
      self.contents.blt(0, y, icon, Rect.new(0, 0, 24, 24), 255) rescue nil
      self.contents.draw_text(x, y, self.width, 32,
      "#{data[2].to_s}  #{$data_system.words.gold}")
    end
    $mision_data = [nil, nil, nil, 0, false] if data[3] == 1
  end
  end
end 
 
class Scene_Mision
  def main
    @indice_mision = Mision_Indice.new(0,90)
    @misiones = Misiones.new
    @misiones.refresh(@indice_mision.index + 1)
    @title =  Mision_Help.new(180,0,462)
    @title.set_status(@indice_mision.index + 1)
    @progress = Mision_Help.new(0,0,180,90)
    @progress.set_progress
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @indice_mision.dispose
    @misiones.dispose
    @title.dispose
    @progress.dispose
  end
  def update
    @indice_mision.update
    @mision = @indice_mision.index + 1
    update_parametros
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
  end
  def update_parametros
    @misiones.refresh(@mision)
    @title.set_status(@mision)
  end
end 
 
class Scene_Map
  include Tareas
  alias falcao_mision_main main
  def main
    @mision_pop = Pop_Mision.new
    $mision_data[4] ? @mision_pop.visible = true : @mision_pop.visible = false
    falcao_mision_main
    @mision_pop.dispose
  end
  alias falcao_mision_update update
  def update
    falcao_mision_update
    if $mision_data[4]
      @mision_pop.refresh
      @mision_pop.visible = true
    else
      @mision_pop.visible = false
    end
    if Input.trigger?(Call_Mision) and !Disable_Mision_Call
      $scene = Scene_Mision.new
      return
    end
  end
end

class Scene_Save 
  alias falcao_write_mision write_save_data
  def write_save_data(file)
    falcao_write_mision(file)
    Marshal.dump($falcao_mision, file)
    Marshal.dump($falcao_completed, file)
    Marshal.dump($mision_data, file)
  end
end

class Scene_Load
  alias falcao_read_mision read_save_data
  def read_save_data(file)
    falcao_read_mision(file)
    $falcao_mision    = Marshal.load(file)
    $falcao_completed  = Marshal.load(file)
    $mision_data      = Marshal.load(file)
  end
end




Creditos

By Falcao


si lo quieren usar junto con netplay tienen que hace lo siguiente:

- 1) Busca en los scripts de netplay este: [ACT] Auto Save
- 2) En ese script justo antes de file.close (abajo del todo) pega esto:
Marshal.dump($falcao_mision, file)
Marshal.dump($falcao_completed, file)
Marshal.dump($mision_data, file)
- 3) Busca en los scripts de netplay este: [WIN] Load_Character
- 4) En ese script, justo antes de file.close (sobre la línea 24 más o menos) pega esto:
$falcao_mision = Marshal.load(file)
$falcao_completed = Marshal.load(file)
$mision_data = Marshal.load(file)
Ares
Ares
Novato
Novato

Mensagens : 8
Créditos : 3

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos