アイテムの設定について - 胡蝶 飛鳥 2008/08/04(Mon) 16:46 No.232
 ├ Re: アイテムの設定について - GEN 2008/08/04(Mon) 23:21 No.233
 ├ Re: アイテムの設定について - 胡蝶 飛鳥 2008/08/06(Wed) 12:03 No.234
 ├ Re: アイテムの設定について - GEN 2008/08/06(Wed) 16:51 No.235
 ├ Re: アイテムの設定について - 胡蝶 飛鳥 2008/08/06(Wed) 20:07 No.237
 ├ Re: アイテムの設定について - GEN 2008/08/06(Wed) 21:16 No.238
 └ Re: アイテムの設定について - 胡蝶 飛鳥 2008/08/07(Thu) 01:09 No.239

No.232 アイテムの設定について - 胡蝶 飛鳥
 

こんにちは。少々お聞きしたいことがありまして書き込みさせていただきました。
今現在他店からあるアイテム(以後Xとします)を回収するアイテムを作っています。

@@use
time 1m
scale 枚
action 回収する
name Xを回収する
info 他店からXを回収します
arg target|nocount
need 1 回収アイテム
func _local_
return "$DTS->{shopname}にはXはありません" if($DTS->{item}[@@ITEMNO"100"]);
$DTS->{item}[@@ITEMNO"100"-1]--;
$DTS->{item}[@@ITEMNO"100"-1]=$ITEM[@@ITEMNO"100"]->{limit} if($DTS->{item}[@@ITEMNO"100"-1]>$ITEM[@@ITEMNO"100"]->{limit});
WriteLog(1,0$DT->{shopname}."が".$DTS->{shopname}."からXを回収しました");
$ret="$DTS->{shopname}からXを回収しました";
return $ret;
_local_

と記述しているのですが、回収するときにそのXを持っている店舗だけをリストに表示する方法が分からないのです。
もしよろしければご教授いただけないでしょうか。
お忙しい中失礼いたしました。

2008/08/04(Mon) 16:46
No.233 Re: アイテムの設定について - GEN
 

実際に試していないので保証できませんが、以下のような方法を提案したいと思います。ゲーム街のハードの選択に使っている方法です。これで実現できなければすいません。

@新たに「target2」というパラメーターを作成する(名前は何でもよい)。
A「item-m.cgi」を「custom」フォルダに入れる。
B上のファイルに、以下のような部分がある。
if($USE->{arg}=~ /target/)
{
$select_target="<SELECT NAME=tg>";
foreach (@DT)
{
$select_target.="<OPTION VALUE='$_->{id}'>$_->{shopname}";
}
$select_target.="</SELECT>に対して";
}

これを真似して、このソースの下に「target2」の記述をする。その記述の中で、アイテムを持っているかの判定をする。具体的には以下のような感じ。

if($USE->{arg}=~ /target2/)
{
$select_target="<SELECT NAME=tg>";
foreach (@DT)
{if (アイテム持っているとき) {
$select_target.="<OPTION VALUE='$_->{id}'>$_->{shopname}";
}}
$select_target.="</SELECT>に対して";
}

改造したitem-m.cgiをcustomにアップロードします。
こんな感じにするとどうでしょうか。

2008/08/04(Mon) 23:21
No.234 Re: アイテムの設定について - 胡蝶 飛鳥
 

返信遅れてすみません。さっそくその方法を試してみたのですがうまくいかないようです。そこでわざわざ書いていただいたのに申し訳ないのですが、持っている店舗のみをリスト表示するという方法をやめて、エラーレポートではじくという方法にしたいと思います。そこで、

@@use
time 1m
scale 枚
action 回収する
name Xを回収する
info Xを回収します
arg target|nocount
need 1 回収アイテム
func _local_
main::OutError('自分のお店にXがあるはずがありません!多忙な仕事でどうかなされましたか?') if($DT->{id} eq $DTS->{id});
★main::OutError("$DTS->{shopname}にはXはありません") if($DTS->{item}[@@ITEMNO"442"]);★
$DTS->{item}[@@ITEMNO"442"-1]--;
$DTS->{item}[@@ITEMNO"442"-1]=$ITEM[@@ITEMNO"442"]->{limit} if($DTS->{item}[@@ITEMNO"442"-1]>$ITEM[@@ITEMNO"442"]->{limit});
WriteLog(1,0$DT->{shopname}."が".$DTS->{shopname}."からXを回収しました");
$ret="$DTS->{shopname}からXを回収しました";
return $ret;
_local_

としたのですが、自店はうまくはじかれるのですが、ほかの店舗ははじかれずにすべて回収できてしまいます。おそらく★で囲ってみた部分がよくないと思うのですが自分ではどう修正したら良いかよく分からないのです。
申し訳ありませんがご教授いただけないでしょうか。

2008/08/06(Wed) 12:03
No.235 Re: アイテムの設定について - GEN
 

私自身、「item-m.cgi」の改造がうまくいかなかったというのは気がかりです。

構文 @@ITEMNO "[商品名]:商品名or商品コード"
この構文はinc-item-data.cgi内でのみ使えます。
プログラムの記述では、以下のように記述するのが普通かと思います。
変更前 ) $DTS->{item}[@@ITEMNO"442"]
変更後 ) $DTS->{item}[441] ※入れるのはコード番号-1

それを踏まえてうえで、以下のように「item-m.cgi」を変えるとどうでしょうか。

if($USE->{arg}=~ /target/)
{
〜中略〜
$select_target.="</SELECT>に対して";
}

if($USE->{arg}=~ /target2/)
{
$select_target="<SELECT NAME=tg>";
foreach (@DT)
{ if ($_->{item}[441] != 0) {
$select_target.="<OPTION VALUE='$_->{id}'>$_->{shopname}";
}}
$select_target.="</SELECT>に対して";
}

あと、ソース内ではじくほうですが、★の中は、アイテム番号をマイナス1していません。

また、以下に変数のif文の説明を記します。
if($test)  :$testという変数が定義されている場合
if(!$test) :$testという変数が定義されていない場合

なので、現在の記述ですと、「持っていない」という判断ができないのです。具体的には、以下のようにするといいと思います。

if(!$DTS->{item}[441]);

または、このあたりでしょうか。

if($DTS->{item}[441] == 0);

間違えていたらすいません。

2008/08/06(Wed) 16:51
No.237 Re: アイテムの設定について - 胡蝶 飛鳥
 

どうやら両パターンとも私の“!”の付け忘れ&記述ミスだったようです・・・申し訳ありません。
GEN様のおっしゃられるように記述したところ、どちらの方法でもうまく動作いたしましたので、リスト表示の方法をとりたいと思います。
お忙しい中わざわざ解説までしていただき、ありがとうございました^^;

P.S. 改造完了後にGEN様のサイトを私のサイトのリンクに追加してもよろしでしょうか?

2008/08/06(Wed) 20:07
No.238 Re: アイテムの設定について - GEN
 

お役に立ててよかったです。
また何かありましたらお気軽にどうぞ。

リンクについては、ぜひ追加お願いします。
こちらからもリンクに追加させていただきますよ〜。

あと、商人物語のリンクとして、「あきものえんじん」のほかに、
「無料ゲーム紹介所」
http://www.seijyuu.com/game/
というところがありまして、登録すると結構アクセスがありますよ。

今後ともよろしくお願いします〜。

2008/08/06(Wed) 21:16
No.239 Re: アイテムの設定について - 胡蝶 飛鳥
 

本当に助かりました^^感謝です。

リンクはこちらも追加いたしました。
あと細かいことで申し訳ないのですが、リンクのところの名前で“胡”が抜けてるようです><

「あきものえんじん」は知ってましたけど、「無料ゲーム紹介所」の方は知らなかったです。教えていただきありがとうございます。
後ほど登録したいと思います。

こちらこそこれからもよろしくお願いいたします。

2008/08/07(Thu) 01:09
Eメール
お名前
題 名  ※投稿キーは必須です!
本文
URL
アイコン   [イメージ参照]
暗証キー (英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
文字色