このページは、SOLD OUT ファンサイトのso-Junkyで行われていたゲームの改造講座を転記したものです。

SOLD OUT 改造講座 | SOLD OUT ミジンコ

五芒星

SOLD OUT ミジンコ

019 お店の選択

商品アイテムを使用するときに、お店が選択できます。

ミジンコ君たちもストレスがたまるようです。たまにはお散歩をさせてあげましょう。・・・・と、放し飼いにすると、彼らは二度と帰ってきませんでした。チャンチャン。

商品アイテムの @@USE の「arg」の残りは「target」です。これは、お店を選択するリストボックスが表示されます。

@@ITEM
        @@USE
                arg target

このように記述すると、コマンドの実行時にプルダウンのリストボックスが表示されて、お店の一覧の中から1つを選択することができます。

書式は、「arg(区切り)target」です。

しかしですね、「arg message」と同じように、このままでは、お店を選択しても、それをどのように使うか決まっていません。

 

そこで登場するのが、やはり「独自関数」(T−T)なのです。ガ〜ンっ。

では、お店を選択すると、どのような変数に「お店情報」が入ってくるのでしょうか。みてみましょう。

 $DTS : 選んだお店の情報が自動的に入ります。$DT は自分の店の情報ですが、これと同じです。変数の名前が違うだけです。

 $DTS->{item}[アイテム番号-1] : 選んだお店のアイテム在庫数。

 $DTS->{id} : 選んだお店の ID です。

 $DTS->{shopname} : 選んだお店の店舗名。

そのほか、独自関数の中で使える変数を紹介します。

 $ITEM[アイテム番号]->{limit} : inc-item-data.cig で指定したアイテムの倉庫最大数。

 $USE->{arg}->{count} : コマンドの(同時)実行回数。$count でもOK。

 

では、まず、表示するメッセージから決めておきましょう。

        @@USE
                arg target
                use 1 ミジンコ
                func _local_
                        return $count . '匹のミジンコが' . $DTS->{shopname} . 'へ行ってしまいました';
                _local_

ここまでは、おなじみですね。「use 1 ミジンコ」が書いてあるので、1回につきミジンコが1匹いなくなるわけです。return の右側にある $count $DTS->{shopname}は上の変数の説明を見てください。

 

次に、選んだお店のミジンコの数を増やします。

        @@USE
                arg target
                use 1 ミジンコ
                func _local_
                        $DTS->{item}[@@ITEMNO"ミジンコ"-1] += $count;
                        return $count . '匹のミジンコが' . $DTS->{shopname} . 'へ行ってしまいました';
                _local_

難しいように見えるかもしれませんが、018講座で取り扱った、数字の足し算です。選んだお店のミジンコに $count を足しています。ここで @@ITEMNO"ミジンコ" とうのが出てきましたが、このように書いておくと、ミジンコの アイテム番号 に置き換わります。従って次のように書くのと同じ意味です。(ミジンコのアイテム番号は @@ITEM no 1 でしたよね)。

$DTS->{item}[1-1] += $count; (アイテム番号=1)   または、

$DTS->{item}[0] += $count; (1から-1をしてしまって、0と書いてしまう方法)

なぜ、@@ITEMNO"アイテム名" が用意されているかというと、開発中に @@ITEM no 1 を @@ITEM no 100 などに変更してしまっても、独自関数は修正しないで、そのままにしておいても大丈夫、ということ配慮されているのだと思います。

 

また、ミジンコの数を足した結果、倉庫最大数(limit)を超えてしまう場合はマズイので、検査しておきます。

        @@USE
                arg target
                use 1 ミジンコ
                func _local_
                        $DTS->{item}[@@ITEMNO"ミジンコ"-1] += $count;
                        if( $DTS->{item}[@@ITEMNO"ミジンコ"-1]>$ITEM[@@ITEMNO"ミジンコ"]->{limit} ){
                                $DTS->{item}[@@ITEMNO"ミジンコ"-1] = $ITEM[@@ITEMNO"ミジンコ"]->{limit};
                        }
                        return $count . '匹のミジンコが' . $DTS->{shopname} . 'へ行ってしまいました';
                _local_

よーく見てください。長い変数があるだけで、やっていることは単純です。

