<?php
require_once('include/init.php');
$INIT_CONF->LoadClass('TIME_CALC', 'GAME_CONF', 'CAST_CONF', 'ROOM_IMG',
		      'USER_ICON', 'GAME_OPT_MESS');
OutputHTMLHeader($SERVER_CONF->title . $SERVER_CONF->comment . ' [仕様]', 'script_info');
?>
<script type="text/javascript" src="javascript/output_diff_time.js"></script>
</head>
<body>
<?php include(JINRO_ROOT.'/info/topleft.php'); ?>
<div id="main">
<h1 class="title">スクリプトの仕様</h1>
<!--<img src="img/script_info_title.jpg">-->

<h1>ゲームに参加するために必要な環境</h1>
<div>
ゲームに参加するためには
<ul>
  <li>JavaScript を有効にする</li>
  <li>Cookie を有効にする</li>
  <li>PC の時計をサーバと合わせる → Ver. 1.4.0 β4 から不要になりました</li>
</ul>
の三つの条件を満たしてください<br><br>
動作確認しているブラウザは Windows Internet Explorer 6、FireFox、Opera です。<br>
また画面の解像度は 1024x768 以上が望ましいです。<br>
</div>

<h1>他のスクリプトとどこが違うの？</h1>
<div class="diff">
この PHP+MySQL 用のスクリプトは人狼 CGI(perl) スクリプトの本家、<a href="http://park1.wakwak.com/~aa1/table/index.htm" target="_blank">Table@</a>さんのシステムを参考に改良をしたものです。<br>
Perl から PHP にすることで動作を高速にし、排他制御を MySQL に任せることでロックエラーの回避を目的に作成されました。<br>
本家のスクリプトとは多少の違いがあります、下記にその内容を記載します。
</div>

<div class="diff">
<h2>ゲームの開始や突然死の処理をプレイヤー自身やスクリプトの自動処理に任せることでゲームマスターの必要の無いシステムになりました</h2>
このスクリプトではゲームマスターは居ません、村を作成した人は改めて住民登録をしてゲームにご参加ください。<br>
ゲームを開始するにはプレイヤー全員が「ゲームの開始」に投票する必要があります。<br>
ゲーム中の仮想時間 (昼12時間、夜6時間) を経過した後に [<?php echo $TIME_CALC->sudden_death ?>] 経過すると投票していない人は自動で突然死となります。<br>
突然死が発生するとその日の投票がリセットされて再投票となります、注意してください。</div>

<div class="diff">
<h2>ユーザの似顔絵などを表すユーザアイコンを自由にアップロードできます</h2>
<a href="icon_upload.php">専用のページ</a>から [<?php echo $USER_ICON->IconSizeMax() . '、容量 ' . $USER_ICON->IconFileSizeMax() ?>] のファイルをアップロードできます。</div>

<div class="diff">
<h2>自動廃村</h2>
ゲームが開始されない場合、最後に発言された時間から [<?php echo $TIME_CALC->die_room ?>] 放置されると自動で村は廃墟になります。<br>
手動で廃村にする方法はありません、連絡用の掲示板やゲーム内の発言で村に登録しないように促してください。
</div>

<div class="diff">
<h2>自動引き分け判定</h2>
再投票が何度も続くとゲームが進まなくなります。<br>
この場合、やむを得ず引き分けとすることが必要です。<br>
[<?php echo $GAME_CONF->draw ?>回] 再投票が続いた場合は自動的に引き分けとなり、ゲームは終了します。
</div>

<div class="diff">
<h2>村の最大人数を制限できます</h2>

<?php
$str = '[' . implode('人]、[', $ROOM_CONF->max_user_list);
$min_user = min(array_keys($CAST_CONF->role_list));
$str .= '人] のどれかを村に登録できる村人の最大人数として設定することができます。<br>';
$str .= "ただしゲームを開始するには最低 [{$min_user}人] の村人が必要です。";
echo $str;
?>
</div>

<div class="diff">
<h2>妖狐は15人以上で常に登場</h2>
妖狐が登場しない村が少ないようでしたので、常に登場するようにしました。
</div>

<div class="diff">
<h2>リアルタイム制オプション</h2>
村を作成するときに「リアルタイム制」にチェックを入れると、ゲーム中の仮想時間 (昼12時間、夜6時間) が発言により消費されるのではなく固定された実時間で消費されていきます。<br>
設定される時間は村を作成する人が決定することができます
(デフォルト 昼： [<?php echo $TIME_CONF->default_day ?>分]　夜： [<?php echo $TIME_CONF->default_night ?>分])。<br>
その村に設定された制限時間を知るには、ゲーム一覧のゲームオプションアイコン、リアルタイム制用<?php echo
$ROOM_IMG->Generate('real_time', 'リアルタイム制　昼：' . $TIME_CONF->default_day .
		    '分　夜： ' . $TIME_CONF->default_night . '分') ?>にマウスポインタを合わせることで表示されます。<br>
実時間の残り時間がおかしな場合は PC とサーバの時計がズレている可能性があります。<br>
下記の計測結果で明らかに大きなズレがある場合は、<a href="http://www.vector.co.jp/soft/win95/personal/se050672.html" target="_blank">桜時計</a>などを使用して PC の時計を合わせてください。<br>
<span class="diff-time">サーバとローカル PC の時間ズレ (ラグ含)：<script type="text/javascript">
<?php echo "output_diff_time('" . TZDate('Y, m, j, G, i, s', TZTime()) . "');" ?>
</script>秒</span>
</div>

<div class="diff">
<h2>初日の夜は身代わり君</h2>
初日の夜に一度も発言することなく人狼に襲われて、ゲームに参加したとはいえない！と思ったことはありませんか？<br>
村を作成するときに「初日の夜は身代わり君」にチェックを入れると初日の夜、人狼は身代わり君しか襲えないようになります。<br>
身代わり君はプレイヤーが操作するのではなく、初日に襲われる為だけに存在します。<br>
割り当てられる役割は<?php
$str = '';
foreach($CAST_CONF->disable_dummy_boy_role_list as $role){
  #$str .= '「' . $GAME_CONF->GetRoleName($role) . '」';
  $str .= '「' . $GAME_CONF->main_role_list[$role] . '」';
}
echo $str;
?>以外のどれかランダムに設定されます。<br>
</div>

<div class="diff">
<h2>占い師、霊能者の結果は次の日の朝に出る</h2>
占い師は夜に占いますが、占った直後に結果がわかるのではなく次の日の朝に結果が表示されます。<br>
霊能者も処刑した日の夜にわかるのではなく、次の日の朝に結果が表示されます。
</div>

<div class="diff">
<h2>同日の夜に占い師が妖狐を占い、人狼がその占い師を襲った場合は占い無効</h2>
通常占い師が妖狐を占うと占われた妖狐は死んでしまいますが、同日に人狼がその占い師を襲うと占いは失敗となり妖狐は死なずに済みます。<br>
勝率の低い妖狐のバランスを取るためにこのようになっています。
</div>

<div class="diff">
<h2>埋毒者を吊った際に巻き添えにする対象を限定可能</h2>
サーバ管理者がゲーム設定を変更する事で埋毒者を吊った際に巻き添えにする対象を限定する事が可能です。<br>
現在の設定は [ <?php echo ($GAME_CONF->poison_only_voter ? '投票者' : '生存者全員') ?>からランダム ] です。
</div>

<div class="diff">
<h2>人狼が埋毒者を襲撃した際に巻き添えになる対象を限定可能</h2>
サーバ管理者がゲーム設定を変更する事で人狼が埋毒者を襲撃した際に巻き添えになる対象を限定する事が可能です。<br>
現在の設定は [ <?php echo ($GAME_CONF->poison_only_eater ? '襲撃者固定' : '人狼全員からランダム') ?> ] です。
</div>

<div class="diff">
<h2>システムメッセージを画像に</h2>
システムメッセージがテキストの場合、そのテキストをコピー＆ペーストをして発言することで本物の能力者であると信頼を得ようとすることを抑止するために画像にしてあります。<br>
どのような画像が表示されるかは<a href="rule.php">ゲームのルール</a>を参照してください。
</div>

<div class="diff">
<h2>同時稼働できる村の数</h2>
サーバ負荷の調整のため、同時稼働できる村の数をサーバ管理者が設定できます。<br>
現在の設定は [ <?php echo $ROOM_CONF->max_active_room ?>村まで ] です。
</div>

<div class="diff">
<h2>次の村を立てられるまでの待ち時間</h2>
打ち合わせミスや、リロードによる多重村立て事故を防ぐため、一つの村が立ってから次の村を立てられるまでの待ち時間をサーバ管理者が設定できます。<br>
現在の設定は [ <?php echo $TIME_CALC->establish_wait ?> ] です。
</div>

<div class="diff">
<h2>同じ村には同じ IP アドレスで複数登録することはできません</h2>
多重登録を防ぐために同じ村に同じ IP アドレスで複数登録することはできません。<br>
この機能はスクリプトの設定で有効、無効を設定することができます<br>
一つのグローバル IP アドレスでルータを用いて複数の人が参加したい場合は管理人さんに相談してください。<br>
現在の設定は [ 登録<?php echo ($GAME_CONF->entry_one_ip_address ? "不可" : "可能") ?> ] になっています。
</div>

