Últimos temas
» 3ºC vs Kursaal (RPG2000) (Terminado)
por rpgero Hoy a las 4:54 pm

» [VXACE] Las Esferas de Capricornia. Actualizado 06.12.17
por Pocari Ayer a las 11:34 am

» No se ven/ejecutan eventos
por Pokefanmati Dom Dic 10, 2017 8:22 pm

» [ACE] El secreto de la estrella perdida
por TheHeroZX Mar Dic 05, 2017 7:28 pm

» Demo "Oblitian: La Búsqueda" (2017) [VxAce]
por Invark Lun Dic 04, 2017 4:07 am

» Procesos automáticos bloquean el movimiento de mi personaje
por KRiZaLiD Lun Dic 04, 2017 3:15 am

» las armas inferno(demo)
por conor Dom Dic 03, 2017 9:23 pm

» Pongámosle un Mote a nuestro Limo
por Stainler Dom Dic 03, 2017 5:01 am

» Transforma tus charas pequeños a grandes
por Chaskarron Sáb Dic 02, 2017 12:47 pm

» Concurso de screens - Diciembre 2017 [Convocatoria]
por Vesper Vie Dic 01, 2017 10:25 pm

» Saint Seiya Genesis
por Juanjo Vie Dic 01, 2017 1:51 am

» Montura para vx ace?
por Pokefanmati Jue Nov 30, 2017 11:47 pm


Tutorial: Desglose de números | Mostrar valores mediante imagenes

Ver el tema anterior Ver el tema siguiente Ir abajo

Tutorial: Desglose de números | Mostrar valores mediante imagenes

Mensaje por InvariableZ el Miér Oct 26, 2016 9:11 pm




(Faye Valentine es otro de mis nicks, y es el que utilizo en UM, donde he publicado el tutorial primeramente)

Nivel: Alto





Introducción: ola wapos xd






En este tutorial aprenderéis a, primero, como tomar un valor, cualquier cantidad, y separar cada uno de sus números. Eso quiere decir que si tenéis el valor 5497, será separado en cuatro variables que registrarán la unidad de mil, la centena, la decena y la unidad, es decir, el 5 = unidad de mil, 4 = centena, 9 = decena y 7 = unidad. Este tutorial os enseñará a, además, separar cada número no importa cuántos tenga el valor, el número puede ser 97893242 que igual podréis separar todos los números, esto claro si aplicáis lo que os enseño correctamente. Yo en este tutorial solo abarcaré hasta la unidad de mil.

Esto es útil para muchísimas cosas, un sinfín, pero es especialmente necesario para mostrar valores (digamos, la vida del PJ) mediante imagenes. ¿Cómo le dices al programa que te muestre una imagen por cada número del valor que deseas? Si la vida de tu PJ es de, digamos, 3900, no harás 3900 imágenes para mostrar 3899, 3898, 3897... etcétera. La única forma viable de hacerlo es hacer solo 10 imagenes, del 0 al 9, y que según cada valor individual mostrar su respectiva imagen. Creo que ya me explico lo suficiente. Vayamos a la acción.



Paso 1: Desglose de números



Crearemos cinco variables.

  1. Valor
  2. Unidad
  3. Decena
  4. Centena
  5. Milésima

(< le llamo así porque es más corto que unidad de mil)

Ahora tenemos dos opciones. Haremos cuatro eventos comunes, o cuatro eventos en el mapa. Yo trabajaré con eventos en el mapa por motivos de simpleza. Uno u otro no afectará en nada el resultado, solo que en el evento común tendrás que crear un switch para activarles (puede ser uno solo para los 4).

El primer evento común será la unidad. Por cierto, por -nuevamente- motivos de simpleza, yo utilizaré la vida (actual) del PJ como valor.


Lo siguiente que haremos será hacer otra operación de variables abajo de la que hemos creado, la variable a utilizar será nuevamente Valor. La operación es la siguiente.


Os presento a un amiguito que pocos conocen. Se llama la operación de "Mod." o no sé como se llame en español, pero su función es dividir un valor por un operando y guardar el resto en vez del cociente. Familiarizaros, lo usaremos constantemente.

Finalmente asignaremos a la variable Unidad el valor que variable Valor tenga.


El resultado debería lucir de tal manera:


