#BR2用CPUソース
内容物
brcpu.cgi.euc CPUソースver1(とりあえず完成版)
brcpu2.cgi.euc CPUソースver2(β版)
brcpu.cgi CPUソースver1(とりあえず完成版、S-JIS)
brcpu2.cgi CPUソースver2(β版、S-JIS)
brcpu.htm このファイル

●お約束
このプログラムによって生じたいかなる問題も作者は保証しません。

●概要
ここのロワイアル用に組んだNPCソースを一般向けに手直ししたものです。
テストしてから導入おくことを強くお勧めします。
※中級以上の知識がないと厳しいと思います。(中級って何)

ver1とver2の違い
ver1ではbractionをコピーして、文字表示を片っ端からコメントアウトしていました。
ver2ではそれをせず、studentをCPUの生徒に設定してbractionの関数を呼び出しています。

すなわち、(以下での「リザルト」とはソース中の「@Result」と解釈してください)
ver1では
プレイヤーが行動→プレイヤーのリザルト更新
→CPUが行動(独自ソース。文字表示をコメントアウトしているのでリザルトは更新されない)
→プレイヤーのリザルト(+CPUのリザルト="")出力
ver2では
プレイヤーが行動→プレイヤーのリザルト更新→プレイヤーのリザルト出力
→CPUが行動→CPUのリザルト更新→CPUのリザルトは無視

プレイヤーとCPUにある程度同一の行動を取らせたい場合はver2がいいでしょう。
そうでない場合、またはCPUのリザルト更新処理が無駄だと思う人は、ver1を使用して下さい。



CPU導入のやり方。

bractmainの、
require './braction.cgi';
require './brhtml.cgi';
require './brmain_st.cgi';
の直
ver1 require './brcpu.cgi';#CPUソース
ver2 require './brcpu2.cgi';#CPUソース
を追加。

さらに、
ver1 if($iz eq 'move'){
&ActMove(@Account);
} elsif($iz eq 'attack') {
(中略)
} elsif($iz eq 'counter') {
&ActSetCounter(@Account);
}
ver2 $ResultOut .= '<p class=result>'. join("</p>\n<p class=result>", @Result)."</p>\n" if @Result;
の直
&CpuAction;#コンピューターの行動
を追加。

brlistの、
$groupnum = (scalar keys %brGroup);
foreach $type(sort{$brGroup{$a}->{Num}<=>$brGroup{$b}->{Num}} keys %brGroup) {

を、

$groupnum = (scalar keys %brGroup)-1;
$x = 0;
foreach $type(sort{$brGroup{$a}->{Num}<=>$brGroup{$b}->{Num}} keys %brGroup) {
if($x >= $groupnum){last;}
$x++;
に変更

misc2に、
Group,D,3,CPU,00ff00,007744
を追加。(色や数字は各自の環境に合わせてください)

nametableの最後に、
D01,たけし,43,0,
を追加。名前はご自由に。


そして、使用するバージョンのcgiをアップ。
パーミッションはたぶん変更しなくても大丈夫。駄目だったら[755]に設定。


CPUの仕様
1.死んでも一定時間経つと復活します。CpuActionを参照
2.プレイヤーの行動に合わせて行動します。
3.アイテムの回収は鞄からではなく、無からアイテムを発生させることにより入手します。(CpuActItem)
 また、地面のアイテムを拾うことはありません。
4.5つしかアイテムをもてません。首輪、接近武器、銃火器、防具、道具を1つずつです。プレイヤーから渡されたアイテムは、自分から使うことはありません。
5.体力がある程度少ない状態になると少しずつ体力が回復します。
6.カウンター対応は、一歩歩くごとに反撃、逃走、反撃→逃走の3種類の中からランダムで変わります。
7.出現位置はランダムで決まります。brcpuのCpuBornを参照。ついでに操作者名とパスワードも変えておいてください。
8.CPUの数を増やしたい場合はbrcpuのCpuActionとCpuBorn辺りを改造してください。
9.改造すれば何でも出来ます。重さのほどは保証しませんが。

諸注意
1.CPUは、妙に強かったり妙に弱かったり極端です。CpuActItemの辺りを変えればある程度の調整は効きます。
2.CPUを倒してもプレイヤーを倒しても、スコアの伸びは一緒です。
 対人なら1点、、CPUなら0.5点という風にしたい場合はbrcommonのbr_Deathを改造してください。
3.CPUを導入すると、プレイヤー同士の戦闘が減ります。少なくともうちでは減りました。
4.バグったらごめんなさい。報告があると助かります。
5.当然、重くなります。

導入した後の、バランス調整が大切です。頑張ってください。無理だと判断したら解除したほうがいいと思います。
成功したら、brhtml.cgiのフッタ部分に
NPC Script by <a href="http://light-of-moe.ddo.jp/~nijiro/" target="_top">二次狼</a>
を追加してください。
「二次狼」が嫌なら「2D-WOLF」でお願いします(笑)
あと、メール報告があると嬉しいです。


●更新履歴
2003/06/21 ちまちまと直していきます。
2003/06/18 なんてバグだ…いや、バグ以前の問題だ…_| ̄|○
2003/05/15 ver2公開。いろいろとすっきりしましたが、β版です。
2003/03/01 なんか変なことやってたので修正。02/20以前のバージョンかCPU1人なら関係なし。
2003/02/20 なんかCPU同士が睨み合って動かなくなることがあるのでちまちま改良。
2002/12/26 ごーめーんーなーさーいーバグがあるのわかってたのに直すの忘れてました(汗)
2002/09/12 案の定バグ出現w 報告ありがとうございます。
2002/09/11 とりあえずアップ。バグ報告&質問待ってます。

二次狼にメール