Exemplo n.º 1
1
 public function payTax()
 {
     if (($percent = $this->config->get("tax-as-percentage")) !== "") {
         $players = $this->getServer()->getOnlinePlayers();
         foreach ($players as $player) {
             if ($player->hasPermission("economytax.tax.avoid")) {
                 continue;
             }
             $money = $this->api->myMoney($player);
             $taking = $money * ($percent / 100);
             $this->api->reduceMoney($player, min($money, $taking), true, "EconomyTax");
             $player->sendMessage("Your " . EconomyAPI::getInstance()->getMonetaryUnit() . "{$taking} has taken by tax.");
         }
     } else {
         $money = $this->config->get("tax-as-money");
         $players = $this->getServer()->getOnlinePlayers();
         foreach ($players as $player) {
             if ($player->hasPermission("economytax.tax.avoid")) {
                 continue;
             }
             $this->api->reduceMoney($player, min($this->api->myMoney($player), $money), true, "EconomyTax");
             $player->sendMessage("Your " . EconomyAPI::getInstance()->getMonetaryUnit() . "{$money} has taken by tax.");
         }
     }
 }
Exemplo n.º 2
0
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     $key = $this->getAxisKey($event->getBlock(), self::axisToken);
     if (isset($this->shops[$key]) === false) {
         return;
     }
     $this->economyAPI = EconomyAPI::getInstance();
     $event->setCancelled(true);
     if ($event->getItem()->isPlaceable()) {
         $this->lastInteractedPlayer = $event->getPlayer();
     }
     if ($event->getBlock() instanceof SignPost === false) {
         unset($this->shops[$key]);
         $event->getPlayer()->sendMessage(TextFormat::DARK_RED . self::tag . " Shop has been removed - Shop must be a sign block!");
         return;
     }
     $player = $event->getPlayer();
     if ($this->economyAPI->myMoney($player) < $this->price) {
         $event->getPlayer()->sendMessage(TextFormat::DARK_RED . self::tag . "You don't have enough money to buy!");
         return;
     }
     $this->economyAPI->reduceMoney($player, $this->price);
     array_push($this->box, $player->getName());
     $this->getServer()->broadcastMessage(TextFormat::DARK_AQUA . self::tag . " " . $player->getName() . " bought a lotto ticket!");
     if (count($this->box) == 101) {
         $this->getServer()->broadcastMessage(TextFormat::DARK_AQUA . self::tag . "The winning amount exceeded " . $this->price * 100 . " - Hurry to buy a lotto ticket!");
     }
 }
