Pregunta

Tengo un código que genera la experiencia total del jugador.

El problema es que el valor XP que genera no cambia si el XP real lo hace. Por ejemplo, en el nivel 50,000, el XP fue de 2,147,483,647. Cuando el nivel cayó a 4, el valor de XP permaneció igual.

if (cmd.getName().equalsIgnoreCase("checkxp")) {
    // If person is null, it's not a player!
    if (person == null) {
        sender.sendMessage("This command can only be used by a player, sorry!");
        return false;
    } else {
        int curxp;
        Player player = (Player) sender;
        curxp = player.getTotalExperience();
        sender.sendMessage("You currently have: " + curxp + " XP!");
        return true;
    }
}

¿Cómo hago que este valor se reinicie después de que se ejecuta para que vuelva a verificar el XP y actualiza la variable con la nueva cantidad?

¿Fue útil?

Solución

Mirando expasiones de expiencias, parece que jugar con experiencia en lugar de niveles es el camino a seguir.

Así que usa setTotalExperience() y getTotalExperience() por ahora.

Una vez que haga que todo funcione, intente agregar soporte para los niveles. ¿Tal vez hay un convertidor en algún lugar para convertir los niveles para experimentar y experiencia a niveles? Si no, aquí están el gráficos de conversión.

Otros consejos

Si no actualiza su Player objeto que parece que viene de sender contendrá los valores antiguos, así que verifico eso sender está entrando con nuevos datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top