初めまして。
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件)
- 最新から表示
- 回答順に表示
No.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はデータを書き込むための関数です。
読み込み用にファイルを開いているので影響ありませんが、下手するとファイルを壊しかねませんので注意してください。
サブルーチンに格納するのですね。
これで一回にいくと必ず150番目がでます。
それに加えて以下の機能を付け加えたのですが
失敗しました。
◆一回倒すともうでない。(条件分岐でいけるかな・・・)
sub kai {
中略
$ten = $ransu[(rand(23))];
}
#ボス処理
if($inkai == 1) {
$ten = 150;
}
else {}
◆ボスが50階にいるとして46階から上は幸せの鍵などをださないようにする(50階こすとボスを追い越してしまう)
これは記述がわかりませんでした・・・。
とりあえず各階にいるボスを倒さないと次にいけないというのを
作りたかったので、luka3様の記述を参考にしましたが
できませんでした・・・。
No.1
- 回答日時:
「Monster's」というゲームは知りませんが、プログラムとしてのアドバイスができる人は、ここにはたくさんいると思います。
ですので質問に次のことを補うといいと思います。
・「Monster's」というゲームCGIを配布しているURL
・aite.cgiの何行目に改造を加えたのか
今ある情報からは、syswriteをたぶんまちがった使い方をしていることがわかります。
あと疑問なのは「階が1Fだったら」という条件だと、
1Fにいれば毎回(1歩あるくごとに?)同じモンスターを出現させることになりますが
それでいいのでしょうか。
回答有り難う御座います。
・Monster's配布サイト:http://park16.wakwak.com/~mikio-palace/
・aite.cgiの795行目のみです。
・因みに$monsdataはmonsterdat.cgiのことです。モンスターデータが格納されてます。
syswriteはデータを読み込む関数ですが間違ってましたか。
はい、同じモンスターでも大丈夫です。
これは、ボスを倒した時どこかでフラグをたてれば
倒したら他のモンスターもでるようにできるかもしれませんが、
できるかはわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
拡張子 ”log” と ” dat” の違い
-
CSVが可変長の場合の検索方法
-
csvファイル改行コードの置換に...
-
VBAで巨大なファイルの途中から...
-
VBScriptでファイル保存先のデ...
-
検索ボックスから製品名を検索...
-
ファイルロックのおすすめプロ...
-
Perlの変数に文字数制限(容量...
-
エクセルVBAでCSVファイ...
-
openした後、closeしないでプロ...
-
MATLAB グローバル変数の宣言
-
C言語でのファイルのデータ更...
-
close()で例外が投げられる理由
-
awkスクリプトでダブルクォーテ...
-
エクセルVBAで素数だけを出力す...
-
vba dir の相対パス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
エクセルVBA コードが同じでも...
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
ReadLineでの読み出し行を指定する
-
openした後、closeしないでプロ...
-
JavaでCSVファイルを高速に読む...
-
VBAで巨大なファイルの途中から...
-
拡張子 ”log” と ” dat” の違い
-
csvファイル改行コードの置換に...
-
C言語でのファイルのデータ更...
-
VB6.0でDB接続する際に切断時の...
-
Perlの変数に文字数制限(容量...
-
Perl Vlookupみたいに
-
CSVファイルについて
-
MATLAB グローバル変数の宣言
-
エクセルVBAでCSVファイ...
-
VBScriptでファイル保存先のデ...
-
Monster'sの改造・・・ボスモン...
-
perlで、後ろの行を読んで、前...
おすすめ情報