Exemplo n.º 3
0
 public function onCommand(CommandSender $sp, Command $command, $label, array $args)
 {
     $p = $sp->getName();
     if (!$sp instanceof Player) {
         $sp->sendMessage($this->get("command-inConsole"));
     } else {
         switch ($command) {
             case $this->get("clan"):
                 if (!isset($args[0])) {
                     $this->message($sp, $this->get("clan-help"));
                     break;
                 }
                 switch ($args[0]) {
                     case $this->get("make"):
                         if (!isset($args[1])) {
                             $this->message($sp, $this->get("clan-create-help"));
                             $this->message($sp, $this->get("clan-type"));
                             break;
                         }
                         if ($this->api->myMoney($p) < $this->setting["money"]) {
                             $this->message($sp, $this->get("not-enough-money") . " " . $this->setting["money"] . "\$ " . $this->get("need-money"));
                         } else {
                             if (isset($args[1])) {
                                 if (isset($args[2])) {
                                     $type = $args[2];
                                 } else {
                                     $type = "talk";
                                 }
                                 $this->makeClan($sp, $args[1], $type);
                             }
                         }
                         return true;
                     case $this->get("join"):
                         if (!isset($args[1])) {
                             $this->message($sp, $this->get("clan-notInput"));
                             break;
                         }
                         if ($this->getClan($p) == $args[1]) {
                             $this->message($sp, $this->get("aleady-inClan") . " [" . $args[1] . "]");
                             break;
                         }
                         if ($this->getClan($p) != null) {
                             $this->message($sp, $this->get("aleady-inClan") . " [" . $this->getClan($p) . "]");
                             break;
                         }
                         foreach ($this->clanlist as $cl) {
                             if ($cl == $args[1]) {
                                 $this->clandata[$args[1]][$p] = "user";
                                 array_push($this->clandata[$args[1]]["list"], $p);
                                 $this->playerclan[$p] = $args[1];
                                 $this->message($sp, $this->get("success-joined") . "\"" . $args[1] . "\"");
                                 break;
                             } else {
                                 $this->message($sp, $this->get("PocketClan-cantfindclan"));
                             }
                         }
                         return true;
                     case $this->get("list"):
                         if (isset($args[1])) {
                             $list = "";
                             foreach ($this->clandata[$args[1]]["list"] as $cl) {
                                 $list .= $cl . ", ";
                             }
                             $this->message($sp, "[PocketClan] " . $args[1] . " " . $this->get("people") . " : " . sizeof($this->clandata[$args[1]]["list"]) . " " . $this->get("list") . " : " . $list);
                         } else {
                             $list = "";
                             foreach ($this->clanlist as $cl) {
                                 $list .= $cl . ", ";
                             }
                             $this->message($sp, $list);
                         }
                         return true;
                     case $this->get("leave"):
                         if ($this->getClan($p) != null) {
                             $this->clandata[$this->getClan($p)][$p] = "NotInClan";
                             $this->playerclan[$p] = null;
                             unset($this->clandata[$this->getClan($p)]["list"][array_search($p, $this->clandata[$this->getClan($p)]["list"])]);
                             $this->message($sp, $this->get("leave-clan") . " [" . $this->getClan($p) . "]");
                         } else {
                             $this->message($sp, $this->get("PocketClan-cantfindclan"));
                         }
                         break;
                     default:
                         $this->message($sp, $this->get("clan-help"));
                 }
                 break;
             case $this->get("clanManage"):
                 switch ($args[0]) {
                     case $this->get("delete"):
                         if ($this->clandata[$this->getClan($p)][$p] == "admin") {
                             foreach ($this->clandata[$this->getClan($p)]["list"] as $pl) {
                                 $this->playerclan[$pl] = null;
                             }
                             unset($this->clanlist[array_search($this->getClan($p), $this->clanlist)]);
                             unset($this->clandata[array_search($this->getClan($p), $this->clandata)]);
                         } else {
                             if (!isset($args[1])) {
                                 $this->message($sp, $this->get("delete-help"));
                             } else {
                                 if ($sp->isOP()) {
                                     if (!isset($this->clanlist[$args[1]])) {
                                         $this->message($sp, $this->get("clan-not-found"));
                                         break;
                                     }
                                     foreach ($this->clandata[$args[1]]["list"] as $pl) {
                                         $this->playerclan[$pl] = null;
                                     }
                                     unset($this->clanlist[array_search($args[1], $this->clanlist)]);
                                     unset($this->clandata[array_search($args[1], $this->clandata)]);
                                 }
                             }
                         }
                         return true;
                     case $this->get("ban"):
                         if (!isset($args[1])) {
                             $this->message($sp, $this->get("ban-help"));
                             break;
                         }
                         if (!isset($this->clandata[$this->getClan($p)]["list"][$args[1]])) {
                             $this->message($sp, $this->get("player-not-found"));
                             break;
                         }
                         if ($this->clandata[$this->getClan($p)][$p] == ("admin" || "op")) {
                             $this->playerclan[$args[1]] = null;
                             unset($this->clandata[$this->getClan($p)]["list"][array_search($p, $this->clandata[$this->getClan($p)]["list"])]);
                         }
                         return true;
                     case $this->get("admin"):
                         if (!isset($args[1])) {
                             $sp->sendMessage($this->get("admin-help"));
                         }
                         if (!isset($this->clandata[$this->getClan($p)]["list"][$args[1]])) {
                             $this->message($sp, $this->get("player-not-found"));
                             break;
                         }
                         if ($this->clandata[$this->getClan($p)][$p] == ("admin" || "op")) {
                             $this->clandata[$this->getClan($p)]["list"][array_search($p, $this->clandata[$this->getClan($p)]["list"])] = "op";
                         }
                         return true;
                     default:
                         $this->message($sp, $this->get("clanManage-help"));
                 }
                 break;
             default:
                 $this->message($sp, $this->get("clanManage-help"));
         }
     }
     return true;
 }
Exemplo n.º 4
0
 public function onCommand(CommandSender $sender, Command $command, $label, array $args)
 {
     if (!isset($args[0])) {
         return false;
     }
     switch ($args[0]) {
         case '이동':
             if (!isset($args[1])) {
                 $sender->sendMessage("사용법: /돈이동 이동 <서버명> <액수>");
                 $sender->sendMessage("서버목록 보는법: /돈이동 서버목록");
                 break;
             }
             if (!isset($args[2])) {
                 $sender->sendMessage("사용법: /돈이동 이동 <서버명> <액수>");
                 break;
             }
             if (!isset($this->serverlist[$args[1]])) {
                 $sender->sendMessage("해당 서버를 찾을 수 없습니다.");
                 $sender->sendMessage("서버목록 보는법: /돈이동 서버목록");
                 break;
             }
             if (!is_numeric($amount = $args[2])) {
                 $sender->sendMessage(TextFormat::RED . '금액은 숫자만 입력 가능합니다.');
                 break;
             }
             if ($this->economy->reduceMoney($sender, $amount) !== EconomyAPI::RET_SUCCESS) {
                 $lackmoney = $amount - $this->economy->myMoney($sender);
                 $sender->sendMessage(TextFormat::RED . "당신의 돈이 {$lackmoney}원 부족합니다.");
                 break;
             }
             $data = json_encode(["MoneyTransfer", $sender->getName(), $amount]);
             $packet = new DataPacket($this->serverlist[$args[1]]['ip'], $this->serverlist[$args[1]]['port'], $data);
             CPAPI::sendPacket($packet);
             $sender->sendMessage("돈을 {$args[1]} 서버로 이동하였습니다.");
             break;
         case '서버추가':
             if (!$sender->hasPermission("moneytransfer.cmd.addserver")) {
                 $sender->sendMessage(TextFormat::RED . "당신은 이 명령어를 실행할 권한이 없습니다.");
                 break;
             }
             if (!isset($args[1]) || !isset($args[2])) {
                 $sender->sendMessage("사용법: /돈이동 서버추가 <서버명> <아이피[:포트]>");
                 break;
             }
             $iport = explode(":", $args[2]);
             $ip = $iport[0];
             isset($iport[1]) ? $port = $iport[1] : ($port = 19132);
             $this->serverlist[$args[1]]['ip'] = $ip;
             $this->serverlist[$args[1]]['port'] = $port;
             $sender->sendMessage("{$args[1]} 서버를 추가하였습니다.");
             break;
         case '서버목록':
             $count = 1;
             if (!is_array($this->serverlist)) {
                 $sender->sendMessage("설정된 서버 목록이 없습니다. 관리자에게 문의하세요.");
                 break;
             }
             $serverlist = "";
             foreach ($this->serverlist as $servername => $v1) {
                 $serverlist .= $servername . '    ';
                 if (++$count % 7 == 0) {
                     $serverlist .= "\n";
                 }
             }
             $sender->sendMessage("서버목록: ");
             $sender->sendMessage($serverlist);
             break;
         case '서버제거':
             if (!$sender->hasPermission("moneytransfer.cmd.deleteserver")) {
                 $sender->sendMessage(TextFormat::RED . "당신은 이 명령어를 실행할 권한이 없습니다.");
                 break;
             }
             if (!isset($args[1])) {
                 $sender->sendMessage("사용법: /돈이동 서버제거 <서버명>");
                 return true;
             }
             if (!isset($this->serverlist[$args[1]])) {
                 $sender->sendMessage("해당 서버가 목록에 존재하지 않습니다.");
                 return true;
             }
             unset($this->serverlist[$args[1]]);
             $sender->sendMessage("{$args[1]} 서버를 서버목록에서 제거했습니다.");
             break;
         default:
             return false;
     }
     return true;
 }
