注目の投稿

[募集][告知] おしらせ

ここが一番デイビューあるのでダメ元で… 探しています: 2000 - 2010年頃までのいずれかの期間に、私が遊ばせていただいてたなりきりチャットのログ 該当多分3箇所くらい(表裏自前)だと思うのですが、いずれか一箇所でも上記期間のログをお持ちの方、もしいらっしゃったらコピーをお...

10.17.2012

pbschatの改造

暇人はしなくていいことしかしない。
http://pbschat.com/
(2021年現在DLアドレスが無効となってしまっているようです…ウェバーカイブはこちら
https://web.archive.org/web/20171203005059/http://www.pbschat.com:80/
作者の方が気付いてURI直してくださるとよいなぁ… ;;(´Д⊂ヽ;;)

こちらのPbschatV2シリーズを自分使用に小改造したのです。

1)自作退室メッセージの追加
2)名前色選択の同一画面内小窓表示
ご利用は自己責任でお願いします。また、もっと良い方法あったら教えてください…

実働サンプル・こんなかんじ。


1)自作退室メッセージの追加
改造対象ファイル:
set.php
out.php
top.php
showarchive.php(使用しているなら
■set.php
276行:自作退室メッセージをログファイルから読み込み
 list($lhc, $lgk, $lid, $lnm, $lhg, $lwsa, $lht, $lpr) = explode('<>', chop($value));
書き換え→ list($lhc, $lgk, $lid, $lnm, $lhg, $lwsa, $lht, $lpr, $UOMES) = explode('<>', chop($value));

320行:自作退室フォームに入力がなかった場合はデフォルトの退室メッセージを表示する。
 echo $Omes1."<FONT COLOR=\"#$lhc\"><B>".$lnm."</B></FONT>".$Omes2." ($lht)<HR SIZE=1>";
書き換え→ echo $Omes1."<FONT COLOR=\"#$lhc\"><B>".$lnm."</B></FONT>".$Omes2." ($lht)<HR SIZE=1>";
                    } else {
                    $UOMES = str_replace(",", "NAME", $UOMES);
    $UOmesr1 = array("NAME", "ROOM");
    $UOmesr2 = array("<FONT COLOR=\"#$lhc\"><B>".$lnm."</B></FONT>", $lhg);
    $UOmes = str_replace($UOmesr1, $UOmesr2, $UOMES);
    echo "<font style=\"font-weight:bold;font-size:82%;\">???:<FONT COLOR=\"#$lhc\">".$lnm."</FONT>【".$UOmes."】</font> ($lht)<HR SIZE=1>";
}
#                list($Omes1, $Omes2) = explode(",", str_replace('ROOM', $lhg, $OMES));
#                echo $Omes1."<FONT COLOR=\"#$lhc\"><B>".$lnm."</B></FONT>".$Omes2." ($lht)<HR SIZE=1>";


■out.php
42行:自作退室メッセージもログファイルへ書き込み
 UF_WriteLog("$hc<><><>$nm<>$Title<>$REMOTE_ADDR<>$today<>4\n",4); //退室メッセージの書き込み
書き換え→ UF_WriteLog("$hc<><><>$nm<>$Title<>$REMOTE_ADDR<>$today<>4<>$UOMES\n",4); //退室メッセージの書き込み

■top.php
92行:自作退室メッセージ入力フォームの表示
 <INPUT TYPE="submit" VALUE=" 退室 " CLASS="buttonform">
書き換え→ <INPUT TYPE="submit" VALUE=" 退室 " CLASS="buttonform"> 退室メッセージ <input type="text" size="40" name="UOMES" value="">※「NAME」がキャラ名、「ROOM」が部屋名に置き換わります。

■showarchive.php
144行付近:set.phpとほぼ同じ
書き換え→ case 4: //退室
            if ($UOMES == null){
                list($Omes1, $Omes2) = explode(",", str_replace('ROOM', $lhg, $OMES));
                echo $Omes1."<FONT COLOR=\"#$lhc\"><B>".$lnm."</B></FONT>".$Omes2." ($lht)<HR SIZE=1>";
                    } else {
                    $UOMES = str_replace(",", "NAME", $UOMES);
                    $UOmesr1 = array("NAME", "ROOM");
                    $UOmesr2 = array("<FONT COLOR=\"#$lhc\"><B>".$lnm."</B></FONT>", $lhg);
                    $UOmes = str_replace($UOmesr1, $UOmesr2, $UOMES);
                    echo "<FONT COLOR=\"#$lhc\"><B>".$UOmes."</B></font><HR SIZE=1>";
                            }
                if ($ips) { echo $lwsa; }
                echo "<HR SIZE=1>";

                break;



以上。


おまけ※自作退室メッセージを例えば
『○○[参加者名]さんが△△[部屋名]から去りました。「さようなら~[自作文章]」』
みたいにしたい場合は、
set.phpとshowarchive.phpの
  $UOmes = str_replace($UOmesr1, $UOmesr2, $UOMES);
                    echo "<FONT COLOR=\"#$lhc\"><B>"
.$UOmes."</B></font><HR SIZE=1>";


ここを、

  $UOmes = str_replace($UOmesr1, $UOmesr2, $UOMES);
                    echo
