¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3396 miembros registrados.
El último usuario registrado es Discorded.

Nuestros miembros han publicado un total de 79807 mensajes en 11256 argumentos.
Navega con Google Chrome
[DESCARGA]

Sistema de misiones (revuelve los nobres de la mision)

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Miky Joe el 2014-06-05, 05:53

Hola!!,alguien utilizó el sistema de misiones de falcao?

la bronca es la siguiente:

Las primeras 4 líneas de como se llama la misión descripción pasos,recompensa y dinero,
estan perfectamente acomodadas en el menú de misiones por defecto del script,cada cual con su nombre y todo lo demas....pero al poner la mision numero 5,la mision 1 sale con el nombre de la 5,la 2 de la 4,y asi,imaginense 18 misiones con el nombre revuelto,no soy yo el que acomoda mal,porque volvi a poner el script asi original con sus 4 misiones de ejemplo,agregue una que fue la 5 con su descripcion sus pasos y recompensas,y lo mismo,la 1 salio con el nombre de la 5,

Alguien le paso algo similar?

Miky Joe
Veterano
Veterano

0/3

Créditos 525

Gracias : 58

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por BlazeCrimson el 2014-06-05, 10:25

Buenas Miky Joe. Es muy curiosos que justamente hables de este scipt.

Llevo utilizándolo desde que empecé Descendencia Carmesí y está tan integrado en el juego que no puedo reemplazarlo por otro. He modificado la fuente y alguna cosilla más para mejorarlo, pero el error que comentas no ha habido manera. El script es funcional 100 pero en la lista el nombre de la misión se desordena tras crear la quinta misión:



El caso es que tenía pensando abrir un post ofreciendo 300 créditos para quien me lo solucionara, pues aunque no da error, queda muy feo este fallo. Si encontramos a alguien que pueda ayudarnos en este post sería genial, en caso contrario crearé el post que acabo de nombrar en unas semanas.

Hace tiempo encontré una solución de este script en una pagina, el problema era que tenías que cambiar el llamar script y eso es muy poco viable en mi caso dado que hay 50 misiones hechas y desperdigadas por todo el juego.

La cuestión sería arreglar el bug sin tener que cambiar los llamar script:
Tareas.mision(id)
Tareas.completar_mision(id)

Aquí el script:
Spoiler:
Código:
#========================================================================#
#  #*****************#        Misiones interactivas V 1.0 RPGXP  script # 
# #*Sistema de Misiones*#      Permite crear misiones mostrando la lista #
#  #*****************#        en una scene. Permite crear de 1 hasta    #
#  Falcao                    un trillon de misiones.                  #
#                                                                        # 
#========================================================================#

#------------------------------------------------------------------------
# * 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
#
#
#
#
#
#
#-------------------------------------------------------------------------

