【问题标题】:Leveling System does not work调平系统不工作
【发布时间】:2014-09-25 17:47:37
【问题描述】:

我正在尝试制作升级系统,但目前“升级”不起作用。我正在尝试检查一个玩家在加入服务器时是否有超过他需要升级的击杀数。

问题是,我有 501 次击杀,我需要 500 次击杀才能升级,但是当我加入我的服务器时没有任何反应。如何解决?

代码

int kills = plugin.getConfig().getInt("Database."+player.getName()+".Level");
int basicexp = 5;
int incremento = 20;
int level = plugin.getConfig().getInt("Database."+player.getName()+".Level");
int exp = (basicexp * level) + (incremento * level);
int one = 1;
int nextlevel = level + one;
if (kills >= exp) {
    plugin.getConfig();
    plugin.getConfig().set("Database."+player.getName()+".Level", nextlevel);
    plugin.saveConfig();
}

【问题讨论】:

  • 您应该附加一个调试器(例如 Eclipse),在有问题的行上设置一个断点,并在查看变量值的同时单步执行它。到时候问题应该很明显了。
  • 我没有使用 Eclipse,我使用的是 NetBeans,根据 netbeans,该代码是“正确的”
  • 该代码根据 Netbeans 编译;这并不意味着它正确,它只是意味着它没有任何语法错误。 Netbeans 也有一个调试器;您应该使用它来逐步执行此代码,因为它是一项真正有用的技能。即使我相信我在回答中指出的明显的复制粘贴错误可能是解决您当前问题的方法,您也应该将其作为一个学习机会。

标签: java bukkit


【解决方案1】:
  • 你设置int kills = plugin.getConfig().getInt("Database."+player.getName()+".Level");
  • 你设置了int level = plugin.getConfig().getInt("Database."+player.getName()+".Level");,所以level == kills
  • 你设置了int exp = (basicexp * level) + (incremento * level);,所以exp == (basicexp + incremento) * level,所以exp > level,如果(basicexp + increment) > 1,这很可能。
  • kills == level,然后exp > kills,这意味着kills >= exp永远不会是真的。

在读取kills 的值时,也许您打算从配置中获取“.Level”以外的其他内容?

【讨论】:

  • 别担心,很高兴你把它整理好了。当我调试时,我通常会尝试向后工作。我会去一些不起作用的东西(比如你的 if 语句),当我在那条线上时看看变量。如果其中一个不是我期望的值,我会看看它是如何设置的(可能设置一个更早的断点并重新运行,以便我可以看到它实际设置),并继续这样做直到我找到代码不正确。它对我有用,希望同样的方法对你有用......
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 2021-03-25
  • 2012-09-04
  • 2011-12-28
  • 2011-09-08
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多