"<B><FONT COLOR=\"#$lhc\">".$lnm."</FONT>さんが".$lhg."から去りました。「".$UOmes."」</B></FONT>($lht)<HR SIZE=1>";


ってな感じに書き換えると良いです。

表示サンプル・こんなかんじ。


2)名前色選択の同一画面内小窓表示
Javascript使わずにやってみたかった。css3使用です。
改造対象ファイル:
pbschat.php
pbschat.css
新規に作成するファイル:
colorlist2.php
pbschat.php
70行:##HTML部分~の前にカラーリストの読み込みを付け足し。
  $HcList .= ' CLASS="checkform"><FONT COLOR="#'.$value.'">'.HGM.'</FONT>'."\n";
}
## HTML部分(タイトル・フォーム)の表示

echo $Header.$PBody.'<DIV ALIGN="right"><A HREF="'.BURL.'">'.BMES.'</A>';
書き換え→    $HcList .= ' CLASS="checkform"><FONT COLOR="#'.$value.'">'.HGM.'</FONT>'."\n";
}
## 追加発言色一覧
require_once('colorlist2.php');//追加色ファイル読み込み
$HcList2 = "";
foreach ($Hcolor2 as $value) {
list($value, $nvalue) = explode('<>', $value);
    $HcList2 .= '<INPUT TYPE="radio" NAME="hcl" VALUE="'.$value.'" ';
    if (stristr ($HTTP_USER_AGENT, 'MSIE') and stristr($HTTP_USER_AGENT, 'Windows')) {
        $HcList2 .= 'onClick="rcol(this.value)"';
    } else {
        $HcList2 .= 'onClick="document.F.hc.value=this.value"';
    }
    $HcList2 .= ' CLASS="checkform"><FONT COLOR="#'.$value.'">'.HGM.$nvalue.'</FONT>'."\n";
}

## HTML部分(タイトル・フォーム)の表示
echo $Header.$PBody.'<DIV ALIGN="right"><A HREF="'.BURL.'">'.BMES.'</A>';

102行:追加色窓表示のためのリンク
 '.$HcList.'<BR>
書き換え→ '.$HcList.'<BR><ul id="added"><li>'.$HcList2.'</li>追加色</ul>

■pbschat.css
どこでもいいので以下を追加。 重要なのは赤字部分ほぼのみ。↓ままなら見本画像と同じ形の窓になります。

追加→ /*追加色テーブル*/
ul#added {/*窓収納時の表示*/
    text-align: right;
    font-size: 106%;
    position: fixed;
    bottom: 0.5em; right: 0;
    background-color:rgba(250,250,250,1.0);
    width: 4em;
    border:double 5px #333;
}

ul#added li {/*マウスが乗って無い時は窓を隠す*/
    display: none;

}
ul#added:hover, ul#added:hover li{/*小窓*/   
    display: block;

    background-color:rgba(250,250,250,0.8)
    padding: 0.2em;
    width: 76%;
}



■colorlist2.php
自動生成する機能は今のとこないので、適当にテキストエディタで

<?php
$Hcolor2[] = 'cc0000<>red';
$Hcolor2[] = '0000cc<>blue';
$Hcolor2[] = '00cc00<>green';

?>

上記内容のファイルを作成し、ファイル名をcolorlist2.phpとして保存。後、pbschat.phpと同一のフォルダに突っ込んでください。
色を追加する場合は、下部”?>”より前に

$Hcolor2[] = 'hex(#抜きで)<>色名';
こんな書式で足していきます。


以上。

おまけ
文字コードはUTF8です。ファイル形式をphpに変えてください。ちゃんとテストしていないのでまずいところは直してくださるとありがたい

さらにおまけ
こういうの。
改造対象はset.phpとpbschat.cssのみです。

set.php 266行付近”ログ表示”以下
$Emes1 変数をechoしてる行の頭に改行タグ追加※お好みで
297行付近のFONT COLOR=\"#$lhcが入ってるecho行の頭にid付きのdiv追加。fontタグにもid付ける
例:echo "<div id=\"box\"><FONT COLOR=\"#$lhc\" id=\"name\">";
308行付近のレス本体echoの頭にspanとspanとdivの綴じタグ
例:echo "<span id=\"script\">".$lhg.$hgcolor."</span></div>";
退室の<hr size=1>を改行に変更※お好みで

pbschat.cssに下記追加
#box {//レス全体覆うテーブル
display:flex;
width:98%;
margin:0.5em 0;
}

#name {//発言者名部分
width:4em;
min-width:4em;
display:inline-block;
text-align:center;
text-shadow:1px 1px 4px rgba(5,10,0,0.4);
}

#script {//吹き出し本体
background_color:white;
border-radius: 10px;
border:solid 1px black;
padding:0.2em 0.5em 0.2em 0.2em;
display:inline-block;
width:auto;
height:auto;
min-height:1.1em;
}

#script::before{//吹き出しの飾り
  content: '';
  position: relative;
  display: inline-block;
  width: 0;
  height: 0;
  left: -0.5em;
  top:-2px;
  border-right:0.5em solid #FFFCF7;//チャット背景色と同じ色
  border-top: 0.5em solid transparent;
  border-bottom: 0.5em solid transparent;
}

以上です。

0 件のコメント:

コメントを投稿