[HOME]   

グラデショーンチャットの改造方法

参加者表示

機能追加
ログファイル操作
最終更新日:2000年09月21日

参加者表示を別ページに

目次ページなどにチャットに参加されている方の表示をさせる方法です。
なお、グラデーションチャット(アイコン版含む)以外のチャットでの利用はサポート致しません。

download[ダウンロード:参加者表示 ]sanka.lzh 

■SSIが許可されていない場合。CGIとして設置
ページ自体をCGIとして作成します。
フレームを使用するなどして工夫してください。
sanka.cgi パーミッション 755 (705,701,700)
comchatg.cgiと同じところに設置してください。
☆sanka.cgiの設定方法
画面の色設定
$body = '<body bgcolor=#FFFFFF text=#000000 link=#0000FF vlink=#0000FF alink=#0000FF>';
$type = 0; #以下の使用方法により設定
#CGIとして使用 0 ページ自体をこのスクリプトで表示

■SSIが許可されている場合。 sanka.cgi パーミッション 755 (705,701,700)
comchatg.cgiと同じところに設置してください。
☆sanka.cgiの設定方法
$type = 2; #以下の使用方法により設定
#CGIとして使用 0 ページ自体をこのスクリプトで表示
#SSIとして使用 1 <!--#exec cmd="sanka.cgi"--> で呼び出す
#SSIとして使用 2 <!--#exec cgi="sanka.cgi"--> で呼び出す
#SSIとして使用 2 <!--#include virtual="sanka.cgi"-->で呼び出す
☆sanka.shtmlの設定方法
SSIとして表示させるHTMLページは同梱されている sanka.shtmlを参考に作成してください。
プロバイダによっては、#exec cmd が許可されていない場合もありますので、
よくプロバイダのSSIの設置説明や、制限を理解してください。
(Hi-HOなどでは、#include virtural で呼び出すことができるそうです。)
また、sanka.cgiと同じディレクトリ(フォルダ)にsanka.shtmlを設置できないプロバイダの場合は、
sanka.cgiの呼び出しを相対パス、絶対パスで呼び出す必要があるかと思います。

サンプル
SSIで表示

CGIで表示

ROMな方を人数表示する方法

ROMされている方がいる場合に、参加者表示欄にROM:○人と表示させる方法です。

■323行目あたり(参加者をキーワードで探してください)
print "<table width=100%><tr><td><small>参加者($num):@sanka3</small></td>\n";
■修正後
print "<table width=100%><tr><td><small>参加者($num):@sanka3 ROM:$rom人</small></td>\n";


sub sankaの中
■560行目あたり
$flag=1;
■修正後
$flag=1;$rom=0;


■571行目あたり
push (@sanka3, "<font color=$color2>$handle</font>☆") if ($handle ne $host2);
}
# 新しい参加者を加える
■修正後
push (@sanka3, "<font color=$color2>$handle</font>☆") if ($handle ne $host2);
if ($handle eq $host2) {$rom++;}
}
# 新しい参加者を加える

■577行目あたり
push (@sanka3, "<font color=$color>$name</font>☆") if ($name ne $host);
}
■修正後
push (@sanka3, "<font color=$color>$name</font>☆") if ($name ne $host);
if ($name eq $host) {$rom++;}
}


参加者区別方法の変更

通常は、問題ないのですが、学内や社内などのLAN環境や、同じプロバイダのプロキシを設定している参加者同志では、チャットCGIから区別することができません。
この解決方法として、参加者の区別を現状のリモートホスト名だけでなくハンドルでの区別も追加します。
■現状 564行目あたり
# ホスト名が同一の場合、時間と名前を最新のものにする。
if (($host2 eq "$host") && $flag) {
■修正後
# ホスト名が同一の場合、時間と名前を最新のものにする。
if(($handle eq $name) && ($host2 eq $host) && $flag) {
でもこれだけだと、「clear」での自分の発言削除が同じリモートホストの他の方のまでできちゃいますので、
以下の改造も必要です。
■現状396行目あたり
if($host eq "$ho"){$flag = 1;}
■改造後
if(($host eq "$ho") && ($n_name eq "$na")){$flag = 1;}

参加者表示欄にROMな方のリモートホスト名を表示させる方法

■571行目あたり
push (@sanka3, "<font color=$color2>$handle</font>☆") if ($handle ne $host2);
■改造後
push (@sanka3, "<font color=$color2>$handle</font>☆");

■577行目あたり
push (@sanka3, "<font color=$color>$name</font>☆") if ($name ne $host); 
■改造後
push (@sanka3, "<font color=$color>$name</font>☆");

[HOME]   
管理人:ファルコン・タカ