| このページは、SOLD OUT ファンサイトのso-Junkyで行われていたゲームの改造講座を転記したものです。 |
|
SOLD OUT 改造講座 | SOLD OUT ミジンコ |
職業の変更と、職業によるコマンド時間の短縮
「ミジンコ」がとっても好きなあなたは悩んでいました。【ひょっとしたら無駄な時間を使ってるんじゃないか?】。つまりこういうことです。野生のミジンコを集めたり研究所跡地を探索するのが好きか、購入したミジンコをカラフルに変えて観賞するのが好きか、どっちか片方だけにしたほうが無駄がない。いったいあなたはどちらがお好みですか? 無改造版で言えば、「薬屋」という職業になっていると「薬調合入門」のコマンドを使うときに時間短縮されたりしますよね。 今回は職業について3つの内容に分けて説明したいと思います。 1. 職業の定義 2. 職業に就いている場合の @@USE の時間短縮 3. 職業の変更を行う独自関数。難しいですよ〜。(^ー^)
1. 職業の定義inc-item-data.cgi の(おそらく)17行目あたりから職業の定義があります(アイテム分類の定義のすぐ下です)。 job drug 薬屋
#★職業定義(職業コード{スペース}職業名) 職業コードは英小文字10文字以内 上のかたまりは「こんな職業があるよ」というのを定義したものです。例えば、「jod drug 薬屋」は、「薬屋」という職業名と「drug」という職業コードを定義しています。職業名と職業コードは自由な文字を設定すれば大丈夫です。でも、必ず「job(区切り)職業コード(区切り)職業名」としてください。 下のかたまりは「特定職業になっている時に何倍の速さで@@USEを行うか」を設定するものです。例えば「set job_drug_time_rate 2」は、薬屋になっていれば2倍のスピード(使用時間が半分)となるわけです。これを「4」とすれば4倍のスピード(使用時間が1/4)となります。設定をする際に job_○○_time_rate の○○の部分は「職業コード」を使っておくと、後に見たときに分かりやすくなると思います。区切りの位置は「set(区切り)job_○○_time_rate(区切り)速さの数字」としてください。 では早速、inc-item-data.cgi を変更してみましょう(赤文字部分が追加、元から設定してある不要な職業は消してしまってよいです) job picker 採取家
2. 職業に就いている場合の @@USE の時間短縮上記の説明は inc-item-data.cgi 全体に関わる設定であって、どの @@USE で職業のスピードを適用させるかについては、それぞれの @@USE の中で定義します。 まずは説明です。途中は省略しますが、次のように @@USE の中に書きます。 @@ITEM このようにしておくと、「あかジンコに変身する」というコマンドの時間が job_sience_tirme_rate(=2) 倍のスピードで実行できることになります。 表記方法は、「job(区切り)職業名(区切り)times/職業別時間短縮用変数」となります。間違いやすいのが「times」と書かなければならないのを「time」と書いてしまって正常に動作しないことです。 では実際に設定してみたいと思いますが、設定する場所が多いので途中を省略して書いておきます(赤文字です)。 @@ITEM
3. 職業の変更を行う独自関数。難しいですよ〜。(^ー^)く じ け る な っ、 こ こ を 乗 り 切 れ ば、 後 は 楽 さ っ ♪ さて、以上の説明は、「もし○○という職業に就いていたら、@@USE の時間を短縮する」というものでした。でも、実際にプレイヤーの職業を設定するためにはどのようにしたらよいのでしょうか。 サンプルとしては、無改造版の「転職のススメ」なのですが・・・(うぎゃ~、なんかプログラムがしてある〜)みたいな。そうなんです。職業を設定するためには、どうしても perl スクリプトを使わなければならないのです。でも、今回は転職のススメみたく難しくしないで、超々々簡単に設定してしまいますので安心してくださいね。(その代わり転職のススメのように熟練度は変化しません。)
でも、よい機会ですので、perl を記述するための SOLD OUT 独自関数の書式についても説明しておきます。 SOLD OUT 独自関数の書式は大きく分けて2通りの書き方があります。(チンプンカンプンな人は「いつか読み直して覚えよう」程度でOK)
で、今回の職業変更は本当は1番目のやり方で実現した方が良いのですが、それは 010講座の「sub lostbook」でお試ししてみたので、今回は2番目の方法でやってみたいと思います。
では、独自関数の書式から説明します。(今まで勉強してきたところは省略しています。) @@ITEM このように、青色で表記したようなパターンになります。ここまでは単純です。※印の部分が難しいんだよね。 ※perl 言語の説明をするためには、私には力不足です。ですから、perl 言語を勉強したい人は本を買ったり、「とほほのWWW入門」などで勉強してください。ただし、本講座でとり扱う部分については簡易説明をつけてゆきます。
では、独自関数の中に「職業に就く」という命令を perl で記述してみたいと思います。 func _local_ (うぎゃ~っ)←まて、落ち着け。 $DT は店舗のいろんな情報がつまっている変数(入れ物)です。→用語で分からないものは「アスキーデジタル用語辞典」などで調べましょう。 そして、$DT->{job} は店舗の職業コードを入れておくもので、この講座の最初の方で決めた「職業コード」を入れてあげるとその職業になってしまいます。ですから、@@USE のコマンドだけではなく、「全員が科学者になってしまいました」などのイベントを作ることもできます。 ※ある変数に値を入れる(設定する)場合は、「変数名=値;」と記述します。最後の ; (セミコロン) は1つの命令が終わったよという意味です。 ※'sience' とか '職業が・・・' などの文字列の前後には ' (シングルクオート)があります。 次に、return の後ろには、表示するメッセージを書きます。ところが、もしですよ、もし「job sience 科学者」を「job sience 合成師」みたいに変更した場合は、独自関数の表示メッセージも変更しなくちゃいけませんし、その変更を忘れてしまう場合があります。そこで、次のようにしておくことで、職業コードに対応した職業名を表示できるようになります。 func _local_ わかる? 「科学者」と書いてあったところを、$main::JOBTYPE{$DT->{job}} と置き換えました。 ※'文字列' . '文字列' のように . (ピリオド) をつけることで、複数の文字列をくっつけるよ、という意味字なります。この'文字列'の代わりに変数を指定することもできます。例えば、'文字列' . 変数 . '文字列' です。 たぶんこの辺りで疑問がわいてくると思います。 「$DT が店舗の変数だったり、 $main::JOBTYPE が職業の変数だったり、どうして分かるわけぇ?」 それはですね、無改造版の inc-item-data.cgi を参考にする場合もあれば、system の奥深くまで潜って探し当てる場合もあります。ただ、よく使うものは MANUAL に書いてあるのでそんなに心配しなくてもよいよ。 この機会に少しずつ perl 言語を勉強するのも良いかと思います。perl を覚えると、出来ることがむっちゃ多くなります。(わかってもらえるかどうかわかんない perl の説明をするのは辛いし。)
ということで、つまるところ、上の説明がわかんなくても、次のようにしておけば、職業を変えることができます(例によって赤文字部分です)。
途中に 「needexp ○%」とありますが、これは、「need アイテム名」の熟練度版で、「コマンドを実行するためには @@ITEM の熟練度が○%以上になっている必要がある」という意味です。 それから、職業に就くコマンドを実行するときに回数を選択できるようになっています。このままだとマズイ(というか意味がない)ので、次にそのあたりを説明したいと思います。 さ、それでは、inc-item-data.cgi をサーバに転送し、商品の更新を行って、テストしてみてください。 難しいところでしたが、ご苦労様でした。 |
|
||||||
|
|
| ホーム | ページトップ | |