module Tareas
 
  # Nombre de la mision:  A = ID de mision, B = Nombre de mision
  Nombre = {
 
    1=> 'Las ruinas de Brahdna',
    2=> 'Esencia IV',
    3=> 'Desertor',
    4=> 'El último desafío',
    5=> 'Teletransportes',
    6=> 'La grieta',
    7=> 'Problemas en la montaña',
    8=> 'La tormenta eterna',
    9=> 'La moneda de Ursays',
    10=> 'Miembro de oro',
    11=> 'Esencia III',
    12=> 'La alquimia',
    13=> 'Reunión pospuesta',
    14=> 'El Cristalis',
    15=> 'Paquete urgente',
    16=> 'La plaga',
    17=> 'Gelatina mortal',
    18=> 'El fuerte en apuros',
    19=> 'Investigación en la jungla',
    20=> 'Esencia II',
    21=> 'Anomalia en desierto',
    22=> 'Las desapariciones de Onpah',
    23=> 'Problemas en familia real',
    24=> 'El plan de los tres reinos',
    25=> 'Remedios sanadores',
    26=> 'Provisiones para la guerra',
    27=> 'El sabio alquimista',
    28=> 'La prueva del alquimista',
    29=> 'Echar una mano',
    30=> 'Los monstruos en la mina',
    31=> 'Recursos para la guerra',
    32=> 'La mina escondida',
    33=> 'El trato de los ramaderos',
    34=> 'Una visita inesperada',
    35=> 'Las ovejas perdidas',
    36=> 'El poder de la superioridad numérica',
    37=> 'Un sabio consejo',
    38=> 'Radicalistas en Handora',
    39=> 'Evitar el golpe',
    40=> 'El coliseo de Piuka',
    41=> 'El demonio extraviado',
    42=> 'Los oportunistas',
    43=> 'Los lobos Garnius',
    44=> 'Ruffus el corsario',
    45=> 'La cueva egina',
    46=> 'La más poderosa',
    47=> 'El legado de Griffith Crimson',
  }
 
 
  # Descripciones:  A = ID de mision, B = contenido soporta 3 lineas
  Descripcion = {
 
    1=> ['Los científicos enviados a las Ruinas Brahdna',
        'parecen haber sufrido algún accidente.',
        'Me encuentro a las afueras de Kalay.'],
     
    2=> ['Has obtenido la esencia Olvert IV',
        'pero no logras sintetizarla.',
        'Busca a alguen que pueda ayudarte.'],
       
    3=> ['Un ninja desertor está causando el caos',
        'en FangRyu.',
        'Esta situación debe acabar.'],
       
    4=> ['Utiliza la tablilla demoníaca en',
        'la sala Thinry y prepárate para',
        'el último y más duro desafío '],
       
    5=> ['Has obtenido el cristal abisal por Kuruta',
        'Utilízalo en el telep. de la posada de Fang',
        'El teleportador tiene forma de espejo.'],
             
    6=> ['Ha sido encontrada una cueva misteriosa',
        'Está en los pies de las montañas Rikuroa',
        'llegarás allí por las tierras Bosbon.'],
       
    7=> ['Un grupo de pirómanos están actuando',
        'Estarán por la montaña Rikuroa',
        'Debes acabar con esta situación.'],
       
    8=> ['Una tormenta incesante azota Rendbi',
        'Dirígete allí desde las montañas Rikuroa',
        'Infíltrate y investiga el suceso.'],
       
    9=> ['Has encontrado un fragmento de la',
        'codiciada moneda de Ursays.',
        'Seguro que alguien en Kalay la desearía.'],
       
    10=> ['Reúne los dos fragmentos de la moneda ',
        'de Ursays y únelos.',
        'Después llévala a "acero templado" en Kalay.'],
       
    11=> ['Has obtenido la esencia Olvert III',
        'No puedes sintetizártela tu solo.',
        'Llévala al sabio Rabbadán III, en el Cuartel.'],
       
    12=> ['Dirígete a la CDDA en la plaza central',
        'Busca a Vaan para que te enseñe a utilizar .',
        'la alquimia.'],
       
    13=> ['El capitán de brigada Tauk debe ser ',
        'informado que la reunión a la que debía',
        'asistir ha sido aplazada.'],
       
    14=> ['En las rutas de Bosbon se ha encontrado ',
        'Cristalis. Necesitamos que recojas un par ',
        'de montones.'],

    15=> ['LLeva el paquete rápidamente a Dionísio ',
        'en Nilib. Si lo entregas muy rápido serás',
        'recompensado doblemente.'],
       
    16=> ['Nilib está siendo atacada por una plaga',
        'terrible, venid de inmediato a exterminarla',
        'Me encuentro al lado de la tienda de objetos.'],
       
    17=> ['Un terrible limo está causando estragos',
        'en la ruta Brugnor, parece ser que devora ',
        'a los viajeros; hay que acabar con él.'],
       
    18=> ['Dirígete al fuerte Stonegate con Bralor',
        'y encuentra a Krauser, él os dará las nuevas ',
        'órdenes.'],
       
    19=> ['Entra en la ancestral jungla de Nathariel',
        'y continúa la ivestigación acerca de la sala ',
        'Thinry.'],

    20=> ['Has obtenido la esencia Olvert II',
        'No puedes sintetizártela tu solo.',
        'Llévala al sabio Rabbadán III, en el Cuartel.'],
       
    21=> ['Dirigete a Onpah, en el desierto de Barnd',
        'atravesando las tierras de Lernia por el sur',
        'y busca a Ashur para obtener información'],
       
    22=> ['Atraviesa el desierto de Barnd y encuentra',
        'la causa de las desapariciones, rescata a',
        'cuantos desaparecidos queden con vida'],
       
    23=> ['La reina Flora y la princesa Kathia de Kalay',
        'han sido secuestradas por Handora, descubre',
        'su paradero y rescatalas sanas y salvas'],
       
    24=> ['Dirigete al bosque de nefly y busca el cristal',
        'maestro en las ruinas de Barand thur. Úsalo',
        'para derrotar al gran rey demonio.'],
     
    25=> ['La CDDA necesita 12 remedios sanadores,',
        'créaselos y llévaselos a Vaan que se ',
        'encuentra en Kalay'],
 
    26=> ['La CDDA necesita que lleves sus provisiones',
        'a las tiendas aliadas de: Kalay, Handora',
        'Lernia y Onpah, que necesitarán para la batalla'],
       
    27=> ['Encuentra la guarida del Sabio alquimista',
        'Demitas, en las profundidades de Valus para',
        'que os ayude'],
 
    28=> ['Demitas quiere que le mostréís: Omnielixir',
        'Roca protectora, Pepita de oro, Esencia:Esna' ,
        'Velo, Cristalis perfecto y cristal de poder'],
 
    29=> ['La mina de Onpah ha solicitado ayuda',
        'dirígete allí y échales una mano ',
        ' '],
 
    30=> ['La mina de Lernia descubrió una nueva',
        'galería rica en recursos, pero que está',
        'ocupada por monstruos. Acaba con ellos'],
       
    31=> ['La mina de Lernia sigue necesitando ayuda',
        'dirígete alli una vez y prestales vuestra',
        'ayuda en todo lo que necesiten'],
 
    32=> ['En Nathariel se ha encontrado una posible',
        'explotación, encuéntrala y explórala',
        'para determinar si es conveniente'],
       
    33=> ['Los pastores Kolo de Rendbi y Mario',
        'de Piuka quieren sellar un trato con ',
        'Dionisio. Habla con ellos y ayúdales'],
 
    34=> ['Visita al equipo de desarrollo de',
        'Proyecto Blaze. Se encuentran en algún',
        'lugar de Handora'],
 
    35=> ['Dionisio ha perdido cinco ovejas',
        'en algún lugar de Nilib.',
        'Encuéntralas '],

    36=> ['Dionisio está fuera de control',
        'debes detenerle y arrasterlo',
        'Ahora mismo se encuentra en Nilib'],
       
    37=> ['El mastro Kuruta os ha citado.',
        'Marchad a Fang Ryu a esuchar lo que',
        'tenga que decir'],
 
    38=> ['Unos espías de un grupo radicalista',
        'se han esparcido por Handora, ',
        'encuéntralos'],
       
    39=> ['Los radicales de Handora han tomado',
        'la torre de Sifith. ',
        'Debes encargarte del asunto'],
 
    40=> ['Se ha abierto de nuevo el coliseo de Piuka, ',
        'participa en dificultad normal con cualquier ',
        'miembro del grupo y gana.'],
       
    41=> ['Un demonio está atacando a los',
        'voluntarios en las extensiones de Zakol',
        'Encuentrálo y acaba con él'],
 
    42=> ['Un grupo de bandidos aprovechando',
        'la situación ha atacado Traus.',
        'Ayuda a los soldados a expulsarlos'],
       
    43=> ['Encuentra la manada de lobos Garnius',
        'en algún lugar de las tierras de ',
        'Lernia y acaba con ellos'],
 
    44=> ['El gran corsario Ruffus continúa',
        'asediando las costas de Traus.',
        'ataca su navío y acaba con él.'],
       
    45=> ['Se ha descubierto un posible Pasadizo',
        'en una cueva de Nathariel que ',
        'conduce  a ruinas Eginas. Investígalas'],
 
    46=> ['Laindry Kuitsne conocida como',
        'la mejor guerrera hasta la fecha',
        'Quiere retaros a un combate'],
 
    47=> ['Encuentra la Tumba de Griffith ',
        'y después ábrela utilizando las',
        'las cuatro llaves de Griffith.'],
  }
 
 
  # Tareas de mision:  A = ID de mision, B = contenido soporta 2 lineas
  Pasos = {
 
    1=> ['Habla con Zadok en las afueras de Kalay',
        'Encuentra a los científicos desaparecidos'],
     
    2=> ['Encuentra al sabio en el cuartel',
        'Logra sintetizar la E.Olvert IV'],
     
    3=> ['Hablar con Kuruta en FangRyu',
        'Atrapar al desertor vivo o muerto'],
       
    4=> ['Utiliza la tablilla demoníaca',
        'Supera el último reto'], 
       
    5=> ['Busca el telep. de la posada, en Fang',
        'Utilízalo para regresar a Kalay'],
       
    6=> ['Busca la entrada a la grieta en Bosbon',
        'Averigua que si existe esencia allí'],
       
    7=> ['Encuentra a los pirómanos',
        'Mátalos'],
     
    8=> ['Infíltrate en Rendbi',
        'Averigua, y si puedes detén la tormenta'],
       
    9=> ['Busca en kalay algún interesado en ella.',
        'Posiblemente algún comerciante la codicie'],
       
    10=> ['Obtén el fragmento restante de Zanghar.',
          'Une ambos fragmentos con alquimia.'],
         
    11=> ['Llévale al sabio la esencia Olvert III.',
          'Sintetízala.'],
         
    12=> ['Dirígete a la CDDA.',
          'Aprende a usar la alquimia.'],
         
    13=> ['Busca e informa a Tauk.',
          'Su mujer se encuentra en el hospital.'],
         
    14=> ['Recoje un par de Cristalis.',
          'Llévalos a Teresa, en Kalay.'],
         
    15=> ['Lleva el paquete a Dionísio.',
          'Si lo haces rápido serás recompensado.'],
         
    16=> ['Reúnete con Balder en Nilib.',
          'Aniquila la plaga.'],
         
    17=> ['Dirígete a las rutas Brugnor.',
          'Mata al limo caníbal.'],
         
    18=> ['Dirígete al fuerte Stonegate.',
          'Habla con Krauser.'],
         
    19=> ['Dirígete al la Jungla de Nathariel.',
          'Encuentra la sala Thinry.'],
         
    20=> ['Llévale al sabio la esencia Olvert II.',
          'Sintetízala.'],
         
    21=> ['Cruza el desierto y encuentra Onpah',
          'Habla con Ashur'],
         
    22=> ['Reunete con Ashur en la puerta sur',
          'Rescata a los desaparecidos'],
         
    23=> ['Obtén información sobre Flora y Kathia',
          'Rescatalas sin ponerlas en peligro'],
         
    24=> ['Obtén el espejo maestro en Barand thur',
          'Derrota al Gran rey demonio'],
         
    25=> ['Reúne 12 remedios sanadores',
          'Llévaselos a Vaan'],
         
    26=> ['Recoje las provisiones en la CDDA',
          'Entrégalas a sus respectivos destinos'],
         
    27=> ['Dirígete a Valus',
          'Encuentra al Sabio Demita'],
         
    28=> ['Crea los objetos necesarios',
          'Muéstraselos a Demitas'],
         
    29=> ['Ves a la mina de Onpah',
          'Ayuda en los mineros'],
   
    30=> ['Ves a la mina de Lernia ',
          'Despeja la galería'],
         
    31=> ['Ves a la mina de Lernia',
          'Ayuda en los mineros'],
         
    32=> ['Encuentra la explotación en Nathariel',
          'Explórala'],
         
    33=> ['Habla con Kolo y Mario',
          'Después habla con Dionisio'],
         
    34=> ['Dirígete a Handora',
          'Encuentra al equipo de Proyecto Blaze'],
 
    35=> ['Ves a Nilib',
          'Encuentra a las cinco ovejas'],
         
    36=> ['Dirígete a Nilib',
          'Detén a Dionisio'],
         
    37=> ['Dirígete a Fang Ryu',
          'Obedece la orden de Kuruta'],
         
    38=> ['Dirígete a Handora',
          'Encuentra a los seis espias'],
         
    39=> ['Dirígete a Handora',
          'Acaba con el grupo radical'],
   
    40=> ['Dirígete a Piuka',
          'Vence en el coliseo'],
         
    41=> ['Encuentra al demonio escondido',
          'Derrótalo'],
         
    42=> ['Dirígete a Traus',
          'Derrota a los piratas'],
         
    43=> ['Dirígete a las tierras de Lernia',
          'Derróta a las tres manadas Garnius'],
         
    44=> ['Dirígete a Traus',
          'Derrota al gran corsario Ruffus'],
         
    45=> ['Dirígete a Nathariel',
          'Encuentra las nuevas ruinas Eginas'],
         
    46=> ['Dirígete al distrito noreste de Kalay',
          'Derrota a Laindry Kuitsne'],
         
    47=> ['Reúne las cuatro llaves de Griffith',
          'Encuentra la cripta de Giffith'],
  }
 
  # Recompensa en Items:  A = ID de mision, B = [Tipo de Item, ID de Item]
  Reward_Items = {
 
    1=> ['item',  116],
    2=> ['item',  18],
    3=> ['item', 25],
    4=> ['item', 213],
    5=> ['item', 47],   
    6=> ['item',  78],
    7=> ['item', 69],
    8=> ['item', 24],
    9=> ['item', 6],   
    10=> ['item',  152],
    11=> ['item', 18],
    12=> ['item', 155],
    13=> ['item', 172],   
    14=> ['item',  157],
    15=> ['item', 158],
    16=> ['item', 9],
    17=> ['armor', 52],
    18=> ['item', 24],
    19=> ['item', 124],
    20=> ['item', 197],
    21=> ['item', 24],
    22=> ['armor', 56],
    23=> ['armor', 44],
    24=> ['item', 108],
    25=> ['item', 173],
    26=> ['item',  176],
    27=> ['item', 177],
    28=> ['item', 179],
    29=> ['armor', 42],   
    30=> ['armor', 62],
    31=> ['armor', 54],
    32=> ['item', 102],
    33=> ['armor', 43],   
    34=> ['armor', 41],
    35=> ['armor', 57],
    36=> ['item', 107],
    37=> ['armor', 42],   
    38=> ['armor', 40],
    39=> ['armor', 58],
    40=> ['item', 111],
    41=> ['armor', 40],
    42=> ['armor', 41],
    43=> ['armor', 60],
    44=> ['item', 105],
    45=> ['armor', 61],
    46=> ['item', 97],
    47=> ['armor', 63],
  }
 
 
  # Recompensa en dinero:  A = ID de mision, B = Cantidad de dinero
  Reward_Gold = {
 
    1=> 1200,
    2=> 550,
    3=> 150,
    4=> 99999,
    5=> 150,
    6=> 1300,
    7=> 500,
    8=> 2000,
    9=> 300, 
    10=> 500,
    11=> 550,
    12=> 300,
    13=> 2000,
    14=> 600,
    15=> 300,
    16=> 500,
    17=> 700,
    18=> 2300,
    19=> 1000,
    20=> 500,
    21=> 1500,
    22=> 3000,
    23=> 5000,
    24=> 9999,
    25=> 1000,
    26=> 1000,
    27=> 1500,
    28=> 2000,
    29=> 1000,
    30=> 1000,
    31=> 1500,
    32=> 2000,
    33=> 1000, 
    34=> 1000,
    35=> 1500,
    36=> 2000,
    37=> 1000,
    38=> 1000,
    39=> 1500,
    40=> 2000,
    41=> 1000,
    42=> 1000,
    43=> 1000,
    44=> 2000,
    45=> 2000,
    46=> 3000,
    47=> 4000,
  }
 
 
  #-----------------------------------------------------------------------
  # * 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 = {
 
    58=> [10],
 
  }
 
 
  # Activar interruptor al completar mision, esto puede ser opcional
  # A = ID de mision,  B = ID de interruptor
  Mision_Switch = {
 
    58=> 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 = "Arial Narrow"
      self.size = 18
    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.size = 24
        self.contents.font.color = system_color
        self.contents.draw_text(0, 40, self.width, 50 , "Descripción:")
        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 , "Objetivos:")
        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
        self.contents.font.size = 16
        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)
        self.contents.font.size = 24
      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, "Desconocida")
    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 , "Estado:")
    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 , "Desconocida")
    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 = "Arial Narrow"
    self.contents.font.size = 18
    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



