|
この部分は、単なる表示というか、データの入力部分にすぎず、 実際の処理部分は別にあります。 どこを見るといいますと、 <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})."の資金援助を行ないました。"); }
以上でできるはずです。 ただし、ギルド資金より多い援助額を入力された場合のエラーなどは入れていません。
|