• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

教程 在PM服务器中简单的实现反作弊

YuIo_PQ

【Lv:5】

注册
2018/03/17
消息
592
金粒
352,970金粒
首先,我们需要很正常的use以下内容:
PHP:
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\event\player\PlayerToggleFlightEvent;
use pocketmine\event\player\PlayerGameModeChangeEvent;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\Server;use pocketmine\Player;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\utils\Config;
use pocketmine\utils\TextFormat as Color;
开始正篇!首先,一个服务器得有简单的反飞行!
PHP:
public function onFlying(PlayerToggleFlightEvent $event) {
   
  //检测玩家飞行这个动作
      $player = $event->getPlayer();
  
     if ($event->isFlying()) {
        
         if ($player->hasPermission("xx权限")) {
           
  //如果有飞行这个动作,则判断玩家有没有飞行的权限
           
         } else {
   
  //如果没有,就踢出服务器        
           $player->kick(Color::RED . "这里写留给作弊玩家的话hh", false);
          
          
        
         }
     }
   }
检测权限的地方,我们可以用isOP来代替,因为中国大多数服务器是没有权限组这个插件的。
接下来,玩家可不能随意的切换模式!
PHP:
public function onGameModeChange(PlayerGameModeChangeEvent $event) {
       
   //检测玩家是否有更改游戏模式动作,是的话,检测玩家有没有对应权限
        $player = $event->getPlayer();
        $gamemode = $event->getNewGameMode();
        if ($player->hasPermission("xx权限")) {
           
        } else {
            //如果没有权限且玩家的游戏模式为1(创造模式)
            if ($gamemode === 1) {
           
                $player->kick("给作弊玩家写点什么hh", false);
               
            }
           
        }
       
    }
 

在线会员

  • Radiation_pi
  • 海贝壳
  • llllapland
  • s648555685
  • A_Di
  • BAsaltWSXuan
  • pingguo
  • badragon
  • banyue2022
  • 2409460473
  • FullIdle
  • 古怪ilil
  • niunai345
  • 0975234529
  • hhgihhg
  • yaj438506
  • lzy2633
  • xian2024
  • PixelUtopia-像素乌托邦
  • luchen5066
...和 71 更多。
后退
顶部 底部