▼スレッド
│
└◇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
お久しぶりです(^^スレッド一覧
改造(ちょっとずつ)していて、どうやればいいのかまったくわからないので質問です。
プレイヤーAがNPC1に会いに行って、ある決められたアイテムBとあるアイテムCを交換してもらえるようにしたいのですが、この場合はどう言う風になるのでしょうか?
(あったときではなく、あったあとに「交換」するかどうか選べるのです)
難しいです(;;
すみませんお願いします。。
> お久しぶりです(^^スレッド一覧
> 改造(ちょっとずつ)していて、どうやればいいのかまったくわからないので質問です。
> プレイヤー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,'交換可能なアイテムを所持していません');
}
以上は問題が無いわけではないですが手っ取り早い方法です。
# 文法チェックはしましたが動作確認はしていないので正常に動作しないかもしれません。
ありがとうございます!スレッド一覧
早速やってみたところ、正常に動きました!!
どうもありがとうございましたm(_ _)m
あと一つ質問させて頂いてもいいでしょうか?スレッド一覧
スキルで判別する場合はどうすればいいのでしょうか?
Pbのスキルを持っていればポテト引換券とポテトを交換
その他の場合は〜というふうな感じです。。
my %trade_items = (
'交換元名前1'=>'交換先データ1'
,'交換元名前2'=>'交換先データ2'
,'交換元名前3'=>'交換先データ3'
# 例 ,'ポテト引換券'=>'ポテト△00010100Fd'
);
ここを、
if($psp =~ /Pb/){
my %trade_items = (
,'ポテト引換券'=>'ポテト△00010100Fd'
);
}
else{
my %trade_items = (
'交換元名前1'=>'交換先データ1'
,'交換元名前2'=>'交換先データ2'
,'交換元名前3'=>'交換先データ3'
# 例 ,'ポテト引換券'=>'ポテト△00010100Fd'
);
}
こうでしょうか?(^^;
質問多くてすみません。。
> あと一つ質問させて頂いてもいいでしょうか?スレッド一覧
> スキルで判別する場合はどうすればいいのでしょうか?
> Pbのスキルを持っていればポテト引換券とポテトを交換
> その他の場合は〜というふうな感じです。。
> my %trade_items = (
> '交換元名前1'=>'交換先データ1'
> ,'交換元名前2'=>'交換先データ2'
> ,'交換元名前3'=>'交換先データ3'
> # 例 ,'ポテト引換券'=>'ポテト△00010100Fd'
> );
> ここを、
> if($psp =~ /Pb/){
> my %trade_items = (
> ,'ポテト引換券'=>'ポテト△00010100Fd'
> );
> }
> else{
> my %trade_items = (
> '交換元名前1'=>'交換先データ1'
> ,'交換元名前2'=>'交換先データ2'
> ,'交換元名前3'=>'交換先データ3'
> # 例 ,'ポテト引換券'=>'ポテト△00010100Fd'
> );
> }
> こうでしょうか?(^^;
> 質問多くてすみません。。
my %trade_items;というように宣言をifの前に予めやっておき、あとは上記のmyをなくした形にすれば良いです。
もしくは、上記のmyをただ消去するだけでも良いです。
ありがとうございました(^^スレッド一覧
これからもよろしくお願いします!