Si alguien fuera tan amable y supiera arreglar este problema me ayudaría infinitamente y de paso también a miky Joe.

Bueno, un saludo.

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Metalero el 2014-06-05, 15:06

Esto es para XP no?

Pegando el script sobre main alcanza para testear lo que pasa?
Si no, armen un demo donde se pueda reproducir el problema.

Si lo puedo reproducir localmente, el fin de semana intento arreglarlo, que me suena a que el problema es algo re boludo.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por silvanash el 2014-06-05, 15:18

Es posible testear el script, pero Blaze copió el script tal y como lo tenía en su juego, así que hay un montón de código inútil al principio. Además, dentro de las recompensas por objetos que puso Blaze, hay objetos con ID por encima de la database default del Maker, así que hay que cambiar esas recompensas para que no tire error.

Por lo demás, he estado haciendo algunas pruebas pero sigo sin ver dónde está el error. Aunque yo cambiaría el funcionamiento de todo el script, porque tal y como lo tiene ahora no me gusta. El refresh de la ventana con los datos de misiones hace un loop con la key de cada hash hasta que la key coincide con la id de la misión, en lugar de usar la id de la misión como key y ya, pero cambiar todo eso requeriría cambiar demasiado script.

silvanash
Aventurero
Aventurero

0/3

