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.
Cómo funciona
Sección titulada «Cómo funciona»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.
Las variables que brotan
Sección titulada «Las variables que brotan»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.
Configuración
Sección titulada «Configuración»
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=10010=50020=4000El 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.
Ejemplo
Sección titulada «Ejemplo»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 desencadenantePila 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 desencadenanteLa 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.