you will need to store a list of players... and check if any is online the reset is the ones that are not online, ps this will not be the most efficient method
PHP: $files = scandir(Server::getInstance()->getDataPath()."players/");$players = [];foreach($files as $file) { $players[] = rtrim($file, ".dat");}return $players;
What do you want to do? You may be loading millions of strings in an array... Terrible performance...
Or as bad as loading a big program on a loop. Spoiler: LOOP.bat Spoiler: I Must marn you, its kinda irrelated... but it explains the lag. Code: @echo off REM notepad.exe causes MASSIVE lag when on loop. ;) :startloop start notepad.exe goto startloop Basically... the point is: Don't do that method.
Olhe meu código: <? Php Namespace DanielYTK; Use pocketmine \ Player; Use o pocketmine \ Server; Use pocketmine \ command \ Command; Use o comando pocketmine \ command \ CommandSender; Use pocketmine \ utils \ Config; Use pocketmine \ event \ Listener; Use pocketmine \ event \ player \ PlayerCommandPreprocessEvent; Use o pocketmine \ plugin \ PluginBase; Classe Main extends PluginBase implementa Listener { Public function onEnable () { @mkdir ($ this-> getDataFolder ()); $ This-> config = new Config ($ this-> getDataFolder (). "Votos.json", Config :: JSON, Array ()); $ This-> config-> set ("votacao", "fechada"); $ This-> config-> set ("Sim", 0); $ This-> config-> set ("Nao", 0); $ This-> config-> save (); } Public function onDisable () {} Public function onCommand (CommandSender $ sender, Comando $ command, $ label, array $ args) { Switch (strtolower ($ command-> getName ())) { Caso "votar": $ Sim = 0; $ Não = 0; $ Player = $ sender-> getPlayer (); If (isset ($ args [0])) { If ($ args [0] === "sim") { If ($ this-> config-> get ("votacao") === "fechada") { $ Sender-> sendMessage ("[§5Votação§f] Não existe votação aberta"); Retorna; } Foreach (Server :: getInstance () -> getOnlinePlayers () como $ player) { $ Nick = $ this-> config-> get ($ player-> getName ()); If ($ this-> config-> exists ($ player-> getName ())) { $ Player-> sendMessage ("[§5Votação§f] Você já não pode votar novamente!"); Retorna; } } $ This-> config-> set ("Sim", $ this-> config-> get ("Sim") + 1) ;; $ This-> config-> set ($ player-> getName (), ["Voto" => "sim"]); $ Sender-> sendMessage ("§Voto registrado! Se você sair do servidor o voto será anulado!"); $ This-> config-> save (); } If ($ args [0] === "nao") { If ($ this-> config-> get ("votacao") === "fechada") { $ Sender-> sendMessage ("[§5Votação§f] Não existe votação aberta"); Retorna; } Foreach (Server :: getInstance () -> getOnlinePlayers () como $ player) { $ Nick = $ this-> config-> get ($ player-> getName ()); If ($ this-> config-> exists ($ player-> getName ())) { $ Player-> sendMessage ("[§5Votação§f] Você já não pode votar novamente!"); Retorna; } } $ This-> config-> set ("Nao", $ this-> config-> get ("Nao") + 1); $ This-> config-> set ($ player-> getName (), ["Voto" => "nao"]); $ This-> config-> save (); $ Sender-> sendMessage ("§Voto registrado! Se você sair do servidor o voto será anulado!"); } } outro { $ Sender-> sendMessage ("[§5Votação§f] Use / votar sim ou / votar não"); } pausa; Caso "votacao": $ Motivo = implode ("", $ args); $ Motivo2 = explode ("", $ motivo); Unset ($ motivo2 [0]); $ Motivo = implode ("", $ motivo2); If (! Isset ($ args [0])) { $ Sender-> sendMessage ("[§5Votação§f] Utilização / votacao abrir <motivo> ou / votacao fechar"); } If ($ args [0] === "abrir") { $ This-> config-> set ("votacao", "aberta"); $ This-> config-> save (); Server :: getInstance () -> broadcastMessage ("[§5Votação§f] O jogador". $ Sender-> getName (). "Iniciou uma votação ->". §fou §5 / votar não §f] "); } If ($ args [0] === "fechar") { Foreach (Server :: getInstance () -> getOnlinePlayers () como $ player) { If ($ this-> config-> exists ($ player-> getName ())) { $ This-> config-> remove ($ player-> getName ()); } } $ This-> config-> set ("votacao", "fechada"); $ This-> config-> save (); Servidor :: getInstance () -> broadcastMessage ("[§5Votação§f] Resultado: [Sim: §5". $ This-> config-> get ("Sim"). -> config-> get ("Nao"). "§f]"); $ Este-> config-> set ("Sim", 0); $ This-> config-> set ("Nao", 0); $ This-> config-> save (); } } } } - When a player executes yes / no vote, the player's nick will be saved in a ".json" file, but if the player drops the server, after having voted and before the voting ends, even if I finish The vote the nick of the player will be in the file ".json" and when I open another poll, the player with the nick there, will not be able to vote, then ... I thought the best part of doing this was getting the nick of Players off. Desculpe, não consigo usar github
[PHP]Your php code[/PHP] OR FOR NON-PHP CODE: [CODE]Put code that's not php (e.g. Yaml files) in code tags[/CODE]