Maker Palace
Si quiere un completo acceso al contenido del foro. Registrate

Maker Palace

¡El Reino del RpgMaker y del Ocio!
 
ÍndiceBuscarGrupos de UsuariosScriptsRecursosTutorialesJuegos creados por los PalacersPalaceWikiFAQRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Temas similares
  • » Los script en OGAME
  • » Script ABS Hero , RPG Maker VX Ace
  • » Como pedirme misiones
  • » Misiones del caballo del foro de metin
  • » Ayuda es importante!!!
  • » ayuda con el cliente
  • » Necesito su ayuda
  • » Ayuda para el rol
  • » [AYUDA EN EL FORO] AÑADIR UN AVATAR
  • » Dinámica de grupo en ikea! Ayuda!
  • Buscar
     
     

    Resultados por:
     
    Rechercher Búsqueda avanzada
    Últimos temas
    » [SPAM] Mi blog Renovado
    por MaximiliaNMetaL Hoy a las 10:20 pm

    » Zekirom : La Leyenda !Descargalo completo ya¡(RMXP)
    por SagahonArturo Hoy a las 6:49 pm

    » Secret of Namira 4 [Survival horror] COMPLETO
    por Agustintin2 Hoy a las 9:13 am

    » nueva beta de dross el rompe muelas
    por acoatlrpg Hoy a las 7:12 am

    » fire emblem mode
    por Shooter Hoy a las 5:19 am

    » Nvidea Shield
    por Shooter Ayer a las 6:47 am

    » Xbox Wire - Nuevo servicio de Microsoft
    por Shooter Vie Mayo 17, 2013 9:19 am

    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
    Neoland
    Indice de Scripts Locales XP
    Falcao Pearl ABS Liquid
    ¿Quién está en línea?
    En total hay 15 usuarios en línea: 1 Registrado, 0 Ocultos y 14 Invitados :: 1 Motor de búsqueda

    Dorvin

    La mayor cantidad de usuarios en línea fue 179 el Mar Ago 30, 2011 1:06 pm.
    MiniChat
    Mejores posteadores
    Shooter (2932)
     
    DaviX (2724)
     
    Frikilangelo (2429)
     
    Falcao (1768)
     
    kyonides-arkanthos (1443)
     
    SagahonArturo (1439)
     
    555goku5551 (1434)
     
    Webmaster24 (1353)
     
    Ares (1336)
     
    xDarkLinkx (1309)
     
    Afiliados
    Crear foro Mundo Maker Foro de anime y RM2k3/XP/VX Computer mix
    Flag Counter
    free counters
    Visitas

    Compartir | .
     

     Ayuda script de misiones

    Ver el tema anterior Ver el tema siguiente Ir abajo 
    AutorMensaje
    grimmjow
    Amateaur
    Amateaur


    Cantidad de envíos: 13
    Miembro desde: 15/07/2012

    MensajeTema: Ayuda script de misiones   Dom Jul 15, 2012 12:52 am

    Hola, he incluido el script de misiones de Falcao en mi RPG, corregido por Kyonides-Arkanthos para rectificar el bug de las misiones desordenadas.

    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 = []
        # Correccion de Kyonides-Arkanthos para que muestre el orden de las
        # misiones de forma correcta, no desordenada como sucedia anteriormente
        Tareas::Nombre.sort.each { |k, v| @data[k-1] = v }
        @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
        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


    Los que uséis este script, sabéis que cuando finalizas la misión te salta un mensaje informándote de las recompensas que has obtenido por completar el quest. Mi pregunta es: ¿hay alguna forma de eliminar esa ventana? No quiero que salga ningún mensaje cuando finalizo las misiones.

    Muchas gracias de antemano :) Y gracias a Falcao y Arkanthos por el script.
    Volver arriba Ir abajo
    Ver perfil de usuario
    Falcao
    Admin
    Admin


    Cantidad de envíos: 1768
    Miembro desde: 07/07/2009
    Edad: 22
    Localización: MP Garden
    Sexo: Masculino

    Maker: RMXP

    Logros MP:



    MensajeTema: Re: Ayuda script de misiones   Dom Jul 15, 2012 2:22 am

    Aqui lo tienes

    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 = []
        # Correccion de Kyonides-Arkanthos para que muestre el orden de las
        # misiones de forma correcta, no desordenada como sucedia anteriormente
        Tareas::Nombre.sort.each { |k, v| @data[k-1] = v }
        @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
        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

    _________________
    Querés hecharte unas risas?

    Juega al Pirulo Adventures II sin RTP!
    Volver arriba Ir abajo
    Ver perfil de usuario http://www.makerpalace.com
    grimmjow
    Amateaur
    Amateaur


    Cantidad de envíos: 13
    Miembro desde: 15/07/2012

    MensajeTema: Re: Ayuda script de misiones   Dom Jul 15, 2012 8:29 am

    Problema resuelto. Gracias Falcao.

    Me ha surgido otra duda ahora que lo pienso. He visto que en la parte superior derecha del menú de misiones puedes añadir los items necesarios para completar la misión, por ejemplo: "manzanas; 2/10". Mi pregunta es, se pueden agregar más items? Creo que el código es este:

    Código:
      # 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 = {
     
      1=> [32, 10],
      2=> [30, 1],


    Ahí se ve que para completar la misión 1, son necesarias 10 unidades del item número 32. ¿Cómo sería el código para una misión donde se necesita más de un item? Es decir, que se necesite el item 32 y el 33, por ejemplo.

    Gracias otra vez, un saludo!
    Volver arriba Ir abajo
    Ver perfil de usuario
    Falcao
    Admin
    Admin


    Cantidad de envíos: 1768
    Miembro desde: 07/07/2009
    Edad: 22
    Localización: MP Garden
    Sexo: Masculino

    Maker: RMXP

    Logros MP:



    MensajeTema: Re: Ayuda script de misiones   Dom Jul 15, 2012 10:47 am

    De monento eso no es posible el script te limita solo a uno, aunque es buena idea para futuras versiones

    _________________
    Querés hecharte unas risas?

    Juega al Pirulo Adventures II sin RTP!
    Volver arriba Ir abajo
    Ver perfil de usuario http://www.makerpalace.com
    grimmjow
    Amateaur
    Amateaur


    Cantidad de envíos: 13
    Miembro desde: 15/07/2012

    MensajeTema: Re: Ayuda script de misiones   Dom Jul 15, 2012 12:27 pm

    Gracias. Esperad la demo de mi RPG en breves! :)
    Volver arriba Ir abajo
    Ver perfil de usuario
     

    Ayuda script de misiones

    Ver el tema anterior Ver el tema siguiente Volver arriba 
    Página 1 de 1.

     Temas similares

    -
    » Nesecitas ayuda en HT ARENA... Max Designers te ayuda....
    » peticiones de script de elfbot
    » Misiones de Midori
    » Técnicas y misiones de Dango.
    » Groland reportandoce para las misiones imposibles

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