
<?php
echo "PocketMine-MP plugin Company v2.1.0
This file has been generated using DevTools v1.13.5 at Sat, 18 Jul 2020 18:06:28 +0900
----------------
";

if(extension_loaded("phar")){
	$phar = new \Phar(__FILE__);
	foreach($phar->getMetadata() as $key => $value){
		echo ucfirst($key) . ": " . (is_array($value) ? implode(", ", $value) : $value) . "\n";
	}
}

__HALT_COMPILER(); ?>
             I  a:9:{s:4:"name";s:7:"Company";s:7:"version";s:5:"2.1.0";s:4:"main";s:25:"ryota3422\company\Company";s:3:"api";s:5:"3.0.0";s:6:"depend";a:1:{i:0;s:10:"EconomyAPI";}s:11:"description";s:63:"会社運営にあると便利な機能を多数追加します";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1595063188;}
   plugin.ymlc  _c        !   src/ryota3422/company/Company.phpP  _P  9Q3      name: Company
main: ryota3422\company\Company
version: 2.1.0
api: 3.0.0
depend:
  - EconomyAPI
load: POSTWORLD
auther: ryota3422
description: 会社運営にあると便利な機能を多数追加します
commands:
  company:
    description: 会社の設定コマンド

  cpbank:
    description: 会社銀行を利用するコマンド
<?php

namespace ryota3422\company;

use pocketmine\Player;
use pocketmine\plugin\Plugin;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use pocketmine\utils\Config;

class Company extends PluginBase implements Listener{

  /**
   * @var Plugin|null
   */
  private $EA;
  /**
   * @var Plugin|null
   */
  private $settings;
  /**
   * @var Config
   */
  private $company;

  public function onEnable(){
    $this->getLogger()->info("§bCompany_forEAを読み込みました。製作ryota3422 二次配布は禁止です。本プラグインはeconomyAPI用です.。");
    $this->getLogger()->info("§bEconomyAPIを読み込みます");
    $this->EA = $this->getServer()->getPluginManager()->getPlugin("EconomyAPI");
    if(!file_exists($this->getDataFolder())){
      mkdir($this->getDataFolder(), 0744, true);
    }

      $this->settings = new Config($this->getDataFolder() . "config.yml", Config::YAML,
      array(
          '利子機能' => 'on',
          '利子' => '100000'
      ));

      $this->company = new Config($this->getDataFolder() . "company.yml", Config::YAML,//会社の基本データを保存
        array(
      ));
  }


  public function onDisable(){//利子
  
    if($this->settings->get('利子機能') == 'on'){
      $this->getLogger()->info("§b[会社銀行]:§f利子の追加を開始します。");
      $rate=$this->settings->get('利子');
      $all=$this->company->getAll();
      ksort($all,SORT_NUMERIC);
      $list=array_values($all);
      for($number=0; array_key_exists($number,$list); $number++){
          $data=$list[$number];//会社データ
          $bank=$data["money"];//現在の預金
          $cpname=$data["name"];
          $risi=$bank / $rate;//利子
          $data["money"]=floor($bank + $risi);//利子追加後データ
          $this->company->set($cpname, $data);
          $this->company->save();
      }
    }
  }

//api
  public function permission($cpname,CommandSender $sender){//社長か判別
    $name=$sender->getName();
    $check=",{$name},";
    $cpdata=$this->company->get($cpname);
    if(!strstr($cpdata["pre"],$check)){
      $sender->sendMessage("§b[会社] >>> §cあなたはその会社({$cpname})の社長ではありません。");
      return false;
    }
    return true;
  }

  public function manager($cpname,CommandSender $sender){//課長以上の権限確認
    $name=$sender->getName();
    $check=",{$name},";
    $data=$this->company->get($cpname);
    if(strstr($data["pre"],$check)){
      return true;

      }elseif(strstr($data["mana"],$check)){
      return true;

      }else{
        $sender->sendMessage("§b[会社銀行] >>> §cあなたはその会社({$cpname})の課長/社長ではありません。");
        return false;
      }
  }

  public function member($cpname,CommandSender $sender){//会社のメンバーか
    $name=$sender->getName();
    $check=",{$name},";
    $data=$this->company->get($cpname);
    if(strstr($data["pre"],$check)){
      return true;

      }elseif(strstr($data["mana"],$check)){
        return true;

      }elseif(strstr($data["emp"],$check)){
        return true;

      }else{
        $sender->sendMessage("§b[会社銀行] >>> §cあなたは会社({$cpname})のメンバーではありません。");
        return false;
    }

  }

//銀行

  public function get($cpname){//ok 預金確認
    $data=$this->company->get($cpname);
    return $data["money"];
  }
  
  public function add($cpname,$amount){
    $amount=floor($amount);
    $data=$this->company->get($cpname);
    $bank=$data["money"];
    $data["money"]=$bank+$amount;
    $this->company->set($cpname,$data);
    $this->company->save();
    return $data["money"];
  }
  
  public function remove($cpname,$amount){
    $amount=floor($amount);
    $data=$this->company->get($cpname);
    $bank=$data["money"];
    $data["money"]=$bank-$amount;
    $this->company->set($cpname,$data);
    $this->company->save();
    return $data["money"];
  }

  public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
    if($command->getName() =="company"){
      $subcmd=strtolower(array_shift($args));
      switch($subcmd){
        case"register":
        case"re":
          if($sender instanceof Player){
            if(!$sender->isOp()){
              $sender->sendMessage("§b[会社] >>> §cOPのみ使用可能です。");
              break;
            }
          }

          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company register(re) <会社名> <社長名>");
            break;

          }elseif(!isset($args[1])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company register(re) <会社名> <社長名>");
            break;
          }

          $cpname=$args[0];
          $name=$args[1];
          if($this->company->exists($args[0])){
            $sender->sendMessage("§b[会社] >>> §c同名の会社があります。名前を変えてください");
            break;
          }

          $president=",{$name},";//社長名前
          $cpdata=[
          "pre"=>"$president",//社長
          "mana"=>",",//課長
          "emp"=>",",//社員
          "money"=>"0",//銀行
          "name"=>"$cpname"
          ];
          $this->company->set($cpname, $cpdata);
          $this->company->save();
          $sender->sendMessage("§b[会社] >>> §a会社({$cpname})を作成しました");
          break;

//
        case"delete":
        case"del":
          if($sender instanceof Player){
            if(!$sender->isOp()){
              $sender->sendMessage("§b[会社] >>> §cOPのみ使用可能です。");
              break;
            }
          }

          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company delete(del) <会社名>");
            break;
          }

          $cpname=$args[0];
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          $this->company->remove($cpname);
          $this->company->save();
          $this->cpic->remove($cpname);
          $this->cpic->save();
          $sender->sendMessage("§b[会社] >>> §a会社({$cpname})を削除しました");
          break;


        case"new":
          if(!$sender instanceof Player){
            $sender->sendMessage("§b[会社] >>> §cコンソールでは実行できません。");
            break;
          }

          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company new <会社名> <追加社員名>");
            break;

          }elseif(!isset($args[1])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company new <会社名> <追加社員名>");
            break;
          }

          $cpname=$args[0];
          $name=$args[1];
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          if(Company::permission($cpname, $sender) == false){
            break;
          }

          $data=$this->company->get($cpname);
          $check=",{$name},";
          if(strstr($data["pre"], $check) or strstr($data["mana"], $check) or strstr($data["emp"], $check)){
            $sender->sendMessage("§b[会社銀行] >>> §c{$name}は既に会社({$cpname})のメンバーです。");
            break;
          }

          $data["emp"].="{$name},";
          $this->company->set($cpname, $data);
          $this->company->save();
          $sender->sendMessage("§b[会社] >>> §a会社({$cpname})に社員({$name})を追加しました。");
          break;


        case"prom":
          if(!$sender instanceof Player){
            $sender->sendMessage("§b[会社] >>> §cコンソールでは実行できません。");
            break;
          }

          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company prom <会社名> <昇格社員名>");
            break;

          }elseif(!isset($args[1])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company prom <会社名> <昇格社員名>");
            break;
          }

          $cpname=$args[0];
          $name=$args[1];
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          if(Company::permission($cpname, $sender) == false){
            break;
          }

          $data=$this->company->get($cpname);
          $check=",{$name},";
          if(strstr($data["mana"], $check) or !strstr($data["emp"], $check)){
            $sender->sendMessage("§b[会社銀行] >>> §c{$name}は既に昇格済み、又は存在しない社員です。");
            break;
          }

          $add="{$name},";
          $data["mana"].=$add;
          $new=str_replace("$add", "", $data["emp"]);
          $data["emp"]=$new;
          $this->company->set($cpname, $data);
          $this->company->save();
          $sender->sendMessage("§b[会社] >>> §a会社({$cpname})の社員({$name})を昇格しました。");
          break;


        case"fire":
          if(!$sender instanceof Player){
            $sender->sendMessage("§b[会社] >>> §cコンソールでは実行できません。");
            break;
          }

          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company fire <会社名> <解雇社員名>");
            break;

          }elseif(!isset($args[1])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company fire <会社名> <解雇社員名>");
            break;
          }

          $cpname=$args[0];
          $name=$args[1];
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          if(Company::permission($cpname,$sender) == false){
            break;
          }

          $data=$this->company->get($cpname);
          $check=",{$name},";
          if(!strstr($data["mana"], $check) and !strstr($data["emp"], $check)){
            $sender->sendMessage("§b[会社銀行] >>> §c{$name}は会社({$cpname})に存在しない、又は解雇されたメンバーです。");
            break;
          }

          $del="{$name},";
          $new1=str_replace($del, "", $data["mana"]);//課長から削除
          $new2=str_replace($del, "", $data["emp"]);//社員から削除
          $data["mana"]=$new1;
          $data["emp"]=$new2;
          $this->company->set($cpname, $data);
          $this->company->save();
          $sender->sendMessage("§b[会社] >>> §a会社({$cpname})のメンバー({$name})を解雇しました。");
          break;


        case"info":
          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company info <会社名>");
            break;
          }

          $cpname=$args[0];
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          $data=$this->company->get($cpname);
          $pre=$data["pre"];
          $pre=ltrim($pre, ",");
          $pre=rtrim($pre, ",");
          $mana=$data["mana"];
          $mana=ltrim($mana, ",");
          $mana=rtrim($mana, ",");
          $emp=$data["emp"];
          $emp=ltrim($emp, ",");
          $emp=rtrim($emp, ",");
          $bank=$data["money"];
          $sender->sendMessage("§b[会社] >>> §a会社({$cpname})の情報");
          $sender->sendMessage("§f社長:{$pre}");
          $sender->sendMessage("§f課長:{$mana}");
          $sender->sendMessage("§f社員:{$emp}");
          $sender->sendMessage("§f預金:{$bank}");
          break;

