12737475
anonymous No title
PHP
logoHarigami
ログイン
 anonymous タイトルなし No License PHP
 コピー
<?php
namespace smo\WarnSystem;
use pocketmine\plugin\PluginBase;
use pocketmine\command\CommandSender;
use pocketmine\command\Command;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\Player;
use pocketmine\utils\Config;
class Main extends PluginBase implements Listener{
	/*
	 * Config保存の方法:
	 *
	 * ・N === 警告なし
	 * ・1 === 警告一個 (⚠)
	 * ・2 === 警告二個 (⚠⚠)
	 * ・3 === 警告三個 (⚠⚠⚠)
	 */
	private function setWarnTag(Player $player, WarnPoint $p) :void{
		switch($p){
			case 1:
			$player->setNameTag("§c⚠§r".$name);
			$player->setDisplayName("§c⚠§r".$name);
			$player->save();
			break;
			case 2:
			$player->setNameTag("§c⚠⚠§r".$name);
			$player->setDisplayName("§c⚠⚠§r".$name);
			$player->save();
			break;
			case 3:
			$player->setNameTag("§c⚠⚠⚠§r".$name);
			$player->setDisplayName("§c⚠⚠⚠§r".$name);
			$player->save();
			break;
		}
	}
	public function onEnable() :void{
		$this->getLogger()->notice("WarnSystemを読み込みました by smo");
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
		if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0744, true);
						$this->c = new Config($this->getDataFolder() . "config.yml", Config::YAML);
	}
	/**
 * @priority MONITOR
 */
	public function onJoin(PlayerJoinEvent $event) :void{
		$player = $event->getPlayer();
		$name = $event->getPlayer()->getName();
		if(!$this->c->exists($name)) {
			$this->c->set($name, "N");
			$this->c->save();
		}else{
			switch($this->c->get($name)){
				case "N":
				break;
				case "1":
				$this->setWarnTag($player, 1);
				break;
				case "2":
				$this->setWarnTag($player, 2);
				break;
				case "3":
				$this->setWarnTag($player, 3);
				break;
			}
		}
		public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
			switch($label){
				case "checkwarn":
				if(!$sender instanceof Player){
					$sender->sendMessage("§6>>§cゲーム内で実行してください");
				}else{
					switch($this->c->get($sender->getName())){
						case "N":
						$sender->sendMessage("§6>>§aあなたは警告されていません");
						break;
						case "1":
						$sender->sendMessage("§6>>§cあなたな累積警告は§e1§cです");
						break;
						case "2":
						$sender->sendMessage("§6>>§cあなたな累積警告は§e2§cです");
						break;
						case "3":
						$sender->sendMessage("§6>>§cあなたな累積警告は§e3§cです");
						break;
					}
				}
				break;
				case "warn":
				if(!isset($args[0])) return false;
				if(!issrt($args[1])) return false;
				switch($args[0]){
					case "add":
					if(!$this->c->exists($args[1])){
						$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
					}elseif($this->c->get($args[1]) === "N"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e1§aにしました");
						$this->c->set($args[1], "1");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "1"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e2§aにしました");
						$this->c->set($args[1], "2");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "2"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e3§aにしました");
						$this->c->set($args[1], "3");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "3"){
						$sender->sendMessage("§6>>§e".$args[1]."§cの累積警告は既に最大値です");
					}
					break;
					case "remove":
					if(!$this->c->exists($args[1])){
						$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
					}elseif($this->c->get($args[1]) === "N"){
						$sender->sendMessage("§6>>§e".$args[1]."§cは警告されていません");
					}elseif($this->c->get($args[1]) === "1"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を取り消しました");
						$this->c->set($args[1], "N");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "2"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e1§aにしました");
						$this->c->set($args[1], "1");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "3"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e2§aにしました");
						$this->c->set($args[1], "2");
						$this->c->save();
					}
					break;
					case "check":
					if(!$this->c->exists($args[1])){
						$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
					}elseif($this->c->get($args[1]) === "N"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§eなし");
					}elseif($this->c->get($args[1]) === "1"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e1");
					}elseif($this->c->get($args[1]) === "2"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e2");
					}elseif($this->c->get($args[1]) === "3"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e3");
					}
					break;
				}
				break;
			}
			return true;
		}
	}
}

anonymous No title
PHP
<?php

namespace smo\WarnSystem;

use pocketmine\plugin\PluginBase;

use pocketmine\command\CommandSender;
use pocketmine\command\Command;

use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;

use pocketmine\Player;

use pocketmine\utils\Config;

class Main extends PluginBase implements Listener{

	/*
	 * Config保存の方法:
	 *
	 * ・N === 警告なし
	 * ・1 === 警告一個 (⚠)
	 * ・2 === 警告二個 (⚠⚠)
	 * ・3 === 警告三個 (⚠⚠⚠)
	 */

