Registrarse

[RPG - Scripting] Romper una roca y que te pueda dar un objeto

Estado
Cerrado para nuevas respuestas.

Morel X

Pues bueno aquí estamosxD
Buenas, no recuerdo en que juegos de pokémon al romper las rocas aparte de que te podían salir pokémon también podían darte algún objeto, pues quería saber como hacer para que al romperla o te de un objeto o te salga un pokemon.
 

Jessie

What goes around, comes around
En la sección de PField_HiddenMoves o PField_FieldMoves, buscas la parte de RockSmash y le agregas un condicional para agregar objetos.

Código:
def pbRockSmashRandomEncounter
  if rand(100)<25
    pbEncounter(EncounterTypes::RockSmash)
  end
end
Puedes agregarlo de esta manera :

Código:
def pbRockSmashRandomEncounter
  azar=rand(100)
  if azar<25
     pbEncounter(EncounterTypes::RockSmash)
  elsif azar>25 && azar<50
     objetos=[PBItems::LEFTOVERS,PBItems::POKEBALL,PBItems::POTION]
      Kernel.pbItemBall(objetos[rand(objetos.length)])
  end
end
Aquí puse que hay 25% que salga encuentro y 25% que te salga objeto, y la variable "objetos" es la lista de posibles objetos.

Espero que te sirva, saludos.
 

Morel X

Pues bueno aquí estamosxD
Re: Respuesta: Romper una roca y que te pueda dar un objeto

En la sección de PField_HiddenMoves o PField_FieldMoves, buscas la parte de RockSmash y le agregas un condicional para agregar objetos.

Código:
def pbRockSmashRandomEncounter
  if rand(100)<25
    pbEncounter(EncounterTypes::RockSmash)
  end
end
Puedes agregarlo de esta manera :

Código:
def pbRockSmashRandomEncounter
  azar=rand(100)
  if azar<25
     pbEncounter(EncounterTypes::RockSmash)
  elsif azar>25 && azar<50
     objetos=[PBItems::LEFTOVERS,PBItems::POKEBALL,PBItems::POTION]
      Kernel.pbItemBall(objetos[rand(objetos.length)])
  end
end
Aquí puse que hay 25% que salga encuentro y 25% que te salga objeto, y la variable "objetos" es la lista de posibles objetos.

Espero que te sirva, saludos.
Funciona perfectamente muchas gracias! Solo una cosa.. que controla el porcentaje de la aparicion del pokemon y que la del objeto, por ejemplo si yo quiero poner que solo 10% sean pokemon, el 70% objetos y el 20% que no salga nada como sería? Es que he estado haciendo unas pruebas y tal no me he a quedado del todo claro como es :v
 

Jessie

What goes around, comes around
Usando la variable "azar", esta definida como azar=rand(100), esto quiere decir que el valor de esa variable es un número al azar entre 0 y 100 cada vez que se llama ese evento, así que ese 100 es una aproximación al 100% y abajo en el condicional dice if azar<25 esto quiere decir que si el número generado es menor a 25 osea entre 0 y 24, lo cual es el 25%, mientras el siguiente condicional dice elsif azar>25 && azar<50, esto quiere decir que si el número generado no es menor a 25, entonces revisará si es mayor a 25 y menor a 50, lo cual sería otro 25% aproximadamente, mientras que si sale un número mayor a esa cantidad, nada sucederá ya que no hay condicionales adicionales para esas cantidades.

Así que solo editas los número de azar=rand(100) que será tu valor de 100%, y luego las probabilidades de cada condicional según quieras.

EDITO :

Para que los encuentros salvajes sean 10% y los objetos 70% sería algo así.
Código:
def pbRockSmashRandomEncounter
  azar=rand(100)
  if azar<10
     pbEncounter(EncounterTypes::RockSmash)
  elsif azar>10 && azar<80
     objetos=[PBItems::LEFTOVERS,PBItems::POKEBALL,PBItems::POTION]
      Kernel.pbItemBall(objetos[rand(objetos.length)])
  end
end
 
Última edición:

Morel X

Pues bueno aquí estamosxD
Re: Respuesta: Romper una roca y que te pueda dar un objeto

Usando la variable "azar", esta definida como azar=rand(100), esto quiere decir que el valor de esa variable es un número al azar entre 0 y 100 cada vez que se llama ese evento, así que ese 100 es una aproximación al 100% y abajo en el condicional dice if azar<25 esto quiere decir que si el número generado es menor a 25 osea entre 0 y 24, lo cual es el 25%, mientras el siguiente condicional dice elsif azar>25 && azar<50, esto quiere decir que si el número generado no es menor a 25, entonces revisará si es mayor a 25 y menor a 50, lo cual sería otro 25% aproximadamente, mientras que si sale un número mayor a esa cantidad, nada sucederá ya que no hay condicionales adicionales para esas cantidades.

Así que solo editas los número de azar=rand(100) que será tu valor de 100%, y luego las probabilidades de cada condicional según quieras.

EDITO :

Para que los encuentros salvajes sean 10% y los objetos 70% sería algo así.
Código:
def pbRockSmashRandomEncounter
  azar=rand(100)
  if azar<10
     pbEncounter(EncounterTypes::RockSmash)
  elsif azar>10 && azar<80
     objetos=[PBItems::LEFTOVERS,PBItems::POKEBALL,PBItems::POTION]
      Kernel.pbItemBall(objetos[rand(objetos.length)])
  end
end
Gracias por la explicación, quiero aprender de ti, eres un maquina en esto jajaja
 
Estado
Cerrado para nuevas respuestas.
Arriba