Registrarse

[RPG - Scripting] Impedir el paso al jugador dependiendo de los pokemon que tenga

Estado
Cerrado para nuevas respuestas.

Morel X

Pues bueno aquí estamosxD
Buenas, pues quería saber como hacer esto, quiero acceder a una zona pero hay un npc que me dice que no puedo pasar a menos que todos mis pokemon sean del tipo planta o de cualquier otro tipo, es esto posible? y de ser así como podría hacerlo?

O por ejemplo que solo pueda pasar si tengo determinados pokemon por ejemplo, solo puedo pasar si tengo en mi equipo a pikachu, caterpie y geodude, si tengo alguno más o no tengo todos esos no me deje pasar
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Para esto tendrías que comprobar algo en todo el equipo, lo más fácil es crear un script y ejecutarlo desde un condicional en el evento.
Para el caso de que todos los Pokémon tengan que ser de tipo planta sería algo así:

Código:
def checkTypes(type)
  $Trainer.party.each {|x| # Bucle por todo el equipo, x es el Pokémon actual
    if x.type1 != type && x.type2 != type # Comprueba que el tipo sea el tipo que le hemos dado
      return false # Si no alguno no lo es, devolvemos false
    end
  }
  return true # Si hemos llegado hasta aquí es que todos los Pokémon son válidos, devolvemos true
end
Luego simplemente en la condición lo llamas (ten en cuenta que primero tienes que pegarlo en un nuevo script encima de main o donde quieras), por ejemplo para que todo el equipo sea de tipo planta:

Código:
checkTypes(PBTypes::GRASS)
Para lo segundo no necesitarías ningún script extra, puedes combinar los ya existentes, en la condición tendrías que poner algo así:

Código:
$Trainer.party.length == 3 && pbHasSpecies?(:PIKACHU) && pbHasSpecies?(:CATERPIE) && pbHasSpecies?(:GEODUDE)
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
¿Y cómo le hago si necesito que tenga los legendarios y el inicial (son 5 iniciales y 5 legendarios benignos)?
¿Has leído mi respuesta?
He dejado este ejemplo:
Código:
$Trainer.party.length == 3 && pbHasSpecies?(:PIKACHU) && pbHasSpecies?(:CATERPIE) && pbHasSpecies?(:GEODUDE)
Simplemente modifica las especies de los Pokémon.
Como vas a necesitar el equipo completo puedes quitar el $Trainer.party.length == 3 o ponerlo a 6.
 

Karlsetin

Leyenda de WaH
Por lo que sé el comando && es equivalente al "y" entonces el || es el equivalente al "o"

Yo haría algo como:

pbHasSpecies?:)Inicial1) || pbHasSpecies?:)inicial2) || pbHasSpecies?:)inicial3)
PbHasSpecies?:)legendarios del 1 al 5 con && entre ellos)
 
Gracias... Ya guardé el tema (¿También aplica para GBA?)

además... ¿sería así?

pbHasSpecies?:)Mikanto) || pbHasSpecies?:)Gantari) || pbHasSpecies?:)Solinthe) || pbHasSpecies?:)Fengaru) || pbHasSpecies?:)Rederia)
pbHasSpecies?:)Tlanextli) && pbHasSpecies?:)Itlakayotl) && pbHasSpecies?:)Teyaotlani) && pbHasSpecies?:)Niktemaktli) && pbHasSpecies?:)Neli)
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Gracias... Ya guardé el tema (¿También aplica para GBA?)

además... ¿sería así?

pbHasSpecies?:)Mikanto) || pbHasSpecies?:)Gantari) || pbHasSpecies?:)Solinthe) || pbHasSpecies?:)Fengaru) || pbHasSpecies?:)Rederia)
pbHasSpecies?:)Tlanextli) && pbHasSpecies?:)Itlakayotl) && pbHasSpecies?:)Teyaotlani) && pbHasSpecies?:)Niktemaktli) && pbHasSpecies?:)Neli)
No, estás en el subforo de dudas de RPG, esto es solo para RPG.
Y sí, aunque yo pondría a los starters entre paréntesis para que quede claro que es solo una opción.

Código:
(pbHasSpecies?(:Mikanto) || pbHasSpecies?(:Gantari) || pbHasSpecies?(:Solinthe) || pbHasSpecies?(:Fengaru) || pbHasSpecies?(:Rederia)) && pbHasSpecies?(:Tlanextli) && pbHasSpecies?(:Itlakayotl) && pbHasSpecies?(:Teyaotlani) && pbHasSpecies?(:Niktemaktli) && pbHasSpecies?(:Neli)
 

Morel X

Pues bueno aquí estamosxD
Para esto tendrías que comprobar algo en todo el equipo, lo más fácil es crear un script y ejecutarlo desde un condicional en el evento.
Para el caso de que todos los Pokémon tengan que ser de tipo planta sería algo así:

Código:
def checkTypes(type)
  $Trainer.party.each {|x| # Bucle por todo el equipo, x es el Pokémon actual
    if x.type1 != type && x.type2 != type # Comprueba que el tipo sea el tipo que le hemos dado
      return false # Si no alguno no lo es, devolvemos false
    end
  }
  return true # Si hemos llegado hasta aquí es que todos los Pokémon son válidos, devolvemos true