//
        case"list":
          if(!isset($args[0])){
            $sender->sendMessage("§b[会社] >>> §f使用方法:/company list <ページ数>");
            $sender->sendMessage("§f10社で1ページとなっています.存在しないページ数になった場合は何も表示されません");
            break;
          }elseif(!is_numeric($args[0])){
            $sender->sendMessage("§b[会社] >>> §cページ数は数字で指定して下さい。");
            break;
          }

          $all=$this->company->getAll();
          $page=$args[0];
          $last=($page * 10)-1;
          $first=$last - 9;
          ksort($all,SORT_NUMERIC);
          $list=array_values($all);
          $sender->sendMessage("§b[会社] >>> 会社リスト({$page}ページ目)");
          $sender->sendMessage("§b見方-> 会社名：社長名");
          for($number=$first; $number < $last + 1; $number++){
            if(array_key_exists($number, $list)){
              $data=$list[$number];
              $cpname=$data["name"];
              $pre=$data["pre"];
              $pre=ltrim($pre, ",");
              $pre=rtrim($pre, ",");
              $sender->sendMessage("{$cpname} : {$pre}");
            }
          }
          break;


        default:
          $sender->sendMessage("§b[会社] >>> §fコマンド一覧");
          $sender->sendMessage("§b社員追加:§f/company new <会社名> <社員名>");
          $sender->sendMessage("§b社員昇格:§f/company prom <会社名> <社員名>");
          $sender->sendMessage("§b会社情報確認:§f/company info <会社名>");
          $sender->sendMessage("§b会社一覧:§f/company list <ページ数>");
          $sender->sendMessage("§b会社設立(OPのみ):§f/company register(re) <会社名> <社長名>");
          $sender->sendMessage("§b会社削除(OPのみ):§f/company delete(del) <会社名>");
          break;
      }//company
    }

    if($command->getName() =="cpbank"){
      $subcmd=strtolower(array_shift($args));
      switch($subcmd){

        case"dp":
          if(!isset($args[0])){
            $sender->sendMessage("§b[会社銀行] >>> §f使用方法: /cpbank dp <会社名> <金額>");
            break;
          }

          if(!isset($args[1])){
            $sender->sendMessage("§b[会社銀行] >>> §c預ける金額を指定して下さい。");
            break;
          }elseif(!is_numeric($args[1])){
            $sender->sendMessage("§b[会社銀行] >>> §c預けるお金は金額は数字で指定して下さい。");
            break;
          }

          $cpname=$args[0];
          $amount=abs($args[1]);
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          if($sender instanceof Player){
            if(!$sender->isOp()){
              if(Company::member($cpname, $sender) == false){
                break;
              }

              $name=$sender->getName();
              $cmd=$this->EA->myMoney($name);//コマンド実行者のお金(op以外)
              if($amount > $cmd){
                $sender->sendMessage("§b[会社銀行] >>> §c預けるお金が足りません。");
                break;
              }
              $this->EA->reduceMoney($name,$amount);
            }
          }

          $bank=Company::add($cpname,$amount);
          $sender->sendMessage("§b[会社銀行] >>> §a会社({$cpname})に{$amount}円を預けました。残高{$bank}円");
          break;


        case"wd":
          if(!isset($args[0])){
            $sender->sendMessage("§b[会社銀行] >>> §f使用方法: /cpbank wd <会社名> <金額>");
            break;
          }

          if(!isset($args[1])){
            $sender->sendMessage("§b[会社銀行] >>> §c引き出す金額を指定して下さい。");
            break;
          }elseif(!is_numeric($args[1])){
            $sender->sendMessage("§b[会社銀行] >>> §c引き出す金額は数字で指定して下さい。");
            break;
          }

          $cpname=$args[0];
          $amount=abs($args[1]);
          if(!$this->company->exists($cpname)){
            $sender->sendMessage("§b[会社] >>> §c存在しない会社です。名前を確認してください");
            break;
          }

          $data=$this->company->get($cpname);
          $bank=$data["money"];//銀行の預金
          if($amount > $bank){
            $sender->sendMessage("§b[会社銀行] >>> §c引き出すお金が足りません。");
            break;
          }

          if($sender instanceof Player){
            if(!$sender->isOp()){
              if(Company::member($cpname, $sender) == false){
                break;
              }

              $name=$sender->getName();
              $this->EA->addMoney($name,$amount);
            }
          }

          $bank=Company::remove($cpname,$amount);
          $sender->sendMessage("§b[会社銀行] >>> §a会社({$cpname})から{$amount}円を引き出しました。残高{$bank}円");
          break;


        case"set":
          if($sender instanceof Player){
            if(!$sender->isOp()){
              $sender->sendMessage("§b[会社銀行] >>> §cOPのみ実行可能です。");
              break;
            }
          }

          if(!isset($args[0])){
            $sender->sendMessage("§b[会社銀行]:§f利子機能設定方法");
            $sender->sendMessage("§b利子機能のon/off:§f/cpbank set risi");
            $sender->sendMessage("§b利子の配布金額(指定金額につき1円):§f/cpbank set rate <指定数>");
            break;
          }

          if($args[0]=="risi"){
            if($this->settings->get('利子機能')=='on'){
              $this->settings->set('利子機能','off');
              $this->settings->save();
              $sender->sendMessage("§b[会社銀行] >>> §a利子機能をoffにしました。");
              break;

            }else{
              $this->settings->set('利子機能','on');
              $this->settings->save();
              $sender->sendMessage("§b[会社銀行] >>> §a利子機能をonにしました。");
              break;
            }

          }elseif($args[0]=='rate'){
            if(!isset($args[1])){
              $sender->sendMessage("§b[会社銀行] >>> §c指定する数を入力してください。");
              break;
            }

            if(!is_numeric($args[1])){
              $sender->sendMessage("§b[会社銀行] >>> §c指定数は数字で設定してください。");
              break;
            }

            $this->settings->set('利子',$args[1]);
            $this->settings->save();
            $sender->sendMessage("§b[会社銀行] >>> §a利子を＜{$args[1]}円ごとに1円＞に設定しました。");
            break;

          }else{
            $sender->sendMessage("§b[会社銀行] >>> §f利子機能設定方法");
            $sender->sendMessage("§b利子機能のon/off:§f/cpbank set risi");
            $sender->sendMessage("§b利子の額(お預け金÷指定数):§f/cpbank set rate <指定数>");
            break;
          }


        default:
          $sender->sendMessage("§b[会社銀行] >>> §fコマンド一覧");
          $sender->sendMessage("§b預金:§f /cpbank dp <会社名> <金額>");
          $sender->sendMessage("§b送金:§f /cpbank wd <会社名> <金額>");
          if(!$sender instanceof Player or $sender->isOp()){
            $sender->sendMessage("§b利子設定(opのみ):§f /cpbank set");
          }
      }
    } return true;
  }//onCommand.
}//Listener
 *J\vZT   GBMB