こんばんは。 - キャンディー 2008/09/28(Sun) 19:43 No.253
 ├ Re: こんばんは。 - GEN 2008/09/28(Sun) 22:43 No.254
 └ ありがとうございますm(_ _)m - キャンディー 2008/10/01(Wed) 21:50 No.259

No.253 こんばんは。 - キャンディー
 

管理人様こんばんは。いつも色々とご参考にさせていただいております。今回ちょっと管理人様のお力をお貸しいただきたいと思い書き込みさせていただきました。ギルドコマンドで店舗よりギルドへ資金援助が出来るのですが逆にギルド資金を店舗へ援助をするにはどうしたら良いのでしょうか?
多分ですがいじるファイルはinc-guild-cmd.cgiだと思います。
改造箇所は
sub GuildFundF
{
$stock=($DT->{money} - 100000);
$disp.="<BIG>●ギルド寄付</BIG>: 資金の余裕がありません",return if ($stock < 100000);
$disp.=<<STR;
<form action="action.cgi" $METHOD>
<INPUT TYPE=HIDDEN NAME=key VALUE="gd-s">
$USERPASSFORM
<INPUT TYPE=HIDDEN NAME=mode VALUE="fund">
<BIG>●ギルド寄付</BIG>: $term[0]
<SELECT NAME=cnt1>
<OPTION VALUE="0" SELECTED>
STR
$msg{1000}=1000;
$msg{10000}=10000;
$msg{100000}=100000;
$msg{1000000}=1000000;
$msg{$stock}="$stock(最大額)";
my $oldcnt=0;
foreach my $cnt (sort { $a <=> $b } (1000,10000,100000,1000000,$stock))
{
last if $stock<$cnt || $cnt==$oldcnt;
$disp.="<OPTION VALUE=\"$cnt\">$msg{$cnt}";
$oldcnt=$cnt;
}
$disp.=<<STR;
</SELECT>
$term[1]、もしくは $term[0]
<INPUT TYPE=TEXT SIZE=7 NAME=cnt2>$term[1]
<INPUT TYPE=SUBMIT VALUE="寄付する">
</FORM>
STR
}

をいじれば良いと思うのですがいまいち分かりません(;^-^;)
対象変数を入れ替えたりすれば良いかと思いますが具体的にどう改造したら良いか教えていただけると大変助かります。
何かとお忙しいかと思いますがよろしくお願いします。

2008/09/28(Sun) 19:43
No.254 Re: こんばんは。 - GEN
 

この部分は、単なる表示というか、データの入力部分にすぎず、
実際の処理部分は別にあります。
どこを見るといいますと、
<INPUT TYPE=HIDDEN NAME=key VALUE="gd-s">
<INPUT TYPE=HIDDEN NAME=mode VALUE="fund">

この2行から、「gd-s.cgi」の「fund」という処理に飛んでいることがわかります(商人物語の記述に限ったことですが)。

実際の記述は以下のようになっていました。
sub fund
{
$count=CheckCount($Q{cnt1},$Q{cnt2},0,$DT->{money});

OutError('寄付金額を指定してください') if !$count;
OutError('最低でも'.GetMoneyString(100000).'は自店に残しましょう') if ($DT->{money} - $count) < 100000;

$ret="ギルド「".$GUILD{$DT->{guild}}->[$GUILDIDX_name]."」に".GetMoneyString($count)."寄付";
EditGuildMoney($DT->{guild} ,$count);
$DT->{money}-=$count;
$DT->{paytoday}+=$count;
PushLog(0,0,$DT->{shopname}."がギルド「".$GUILD{$DT->{guild}}->[$GUILDIDX_name]."」に".GetMoneyString($count)."寄付しました。");
}

ギルド員に援助ということで、新たに以下のような処理を追加する必要があると思います。
@ギルド員のみを選択できるリストを表示する
Aギルド員のIDから変数を取り出す

具体的には、以下のように改造するとできます。たぶん。
■「inc-guild-cmd.cgi」GuildFundFの下に追加
sub GuildFundF2
{
$disp.=<<STR;
<form action="action.cgi" $METHOD>
<INPUT TYPE=HIDDEN NAME=key VALUE="gd-s">
$USERPASSFORM
<INPUT TYPE=HIDDEN NAME=mode VALUE="fund2">
<BIG>●資金援助</BIG>:ギルド員
<SELECT NAME=tg>
STR

foreach(@DT){
next if ($_->{guild} ne $DT->{guild});
$disp.="<OPTION VALUE=\"".$_->{id}."\">$_->{shopname}";
}

$disp.=<<STR;
</SELECT>
に対し、 $term[0]
<INPUT TYPE=TEXT SIZE=7 NAME=cnt>$term[1]
<INPUT TYPE=SUBMIT VALUE="寄付する">
</FORM>
STR
}

■「inc-guild-cmd.cgi」の最初に「GuildFundF2」の呼び出し追加

GuildFundF();
$disp.='<hr width=500 noshade size=1>';

GuildFundF2();
$disp.='<hr width=500 noshade size=1>';

Break();
my $checkok;

■「gd-s.cgi」のfundの下にfund2として以下を追加

sub fund2
{
$i=$id2idx{$Q{tg}};
$DTS=$DT[$i];

$ret=$DTS->{shopname}."に".GetMoneyString($Q{cnt})."の資金援助を行ないました";

EditGuildMoney($DT->{guild} ,-$Q{cnt});

$DTS->{money}+=$count;

PushLog(0,0,"ギルド「".$GUILD{$DT->{guild}}->[$GUILDIDX_name]."」が".$DTS->

{shopname}."に".GetMoneyString($Q{cnt})."の資金援助を行ないました。");
}

以上でできるはずです。
ただし、ギルド資金より多い援助額を入力された場合のエラーなどは入れていません。

2008/09/28(Sun) 22:43
No.259 ありがとうございますm(_ _)m - キャンディー
 

早速のご返答ありがとうございます。
初歩的な事かと思いますがご支援くださいましてありがとうございます。まだ試していませんが週末の時間が出来た時に試してみたいと思います。ギルド資金以上の援助をした場合のエラーですがあまり自信がありませんが頑張ってみます。
もしうまく行かない場合再度ご支援をお願いするかもしれませんがその時はよろしくお願いします。

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