function commandMain($hako, $data) { global $init; $id = $data['ISLANDID']; $num = $hako->idToNumber[$id]; $island = $hako->islands[$num]; $name = $island['name']; // パスワード if (!Util::checkPassword($island['password'], $data['PASSWORD'])) { // password間違い HakoError::wrongPassword(); return; } // モードで分岐 $command = $island['command']; if (strcmp($data['COMMANDMODE'], 'delete') == 0) { Util::slideFront($command, $data['NUMBER']); Success::commandDelete(); } else { if ($data['COMMAND'] == $init->comAutoPrepare || $data['COMMAND'] == $init->comAutoPrepare2) { // フル整地、フル地ならし // 座標配列を作る $r = Util::makeRandomPointArray(); $rpx = $r[0]; $rpy = $r[1]; $land = $island['land']; // コマンドの種類決定 switch ($data['COMMAND']) { case $init->comAutoPrepare: $kind = $init->comPrepare; break; case $init->comAutoPrepare2: $kind = $init->comPrepare2; break; } // $kind = $init->comPrepare; // if($data['COMMAND'] == $init->comAutoPrepare2) { // $kind = $init->comPrepare2; // } $i = $data['NUMBER']; $j = 0; while ($j < $init->pointNumber && $i < $init->commandMax) { $x = $rpx[$j]; $y = $rpy[$j]; if ($land[$x][$y] == $init->landWaste) { Util::slideBack($command, $i); $command[$i] = array('kind' => $kind, 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0); $i++; } $j++; } Success::commandAdd(); } else { if ($data['COMMAND'] == $init->comAutoReclaim) { $r = Util::makeRandomPointArray(); $rpx = $r[0]; $rpy = $r[1]; $land = $island['land']; $landValue = $island['landValue']; $i = $data['NUMBER']; $j = 0; while ($j < $init->pointNumber && $i < $init->commandMax) { $x = $rpx[$j]; $y = $rpy[$j]; $kind = $land[$x][$y]; $lv = $landValue[$x][$y]; if ($kind == $init->landSea && $lv == 1) { Util::slideBack($command, $i); $command[$i] = array('kind' => $init->comReclaim, 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0); $i++; } $j++; } /* } elsif($HcommandKind == $HcomAutoDestroy) { # 浅瀬掘削 makeRandomPointArray(); my($land) = $island->{'land'}; my($landValue) = $island->{'landValue'}; my($x, $y, $kind, $lv, $i, $n); $n = 0; for ($i = 0; ($i < $HpointNumber) && ($n < $HcommandMax); $i++) { $x = $Hrpx[$i]; $y = $Hrpy[$i]; $kind = $land->[$x][$y]; $lv = $landValue->[$x][$y]; if (($kind == $HlandSea) && ($lv == 1)) { # 浅瀬 slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomDestroy, # 掘削 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; $n++; } } tempCommandAdd(); } elsif($HcommandKind == $HcomAutoSellTree) { # 伐採 # (数量×200本より多い森だけが対象) makeRandomPointArray(); my($land) = $island->{'land'}; my($landValue) = $island->{'landValue'}; my($x, $y, $kind, $lv, $i, $n); $n = 0; for ($i = 0; ($i < $HpointNumber) && ($n < $HcommandMax - 1); $i++) { $x = $Hrpx[$i]; $y = $Hrpy[$i]; $kind = $land->[$x][$y]; $lv = $landValue->[$x][$y]; if (($kind == $HlandForest) && ($lv > $HcommandArg * 2)) { # 森 slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomSellTree, # 伐採 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; $n += 2; } } tempCommandAdd(); } elsif($HcommandKind == $HcomAutoForestry) { # 伐採と植林 # (数量×200本より多い森だけが対象) makeRandomPointArray(); my($land) = $island->{'land'}; my($landValue) = $island->{'landValue'}; my($x, $y, $kind, $lv, $i, $n); $n = 0; for ($i = 0; ($i < $HpointNumber) && ($n < $HcommandMax - 1); $i++) { $x = $Hrpx[$i]; $y = $Hrpy[$i]; $kind = $land->[$x][$y]; $lv = $landValue->[$x][$y]; if (($kind == $HlandForest) && ($lv > $HcommandArg * 2)) { # 森 slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomPlant, # 植林 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomSellTree, # 伐採 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; $n += 2; } } tempCommandAdd(); */ } else { if ($data['COMMAND'] == $init->comAutoDelete) { // 全消し for ($i = 0; $i < $init->commandMax; $i++) { Util::slideFront($command, 0); } Success::commandDelete(); } else { if (strcmp($data['COMMANDMODE'], 'insert') == 0) { Util::slideBack($command, $data['NUMBER']); } Success::commandAdd(); // コマンドを登録 $command[$data['NUMBER']] = array('kind' => $data['COMMAND'], 'target' => $data['TARGETID'], 'x' => $data['POINTX'], 'y' => $data['POINTY'], 'arg' => $data['AMOUNT']); } } } } // データの書き出し $island['command'] = $command; $hako->islands[$num] = $island; $hako->writeIslandsFile($island['id']); // owner modeへ $html = new HtmlMap(); $html->owner($hako, $data); }