Back to the index page  
  ホーム   検索   メンバーリスト   グループ   登録   ユーザー設定   PM確認のためにログイン   ログイン 
管理人様へ

 
トピックの新規投稿   返信    ゲームの缶詰コミュニティ フォーラム一覧 :: バトルロワイヤル
前のトピックを表示 :: 次のトピックを表示  
投稿者 メッセージ
桜野 葵
新米兵


登録日: 2006年6月 18日
投稿記事: 24

Level: 3
EXP: 6 / 9  
 66%
HP: 47 / 47  
 100%
MP: 949 / 949  
 100%
投稿1時間: 日 3月 18, 2007 7:52 am    題名: 管理人様へ 引用
違反者の対策の方で大変そうですので私なりの多重対策を提供しようかと思い、自分のBRUを実験にして改造してみました。
多重登録は本来のBRUでも違反行為となっていますので、多重登録発覚後退場にする仕組みになっているものです。
_________________
HP閉鎖していますが、BRUお好きな方は気軽に遊びに来てください。
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
桜野 葵
新米兵


登録日: 2006年6月 18日
投稿記事: 24

Level: 3
EXP: 6 / 9  
 66%
HP: 47 / 47  
 100%
MP: 949 / 949  
 100%
投稿1時間: 日 3月 18, 2007 7:52 am    題名: 引用
ダブルキャストの発動するために、以下変更(BR.cgi)

#===================#
# ■ IDチェック処理 #
#===================#
sub IDCHK{
open(DB,"$user_file");seek(DB,0,0);@userlist=<DB>;close(DB);
$jyulog = "";$jyulog2 = "";$jyulog3 = "";#銃声ログ
$mem=0;
$chksts = "NG";
for($i=0;$i<$#userlist+1;$i++){
($w_id,$w_password,$w_f_name,$w_l_name,$w_sex,$w_cl,$w_no,$w_endtime,$w_att,$w_def,$w_hit,$w_mhit,$w_level,$w_exp,$w_sta,$w_wep,$w_watt,$w_wtai,$w_bou,$w_bdef,$w_btai,$w_bou_h,$w_bdef_h,$w_btai_h,$w_bou_f,$w_bdef_f,$w_btai_f,$w_bou_a,$w_bdef_a,$w_btai_a,$w_tactics,$w_death,$w_msg,$w_sts,$w_pls,$w_kill,$w_icon,$w_item[0],$w_eff[0],$w_itai[0],$w_item[1],$w_eff[1],$w_itai[1],$w_item[2],$w_eff[2],$w_itai[2],$w_item[3],$w_eff[3],$w_itai[3],$w_item[4],$w_eff[4],$w_itai[4],$w_item[5],$w_eff[5],$w_itai[5],$w_log,$w_com,$w_dmes,$w_bid,$w_club,$w_money,$w_wp,$w_wg,$w_wn,$w_wc,$w_wd,$w_comm,$w_limit,$w_bb,$w_inf,$w_ousen,$w_seikaku,$w_sinri,$w_item_get,$w_eff_get,$w_itai_get,$w_teamID,$w_teamPass,$w_IP,) = split(/,/, $userlist[$i]);
if($w_id eq $id2){ #ID一致?
if($w_password eq $password2){ #パスワード正常?
if($w_hit > 0){ #生存?
$chksts = "OK";$Index=$i;$mem++;$plsmem[$w_pls]++;
($id,$password,$f_name,$l_name,$sex,$cl,$no,$endtime,$att,$def,$hit,$mhit,$level,$exp,$sta,$wep,$watt,$wtai,$bou,$bdef,$btai,$bou_h,$bdef_h,$btai_h,$bou_f,$bdef_f,$btai_f,$bou_a,$bdef_a,$btai_a,$tactics,$death,$msg,$sts,$pls,$kill,$icon,$item[0],$eff[0],$itai[0],$item[1],$eff[1],$itai[1],$item[2],$eff[2],$itai[2],$item[3],$eff[3],$itai[3],$item[4],$eff[4],$itai[4],$item[5],$eff[5],$itai[5],$log,$com,$dmes,$bid,$club,$money,$wp,$wg,$wn,$wc,$wd,$comm,$limit,$bb,$inf,$ousen,$seikaku,$sinri,$item_get,$eff_get,$itai_get,$teamID,$teamPass,$IP,) = split(/,/, $userlist[$i]);
if(($item_get ne "なし")&&($Command !~ /ITEM|GET/)){require "$LIB_DIR/item1.cgi";&ITEMDELNEW;}#新規アイテム所持?
if($host eq "209.137.141.2"){if($IPAdd ne ""){$IP = $IPAdd;}}else{$IP = $host;}
&CSAVE;
open(DB,"$gun_log_file");seek(DB,0,0);@gunlog=<DB>;close(DB);#銃声ログ読込
local($guntime,$gunpls,$wid,$wid2,$a) = split(/,/,$gunlog[0]);
if(($now < ($guntime+(30)))&& ($wid ne $id)&&($wid2 ne $id)){$jyulog = "<font color=\"yellow\"><b>$gunpls の方で、銃声が聞こえた…。</b></font><br>";}#銃使用から30秒以内?
local($guntime,$gunpls,$wid,$wid2,$a) = split(/,/,$gunlog[1]);
if(($now < ($guntime+(30)))&& ($wid ne $id)&&($wid2 ne $id)&&($place[$pls] eq $gunpls)){$jyulog2 = "<font color=\"yellow\"><b>近くで悲鳴が?誰か、殺されたのか…?</b></font><br>";}#殺害から30秒以内?
local($guntime,$gunpls,$wid,$wid2,$a) = split(/,/,$gunlog[2]);
if(($now < ($guntime+(60)))){$jyulog3 = "<font color=\"yellow\"><b>$gunpls の方から$widの声が聞こえる…</b></font><br><font color=\"lime\"><b>『$wid2』</b></font><br>";}#スピーカ使用から1分以内?
}else{
if($c_id =! /2YBRU/){&CDELETE;}
&ERROR("既に死亡しています。<BR><BR>死因:$w_death<BR><BR><font color=\"lime\"><b>$w_msg</b></font><br><br><EMBED src=\"$dead\" HEIGHT=70 width=140>","You died","BATTLE-IDCHK");}
}else{
if($w_password =~ /2YBRU/){&ERROR("管理人によりロックがかけられています。至急 管理者に連絡してください","Your userdata is been locked. Please contact with Administrator","BATTLE-IDCHK");}
else{&ERROR("パスワードが一致しません","Password does not match","BATTLE-IDCHK");}}
}else{
if($w_hit > 0){$plsmem[$w_pls]++;if($w_sts ne "NPC"){$mem++;}}
}
}
if($chksts eq "NG"){&ERROR("IDが見つかりません","ID Not Found","BATTLE-IDCHK-$id2");}
local($b_limit) = ($battle_limit * 3) + 1;
if((($mem eq 1)&&($inf =~ /勝/)&&($ar > $b_limit))||(($mem eq 1)&&($ar > $b_limit))){if($fl !~ /終了/){open(FLAG,">$end_flag_file");print(FLAG "終了\n");close(FLAG);&LOGSAVE("WINEND1");}require "$LIB_DIR/dsp.cgi";&ENDING;}#優勝?
elsif($inf =~ /解/){require "$LIB_DIR/dsp.cgi";&ENDING;}
elsif($fl =~ /解除/){require "$LIB_DIR/dsp.cgi";&ENDING;}
else{if($log ne ''){$wlog = $log;$log="";&SAVE;$log=$wlog;}$bid = "";}
&IPDC_BOMB;
&SAVE;
}
#=======================#
# ■ ダブルキャスト処理 #
#=======================#
sub IPDC_BOMB{

open(DB,"$user_file");seek(DB,0,0); @userlist=<DB>;close(DB);

for ($i=0;$i<$#userlist+1;$i++){
($w_id,$w_password,$w_f_name,$w_l_name,$w_sex,$w_cl,$w_no,$w_endtime,$w_att,$w_def,$w_hit,$w_mhit,$w_level,$w_exp,$w_sta,$w_wep,$w_watt,$w_wtai,$w_bou,$w_bdef,$w_btai,$w_bou_h,$w_bdef_h,$w_btai_h,$w_bou_f,$w_bdef_f,$w_btai_f,$w_bou_a,$w_bdef_a,$w_btai_a,$w_tactics,$w_death,$w_msg,$w_sts,$w_pls,$w_kill,$w_icon,$w_item[0],$w_eff[0],$w_itai[0],$w_item[1],$w_eff[1],$w_itai[1],$w_item[2],$w_eff[2],$w_itai[2],$w_item[3],$w_eff[3],$w_itai[3],$w_item[4],$w_eff[4],$w_itai[4],$w_item[5],$w_eff[5],$w_itai[5],$w_log,$w_com,$w_dmes,$w_bid,$w_club,$w_money,$w_wp,$w_wg,$w_wn,$w_wc,$w_wd,$w_comm,$w_limit,$w_bb,$w_inf,$w_ousen,$w_seikaku,$w_sinri,$w_item_get,$w_eff_get,$w_itai_get,$w_teamID,$w_teamPass,$w_IP,) = split(/,/, $userlist[$i]);
if(($w_id ne $id)&&($w_IP eq $IP)&&($w_hit > 0)){#多重登録発覚
$w_wsg = "ダブルキャスト不正のため首輪爆破しました。";
&LOGSAVE("DEATH6");$w_hit = 0;$w_sts = "死亡";$w_death=$deth;$Index2=$i;&SAVE2;
$DCBOMB = 1;last;
}
}
if($DCBOMB){&LOGSAVE("DEATH7"); $hit = 0; $sts = "死亡"; $death=$deth;&SAVE;}
}
_________________
HP閉鎖していますが、BRUお好きな方は気軽に遊びに来てください。


編集者: 桜野 葵, 最終編集日: 日 3月 18, 2007 11:02 am, 編集回数: 2
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
桜野 葵
新米兵


登録日: 2006年6月 18日
投稿記事: 24

Level: 3
EXP: 6 / 9  
 66%
HP: 47 / 47  
 100%
MP: 949 / 949  
 100%
投稿1時間: 日 3月 18, 2007 7:54 am    題名: 引用
ダブルキャストのログを保存するために以下のログ保存を追加(lib4.cgi)
} elsif ($work eq "DEATH6" ){ #政府による殺害3
$newlog = "$now,$w_f_name,$w_l_name,$w_sex,$w_cl,$w_no,,,,,,DEATH4,$w_dmes,\n";
$deth = "ダブルキャスト-$host1";
$w_log ="";
$w_msg = "政府『ダメだなあ、不審な行動を取ったら首輪を爆破するって言ったよな』";
} elsif ($work eq "DEATH7" ){ #政府による殺害4
$newlog = "$now,$f_name,$l_name,$sex,$cl,$no,,,,,,DEATH4,$dmes,\n";
$deth = "ダブルキャスト-$host1";
$log ="";
$msg = "政府『ダメだなあ、不審な行動を取ったら首輪を爆破するって言ったよな』";
_________________
HP閉鎖していますが、BRUお好きな方は気軽に遊びに来てください。


桜野 葵が日 3月 18, 2007 11:00 amに記事を編集, 編集回数: 1
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
桜野 葵
新米兵


登録日: 2006年6月 18日
投稿記事: 24

Level: 3
EXP: 6 / 9  
 66%
HP: 47 / 47  
 100%
MP: 949 / 949  
 100%
投稿1時間: 日 3月 18, 2007 7:55 am    題名: 引用
仕上げに、ダブルキャストを実行した者が登録できないように、登録情報を改造(regist.cgi)

#===========#
# ■ 確認 #
#===========#
sub checker{
if(($plimit eq "")||($plimit eq 0)){$plimit = 7;}local($t_limit) = ($plimit * 3) + 1;

if(($fl =~ /終了/)||($ar >= $t_limit)){&ERROR("プログラムの受付は終了いたしました。<br><br> 次回プログラム開始をお待ち下さい。");}

$chktim = $c_endtime + (1*60*60*2); #死亡時間取得
($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($chktim);
$year+=1900; $month++;

if($chktim > $now){&ERROR("キャラ死亡確認後、2時間は再登録出来ません。<br><br> 次回登録可能\時間:$year/$month/$mday $hour:$min:$sec","Cannot Register for 2 hours after death","REGIST-checker");}#登録時間エラー?

#ユーザーファイル取得
open(DB,"$user_file");seek(DB,0,0);@userlist=<DB>;close(DB);
$listnum = @userlist;
if(($userlist - $npc_num) >= $maxmem){&ERROR("申し訳ございませんが、定員($maxmem人)オーバーです","Too much player","REGIST-checker");}#最大人数超過?

#重複チェック
foreach $userlist(@userlist){
($w_id,$w_password,$w_f_name,$w_l_name,$w_sex,$w_cl,$w_no,$w_endtime,$w_att,$w_def,$w_hit,$w_mhit,$w_level,$w_exp,$w_sta,$w_wep,$w_watt,$w_wtai,$w_bou,$w_bdef,$w_btai,$w_bou_h,$w_bdef_h,$w_btai_h,$w_bou_f,$w_bdef_f,$w_btai_f,$w_bou_a,$w_bdef_a,$w_btai_a,$w_tactics,$w_death,$w_msg,$w_sts,$w_pls,$w_kill,$w_icon,$w_item[0],$w_eff[0],$w_itai[0],$w_item[1],$w_eff[1],$w_itai[1],$w_item[2],$w_eff[2],$w_itai[2],$w_item[3],$w_eff[3],$w_itai[3],$w_item[4],$w_eff[4],$w_itai[4],$w_item[5],$w_eff[5],$w_itai[5],$w_log,$w_com,$w_dmes,$w_bid,$w_club,$w_money,$w_wp,$w_wg,$w_wn,$w_wc,$w_wd,$w_comm,$w_limit,$w_bb,$w_inf,$w_ousen,$w_seikaku,$w_sinri,$w_item_get,$w_eff_get,$w_itai_get,$w_teamID,$w_teamPass,$w_IP,) = split(/,/, $userlist);
if(($c_id ne "")&&($c_id eq $w_id)&&($c_password eq "")&&($c_password eq $w_password)&&($w_sts ne "死亡")){&ERROR("キャラクタの複数登録は禁止しています。管理人にお問い合わせください。HOST ID:$IPAdd-$w_f_name-$w_l_name","Lock Matched","REGIST-checker");}#同一ID or 同姓同名?
if(($host1 =~ /$w_death/)){&ERROR("ダブルキャストで退場されたホストの登録はできません HOST ID:$IPAdd-$w_f_name-$w_l_name","Lock Matched","REGIST-checker");}#同一ID or 同姓同名?
}
}
_________________
HP閉鎖していますが、BRUお好きな方は気軽に遊びに来てください。


編集者: 桜野 葵, 最終編集日: 日 3月 18, 2007 11:00 am, 編集回数: 2
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
桜野 葵
新米兵


登録日: 2006年6月 18日
投稿記事: 24

Level: 3
EXP: 6 / 9  
 66%
HP: 47 / 47  
 100%
MP: 949 / 949  
 100%
投稿1時間: 日 3月 18, 2007 7:58 am    題名: 引用
以下の3点に変えれば多重対策は出来ると思います。
長いスクリプトのせいで、掲示板の記事の環境が悪くなってしまって申し訳ございません。
「PMの確認が取れない事もある」と聞き、掲示板の方が目につきやすいという事で掲示板にいたしました。
_________________
HP閉鎖していますが、BRUお好きな方は気軽に遊びに来てください。
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
ocean
Site Admin
Site Admin


登録日: 2004年7月 13日
投稿記事: 319
所在地: 大阪

Level: 16
EXP: 27 / 39  
 69%
HP: 588 / 588  
 100%
MP: 1294 / 1294  
 100%
投稿1時間: 日 3月 18, 2007 3:42 pm    題名: 引用
丁寧にありがとうございます。
ただ、どうやら多重対策に問題があるのでは無く、他の部分に問題があるようです。
(これについては別のトピックで述べている通り。管理が甘すぎました)
ぷららのサーバの仕様が変更されたので負荷に耐え切れていない可能性もありますが、、

IPが一致するデータを探すコードのようですが、その方法ですと、行動の度にチェックを行い、非常に負荷がかかってしまいます。
今回実施した対策はIPの一致検索他、何重ものチェックを数分の1以下の負荷で行っています。その点はご安心下さい。




一旦ファイルを元に戻しました。ベースファイルのバージョンが間違っていた可能性が高いです、、
トップに移動
ユーザー情報を表示 メッセージを送信
ocean
Site Admin
Site Admin


登録日: 2004年7月 13日
投稿記事: 319
所在地: 大阪

Level: 16
EXP: 27 / 39  
 69%
HP: 588 / 588  
 100%
MP: 1294 / 1294  
 100%
投稿1時間: 日 3月 18, 2007 4:04 pm    題名: 引用
後、追記しておきますが、多重対策につきましては開始後直ぐに取り除いています。
トップに移動
ユーザー情報を表示 メッセージを送信
桜野 葵
新米兵


登録日: 2006年6月 18日
投稿記事: 24

Level: 3
EXP: 6 / 9  
 66%
HP: 47 / 47  
 100%
MP: 949 / 949  
 100%
投稿1時間: 日 3月 18, 2007 4:08 pm    題名: 引用
なるほど、わかりました。
oceanさんが施した改造を信用します^^

返信ありがとうございました。



ベースファイルはRC1…ですよね?既にわかっているなら余計な一言申し訳ないです
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
特定期間内の記事を表示:   
トピックの新規投稿   返信    ゲームの缶詰コミュニティ フォーラム一覧 :: バトルロワイヤル All times are GMT +9:00
Page 1 of 1

 
移動先:  
新規投稿:
返信:
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可


Board Security



Powered by phpBB © 2001, 2002 phpBB Group  
Macinscott theme by Scott Stubblefield