Terminamos con las unidades. Ahora vamos a la decena, donde se complica un poco. Miento, es bastante fácil =P.

Volvemos a asignar a la variable Valor el HP del PJ. Aplicamos Mod. a Valor esta vez por 100. 


Ahora asignamos a la variable Decena el valor de la variable Valor, y ahora, en otra operación de variables, divideremos a Decena, NO a Valor, por 10.


Y así sacamos la decena. Ahora el paso para centena, milésima, diezmilésima o cuantas extensiones queráis, es el mismo que acabáis de ver de decena, simplemente añadiremos cuantos ceros cuan grande sea el número que queremos extraer. Es decir:

Centena: Mod. 1000 | Div. 100
Milésima: Mod. 10000 | Div. 1000
Diezmilésima: Mod. 100000 | Div. 10000
Cienmilésima: Mod. 1000000 | Div. 100000


Recordad que cada evento de extracción será SEPARADO. Si es por eventos, tendrán que ser 3 en caso de centena, 4 en caso de milésima y así sucesivamente, y lo mismo para eventos comunes. Cada uno en su respectivo sitio y no todas las operaciones en un solo evento/evento común porque no funcionará.



Parte 2: Muestra de imagenes



Aquí entra la parte más simple, sin embargo la más engorrosa. Habremos tenido que crear diez imagenes, del cero hasta el nueve. Una vez creadas tendremos que crear diez condiciones y efecto, cada una evaluando si Unidad (en el caso de unidad) es igual a cero, es igual a uno, es igual a dos, etcétera. El proceso es el mismo para decena, para centena y para todas las demás.

Debería lucir así.


Nuevamente, un evento/evento común por cada extensión (uno para unidad, uno para decena... ya sabéis el rollo lol)



Bonus: eliminar ceros a la izquierda



Como extra quería enseñar también como eliminar ceros a la izquierda. Es decir, si tienes 5389 de vida y sufriste daño y ahora estás a 499, mostrar 499 en vez de 0499. De tal forma que se cambie dinámicamente. Aplica también para cuando el PJ suba de vida por nivel, así, si es nivel 1 y tiene 100 de vida, no mostrar 00100 de vida porque cuando sea nivel 50 tendrá 11000, ¿me explico? Crearemos un switch para evaluar cada extensión, excepto la unidad.

La extensión más grande, que en mi caso es la diezmilésima (ya si vuestros personajes o valor puede llegar a cienmil o más colocaréis su debida extensión en vez) será la que esté en el tope. Esta condición y efecto solo evaluará si es cero o no. En caso de ser cero apagará el switch de su extensión (yo le he llamado Act. Diezmilésima) y eliminará el ID de la imagen que utiliza el evento de diezmilésima para mostrarse (en el evento no está el comando de eliminar porque no he utilizado diezmilésima para el sistema).

Las siguientes otras extensiones seguirán un patrón. Será de tal manera: 


Si: EXTENSIÓN SUPERIOR es igual a: CERO; evaluar: Si: EXTENSIÓN ACTUAL es igual a: CERO: apagar switch, eliminar picture; Caso contrario: encender switch.


EXTENSIÓN SUPERIOR: la extensión que está después de la cual estamos regulando. Si estamos regulando la milésima, su superior inmediata es la diezmilésima. Si estamos regulando la centena, su superior inmediata es la milésima. Ya me entendeis.
EXTENSION ACTUAL: la extensión a regular. Sea diezmilésima, milésima, centena o decena.

Para que os ilustréis mejor:




El siguiente paso es el más simple. Nos iremos a cada evento de mostrar imagen de cada extensión y les modificaremos:

En el caso de eventos: colocar como condición de inicio que esté el switch de su extensión (si es centena, Act. Centena, por ejemplo) esté encendido. 
En el caso de eventos comunes: colocar una condición y efecto que evalúe si el switch de su extensión esté encendido. Colocar todo el contenido dentro.




Créditos: no necesarios

*Este tutorial fue creado en el RPG Maker VX Ace, pero funciona para todas las versiones del RPG Maker.

*¿Desearías tener el proyecto para mirar las cosas desde dentro? Házmelo saber y con gusto lo subiré.
avatar
InvariableZ
PJ de Relleno
PJ de Relleno

Venezuela
RPG Maker : Ace
Mensajes : 27
Monedas : 764
Reputación : 21

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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