Créditos 1417

Gracias : 176

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por BlazeCrimson el 2014-06-05, 15:52

Sí metalero, es del XP y en teoría funciona pegándolo sólo en main, pero como bien ha dicho silva tienes que aumentar el numero máximo de objetos.

El script parece enorme pero no lo es tanto, pues entre la explicación inicial y mis 50 misiones forman la mayoría del contenido.

Mucho me temo que tengas razón sobre el funcionamiento del script Silvanash, pero por desgracia está muy integrado en el juego y borrarlo sería muy problemático.

Quiero decir, hay alrededor de 100 llamar script (entre dar misión y completar), además el mismo da directamente las recompensas de la misión y muchas de estas recompensas son importantes.

Teniendo en cuenta lo grande que es DC podría pasarme horas y horas y seguro que me dejaría algunas cosas...

La idea sería apañar algo que conservara el mismo código de llamar script y que también diera la recompensa al completarla.
Al fin de cuentas el script es funcional, únicamente se desordena la columna de la izquierda.

Gracias a los dos por el interés  gcool 



_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Metalero el 2014-06-05, 17:11

Si me pueden dar una version del script que no tenga dependencias fuera de la base "standard", donde se pueda ver el problema (supongo que con poner 5 o mas misiones alcanza), veo de arreglarlo cuando tenga un rato libre.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por BlazeCrimson el 2014-06-05, 18:11

He cogido el script original, le he quitado la explicación inicial y he creado la quinta misión para que el error suceda.

Script:
Código:
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',
    5=> 'Misión para bug',
 
  }
 
 
  # 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'],
       
    5=> ['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'],   
       
    5=> ['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],   
    5=> ['weapon', 19],
 
  }
 
 
  # Recompensa en dinero:  A = ID de mision, B = Cantidad de dinero
  Reward_Gold = {
 
    1=> 5,
    2=> 10,
    3=> 20,
    4=> 10,
    5=> 10,
  }
 
 
  #-----------------------------------------------------------------------
  # * Funsiones extras tu decides si las usas o no [>>>NO USO ESTO<<]
 
  # 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 = {
 
    0=> [11, 10],
 
  }
 
 
  # Activar interruptor al completar mision, esto puede ser opcional
  # A = ID de mision,  B = ID de interruptor
  Mision_Switch = {
 
    0=> 999,
 
  }
 
  #----------------------------------------------------------------------
  # *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





Es importante mantener esto:
Tareas.mision(id)
Tareas.completar_mision(id)

P.D: El script tiene otro bug que hace que las misiones desbloqueadas lo hacen para todas las partidas guardadas. Es decir, si en el Save1 desbloqueas la misión 5 y luego haces juego nuevo y guardas en la ranura Save2, la misión 5 estará desbloqueada desde el principio.

Espero que esta versión te sirva  gcool 
Gracias.

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Miky Joe el 2014-06-06, 03:30

Espero este problemita tenga arreglo,yo no tengo suficientes creditos como para darlos,pero si de algo sirvio este post me alegra,púes almenos habra alguien intentando arreglarlo,yo lo tenia en la demo con 18 misiónes,pero me aguite mucho por este error,y empece a hacerlo por eventos comunes,ya que para mi este script es imposible de arreglar ya que no se nada de eso,si no es mucha molestia darte una idea si se te pudiera agregar en el script ya que vas a dar creditos,Que agregaran al script como un contador para las misiones,asi como te piden 20 pociones,al aceptar en la ventana de mision al pulsar c se abra otra ventanita marcando cuantas llevas,ejemplo,"llevas 12/20,le das regresar y asi vas checando cuanto avanza cada misión, esta chido,lo digo porque se veria mas fácil y atractivo para jugar,ya que el script no hace eso, o lo mismo que mates 10 babosas y te dice"llevas 5 de 10, estaria chido este script que te dijera esto,pero ese no es el tema,bueno espero y te den solución,porque me aguite bien machin con esto.

Edito,creo que ya tiene el sistema de contado verdad......bueno comoquiera espero y se resuelva este asunto jejejeje.

Saludos a todos.

Miky Joe
Veterano
Veterano

0/3

Créditos 525

Gracias : 58

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Metalero el 2014-06-07, 00:22

Ahhhhh mis ojos!!!!!

Dios mio, que desastre que es falcao programando. Un desastre total, todo re desprolijo, cero estructura de datos, todo suelto en hashes, una porqueria.

En fin, arregle los siguientes problemas:

* Problema de los nombres (obviamente)
* Problema con % de progreso. Tranquilamente se podían agregar ids de misiones que no existían, e iban a contar en el medidor de porcentaje
* Performance: las ventanas se estaban dibujando en el update!!!, o sea, en cada frame se redibujaban (por eso andaba tan trabado, al menos a mi me andaba trabado). Ahora solo se dibujan en... digamos... cuando se tiene que dibujar.

Cambie algunos detalles de como funciona internamente (las búsquedas de Hashes directamente por keys, como bien comento silvanash, que estaban hechas de una forma muy fea)
También me di cuenta que, creo.. el sistema de "required items" parecería NO funcionar para nada, pero no lo probé bien.

Espero que lo disfruten (si algo tan feo es disfrutable XD). Respecto a lo que decia Miky Joe, de agregar esa funcionalidad de "progreso", sinceramente si el script no estuviese tan mal hecho, lo podría haber pensado de hacer, pero así como esta hay que hacer un montón de cosas (igual de mal que el script) y prefiero evitarlo por ahora.


