Watch this video About glitch idk why people log out then die drop stuff and item keep back when u log on Can anyone help this?
PHP: <?phpnamespace Lambo\CombatLogger;use pocketmine\plugin\PluginBase;use pocketmine\scheduler\PluginTask;use pocketmine\Server;use pocketmine\Player;use pocketmine\entity\Entity;use pocketmine\event\Event;use pocketmine\event\EventPriority;use pocketmine\event\Listener;use pocketmine\event\TranslationContainer;use pocketmine\event\entity\EntityDamageEvent;use pocketmine\event\entity\EntityDamageByEntityEvent;use pocketmine\event\player\PlayerDeathEvent;use pocketmine\event\player\PlayerQuitEvent;use pocketmine\event\player\PlayerCommandPreprocessEvent;class Main extends PluginBase implements Listener{ public $players = array(); public $interval = 10; public $blockedcommands = array(); public function onEnable(){ $this->saveDefaultConfig(); $this->interval = $this->getConfig()->get("interval"); $cmds = $this->getConfig()->get("blocked-commands"); foreach($cmds as $cmd){ $this->blockedcommands[$cmd]=1; } $this->getServer()->getLogger()->info("CombatLogger enabled"); $this->getServer()->getPluginManager()->registerEvents($this, $this); $this->getServer()->getScheduler()->scheduleRepeatingTask(new Scheduler($this, $this->interval), 20); } public function onDisable(){ $this->getServer()->getLogger()->info("CombatLogger disabled"); } /** * @param EnityDamageEvent $event * * @priority MONITOR * @ignoreCancelled true */ public function EntityDamageEvent(EntityDamageEvent $event){ if($event instanceof EntityDamageByEntityEvent){ if($event->getDamager() instanceof Player and $event->getEntity() instanceof Player){ foreach(array($event->getDamager(),$event->getEntity()) as $players){ $this->setTime($players); } } } } private function setTime(Player $player){ $msg = "§7[§cWarning§7]§c Logging out now will cause you to die.\n§cPlease wait ".$this->interval." seconds.§r"; if(isset($this->players[$player->getName()])){ if((time() - $this->players[$player->getName()]) > $this->interval){ $player->sendMessage($msg); } }else{ $player->sendMessage($msg); } $this->players[$player->getName()] = time(); } /** * @param PlayerDeathEvent $event * * @priority MONITOR * @ignoreCancelled true */ public function PlayerDeathEvent(PlayerDeathEvent $event){ if(isset($this->players[$event->getEntity()->getName()])){ unset($this->players[$event->getEntity()->getName()]); /*$cause = $event->getEntity()->getLastDamageCause(); if($cause instanceof EntityDamageByEntityEvent){ $e = $cause->getDamager(); if($e instanceof Player){ $message = "death.attack.player"; $params[] = $e->getName(); $event->setDeathMessage(new TranslationContainer($message, $params)); } }*/ } } /** * @param PlayerQuitEvent $event * * @priority HIGH * @ignoreCancelled true */ public function PlayerQuitEvent(PlayerQuitEvent $event){ if(isset($this->players[$event->getPlayer()->getName()])){ $player = $event->getPlayer(); if((time() - $this->players[$player->getName()]) < $this->interval){ $player->kill(); } } } /** * @param PlayerCommandPreprocessEvent $event * * @priority HIGH * @ignoreCancelled true */ public function PlayerCommandPreprocessEvent(PlayerCommandPreprocessEvent $event){ if(isset($this->players[$event->getPlayer()->getName()])){ $cmd = strtolower(explode(' ', $event->getMessage())[0]); if(isset($this->blockedcommands[$cmd])){ $event->getPlayer()->sendMessage("§7[§6Blocked§7]§c You cannot use this command during combat.§r"); $event->setCancelled(); } } }} @Muqsit hhmm what kind problem combat log is like dupe glitch combat log
It might be something related to the recent PlayerDataSaveEvent update. Also, you forgot to unset the index from $players. Try this. PHP: public function onPlayerDataSave(PlayerDataSaveEvent $event){ if(isset($this->players[$k = $event->getPlayerName()])){ if((time() - $this->players[$k]) < $this->interval){ $nbt = $event->getSaveData(); $nbt->Inventory = new ListTag("Inventory", []);//emptying player's inventory contents $event->setSaveData($nbt); unset($this->players[$k]);//remove player from the combat log array. } } } Setting the priority of PlayerQuitEvent to LOWEST might also fix your problem.
I done put it code i just use 1 plugin but still glitch when click disconnect in PvP combat log Maybe is might pocket mine version glitch?
I only use this one https://poggit.pmmp.io/p/CombatLogger/0.0.2 But still glitch i never see this before glitch so bad in PvP combat log
I think you have a true point. I also encountered this issue when a server asked me for help on this one. My conclusion was that as you can see here the player data is saved before the event is called. That means everything plugins do when they receive the event actually doesn't get saved in the player file. I fixed this by adding PHP: $player->save(); under PHP: $player->kill(); Full example: PHP: public function PlayerQuitEvent(PlayerQuitEvent $event){ if(isset($this->players[$event->getPlayer()->getName()])){ $player = $event->getPlayer(); if((time() - $this->players[$player->getName()]) < $this->interval){ $player->kill(); $player->save(); // notice this one } } } Tl;dr: When you die and the plugin kills you to make you drop your items, the server doesn't save the fact that this happened. Then when you join again it's like nothing happened.
Hey @SalmonDE i found this error i not sure how fix it Code: 2017-07-05 [19:20:42] [Server thread/CRITICAL]: Could not pass event 'pocketmine\event\player\PlayerDataSaveEvent' to 'CombatLogger v1.3.3': Class Lambo\CombatLogger\ListTag not found on Lambo\CombatLogger\Main 2017-07-05 [19:20:42] [Server thread/CRITICAL]: ClassNotFoundException: "Class Lambo\CombatLogger\ListTag not found" (EXCEPTION) in "/src/spl/BaseClassLoader" at line 144 2017-07-05 [19:20:42] [Server thread/CRITICAL]: Could not pass event 'pocketmine\event\player\PlayerDataSaveEvent' to 'CombatLogger v1.3.3': Class Lambo\CombatLogger\ListTag not found on Lambo\CombatLogger\Main 2017-07-05 [19:20:42] [Server thread/CRITICAL]: ClassNotFoundException: "Class Lambo\CombatLogger\ListTag not found" (EXCEPTION) in "/src/spl/BaseClassLoader" at line 144 Can u help me fix this Everytime show this error
@AffanStarPure Try to add PHP: use pocketmine\nbt\tag\ListTag; in the upper part of your file. Usually above the class keyword and under the namespace keyword. PHP: namespace example\namespace;//around hereuse pocketmine\plugin\PluginBase;class ExamplePlugin extends PluginBase {}