end
Luego simplemente en la condición lo llamas (ten en cuenta que primero tienes que pegarlo en un nuevo script encima de main o donde quieras), por ejemplo para que todo el equipo sea de tipo planta:

Código:
checkTypes(PBTypes::GRASS)
Para lo segundo no necesitarías ningún script extra, puedes combinar los ya existentes, en la condición tendrías que poner algo así:

Código:
$Trainer.party.length == 3 && pbHasSpecies?(:PIKACHU) && pbHasSpecies?(:CATERPIE) && pbHasSpecies?(:GEODUDE)
Muchas gracias eres el mejor! voy aprobarlo ahora mismo pero dime, lo que hay que poner en el main es lo de: checkTypes(PBTypes::GRASS)? o lo primero? y sobre lo ultimo si lo pones así te impidiria el paso si llevas mas pokemon aparte de esos o si por ejemplo llevas 2 pikachu?
 

Morel X

Pues bueno aquí estamosxD
Para esto tendrías que comprobar algo en todo el equipo, lo más fácil es crear un script y ejecutarlo desde un condicional en el evento.
Para el caso de que todos los Pokémon tengan que ser de tipo planta sería algo así:

Código:
def checkTypes(type)
  $Trainer.party.each {|x| # Bucle por todo el equipo, x es el Pokémon actual
    if x.type1 != type && x.type2 != type # Comprueba que el tipo sea el tipo que le hemos dado
      return false # Si no alguno no lo es, devolvemos false
    end
  }
  return true # Si hemos llegado hasta aquí es que todos los Pokémon son válidos, devolvemos true
end
Luego simplemente en la condición lo llamas (ten en cuenta que primero tienes que pegarlo en un nuevo script encima de main o donde quieras), por ejemplo para que todo el equipo sea de tipo planta:

Código:
checkTypes(PBTypes::GRASS)
Para lo segundo no necesitarías ningún script extra, puedes combinar los ya existentes, en la condición tendrías que poner algo así:

Código:
$Trainer.party.length == 3 && pbHasSpecies?(:PIKACHU) && pbHasSpecies?(:CATERPIE) && pbHasSpecies?(:GEODUDE)
Vale ya lo he conseguido gracias a ti, muchas gracias, solo una pregunta más, si por ejemplo quiero hacer lo mismo pero que me impida el paso cuando detecte un pokemon de un tipo especifico como sería? en plan, que no me deje pasar si detecta un pokemon de tipo fuego entre todos los que llevo
 
Última edición:

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
La próxima vez, como el doble post está prohibido, si editas un mensaje en una duda recuerda avisar al que te esté ayudando por perfil porque si no me lo llegas a decir en otro tema no lo llego a ver nunca.
Pues el funcionamiento sería parecido:

Código:
def hasType(type)
  $Trainer.party.each {|x| # Bucle por todo el equipo, x es el Pokémon actual
    if x.type1 != type || x.type2 != type # Comprueba que el tipo sea el tipo que le hemos dado
      return true # Si lo es, devolvemos true
    end
  }
  return false # Si hemos llegado hasta aquí es que ningún Pokémon es del tipo dado, devolvemos false
end
Como puedes ver este nuevo script devuelve true cuando detecta que sí tienes un Pokémon del tipo dado, así que activaría la condición en un evento.
 

Morel X

Pues bueno aquí estamosxD
La próxima vez, como el doble post está prohibido, si editas un mensaje en una duda recuerda avisar al que te esté ayudando por perfil porque si no me lo llegas a decir en otro tema no lo llego a ver nunca.
Pues el funcionamiento sería parecido:

Código:
def hasType(type)
  $Trainer.party.each {|x| # Bucle por todo el equipo, x es el Pokémon actual
    if x.type1 != type || x.type2 != type # Comprueba que el tipo sea el tipo que le hemos dado
      return true # Si lo es, devolvemos true
    end
  }
  return false # Si hemos llegado hasta aquí es que ningún Pokémon es del tipo dado, devolvemos false
end
Como puedes ver este nuevo script devuelve true cuando detecta que sí tienes un Pokémon del tipo dado, así que activaría la condición en un evento.
Entiendo, ya lo se para la próxima muchas gracias y perdon!
Mañana lo probaré gracias por verlo y hacer el script :D
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
¿Y que pasa si quiero, por ejemplo, que un miembro del equipo pertenezca a los tipos Planta y Volador?
Si te das cuenta en los scripts se especifica x.type1 y x.type2, puedes hacer una modificación rápida para adaptarlo a dos tipos.

Código:
def hasType(type, [B][u]type2[/u][/B])
  $Trainer.party.each {|x| # Bucle por todo el equipo, x es el Pokémon actual
    if x.type1 != type [B][u]&&[/u][/B] x.type2 != [B][u]type2[/u] [/B]# Comprueba que el tipo sea el tipo que le hemos dado
      return true # Si lo es, devolvemos true
    end
  }
  return false # Si hemos llegado hasta aquí es que ningún Pokémon es del tipo dado, devolvemos false
end
He puesto en negrita y subrayado lo que he cambiado para que se vea claro ;)
 
Estado
Cerrado para nuevas respuestas.
Arriba