Código:

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',
    5=> 'Misión para bug',
  
  }
  
  
  # 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'],
        
    5=> ['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'],    
        
    5=> ['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],    
    5=> ['weapon', 19],
  
  }
  
  
  # Recompensa en dinero:  A = ID de mision, B = Cantidad de dinero
  Reward_Gold = {
    1=> 5,
    2=> 10,
    3=> 20,
    4=> 10,
    5=> 10,
  }
  
  
  #-----------------------------------------------------------------------
  # * Funsiones extras tu decides si las usas o no [>>>NO USO ESTO<<]
  
  # 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 = {
  
    0=> [11, 10],
  
  }
  
  
  # Activar interruptor al completar mision, esto puede ser opcional
  # A = ID de mision,  B = ID de interruptor
  Mision_Switch = {
  
    0=> 999,
  
  }
  
  #----------------------------------------------------------------------
  # *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)
  exists = false
  for i in Tareas::Nombre.keys
     if i == id
       exists = true
       break
      end
    end
    
  if !exists
    return
  end
  
  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_item = Reward_Items[mision_id]
    
    if reward_item != nil
      case reward_item[0]
      when 'item'
        item = $data_items[reward_item[1]]
        $game_party.gain_item(item.id, 1)
        $mision_data[1] = item
      when 'weapon'
        weapon = $data_weapons[reward_item[1]]
        $game_party.gain_weapon(weapon.id, 1)
        $mision_data[1] = weapon
      when 'armor'
        armor = $data_armors[reward_item[1]]
        $game_party.gain_armor(armor.id, 1)
        $mision_data[1] = armor
      end
 
      $falcao_completed.push(mision_id)
    end
    #gold
    reward_gold = Reward_Gold[mision_id]
    
    if reward_gold != nil
      $game_party.gain_gold(reward_gold)
      $mision_data[2] = reward_gold
    end
    
    # Switch
    switch = Mision_Switch[mision_id]
    
    if switch != nil
      $game_switches[switch] = true
      $game_map.need_refresh = true
    end
    
    # Items Needed
    items_needed = Items_Needed[mision_id]
    
    if items_needed != nil
      if $game_party.item_number(items_needed[0]) < items_needed[1]
        $game_party.gain_item(items_needed[0], items_needed[1])
      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 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
    draw_grid(0,336)
    draw_grid(225,336)
    if $falcao_mision.include?(mision_id)
      draw_mision_contents(mision_id)
    else
      self.contents.draw_text(-20, 100, self.width, 50, "No hay datos",1)
    end
  end
  
  def draw_mision_contents(mission_id)
    name = Nombre[mission_id]
    
    if name != nil
      self.contents.font.color = Color.new(255, 120, 0, 255)
      self.contents.draw_text(-20, 0, self.width, 50 , name, 1)
    end
    
    description = Descripcion[mission_id]
    
    if description != nil
      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 , description[0])
      self.contents.draw_text(0, 94, self.width, 50 , description[1])
      self.contents.draw_text(0, 119, self.width, 50 , description[2])
    end
    
    steps = Pasos[mission_id]
    
    if steps != nil
      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-  ' + steps[0])
      self.contents.draw_text(0, 222, self.width, 50 ,'2-  ' + steps[1])
    end
    
    reward_item = Reward_Items[mission_id]
    
    
    if reward_item != nil
      case reward_item[0]
      when 'item'
        item = $data_items[reward_item[1]]
      when 'weapon'
        item = $data_weapons[reward_item[1]]
      when 'armor'
        item = $data_armors[reward_item[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
    
    reward_gold = Reward_Gold[mission_id]
    
    if reward_gold != nil
      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,
      "#{reward_gold.to_s}  #{$data_system.words.gold}")
    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 current_mission
    return @data[@index][0]
  end
  
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    Tareas::Nombre.each do |id, value|
      @data.push([id, value])
    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][1]
    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.current_mission)
    @title =  Mision_Help.new(180,0,462)
    @title.set_status(@indice_mision.current_mission)
    @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

    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    
    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
      @misiones.refresh(@indice_mision.current_mission)
      @title.set_status(@indice_mision.current_mission)
    end
    
  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

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Mukadelheid el 2014-06-07, 00:43

Metalero escribió:Ahhhhh mis ojos!!!!!






HAHAHAHAHA.

Lo primero que note fueron las faltas de ortografía, eso es pasable.
Luego fui bajando y vi todo en cualquier lado ; di vuelta el teclado XD .

Intente hacerlo ,pero .... este script me destruyo moralmente...


Buen trabajo metalero , impecable como siempre.

Mukadelheid
Principiante
Principiante

0/3

Créditos 331

Gracias : 28

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Miky Joe el 2014-06-07, 06:58

Muchas gracias Metalero,aunque decidi hacer mi sistema de misiones con imagenes(muy pero muy básico)a otros les va a servir de mucho,ya que estoy seguro que lo dejaban por el problema que surgia,ahora lo tomarán con mucha confianza los nuevos que van llegando,este scrip tal vez deba ir hacia la recopilación de script,pero con el crédito de tu revisión,para que vean que se a arreglado.

De verdad muchas gracias,salvaste mas de un proyecto con tu ezfuerzo. notworthy 

Miky Joe
Veterano
Veterano

0/3

Créditos 525

Gracias : 58

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por BlazeCrimson el 2014-06-07, 11:09

¡Buenas! Muchas gracias una vez más por tu tiempo Metalero  Very Happy 
He probado el nuevo script tal cual lo has puesto y funciona, pero cuando añado mis misiones (47 en total) se bugea.
Las misiones se desordenan y casi todas aún desbloqueadas sale "No hay datos"
He probado de reducirlo a 20 misiones pero ha ocurrida prácticamente lo mismo.
Aquí un video que acabo de hacer para que veas el problema.



Lo que necesites pídemelo (que entre al chatbox, facebook, que te pase el script con las misones o el juego...)
Es una pena porque tal y como está sin añadir mis misiones el problema estaba resuelto.

Bueno, un saludo  gcool 

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Metalero el 2014-06-07, 19:20

Mmm... pasame un demo con ese mapa y los eventos, asi lo puedo probar.

Edito: ya encontre como repducir el error. Por ahoro NO necesito el demo. Si llego a necesitar algo mas aviso.

Edito 2: Proba con esto

Código:

