Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace GT;
- use pocketmine\plugin\PluginBase;
- use pocketmine\event\Listener;
- use pocketmine\math\Vector3;
- use pocketmine\math\Vector2;
- use pocketmine\level\Position;
- use pocketmine\block\Block;
- use pocketmine\utils\TextFormat;
- use pocketmine\entity\Entity;
- use pocketmine\entity\Effect;
- use pocketmine\utils\Config;
- use pocketmine\command\Command;
- use pocketmine\command\CommandSender;
- use pocketmine\event\block\BlockBreakEvent;
- use pocketmine\event\block\BlockPlaceEvent;
- use pocketmine\event\player\PlayerJoinEvent;
- use pocketmine\level\sound\AnvilFallSound;
- use pocketmine\event\player\PlayerDeathEvent;
- use pocketmine\event\player\PlayerInteractEvent;
- use pocketmine\event\player\PlayerChatEvent;
- use pocketmine\event\player\PlayerRespawnEvent;
- use pocketmine\event\player\PlayerQuitEvent;
- use pocketmine\event\entity\EntityDamageEvent;
- use pocketmine\event\entity\EntityDamageByBlockEvent;
- use pocketmine\event\entity\EntityDamageByEntityEvent;
- use pocketmine\event\entity\EntityRegainHealthEvent;
- use pocketmine\inventory\BigShapedRecipe;
- use pocketmine\event\player\PlayerMoveEvent;
- use pocketmine\tile\Sign;
- use pocketmine\network\protocol\AddEntityPacket;
- use pocketmine\network\protocol\BossEventPacket;
- use pocketmine\utils\UUID;
- use pocketmine\network\protocol\SetTimePacket;
- use pocketmine\network\protocol\TextPacket;
- use pocketmine\network\protocol\AddPlayerPacket;
- use pocketmine\event\block\SignChangeEvent;
- use pocketmine\item\Item;
- use pocketmine\tile\Tile;
- use pocketmine\nbt\NBT;
- use pocketmine\nbt\tag\CompoundTag;
- use pocketmine\nbt\tag\ListTag;
- use pocketmine\nbt\tag\IntTag;
- use pocketmine\nbt\tag\StringTag;
- use pocketmine\nbt\tag\ByteTag;
- use pocketmine\tile\Skull;
- use pocketmine\Server;
- use pocketmine\level\Level;
- use onebone\economyapi\EconomyAPI;
- use pocketmine\level\particle\HeartParticle;
- use pocketmine\command\ConsoleCommandSender;
- use pocketmine\Player;
- use pocketmine\event\player\PlayerCommandPreprocessEvent;
- class Main extends PluginBase Implements Listener {
- public $request = array();
- public $config;
- public function onEnable() {
- @mkdir($this->getDataFolder());
- @mkdir($this->getDataFolder() . "players/");
- $this->config = new Config($this->getDataFolder() . "gang.yml", Config::YAML, array("max_gangs" => 2));
- $this->getServer()->getPluginManager()->registerEvents($this, $this);
- $this->getLogger()->info("Enabled v1.0 TutoGamerWalid");
- }
- public function onJoinL(PlayerJoinEvent $event) {
- if(!file_exists($this->getDataFolder() . "players/" . strtolower($event->getPlayer()->getName()) . ".yml")) {
- $config = new Config($this->getDataFolder() . "players/" . strtolower($event->getPlayer()->getName()) . ".yml", Config::YAML);
- $config->set("Gangs", array());
- $config->save();
- }
- }
- public function addRequest(Player $target, Player $requestp) {
- if($target->getName() == $requestp->getName()) {
- $requestp->sendMessage("§cGangs » You cannot Team with yourself");
- return false;
- }
- if(!$this->isTeam($requestp, $target->getName())) {
- $requestp->sendMessage("§aGangs » Sent request to ".$target->getName());
- $this->request[$requestp->getName()] = $target->getName();
- $target->sendMessage("§aGangs » {$requestp->getName()} has requested you as an GangTeam, do /gang accept to accept");
- $task = new CancelRequest($this, $target, $requestp);
- $this->getServer()->getScheduler()->scheduleDelayedTask($task, 20 * 60);
- }else {
- $requestp->sendMessage("§cGangs » That player is already your GangTeammate.");
- }
- }
- public function removeRequest(Player $target,Player $requestp, $reason) {
- if(in_array($target->getName(), $this->request)) {
- if($reason == 0){
- $requestp->sendMessage("§cGangs » {$target->getName()} did not accept your request.");
- }
- unset($this->request[$requestp->getName()]);
- }
- }
- public function addTeam(Player $player, Player $ally, $gangname) {
- $player->sendMessage("§aGangs » You're now Gangs with §7{$ally->getName()}");
- $ally->sendMessage("§aGangs » You're now Gangs with §7{$player->getName()}");
- $config = new Config($this->getDataFolder() . "players/". strtolower($player->getName()) . ".yml", Config::YAML);
- $points = new Config($this->getDataFolder() . "points.yml", Config::YAML);
- $all = $config->getAll();
- $all["gang_players"] = $ally->getName();
- $config->setAll($all);
- $config->save();
- $config->reload();
- # ↑Current Player • Ally ↓
- $config2 = new Config($this->getDataFolder()."players/". strtolower($ally->getName()) . ".yml", Config::YAML);
- $push = $config2->getAll();
- $push["gang_players"] = $player->getName();
- $config->setAll($all);
- $config->save();
- $config->reload();
- $this->removeRequest($ally, $player, 1);
- }
- public function removeTeam(Player $player, $allyname) {
- if($this->isTeam($player, $allyname)) {
- $config = new Config($this->getDataFolder() . "players/" . strtolower($player->getName()) . ".yml", Config::YAML);
- $points = new Config($this->getDataFolder() . "points.yml", Config::YAML);
- $all = $config->getAll();
- $found = $all["gang_players"];
- $id = array_search($allyname, $found);
- unset($all[$id]);
- $config->setAll($all);
- $config->save();
- $config->reload();
- return true;
- }
- return false;
- }
- public function TpTeam(Player $player, $allyname) {
- if($this->isTeam($player, $allyname)) {
- $player->sendMessage("§7Gangs » §ayou have was teleported to your teammate.");
- return true;
- }
- return false;
- }
- public function getAllGangs(){
- $dir = $this->getDataFolder()."players/";
- $files = scandir($dir);
- unset($files[0],$files[1]);
- foreach($files as $file){
- $cfg1 = new Config($dir.$file);
- $cfg = $cfg1->getAll();
- return $cfg;
- }
- }
- public function isTeam(Player $player, $isallyname) {
- $config = new Config($this->getDataFolder() . "players/". strtolower($player->getName()) . ".yml", Config::YAML);
- $array = $config->getAll();
- $found = $array["gang_players"];
- if (in_array($isallyname, $found)) {
- return true;
- }
- return false;
- }
- public function onHit(EntityDamageEvent $event){
- $player = $event->getEntity();
- if($player instanceof Player){
- if($event->getCause() == EntityDamageEvent::CAUSE_ENTITY_ATTACK) {
- $damager = $event->getDamager();
- $victim = $event->getEntity();
- if($damager instanceof Player && $victim instanceof Player) {
- if($this->isTeam($victim, $damager->getName())) {
- $event->setCancelled();
- }
- }
- }
- }
- }
- public function onDeath(PlayerDeathEvent $event) {
- $player = $event->getEntity();
- $deathdata = new Config($this->getDataFolder() . "deaths.yml", Config::YAML);
- $killdata = new Config($this->getDataFolder() . "points.yml", Config::YAML);
- $name = $player->getName();
- $cause = $player->getLastDamageCause();
- if($cause instanceof EntityDamageByEntityEvent) {
- $killer = $cause->getDamager();
- $event->setDeathMessage(null);
- if ($killer instanceof Player){
- $name = $killer->getName();
- $kills = $killdata->get($name);
- $killdata->set($name, $kills + 1);
- $killdata->save();
- $this->addKill($killer);
- }
- }
- }
- public function onCommand(CommandSender $sender, Command $command, $label, array $args) {
- switch (strtolower($command->getName())){
- case "gang":
- case "g":
- $params = [
- "add",
- "remove",
- "list",
- "leave",
- "accept",
- "create",
- "kick"
- ];
- $helpmenu = [
- "§8----- §l§d Gang Help §r §8-----",
- "§8- §a/gang create <gang-name>",
- "§8- §a/gang remove <gang-name>",
- "§8- §a/gang add <name> §7- §eadd a Teammate",
- "§8- §a/gang kick <name> §7- §eremove a Teammate",
- "§8- §a/gang toplist §7- §elist of your current Teamates",
- "§8- §a/gang accept §7- §eaccept an Team request",
- "§8- §a/gang deny §7- §eDenies an Team request",
- "§8- §a/gang list §7- §eList of your gang teammate"
- ];
- if(!in_array(isset($args[0]), $params)) {
- foreach($helpmenu as $msg) {
- $sender->sendMessage($msg);
- }
- return true;
- }
- if($args[0] == "create"){
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- foreach($this->getAllGangs() as $all){
- var_dump($all);
- if(isset($all["gang_name"])){
- $sender->sendMessage ("§aThis Gangs Name already created please enter a new name");
- return;
- }
- }
- if(isset($check["gang_name"]) and $check["leader"] === $sender->getName()){
- $sender->sendMessage("§cyou have already a gang team you can remove with /gang remove <name>");
- return;
- }
- if(isset($check["gang_name"]) and $check["leader"] !== $sender->getName()){
- $sender->sendMessage ("you can't create team because you are already in a gang !\n you can quit with the command /gang leave");
- return;
- }
- if(!isset($args[1])) {
- $sender->sendMessage("§cGangs » Please enter the gangname");
- return true;
- }
- $sender->sendMessage("§ayou have succefully created ".$args[1]);
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- $points = new Config($this->getDataFolder() . "points.yml", Config::YAML);
- $array = $config->get("Gangs", []);
- $array["gang_name"] = $args[1];
- $defaultPoint = $points->get($args[1]);
- $array["leader"] = $sender->getName();
- $array["gang_players"] = [];
- $config->set("Gangs", $array);
- $config->save();
- $config->reload();
- $points->set($args[1], $defaultPoint+0);
- $points->save();
- }
- }
- if($args[0] == "msg"){
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- if(isset($check["gang_name"]) and isset($args[1])) {
- $msg = implode(" ", $args);
- $dir = $this->getDataFolder()."players/";
- $files = scandir($dir);
- unset($files[0],$files[1]);
- foreach($files as $file){
- $cfg1 = new Config($dir.$file);
- $cfg = $cfg1->getAll();
- $found = $cfg["gang_players"];
- foreach ($this->getServer()->getOnlinePlayers () as $pl){
- if (in_array($pl->getName(), $found) and $pl !== null and $pl->isOnline()) {
- $pl->sendMessage("§b{$check["gang_name"]} §f{$sender->getName()} §7>§a {$msg}");
- return true;
- }
- }
- }
- }else{
- $sender->sendMessage("§cyou don't have any gang you can't send message.");
- }
- }
- }
- }
- if($args[0] == "remove"){
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- if(isset($check["gang_name"]) and isset($check["leader"]) and isset($args[1])){
- if($check["leader"] !== $sender->getName()){
- $sender->sendMessage("§cyou are not the leader for remove the gang.");
- return;
- }
- if($check["gang_name"] === $args[1]){
- $sender->sendMessage ("§ayou have succefully removed ".$args[1]);
- $config->set("Gangs", []);
- $config->save();
- }else{
- $sender->sendMessage("§cthe gang name not found !");
- }
- }
- }
- if($args[0] == "leave"){
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- if(isset($check["gang_name"]) and isset($check["gang_players"])){
- if($leave = array_search($sender->getName(), $check["gang_players"])){
- unset($check[$leave]);
- $config->setAll($check);
- $config->save();
- $config->reload();
- $sender->sendMessage ("§ayou have leave the gang !");
- }else{
- $sender->sendMessage("§cyou don't any gang !");
- }
- }
- }
- if($args[0] == "add") {
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- if(!isset($check["gang_name"])){
- $sender->sendMessage("§cplease create your first team follow the command /gang create <name>");
- return;
- }
- if(count($config->get("Gangs")) == $this->config->get("max_gangs")) {
- $sender->sendMessage("§cGangs » You cannot add more Gangs!");
- }
- if(!isset($args[1])) {
- $sender->sendMessage("§cGangs » Please enter the player's name you want to teammate with");
- return true;
- }
- $player = $this->getServer()->getPlayer($args[1]);
- if($player !== null) {
- $this->addRequest($player, $sender);
- }else {
- $sender->sendMessage("§cThat player cannot be found.");
- }
- }
- if($args[0] == "kick") {
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- if(!isset($args[1])) {
- if($check["leader"] !== $sender->getName()){
- $sender->sendMessage("§cyou are not the leader for remove the gang.");
- return;
- }
- $sender->sendMessage("§cGangs » Please enter the teammeate name you want to remove");
- return false;
- }
- if($this->removeTeam($sender, $args[1])) {
- $sender->sendMessage("§aGangs » Teammate removed");
- }else {
- $sender->sendMessage("§cGangs » Team not found do /team list to get a list of your Gangs.");
- }
- }
- if($args[0] == "list") {
- $config = new Config($this->getDataFolder() . "players/" . strtolower($sender->getName()) . ".yml", Config::YAML);
- $array = $config->get("Gangs", []);
- $all = $config->getAll();
- if(empty($all["gang_players"]) or empty($all)){
- $sender->sendMessage("§cGangs » You dont have any Gangs");
- }else {
- $sender->sendMessage("§6§l-= Gangs Teams =-");
- foreach($all["gang_players"] as $allyname) {
- $sender->sendMessage("§7- §a{$allyname}");
- }
- }
- }
- if($args[0] == "accept") {
- if(in_array($sender->getName(), $this->request)) {
- foreach($this->request as $target => $requestp) {
- $target = $this->getServer()->getPlayer($target);
- $requestp = $this->getServer()->getPlayer($requestp);
- if($requestp->getName() === $sender->getName()) {
- $this->addTeam($target, $requestp);
- //$this->addTeam($requestp, $target);
- }else {
- $sender->sendMessage("§cGangs » You have no Teams requests");
- }
- }
- }
- }
- if($args[0] == "toplist"){
- $sender->sendMessage ("§7--- §bGang Lists §7---");
- $cfg = arsort($this->getAllGangs());
- $num = 0;
- foreach($cfg as $all){
- $num++;
- if(!isset($all["gang_name"]) or empty($all["gang_name"])){
- $sender->sendMessage("§cThere is 0 gangs team");
- return;
- }
- if($num == 11){
- break;
- }
- $sender->sendMessage ("§7- §e{$num} §b{$all["gang_name"]} §awith §c{$all["gang_point"]} Kills");
- }
- }
- if($args[0] == "transfer") {
- $config = new Config($this->getDataFolder()."players/". strtolower($sender->getName()) . ".yml", Config::YAML);
- //$all = $config->getAll();
- $check = $config->get("Gangs", []);
- $cfg = $config->getAll();
- if($check["leader"] !== $sender->getName()){
- $sender->sendMessage("§cyou are not the leader for remove the gang.");
- return;
- }
- if(!isset($args[1])) {
- $sender->sendMessage("§cGangs » please enter the name of your teammate.");
- return false;
- }
- $name = $this->getServer()->getPlayerExact($args[1]);
- $found = $check["gang_players"];
- $leader = $check["leader"];
- if($search = array_search($name, $found) !== false){
- unset($check[$found]);
- $config->setAll($check);
- $config->set($leader, $name);
- $config->save();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement