Пример #1
0
 public function __construct(Player $player, array $skills = [], $job = 0, array $status = [], $mana = -1, $health = -1)
 {
     $this->isArmed = true;
     $this->player = $player;
     $this->job = JobManager::getJob($job);
     $this->status = new PlayerStatus($status, $this);
     $this->armorStatus = new Status([Status::MAX_HP => 0, Status::MAX_MP => 0, Status::STR => 0, Status::INT => 0, Status::DEX => 0, Status::LUK => 0]);
     $this->skillStatus = new Status([Status::MAX_HP => 0, Status::MAX_MP => 0, Status::STR => 0, Status::INT => 0, Status::DEX => 0, Status::LUK => 0]);
     $this->mana = $mana === -1 ? $this->getFinalValue(Status::MAX_MP) : $mana;
     $this->health = $health === -1 ? $this->getFinalValue(Status::MAX_HP) : $health;
     $this->skills = [];
     foreach ($skills as $skillTag) {
         $skillData = explode(";", $skillTag);
         $skill = SkillManager::getSkill($skillData[0]);
         $skill->setPlayer($this);
         if (count($skillData) > 1) {
             $skill->setLevel($skillData[1]);
         }
         $this->skills[$skill->getItem()->getId() . ";" . $skill->getItem()->getDamage()] = $skill;
         $skill->onPassiveInit();
     }
     $this->notifyXP();
     $this->finalUse = 0;
     if (ToAruPG::getConfiguration("remove-hunger", false)) {
         $this->sendAttribute(Attribute::getAttribute(ToAruPG::ATTRIBUTE_HUNGER)->setValue(0)->setMaxValue(0));
     }
 }
Пример #2
0
 public function onEnable()
 {
     JobManager::registerJob(new JobArcher());
     SkillManager::registerSkill(new SkillArrowRepeat());
     SkillManager::registerSkill(new SkillDash());
     SkillManager::registerSkill(new SkillDualArrow());
     SkillManager::registerSkill(new SkillExplosionArrow());
     SkillManager::registerSkill(new SkillArrowMastery());
     SkillManager::registerSkill(new SkillSplitShot());
     SkillManager::registerSkill(new SkillQuickShot());
     SkillManager::registerSkill(new SkillManaIncrease());
     SkillManager::registerSkill(new SkillBowMastery());
     SkillManager::registerSkill(new SkillLightningShot());
     $this->getServer()->getPluginManager()->registerEvents($this, $this);
     Entity::registerEntity("Khinenw\\Archer\\EffectArrow");
     ToAruPG::addAllTranslation($this->getResource("translation.yml"));
     self::$instance = $this;
 }
Пример #3
0
 public function buy(Player $buyer)
 {
     $rpg = ToAruPG::getInstance()->getRPGPlayerByName($buyer);
     $job = JobManager::getJob($this->jobId);
     $rpg->changeJob($job);
     foreach ($job->getSkills() as $skill) {
         $skill = SkillManager::getSkill($skill);
         if (!$skill->canBeAcquired($rpg)) {
             $buyer->sendMessage(TextFormat::RED . ToAruPG::getTranslation("SKILL_COULD_NOT_ACQUIRE", ToAruPG::getTranslation($skill->getName())));
             continue;
         }
         if ($rpg->hasSkill($skill->getId())) {
             $buyer->sendMessage(TextFormat::RED . ToAruPG::getTranslation("ALREADY_HAS_SKILL", ToAruPG::getTranslation($skill->getName())));
             continue;
         }
         $rpg->acquireSkill($skill);
     }
     EconomyAPI::getInstance()->reduceMoney($buyer, $this->cost, true, "To Aru Shop");
     $buyer->sendMessage(TextFormat::AQUA . ToAruPG::getTranslation("BOUGHT"));
 }
Пример #4
0
 public function onEnable()
 {
     @mkdir($this->getDataFolder());
     self::$instance = $this;
     self::$translation = (new Config($this->getDataFolder() . "translation.yml", Config::YAML, yaml_parse(stream_get_contents($this->getResource("translation.yml")))))->getAll();
     self::$configuration = (new Config($this->getDataFolder() . "config.yml", Config::YAML))->getAll();
     self::$pvpEnabled = self::getConfiguration("pvp-enabled", false);
     XcelUpdater::chkUpdate($this);
     $this->players = [];
     JobManager::registerJob(new JobAdventure());
     $this->getServer()->getScheduler()->scheduleRepeatingTask(new HealTask($this), 1200);
     $this->getServer()->getScheduler()->scheduleRepeatingTask(new UITask($this), 15);
     $this->getServer()->getPluginManager()->registerEvents($this, $this);
     $autoSaveTerm = self::getConfiguration("auto-save", 10);
     if ($autoSaveTerm < 0) {
         $this->getLogger()->alert(TextFormat::YELLOW . "Auto save turned-off!");
     } else {
         $this->getServer()->getScheduler()->scheduleRepeatingTask(new AutoSaveTask($this), $autoSaveTerm * 60 * 20);
     }
     Attribute::addAttribute(self::ATTRIBUTE_HUNGER, "player.huger", 0, 20, 20, true);
 }
Пример #5
0
 public function onSignChange(SignChangeEvent $event)
 {
     $text = $event->getLines();
     $prefix = strtoupper($text[0]);
     if ($prefix !== "[ARUSHOP]") {
         return;
     }
     if (!$event->getPlayer()->hasPermission("arushop.create")) {
         $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation("NO_PERMISSION"));
         return;
     }
     $cost = $text[2];
     $meta = $text[3];
     $tag = $event->getBlock()->getX() . ";" . $event->getBlock()->getY() . ";" . $event->getBlock()->getZ() . ";" . $event->getBlock()->getLevel()->getFolderName();
     if (!is_numeric($cost) || !is_numeric($meta)) {
         $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation("WRONG_SHOP_META"));
         return;
     }
     switch (strtoupper($text[1])) {
         case "JOB":
             if (JobManager::getJob($meta) === null) {
                 $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation("WRONG_SHOP_META"));
                 return;
             }
             $this->shops[$tag] = new JobShop($meta, $cost, ToAruPG::getTranslation("TAP_ONE_MORE"));
             $meta = ToAruPG::getTranslation(JobManager::getJob($meta)->getName());
             $name = ToAruPG::getTranslation("JOB_SHOP");
             break;
         case "SKILL":
             if (SkillManager::getSkill($meta) === null) {
                 $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation("WRONG_SHOP_META"));
                 return;
             }
             $this->shops[$tag] = new SkillShop($meta, $cost, ToAruPG::getTranslation("TAP_ONE_MORE"));
             $meta = ToAruPG::getTranslation(SkillManager::getSkill($meta)->getName());
             $name = ToAruPG::getTranslation("SKILL_SHOP");
             break;
         case "SET":
             if (JobManager::getJob($meta) === null) {
                 $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation("WRONG_SHOP_META"));
                 return;
             }
             $this->shops[$tag] = new SetShop($meta, $cost, ToAruPG::getTranslation("TAP_ONE_MORE"));
             $meta = ToAruPG::getTranslation(JobManager::getJob($meta)->getName());
             $name = ToAruPG::getTranslation("SET_SHOP");
             break;
         default:
             $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation("WRONG_SHOP_META"));
             return;
     }
     $this->saveShops();
     $event->setLine(0, $name);
     $event->setLine(1, TextFormat::AQUA . $meta);
     $event->setLine(2, $cost . EconomyAPI::getInstance()->getMonetaryUnit());
     $event->setLine(3, "");
     $event->getPlayer()->sendMessage(TextFormat::AQUA . ToAruPG::getTranslation("SHOP_CREATED"));
 }
Пример #6
0
 public function buy(Player $buyer)
 {
     ToAruPG::getInstance()->getRPGPlayerByName($buyer)->changeJob(JobManager::getJob($this->jobId));
     EconomyAPI::getInstance()->reduceMoney($buyer, $this->cost, true, "To Aru Shop");
     $buyer->sendMessage(TextFormat::AQUA . ToAruPG::getTranslation("BOUGHT"));
 }