もし、選んだお店のミジンコの数($DTS->{item}[@@ITEMNO"ミジンコ"-1]) が ミジンコの倉庫最大数($ITEM[@@ITEMNO"ミジンコ"]->{limit}) より多い()という場合に、選んだお店のミジンコの数 に ミジンコの倉庫最大数を入れてしまう。という意味です。

 

ついでに、「最近の出来事」に文字を表示するようにしましょう。

        @@USE
                arg target
                use 1 ミジンコ
                func _local_
                        $DTS->{item}[@@ITEMNO"ミジンコ"-1] += $count;
                        if( $DTS->{item}[@@ITEMNO"ミジンコ"-1]>$ITEM[@@ITEMNO"ミジンコ"]->{limit} ){
                                $DTS->{item}[@@ITEMNO"ミジンコ"-1] = $ITEM[@@ITEMNO"ミジンコ"]->{limit};
                        }
                        WriteLog(0,$DTS->{id},'ミジンコが'.$DT->{shopname}.'から'.$count.'匹遊びにきました');
                        return $count . '匹のミジンコが' . $DTS->{shopname} . 'へ行ってしまいました';
                _local_

WriteLog は、SOLD OUT にあらかじめ用意されているものです。カッコの中は、( 0, 表示する店のID, 表示する文字 )となっています。

1番目の 0 は、「一般」メッセージです。1にすると「重要」。2にすると「情報」です。このあたりは、MANUAL を参照するのがよいです。

2番目の 表示する店のIDは、その店舗しか読むことができない(秘)がつくメッセージです。ここに0を指定すると全店舗が読めます。

3番目の表示する文字は、最近の出来事に表示される文字です。ただし、今回は $DTS->{shopname} ではなく、$DT->{shopname} としてあることに注意してください。

つまり、送った相手の店($DTS->{id})だけが読める「最近の出来事」に、「ミジンコが(コマンドを操作した人の)店から100匹遊びにきました」という文字が表示されます。(ややこしいね)。

 

ということで、最終的には次のようになります(赤文字を追加してください)。上の説明がわかんない場合は、ほんとごめんなさい。


@@ITEM
        no  1
        name ミジンコ
        @@USE
                name 酸素を集めてきなさい
        @@USE
                name 話しかける
        @@USE
                time 1m
                scale 匹
                action 外出
                name お出かけする
                info 野生のミジンコが外出します
                arg  target
                        use  1 ミジンコ 100%
                func _local_
                        $DTS->{item}[@@ITEMNO"ミジンコ"-1] += $count;
                        if( $DTS->{item}[@@ITEMNO"ミジンコ"-1]>$ITEM[@@ITEMNO"ミジンコ"]->{limit} ){
                                $DTS->{item}[@@ITEMNO"ミジンコ"-1] = $ITEM[@@ITEMNO"ミジンコ"]->{limit};
                        }
                        WriteLog(0,$DTS->{id},'ミジンコが' . $DT->{shopname} . 'から' . $count . '匹遊びにきました');
                        return $count . '匹のミジンコが' . $DTS->{shopname} . 'へ行ってしまいました';
                _local_

 

「use 1 ミジンコ 100%」の 100% は省略可能でしたよね。

ここまでで、本当の意味での @@USE のパラメータの説明が終了しました。ご苦労様でした。

あとは、_config.cgi で設定した「街タイプ」に対応すること、優勝時のプレゼント商品、ヘルプの書き方、・・・などですね。

あ、イベントが残ってるか!

コンテンツ

ミジンコトップページ

001 アイテムを1個追加

002 ミジンコの説明

003 2つ目のアイテム

004 街人に売る設定

005 タモでミジンコをすくう

X01 おまけ1

006 市場に入荷させない

007 ミジンコが道具?

008 アイコン画像

009 維持費など

010 使うと無くなる

X02 おまけ2

011 よく使う物ほど上に

012 合成材料

013 コマンドに必要商品

014 バージョン変更方法

015 職業の変更

X03 おまけ3

016 1回だけのコマンド

017 お金を使うコマンド

018 ミジンコと会話♪

019 お店の選択

020 陳列棚を操作する

X04 おまけ4


SOLD OUT 陰陽道


おすすめ

イラストアイコン素材のCUTE

SOLD OUT Shop of Monsters(SOSM)

簡易データベースCGI

ホーム | ページトップ Copyright (C) 2006 HeRO. ALL RIGHT RESERVED.
ホームページランキングのザ・ランクテンに参加しています