Registrarse

[Script] [Script|¡¡Más funciones!!]Evaluar Equipo[RMXP]

enanogm

Usuario antiguo de Wah
Buenas!

Quiero compartir este script sencillo que hice para verificar algunas cosas del equipo pokémon del personaje.

El script no es largo, es fácil de entender y más fácil todavía usarlo.​

Aquí el código
Código:
# Script que analiza algunos datos sobre el equipo pokémon del personaje.
# By enanogm

# Dice cuántos pokémon hay en el equipo.
# Para usar: 'Llamar Script' y escribir 'sizeEquipo'
def sizeEquipo
  resultado=_ISPRINTF("Tienes {1:d} Pokémon en tu equipo",$Trainer.party.length)
  Kernel.pbMessage(_INTL(resultado))
end

# Calcula el nivel promedio del equipo.
# Para usar: 'Llamar Script' y escribir 'promedioEquipo'
def promedioEquipo
  equipo=$Trainer.party.length
  nivel=0
  for i in 0...equipo
    nivel += $Trainer.party[i].level
  end
  resultado=_ISPRINTF("El Nivel promedio de tu equipo Pokémon es {1:d}",nivel/equipo)
  Kernel.pbMessage(_INTL(resultado))
end

# Calcula la felicidad promedio del equipo.
# Para usar: 'Llamar Script' y escribir 'felicidadEquipo'
def felicidadEquipo
  equipo=$Trainer.party.length
  felicidad=0
  for i in 0...equipo
    felicidad+=$Trainer.party[i].happiness
  end
  niveles=["¡Terrible!", "Mala", "Regular", "Buena", "Muy buena", "¡Excelente!"]
  resultado=_ISPRINTF("La Felicidad promedio de tu equipo Pokémon es {1:s}",niveles[felicidad/50])
  Kernel.pbMessage(_INTL(resultado))
end

# Identifica al pokémon con mayor nivel del equipo.
# Para usar: 'Llamar Script' y escribir 'nivelMax'
def nivelMax
  equipo=$Trainer.party.length
  nivel=$Trainer.party[0].level
  masFuerte=0
  if(equipo>1)
    for i in 0...equipo
      if nivel < $Trainer.party[i].level
        nivel = $Trainer.party[i].level
        masFuerte=i;
      end
    end
    resultado=_ISPRINTF("Tu pokémon de mayor nivel es {1:s} con nivel {2:d}",$Trainer.party[masFuerte].name,nivel)
  else
    resultado=_ISPRINTF("Tu pokémon de mayor nivel es {1:s} con nivel {2:d}",$Trainer.party[0].name,nivel)
  end
  Kernel.pbMessage(_INTL(resultado))
end

# Verifica si en el equipo hay por lo menos un pokémon con el tipo elemental
# especificado, sea el primario o secundario.
# Para usar: 'Condiciones y efectos', elegir 'Script' en la 4º pestaña y
# escribir 'tieneTipo("FIRE")==true'. Sustituir por FIRE el tipo que se quiere
# comprobar.
def tieneTipo(tipo)
  for i in 0...$Trainer.party.length
    if tipo.is_a?(String)
      if $Trainer.party[i].hasType?(tipo)
        return true
      end
    else
      Kernel.pbMessage(_INTL("Lo siento, ese no es un tipo elemental."))
    end
  end
  return false
end

# Encuentra al pokémon con mejor stat
# Para usar: 'Llamar Script' y escribir 'mejorStat("stat")'
# Entre las comillas, escribir el nombre del stat a analizar:
# Puntos de Salud: totalhp
# Ataque: attack
# Defensa: defense
# Velocidad: speed
# Ataque Especial: spatk
# Defensa Especial: spdef
def mejorStat(stat)
  if stat.is_a?(String)
    masAlto=0
    pokemon=0;
    if stat=="totalhp"
      masAlto=$Trainer.party[0].totalhp
      for i in 0...$Trainer.party.length
        if masAlto < $Trainer.party[i].totalhp
          masAlto=$Trainer.party[i].totalhp
          pokemon=i;
        end
      end
    resultado=_ISPRINTF("Tu pokémon con mejor PS es {1:s} con {2:d} pts.",$Trainer.party[pokemon].name,masAlto)
    Kernel.pbMessage(_INTL(resultado))
    elsif stat=="attack"
      masAlto=$Trainer.party[0].attack
      for i in 0...$Trainer.party.length
        if masAlto < $Trainer.party[i].attack
          masAlto=$Trainer.party[i].attack
          pokemon=i;
        end
      end
    resultado=_ISPRINTF("Tu pokémon con mejor Ataque es {1:s} con {2:d} pts.",$Trainer.party[pokemon].name,masAlto)
    Kernel.pbMessage(_INTL(resultado))
    elsif stat=="defense"
      masAlto=$Trainer.party[0].defense
      for i in 0...$Trainer.party.length
        if masAlto < $Trainer.party[i].defense
          masAlto=$Trainer.party[i].defense
          pokemon=i;
        end
      end
    resultado=_ISPRINTF("Tu pokémon con mejor Defensa es {1:s} con {2:d} pts.",$Trainer.party[pokemon].name,masAlto)
    Kernel.pbMessage(_INTL(resultado))
    elsif stat=="speed"
      masAlto=$Trainer.party[0].speed
      for i in 0...$Trainer.party.length
        if masAlto < $Trainer.party[i].speed
          masAlto=$Trainer.party[i].speed
          pokemon=i;
        end
      end
    resultado=_ISPRINTF("Tu pokémon con mejor Velocidad es {1:s} con {2:d} pts.",$Trainer.party[pokemon].name,masAlto)
    Kernel.pbMessage(_INTL(resultado))
    elsif stat=="spatk"
      masAlto=$Trainer.party[0].spatk
      for i in 0...$Trainer.party.length
        if masAlto < $Trainer.party[i].spatk
          masAlto=$Trainer.party[i].spatk
          pokemon=i;
        end
      end
    resultado=_ISPRINTF("Tu pokémon con mejor At. Especial es {1:s} con {2:d} pts.",$Trainer.party[pokemon].name,masAlto)
    Kernel.pbMessage(_INTL(resultado))
    elsif stat=="spdef"
      masAlto=$Trainer.party[0].spdef
      for i in 0...$Trainer.party.length
        if masAlto < $Trainer.party[i].spdef
          masAlto=$Trainer.party[i].spdef
          pokemon=i;
        end
      end
    resultado=_ISPRINTF("Tu pokémon con mejor Df. Especial es {1:s} con {2:d} pts.",$Trainer.party[pokemon].name,masAlto)
    Kernel.pbMessage(_INTL(resultado))
  else
    Kernel.pbMessage(_INTL("Lo siento, ese no es un stat válido."))
  end
  else
    Kernel.pbMessage(_INTL("Lo siento, ese no es un stat válido."))
  end
