Ir al contenido

Sistema de Subida de Nivel

Sistema de Subida de Nivel

En Wired Code: extra.var_lvlup_system

Coge una variable con valor, la lee como puntos de experiencia y le saca hasta ocho variables nuevas: en qué nivel estás, cuánto llevas del nivel, cuánto te falta y si ya estás al máximo.

Tú guardas una sola cosa —la experiencia— y el complemento calcula el resto en el momento en que se lee. No hay nada que recalcular ni que mantener: sumas XP a la variable de siempre y el nivel sale solo.

Va en la misma baldosa que la caja de la variable, no en la pila donde lo uses. Basta con compartir baldosa, no hace falta que quede justo encima.

La caja tiene que tener valor. Sobre una variable sin valor el complemento no saca nada.

Marcas las que quieras y aparecen como variables normales, listas para usar en cualquier pila. Se llaman como la caja, un punto, y el nombre de la parte: si tu variable se llama exp, marcar “Nivel actual” te da exp.current_level.

En la ventana Se llama Qué te da
Nivel actual current_level El nivel en el que estás ahora
XP actual current_xp La experiencia, igual que la variable de la caja
Nivel de progreso progress Lo que llevas andado dentro del nivel actual
Nivel de progreso % progress_percentage Ese mismo progreso, de 0 a 100
XP total requerido xp_required Lo que cuesta el tramo del nivel actual al siguiente
XP restante xp_remaining Lo que te falta para subir
Está al máximo is_maxed Ver abajo: esta no tiene valor
Nivel máximo max_level El último nivel al que se puede llegar

xp_required es lo que cuesta el tramo, no el total acumulado. Con niveles de 100 en 100 y 500 de experiencia estás en el nivel 6, y xp_required vale 100 —lo que cuesta pasar del 6 al 7—, no 600. Junto a progress y xp_remaining te da la barra de progreso completa sin echar ninguna cuenta.

is_maxed no vale 0 o 1: existe o no existe. Solo aparece cuando has llegado al nivel máximo, así que no la compares con un número — pregúntale a la condición Contiene variable si está. Es la forma de disparar el “¡Nivel máximo!” sin saberte el número del último nivel.

Solo current_xp se puede escribir, y escribirla es escribir la variable de la caja: es el atajo para dar experiencia sin tener que apuntar a la caja. Si la caja es de solo lectura, current_xp ni siquiera aparece.

Ventana de configuración de Sistema de Subida de Nivel

Progreso, que es la curva de niveles. Tres formas de decir cuánta experiencia cuesta cada nivel:

Lineal — cada nivel cuesta lo mismo.

  • Tamaño del paso: la XP de cada nivel (1 a 100000).
  • Nivel máximo: hasta dónde se sube (2 a 100000).

Con paso 100 los niveles caen en 0, 100, 200, 300…

Exponencial — cada nivel cuesta un poco más que el anterior.

  • XP base: lo que cuesta el primer salto (1 a 100000).
  • Factor de incremento (%): cuánto sube cada nivel respecto al anterior (1 a 100000).
  • Nivel máximo: hasta dónde se sube (2 a 100000).

Con base 100 y factor 50, los saltos van creciendo un 50 % cada vez: 0, 100, 250, 475…

Entrada manual — tú pones la tabla. Una línea por nivel, nivel=xp:

5=100
10=500
20=4000

El nivel 1 a 0 XP se da por hecho, no hace falta escribirlo. Los niveles que no pones se reparten a partes iguales entre los que sí: con esa tabla, del 5 al 10 hay 400 XP en cinco saltos, así que el nivel 7 sale a 260. El último nivel de la tabla es el máximo.

Los niveles y la XP tienen que ir subiendo siempre: una línea que baje de nivel o de experiencia invalida la tabla entera. Caben 1000 caracteres.

Vista previa de nivel/xp te enseña los primeros niveles con los números que has puesto, para comprobarlo antes de guardar.

Debajo, Crear subvariables: una casilla por cada una de las ocho. Marcar solo las que vayas a usar mantiene limpia la lista de variables de la sala.

Una sala donde hablar da experiencia y al subir de nivel te felicitan.

La caja de la variable exp (de usuario) va en su pila, con el complemento en la misma baldosa, en modo Lineal, paso 100, nivel máximo 50, y marcadas Nivel actual y XP restante. El primer efecto le da exp a quien aún no la tiene, porque Cambiar valor de variable solo toca a quien ya la tiene.

Pila A
│
├─ Causante: Clave
│ ├─ Escoge el tipo .......................... Coincide con cualquier texto
│ └─ Opciones ................................ ninguna marcada
│
├─ Efecto: Dar variable
│ ├─ Escoge una variable ..................... exp (variable de usuario)
│ ├─ Valor inicial ........................... 0
│ └─ Escoge el objetivo de la variable ....... Usuario desencadenante
│ (sin "Sobreescribir": quien ya la tenga conserva lo suyo)
│
└─ Efecto: Cambiar valor de variable
├─ Escoge una variable ..................... exp (ámbito usuario)
├─ Escoge una operación .................... Suma
├─ Valor de referencia ..................... 10
└─ Escoge el objetivo de la variable ....... Usuario desencadenante
Pila B
│
├─ Causante: Cambio de variable
│ ├─ Escoge una variable ..................... exp.current_level (ámbito usuario)
│ └─ Desencadenar cuando la variable ......... Cambia su valor → Aumentado
│
└─ Efecto: Mensaje
├─ ¿Cuál es el mensaje? .................... "¡Has subido de nivel!"
└─ Visibilidad del mensaje ................. Solo el usuario desencadenante

La pila B no compara nada ni lleva la cuenta: el nivel es una variable como cualquier otra, así que el causante Cambio de variable salta cuando sube. Con las casillas de fábrica también saltaría al crearse la variable y cada vez que cambia la experiencia sin cambiar de nivel (Sin cambios): por eso aquí solo está marcada Aumentado.

Al llegar al máximo no queda tramo. progress, xp_required y xp_remaining se quedan a 0 y el porcentaje a 100. Aparece is_maxed.

La experiencia negativa cuenta como 0. Si la variable se va por debajo de cero, el nivel es el primero.

Las variables que brotan son de la misma clase que la caja. Sobre una caja de usuario salen variables de usuario, sobre una de sala salen de sala. Cada jugador tiene su nivel sin que tengas que hacer nada.

Puedes cambiar la curva cuando quieras. Como el nivel se calcula al leerlo, tocar el paso o el máximo recoloca a todo el mundo en el acto, sin migrar nada.