私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

No.409  Re:アイテム交換
発言者: moon
発言日: 2003 03/08 16:40
> お久しぶりです(^^
> 改造(ちょっとずつ)していて、どうやればいいのかまったくわからないので質問です。
> プレイヤーAがNPC1に会いに行って、ある決められたアイテムBとあるアイテムCを交換してもらえるようにしたいのですが、この場合はどう言う風になるのでしょうか?
> (あったときではなく、あったあとに「交換」するかどうか選べるのです)
> 難しいです(;;
> すみませんお願いします。。

「交換」の表示を出すのはNPC専用スキル(Ng?)か交換専用スキルを新たに作成してそれで判定すれば良いので省略します。
「交換」を実行したときのサブルーチンを次のような流れで作成する。
簡単化のために、交換元アイテムは名前で判断するものとして、交換先アイテムはスクリプト中に埋め込むようにします。
さらに交換元アイテムを複数持っていた場合は先頭の物だけ交換されるようにします。
  sub trade_item{
    @rcdlines = &get_user("$Fm{'id'}");
    my %trade_items = (
       '交換元名前1'=>'交換先データ1'
      ,'交換元名前2'=>'交換先データ2'
      ,'交換元名前3'=>'交換先データ3'
# 例    ,'ポテト引換券'=>'ポテト△00010100Fd'
    );
    &splititem('i');
    if(@items){
      foreach(0..$#items){
        ($item,$sts) = split(/△/,$items[$_]);
        if(exists $trade_items{$item} && index($sts,'Rn')<0){
          push(@msg,"$itemを".(split(/△/,$trade_items{$item}))[0].'に交換してもらいました');
          splice(@items,$_,1,$trade_items{$item});
          &joinitem('i');
          &userout;
          return;
        }
      }
    }
    push(@msg,'交換可能なアイテムを所持していません');
  }

以上は問題が無いわけではないですが手っ取り早い方法です。

# 文法チェックはしましたが動作確認はしていないので正常に動作しないかもしれません。

▼関連発言

408:アイテム交換 [masaki] 03/08 10:17
 └409:Re:アイテム交換 [moon] 03/08 16:40
  └410:Re[2]:アイテム交換 [masaki] 03/08 17:57
   └411:Re[3]:アイテム交換 [masaki] 03/08 18:06
    └412:Re[4]:アイテム交換 [moon] 03/08 18:32
     └413:Re[5]:アイテム交換 [masaki] 03/08 18:53<-last

Pass 保存


CGIROOM