Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private function claim($player, $username, $region)
- {
- $level = $player->getLevel()->getName();
- $xgroup = $this->plugin->xgroup->getAll();
- if ($this->plugin->config->get('use_world_parameter') === true) {
- $user_group = $this->plugin->getPlayerGroup($player->getName(), array('levelName' => $level));
- } else {
- $user_group = $this->plugin->getPlayerGroup($player->getName(), array('levelName' => null));
- }
- if (isset($xgroup[$user_group]) && is_array($xgroup[$user_group])) {
- $group = $user_group;
- } else {
- $group = $this->plugin->config->get("default_group");
- }
- if (!empty($region) && preg_match("/^[a-zA-Z0-9_]+$/", $region)) {
- $check = $this->plugin->db->query("SELECT COUNT(*) as count FROM AREAS WHERE Region = '$region'")->fetchArray(SQLITE3_ASSOC);
- if (!$check['count']) {
- if (!isset($this->plugin->pos1[$username]) || !isset($this->plugin->pos2[$username])) {
- $msg_claimselectarea = $this->plugin->msg("msg_claimselectarea");
- $player->sendMessage($msg_claimselectarea);
- return true;
- }
- if ($this->plugin->pos1[$username][3] !== $this->plugin->pos2[$username][3]) {
- $msg_claimselectedpositionsindifferentworlds = $this->plugin->msg("msg_claimselectedpositionsindifferentworlds");
- $player->sendMessage($msg_claimselectedpositionsindifferentworlds);
- return true;
- }
- $pos1 = $this->plugin->pos1[$username];
- $pos2 = $this->plugin->pos2[$username];
- $min[0] = min($pos1[0], $pos2[0]);
- $max[0] = max($pos1[0], $pos2[0]);
- $min[1] = min($pos1[1], $pos2[1]);
- $max[1] = max($pos1[1], $pos2[1]);
- $min[2] = min($pos1[2], $pos2[2]);
- $max[2] = max($pos1[2], $pos2[2]);
- $count = $this->plugin->countBlocks($min[0], $min[1], $min[2], $max[0], $max[1], $max[2]);
- $result = $this->plugin->db->query("SELECT * FROM AREAS WHERE Pos2X >= $min[0] AND Pos1X <= $max[0] AND Pos2Y >= $min[1] AND Pos1Y <= $max[1] AND Pos2Z >= $min[2] AND Pos1Z <= $max[2] AND Level = '" . $pos1[3] . "';")->fetchArray(SQLITE3_ASSOC);
- if ($result !== false && !$player->isOp()) {
- $msg_claimregionoverlapsotherregion = $this->plugin->msg("msg_claimregionoverlapsotherregion");
- $msg_claimregionoverlapsotherregion = str_replace("{REGION}", $result['Region'], $msg_claimregionoverlapsotherregion);
- $player->sendMessage($msg_claimregionoverlapsotherregion);
- return true;
- } elseif (($count > $xgroup[$group]['max_region_count_blocks']) && !$player->isOp()) {
- $msg_claimmaxblocks = $this->plugin->msg("msg_claimmaxblocks");
- $msg_claimmaxblocks = str_replace("{MAX_BLOCKS}", $xgroup[$group]['max_region_count_blocks'], $msg_claimmaxblocks);
- $msg_claimmaxblocks = str_replace("{SELECTED_BLOCKS}", $count, $msg_claimmaxblocks);
- $player->sendMessage($msg_claimmaxblocks);
- return true;
- }
- $level = $pos1[3];
- $rg_count = $this->plugin->db->query("SELECT COUNT(*) as count FROM AREAS WHERE Owner = '$username'")->fetchArray();
- if ($rg_count['count'] < $xgroup[$group]["max_regions_num"] || $player->isOp()) {
- $this->plugin->db->exec("INSERT INTO AREAS (Owner, Pos1X, Pos1Y, Pos1Z, Pos2X, Pos2Y, Pos2Z, Level, Region) VALUES ('$username', $min[0], $min[1], $min[2], $max[0], $max[1], $max[2], '$level', '$region')");
- unset($this->plugin->pos1[$username]);
- unset($this->plugin->pos2[$username]);
- $msg_claimsuccess = $this->plugin->msg("msg_claimsuccess");
- $msg_claimsuccess = str_replace("{REGION}", $region, $msg_claimsuccess);
- $player->sendMessage($msg_claimsuccess);
- $this->plugin->getServer()->dispatchCommand($player, "flag ".$region." pvp deny");
- } else {
- $msg_claimmaxregions = $this->plugin->msg("msg_claimmaxregions");
- $msg_claimmaxregions = str_replace("{MAX_REGIONS}", $xgroup[$group]['max_regions_num'], $msg_claimmaxregions);
- $msg_claimmaxregions = str_replace("{CREATED_REGIONS}", $rg_count['count'], $msg_claimmaxregions);
- $player->sendMessage($msg_claimmaxregions);
- }
- } else {
- $msg_claimregionalreadyexists = $this->plugin->msg("msg_claimregionalreadyexists");
- $msg_claimregionalreadyexists = str_replace("{REGION}", $region, $msg_claimregionalreadyexists);
- $player->sendMessage($msg_claimregionalreadyexists);
- }
- } else {
- $msg_claimincorrect = $this->plugin->msg("msg_claimincorrect");
- $player->sendMessage($msg_claimincorrect);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement