예제 #1
0
    function editMap($hako, $data)
    {
        global $init;
        // パスワード
        if (!Util::checkPassword("", $data['PASSWORD'])) {
            // password間違い
            HakoError::wrongPassword();
            return;
        }
        $html = new HtmlMap();
        $id = $data['ISLANDID'];
        $number = $hako->idToNumber[$id];
        $island = $hako->islands[$number];
        // 地形リストを生成
        $landList = array("{$init->landSea}", "{$init->landSeaSide}", "{$init->landWaste}", "{$init->landPoll}", "{$init->landPlains}", "{$init->landForest}", "{$init->landTown}", "{$init->landProcity}", "{$init->landNewtown}", "{$init->landBigtown}", "{$init->landSeaCity}", "{$init->landFroCity}", "{$init->landPort}", "{$init->landShip}", "{$init->landRail}", "{$init->landStat}", "{$init->landTrain}", "{$init->landFusya}", "{$init->landSyoubou}", "{$init->landSsyoubou}", "{$init->landFarm}", "{$init->landSfarm}", "{$init->landNursery}", "{$init->landFactory}", "{$init->landCommerce}", "{$init->landMountain}", "{$init->landHatuden}", "{$init->landBase}", "{$init->landHaribote}", "{$init->landDefence}", "{$init->landSbase}", "{$init->landSdefence}", "{$init->landMyhome}", "{$init->landSoukoM}", "{$init->landSoukoF}", "{$init->landMonument}", "{$init->landSoccer}", "{$init->landPark}", "{$init->landSeaResort}", "{$init->landOil}", "{$init->landBank}", "{$init->landMonster}", "{$init->landSleeper}", "{$init->landZorasu}");
        // 地形リスト名称を生成
        $landName = array("海、浅瀬", "砂浜", "荒地", "汚染土壌", "平地", "森", "村、町、都市", "防災都市", "ニュータウン", "現代都市", "海底都市", "海上都市", "港", "船舶", "線路", "駅", "電車", "風車", "消防署", "海底消防署", "農場", "海底農場", "養殖場", "工場", "商業ビル", "山、採掘場", "発電所", "ミサイル基地", "ハリボテ", "防衛施設", "海底基地", "海底防衛施設", "マイホーム", "金庫", "食料庫", "記念碑", "スタジアム", "遊園地", "海の家", "海底油田", "銀行", "怪獣", "怪獣(睡眠中)", "ぞらす");
        echo <<<END
<script type="text/javascript">
function ps(x, y, ld, lv) {
\tdocument.InputPlan.POINTX.options[x].selected = true;
\tdocument.InputPlan.POINTY.options[y].selected = true;
\tdocument.InputPlan.LAND.options[ld].selected = true;

\tif(ld == {$init->landMonster} || ld == {$init->landSleeper}) {
\t\tmn = Math.floor(lv / 10);
\t\tlv = lv - mn * 10;
\t\tdocument.InputPlan.MONSTER.options[mn].selected = true;
\t\tdocument.InputPlan.LEVEL.options[lv].selected = true;
\t} else {
\t\tdocument.InputPlan.LEVEL.options[lv].selected = true;
\t}
\treturn true;
}
</script>

<div class="text-center">
\t{$init->tagBig_}{$init->tagName_}{$island['name']}{$init->nameSuffix}{$init->_tagName} マップ・エディタ{$init->_tagBig}<br>
</div>

<form name="TOP" action="{$GLOBALS['THIS_FILE']}" method="post">
\t<input type="hidden" name="PASSWORD" value="{$data['PASSWORD']}">
\t<input type="hidden" name="mode" value="list">
</form>
END;
        // 島の情報を表示
        $html->islandInfo($island, $number, 1);
        // 説明文を表示
        echo <<<END
<div class="text-center">
<table class="table table-bordered">
<tr valign="top">
<td {$init->bgCommandCell}>
\t<b>レベルについて</b>
\t<ul>
\t\t<li><b>海、浅瀬</b><br>レベル 0 のとき海<br>1 のとき浅瀬<br>それ以外 のとき財宝
\t\t<li><b>荒地</b><br>レベル 1 のとき着弾点
\t\t<li><b>村、町、都市</b><br>レベル 30 未満が村<br>レベル 100 未満が町<br>レベル 200 未満が都市
\t\t<li><b>ミサイル基地</b><br>経験値
\t\t<li><b>山、採掘場</b><br>レベル 1 以上のとき採掘場
\t\t<li><b>怪獣</b><br>各怪獣の最大レベルを超える<br>設定はできません
\t\t<li><b>海底基地</b><br>経験値
\t</ul>
</td>
<td {$init->bgMapCell}>
END;
        // 地形出力
        $html->islandMap($hako, $island, 1);
        // エディタ領域の表示
        echo <<<END
</td>
<td {$init->bgInputCell}>
<div class="text-center">
\t<form action="{$GLOBALS['THIS_FILE']}" method="post" name="InputPlan">
\t\t<input type="hidden" name="mode" value="regist">
\t\t<input type="hidden" name="ISLANDID" value="{$island['id']}">
\t\t<input type="hidden" name="PASSWORD" value="{$data['PASSWORD']}">

\t\t<strong>マップ・エディタ</strong><br>
\t\t<hr>
\t\t<strong>座標(</strong>
\t\t<select name="POINTX">
END;
        for ($i = 0; $i < $init->islandSize; $i++) {
            if ($i == $data['defaultX']) {
                echo "<option value=\"{$i}\" selected>{$i}</option>\n";
            } else {
                echo "<option value=\"{$i}\">{$i}</option>\n";
            }
        }
        echo "</select>, <select name=\"POINTY\">";
        for ($i = 0; $i < $init->islandSize; $i++) {
            if ($i == $data['defaultY']) {
                echo "<option value=\"{$i}\" selected>{$i}</option>\n";
            } else {
                echo "<option value=\"{$i}\">{$i}</option>\n";
            }
        }
        echo <<<END
\t\t</select><strong>)</strong>
\t\t<hr>
\t\t<strong>地形</strong>
\t\t<select name="LAND">
END;
        for ($i = 0; $i < count($landList); $i++) {
            if ($landList[$i] == $data['defaultLAND']) {
                echo "<option value=\"{$landList[$i]}\" selected>{$landName[$i]}</option>\n";
            } else {
                echo "<option value=\"{$landList[$i]}\">{$landName[$i]}</option>\n";
            }
        }
        echo <<<END
\t\t</select>
\t\t<hr>
\t\t<strong>怪獣の種類</strong>
\t\t<select name="MONSTER">
END;
        for ($i = 0; $i < $init->monsterNumber; $i++) {
            if ($i == $data['defaultMONSTER']) {
                echo "<option value=\"{$i}\" selected>{$init->monsterName[$i]}</option>\n";
            } else {
                echo "<option value=\"{$i}\">{$init->monsterName[$i]}</option>\n";
            }
        }
        echo <<<END
\t\t</select>
\t\t<hr>
\t\t<strong>船舶の種類</strong>
\t\t<select name="SHIP">
END;
        for ($i = 0; $i < 15; $i++) {
            if ($init->shipName[$i] != "") {
                if ($i == $data['defaultSHIP']) {
                    echo "<option value=\"{$i}\" selected>{$init->shipName[$i]}</option>\n";
                } else {
                    echo "<option value=\"{$i}\">{$init->shipName[$i]}</option>\n";
                }
            }
        }
        echo <<<END
\t\t</select>
\t\t<hr>
\t\t<strong>レベル</strong>
\t\t<input type="number" min="0" max="1048575" size="8" maxlength="7" name="LEVEL" value="{$data['defaultLEVEL']}">
\t\t<hr>
\t\t<input type="submit" value="登録">
\t</form>
</div>

<ul>
\t<li>登録するときは十分注意願います。
\t<li>データを破壊する場合があります。
\t<li>バックアップを行ってから<br>行う様にしましょう。
\t<li>地形データを変更するのみで、<br>他のデータは変更されません。<br>
\tターン更新で他のデータへ反映されます。
</ul>

</td>
</tr>
</table>
</div>
END;
    }
