Я нашел в плагине Users(пришел вместе с Ranks) код он взаимопривязан с Ranks?
вот код Users:
<?php
declare(strict_types=1);
namespace users\manager;
use pocketmine\Player;
use function is_dir;
use function mkdir;
use const SQLITE3_ASSOC;
final class UserManager{
private $users;
public function __construct(string $path){
if(!is_dir($path)){
mkdir($path, 0775, true);
}
$this->users = new \SQLite3($path . 'users.db');
$this->users->exec("CREATE TABLE IF NOT EXISTS `users`(
`nickname` TEXT PRIMARY KEY NOT NULL,
`originalname` TEXT NOT NULL,
`cape` TEXT NOT NULL,
`group` TEXT NOT NULL,
`deatheffect` TEXT NOT NULL,
`particle` TEXT NOT NULL,
`kills` INTTEGER default 0 NOT NULL,
`wins` INTEGER default 0 NOT NULL,
`level` INTEGER default 1 NOT NULL,
`experience` INTEGER default 0 NOT NULL,
`deaths` INTEGER default 0 NOT NULL
)");
//$this->destroy();
}
final public function destroy() : void{
$sql = $this->users->query("SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 200000");
while($element = $sql->fetchArray(SQLITE3_ASSOC)){
$name = $element['nickname'];
$this->users->query("UPDATE `users` SET `wins` = 0 WHERE `nickname` = '$name'");
$this->users->query("UPDATE `users` SET `kills` = 0 WHERE `nickname` = '$name'");
$this->users->query("UPDATE `users` SET `level` = 1 WHERE `nickname` = '$name'");
$this->users->query("UPDATE `users` SET `experience` = 0 WHERE `nickname` = '$name'");
if($element['group'] === 'Devilish' or $element['group'] === 'Mysterio' or $element['group'] === 'Samurai'){
$d = 'Player';
$this->users->query("UPDATE `users` SET `group` = '$d' WHERE `nickname` = '$name'");
}
}
echo PHP_EOL . 'cleared!' . PHP_EOL;
}
final public function perenos() : void{
$old = new \SQLite3('/root/pvp/plugins/Users/users.db');
$sql = $old->query("SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 65000");
while($element = $sql->fetchArray(SQLITE3_ASSOC)){
$name = $element['originalname'];
$lname = $element['nickname'];
$rank = $element['group'];
$cape = 'none';
$deatheffect = 'none';
$particle = 'none';
$this->users->query("INSERT INTO `users`(`nickname`, `originalname`, `cape`, `group`, `deatheffect`, `particle`) VALUES('$lname', '$name', '$cape', '$rank', '$deatheffect', '$particle')");
}
echo PHP_EOL . 'cleared!' . PHP_EOL;
}
final public function getProperties(Player $player){
$name = strtolower($player->getName());
$result = $this->users->query("SELECT * FROM `users` WHERE `nickname` = '$name'")->fetchArray(SQLITE3_ASSOC);
return $result;
}
final public function setPropertyByName(string $name, string $property, $value) : void{
$name = strtolower($name);
$this->users->query("UPDATE `users` SET '$property' = '$value' WHERE `nickname` = '$name'");
}
final public function registerPlayer(Player $player) : void{
if($this->getProperties($player) !== false){
return;
}
$lname = strtolower($player->getName());
$name = $player->getName();
$rank = 'Player';
$cape = 'none';
$deatheffect = 'none';
$particle = 'none';
$this->users->query("INSERT INTO `users`(`nickname`, `originalname`, `cape`, `group`, `deatheffect`, `particle`) VALUES('$lname', '$name', '$cape', '$rank', '$deatheffect', '$particle')");
$prop = $this->getProperties($player);
$player->setProperties($this->getProperties($player));
}
final public function descKills(){
return $this->users->query("SELECT * FROM `users` ORDER BY `kills` DESC LIMIT 5");
}
final public function descWins(){
return $this->users->query("SELECT * FROM `users` ORDER BY `wins` DESC LIMIT 5");
}
final public function save(Player $player) : void{
$name = strtolower($player->getName());
foreach($player->getProperties() as $key => $value){
$this->users->query("UPDATE `users` SET '$key' = '$value' WHERE `nickname` = '$name'");
}
}
}
а вот код с Ranks:
final class SetRankCommand extends Command{
private const GROUPS = ['Player', 'Moderator', 'Admin', 'Owner'];
/**
* SetRankCommand constructor.
*
* @return void
*/
public function __construct(){
parent::__construct('setrank');
$this->addCommandParameter(new CommandParameter('player', CommandParameter::ARG_TYPE_PLAYER));
$this->addCommandParameter(new CommandParameter('rank', CommandParameter::ARG_TYPE_RAW_TEXT, true));
}
/**
* @param CommandSender $sender
* @param string $commandLabel
* @param array $args
*
* @return bool
*/
final public function execute(CommandSender $sender, string $commandLabel, array $args) : bool{
if(!$sender->isOp())
{
return false;
}
if(!isset($args[0]) || !isset($args[1])) {
$sender->sendMessage('§l§9» §r§fUsage: §d/setrank <name> <rank>');
return false;
}
$args[1] = str_replace('_', ' ', $args[1]);
if(!in_array($args[1], self::GROUPS)) {
return false;
}
if(($player = $sender->getServer()->getPlayer($args[0])) !== null){
$player->setProperty('group', $args[1]);
$player->close('', 'Generic reason');
}else{
$sender->getServer()->getPluginManager()->getPlugin('Users')->getUserManager()->setPropertyByName($args[0], 'group', $args[1]);
}
$sender->sendMessage('§l§9» §r§fRank has been changed');
return true;
}
}