PETROOM大改造
【萌え萌えキャラクターズと遊ぼー。】

スペシャル画像を増やしたい

PETROOMに最初から用意されているスペシャル画像は2種類。

※「遊ぼー。」では、この機能はマスクして、
代わりに日付によるイベントを作ったり、コマンドを増やしたりしています。

そもそも、スペシャル画像とは、何でしょう? 実はおいらもよく知りません(^^;
では・・・、一緒に見ていきましょう(爆)

まずは上からスクリプトをツラ〜っと見ていくと・・・お、ありました。
ペットの設定の少し下あたりに、

$special1      = 7;  # ラブポイントが何点以上だとスペシャル画像1を表示するか。
$specialtime1a = 2;  # 食後何時間でその画像を表示させるか。
$specialtime1b = 8;  # 二つまで設定可能。一つでいい場合は上と同じにする。
$special2      = 9;  # ラブポイントが何点以上だとスペシャル画像2を表示するか。
$specialtime2a = 20; # 食後何時間でその画像を表示させるか。
$specialtime2b = 21; # 二つまで設定可能。一つでいい場合は上と同じにする。

なるほど、好感度(ラブポイント)によって、発生するわけですね。
食後何時間で表示されるか・・・ん? どういう意味なんでしょ?

好感度が7以上9未満で、食事をしてから2時間後と8時間後に訪れたときだけ、
スペシャル画像1が表示されるということですかねぇ?
つまり2時間後と8時間後に訪れなければ、この画像を見ることが出来ないと言うことでしょうか???

と、とりあえず、先に進んでみましょう(^^;
お、ありました、だいぶ下へ行ったところに、

### スペシャル画像&メッセージ ###
# スペシャル画像1
$delight_img = 'love.gif';   # (サンプル)来訪者を喜んでいる画像
$delight_msg = 'あなたが来たことをすごく喜んでいます';   # その時のメッセージ
# スペシャル画像2
$friend_img  = 'friend.gif'; # (サンプル)友達と遊んでいる画像
$friend_msg  = '今日はお友達のピヨちゃんと遊んでいます'; # その時のメッセージ

ここで、表示される画像とメッセージを設定するわけですね。
さて、ではいよいよ、スクリプト本体の方へ。
ペットのコンディション(sub condition)の中に、

    # スペシャル画像1
    if ($love > $special1) {
        if ($timeafter == $specialtime1a || $timeafter == $specialtime1b) {
            &petnow($delight_img,$delight_msg);
            return;
        }
    }
    # スペシャル画像2
    if ($love > $special2) {
        if ($timeafter == $specialtime2a || $timeafter == $specialtime2b) {
            &petnow($friend_img,$friend_msg);
            return;
        }
    }

という所があります、ここですね、処理をしているのは。
画像1について見ていくと、
まず、プレイヤーのラブポイント$loveと、画像1の表示条件のラブポイント$special1を比較しています。
ペットの設定では「何点以上だと」と記載されていますが、
>は「大なり」なので、以上ではなく、超えていなければなりません。
つまり、「7」と設定したら、実際には「8」以上にならないと発生しませんので、ご注意下さい。
改造するときに、分かりやすいように直してしまいますね。

ラブポイントの条件をクリアしていたら、次に最後の食事からの時間を調べています。
最後の食事からの経過時間$timeafterが、画像1の表示条件1の経過時間$specialtime1aと同じか、
最後の食事からの経過時間$timeafterが、画像1の表示条件2の経過時間$specialtime1bと同じか、
どちらか一方が同じなら、スペシャル画像1が表示されます。

スペシャル画像2についても同様です。
やはり、ラブポイントが条件を満たしていても、食後○時間に訪れないと、スペシャル画像は見ることが出来ないのです。


なるほどー・・・、自分で理解しておかないと、おいらダメなんです、すみません(^^;
・・・って、おや?

よく見るとこの処理、場合によっては、ちょっとまずいですね。
画像1と画像2の「食後○時間」という設定が、それぞれ違う場合は問題ないですが、
同じ時間に設定した場合、画像2の方は表示されないことになってしまいます。
ふむ、ここも改造の時に、一緒に直しましょう。


前置きが長くなりましたが、それではいよいよ改造の方へ。
まずは普通にスペシャル画像を増やす場合。
今までに見てきた3つの部分に、次のように追記します。

$special1      = 7;  # ラブポイントが何点以上だとスペシャル画像1を表示するか。
$specialtime1a = 2;  # 食後何時間でその画像を表示させるか。
$specialtime1b = 8;  # 二つまで設定可能。一つでいい場合は上と同じにする。
$special2      = 9;  # ラブポイントが何点以上だとスペシャル画像2を表示するか。
$specialtime2a = 20; # 食後何時間でその画像を表示させるか。
$specialtime2b = 21; # 二つまで設定可能。一つでいい場合は上と同じにする。
$special3      = 11;
$specialtime3a = 5;
$specialtime3b = 10;

何点以上にするか、何時間後にするかは、ご自由にどうぞ。

### スペシャル画像&メッセージ ###
# スペシャル画像1
$delight_img = 'love.gif';   # (サンプル)来訪者を喜んでいる画像
$delight_msg = 'あなたが来たことをすごく喜んでいます';   # その時のメッセージ
# スペシャル画像2
$friend_img  = 'friend.gif'; # (サンプル)友達と遊んでいる画像
$friend_msg  = '今日はお友達のピヨちゃんと遊んでいます'; # その時のメッセージ
$friend_img_2  = '○○.gif';
$friend_msg_2  = 'お好きなメッセージをどうぞ';

新しい3つ目の画像とメッセージを設定します。
○○.gifをアップロードするのをお忘れなく。

    # 新しい3つ目の画像
    if ($love >= $special3) {
        if ($timeafter == $specialtime3a || $timeafter == $specialtime3b) {
            &petnow($friend_img_2,$friend_msg_2);
            return;
        }
    }
    # スペシャル画像2
    if ($love >= $special2) {
        if ($timeafter == $specialtime2a || $timeafter == $specialtime2b) {
            &petnow($friend_img,$friend_msg);
            return;
        }
    }
    # スペシャル画像1
    if ($love >= $special1) {
        if ($timeafter == $specialtime1a || $timeafter == $specialtime1b) {
            &petnow($delight_img,$delight_msg);
            return;
        }
    }

新しい3つ目の処理を追加しますが、
ただ一番上に追加しただけではなく、いろいろ変わっていますのでご注意下さい。

まず、比較の所ですが>から>=に変わっています。
これで記載通り、「7」と設定すれば「7」以上で表示されるようになります。

次に、順番です。
新しい3つ目の処理を一番上に持ってきて、画像1と画像2の順番を入れ替えてあります。
つまり、設定したラブポイントが大きい画像から、順番に上から並べてあるのです。
こうすることにより、食後○時間が重なってしまったときに、
高好感度を必要とする画像の方が優先的に表示されるようになります。

この繰り返しで、好きなだけスペシャル画像を追加することが出来ます。


で、ここで終わらないのが、変なところに凝るおいらの悪いクセです(^^;
標準のスペシャル画像は、たとえラブポイントが条件に達していても、
食後○時間という、設定したその時間に訪れない限り、スペシャル画像が表示されません。

つまり、一回も見ることが出来ない人がいるかもしれない、と言うことです。

せっかくですから、ラブポイントが条件に達したら、必ず表示されるように変更してみましょう。
ま、でも、難しそうなので、次回ということで(^^;;;
というか、要望がなければやらないかも。