module Tareas
  
  # Nombre de la mision:  A = ID de mision, B = Nombre de mision
  Nombre = {
  
    1=> 'Las ruinas de Brahdna',
    2=> 'Esencia IV',
    3=> 'Desertor',
    4=> 'El último desafío',
    5=> 'Teletransportes',
    6=> 'La grieta',
    7=> 'Problemas en la montaña',
    8=> 'La tormenta eterna',
    9=> 'La moneda de Ursays',
    10=> 'Miembro de oro',
    11=> 'Esencia III',
    12=> 'La alquimia',
    13=> 'Reunión pospuesta',
    14=> 'El Cristalis',
    15=> 'Paquete urgente',
    16=> 'La plaga',
    17=> 'Gelatina mortal',
    18=> 'El fuerte en apuros',
    19=> 'Investigación en la jungla',
    20=> 'Esencia II',
    21=> 'Anomalia en desierto',
    22=> 'Las desapariciones de Onpah',
    23=> 'Problemas en familia real',
    24=> 'El plan de los tres reinos',
    25=> 'Remedios sanadores',
    26=> 'Provisiones para la guerra',
    27=> 'El sabio alquimista',
    28=> 'La prueva del alquimista',
    29=> 'Echar una mano',
    30=> 'Los monstruos en la mina',
    31=> 'Recursos para la guerra',
    32=> 'La mina escondida',
    33=> 'El trato de los ramaderos',
    34=> 'Una visita inesperada',
    35=> 'Las ovejas perdidas',
    36=> 'El poder de la superioridad numérica',
    37=> 'Un sabio consejo',
    38=> 'Radicalistas en Handora',
    39=> 'Evitar el golpe',
    40=> 'El coliseo de Piuka',
    41=> 'El demonio extraviado',
    42=> 'Los oportunistas',
    43=> 'Los lobos Garnius',
    44=> 'Ruffus el corsario',
    45=> 'La cueva egina',
    46=> 'La más poderosa',
    47=> 'El legado de Griffith Crimson',
  }
  
  
  # Descripciones:  A = ID de mision, B = contenido soporta 3 lineas
  Descripcion = {
  
    1=> ['Los científicos enviados a las Ruinas Brahdna',
        'parecen haber sufrido algún accidente.',
        'Me encuentro a las afueras de Kalay.'],
      
    2=> ['Has obtenido la esencia Olvert IV',
        'pero no logras sintetizarla.',
        'Busca a alguen que pueda ayudarte.'],
        
    3=> ['Un ninja desertor está causando el caos',
        'en FangRyu.',
        'Esta situación debe acabar.'],
        
    4=> ['Utiliza la tablilla demoníaca en',
        'la sala Thinry y prepárate para',
        'el último y más duro desafío '], 
        
    5=> ['Has obtenido el cristal abisal por Kuruta',
        'Utilízalo en el telep. de la posada de Fang',
        'El teleportador tiene forma de espejo.'], 
              
    6=> ['Ha sido encontrada una cueva misteriosa',
        'Está en los pies de las montañas Rikuroa',
        'llegarás allí por las tierras Bosbon.'], 
        
    7=> ['Un grupo de pirómanos están actuando',
        'Estarán por la montaña Rikuroa',
        'Debes acabar con esta situación.'],
        
    8=> ['Una tormenta incesante azota Rendbi',
        'Dirígete allí desde las montañas Rikuroa',
        'Infíltrate y investiga el suceso.'], 
        
    9=> ['Has encontrado un fragmento de la',
        'codiciada moneda de Ursays.',
        'Seguro que alguien en Kalay la desearía.'], 
        
    10=> ['Reúne los dos fragmentos de la moneda ',
        'de Ursays y únelos.',
        'Después llévala a "acero templado" en Kalay.'],
        
    11=> ['Has obtenido la esencia Olvert III',
        'No puedes sintetizártela tu solo.',
        'Llévala al sabio Rabbadán III, en el Cuartel.'],
        
    12=> ['Dirígete a la CDDA en la plaza central',
        'Busca a Vaan para que te enseñe a utilizar .',
        'la alquimia.'],
        
    13=> ['El capitán de brigada Tauk debe ser ',
        'informado que la reunión a la que debía',
        'asistir ha sido aplazada.'],
        
    14=> ['En las rutas de Bosbon se ha encontrado ',
        'Cristalis. Necesitamos que recojas un par ',
        'de montones.'],

    15=> ['LLeva el paquete rápidamente a Dionísio ',
        'en Nilib. Si lo entregas muy rápido serás',
        'recompensado doblemente.'],
        
    16=> ['Nilib está siendo atacada por una plaga',
        'terrible, venid de inmediato a exterminarla',
        'Me encuentro al lado de la tienda de objetos.'],
        
    17=> ['Un terrible limo está causando estragos',
        'en la ruta Brugnor, parece ser que devora ',
        'a los viajeros; hay que acabar con él.'],
        
    18=> ['Dirígete al fuerte Stonegate con Bralor',
        'y encuentra a Krauser, él os dará las nuevas ',
        'órdenes.'],
        
    19=> ['Entra en la ancestral jungla de Nathariel',
        'y continúa la ivestigación acerca de la sala ',
        'Thinry.'],

    20=> ['Has obtenido la esencia Olvert II',
        'No puedes sintetizártela tu solo.',
        'Llévala al sabio Rabbadán III, en el Cuartel.'],
        
    21=> ['Dirigete a Onpah, en el desierto de Barnd',
        'atravesando las tierras de Lernia por el sur',
        'y busca a Ashur para obtener información'],
        
    22=> ['Atraviesa el desierto de Barnd y encuentra',
        'la causa de las desapariciones, rescata a',
        'cuantos desaparecidos queden con vida'],
        
    23=> ['La reina Flora y la princesa Kathia de Kalay',
        'han sido secuestradas por Handora, descubre',
        'su paradero y rescatalas sanas y salvas'],
        
    24=> ['Dirigete al bosque de nefly y busca el cristal',
        'maestro en las ruinas de Barand thur. Úsalo',
        'para derrotar al gran rey demonio.'],
      
    25=> ['La CDDA necesita 12 remedios sanadores,',
        'créaselos y llévaselos a Vaan que se ',
        'encuentra en Kalay'],
  
    26=> ['La CDDA necesita que lleves sus provisiones',
        'a las tiendas aliadas de: Kalay, Handora',
        'Lernia y Onpah, que necesitarán para la batalla'],
        
    27=> ['Encuentra la guarida del Sabio alquimista',
        'Demitas, en las profundidades de Valus para',
        'que os ayude'],
  
    28=> ['Demitas quiere que le mostréís: Omnielixir',
        'Roca protectora, Pepita de oro, Esencia:Esna' ,
        'Velo, Cristalis perfecto y cristal de poder'],
  
    29=> ['La mina de Onpah ha solicitado ayuda',
        'dirígete allí y échales una mano ',
        ' '],
  
    30=> ['La mina de Lernia descubrió una nueva',
        'galería rica en recursos, pero que está',
        'ocupada por monstruos. Acaba con ellos'],
        
    31=> ['La mina de Lernia sigue necesitando ayuda',
        'dirígete alli una vez y prestales vuestra',
        'ayuda en todo lo que necesiten'],
  
    32=> ['En Nathariel se ha encontrado una posible',
        'explotación, encuéntrala y explórala',
        'para determinar si es conveniente'],
        
    33=> ['Los pastores Kolo de Rendbi y Mario',
        'de Piuka quieren sellar un trato con ',
        'Dionisio. Habla con ellos y ayúdales'],
  
    34=> ['Visita al equipo de desarrollo de',
        'Proyecto Blaze. Se encuentran en algún',
        'lugar de Handora'],
  
    35=> ['Dionisio ha perdido cinco ovejas',
        'en algún lugar de Nilib.',
        'Encuéntralas '],

    36=> ['Dionisio está fuera de control',
        'debes detenerle y arrasterlo',
        'Ahora mismo se encuentra en Nilib'],
        
    37=> ['El mastro Kuruta os ha citado.',
        'Marchad a Fang Ryu a esuchar lo que',
        'tenga que decir'],
  
    38=> ['Unos espías de un grupo radicalista',
        'se han esparcido por Handora, ',
        'encuéntralos'],
        
    39=> ['Los radicales de Handora han tomado',
        'la torre de Sifith. ',
        'Debes encargarte del asunto'],
  
    40=> ['Se ha abierto de nuevo el coliseo de Piuka, ',
        'participa en dificultad normal con cualquier ',
        'miembro del grupo y gana.'],
        
    41=> ['Un demonio está atacando a los',
        'voluntarios en las extensiones de Zakol',
        'Encuentrálo y acaba con él'],
  
    42=> ['Un grupo de bandidos aprovechando',
        'la situación ha atacado Traus.',
        'Ayuda a los soldados a expulsarlos'],
        
    43=> ['Encuentra la manada de lobos Garnius',
        'en algún lugar de las tierras de ',
        'Lernia y acaba con ellos'],
  
    44=> ['El gran corsario Ruffus continúa',
        'asediando las costas de Traus.',
        'ataca su navío y acaba con él.'],
        
    45=> ['Se ha descubierto un posible Pasadizo',
        'en una cueva de Nathariel que ',
        'conduce  a ruinas Eginas. Investígalas'],
  
    46=> ['Laindry Kuitsne conocida como',
        'la mejor guerrera hasta la fecha',
        'Quiere retaros a un combate'],
  
    47=> ['Encuentra la Tumba de Griffith ',
        'y después ábrela utilizando las',
        'las cuatro llaves de Griffith.'],
  }
  
  
  # Tareas de mision:  A = ID de mision, B = contenido soporta 2 lineas
  Pasos = {
  
    1=> ['Habla con Zadok en las afueras de Kalay',
        'Encuentra a los científicos desaparecidos'],
      
    2=> ['Encuentra al sabio en el cuartel',
        'Logra sintetizar la E.Olvert IV'],
      
    3=> ['Hablar con Kuruta en FangRyu',
        'Atrapar al desertor vivo o muerto'],
        
    4=> ['Utiliza la tablilla demoníaca',
        'Supera el último reto'],  
        
    5=> ['Busca el telep. de la posada, en Fang',
        'Utilízalo para regresar a Kalay'],
        
    6=> ['Busca la entrada a la grieta en Bosbon',
        'Averigua que si existe esencia allí'],
        
    7=> ['Encuentra a los pirómanos',
        'Mátalos'],
      
    8=> ['Infíltrate en Rendbi',
        'Averigua, y si puedes detén la tormenta'],
        
    9=> ['Busca en kalay algún interesado en ella.',
        'Posiblemente algún comerciante la codicie'],
        
    10=> ['Obtén el fragmento restante de Zanghar.',
          'Une ambos fragmentos con alquimia.'],
          
    11=> ['Llévale al sabio la esencia Olvert III.',
          'Sintetízala.'],
          
    12=> ['Dirígete a la CDDA.',
          'Aprende a usar la alquimia.'],
          
    13=> ['Busca e informa a Tauk.',
          'Su mujer se encuentra en el hospital.'],
          
    14=> ['Recoje un par de Cristalis.',
          'Llévalos a Teresa, en Kalay.'],
          
    15=> ['Lleva el paquete a Dionísio.',
          'Si lo haces rápido serás recompensado.'],
          
    16=> ['Reúnete con Balder en Nilib.',
          'Aniquila la plaga.'],
          
    17=> ['Dirígete a las rutas Brugnor.',
          'Mata al limo caníbal.'],
          
    18=> ['Dirígete al fuerte Stonegate.',
          'Habla con Krauser.'],
          
    19=> ['Dirígete al la Jungla de Nathariel.',
          'Encuentra la sala Thinry.'],
          
    20=> ['Llévale al sabio la esencia Olvert II.',
          'Sintetízala.'],
          
    21=> ['Cruza el desierto y encuentra Onpah',
          'Habla con Ashur'],
          
    22=> ['Reunete con Ashur en la puerta sur',
          'Rescata a los desaparecidos'],
          
    23=> ['Obtén información sobre Flora y Kathia',
          'Rescatalas sin ponerlas en peligro'],
          
    24=> ['Obtén el espejo maestro en Barand thur',
          'Derrota al Gran rey demonio'],
          
    25=> ['Reúne 12 remedios sanadores',
          'Llévaselos a Vaan'],
          
    26=> ['Recoje las provisiones en la CDDA',
          'Entrégalas a sus respectivos destinos'],
          
    27=> ['Dirígete a Valus',
          'Encuentra al Sabio Demita'],
          
    28=> ['Crea los objetos necesarios',
          'Muéstraselos a Demitas'],
          
    29=> ['Ves a la mina de Onpah',
          'Ayuda en los mineros'],
    
    30=> ['Ves a la mina de Lernia ',
          'Despeja la galería'],
          
    31=> ['Ves a la mina de Lernia',
          'Ayuda en los mineros'],
          
    32=> ['Encuentra la explotación en Nathariel',
          'Explórala'],
          
    33=> ['Habla con Kolo y Mario',
          'Después habla con Dionisio'],
          
    34=> ['Dirígete a Handora',
          'Encuentra al equipo de Proyecto Blaze'],
  
    35=> ['Ves a Nilib',
          'Encuentra a las cinco ovejas'],
          
    36=> ['Dirígete a Nilib',
          'Detén a Dionisio'],
          
    37=> ['Dirígete a Fang Ryu',
          'Obedece la orden de Kuruta'],
          
    38=> ['Dirígete a Handora',
          'Encuentra a los seis espias'],
          
    39=> ['Dirígete a Handora',
          'Acaba con el grupo radical'],
    
    40=> ['Dirígete a Piuka',
          'Vence en el coliseo'],
          
    41=> ['Encuentra al demonio escondido',
          'Derrótalo'],
          
    42=> ['Dirígete a Traus',
          'Derrota a los piratas'],
          
    43=> ['Dirígete a las tierras de Lernia',
          'Derróta a las tres manadas Garnius'],
          
    44=> ['Dirígete a Traus',
          'Derrota al gran corsario Ruffus'],
          
    45=> ['Dirígete a Nathariel',
          'Encuentra las nuevas ruinas Eginas'],
          
    46=> ['Dirígete al distrito noreste de Kalay',
          'Derrota a Laindry Kuitsne'],
          
    47=> ['Reúne las cuatro llaves de Griffith',
          'Encuentra la cripta de Giffith'],
  }
  
  # Recompensa en Items:  A = ID de mision, B = [Tipo de Item, ID de Item]
  Reward_Items = {
  
    1=> ['item',  116],
    2=> ['item',  18],
    3=> ['item', 25],
    4=> ['item', 213],
    5=> ['item', 47],    
    6=> ['item',  78],
    7=> ['item', 69],
    8=> ['item', 24],
    9=> ['item', 6],    
    10=> ['item',  152],
    11=> ['item', 18],
    12=> ['item', 155],
    13=> ['item', 172],    
    14=> ['item',  157],
    15=> ['item', 158],
    16=> ['item', 9],
    17=> ['armor', 52],
    18=> ['item', 24],
    19=> ['item', 124],
    20=> ['item', 197],
    21=> ['item', 24],
    22=> ['armor', 56],
    23=> ['armor', 44],
    24=> ['item', 108],
    25=> ['item', 173],
    26=> ['item',  176],
    27=> ['item', 177],
    28=> ['item', 179],
    29=> ['armor', 42],    
    30=> ['armor', 62],
    31=> ['armor', 54],
    32=> ['item', 102],
    33=> ['armor', 43],    
    34=> ['armor', 41],
    35=> ['armor', 57],
    36=> ['item', 107],
    37=> ['armor', 42],    
    38=> ['armor', 40],
    39=> ['armor', 58],
    40=> ['item', 111],
    41=> ['armor', 40],
    42=> ['armor', 41],
    43=> ['armor', 60],
    44=> ['item', 105],
    45=> ['armor', 61],
    46=> ['item', 97],
    47=> ['armor', 63],
  }
  
  
  # Recompensa en dinero:  A = ID de mision, B = Cantidad de dinero
  Reward_Gold = {
  
    1=> 1200,
    2=> 550,
    3=> 150,
    4=> 99999,
    5=> 150,
    6=> 1300,
    7=> 500,
    8=> 2000,
    9=> 300,  
    10=> 500,
    11=> 550,
    12=> 300,
    13=> 2000,
    14=> 600,
    15=> 300,
    16=> 500,
    17=> 700,
    18=> 2300,
    19=> 1000,
    20=> 500,
    21=> 1500,
    22=> 3000,
    23=> 5000,
    24=> 9999,
    25=> 1000,
    26=> 1000,
    27=> 1500,
    28=> 2000,
    29=> 1000,
    30=> 1000,
    31=> 1500,
    32=> 2000,
    33=> 1000,  
    34=> 1000,
    35=> 1500,
    36=> 2000,
    37=> 1000,
    38=> 1000,
    39=> 1500,
    40=> 2000,
    41=> 1000,
    42=> 1000,
    43=> 1000,
    44=> 2000,
    45=> 2000,
    46=> 3000,
    47=> 4000,
  }
  
  
  #-----------------------------------------------------------------------
  # * 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 = {
  
    58=> [10],
  
  }
  
  
  # Activar interruptor al completar mision, esto puede ser opcional
  # A = ID de mision,  B = ID de interruptor
  Mision_Switch = {
  
    58=> 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)
  exists = false
  for i in Tareas::Nombre.keys
     if i == id
       exists = true
       break
      end
    end
    
  if !exists 
    return
  end
  
  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_item = Reward_Items[mision_id]
    
    if reward_item != nil
      case reward_item[0]
      when 'item'
        item = $data_items[reward_item[1]]
        $game_party.gain_item(item.id, 1)
        $mision_data[1] = item
      when 'weapon'
        weapon = $data_weapons[reward_item[1]]
        $game_party.gain_weapon(weapon.id, 1)
        $mision_data[1] = weapon
      when 'armor'
        armor = $data_armors[reward_item[1]]
        $game_party.gain_armor(armor.id, 1)
        $mision_data[1] = armor
      end
 
      $falcao_completed.push(mision_id)
    end
    #gold
    reward_gold = Reward_Gold[mision_id]
    
    if reward_gold != nil
      $game_party.gain_gold(reward_gold)
      $mision_data[2] = reward_gold
    end
    
    # Switch
    switch = Mision_Switch[mision_id]
    
    if switch != nil
      $game_switches[switch] = true
      $game_map.need_refresh = true
    end
    
    # Items Needed
    items_needed = Items_Needed[mision_id]
    
    if items_needed != nil
      if $game_party.item_number(items_needed[0]) < items_needed[1]
        $game_party.gain_item(items_needed[0], items_needed[1])
      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 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
    draw_grid(0,336)
    draw_grid(225,336)
    
    if $falcao_mision.include?(mision_id)
      draw_mision_contents(mision_id)
    else
      self.contents.draw_text(-20, 100, self.width, 50, "No hay datos",1)
    end
  end
  
  def draw_mision_contents(mission_id)
    name = Nombre[mission_id]
    
    if name != nil
      self.contents.font.color = Color.new(255, 120, 0, 255)
      self.contents.draw_text(-20, 0, self.width, 50 , name, 1)
    end
    
    description = Descripcion[mission_id]
    
    if description != nil 
      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 , description[0])
      self.contents.draw_text(0, 94, self.width, 50 , description[1])
      self.contents.draw_text(0, 119, self.width, 50 , description[2])
    end
    
    steps = Pasos[mission_id]
    
    if steps != nil
      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-  ' + steps[0])
      self.contents.draw_text(0, 222, self.width, 50 ,'2-  ' + steps[1])
    end
    
    reward_item = Reward_Items[mission_id]
    
    
    if reward_item != nil
      case reward_item[0]
      when 'item'
        item = $data_items[reward_item[1]]
      when 'weapon'
        item = $data_weapons[reward_item[1]]
      when 'armor'
        item = $data_armors[reward_item[1]]
      end
      
      if item == nil
        return
      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
    
    reward_gold = Reward_Gold[mission_id]
    
    if reward_gold != nil
      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,
      "#{reward_gold.to_s}  #{$data_system.words.gold}")
    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 current_mission
    return @data[@index][0]
  end
  
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    #Hack feo... pero como esta todo con hashes no queda otra...
    i = 1
    while Tareas::Nombre[i] != nil
      @data.push([i, Tareas::Nombre[i]])
      i += 1
    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][1]
    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.current_mission)
    @title =  Mision_Help.new(180,0,462)
    @title.set_status(@indice_mision.current_mission)
    @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

    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    
    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
      @misiones.refresh(@indice_mision.current_mission)
      @title.set_status(@indice_mision.current_mission)
    end
    
  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