Exemplo n.º 5
0
 public function onCommand(CommandSender $sender, Command $command, $label, array $params)
 {
     switch ($command->getName()) {
         case "casino":
             $sub = array_shift($params);
             switch ($sub) {
                 case "start":
                     if (!$sender instanceof Player) {
                         $sender->sendMessage("Please run this command in-game.");
                         break;
                     }
                     if (!$sender->hasPermission("economycasino.command.casino.start")) {
                         return true;
                     }
                     if ($this->config->get("max-game") <= count($this->casino)) {
                         $sender->sendMessage("There are too many games in progress. Please join the other games.");
                         break;
                     }
                     if (isset($this->casino[$sender->getName()])) {
                         $sender->sendMessage("You already have joined casino.");
                         return true;
                     } else {
                         foreach ($this->casino as $player => $casino) {
                             if (isset($casino["players"][$sender->getName()])) {
                                 $sender->sendMessage("You already have joined casino.");
                                 return true;
                             }
                         }
                     }
                     $this->casino[$sender->getName()] = array("players" => array($sender->getName() => true));
                     $this->getServer()->broadcastMessage("[EconomyCasino] Casino of " . $sender->getName() . " has just started.");
                     break;
                 case "stop":
                     if (!$sender instanceof Player) {
                         $sender->sendMessage("Please run this command in-game.");
                         break;
                     }
                     if (!$sender->hasPermission("economycasino.command.casino.stop")) {
                         return true;
                     }
                     if ($sender instanceof Player and !$sender->isOp()) {
                         if (isset($this->casino[$sender->getName()])) {
                             foreach ($this->casino[$sender->getName()]["players"] as $player => $v) {
                                 $this->getServer()->getPlayerExact($player)->sendMessage("[EconomyCasino] You have left the casino due to stop.");
                             }
                             unset($this->casino[$sender->getName()]);
                             $sender->sendMessage("You have stopped your casino.");
                         } else {
                             $sender->sendMessage("You don't have any casino game to quit.");
                         }
                     } else {
                         $player = array_shift($params);
                         if (trim($player) === "") {
                             $sender->sendMessage("Usage: /casino stop <player>");
                             break;
                         }
                         if (isset($this->casino[$player])) {
                             foreach ($this->casino[$player]["players"] as $player => $v) {
                                 $this->getServer()->getPlayerExact($player)->sendMessage("[EconomyCasino] You have left the casino game due to stop.");
                             }
                             $sender->sendMessage("[EconomyCasino] The game by \"{$player}\" has successfully stopped.");
                             unset($this->casino[$player]);
                         }
                     }
                     break;
                 case "join":
                     if (!$sender instanceof Player) {
                         $sender->sendMessage("Please run this command in-game.");
                         break;
                     }
                     if (!$sender->hasPermission("economycasino.command.casino.join")) {
                         return true;
                     }
                     $player = array_shift($params);
                     if (trim($player) === "") {
                         $sender->sendMessage("Usage: /casino join <player>");
                         break;
                     }
                     if (isset($this->casino[$player])) {
                         foreach ($this->casino[$player]["players"] as $player => $v) {
                             if (($p = $this->getServer()->getPlayerExact($player)) instanceof Player) {
                                 $p->sendMessage("[EconomyCasino] " . $sender->getName() . " has joined the game.");
                             }
                         }
                         $this->casino[$player]["players"][$sender->getName()] = true;
                         $sender->sendMessage("You've joined the casino.");
                     } else {
                         $sender->sendMessage("There's no casino where are looking for.");
                     }
                     break;
                 case "leave":
                     if (!$sender instanceof Player) {
                         $sender->sendMessage("Please run this command in-game.");
                         break;
                     }
                     if (!$sender->hasPermission("economycasino.command.casino.leave")) {
                         return true;
                     }
                     foreach ($this->casino as $player => $casino) {
                         if (isset($casino["players"][$sender->getName()])) {
                             unset($this->casino[$player]["players"][$sender->getName()]);
                             foreach ($casino["players"] as $p => $v) {
                                 $this->getServer()->getPlayerExact($p)->sendMessage("[EconomyCasino] " . $sender->getName() . " left the game.");
                             }
                             break;
                         }
                     }
                     $sender->sendMessage("[EconomyCasino] You have no casino game to leave.");
                     break;
                 case "list":
                     if (!$sender->hasPermission("economycasino.command.casino.list")) {
                         return true;
                     }
                     $player = array_shift($params);
                     if (trim($player) === "") {
                         list_general:
                         $output = "[EconomyCasino] Game list : \n";
                         foreach ($this->casino as $player => $casino) {
                             $output .= "{$player} : " . count($this->casino[$player]["players"]) . " \n";
                         }
                         $output = substr($output, 0, -2);
                         $sender->sendMessage($output);
                     } else {
                         if (isset($this->casino[$player])) {
                             $output = "[EconomyCasino] Player list of casino game by : {$player} \n";
                             foreach ($this->casino[$player]["players"] as $p) {
                                 $output .= "{$p}, ";
                             }
                             $output = substr($output, 0, -2);
                         } else {
                             goto list_general;
                         }
                     }
                     break;
                 case "gamble":
                     if (!$sender instanceof Player) {
                         $sender->sendMessage("Please run this command in-game.");
                         break;
                     }
                     if (!$sender->hasPermission("economycasino.command.casino.gamble")) {
                         return true;
                     }
                     $money = array_shift($params);
                     if (!is_numeric($money)) {
                         $sender->sendMessage("Usage: /casino gamble <money>");
                         break;
                     }
                     $money = (int) $money;
                     if ($this->api->myMoney($sender) < $money) {
                         $sender->sendMessage("You don't have money to gamble " . $this->api->getMonetaryUnit() . "{$money}");
                         break;
                     }
                     if (isset($this->casino[$sender->getName()])) {
                         $all = 0;
                         foreach ($this->casino[$sender->getName()]["players"] as $player => $v) {
                             $tmp = min($money, $this->api->myMoney($player));
                             $this->api->reduceMoney($player, $tmp);
                             $all += $tmp;
                         }
                         $got = array_rand($this->casino[$sender->getName()]["players"]);
                         $this->api->addMoney($got, $all, true, "EconomyCasino");
                         foreach ($this->casino[$sender->getName()]["players"] as $p => $v) {
                             if ($got === $p) {
                                 $this->getServer()->getPlayerExact($p)->sendMessage("You've win " . $this->api->getMonetaryUnit() . "{$all}!");
                             } else {
                                 $this->getServer()->getPlayerExact($p)->sendMessage("You've lost " . $this->api->getMonetaryUnit() . "{$money}");
                             }
                         }
                     } else {
                         foreach ($this->casino as $player => $casino) {
                             if (isset($casino["players"][$sender->getName()])) {
                                 $all = 0;
                                 foreach ($this->casino[$player]["players"] as $p => $true) {
                                     $tmp = min($this->api->myMoney($p), $money);
                                     $this->api->reduceMoney($p, $tmp);
                                     $all += $tmp;
                                 }
                                 $got = array_rand($this->casino[$player]["players"]);
                                 $this->api->addMoney($got, $all, true, "EconomyCasino");
                                 foreach ($this->casino[$player]["players"] as $p => $v) {
                                     if ($got === $p) {
                                         $this->getServer()->getPlayerExact($p)->sendMessage("You've win " . $this->api->getMonetaryUnit() . "{$all}!");
                                     } else {
                                         $this->getServer()->getPlayerExact($p)->sendMessage("You've lost " . $this->api->getMonetaryUnit() . "{$money}");
                                     }
                                 }
                             }
                         }
                     }
                     break;
                 default:
                     $sender->sendMessage("Usage: " . $command->getUsage());
             }
             break;
         case "jackpot":
             if (!$sender instanceof Player) {
                 $sender->sendMessage("Please run this command in-game.");
                 break;
             }
             $money = array_shift($params);
             if (!is_numeric($money)) {
                 $sender->sendMessage("Usage: " . $command->getUsage());
                 break;
             }
             $money = (int) $money;
             if ($this->api->myMoney($sender) < $money) {
                 $sender->sendMessage("You don't have money to jackpot " . $this->api->getMonetaryUnit() . "{$money}");
                 break;
             }
             $rand = rand(0, $this->config->get("jackpot-winning"));
             if ($rand === 0) {
                 $this->api->addMoney($sender, $money);
                 $sender->sendMessage("You've wined jackpot! You've got " . $this->api->getMonetaryUnit() . "{$money}");
             } else {
                 $this->api->reduceMoney($sender, $money);
                 $sender->sendMessage("You've failed your jackpot! You've lost " . $this->api->getMonetaryUnit() . "{$money}");
             }
             break;
     }
     return true;
 }
