|
(対応バージョンはGUNさん改造の1.040です。)
メッセージを登録者全員宛てに送る改造
(管理者宛て含む)改造法
ffadbenture.iniの中に赤字の部分を追加する
管理者宛てを作らない場合は不要です
#管理者キャラクターのユーザーIDを""の中に記述する
$admin_chara = "";
ffadventure.cgiの中で下記を探し赤字の部分を追加する
【他のキャラクターへメッセージを送る】<br>
<input type="text" name=mes size=50><br>
<select name=mesid>
<option value="">送る相手を選択
<option value="$admin_chara">[管理人]へ
#管理者宛てを作らない場合は不要です(このコメントは消してください)
<option value="AllUser">[全ての登録者]へ
EOM
open(IN,"$chara_file");
@MESSAGE = <IN>;
close(IN);
foreach(@MESSAGE) {
($did,$dpass,$dsite,$durl,$dname) = split(/<>/);
if($kid eq $did) { next; }
print "<option value=$did>$dnameさんへ\n";
}
print <<"EOM";
</select>
<input type=hidden name=id value=$kid>
<input type=hidden name=name value=$kname>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=message>
<input type=submit value="メッセージを送る"><br>
<small>※他のキャラクターへメッセージを送ることができます。</small>
</form>
</td>
</tr>
</table>
【届いているメッセージ】表\示数<b>$max_gyo</b>件まで<br>
EOM
open(IN,"$message_file");
@MESSAGE_LOG = <IN>;
close(IN);
$hit=0;$i=1;
foreach(@MESSAGE_LOG){
($pid,$hid,$hname,$hmessage,$hhname,$htime) = split(/<>/); #ここから下の赤字の部分を全て修正
if($max_gyo < $i) { last; }
if($kid eq "$pid"){
print "<hr size=0><font color
=\"red\"><small><b>$hnameさん</b> > 「<b>$hmessage</b>」($htime)</small></font><br>\n";
$hit=1;$i++;
}elsif($kid eq "$hid"){
if("$pid" eq "AllUser"){
print "<hr size=0>><small>$knameさんから全員へ >
「$hmessage」($htime)</small><br>\n";
$i++;
} else {
print "<hr size=0><small>$knameさんから$hhnameさんへ >
「$hmessage」($htime)</small><br>\n";
}
}elsif("$pid" eq "AllUser"){
print "<hr size=0><font color
=\"blue\"><small><b>$hnameさんから全員へ</b> >
「<b>$hmessage</b>」($htime)</small></font><br>\n";
$i++;
}
}
print "<hr size=0><p>"; #この上まで
&footer;
$chara_flag=0;
exit;
}
#------------------#
# HTMLのフッター #
#------------------#
other.cgiの中で下記を探し赤字の部分を追加する
#--------------#
# メッセージ #
#--------------#
sub message {
if($in{'mes'} eq "") { &error("メッセージが記入されていません");
}
if($in{'mesid'} eq "") { &error("相手が指定されていません");
}
&get_time;
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
open(IN,"$message_file");
@mes_regist = <IN>;
close(IN);
open(IN,"$chara_file");
@MESSAGE = <IN>;
close(IN);
foreach(@MESSAGE) {
($did,$dpass,$dsite,$durl,$dname) = split(/<>/);
if($in{'mesid'} eq "$did") { last; }
}
$mes_max = @mes_regist;
if($mes_max > $max) { pop(@mes_regist); }
if ($in{'mesid'} eq "$admin_chara"){$dname
= "管理人";} #管理者宛てを作らない場合は不要です(このコメントは消してください)
if ($in{'mesid'} eq "AllUser"){$dname = "全ての登録者";}
unshift(@mes_regist,"$in{'mesid'}<>$in{'id'}<>$in{'name'}<>$in{'mes'}<>$dname<>$gettime<>\n");
open(OUT,">$message_file");
print OUT @mes_regist;
close(OUT);
# ロック解除
if (-e $lockfile) { unlink($lockfile); }
&header;
print <<"EOM";
<h1>$dnameさんへメッセージを送りました。</h1>
<hr size=0>
<form action="$script" method="post">
<input type=hidden name=mode value=log_in>
<input type=hidden name=id value="$in{'id'}">
<input type=hidden name=pass value="$in{'pass'}">
<input type=submit value="ログイン画面へ戻る">
</form>
EOM
いないと思うけどAllUserというユーザーIDで新規登録できなくするためなので
ここから下は別に改造しなくても大丈夫だと思いますが念のため書いときます。
regist.plの中で下記を探し赤字の部分を追加する
#----------------#
# 書き込み処理 #
#----------------#
sub regist {
&set_cookie;
&get_host;
$date = time();
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
elsif ($lockkey == 3) { &file'lock; }
open(IN,"$chara_file");
@regist = <IN>;
close(IN);
$hit=0;@new=();
foreach(@regist){
($cid,$cpass,$csite,$curl,$cname,$csex,$cchara,$cn_0,$cn_1,$cn_2,$cn_3,$cn_4,$cn_5,$cn_6,$csyoku,$chp,$cmaxhp,$cex,$clv,$cgold,$clp,$ctotal,$ckati,$cwaza,$citem,$cmons,$chost,$cdate,$cmori,$cdef)
= split(/<>/);
if($cid eq "$in{'id'}" and $in{'new'} eq 'new') {
&error("そのIDはすでに登録されています");
}elsif(AllUser eq "$in{'id'}" and $in{'new'}
eq 'new'){
&error("そのIDは登録登録できません");
}elsif($curl eq "$in{'url'}" and $in{'new'} eq 'new'){
&error("そのURLはすでに登録されています");
}elsif($host eq "$chost" and $in{'new'} eq 'new'){
&error("一人り一キャラクターです。守れない場合アクセス制限をかけさせていただきます。このエラーを出したあなたのIPアドレスを保存しています。");
}elsif($cid eq "$kid"){
unshift(@new,"$kid<>$kpass<>$ksite<>$kurl<>$kname<>$ksex<>$kchara<>$kn_0<>$kn_1<>$kn_2<>$kn_3<>$kn_4<>$kn_5<>$kn_6<>$ksyoku<>$khp<>$kmaxhp<>$kex<>$klv<>$kgold<>$klp<>$ktotal<>$kkati<>$kwaza<>$kitem<>$kmons<>$host<>$date<>$kmori<>$kdef<>\n");
$hit=1;
}else{
if(($date - $cdate) > (60 * 60 * 24 * $limit)) { next; }
push(@new,"$_");
}
}
if(!$hit and $in{'new'} eq 'new'){
$lp=int(rand(15));
$hp = int(($in{'n_3'} + $kiso_nouryoku[3]) + (rand($lp) + 1)) + $kiso_hp;
$ex=0;
|