Si con eso te funciona, solo te dejo avisado, que como esta todo mal hecho, por el tema ese de los hashes, tuve que poner un "hack" feo para arreglarlo.
Lo unico que tenes que tener en cuenta, es que las misiones tienen que empezar por 1, y estar ordenandas de a 1 (o sea, si tenes 4 misiones, tienen que tener indices 1,2,3,4, y no 1,4,6,2)

Pregunta: siempre tuvo lag cuando completas una mision hasta que aparece la ventanita de "reward" ? Por que a mi se me cuelga por 1 o 2 segundos. Voy a ver si puedo arreglar eso tambien.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por BlazeCrimson el 2014-06-07, 23:42

Mil gracias Metalero.

Este maldito script había sido siempre un dolor de muelas, pero por ahora, parece que funciona al fin.

Sobre tu pregunta, sí cuando se completa la misión se queda colgado un par de segundos, pero bueno no es algo que me procupe sobremanera.

He retocado un poco algunas cosas para darle mejor aspecto al script, como el tipo de letra y su tamaño en algunas partes para mejorar su lectura o para que no se salga del marco.

Esto junto a un repaso ortográfico que necesitaba este es el resultado final:



Una vez más, muchas gracias por tu ayuda en estos últimos dos scripts.

¡Nos leemos!  gcool 

_________________
Image and video hosting by TinyPic

BlazeCrimson
Analista
Analista

0/3

Créditos 609

Gracias : 92

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Metalero el 2014-06-08, 00:12

Me alegro de que te funcione bien.

Lo del lag cuando se completa una mision, me fije, y es causado por culpa del sonido. La primera vez que carga el sonido se traba todo el player. Si completas una mision, y enseguida completas otra, no se traba por que el sonido esta cacheado.
Pero bueno, es algo que ya viene asi con el maker y no se puede cambiar.

_________________

Metalero
Administrador
Administrador



Créditos 1715

Gracias : 98

Volver arriba Ir abajo

Re: Sistema de misiones (revuelve los nobres de la mision)

Mensaje por Contenido patrocinado Hoy a las 05:01


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permisos de este foro:
No puedes responder a temas en este foro.