グラデショーンチャットの改造方法
参加者表示
機能追加
ログファイル操作
最終更新日:2000年09月21日
参加者表示を別ページに
目次ページなどにチャットに参加されている方の表示をさせる方法です。
なお、グラデーションチャット(アイコン版含む)以外のチャットでの利用はサポート致しません。
[ダウンロード:参加者表示 ]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]
管理人:ファルコン・タカ