アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めまして。
wc13と申します。

今、CGIゲームにある「Monster's」というゲームを設置し
改造しています。
Monster'sを知っている方、設置している方、改造している方、みてください。
自分は決まった階に特定のモンスターを出現させたいのですが、
すこしやり方がわかりません。
一応、モンスターのデータを読み込んでいるところに何かすればいいと思うのですが、その「何か」がわかりません。
自分なりにこうやってみました。
階が一回だったら(ここでモンスターデータ開く)150番目のモンスターを読み込む・・・とさせましたが出ませんでした。500エラーはでていません。記述したファイルはaite.cgiです。
if($Ykey == 1){
open(FH,"$monsdata");
@lines = <FH>;
$monsdata = syswrite FH, 150;
close(FH);
}

一応、Perlに関する書籍などを購入し読んではいますが
上記の内容を解決させることはできませんでした。
どうすればいいのか全く検討がつきません。
ご教授お願いします。

A 回答 (2件)

aite.cgiを改造するというのはあっていますが、場所があまりよくないと思います。


aite.cgiの最初、kaiという関数内で処理する方がいいでしょう。
kai関数を解説しますと、(V1.8です)

sub kai {

$keitou = $FORM{'keitou'}; ←部屋の系統、0なら通常の部屋、1ならスライム系の部屋

if($keitou == 0){ ←0のとき、つまり通常の部屋を選んだ場合のモンスター決定処理をする

if($inkai >= 1 && $inkai <= 25) { ←$inkaiは階数です。ここでは1階から25階までの場合
@ransu = (1,2,3,...省略...); ←遭遇するモンスターの番号一覧です
$ten = $ransu[(rand(23))]; ←上の行で決めたモンスター一覧からランダムで一つ選ぶ。23は上の行の()の中の数字の個数。
}

こんなかんじでわかるでしょうか。

1階で必ず150番のモンスターを出すなら、
if($inkai == 1) {
$ten = 150;
}
となります。
これを通常の部屋でのみ出すなら49行目に追加、全ての部屋で出すなら423行目に追加すればよいです。

syswriteはデータを書き込むための関数です。
読み込み用にファイルを開いているので影響ありませんが、下手するとファイルを壊しかねませんので注意してください。
    • good
    • 0
この回答へのお礼

サブルーチンに格納するのですね。

これで一回にいくと必ず150番目がでます。
それに加えて以下の機能を付け加えたのですが
失敗しました。

◆一回倒すともうでない。(条件分岐でいけるかな・・・)
sub kai {
中略
$ten = $ransu[(rand(23))];
}
#ボス処理
if($inkai == 1) {
$ten = 150;
}
else {}
◆ボスが50階にいるとして46階から上は幸せの鍵などをださないようにする(50階こすとボスを追い越してしまう)

これは記述がわかりませんでした・・・。

とりあえず各階にいるボスを倒さないと次にいけないというのを
作りたかったので、luka3様の記述を参考にしましたが
できませんでした・・・。

お礼日時:2007/05/25 17:50

「Monster's」というゲームは知りませんが、プログラムとしてのアドバイスができる人は、ここにはたくさんいると思います。


ですので質問に次のことを補うといいと思います。
・「Monster's」というゲームCGIを配布しているURL
・aite.cgiの何行目に改造を加えたのか

今ある情報からは、syswriteをたぶんまちがった使い方をしていることがわかります。
あと疑問なのは「階が1Fだったら」という条件だと、
1Fにいれば毎回(1歩あるくごとに?)同じモンスターを出現させることになりますが
それでいいのでしょうか。
    • good
    • 0
この回答へのお礼

回答有り難う御座います。

・Monster's配布サイト:http://park16.wakwak.com/~mikio-palace/
・aite.cgiの795行目のみです。
・因みに$monsdataはmonsterdat.cgiのことです。モンスターデータが格納されてます。

syswriteはデータを読み込む関数ですが間違ってましたか。
はい、同じモンスターでも大丈夫です。
これは、ボスを倒した時どこかでフラグをたてれば
倒したら他のモンスターもでるようにできるかもしれませんが、
できるかはわかりません。

お礼日時:2007/05/24 12:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!