<div class="diff">
<h2>共有者の夜の会話が可能になりました</h2>
共有者に新しい能力が増え、夜中に共有者同士で会話することができます。<br>
この会話は非リアルタイム制の場合の会話による時間消費には加算されません。
</div>

<div class="diff">
<h2>夜の独り言</h2>
人狼、共有者以外は夜中会話することは出来ませんが、発言すると独り言となり、本人と死亡者(天国モード)からは見ることができます。<br>
ただし、「霊界で配役を公開しない」オプションが設定されている場合は見えません。<br>
暇つぶしにでも使ってください。
</div>

<div class="diff">
<h2>遺言</h2>
処刑されたり、人狼に襲われたり、占い殺されたりしたときにあらかじめ設定しておいた遺言が次の日の朝に公開されます。<br>
これは昼の会議中になんとなく言えなかったことや自分の考えをまとめたものを書いておくことで、もしもの時に効果を発揮します。<br>
遺言でさらなる情報を得て、推理の材料にしてください。<br>
設定方法は発言の文字の大きさ(強く発言する・通常どおり発言する・弱く発言する)の欄の一番下に「遺言を残す」という項目があります。<br>
この項目を選択して文章を送信すれば遺言がセットされます。<br>
死亡後は遺言のセットはできません。
</div>

<div class="diff">
<h2>死亡者の順序がランダム表示</h2>
人狼に襲われて死亡した場合、妖狐が占われて死亡した場合、埋毒者に道連れにされた場合、表示されるメッセージは「〜は無残な姿で発見されました」となります。<br>
また、恋人が後追いした場合、表示されるメッセージは「〜は恋人の後を追って自殺しました」となります。<br>
表示される順番ですが、どの死に方をした人が上に表示されるということはなく順序がランダムに表示されます。<br>
注意しなければいけないことはリロードするたびにランダムに順序が変更されるということです。
</div>

<div class="diff">
<h2>強制沈黙</h2>
非リアルタイム制の場合、誰も発言をせず <?php echo $TIME_CALC->silence ?> 過ぎた場合には強制的に沈黙となり時間が消費されます。<br>
消費される時間は 昼： <?php echo $TIME_CALC->silence_day ?> 夜： <?php echo $TIME_CALC->silence_night ?>です。
</div>

<div class="diff">
<h2>非リアルタイム制の会話の時間消費の上限</h2>
半角100文字(全角50文字)で 昼： <?php echo $TIME_CALC->spend_day ?> 夜：<?php echo $TIME_CALC->spend_night ?> ずつ消費されていきますが、どれだけ文字が増えても最大半角400文字(全角200文字)までの消費時間までしか増えません。<br>
半角400文字以上で発言しても消費される時間は半角400文字分と同じです。
</div>

<div class="diff">
<h2>投票ページを別に用意</h2>
今までのシステムでは、一番上に表示されているプレイヤーに誤って投票してしまうことがありました。<br>
その問題を解消するために投票のページを別に設け、ドロップダウンリストからラジオボタンに変更しました。
</div>

<div class="diff">
<h2>自動リロード</h2>
自動でリロードするように設定することができます。
</div>

<div class="diff">
<h2>音でお知らせ</h2>
「音でお知らせ」をOnにすると、「夜が明けたとき」「再投票になったとき」「異議ありのとき」に音でお知らせしてくれます。<br>
「異議あり」については次で説明します。
</div>

<div class="diff">
<h2>異議ありボタン</h2>
ゲーム前、ゲーム中の昼に右上に「異議あり」のボタンがあります。<br>
このボタンを押すと特殊なメッセージと音で皆に知らせることができます。<br>
ボタンに右にカッコ内で表示されている数字は残り回数です。<br>
<?php echo $GAME_CONF->objection ?> 回「異議あり」を使用すると二度と使えなくなります。
</div>

<div class="diff">
<h2>半角 &yen; マークは発言できません</h2>
半角 &yen; マークは発言できません、仕様です。
</div>

<div class="diff">
<h2>半角 &yen; マークやシングルクオーテーション &rsquo; は村名やユーザ名には使用できません</h2>
半角 &yen; マークやシングルクオーテーション &rsquo; は村名やユーザ名には使用できません、仕様です。<br>
その他サーバの仕様によっては他の記号も使用できない可能性があります、ご了承ください。
</div>

<div class="diff">
<h2>他の人と同じ名前のユーザ名やハンドルネームは登録できません</h2>
他の人と同じ名前のユーザ名やハンドルネームは登録できません、仕様です。<br>
同じ名前を狙うのなら、半角数字を全角にしたり工夫してください。
</div>

<h1>＜FAQ よくある質問と答え＞</h1>

