#!/usr/bin/perl #部屋移動 # 99/07/05 update(v5.11) by 普通 #==================================================================== #ご協力を頂いた方 #oidon_<)'); #顔文字設定 ##################################################Option:002 by Add End print "Content-type: text/html\n\n"; if ($in{'roomno'} && $in{'goroomname'} && $in{'chatname'}){ &dataset(); if ($in{'wind'}) {&main2();} else {&main();} } else{&error("このスクリプトを動作させる為の情報が不足しています。");} exit; sub dataset { $roomno = $in{'roomno'}; #Chat室No &roomset(); #部屋属性取得 $goroomname = $in{'goroomname'}; #移動先部屋情報取得 if ($goroomname =~ /(.*)\((.*)\).*/) { $goroomname = $1; $goroomno = $2;} &goroomset(); $chatname = $in{'chatname'}; #ハンドル名 &room_out(); #移動元部屋処置 $wind = $in{'wind'}; #部屋属性のチェック if ($ghf_roompass) { &error ("ご要望の部屋への移動は、現在出来ません。(入室パスワード要)");} if ($ghf_roomenvi1) { &error("ご要望の部屋への移動は、現在出来ません。(部屋属性:入室時)");} if (($ghf_roomenvi2) && !($profno)) { &error("ご要望の部屋への移動は、現在出来ません。(プロフィール登録者のみ可)");} if ($ghf_memcnt eq $ghf_imaxcnt) { &error("ご要望の部屋への移動は、現在出来ません。(満室の可能性有り)");} &room_in(); #移動先部屋処理 #あいこん一覧リンク if ($ic_chat) { if ($ic_chat eq '1') { $ic_disp = "
  • あいこん一覧\n"; } else { if ($frame eq 'yes') { $ic_disp = "
  • あいこん一覧\n"; } else { $ic_disp = "
  • あいこん一覧\n"; } } } #発言ランキングリンク if ($ranking) { if ($frame eq 'yes') { $disp9 = "
  • 発言ランキング\n"; } else { $disp9 = "
  • 発言ランキング\n"; } } #管理者ICQ呼び出し if ($func_icq eq '2' && $bmf_end eq '') { $disp8 = "
  • 管理人ICQ呼び出し♪\n"; } } #非フレーム・移動先部屋表示 sub main { print "$title2\n"; print<<"__EOF__"; $ghf_pgbody
    発言 __EOF__ #ささやき相手メンバー表示 &seqmember (); print<<"__EOF__"; 文字サイズ __EOF__ ##################################################Option:002 by Add Start # print<<"__EOF__"; #顔文字 #__EOF__ ##################################################Option:002 by Add End print "
    \n"; if ($java eq 'yes') { print<<"__EOF__"; __EOF__ } ######退室する######################################################## print<<"__EOF__";

    __EOF__ #投稿内容の表示 &prcom2(); print<<"__EOF__";



    ここは、$title - $roomdisp3です。

    うこそ、いらっしゃいませ!「$chatname」さん。じゃん、じゃんんでってくださいね!
    • 発言内容の更新は「発言!」ボタンでお願いネ!
    • お帰り(退室)は下の「退室する」ボタンを押してネ!(参加人数を間違えるので・・・) $disp9 $disp8
    • HELP
      $ic_disp

    __EOF__ exit(0); } #フレーム・移動先部屋表示 sub main2 { $w_chatname = $chatname; $e_chatname = &encode($w_chatname); print "$title2\n"; if ($java eq 'yes') { print<<"__EOF__"; __EOF__ } print<<"__EOF__"; $ghf_pgbody <TABLE><TR> <TD VALIGN=bottom><FORM METHOD="get" ACTION="${sbase}chat_end.cgi"> <INPUT TYPE=hidden NAME="roomno" VALUE="$goroomno"> <INPUT TYPE=hidden NAME="chatname" VALUE="$chatname"> <INPUT TYPE=submit VALUE="退室する"></FORM> </TR></TABLE><HR SIZE=2> <FONT FACE=\"MS Pゴシック\"> <H2><STRONG>ここは、$title - $roomdisp3です。</STRONG></H2> 現在、この部屋はフレーム表示モードにて動作しています。一旦退室し、非フレームにて入室願います<BR> </FONT><HR NOSHADE> __EOF__ } #ささやき受けメンバー表示 sub seqmember { print "
    ささやき!→\n"; } #投稿内容の表示 sub prcom2 { print "在室者:\n"; foreach (@memb_list) {print "$_ \n";} print "

    \n"; if ($rom_disp) {&rom_disp();} $lcnt = 0; &ReadComment ($goroomno); $myid = "$chatname:$ipaddr"; foreach (@cf_list) { if (s///g) { next if ($1 ne $myid && $2 ne $myid); $_ = "$_"; } print $mf_line, $_; last if (++$lcnt > $dmax); } } #移動先部屋処理 sub room_in { &rom_proc_in(); #移動先:参加者登録、登参加者・ROM精査 &roomih_update(); #移動先:部屋属性ファイル更新 #入室メッセージ登録 &WriteComment ($goroomno,"「$chatname_disp」さんが$roomdisp2から移動!で入室。\[$date$rhost\]
    \n"); } #移動元部屋処理 sub room_out { &rom_proc_out(); #移動元:参加者削除、登参加者・ROM精査 $profno = $bmf_profno; #プロフィールNo $java = $bmf_java; #java script利用可否 $seq = $bmf_seq; #ささやき受付可否 $color = $bmf_ccolor; #発言文字カラー #部屋表現セット ################フラッシュバージョンへ変更################ if ($ficon eq 'y') { # $roomdisp = ""; # $roomdisp2 = ""; # $roomdisp3 = ""; $roomdisp = ""; $roomdisp2 = ""; $roomdisp3 = ""; ################################################### }else{ $roomdisp = $bhf_roomname; $roomdisp2 = $bhf_roomname; $roomdisp3 = $goroomname; } #プロフィールリンク if ($profno) { $chatname_disp = "$chatname";} else {$chatname_disp = $chatname;} &roomoh_update(); #移動元:部屋属性ファイル更新 if ($bhf_roomenvo && $memcnt eq 0) { #部屋属性:退室後=会話ログ消去 &DeleteComment ($roomno); &WriteComment ($roomno,"ご案内>発言ログは自動初期化しました。
    \n"); } else { #移動(退出)メッセージ表示 &WriteComment ($roomno,"「$chatname_disp」さんが$roomdisp3移動!\[$date$rhost\]
    \n"); } } #部屋移動先:参加者登録、参加者・ROM精査 sub rom_proc_in { $memcnt2 = 0; &LockReadMember($goroomno); foreach (@mf_list) { ($tmf_roomno,$tmf_roomname,$tmf_chatname,$tmf_inenv,$tmf_inproc,$tmf_yobi) = split(/||\n/); ($tmf_ipaddr,$tmf_intime,$tmf_latime,$tmf_agent,$tmf_profno,$tmf_yobi21) = split(/,/,$tmf_inproc); if ($tmf_ipaddr eq 'ROM') { $timewk = time - $tmf_intime; if ($timewk > $rom_time) {$_ = '';} elsif ($tmf_chatname eq $rom_name) {$_ = '';} else {push (@rom_list,$tmf_chatname);} } else { $timewk = time - $tmf_latime; if ($timewk > $aout_time) {$_ = '';} # elsif ($tmf_ipaddr eq $ipaddr) {$_ = '';} elsif ($tmf_chatname eq $chatname) {$_ = '';} else { ($tmf_ccolor,$tmf_seq,$tmf_java,$tmf_yobi11,$tmf_yobi12) = split(/,/,$tmf_inenv); if ($tmf_profno) {push(@memb_list,"$tmf_chatname");} else {push(@memb_list,"$tmf_chatname");} $memcnt2++; } } } unshift(@mf_list,"$goroomno|$ghf_roomname|$chatname|$color,$seq,$java,$bmf_end,|$ipaddr,$bmf_intime,$times,$user_agent,$profno,|$bmf_yobi|\n"); #改めて登録 &UnlockWriteMember($roomno); if ($profno) {push(@memb_list,"$chatname");} else {push(@memb_list,"$chatname");} $memcnt2++; } #移動先:部屋属性ファイル更新 sub roomih_update { &LockReadHeader ($goroomno); ($thf_roomname,$thf_intime,$thf_outtime,$thf_memcnt,$thf_page,$thf_ccolor,$thf_roomenv,$thf_roompass,$thf_bkurl,$thf_yobi1,$thf_yobi2,$thf_yobi3) = split(/||\n/,$hf_list); ($thf_roomenvi1,$thf_roomenvi2,$thf_roomenvo,$thf_roomenvd,$thf_imaxcnt) = split(/,/,$thf_roomenv); $hf_list = "$thf_roomname|$times|$thf_outtime|$memcnt2|$thf_page|$thf_ccolor|$thf_roomenvi1,$thf_roomenvi2,$thf_roomenvo,$thf_roomenvd,$thf_imaxcnt|$thf_roompass|$thf_bkurl|$thf_yobi1|$thf_yobi2|$thf_yobi3\n"; &UnlockWriteHeader ($goroomno); } #参加者削除、参加者・ROM精査 sub rom_proc_out { $memcnt = 0; $actmem = 0; &LockReadMember($roomno); foreach (@mf_list) { ($tmf_roomno,$tmf_roomname,$tmf_chatname,$tmf_inenv,$tmf_inproc,$tmf_yobi) = split(/||\n/); ($tmf_ipaddr,$tmf_intime,$tmf_latime,$tmf_agent,$tmf_profno,$tmf_yobi21) = split(/,/,$tmf_inproc); if ($tmf_ipaddr eq 'ROM') { $timewk = time - $tmf_intime; if ($timewk > $rom_time) {$_ = '';} elsif ($tmf_chatname eq $rom_name) {$_ = '';} } else { $timewk = time - $tmf_latime; if ($timewk > $aout_time) {$_ = '';} # elsif ($tmf_ipaddr eq $ipaddr) {$_ = '';} elsif ($tmf_chatname eq $chatname) { ($bmf_ccolor,$bmf_seq,$bmf_java,$bmf_end,$bmf_yobi12) = split(/,/,$tmf_inenv); $_ = ''; $bmf_profno = $tmf_profno; $bmf_intime = $tmf_intime; $bmf_yobi = $tmf_yobi; $actmem = 1; } else {$memcnt++;} } } &UnlockWriteMember($roomno); # if ($actmem eq 0) {&error("一定時間($aout_time秒)のアクセスが無く自動退室された可能\性があります。");} } #部屋属性ファイル更新 sub roomoh_update { &LockReadHeader ($roomno); ($thf_roomname,$thf_intime,$thf_outtime,$thf_memcnt,$thf_page,$thf_ccolor,$thf_roomenv,$thf_roompass,$thf_bkurl,$thf_yobi1,$thf_yobi2,$thf_yobi3) = split(/||\n/,$hf_list); ($thf_roomenvi1,$thf_roomenvi2,$thf_roomenvo,$thf_roomenvd,$thf_imaxcnt) = split(/,/,$thf_roomenv); if (($thf_roomenvi1 eq '2') && ($memcnt eq 0)) {$new_roompass = '';}#部屋属性:入室1=参加パス else {$new_roompass = $thf_roompass;} $hf_list = "$thf_roomname|$thf_intime|$times|$memcnt|$thf_page|$thf_ccolor|$thf_roomenvi1,$thf_roomenvi2,$thf_roomenvo,$thf_roomenvd,$thf_imaxcnt|$new_roompass|$thf_bkurl|$thf_yobi1|$thf_yobi2|$thf_yobi3\n"; &UnlockWriteHeader ($roomno); } #ROM表示 sub rom_disp { $rom_dsw = '0'; $rom_count = @rom_list; if (($rom_count eq 0) || ($ghf_roomenvd)) {return;} if ($rom_nmmd eq '1') { print "ご案内>ROM中!さんが$rom_count人、いらっしゃいます〜。
    \n"; } else { foreach (@rom_list) { if ($rom_dsw eq '0') { print "ご案内>現在のROMさんは『$_』"; $rom_dsw = '1'; } else {print "『$_』";} } print "です。
    \n"; } } #移動先部屋属性取得 sub goroomset { &ReadHeader ($goroomno); ($ghf_roomname,$ghf_intime,$ghf_outtime,$ghf_memcnt,$ghf_page,$ghf_ccolor,$ghf_roomenv,$ghf_roompass,$ghf_bkurl,$ghf_yobi1,$ghf_yobi2,$ghf_yobi3) = split(/||\n/,$hf_list); $ghf_page =~ s/body/BODY/gi; @page_set = split(/,/,$ghf_page); if ($ghf_page =~ /.+BODY.+BODY.+/) { if ($bgmode eq '1') { $ghf_pgbody = $page_set[0]; $ghf_pgbody2 = $page_set[1]; } else { $ghf_pgbody = $page_set[1]; $ghf_pgbody2 = $page_set[0]; } $ghf_line = $page_set[2]; } else { $ghf_pgbody = $page_set[0]; $ghf_pgbody2 = $page_set[0]; $ghf_line = $page_set[1]; } ($ghf_roomenvi1,$ghf_roomenvi2,$ghf_roomenvo,$ghf_roomenvd,$ghf_imaxcnt) = split(/,/,$ghf_roomenv); } #自部屋属性取得 sub roomset { &ReadHeader ($roomno); ($bhf_roomname,$bhf_intime,$bhf_outtime,$bhf_memcnt,$bhf_page,$bhf_ccolor,$bhf_roomenv,$bhf_roompass,$bhf_bkurl,$bhf_yobi1,$bhf_yobi2,$bhf_yobi3) = split(/||\n/,$hf_list); $bhf_page =~ s/body/BODY/gi; @page_set = split(/,/,$bhf_page); if ($bhf_page =~ /.+BODY.+BODY.+/) { if ($bgmode eq '1') { $bhf_pgbody = $page_set[0]; $bhf_pgbody2 = $page_set[1]; } else { $bhf_pgbody = $page_set[1]; $bhf_pgbody2 = $page_set[0]; } $bhf_line = $page_set[2]; } else { $bhf_pgbody = $page_set[0]; $bhf_pgbody2 = $page_set[0]; $bhf_line = $page_set[1]; } ($bhf_roomenvi1,$bhf_roomenvi2,$bhf_roomenvo,$bhf_roomenvd,$bhf_imaxcnt) = split(/,/,$bhf_roomenv); } #エンコード処理 sub encode { $_[0] =~ s/([^0-9A-Za-z_ ])/'%'.unpack('H2',$1)/ge; $_[0] =~ s/\s/+/g; $_[0]; } #エラー表示 sub error { print "$title2\n"; print<<"__EOF__"; $hp_bcolor
    $_[0]
    __EOF__ exit(0); }