SHARE
TWEET

Untitled

a guest Aug 13th, 2017 48 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. namespace GT;
  4.  
  5. use pocketmine\plugin\PluginBase;
  6. use pocketmine\event\Listener;
  7. use pocketmine\math\Vector3;
  8. use pocketmine\math\Vector2;
  9. use pocketmine\level\Position;
  10. use pocketmine\block\Block;
  11. use pocketmine\utils\TextFormat;
  12. use pocketmine\entity\Entity;
  13. use pocketmine\entity\Effect;
  14. use pocketmine\utils\Config;
  15. use pocketmine\command\Command;
  16. use pocketmine\command\CommandSender;
  17. use pocketmine\event\block\BlockBreakEvent;
  18. use pocketmine\event\block\BlockPlaceEvent;
  19. use pocketmine\event\player\PlayerJoinEvent;
  20. use pocketmine\level\sound\AnvilFallSound;
  21. use pocketmine\event\player\PlayerDeathEvent;
  22. use pocketmine\event\player\PlayerInteractEvent;
  23. use pocketmine\event\player\PlayerChatEvent;
  24. use pocketmine\event\player\PlayerRespawnEvent;
  25. use pocketmine\event\player\PlayerQuitEvent;
  26. use pocketmine\event\entity\EntityDamageEvent;
  27. use pocketmine\event\entity\EntityDamageByBlockEvent;
  28. use pocketmine\event\entity\EntityDamageByEntityEvent;
  29. use pocketmine\event\entity\EntityRegainHealthEvent;
  30. use pocketmine\inventory\BigShapedRecipe;
  31. use pocketmine\event\player\PlayerMoveEvent;
  32. use pocketmine\tile\Sign;
  33. use pocketmine\network\protocol\AddEntityPacket;
  34. use pocketmine\network\protocol\BossEventPacket;
  35. use pocketmine\utils\UUID;
  36. use pocketmine\network\protocol\SetTimePacket;
  37. use pocketmine\network\protocol\TextPacket;
  38. use pocketmine\network\protocol\AddPlayerPacket;
  39. use pocketmine\event\block\SignChangeEvent;
  40. use pocketmine\item\Item;
  41. use pocketmine\tile\Tile;
  42. use pocketmine\nbt\NBT;
  43. use pocketmine\nbt\tag\CompoundTag;
  44. use pocketmine\nbt\tag\ListTag;
  45. use pocketmine\nbt\tag\IntTag;
  46. use pocketmine\nbt\tag\StringTag;
  47. use pocketmine\nbt\tag\ByteTag;
  48. use pocketmine\tile\Skull;
  49. use pocketmine\Server;
  50. use pocketmine\level\Level;
  51. use onebone\economyapi\EconomyAPI;
  52. use pocketmine\level\particle\HeartParticle;
  53. use pocketmine\command\ConsoleCommandSender;
  54. use pocketmine\Player;
  55. use pocketmine\event\player\PlayerCommandPreprocessEvent;
  56.  
  57.  
  58. class Main extends PluginBase Implements Listener {
  59.  
  60.    
  61.     public $request = array();
  62.     public $config;
  63.    
  64.  
  65.     public function onEnable() {
  66.        @mkdir($this->getDataFolder());
  67.  
  68.     @mkdir($this->getDataFolder() . "players/");
  69.         $this->config = new Config($this->getDataFolder() . "gang.yml", Config::YAML, array("max_gangs" => 2));
  70.    
  71.         $this->getServer()->getPluginManager()->registerEvents($this, $this);
  72.         $this->getLogger()->info("Enabled v1.0 TutoGamerWalid");
  73.        
  74.     }
  75.  
  76.  
  77.     public function onJoinL(PlayerJoinEvent $event) {
  78.         if(!file_exists($this->getDataFolder() . "players/" . strtolower($event->getPlayer()->getName()) . ".yml")) {
  79.             $config = new Config($this->getDataFolder() . "players/" . strtolower($event->getPlayer()->getName()) . ".yml", Config::YAML);
  80.             $config->set("Gangs", array());
  81.             $config->save();
  82.         }
  83.     }
  84.                  
  85.  
  86.     public function addRequest(Player $target, Player $requestp) {
  87.         if($target->getName() == $requestp->getName()) {
  88.             $requestp->sendMessage("§cGangs » You cannot Team with yourself");
  89.             return false;
  90.         }
  91.        
  92.         if(!$this->isTeam($requestp, $target->getName())) {
  93.             $requestp->sendMessage("§aGangs » Sent request to ".$target->getName());
  94.             $this->request[$requestp->getName()] = $target->getName();
  95.             $target->sendMessage("§aGangs » {$requestp->getName()} has requested you as an GangTeam, do /gang accept to accept");
  96.             $task = new CancelRequest($this, $target, $requestp);
  97.             $this->getServer()->getScheduler()->scheduleDelayedTask($task, 20 * 60);
  98.         }else {
  99.             $requestp->sendMessage("§cGangs » That player is already your GangTeammate.");
  100.         }
  101.     }
  102.    
  103.     public function removeRequest(Player $target,Player $requestp, $reason) {
  104.         if(in_array($target->getName(), $this->request)) {
  105.             if($reason == 0){
  106.                 $requestp->sendMessage("§cGangs » {$target->getName()} did not accept your request.");
  107.             }
  108.             unset($this->request[$requestp->getName()]);
  109.         }
  110.     }
  111.    
  112.     public function addTeam(Player $player, Player $ally, $gangname) {
  113.         $player->sendMessage("§aGangs » You're now Gangs with §7{$ally->getName()}");
  114.         $ally->sendMessage("§aGangs » You're now Gangs with §7{$player->getName()}");
  115.         $config = new Config($this->getDataFolder() . "players/". strtolower($player->getName()) . ".yml", Config::YAML);
  116.         $points = new Config($this->getDataFolder() . "points.yml", Config::YAML);
  117.         $all = $config->getAll();
  118.         $all["gang_players"] = $ally->getName();
  119.         $config->setAll($all);
  120.         $config->save();
  121.         $config->reload();
  122.         # ↑Current Player • Ally ↓
  123.         $config2 = new Config($this->getDataFolder()."players/". strtolower($ally->getName()) . ".yml", Config::YAML);
  124.         $push = $config2->getAll();
  125.         $push["gang_players"] = $player->getName();
  126.         $config->setAll($all);
  127.         $config->save();
  128.         $config->reload();
  129.         $this->removeRequest($ally, $player, 1);
  130.     }
  131.    
  132.     public function removeTeam(Player $player, $allyname) {
  133.         if($this->isTeam($player, $allyname)) {
  134.             $config = new Config($this->getDataFolder() . "players/" . strtolower($player->getName()) . ".yml", Config::YAML);
  135.             $points = new Config($this->getDataFolder() . "points.yml", Config::YAML);
  136.             $all = $config->getAll();
  137.             $found = $all["gang_players"];
  138.             $id = array_search($allyname, $found);
  139.             unset($all[$id]);
  140.             $config->setAll($all);
  141.             $config->save();
  142.             $config->reload();
  143.             return true;
  144.         }
  145.        
  146.         return false;
  147.     }
  148.    
  149.     public function TpTeam(Player $player, $allyname) {
  150.         if($this->isTeam($player, $allyname)) {
  151.             $player->sendMessage("§7Gangs » §ayou have was teleported to your teammate.");
  152.             return true;
  153.         }
  154.         return false;
  155.     }  
  156.    
  157.     public function getAllGangs(){
  158.                   $dir = $this->getDataFolder()."players/";
  159.                   $files = scandir($dir);
  160.                   unset($files[0],$files[1]);
  161.                   foreach($files as $file){
  162.                   $cfg1 = new Config($dir.$file);
  163.                   $cfg = $cfg1->getAll();
  164.                   return $cfg;     
  165.                  } 
  166.     }
  167.    
  168.    
  169.     public function isTeam(Player $player, $isallyname) {
  170.         $config = new Config($this->getDataFolder() . "players/". strtolower($player->getName()) . ".yml", Config::YAML);
  171.         $array = $config->getAll();
  172.         $found = $array["gang_players"];
  173.         if (in_array($isallyname, $found)) {
  174.             return true;
  175.         }
  176.        
  177.         return false;
  178.     }
  179.    
  180.    
  181.        public function onHit(EntityDamageEvent $event){
  182.            $player = $event->getEntity();
  183.            if($player instanceof Player){
  184.  
  185.         if($event->getCause() == EntityDamageEvent::CAUSE_ENTITY_ATTACK) {
  186.             $damager = $event->getDamager();
  187.             $victim = $event->getEntity();
  188.             if($damager instanceof Player && $victim instanceof Player) {
  189.                 if($this->isTeam($victim, $damager->getName())) {
  190.                     $event->setCancelled();
  191.                      }
  192.                   }
  193.                }   
  194.             }
  195.         }  
  196.  
  197.  
  198.     public function onDeath(PlayerDeathEvent $event)  {
  199.  
  200.         $player = $event->getEntity();
  201.  
  202.         $deathdata = new Config($this->getDataFolder() . "deaths.yml", Config::YAML);
  203.         $killdata = new Config($this->getDataFolder() . "points.yml", Config::YAML);
  204.  
  205.         $name = $player->getName();
  206.      
  207.         $cause = $player->getLastDamageCause();
  208.         if($cause instanceof EntityDamageByEntityEvent) {
  209.  
  210.             $killer = $cause->getDamager();
  211.             $event->setDeathMessage(null);
  212.  
  213.              if ($killer instanceof Player){
  214.    
  215.                         $name = $killer->getName();
  216.  
  217.                         $kills = $killdata->get($name);
  218.                         $killdata->set($name, $kills + 1);
  219.                         $killdata->save();
  220.  
  221.                         $this->addKill($killer);
  222.                 }
  223.           }
  224.     }
  225.          
  226.  
  227.     public function onCommand(CommandSender $sender, Command $command, $label, array $args) {
  228.           switch (strtolower($command->getName())){
  229.             case "gang":
  230.             case "g":
  231.                        
  232.         $params = [
  233.             "add",
  234.             "remove",
  235.             "list",
  236.             "leave",
  237.             "accept",
  238.             "create",
  239.             "kick"
  240.         ];
  241.        
  242.         $helpmenu = [
  243.             "§8----- §l§d Gang Help §r §8-----",
  244.             "§8- §a/gang create <gang-name>",
  245.             "§8- §a/gang remove <gang-name>",
  246.             "§8- §a/gang add <name> §7- §eadd a Teammate",
  247.             "§8- §a/gang kick <name> §7- §eremove a Teammate",
  248.             "§8- §a/gang toplist §7- §elist of your current Teamates",
  249.             "§8- §a/gang accept §7- §eaccept an Team request",
  250.             "§8- §a/gang deny §7- §eDenies an Team request",
  251.             "§8- §a/gang list §7- §eList of your gang teammate"
  252.         ];
  253.  
  254.  
  255.        
  256.         if(!in_array(isset($args[0]), $params)) {
  257.             foreach($helpmenu as $msg) {
  258.                 $sender->sendMessage($msg);
  259.             }
  260.             return true;
  261.         }
  262.        
  263.         if($args[0] == "create"){
  264.            
  265.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  266.             //$all = $config->getAll();
  267.                $check = $config->get("Gangs", []);
  268.  
  269.                  foreach($this->getAllGangs() as $all){
  270.     var_dump($all);
  271.                if(isset($all["gang_name"])){
  272.                $sender->sendMessage ("§aThis Gangs Name already created please enter a new name");
  273.                return;
  274.        
  275.         }
  276.  
  277.              }
  278.            
  279.             if(isset($check["gang_name"]) and $check["leader"] === $sender->getName()){
  280.                 $sender->sendMessage("§cyou have already a gang team you can remove with /gang remove <name>");
  281.                return;
  282.             }
  283.  
  284.             if(isset($check["gang_name"]) and $check["leader"] !== $sender->getName()){
  285.                   $sender->sendMessage ("you can't create team because you are already in a gang !\n you can quit with the command /gang leave");
  286.                return;
  287.             }
  288.  
  289.                    
  290.                 if(!isset($args[1])) {
  291.                 $sender->sendMessage("§cGangs » Please enter the gangname");
  292.                 return true;
  293.             }
  294.            
  295.             $sender->sendMessage("§ayou have succefully created ".$args[1]);
  296.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  297.             $points = new Config($this->getDataFolder() . "points.yml", Config::YAML);
  298.               $array = $config->get("Gangs", []);
  299.               $array["gang_name"] = $args[1];
  300.               $defaultPoint = $points->get($args[1]);
  301.                 $array["leader"] = $sender->getName();
  302.               $array["gang_players"] = [];
  303.               $config->set("Gangs", $array);
  304.                 $config->save();
  305.              $config->reload();        
  306.        
  307.              $points->set($args[1], $defaultPoint+0);
  308.              $points->save();
  309.            
  310.            
  311.             }
  312.            
  313.            
  314.             }
  315.  
  316.           if($args[0] == "msg"){
  317.  
  318.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  319.             //$all = $config->getAll();
  320.                $check = $config->get("Gangs", []);
  321.  
  322.               if(isset($check["gang_name"]) and isset($args[1])) {
  323.                  $msg = implode(" ", $args);
  324.                   $dir = $this->getDataFolder()."players/";
  325.                   $files = scandir($dir);
  326.                   unset($files[0],$files[1]);
  327.                   foreach($files as $file){
  328.                   $cfg1 = new Config($dir.$file);
  329.                   $cfg = $cfg1->getAll();
  330.  
  331.  
  332.                  $found = $cfg["gang_players"];
  333.                 foreach ($this->getServer()->getOnlinePlayers () as $pl){
  334.             if (in_array($pl->getName(), $found) and $pl !== null and $pl->isOnline()) {
  335.             $pl->sendMessage("§b{$check["gang_name"]} §f{$sender->getName()} §7>§a {$msg}");
  336.             return true;
  337.                 }                
  338.                  }
  339.                  }
  340.                   }else{
  341.                 $sender->sendMessage("§cyou don't have any gang you can't send message.");
  342.               }
  343.             }
  344.             }
  345.            }
  346.            
  347.         if($args[0] == "remove"){
  348.  
  349.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  350.             //$all = $config->getAll();
  351.                $check = $config->get("Gangs", []);
  352.            
  353.                if(isset($check["gang_name"]) and isset($check["leader"]) and isset($args[1])){
  354.                  if($check["leader"] !== $sender->getName()){
  355.                      $sender->sendMessage("§cyou are not the leader for remove the gang.");
  356.                      return;
  357.                      }
  358.                      if($check["gang_name"] === $args[1]){
  359.                      $sender->sendMessage ("§ayou have succefully removed ".$args[1]);
  360.                      $config->set("Gangs", []);
  361.                      $config->save();
  362.                    }else{
  363.                     $sender->sendMessage("§cthe gang name not found !");
  364.                     }
  365.                
  366.                }
  367.            
  368.            
  369.         }
  370.  
  371.           if($args[0] == "leave"){
  372.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  373.             //$all = $config->getAll();
  374.                $check = $config->get("Gangs", []);
  375.            
  376.                if(isset($check["gang_name"]) and isset($check["gang_players"])){
  377.                 if($leave = array_search($sender->getName(), $check["gang_players"])){      
  378.                 unset($check[$leave]);
  379.                 $config->setAll($check);
  380.                 $config->save();
  381.                 $config->reload();
  382.                 $sender->sendMessage ("§ayou have leave the gang !");
  383.           }else{
  384.                 $sender->sendMessage("§cyou don't any gang !");
  385.           }
  386.           }
  387.           }
  388.        
  389.         if($args[0] == "add") {
  390.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  391.             //$all = $config->getAll();
  392.                     $check = $config->get("Gangs", []);
  393.            
  394.             if(!isset($check["gang_name"])){
  395.                 $sender->sendMessage("§cplease create your first team follow the command /gang create <name>");
  396.                 return;
  397.                 }
  398.            
  399.             if(count($config->get("Gangs")) == $this->config->get("max_gangs")) {
  400.                 $sender->sendMessage("§cGangs » You cannot add more Gangs!");
  401.             }
  402.            
  403.             if(!isset($args[1])) {
  404.                 $sender->sendMessage("§cGangs » Please enter the player's name you want to teammate with");
  405.                 return true;
  406.             }
  407.            
  408.             $player = $this->getServer()->getPlayer($args[1]);
  409.  
  410.  
  411.             if($player !== null) {
  412.                 $this->addRequest($player, $sender);
  413.             }else {
  414.                 $sender->sendMessage("§cThat player cannot be found.");
  415.             }
  416.         }
  417.                        
  418.         if($args[0] ==  "kick") {
  419.              $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  420.             //$all = $config->getAll();
  421.                   $check = $config->get("Gangs", []);
  422.  
  423.  
  424.             if(!isset($args[1])) {
  425.                          if($check["leader"] !== $sender->getName()){
  426.                           $sender->sendMessage("§cyou are not the leader for remove the gang.");
  427.                           return;
  428.                          }
  429.                
  430.                 $sender->sendMessage("§cGangs » Please enter the teammeate name you want to remove");
  431.                 return false;
  432.             }
  433.                
  434.             if($this->removeTeam($sender, $args[1])) {
  435.                 $sender->sendMessage("§aGangs » Teammate removed");
  436.             }else {
  437.                 $sender->sendMessage("§cGangs » Team not found do /team list to get a list of your Gangs.");
  438.             }
  439.         }
  440.                
  441.         if($args[0] ==  "list") {
  442.             $config = new Config($this->getDataFolder() . "players/" . strtolower($sender->getName()) . ".yml", Config::YAML);
  443.             $array = $config->get("Gangs", []);
  444.             $all = $config->getAll();
  445.             if(empty($all["gang_players"]) or empty($all)){
  446.                 $sender->sendMessage("§cGangs » You dont have any Gangs");
  447.             }else {
  448.                 $sender->sendMessage("§6§l-= Gangs Teams =-");
  449.                 foreach($all["gang_players"] as $allyname) {
  450.                     $sender->sendMessage("§7- §a{$allyname}");
  451.                 }
  452.             }
  453.         }
  454.            
  455.         if($args[0] == "accept") {
  456.             if(in_array($sender->getName(), $this->request)) {
  457.                 foreach($this->request as $target => $requestp) {
  458.                     $target = $this->getServer()->getPlayer($target);
  459.                     $requestp = $this->getServer()->getPlayer($requestp);
  460.                     if($requestp->getName() === $sender->getName()) {
  461.                         $this->addTeam($target, $requestp);
  462.                         //$this->addTeam($requestp, $target);
  463.                     }else {
  464.                         $sender->sendMessage("§cGangs » You have no Teams requests");
  465.                     }
  466.                 }
  467.             }
  468.         }
  469.        
  470.         if($args[0] == "toplist"){
  471.            
  472.            
  473.             $sender->sendMessage ("§7--- §bGang Lists §7---");
  474.            
  475.                  $cfg = arsort($this->getAllGangs());
  476.            
  477.            
  478.             $num = 0;
  479.            
  480.             foreach($cfg as $all){
  481.                 $num++;            
  482.             if(!isset($all["gang_name"]) or empty($all["gang_name"])){
  483.                 $sender->sendMessage("§cThere is 0 gangs team");
  484.                 return;
  485.                 }              
  486.  
  487.                
  488.                 if($num == 11){
  489.                     break;
  490.                 }
  491.            
  492.                
  493.                   $sender->sendMessage ("§7- §e{$num} §b{$all["gang_name"]} §awith §c{$all["gang_point"]} Kills");
  494.                            
  495.            
  496.             }
  497.             }
  498.        
  499.        
  500.        
  501.         if($args[0] ==  "transfer") {
  502.             $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
  503.             //$all = $config->getAll();
  504.                     $check = $config->get("Gangs", []);        
  505.                     $cfg = $config->getAll();
  506.            
  507.                    if($check["leader"] !== $sender->getName()){
  508.                         $sender->sendMessage("§cyou are not the leader for remove the gang.");
  509.                         return;
  510.                    }
  511.            
  512.             if(!isset($args[1])) {
  513.                 $sender->sendMessage("§cGangs » please enter the name of your teammate.");
  514.                 return false;          
  515.                    }
  516.  
  517.  
  518.                     $name = $this->getServer()->getPlayerExact($args[1]);
  519.  
  520.                     $found = $check["gang_players"];
  521.                     $leader = $check["leader"];
  522.  
  523.                      if($search = array_search($name, $found) !== false){
  524.        
  525.                         unset($check[$found]);
  526.      
  527.                         $config->setAll($check);
  528.                         $config->set($leader, $name);
  529.                         $config->save();
  530.                  }
  531.              }
RAW Paste Data
Top