	private function setWarnTag(Player $player, WarnPoint $p) :void{
		switch($p){
			case 1:
			$player->setNameTag("§c⚠§r".$name);
			$player->setDisplayName("§c⚠§r".$name);
			$player->save();
			break;
			case 2:
			$player->setNameTag("§c⚠⚠§r".$name);
			$player->setDisplayName("§c⚠⚠§r".$name);
			$player->save();
			break;
			case 3:
			$player->setNameTag("§c⚠⚠⚠§r".$name);
			$player->setDisplayName("§c⚠⚠⚠§r".$name);
			$player->save();
			break;
		}
	}

	public function onEnable() :void{
		$this->getLogger()->notice("WarnSystemを読み込みました by smo");
		$this->getServer()->getPluginManager()->registerEvents($this, $this);
		if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0744, true);
						$this->c = new Config($this->getDataFolder() . "config.yml", Config::YAML);
	}

	/**
 * @priority MONITOR
 */
	public function onJoin(PlayerJoinEvent $event) :void{
		$player = $event->getPlayer();
		$name = $event->getPlayer()->getName();
		if(!$this->c->exists($name)) {
			$this->c->set($name, "N");
			$this->c->save();
		}else{
			switch($this->c->get($name)){
				case "N":
				break;
				case "1":
				$this->setWarnTag($player, 1);
				break;
				case "2":
				$this->setWarnTag($player, 2);
				break;
				case "3":
				$this->setWarnTag($player, 3);
				break;
			}
		}

		public function onCommand(CommandSender $sender, Command $command, String $label, array $args) :bool{
			switch($label){
				case "checkwarn":
				if(!$sender instanceof Player){
					$sender->sendMessage("§6>>§cゲーム内で実行してください");
				}else{
					switch($this->c->get($sender->getName())){
						case "N":
						$sender->sendMessage("§6>>§aあなたは警告されていません");
						break;
						case "1":
						$sender->sendMessage("§6>>§cあなたな累積警告は§e1§cです");
						break;
						case "2":
						$sender->sendMessage("§6>>§cあなたな累積警告は§e2§cです");
						break;
						case "3":
						$sender->sendMessage("§6>>§cあなたな累積警告は§e3§cです");
						break;
					}
				}
				break;
				case "warn":
				if(!isset($args[0])) return false;
				if(!issrt($args[1])) return false;
				switch($args[0]){
					case "add":
					if(!$this->c->exists($args[1])){
						$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
					}elseif($this->c->get($args[1]) === "N"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e1§aにしました");
						$this->c->set($args[1], "1");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "1"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e2§aにしました");
						$this->c->set($args[1], "2");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "2"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e3§aにしました");
						$this->c->set($args[1], "3");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "3"){
						$sender->sendMessage("§6>>§e".$args[1]."§cの累積警告は既に最大値です");
					}
					break;
					case "remove":
					if(!$this->c->exists($args[1])){
						$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
					}elseif($this->c->get($args[1]) === "N"){
						$sender->sendMessage("§6>>§e".$args[1]."§cは警告されていません");
					}elseif($this->c->get($args[1]) === "1"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を取り消しました");
						$this->c->set($args[1], "N");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "2"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e1§aにしました");
						$this->c->set($args[1], "1");
						$this->c->save();
					}elseif($this->c->get($args[1]) === "3"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e2§aにしました");
						$this->c->set($args[1], "2");
						$this->c->save();
					}
					break;
					case "check":
					if(!$this->c->exists($args[1])){
						$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
					}elseif($this->c->get($args[1]) === "N"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§eなし");
					}elseif($this->c->get($args[1]) === "1"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e1");
					}elseif($this->c->get($args[1]) === "2"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e2");
					}elseif($this->c->get($args[1]) === "3"){
						$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e3");
					}
					break;
				}
				break;
			}
			return true;
		}
}
}
anonymous No title
PHP
ああ
anonymous No title
PHP
function make_ary($x){
	$make_index_ary = function($x) use( &$make_index_ary ){
		if($x==1){
			return [1];
		}
		$first_list = array_map(function($x){
			return $x*2;
			},$make_index_ary($x-1));
		$latter_list = array_map(function($x){
			return $x-1;
			},array_reverse($first_list));
		return array_merge($first_list,$latter_list);
	};
	
	$index_ary = $make_index_ary($x);
	$edge_num = pow(2, $x-1);
	$ary = [];
	for($i=0;$i<$edge_num;$i++){
		$ary[$index_ary[$i]]=($i+1)*2;
	}
	ksort($ary);
	return $ary;
}