Exemplo n.º 6
0
 public function onPacketReceive(CustomPacketReceiveEvent $ev)
 {
     $data = $ev->getPacket()->data;
     // json 화 필요할 수도 있음
     if (!is_array($data)) {
         echo "[테스트] 어레이가 아닌 정보 전달됨";
         return;
     }
     if ($data[0] != $this->db["passcode"]) {
         echo "[테스트] 패스코드가 다른 정보 전달됨";
         return;
     }
     if ($this->db["mode"] == "master") {
         // 마스터 서버 코딩
         switch ($data[1]) {
             case "createBank":
                 // slave->master = [0패스코드, 1createBank, 2계좌명, 3username, 4비용]
                 // master->slave = [0패스코드, 1createBank, 2계좌명, 3username, 4true:success|false:failed]
                 if (isset($this->db["bank"][$data[2]])) {
                     $data[4] = false;
                     CPAPI::sendPacket(new DataPacket($ev->getPacket()->address, $ev->getPacket()->port, $data));
                     break;
                 }
                 $this->db["bank"][$data[2]]["price"] = $data[4];
                 $this->db["bank"][$data[2]]["username"] = $data[3];
                 $data[4] = true;
                 CPAPI::sendPacket(new DataPacket($ev->getPacket()->address, $ev->getPacket()->port, $data));
                 break;
             case "useBank":
                 // slave->master = [0패스코드, 1useBank, 2계좌명, 3username]
                 // master->slave = [0패스코드, 1useBank, 2계좌명, 3username, 4true:success|false:failed]
                 if (!isset($this->db["bank"][$data[2]])) {
                     $data[4] = false;
                     CPAPI::sendPacket(new DataPacket($ev->getPacket()->address, $ev->getPacket()->port, $data));
                     break;
                 }
                 $price = $this->db["bank"][$data[2]]["price"];
                 $playerMoney = $this->economyAPI->myMoney($this->db["bank"][$data[2]]["username"]);
                 if ($playerMoney >= $price) {
                     // 해당계좌 돈뺏기
                     $this->economyAPI->reduceMoney($this->db["bank"][$data[2]]["username"], $price);
                     // 해당 돈 유저에게 지급하기
                     $this->economyAPI->addMoney($data[3], $price);
                     $data[4] = true;
                     CPAPI::sendPacket(new DataPacket($ev->getPacket()->address, $ev->getPacket()->port, $data));
                 } else {
                     $data[4] = false;
                     CPAPI::sendPacket(new DataPacket($ev->getPacket()->address, $ev->getPacket()->port, $data));
                 }
                 unset($this->db["bank"][$data[2]]);
                 break;
         }
     } else {
         // 슬레이브 서버 코딩
         $player = $this->getServer()->getPlayer($data[1]);
         if (!$player instanceof Player) {
             return;
         }
         switch ($data[1]) {
             case "createBank":
                 // master->slave = [0패스코드, 1createBank, 2계좌명, 3username, 4true:success|false:failed]
                 // failed-createBank
                 if ($data[4] == false) {
                     $this->message($player, $this->get("failed-createBank"));
                     break;
                 }
                 $this->db["bank"][$data[0]]["price"] = $data[1];
                 $this->db["bank"][$data[0]]["username"] = $player->getName();
                 $this->message($player, $this->get("passcode-created"));
                 break;
             case "useBank":
                 // slave->master = [0패스코드, 1useBank, 2계좌명, 3username]
                 // master->slave = [0패스코드, 1useBank, 2계좌명, 3username, 4true:success|false:failed]
                 break;
         }
     }
 }