#!perl #!/usr/local/bin/perl #!D:/app/Perl/bin/perl # ↑はサーバーに合わせて変更して下さい。 # perl5用です。 #---------------------------------------------------------------------- # 箱庭諸島 ver2.20 # メインスクリプト(ver1.00) # 使用条件、使用方法等は、hako-readme.txtファイルを参照 # # 箱庭諸島のページ: http://t.pos.to/hako/ #---------------------------------------------------------------------- # 「帝国の興亡」 ver1.0.0 by おじー http://t.pos.to/ozzy/ # 使用条件は箱庭諸島に準ずる.詳しくは付属のreadme.txtファイルを参照 #---------------------------------------------------------------------- package H2; #---------------------------------------------------------------------- # 各種設定値 # (これ以降の部分の各設定値を、適切な値に変更してください) #---------------------------------------------------------------------- #---------------------------------------------------------------------- # 以下、必ず設定する部分 #---------------------------------------------------------------------- # このファイルを置くディレクトリ # my($baseDir) = 'http://サーバー/ディレクトリ'; # # 例) # http://cgi2.bekkoame.ne.jp/cgi-bin/user/u5534/hakoniwa/hako-main.cgi # として置く場合、 # my($baseDir) = 'http://cgi2.bekkoame.ne.jp/cgi-bin/user/u5534/hakoniwa'; # とする。最後にスラッシュ(/)は付けない。 my($baseDir) = 'http://localhost/cgi-bin/imperial_100'; #my($baseDir) = 'http://cgi2.bekkoame.ne.jp/cgi-bin/user/u5534/imperial'; # 画像ファイルを置くディレクトリ #my($imageDir) = 'http://サーバー/ディレクトリ'; my($imageDir) = 'http://localhost/imperial_100/image'; #my($imageDir) = 'http://t.pos.to/ozzy/image'; # jcode.plの位置 #my($jcode) = '/usr/libperl/jcode.pl'; # ベッコアメの場合 my($jcode) = './jcode.pl'; # 同じディレクトリに置く場合 # マスターパスワード # このパスワードは、すべての島のパスワードを代用できます。 # 例えば、「他の島のパスワード変更」等もできます。 my($masterPassword) = 'hoge'; # 特殊パスワード # このパスワードで「名前変更」を行うと、その島の資金、食料が最大値になります。 # (実際に名前を変える必要はありません。) $H2::specialPassword = 'hoge'; # 管理者名 my($adminName) = '管理者'; #my($adminName) = 'おじー'; # 管理者のメールアドレス my($email) = 'your@mail.address'; #my($email) = 't-ozawa@aurora.dti.ne.jp'; # 掲示板アドレス my($bbs) = 'http://'; #my($bbs) = 'http://t.pos.to/b/trees.cgi?bname=k3'; # ホームページのアドレス my($toppage) = 'http://'; #my($toppage) = 'http://t.pos.to/ozzy/'; # ディレクトリのパーミッション # 通常は0755でよいが、0777、0705、0704等でないとできないサーバーもあるらしい $H2::dirMode = 0755; # データディレクトリの名前 # ここで設定した名前のディレクトリ以下にデータが格納されます。 # デフォルトでは'data'となっていますが、セキュリティのため # なるべく違う名前に変更してください。 $H2::dirName = 'data'; # ロックの方式 # 1 ディレクトリ # 2 システムコール(可能ならば最も望ましい) # 3 シンボリックリンク # 4 通常ファイル(あまりお勧めでない) my($lockMode) = 1; # (注) # 4を選択する場合には、'key-free'という、パーミション666の空のファイルを、 # このファイルと同位置に置いて下さい。 #---------------------------------------------------------------------- # 必ず設定する部分は以上 #---------------------------------------------------------------------- #---------------------------------------------------------------------- # 以下、好みによって設定する部分 #---------------------------------------------------------------------- #---------------------------------------- # ゲームの進行やファイルなど #---------------------------------------- # 1回の更新が何秒毎か($H2::unitCount分ターンが進む) $H2::unitTime = 86400; # 24時間 # 1回の更新で何ターン進むか $H2::unitCount = 3; # 1の場合,通常の箱庭と同じ # 終了ターン $H2::finishTurn = 120; # 0ならば終了なし # 停戦期間 $H2::armisticeTurn = 90; # 停戦期間中のターン更新間隔($H2::unitCount分ターンが進む) $H2::armisticeTime = 21600; # 6時間 # 勝利条件 $H2::finishOccupation = 70; # 占有率がこの値以上になったら終了 # 異常終了基準時間 # (ロック後何秒で、強制解除するか) my($unlockTime) = 120; # 島の最大数 $H2::maxIsland = 24; # トップページに表示するログのターン数 $H2::topLogTurn = 3; # ログファイル保持ターン数 $H2::logMax = 8; # バックアップを何ターンおきに取るか $H2::backupTurn = 6; # バックアップを何回分残すか $H2::backupTimes = 2; # 発見ログ保持行数 $H2::historyMax = 10; # 陣営預かりに移行するターン数 $H2::preGiveupTurn = 8; # 放棄コマンド自動入力ターン数 $H2::giveupTurn = 28; # コマンド入力限界数 # (ゲームが始まってから変更すると、データファイルの互換性が無くなります。) $H2::commandMax = 20; # ローカル掲示板(秘密通信)行数 # (ゲームが始まってから変更すると、データファイルの互換性が無くなります。) $H2::lbbsMax = 10; # 島の大きさ # (変更できないかも) $H2::islandSize = 12; # 他人から資金を見えなくするか # 0 見えない # 1 見える # 2 100の位で四捨五入 $H2::hideMoneyMode = 2; # パスワードの暗号化(0だと暗号化しない、1だと暗号化する) my($cryptOn) = 1; # デバッグモード(1だと、「ターンを進める」ボタンが使用できる) $H2::debug = 0; #---------------------------------------- # 資金、食料などの設定値と単位 #---------------------------------------- # 初期資金 $H2::initialMoney = 500; # ゲーム開始までの登録 $H2::initialMoney2 = 500; # ゲーム開始後の登録 # 初期食料 $H2::initialFood = 1000; # ゲーム開始までの登録 $H2::initialFood2 = 1000; # ゲーム開始後の登録 # お金の単位 $H2::unitMoney = '億円'; # 食料の単位 $H2::unitFood = '00トン'; # 人口の単位 $H2::unitPop = '00人'; # 広さの単位 $H2::unitArea = '00万坪'; # 木の数の単位 $H2::unitTree = '00本'; # 木の単位当たりの売値 $H2::treeValue = 5; # 名前変更のコスト $H2::costChangeName = 500; # 人口1単位あたりの食料消費料 $H2::eatenFood = 0.2; #---------------------------------------- # 基地の経験値 #---------------------------------------- # 経験値の最大値 $H2::maxExpPoint = 200; # ただし、最大でも255まで # レベルの最大値 my($maxBaseLevel) = 5; # ミサイル基地 my($maxSBaseLevel) = 3; # 海底基地 # 経験値がいくつでレベルアップか my(@baseLevelUp, @sBaseLevelUp); @baseLevelUp = (20, 60, 120, 200); # ミサイル基地 @sBaseLevelUp = (50, 200); # 海底基地 #---------------------------------------- # 防衛施設の自爆 #---------------------------------------- # 怪獣に踏まれた時自爆するなら1、しないなら0 $H2::dBaseAuto = 0; # 防衛施設を森に偽装するなら1、しないなら0 $H2::dBaseHide = 1; #---------------------------------------- # 災害 #---------------------------------------- # 通常災害発生率(確率は0.1%単位) $H2::disEarthquake = 5; # 地震 $H2::disTsunami = 15; # 津波 $H2::disTyphoon = 20; # 台風 $H2::disMeteo = 15; # 隕石 $H2::disHugeMeteo = 5; # 巨大隕石 $H2::disEruption = 10; # 噴火 $H2::disFire = 10; # 火災 $H2::disMaizo = 10; # 埋蔵金 # 地盤沈下 $H2::disFallBorder = 90; # 安全限界の広さ(Hex数) $H2::disFalldown = 30; # その広さを超えた場合の確率 # 怪獣 $H2::disMonsBorder1 = 1000; # 人口基準1(怪獣レベル1) $H2::disMonsBorder2 = 2500; # 人口基準2(怪獣レベル2) $H2::disMonsBorder3 = 4000; # 人口基準3(怪獣レベル3) $H2::disMonster = 3; # 単位面積あたりの出現率(0.01%単位) # 種類 $H2::monsterNumber = 8; # 各基準において出てくる怪獣の番号の最大値 $H2::monsterLevel1 = 2; # サンジラまで $H2::monsterLevel2 = 5; # いのらゴーストまで $H2::monsterLevel3 = 7; # キングいのらまで(全部) # 名前 @H2::monsterName = ( 'メカいのら', # 0(人造) 'いのら', # 1 'サンジラ', # 2 'レッドいのら', # 3 'ダークいのら', # 4 'いのらゴースト', # 5 'クジラ', # 6 'キングいのら' # 7 ); # 最低体力、体力の幅、特殊能力、経験値、死体の値段 @H2::monsterBHP = ( 2, 1, 1, 3, 2, 1, 4, 5); @H2::monsterDHP = ( 0, 2, 2, 2, 2, 0, 2, 2); @H2::monsterSpecial = ( 0, 0, 3, 0, 1, 2, 4, 0); @H2::monsterExp = ( 5, 5, 7,12,15,10,20,30); @H2::monsterValue = ( 0, 400, 500, 1000, 800, 300, 1500, 2000); # 特殊能力の内容は、 # 0 特になし # 1 足が速い(最大2歩あるく) # 2 足がとても速い(最大何歩あるくか不明) # 3 奇数ターンは硬化 # 4 偶数ターンは硬化 # 画像ファイル @H2::monsterImage = ( 'monster7.gif', 'monster0.gif', 'monster5.gif', 'monster1.gif', 'monster2.gif', 'monster8.gif', 'monster6.gif', 'monster3.gif' ); # 画像ファイルその2(硬化中) @H2::monsterImage2 = ('', '', 'monster4.gif', '', '', '', 'monster4.gif', ''); #---------------------------------------- # 油田 #---------------------------------------- # 油田の収入 #$H2::oilMoney = 1000; # 箱庭2 $H2::oilMoney = 800; # 帝国 # 油田の枯渇確率 $H2::oilRatio = 40; #---------------------------------------- # 記念碑 #---------------------------------------- # 何種類あるか $H2::monumentNumber = 3; # 名前 @H2::monumentName = ( 'モノリス', '平和記念碑', '戦いの碑' ); # 画像ファイル @H2::monumentImage = ( 'monument0.gif', 'monument0.gif', 'monument0.gif' ); #---------------------------------------- # 賞関係 #---------------------------------------- # ターン杯を何ターン毎に出すか $H2::turnPrizeUnit = 30; # 賞の名前 # ptr: ext領域の何番目の要素で決まるか # threshold: ptrの示す値が幾つになったら受賞か # name: 賞の名前 $H2::prize[0] = { 'name' => 'ターン杯' }; $H2::prize[1] = { 'ptr' => 1, 'threshold' => 20000, 'name' => '救国勲章', 'contribution' => 0}; $H2::prize[2] = { 'ptr' => 1, 'threshold' => 50000, 'name' => '優等救国勲章', 'contribution' => 0}; $H2::prize[3] = { 'ptr' => 2, 'threshold' => 5, 'name' =>'突撃勲章', 'contribution' => 500}; $H2::prize[4] = { 'ptr' => 2, 'threshold' => 10, 'name' =>'優等突撃勲章', 'contribution' => 1000}; $H2::prize[5] = { 'ptr' => 3, 'threshold' => 10, 'name' => '騎士勲章', 'contribution' => 500}; $H2::prize[6] = { 'ptr' => 3, 'threshold' => 20, 'name' => '優等騎士勲章', 'contribution' => 1000}; $H2::prize[7] = { 'ptr' => 4, 'threshold' => 1000, 'name' => '十字勲章', 'contribution' => 500}; $H2::prize[8] = { 'ptr' => 4, 'threshold' => 2000, 'name' => '優等十字勲章', 'contribution' => 1000}; $H2::prize[9] = { 'ptr' => 5, 'threshold' => 50, 'name' =>'御盾勲章', 'contribution' => 200}; $H2::prize[10] = { 'ptr' => 6, 'threshold' => 50, 'name' =>'敢闘勲章', 'contribution' => 200}; $H2::prize[11] = { 'ptr' => 7, 'threshold' => 30, 'name' => '鉄壁勲章', 'contribution' => 1000}; $H2::prizeNumber = 12; #---------------------------------------- # 外見関係 #---------------------------------------- #
タグのオプション my($htmlBody) = 'BGCOLOR="#EEFFFF"'; # ゲームのタイトル文字 $H2::title = '箱庭諸島2「帝国の興亡」'; # タグ # タイトル文字 $H2::tagTitle_ = ''; $H2::_tagTitle = ''; # H1タグ用 $H2::tagHeader_ = ''; $H2::_tagHeader = ''; # 大きい文字 $H2::tagBig_ = ''; $H2::_tagBig = ''; # 島の名前など $H2::tagName_ = ''; $H2::_tagName = ''; # 薄くなった島の名前 $H2::tagName2_ = ''; $H2::_tagName2 = ''; # 順位の番号など $H2::tagNumber_ = ''; $H2::_tagNumber = ''; # 順位表における見だし $H2::tagTH_ = ''; $H2::_tagTH = ''; # 開発計画の名前 $H2::tagComName_ = ''; $H2::_tagComName = ''; # 災害 $H2::tagDisaster_ = ''; $H2::_tagDisaster = ''; # ローカル掲示板、観光者の書いた文字 $H2::tagLbbsSS_ = ''; $H2::_tagLbbsSS = ''; # ローカル掲示板、島主の書いた文字 $H2::tagLbbsOW_ = ''; $H2::_tagLbbsOW = ''; # 通常の文字色(これだけでなく、BODYタグのオプションもちゃんと変更すべし $H2::normalColor = '#000000'; # 順位表、セルの属性 $H2::bgTitleCell = 'BGCOLOR="#ccffcc"'; # 順位表見出し $H2::bgNumberCell = 'BGCOLOR="#ccffcc"'; # 順位表順位 $H2::bgNameCell = 'BGCOLOR="#ccffff"'; # 順位表島の名前 $H2::bgInfoCell = 'BGCOLOR="#ccffff"'; # 順位表島の情報 $H2::bgCommentCell = 'BGCOLOR="#ccffcc"'; # 順位表コメント欄 $H2::bgInputCell = 'BGCOLOR="#ccffcc"'; # 開発計画フォーム $H2::bgMapCell = 'BGCOLOR="#ccffcc"'; # 開発計画地図 $H2::bgCommandCell = 'BGCOLOR="#ccffcc"'; # 開発計画入力済み計画 #---------------------------------------------------------------------- # 帝国の興亡用の設定 #---------------------------------------------------------------------- # 陣営型 # $camp->{'name'} # $camp->{'mark'} # $camp->{'id'} # $camp->{'passward'} # $camp->{'score'} # $camp->{'number'} # $camp->{'occupation'} # $camp->{'bbs'} # 陣営外への援助 1:不許可 0:許可 $H2::campAidOnly = 1; # 観光者通信を秘匿する 1:秘匿 0:公開 $H2::keepSecretLbbs = 0; # 開発画面に陣営専用のBbsをリンクする 1:する 0:しない $H2::campOnlyBbs = 1; # 陣営の選択の方法 # 0: 島数が最も少なく、順位が最下位の陣営 # 1: ランダム("合計の島数/陣営の数"を超えない) # 2: 選択可能("合計の島数/陣営の数"を超えない) $H2::campSelectRule = 1; # 陣営の消滅 $H2::campDeleteRule = 0; # 1:陣営消滅ルールあり、0:なし #---------------------------------------------------------------------- # その他拡張用の設定(基本的には,変更不可) #---------------------------------------------------------------------- $H2::mainExtNum = 1; # メインデータの拡張領域の数 # 未使用 $H2::islandExtNum = 8; # 各島データの拡張領域の数 # ext[0] 陣営id (未使用) # ext[1] 功績point # ext[2] 破壊した防衛施設の数 # ext[3] 破壊したミサイル基地の数 # ext[4] 救出した難民の合計人口 # ext[5] 受けたミサイル数 # ext[6] 発射したミサイル数 # ext[7] 防衛施設で弾いたミサイル数 $H2::campExtNum = 5; # 陣営データの拡張領域の数 # ext[0] 発射したミサイル(unitCountターン分) # ext[1] 受けたミサイル(unitCountターン分) # ext[2] 収入(unitCountターン分) $H2::mapExtNum = 1; # mapデータの拡張領域の数(未実装) #---------------------------------------------------------------------- # 好みによって設定する部分は以上 #---------------------------------------------------------------------- #---------------------------------------------------------------------- # これ以降のスクリプトは、変更されることを想定していませんが、 # いじってもかまいません。 # コマンドの名前、値段などは解りやすいと思います。 #---------------------------------------------------------------------- #---------------------------------------------------------------------- # 各種定数 #---------------------------------------------------------------------- # このファイル $H2::thisFile = "$baseDir/hako-main.cgi"; # 地形番号 $H2::landSea = 0; # 海 $H2::landWaste = 1; # 荒地 $H2::landPlains = 2; # 平地 $H2::landTown = 3; # 町系 $H2::landForest = 4; # 森 $H2::landFarm = 5; # 農場 $H2::landFactory = 6; # 工場 $H2::landBase = 7; # ミサイル基地 $H2::landDefence = 8; # 防衛施設 $H2::landMountain = 9; # 山 $H2::landMonster = 10; # 怪獣 $H2::landSbase = 11; # 海底基地 $H2::landOil = 12; # 海底油田 $H2::landMonument = 13; # 記念碑 $H2::landHaribote = 14; # ハリボテ # コマンド #$H2::commandTotal = 28; # コマンドの種類 $H2::commandTotal = 24; # コマンドの種類 # 計画番号の設定 # 整地系 $H2::comPrepare = 01; # 整地 $H2::comPrepare2 = 02; # 地ならし $H2::comReclaim = 03; # 埋め立て $H2::comDestroy = 04; # 掘削 $H2::comSellTree = 05; # 伐採 # 作る系 $H2::comPlant = 11; # 植林 $H2::comFarm = 12; # 農場整備 $H2::comFactory = 13; # 工場建設 $H2::comMountain = 14; # 採掘場整備 $H2::comBase = 15; # ミサイル基地建設 $H2::comDbase = 16; # 防衛施設建設 $H2::comSbase = 17; # 海底基地建設 $H2::comMonument = 18; # 記念碑建造 $H2::comHaribote = 19; # ハリボテ設置 # 発射系 $H2::comMissileNM = 31; # ミサイル発射 $H2::comMissilePP = 32; # PPミサイル発射 $H2::comMissileST = 33; # STミサイル発射 $H2::comMissileLD = 34; # 陸地破壊弾発射 $H2::comSendMonster = 35; # 怪獣派遣 # 運営系 $H2::comDoNothing = 41; # 資金繰り $H2::comSell = 42; # 食料輸出 $H2::comMoney = 43; # 資金援助 $H2::comFood = 44; # 食料援助 $H2::comPropaganda = 45; # 誘致活動 $H2::comGiveup = 46; # 島の放棄 # 自動入力系 $H2::comAutoPrepare = 61; # フル整地 $H2::comAutoPrepare2 = 62; # フル地ならし $H2::comAutoDelete = 63; # 全コマンド消去 # 順番 @H2::comList = ( $H2::comPrepare, $H2::comSell, $H2::comPrepare2, $H2::comReclaim, $H2::comDestroy, $H2::comSellTree, $H2::comPlant, $H2::comFarm, $H2::comFactory, $H2::comMountain, $H2::comBase, $H2::comDbase, # $H2::comSbase, $H2::comMonument, # $H2::comHaribote, $H2::comMissileNM, $H2::comMissilePP, # $H2::comMissileST, $H2::comMissileLD, $H2::comSendMonster, $H2::comDoNothing, $H2::comMoney, $H2::comFood, $H2::comPropaganda, # $H2::comGiveup, $H2::comAutoPrepare, $H2::comAutoPrepare2, $H2::comAutoDelete); # 計画の名前と値段 $H2::comName[$H2::comPrepare] = '整地'; $H2::comCost[$H2::comPrepare] = 5; $H2::comName[$H2::comPrepare2] = '地ならし'; #$H2::comCost[$H2::comPrepare2] = 100; $H2::comCost[$H2::comPrepare2] = 50; $H2::comName[$H2::comReclaim] = '埋め立て'; #$H2::comCost[$H2::comReclaim] = 150; $H2::comCost[$H2::comReclaim] = 50; $H2::comName[$H2::comDestroy] = '掘削'; #$H2::comCost[$H2::comDestroy] = 200; $H2::comCost[$H2::comDestroy] = 50; $H2::comName[$H2::comSellTree] = '伐採'; $H2::comCost[$H2::comSellTree] = 0; $H2::comName[$H2::comPlant] = '植林'; #$H2::comCost[$H2::comPlant] = 50; $H2::comCost[$H2::comPlant] = 10; $H2::comName[$H2::comFarm] = '農場整備'; $H2::comCost[$H2::comFarm] = 20; $H2::comName[$H2::comFactory] = '工場建設'; #$H2::comCost[$H2::comFactory] = 100; $H2::comCost[$H2::comFactory] = 50; $H2::comName[$H2::comMountain] = '採掘場整備'; #$H2::comCost[$H2::comMountain] = 300; $H2::comCost[$H2::comMountain] = 100; $H2::comName[$H2::comBase] = 'ミサイル基地建設'; $H2::comCost[$H2::comBase] = 300; $H2::comName[$H2::comDbase] = '防衛施設建設'; #$H2::comCost[$H2::comDbase] = 800; $H2::comCost[$H2::comDbase] = 500; $H2::comName[$H2::comSbase] = '海底基地建設'; $H2::comCost[$H2::comSbase] = 8000; $H2::comName[$H2::comMonument] = '記念碑建造'; #$H2::comCost[$H2::comMonument] = 9999; $H2::comCost[$H2::comMonument] = 500; $H2::comName[$H2::comHaribote] = 'ハリボテ設置'; $H2::comCost[$H2::comHaribote] = 1; $H2::comName[$H2::comMissileNM] = 'ミサイル発射'; $H2::comCost[$H2::comMissileNM] = 20; $H2::comName[$H2::comMissilePP] = 'PPミサイル発射'; $H2::comCost[$H2::comMissilePP] = 50; $H2::comName[$H2::comMissileST] = 'STミサイル発射'; $H2::comCost[$H2::comMissileST] = 50; $H2::comName[$H2::comMissileLD] = '陸地破壊弾発射'; #$H2::comCost[$H2::comMissileLD] = 100; $H2::comCost[$H2::comMissileLD] = 50; $H2::comName[$H2::comSendMonster] = '怪獣派遣'; #$H2::comCost[$H2::comSendMonster] = 3000; $H2::comCost[$H2::comSendMonster] = 1000; $H2::comName[$H2::comDoNothing] = '資金繰り'; #$H2::comCost[$H2::comDoNothing] = 10; $H2::comCost[$H2::comDoNothing] = 50; $H2::comName[$H2::comSell] = '食料輸出'; $H2::comCost[$H2::comSell] = -100; $H2::comName[$H2::comMoney] = '資金援助'; $H2::comCost[$H2::comMoney] = 100; $H2::comName[$H2::comFood] = '食料援助'; $H2::comCost[$H2::comFood] = -100; $H2::comName[$H2::comPropaganda] = '誘致活動'; $H2::comCost[$H2::comPropaganda] = 1000; $H2::comName[$H2::comGiveup] = '島の放棄'; $H2::comCost[$H2::comGiveup] = 0; $H2::comName[$H2::comAutoPrepare] = '整地自動入力'; $H2::comCost[$H2::comAutoPrepare] = 0; $H2::comName[$H2::comAutoPrepare2] = '地ならし自動入力'; $H2::comCost[$H2::comAutoPrepare2] = 0; $H2::comName[$H2::comAutoDelete] = '全計画を白紙撤回'; $H2::comCost[$H2::comAutoDelete] = 0; #---------------------------------------------------------------------- # 変数 #---------------------------------------------------------------------- # COOKIE my($defaultID); # 島の名前 my($defaultTarget); # ターゲットの名前 # 島の座標数 $H2::pointNumber = $H2::islandSize * $H2::islandSize; #---------------------------------------------------------------------- # メイン #---------------------------------------------------------------------- # jcode.plをrequire require($jcode); # 「戻る」リンク $H2::tempBack = "${H2::tagBig_}トップへ戻る${H2::_tagBig}"; # ロックをかける if(!hakolock()) { # ロック失敗 # ヘッダ出力 tempHeader(); # ロック失敗メッセージ tempLockFail(); # フッタ出力 tempFooter(); # 終了 exit(0); } # 乱数の初期化 srand; # COOKIE読みこみ cookieInput(); # CGI読みこみ cgiInput(); # 島データの読みこみ if(readIslandsFile($H2::currentID) == 0) { unlock(); tempHeader(); tempNoDataFile(); tempFooter(); exit(0); } # テンプレートを初期化 tempInitialize(); # COOKIE出力 cookieOutput(); # ヘッダ出力 tempHeader(); if($H2::mainMode eq 'turn') { # ターン進行 require('hako-turn.cgi'); require('hako-top.cgi'); turnMain(); } elsif($H2::mainMode eq 'new') { # 島の新規作成 require('hako-turn.cgi'); require('hako-map.cgi'); newIslandMain(); } elsif($H2::mainMode eq 'print') { # 観光モード require('hako-map.cgi'); printIslandMain(); } elsif($H2::mainMode eq 'owner') { H2::debugOut("owner:$brID:$ENV{'REMOTE_HOST'}:$ENV{'REMOTE_ADDR'}:$ENV{'REMOTE_IDENT'}:$ENV{'REMOTE_USER'}:$t:$H2::currentID\n"); # original local # 開発モード require('hako-map.cgi'); ownerMain(); } elsif($H2::mainMode eq 'command') { # コマンド入力モード require('hako-map.cgi'); commandMain(); } elsif($H2::mainMode eq 'comment') { # コメント入力モード require('hako-map.cgi'); commentMain(); } elsif($H2::mainMode eq 'lbbs') { H2::debugOut("comment:$brID:$ENV{'REMOTE_HOST'}:$ENV{'REMOTE_ADDR'}:$ENV{'REMOTE_IDENT'}:$ENV{'REMOTE_USER'}:$t:$H2::lbbsName\n"); # original local # ローカル掲示板モード require('hako-map.cgi'); localBbsMain(); } elsif($H2::mainMode eq 'change') { # 情報変更モード require('hako-turn.cgi'); require('hako-top.cgi'); changeMain(); } elsif($H2::mainMode eq 'camp') { # 陣営モード require('hako-camp.cgi'); campMain(); } else { # その他の場合はトップページモード require('hako-top.cgi'); topPageMain(); } # フッタ出力 tempFooter(); # 終了 exit(0); # コマンドを前にずらす sub slideFront { my($command, $number) = @_; my($i); # それぞれずらす splice(@$command, $number, 1); # 最後に資金繰り $command->[$H2::commandMax - 1] = { 'kind' => $H2::comDoNothing, 'target' => 0, 'x' => 0, 'y' => 0, 'arg' => 0 }; } # コマンドを後にずらす sub slideBack { my($command, $number) = @_; my($i); # それぞれずらす return if $number == $#$command; pop(@$command); splice(@$command, $number, 0, $command->[$number]); } #---------------------------------------------------------------------- # 島データ入出力 #---------------------------------------------------------------------- # 全島データ読みこみ sub readIslandsFile { my($num) = @_; # 0だと地形読みこまず # -1だと全地形を読む # 番号だとその島の地形だけは読みこむ # データファイルを開く if(!open(IN, "${H2::dirName}/hakojima.dat")) { return 0; } # 各パラメータの読みこみ $H2::islandTurn = int(