print_r (make_ary(5) );
//Array ( [1] => 22 [2] => 12 [3] => 28 [4] => 6 [5] => 20 [6] => 14 [7] => 30 [8] => 4 [9] => 24 [10] => 10 [11] => 26 [12] => 8 [13] => 18 [14] => 16 [15] => 32 [16] => 2 )
anonymous No title
PHP
function make_ary($x){
	if($x==1){
		return [2];	
	}
	$cur_list = make_ary($x-1);
	$x_last = end($cur_list);
	$add_list = array_map(function($x) use($x_last){
		return $x + $x_last;
	},$cur_list);
	$result = array_pad([0],count($cur_list)*2,0);
	
	$j = 0;
	foreach($result as $i => $int){
		if($i%2==0){
			$result[$i] = $cur_list[$j];
		}else{
			$result[$i] = $add_list[$j];
			$j++;
		}
	}
	return $result;
}

print_r( make_ary(5) );
// Array ( [0] => 2 [1] => 18 [2] => 10 [3] => 26 [4] => 6 [5] => 22 [6] => 14 [7] => 30 [8] => 4 [9] => 20 [10] => 12 [11] => 28 [12] => 8 [13] => 24 [14] => 16 [15] => 32 )
anonymous No title
PHP
<?php
$nm = $_POST["name"];
$t = $_POST["time"];

$d = "";
for($i=0; $i<=6; ++$i){//本当はwhile文でやったほうが一般生高いのだろうけど、whileで$iと$tの配列のナンバーが合うのかわかんなかったからforでやった。
	$d .= $nm[$i];
	while($x <= /*その人の名前のもとで押された時間ボタンの数。(いや、これだと2人目から上手くいかない)*/){
		$d .= $t[$x];
	}
	$d .= "<br>";
}
print<<<eot

<!DOCTYPE html>
<html>
	<head>
		<title>
			空いてる時間
		</title>
	</head>

	<body>
		$d
		
	</body>
</html>
eot;

/*
今の欠点
①1つの名前に対し、1つの曜限しか表示されない。∵$d .= $nm[$i].$t[$i]."<br>";
②曜限も7個までしか表示されない。∵forループが0〜6の7回しか行われないため、$dに7個分の曜限しか代入されないから。

①$nmの人のもとで、押された時間ボタンを表示する必要性。
*/
anonymous No title
PHP
<?php

$m=7; //月を指定
$y=2019; //西暦を指定

$ds=31;
if($m == 4 || $m == 6 || $m == 9 || $m == 11){
	$ds=30;
}
if($m == 2){
	$ds=28;
	if($y % 4 == 0){
		$ds=29;
	}
} //年月から日数を指定

//以下テーブル
$nm = '<p>お名前</p> 
		<input type="checkbox" name="name[]" value="半田先生">半田先生<br>
		<input type="checkbox" name="name[]" value="りおさん">りおさん<br>
		<input type="checkbox" name="name[]" value="なつみさん">なつみさん<br>
		<input type="checkbox" name="name[]" value="えいちゃんさん">えいちゃんさん<br>
		<input type="checkbox" name="name[]" value="たかみん">たかみん<br>
		<input type="checkbox" name="name[]" value="川端修平">川端修平<br>
		<input type="checkbox" name="name[]" value="しばまお">しばまお<br>';
$tx = "";
for($n = 1; $n <= 7; ++$n){
	$tx .=$nm.'<p>いつ空いてますか?</p>
			<table><tr> <th></th><th>1限</th><th>2限</th><th>昼</th><th>3限</th><th>4限</th><th>5限</th><th>夜</th><th>終日</th> </tr>';
	for($d = 1; $d <= $ds; ++$d){//毎日分繰り返す
		$tx.='<tr><td>'.$m.'月'.$d.'日</td>';//一番左の縦列作り(日付)
		for($pe = 1; $pe <= 8; ++$pe){//横軸に日付曜限の情報を持つチェックボックスを作ってる。(※昼夜終日の関係で限にずれできた)
			$tx.='<td><input type="checkbox" name="time[]" value="'.$m.'月'.$d.'日'.$pe.'限"></td>';
		}
		$tx.='</td></tr>';
	}//for最下層の変数tx内に、class="'.$d.'_button"を入れ、最後のtx内に、onclick="toggle_check("'.$d.'_button",this);" を入れたが、終日ボタンを押しても全選択にはならなかった。やっぱりJSが必要かな??
	$tx .= '</table>';
}

print<<<eot

<!DOCTYPE html>
<html lang="ja">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>
			スケジュール調整で〜〜す
		</title>
	</head>
	
	<body>
		<form method="post" action="sche_result2.php">
			
			
			

			
			
			$tx
			
			
			<p><input type="submit" value="送信"></p>
			
		</form>
	</body>
</html>
eot;

//名前選択のとこ、ラジオボタンにすればよかったけどまあいいや。追記:普通にcheckboxをradioに書き換えたらラジオボタンなったわ。追記:radioに書き換えると、7人分の名前選択ボタン&アンケート作ったときに名前が全体の中で1つしか選択できなくなっちゃうから、やっぱcheckboxがいい。
anonymous No title
PHP
<?php echo 'sss'?>
Don't you submit code?
Submit
12737475