Últimos temas
» [ACE] Chaos of Destiny
por mdk3dd Hoy a las 7:17 pm

» [XP] THE LEGEND OF THE CROWNS: Looking Across the Time
por Fiquei Ayer a las 8:45 pm

» [ACE] Script CSCA Skill Shop (Tienda de habilidades)
por NinjaLOL Ayer a las 8:25 pm

» me sale error de script en Ace
por NinjaLOL Ayer a las 8:39 am

» Pedido (Script) visualizar armas lateral RPGMK MV
por raffael_0 Dom Nov 18, 2018 4:34 pm

» [Publicidad] Chaos of Destiny
por Turbiosoft.acho Dom Nov 18, 2018 1:34 pm

» Quitar el logo del Mv
por Narsil40 Sáb Nov 17, 2018 11:24 pm

» Cadena de Acciones
por Rodriguez Sáb Nov 17, 2018 9:46 am

» Curse Of Gabriel 1
por Narsil40 Vie Nov 16, 2018 5:54 pm

» [VX/Ace] Characters de monstruos del XP
por DOM438 Vie Nov 16, 2018 9:06 am

» respecto al script "algo" especial...
por mdk3dd Vie Nov 16, 2018 6:47 am

» Un script "algo" especial
por Zachy Vie Nov 16, 2018 2:48 am


[ENGINE] Enhanced INN: posadas en esteroides

Ir abajo

[ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Frägarach el Dom Jun 03, 2018 9:22 am


¡Hola, querido visitante! Bienvenido a este humilde post. En este veremos un acercamiento poco convencional a: las posadas.
Es extremadamente común ver en los rpg’s (y más aún los de la comunidad maker) el funcionamiento de las posadas (o INN, en inglés): vas, te cobran algo de dinero (obviamente con el mismo texto autogenerado), la pantalla desvanece, suena una musiquita, ¡y violá! Tu party se ha curado por completo mágicamente.
Pero honestamente, este sistema me parece bastante aburrido y le quita algo de… emoción, digámoslo de alguna manera.
Así que, en lugar de que la posada sea ese lugar místico que puede curar todos los estados e incluso la muerte, esta sólo se limitará a un simple lugar de descanso.
PLANTEAMIENTO
Definamos por partes qué es exactamente lo que queremos lograr:
-         El estado de “Knockout” (o muerte; como lo definas en tu juego) NO debe de ser sanado. Es decir, no deben de curarse los aliados caídos y deben permanecer así.
-         Hay estados alterados que, de igual forma, no deben de ser sanados.
Una vez definido lo que vamos a necesitar, ahora veamos por dónde atacar el problema.
Un primer pensamiento podría ser guardar la vida máxima de los personajes en variables, y regenerar dicha vida solo manipulándolas; pero esto no es posible ni por condicionales ni por eventos en general.
Entonces, ¿qué hacer? La respuesta es jugar con la opción de agregar y quitar personajes.
Vamos a trabajar, entonces.
PROCEDIMIENTO
Para comenzar, creemos un nuevo evento común en la base de datos. Se añaden estos dos comandos al inicio:
Estableciendo los personajes activos y sus estados
Crearemos tantas derivaciones condicionales como personajes en nuestra base de datos tengamos. Por ejemplo, si actualmente estoy usando 3 personajes, haré tres derivaciones. Si tu juego tiene hasta 10 personajes jugables, harás 10 derivaciones.
Cada derivación deberá preguntar si X personaje está en el equipo. La casilla crear otra derivación NO debe estar tildada.
Las derivaciones estarán apiladas una tras otra, hasta tener a todos los personajes revisados.
Dentro de cada derivación, declararemos un nuevo interruptor que declare que el personaje está en la party. Esto refiere a los miembros activos en el juego. Más tarde veremos la razón de este interruptor.
Luego de que ese interruptor está declarado como activo, crearemos tantas derivaciones condicionales como estados alterados NO queramos que se curen. Por ejemplo, en mi proyecto hay un grupo de estados alterados que se remueven después de terminada la batalla; entonces, los que no se remuevan, tendrán que ser registrados en interruptores.
Creamos una derivación condicional preguntando si X actor está afectador por Y estado. La casilla Crear otra derivación debe estar debe estar tildada.
Entonces, para el caso de que se cumpla, declararemos un interruptor que declare que el personaje tiene Y estado. Para el caso en que no se cumpla, ese mismo interruptor debe estar apagado.
Y así crearemos tantas derivaciones como estados queramos. En mi caso, actualmente solo 3 estados no se quitan normalmente al terminar una batalla, así que el evento común quedaría así:
Haremos lo mismo para los personajes restantes.
El truco agregar/remover actores
Abramos una derivación condicional que pregunte si X personaje está en la party. La casilla crear otra derivación no debe estar tildada. Dentro de esta, debemos crear una derivación que pregunte si X personaje está afectado por knockout o el estado que tengas para la muerte de tu personaje. La casilla crear otra derivación tampoco debe estar tildada.
Dentro de esta segunda derivación, como muestra la imagen, debemos remover X personaje temporalmente. Esto es para que, luego de usar el comando Recuperar todo: Todo el equipo, los personajes que estén fuera de combate (HP = 0) NO se curarán, permaneciendo incapacitados.
Luego de repetir este proceso para cada personaje, agregamos las siguientes opciones:
Devolviendo los personajes activos y sus estados
Creamos una derivación condicional que pregunte si X personaje está en el equipo; la casilla crear otra derivación sí debe estar tildada.
En caso de que sí, X personaje esté en el equipo, crearemos tantas derivaciones condicionales como estados alterados que no deben ser removidos tengamos. Por ejemplo, esta es mi condicional activa para Viktor:
Ahora, ¿recuerdan aquellos interruptores que registraban en un inicio si X o Y personaje estaba en la party? Pues, este es el motivo: el juego deberá añadir a los personajes que estaban desde un inicio. Como el evento común está trabajando con todos los personajes en la base de datos, se deberá evitar que se añadan todos los personajes. En la segunda parte de la condicional de si X personaje está en la party (o sea, en caso de que no se cumpla la condición), abrimos otra condicional y preguntamos si el interruptor que registra si un personaje está en party está activado. La casilla de crear otra derivación no debe estar tildada.
Como pudieron ver en la última imagen, la primera parte de la condicional revisaba si X personaje estaba afectado por Y cantidad de estados; si es así, pues, se le devuelve dicho estado.
El contenido de la segunda parte de la condicional debe ser exactamente el mismo.
Una vez terminados de programar todos los personajes de la base de datos, añadimos este último comando (fundir pantalla), y habremos terminado con el evento común.
Probando el evento común en una posada
Creamos un NPC que funcione a manera de dependiente. Le atiende al jugador y le pregunta si va a hospedarse por X monedas.
Cuando el jugador responda positivamente, abrimos una condicional que revise si se cumple con el precio mínimo. Si se cumple, entonces restamos X cantidad de oro y ejecutamos el evento común que programamos.
Anotaciones
-         El sistema ha sido debidamente probado durante un par de horas. Si alguien encuentra algún error, por favor, agradecería que lo comunique.
También puedes conseguir la versión PDF de este post aquí.


------------------------------------------------------------------------------
Y eso ha sido todo por este tutorial. ¡Hasta la próxima!
------------------------------------------------------------------------------
avatar
Frägarach
PJ de Quest
PJ de Quest

Masculino
Perú
RPG Maker : MV
Mensajes : 39
Monedas : 717
Reputación : 7
Edad : 19

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Muzgar el Dom Jun 03, 2018 1:42 pm

Muchísimas gracias por el aporte Blah.

La verdad es que es bastante útil. Como bien dices muchas veces no interesa que la posada te quite todos los estados alterados por ejemplo o incluso te "reviva". Aunque eso nos quite momentos épicos como:

"Se nos ha muerto Billy! -No pasa nada, fue durante un combate, una siesta y como nuevo -Y han apuñalado a Timmy! -OH DIOS MÍO FUE DURANTE UNA CG! ESTÁ PERDIDO!"

Bromas aparte está bastante interesante lo que nos planteas, si lo juntas además con un engine que dependiendo del número de miembros que haya en la party te cobren una cantidad u otra entre otros posibles sistemas... te queda un sistema de posadas muy currado.

Cuando pueda lo pruebo que no he tenido tiempo (Lo acabo de ver xD) Lo que me preocupa un poco es... cuanto tiempo tarda en curarse? Ya que tiene que hacer todo el proceso de sacar y meter a cada personaje en la party. Y otra cosa... igual lo he entendido mal, le echaré otro vistazo ahora, pero... es necesario quitar a los que están afectados con "Knockout" fuera de la party? No se puede conseguir el mismo resultado tratándolo como un estado alterado como veneno? En plan: Después de curarlos a todos compruebas, estaba muerto el personaje? Sí, Pues le metemos de nuevo muerte" (Si lo piensas sería algo cómico el te curo todo... Uy espera, en la ficha pone que estaba muerto, puñalada en el pecho antes de despertarlo)

Estoy hablando un poco sin saberr ya que no he comprobado nada aún y como he dicho lo he mirado por encima.

Muchas gracias por el aporte, seguramente lo ponga en práctica en mi propio proyecto.

Un saludo ^^

_________________
Apoya wild wars poniendo esta barra en tu firma


Muzgar apoya a...
Spoiler:

avatar
Muzgar
Admin
Admin

Rmakercom
RPG Maker : Ace
Mensajes : 1293
Monedas : 1406
Reputación : 155

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Frägarach el Dom Jun 03, 2018 5:50 pm

@Muzgar escribió:Cuando pueda lo pruebo que no he tenido tiempo (Lo acabo de ver xD) Lo que me preocupa un poco es... cuanto tiempo tarda en curarse? Ya que tiene que hacer todo el proceso de sacar y meter a cada personaje en la party. Y otra cosa... igual lo he entendido mal, le echaré otro vistazo ahora, pero... es necesario quitar a los que están afectados con "Knockout" fuera de la party? No se puede conseguir el mismo resultado tratándolo como un estado alterado como veneno? En plan: Después de curarlos a todos compruebas, estaba muerto el personaje? Sí, Pues le metemos de nuevo muerte" (Si lo piensas sería algo cómico el te curo todo... Uy espera, en la ficha pone que estaba muerto, puñalada en el pecho antes de despertarlo)

Se podría hacer lo mismo que cuando hice el interruptor para detectar si X personaje está en la party activa; al final es exactamente lo mismo solo que, aparentemente, menos laborioso. Gracias por la idea, es bastante eficiente xD.


Sobre el tiempo de cura, todo pasa en esos 300 segundos de retraso en que suena la música de curación, así que no hay mayor problema.
avatar
Frägarach
PJ de Quest
PJ de Quest

Masculino
Perú
RPG Maker : MV
Mensajes : 39
Monedas : 717
Reputación : 7
Edad : 19

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Ledai el Miér Jun 06, 2018 5:18 pm

Ehy! Buen aporte!! Viendo esto se me ha ocurrido algo (Es algo que uso en mi proyecto para curar solo los estados que me interesan de un golpe en cada momento)

No sé si en otros maker se puede hacer.. pero en el XP puede configurar un estado alterado que suprima el resto de estados alterados; usando esa función, podría configurarse un estado llamado: "dormir en posada" que reste todos aquellos estados se puedan curar en la posada. (Por ejemplo, puede curar "veneno" pero no "muerte") De ese modo con solo ponérselo a los personajes al dormir ahorrarías tener que hacer comprobaciones repetidas de curar o no curar si tiene tal estado, luego solo es cuestión de quitarles el estado "dormir en posada" y se supone que estaría listo...

Muchas gracias por el tuto!!


Última edición por Ledai el Miér Jun 06, 2018 5:20 pm, editado 1 vez
avatar
Ledai
PJ de Relleno
PJ de Relleno

Rmakercom
RPG Maker : Xp
Mensajes : 28
Monedas : 46
Reputación : 6

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Muzgar el Jue Jun 07, 2018 11:01 am

Grandísima idea Ledai, la verdad es que nunca se me había ocurrido. Según lo comentaste fui directo a comprobar si se podía hacer en el MV... pero no vi forma de hacerlo como lo comentaste. En el VX/Ace no lo he comprobado.

Lo que sí me he dado cuenta de algo... Hay un comando que es "cambiar estado" en dónde puedes quitar (o añadir, pero no nos interesa ahora xD) el estado que quieras y tiene la opción de hacerlo a todo el grupo. Por lo que... lo que se puede hacer es añadir esa opción con los estados que quieras quitar, luego le pones el comando de "Cambiar PV" a todo el grupo, poniendolo a 9999 para curar al máximo a todos y lo mismo con los PM. Añades el "Fade in/fade out" con los 300 frames, la cancioncita y... listo, tienes a todos curados de maná y vida además de que has quitado sólo los estados que te interesan.

Quedaría algo así (En este caso he quitado "sueño y confusión, por poner algo):

Spoiler:

De esta forma te evitas la creación de todas las variables e interruptores y te quedas sólo con un evento común con unos cuantos comandos.

No he hecho muchas pruebas aún pero creo que con eso se conseguiría lo que se buscaba en un principio, corregidme si me equivoco por favor. De funcionar... siento mucho haber simplificado tantísimo el engine que tanto te has currado ^^" realmente me ha gustado mucho y por ello le dediqué tiempo, nunca se me habría ocurrido si no fuese por vosotros dos.

De verdad, muchísimas gracias por todo Blah. Ha sido un gran aporte y espero que esto sirva para animarte a publicar más aportes.

Un saludo

_________________
Apoya wild wars poniendo esta barra en tu firma


Muzgar apoya a...
Spoiler:

avatar
Muzgar
Admin
Admin

Rmakercom
RPG Maker : Ace
Mensajes : 1293
Monedas : 1406
Reputación : 155

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Ledai el Jue Jun 07, 2018 6:06 pm

Yo me refiero a la base de datos en la pestaña estados:



Al menos en el XP se pueden configurar estados que supriman a otros ciertos estados; tal vez eso si se pudiera aplicar simplificaría más las cosas.
avatar
Ledai
PJ de Relleno
PJ de Relleno

Rmakercom
RPG Maker : Xp
Mensajes : 28
Monedas : 46
Reputación : 6

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Muzgar el Jue Jun 07, 2018 8:15 pm

Sí, te había entendido perfectamente. Me expresé yo mal en ese punto xD La cosa es que no encontraba como hacerlo, no vi la opción para hacer lo que decías en el MV.

Pero he hecho varias pruebas más (No me llevo muy bien con el MV, aún estoy aprendiendo y no encuentro la mitad de las cosas) y sí se puede! *fanfarria* xD El comando "Resistir estado" también los quita. Por lo que efectivamente puedes crear un estado que quite los estados que quieras y luego quitar este estado.

El estado quedaría de esta forma

Spoiler:

Y la "posada" así

Spoiler:

Lo que no he conseguido es que el estado también curase xD pero bueno supongo que se entiende.

Al final a lo tonto ha quedado muy optimizado y reducido, gracias Ledai por la sugerencia y Blah por la idea y el tutorial. Da gusto trabajar entre todos ^^

_________________
Apoya wild wars poniendo esta barra en tu firma


Muzgar apoya a...
Spoiler:

avatar
Muzgar
Admin
Admin

Rmakercom
RPG Maker : Ace
Mensajes : 1293
Monedas : 1406
Reputación : 155

Volver arriba Ir abajo

Re: [ENGINE] Enhanced INN: posadas en esteroides

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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