初めまして。
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で質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 一戸建て ユニットバスを追い焚きなし、にした場合自動湯張り機能は使えないのでしょうか? 1 2023/04/01 21:38
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- レトロゲーム ゲームタイトルが思い出せません 1 2023/05/21 11:05
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Java Java モンスターブリーダー 1 2023/02/05 09:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
MATLAB グローバル変数の宣言
-
openした後、closeしないでプロ...
-
ExcelをCSV書き出す場合のシー...
-
perl で googleAPIを呼び出す...
-
Perl Vlookupみたいに
-
VBAでCSVファイルを途中行まで...
-
CSVが可変長の場合の検索方法
-
cgiで表示するhtmlページ内でバ...
-
perlで容量の大きいCSVファイル...
-
alarmのタイムアウト後の処理で...
-
JavaでCSVファイルを高速に読む...
-
エクセルVBA コードが同じでも...
-
ReadLineでの読み出し行を指定する
-
VBAで巨大なファイルの途中から...
-
ADOによるCSVファイルからのデ...
-
Perlでファイルの列を削除する。
-
Perlで特定行から特定行までを...
-
バッチファイルの作り方(CSV→...
-
C言語で特定の行を抽出する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
openした後、closeしないでプロ...
-
エクセルVBA コードが同じでも...
-
ReadLineでの読み出し行を指定する
-
JavaでCSVファイルを高速に読む...
-
perlで、後ろの行を読んで、前...
-
Perlの変数に文字数制限(容量...
-
エクセルVBAでCSVファイ...
-
perlにて2つのファイル比較
-
MATLAB グローバル変数の宣言
-
C#でCSVファイルを逐一更新したい
-
CSVが可変長の場合の検索方法
-
他のサーバーにあるファイルの...
-
動画像から静止画を取り出すには
-
perlで容量の大きいCSVファイル...
-
外部サーバーにあるファイルを...
-
1ファイルずつ読み込みたい
おすすめ情報