end
Para usarlo, sólo hay que hacer lo siguiente:
En un evento, utilizar el comando "Llamar Script" y escribir el nombre de la función que se quiera utilizar, nada más; el script se encargará de arrojar el resultado en un cuadro de texto como si fuera la respuesta de un NPC.

Código:
 - Evaluar Tamaño del Equipo: "sizeEquipo"
 - Evaluar Nivel Promedio: "promedioEquipo"
 - Evaluar Felicidad Promedio: "felicidadEquipo"
 - Evaluar Mejor Nivelado: "nivelMax"
 - Verificar Tipo: "tieneTipo("tipo")"; utilizar nombres internos de tipos
 - Evaluar Mejor Stat: "mejorStat("stat")"; utilizar nombre de atributo
La idea sería agregarle algunas funciones... en algún futuro no muy lejano XD



Actualización 22 de Julio 2016​
Dos nuevas funciones

"tieneTipo(tipo)" para verificar si hay un pokémon que contenga el tipo elemental especificado, sea el primero o segundo tipo.

"mejorStat(stat)" para evaluar cuál tiene stat más elevado.

Además, corregí el método que busca al mejor nivelado, que tenia un error en el ciclo for.


Espero les sirva!
Créditos son apreciados pero no necesarios, solo no digas que lo hiciste tú :)


Un saludo!
 
Última edición:

Kurama

Usuario mítico
Respuesta: [Script]Evaluar Equipo[RMXP]

Hey muchas gracias!
Este Script me dio algunas ideas bastante interesantes haha
Muy bueno, definitivamente te dare creditos! sigue con mas scripts!
 

argomii

Cronista del sufrimiento
Respuesta: [Script]Evaluar Equipo[RMXP]

Esta muy bien este script. Te lo agradezco mucho^^
 

David Phunir

Usuario de platino
Re: [Script]Evaluar Equipo[RMXP]

Excelente aporte!
¿Se podrá evaluar otro parametro? Por ejemplo, el pokemon con más ataque especial o cosas así?
 

enanogm

Usuario antiguo de Wah
Respuesta: Re: [Script]Evaluar Equipo[RMXP]

Excelente aporte!
¿Se podrá evaluar otro parametro? Por ejemplo, el pokemon con más ataque especial o cosas así?

¡Claro que sí! :)

Mira, acabo de agregar dos funciones: una es para verificar si en el equipo pokémon hay por lo menos uno con el Tipo Elemental pasado por parámetro. En los comentarios del código hay un ejemplo de uso.
La otra es lo que pedís: busca al que tiene mejor stat, también pasado por parámetro. En los comentarios del código está explicado cómo pasarle el stat que se quiere buscar.


Espero les sirvan a todos los que lo usen! :blush:
Reportar errores/bugs


un saludo!
 
Muy buen aporte, me lo guardo porque puede serme de mucha ayuda en un futuro, un saludo y gracias!
 

Kaiser de Emperana

Called in hand
Respuesta: Re: [Script|¡¡Más funciones!!]Evaluar Equipo[RMXP]

Me arroja error el sizeEquipo :/

Se ve que enanogm se confundió al escribir el post, o pensó en cambiar el nombre de la función y luego no lo hizo xD.

Básicamente la función tiene un nombre distinto al con el cual la estas llamando.

Tenes dos soluciones:
- Editar el script donde dice:
def evaluarEquipo
Y poner:
- O al hacer el Llamar script, en vez de llamar a "sizeEquipo", llamar a "evaluarEquipo".

Elegí el nombre que más te guste xD
 
BUEN aporte pero COMO IDEA y remarco idea se podria modificar para que alterara los eventos como

un entrenador con el que no puedas luchar con pk de tipo x

o un bloqueo que no te permita pasar asta que el premedio de tu equipo sea x


pero bueno no soy ingeniero informatico

entiendo si es dificil:blush:
 
Arriba