Registrarse

[RPG - Scripting] Crear nuevo método de evolución

Estado
Cerrado para nuevas respuestas.

Rivi

It was me, Rivi!
¡Buenas! Hoy me ha surgido una duda bastante importante para el desarrollo de mi juego.

Estaba mirando el tema de las evoluciones en la Wiki de Pokémon Essentials, pero no dice nada de cómo crear un método nuevo de evolución, o al menos no lo he mirado bien...

El caso es que quiero saber cómo hacer que un Pokémon que evolucione por intercambio con un objeto pueda evolucionar por una piedra mientras siga manteniendo ese objeto. Os pongo un ejemplo:

Como sabemos, Onix evoluciona a Steelix intercambiándolo con Rev. Metálico equipado.

Lo que yo quiero es que Onix evolucione a Steelix con una piedra especial (que ya tengo configurada) y con Rev. Metálico equipado.

Me ayudaría mucho en el desarrollo de mi juego, muchas gracias ^^
 

Dracrixco

Usuario de oro
Te seré sincero, me llevo tiempo lograrlo porque nunca eh trabajado con ruby, pero la verdad es bastante sencillo de lograr lo que quieres hacer, pero hay unas cuantas cosas que debes de tener en cuenta (la cuales te explicare mas adelante):

Primero: en los scripts que trae essentials hay uno llamado Pokemon_Evolution, en el cual como podras imaginarte, guarda las formas de evolucionar a los pokemon y tendremos que editarlo un poco para lograr insertar otra forma de evolucion.

Ayuda 1.png

En este script veras todas las formas de evolucion que tiene presente essentials, y 4 mas llamadas Custom, utilizaremos una para crear la nuestra, solo cámbiale el nombre.

Ayuda 2.png

También debes de colocarle el nombre en el arreglo de tipo texto que esta un poco mas abajo, y en el arreglo llamado 'EVOPARAM' debes de especificar de que 'tipo' debe de ser el parametro que recibirá, luego en la misma posición que estaba en el arreglo de arriba 'EVONAMES' colocaras el tipo de parámetro que recibe (en nuestro caso como queremos saber que objecto recibirá usaremos el, como puedes ver arriba te dice que representa cada numero).

Ayuda 3.png

Luego de ya definir la existencia de nuestro método, debemos decirle como va a funcionar, mas abajo puedes ver los distintos metodos y basarte en estos para crear los tuyos, ya que por ejemplo en tu caso, lo que quieres es uno que es la combinación de dar un objecto y de que el pokemon lo tenga equipado, asi que puedes tomar de estos 2 para crear el tuyo (como pienso hacer yo), como nosotros también queremos saber el objecto que tendra el pokemon para comparar si es el que especificamos, tendremos que bajar a la siguiente funcion llamada 'pbMiniCheckEvolutionItem', que aparte de tener también los mismos parámetros que 'pbMiniCheckEvolution', agrega también el item, asi que colocamos nuestro método (yo le llame 'CristalOnix') de la siguiente forma:
Ayuda 4.png

Como puedes ver, debemos seguir la misma estructura que los demás y simplemente colocar el nombre de nuestro método de evolución después de los 2 puntos y dentro de este la lógica que llevara a cabo (que te explicare mas abajo), también como puedes observar arriba, el 'custom1' lo elimine, puesto que el espacio donde estaba este ahora sera ocupado por el nuestro (fueron creados para eso, desconozco si se puede agregar mas que 3 nuevos, pero seguramente si).

Ahora la parte que seguramente te interesa, la lógica para determinar si nuestro pokemon cumple con estos requisitos, pues solo compare si 'level', (esto es la parte mas confusa, level hace referencia al 3 parámetro que pasamos en pokemon.pbs, lo digo porque te puedes confundir y pensar que hace referencia al nivel del pokemon, lo que hace referencia al nivel del pokemon es 'pokemon.level') es igual a item (item es el objecto que el entrenador pasa al pokemon, digase piedra fuego, piedra agua, etc...) y otra condición (para eso el &&) es que si el item que tiene equipado el pokemon es igual al que el jugador le pasa puede evolucionar (seguramente tu lo que quieras es que el pokemon evolucion si tiene un 'item x' y le pasas un 'item y', para eso puedes colocar el nombre interno del objecto directamente, ya que en el pokemon.pbs solo se puede pasar un parámetro, se podria configurar para que acepte mas de 2, pero seria mucho trabajo y creo que es mejor que crees otros metodos de evolucion iguales pero dependiendo el objecto), ya lo probé y si funciona.

Datos relevantes:
- en el script 'Pokemon_Evolution' level hace referencia al 3 parámetro que pasas el pbs, y no al nivel del pokemon.
- dure mucho mas tiempo escribiendo y especificando que editando el propio script.
- puedes crear tus propias piedras, solo copia la linea de una en el item.pbs, pegala abajo y cámbiale el id y su nombre interno, lo que determina si es una piedra evolutiva es la combinación de los 3 números finales (o eso tengo entendido).

Realmente es mucho texto para algo muy sencillo, pero trate de ser lo mas especifico posible, puede que se te haga complicado si no sabes sobre ruby, que es el lenguaje que usa para los scrips, o si directamente no sabes nada sobre programación (ya que yo no estudie nada de ruby y resolvi considerablemente rápido tu pedido), si aun asi lo ves muy dificil no te preocupes, tratare de crear un tutorial un poco mas detallado y resumido en un futuro, pero si no lo logras te recomiendo que dejes los métodos de evolución para después y continúes tu juego.
 

Rivi

It was me, Rivi!
Oh, ya veo. No entiendo mucho sobre Ruby, pero me acerqué mucho a escribir lo que aparece en tu script por intuición.

Por lo que veo, ¿esto sólo funcionaría con un único Pokémon? Porque la piedra que tengo ya insertada es una piedra que hace evolucionar a los Pokémon que evolucionan al intercambiarlos, y hay varios Pokémon como Onix, Magmar, Electabuzz y demás que necesitan objetos distintos.

Si es así, usaré la piedra nada más y así no me complico la vida.

De todas maneras, muchísimas gracias, ¡me has sacado de un apuro!
 
Estado
Cerrado para nuevas respuestas.
Arriba