Aldeia RPG

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

Suporte ao desenvolvimento de jogos


    Falcao Quest Script

    Ares
    Ares
    Novato
    Novato


    Mensagens : 8
    Créditos : 3

    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)

      Data/hora atual: Sex Nov 22, 2024 3:54 pm