예제 #2
0
 function newIsland($hako, $data)
 {
     global $init;
     $log = new Log();
     if ($hako->islandNumber >= $init->maxIsland) {
         HakoError::newIslandFull();
         return;
     }
     if (empty($data['ISLANDNAME'])) {
         HakoError::newIslandNoName();
         return;
     }
     // 名前が正当化チェック
     if (preg_match("/[,?()<>\$]/", $data['ISLANDNAME']) || strcmp($data['ISLANDNAME'], "無人") == 0) {
         HakoError::newIslandBadName();
         return;
     }
     // 名前の重複チェック
     if (Util::nameToNumber($hako, $data['ISLANDNAME']) != -1) {
         HakoError::newIslandAlready();
         return;
     }
     // パスワードの存在判定
     if (empty($data['PASSWORD'])) {
         HakoError::newIslandNoPassword();
         return;
     }
     if (strcmp($data['PASSWORD'], $data['PASSWORD2']) != 0) {
         HakoError::wrongPassword();
         return;
     }
     // 新しい島の番号を決める
     $newNumber = $hako->islandNumber;
     $hako->islandNumber++;
     $hako->islandNumberNoBF++;
     $hako->islandNumberNoKP++;
     $island = $this->makeNewIsland();
     // 島の番号の使いまわし
     $safety = 0;
     while (isset($hako->idToNumber[$hako->islandNextID])) {
         $hako->islandNextID++;
         if ($hako->islandNextID > 250) {
             $hako->islandNextID = 1;
         }
         $safety++;
         if ($safety == 250) {
             break;
         }
     }
     // 各種の値を設定
     $island['name'] = htmlspecialchars($data['ISLANDNAME']);
     $island['owner'] = htmlspecialchars($data['OWNERNAME']);
     $island['id'] = $hako->islandNextID;
     $hako->islandNextID++;
     $island['starturn'] = $hako->islandTurn;
     $island['isBF'] = $island['keep'] = 0;
     $island['absent'] = $init->giveupTurn - 3;
     $island['comment'] = '(未登録)';
     $island['comment_turn'] = $hako->islandTurn;
     $island['password'] = Util::encode($data['PASSWORD']);
     $island['tenki'] = 1;
     $island['team'] = $island['shiai'] = $island['kachi'] = $island['make'] = $island['hikiwake'] = $island['kougeki'] = $island['bougyo'] = $island['tokuten'] = $island['shitten'] = 0;
     Turn::estimate($hako, $island);
     if ($hako->islandNumberBF > 0) {
         for ($i = 0; $i < $hako->islandNumberBF; $i++) {
             $hako->islands[$newNumber - $i] = $hako->islands[$newNumber - $i - 1];
         }
         $hako->islands[$newNumber - $hako->islandNumberBF] = $island;
     } else {
         $hako->islands[$newNumber] = $island;
     }
     $hako->writeIslandsFile($island['id']);
     $log->discover($island['id'], $island['name']);
     $htmlMap = new HtmlMap();
     $htmlMap->newIslandHead($island['name']);
     $htmlMap->islandInfo($island, $newNumber);
     $htmlMap->islandMap($hako, $island, 1, $data);
 }