Advertisement
Guest User

Untitled

a guest
Aug 13th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.67 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement