#-----------------------------------------------------------# # 罪と罰++ 二律背反 # # Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # # Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # # BLANK BOARD [ http://pom.to/ ] # #-----------------------------------------------------------# # 通信着通知 Version 1.0 # Arranged by あくあ # HPタイトル [http://aqure.zive.net/] #--- [注意事項] --------------------------------------------# # ・このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# require "./ore_config.cgi"; # 罪罰通信 追加機能 sub noti { $logfile = "./logdata/letter_log.cgi"; # ログの最新10件のみチェックする $log_last = 10; # ログを展開 open(IN,"$logfile") || &error("Open Error : $logfile"); local $log_last_flag=0; my $camp_flag = $camp_info[$DAT{'camp'}][0]; my $msg_flg = 0; $noti_mes = ""; while () { $log_last_flag++; local($date,$nm,$camp,$com,$sogo,$addr,$host,$agent,$time2,$myid) = split(/<>/); if($myid eq $DAT{'nm'} || $myid eq $cmp[$DAT{'camp'}]){ $msg_flg = 1; $noti_mes .= qq|◆$nm\[$date\]|; #$noti_mes .= qq|◆$camp[$DAT{'camp'}]/$camp=$DAT{'camp'}/$myid=$DAT{'nm'}|; last if $log_last_flag >= $log_last; } } close(IN); # 参加者 ./inc/oresub-base_pc.cgi &read_data_index; # letter.cgiへのリンクでないとore_.cgi経由になるので # 処理の分岐に失敗する!! if ($msg_flg == 1){ if (int(rand(2))==0){ # # $noti_mes = qq|【罪罰通信】$noti_mes|; $noti_mes = qq|【罪罰通信】$noti_mes|; }else{ # # $noti_mes = qq|【参加者】($now_nm_cnt名)$now_nm|; $noti_mes = qq|【参加者】($now_nm_cnt名)$now_nm|; } $noti_mes .= qq||; }else{ $noti_mes = qq| 【参加者】($now_nm_cnt名)$now_nm|; } } #------------------------------------------------------------------------------- # データ読み込み # 参加者データ一括読み込み sub read_data_index{ local @tdat; # 参加者データファイル一覧取得/一括読み込み &usrdata_read; &usrdata_open; $now_sanka=$#tdat+1; $now_nm_cnt=0; foreach(0 .. $#tdat){ %DAT = ''; my @prats = split(/,/,$tdat[$_]); foreach $prats (@prats){ my($key,$v) = split(/;/,$prats); $DAT{$key} = $v; } # 現在のプレイヤー抽出 if($player_now>=$time-$DAT{'la'}){ if($mv_mode eq 'pc'){ # アイコンの表示 if ($DAT{'icon'} eq '') { $icon_text = qq| |; # $icon_text = qq||; } else { $icon_text = qq||; #$icon_text = qq|-|; } # 待機時間の表示 $wh = int($DAT{'pr'}/3600); $wm = int(($DAT{'pr'}%3600)/60); $ws = $DAT{'pr'}%60; if($wh>0){ $wmin = "0$wm" if($wm<10); $t ="$wh:wm"; }elsif($wm>0){ $ws = "0$ws" if($ws<10); $t ="0:$wm"; }else{ $t ="0:00:$ws"; } # #$now_type = "-[$DAT{'type'}]" if($DAT{'type'} ne ''); $now_type = "-[$DAT{'type'}]"; $now_type = "" if($now_type eq '-[]'); # $now_type -> $DAT{'type'} $now_nm .= ($DAT{'sogo'}) ? qq| $DAT{'nm'} [$sogo_p[$DAT{'sogo'}]:$sogo_txt] [$cmp[$DAT{'camp'}]]$now_type
$DAT{'info_mes'}
| : qq| $DAT{'nm'} [$cmp[$DAT{'camp'}]]$now_type
$DAT{'info_mes'}
| ; # 参加者リスト ./inc/ore_sub-base-p1.cgi にて使用 # mvかな? $nm_list .= " " if ($nm_list); $nm_list .= ($DAT{'sogo'}) ? qq|$DAT{'nm'}[$sogo_p[$DAT{'sogo'}]]|:qq|$DAT{'nm'}|; }else{ $now_nm .= ($DAT{'sogo'}) ? "$DAT{'nm'} [$sogo_p[$DAT{'sogo'}]:$sogo_txt]/" : "$DAT{'nm'}/" ; } $now_nm_cnt++; } } foreach (0 .. $#safetime){ $safe_time .= ($safetime[$_]<0) ? "--" : "$safetime[$_],"; } return ($now_nm,$now_sanka,$now_nm_cnt,$safe_time,$nm_list); } 1;