<div class="diff">
<h2>セッションエラーと表示されました</h2>
ログインするとセッション情報が Cookie としてブラウザに渡されます。<br>
そのセッション情報でユーザの判別（ログインの有無、ユーザ名の識別）を行っています。<br>
他のブラウザで多重ログインしたりするとセッションが変わってしまい、前ログインしていたセッションは無効になります。<br>
（1ユーザに1セッション、別のセッションが開始されると前のセッション ID は DB から削除されます）<br>
また Cookie を許可していない場合はセッション情報を持つことが出来ないためログインを維持できません。<br>
Cookie は有効にしてください。
</div>

<div class="diff">
<h2>ログインするには</h2>
村人登録すると自動でセッションが発行され、ログインされます。<br>
そのままトップページに戻っても村のリンクをクリックすれば自動でログインされます。<br>
しかしセッション情報を破棄してしまったり、ブラウザを変えたりすると自動でログインされなくなります。<br>
そのときは観戦ページの上部の「ユーザ名」「パスワード」を入力してログインしてください。<br>
また、ゲームが終了してしまった場合は再度ログインすることは出来ません。
</div>


<div class="diff">
<h2>死亡して天国モードに行く場合に画面がおかしくなる</h2>
Mac では一応対策されているつもりです。<br>
あとタブブラウザでなる場合もあるそうです。<br>
もし画面が変になりましたら再ログインするか、それでもダメなら公式の連絡掲示板に詳しく状況を報告していただければ助かります。<br>
動作確認をしているブラウザはIE6、FireFox、Opera（どれもWin32用）です。
</div>

<div class="diff">
<h2>死亡者のアイコンにマウスポインタを乗せると画像が異常に大きくなる</h2>
これはアップロードされている画像をリサイズせずにアップロードしているためにこうなります。<br>
管理人さんにリサイズしなおすようにお願いしてみてください。
</div>

<div class="diff">
<h2>バグを見つけたのですが</h2>
<a href="http://cgi.f45.aaacafe.ne.jp/~netfilms/" target="_blank">公式</a>の連絡用掲示板にできるだけ詳しくバグの起きた状況とその内容を報告してください。<br>
できれば対戦ログも教えていただければ助かります。
</div>

<div class="diff">
<h2>ゲームの機能に関して要望があるのですが</h2>
私にやる気があればなんとかしたいと思っています。<br>
でもあまり期待しないでください|´・ω・)
</div>

<div class="diff">
<h2>発言したときに時々発言できてないときがある</h2>
ゲーム中、昼と夜の切り替わり付近でこのような動作をするときがあります。<br>
これは夜の人狼同士の秘密の会話をしているうちに突然朝になり、うっかり夜に発言するはずだった会話が朝に漏れてしまった、ということが無いようにこのような処理をしています。<br>
昼→夜も同様です。<br>
具体的な処理ですが、最後に読み込んだ状況(昼、夜、ゲーム前)と書き込んだときの状況が一致してなければ発言しないようになっています。
</div>

<div class="diff">
<h2>同じ日の夜に占い師が妖狐を占い、その占い師を人狼が喰い殺した場合どうなるの？</h2>
通常占い師が妖狐を占うと占われた妖狐は死んでしまいますが、同日に人狼がその占い師を襲うと占いは失敗となり妖狐は死なずに済みます。<br>
勝率の低い妖狐のバランスを取るためにこのようになっています。
</div>

<div class="diff">
<h2>Kickされたときのユーザ名や村人名は再度同じ村で使用できるの？</h2>
ユーザ名は使用できませんが、村人名は使用できます。
</div>

<div class="diff">
<h2>このスクリプトを勝手に改造して再配布してもいいの？</h2>
かまいません。<br>
許可を取る必要もありませんし、報告する義務もありません。<br>
しかし、植物の背景画像、左上にある文字の入ったタイトル画像は<a href="http://keppen.web.infoseek.co.jp/" target="_blank">天の欠片</a>さんの素材を使用しています。<br>
この画像をそのまま使う場合は index.php の天の欠片さんへのリンクを削除しないようにお願いします。<br>
またこの画像の著作権は天の欠片さんの物なので、自分で撮影したとか自分で作ったとか言わないようにしてください。<br>
Ver. 1.2.0で追加した画像については、<a href="http://azukifont.mints.ne.jp/" target="_blank">あずきふぉんと</a>さんのフォントを利用させていただいています。<br>
この画像をそのまま使う場合は index.php のあずきふぉんとさんへのリンクを削除しないようにお願いします。<br>
このシステムには mbstring モジュールに非対応なサーバでも稼動できるように <a href="http://www.matsubarafamily.com/blog/mbemu.php" target="_blank">mbstringエミュレータ</a>が入っています。<br>
index.php の mbstring エミュレータさんへのリンクを削除しないようにお願いします。
</div>
</div>
</body></html>
