Vault是Bukkit的插件,也是经济API 。它可用于发布玩家资金的更新,并在服务器中用作货币。
VaultAPI 也是open-sourced at Github
我正在尝试获得拥有最多金额的帐户,但这在Vault的API中并不是直截了当的。
所以,我试图做的是:
- 迭代所有OfflinePlayers并比较货币值
- 恢复最大值
醇>
代码:
## Tested Method
sub do_fieldNames {
my ($self, $sql, $has_results) = @_;
my ($sth, $rv, @row, @query_results);
## Execute the SQL statement
$sth = $$self->prepare($sql);
$rv = $sth->execute or &error(3306, __LINE__, __FILE__, $sql, $$self->errstr);
return undef unless $rv > 0;
## SOLUTION >> Field Name arrayref, part of the standard included DBI Perl Module
my $field_name_arrayref = $sth->{NAME};
## Parse the results
if ($has_results || $sql =~ /^select/i) {
while (@row = $sth->fetchrow_array) {
push @query_results, [ @row ];
}
}
## Return results
return (\@query_results, $field_name_arrayref) ;
}
我尝试迭代所有次数以找到最高金额,但是当你有太多玩家时它会落后很多。
有没有办法找到哪些玩家的钱最多?
答案 0 :(得分:2)
有几种方法可以实现这一目标。
首先,您可以使用Essentials' UserBalanceUpdateEvent并确定余额是否高于配置中的高分(在这种情况下,您使用新值及其所属的UUID更新存储的值)。
其次,您可以遍历OfflinePlayers,但使用异步任务。