Question

J'ai un morceau de code qui génère l'expérience totale du joueur.

Le problème est que la valeur XP, il émet ne change pas si le XP réelle fait. Par exemple, au niveau de 50 000 le XP était 2147483647. Lorsque le niveau est tombé à 4, la valeur de XP est resté le même.

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;
    }
}

Comment puis-je obtenir cette valeur pour réinitialiser après avoir été RAN il revérifie l'XP et met à jour la variable avec le nouveau montant?

Était-ce utile?

La solution

En regardant ExpSkills, il semble que le jeu avec l'expérience plutôt que de niveaux est la voie à suivre.

Il faut donc utiliser setTotalExperience() et getTotalExperience() pour l'instant.

Une fois que vous obtenez tout ce travail, puis essayer d'ajouter le support pour les niveaux. Peut-être il y a un endroit de conversion pour convertir les niveaux d'expérience et de l'expérience à des niveaux? Sinon, voici tableaux de conversion .

Autres conseils

Si vous ne mettez pas à jour votre objet Player qui ressemble à ça vient sender il tiendra les anciennes valeurs, donc je vérifie que sender arrive avec de nouvelles données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top