山形蔵(ry のSecond channel Zone - (旧 東北高規格道路実走調査会サブページ)「★新潟の道路★」スレまとめサイト(・∀・)?大学生活板&司法試験板>N速VIP的新機能「VIP クオリティ」

2ch型掲示板用 perl Library

N速VIP的新機能「VIP クオリティ」

Special Thanx to YYkakiko, Level3-BBS Script, 0ch BBS Script and 2ch BBS

このライブラリは、ニュース速報(VIP)2ch掲示板に実装されていた伝説の機能」の一部半数以上(+一部独自機能)
Level3-BBS Script(配布停止中)及び0ch BBS Scriptで使用可能にするライブラリです。

Level3-BBSではbbs.cgiの特殊機能処理に、0ch BBSではbbs.plもしくはvarda.plのメッセージの書き込み処理に割り込んで機能を実現します。

なお、v1.0からは本文対応版のみの開発となります。

機能の仕様は以下の通りです。

;# ▼サブルーチン仕様
;# Vip_quality::vip_quality(投稿者名,メール欄,日付,本文,bbs.cgiのバージョン,bbs名,スレッドキー,(将来は板のデフォルト名無しを追加予定));
;# 	サブルーチンに渡された投稿内容に対して、ニュース速報(VIP)@2ch掲示板の
;# 	伝説の機能1〜3の多くの機能をを適用し(ships.cgiファイルの保存あり)、その処理結果を返す。
;# 戻り値:投稿者名,本文,日付,メール欄
;#
;# Vip_quality::vip_quality_new_treed(投稿者名,bbs名,スレッドキー);
;# 	サブルーチンに渡された投稿者名内容の中から、ニュース速報(VIP)@2ch掲示板の
;# 	伝説の機能1の名無し制御に関する部分を抜き取って第2スレッド情報ファイル(スレッドキー.pl)に保存し、
;# 	残りの部分を返す。
;# 戻り値:投稿者名
;#
;# ※基本的には他の2ch型掲示板でも値をちゃんと渡して受け取れるように設定すれば使えるはずです。
;#
;# v1.0よりlite版の開発を終了しました。
;# lite版っぽく使いたい人は引数および戻り値の本文の部分を適当な変数($null等)に変えて使用して下さい。
;#
;#
;# ▼ディレクトリ構成
;# 掲示板ルートディレクトリ
;#        |
;#        +--掲示板ディレクトリ(各板のindex.html等があるディレクトリ)/ ships.cgi(自動生成)
;#        |           |
;#        |           +--dat(datデータ等が置かれます)/ 1000000000.pl等の第2スレッド情報ファイル(自動生成/不定期的に削除して下さい)
;#        |
;#        +--bbs.cgiのあるディレクトリ(大抵の場合はtest)/ Vip_quality.pl(Level3-BBSで使用する場合)←注目!
;#                  |
;#                  +--setting(Level3-BBS Scriptの場合は管理スクリプト等で使用する設定ファイルがここに置かれます)/
;#                  |     |
;#                  |    +--vip_quality/ base.cgi, body.cgi, do.cgi, 3do.cgi, etc.cgi, expo.cgi, food.cgi, kakari.cgi, kote.cgi, mibun.cgi, omikuji.cgi, poke.cgi, sute.cgi, where.cgi, 3where.cgi, who.cgi
;#                  |                   (足りないファイルおよびanime.cgi, user1.cgi, user2.cgi, user3.cgiは利用者側で用意)
;#                  |
;#                  +--module(varda.plのあるディレクトリ)/ Vip_quality.pl(0ch BBSで使用する場合)←注目!
;#                  |
;#                  +--plugin(0ch BBS 機能拡張プラグイン置き場)/ 0ch_vip_quality.pl, 0ch_vip_quality_new_treed.pl(0ch BBS人柱版使用時に簡単モードで設置する場合のみ)
;#
;#
;# ▼機能詳細
;# 	▽伝説の機能1
;# 	▼スレ立て時の設定 !774!3(第2スレッド情報ファイル(1000000000.plなど)を使用)
;# 	!774!force!normal!3 だとそのスレは全ての機能無効($setting{'valid'}を"v00000"にしちゃいます)
;# 	!noid そのスレッドはIDなし(!forceと併用しないと使えない。)(拡張モードのみ)
;# 	!sage そのスレッドは強制sage(!forceと併用しないと使えない。)
;# 	!force 名前欄は何か入れても、********* で上書き
;# 	(!774!noid!force********!3 でそのスレはID無しで名無しが強制的に********になる。)
;# 	▼コードは全て名前欄に記入すること−
;# 	@RRGGBB@ 色替え(RR,GG,BBのところにカラーコードを16進で入力。名前欄の先頭に記入すること。)
;# 	!omikuji おみくじ 【神】の上に【女神】がある。ただしめったにでない
;# 	!ver bbs.cgi/bbs.plのバージョン情報
;# 	!tt 本文文字が<tt>タグで囲まれる(多くの場合小さくなる)
;# 	!pre 本文文字が<pre>タグで囲まれる(等幅フォントになるためAAのずれに注意)
;# 	▼以下のコードは本文でも反映する。
;# 	!power 数字が出る0〜999(4桁もあり)
;# 	!hungry 食事がランダムで表示される
;# 	!food 食事がランダムで表示される
;# 	!who 人物(動物等も)がランダムで表示される
;# 	!where 場所がランダムに表示される
;# 	!do 動詞(行動)がランダムで表示される
;# 	!num 1桁の数字が斜体で出る
;# 	!sign 符号が出る(+か-がランダムで)
;# 	!money ランダムな通貨単位
;# 	!year・!mon・!day・!hour・!min・!sec 年・月・日・時・分・秒(拡張モードのみ)
;# 	!when・!whena・!whenb 今とかがランダムで
;# 	!body 体の一部分 
;# 	!base 打席の結果がランダムで表示される(独自拡張あり)
;# 	!calc +−×÷=のうちのいずれかがランダムに出る
;#
;# 	▽伝説の機能2
;# 	▼コードは全て名前欄に記入すること−
;# 	!omikuji おみくじ 【神】の上に【女神】がある。ただしめったにでない(拡張モードのみ)
;# 	!dama お年玉 たまにたくさんもらえることも(拡張モードのみ)
;#
;# 	▽伝説の機能3
;# 	◆名前で有効 
;# 	◎IPで毎回固定
;# 	!IQ    IQ
;# 	!kote  コテ
;# 	◎毎回変更
;# 	!kakari 係り
;# 	!sute  コテ
;# 	◆どちらでも有効
;# 	!mibun  身分
;# 	!anime アニメキャラ
;# 	◆レス欄で有効
;# 	!card トランプ
;# 	!do  動作(伝説の機能1との衝突を避けるため実際は!3doでの動作になります))
;# 	!mibun  身分
;# 	!where  場所(伝説の機能1との衝突を避けるため実際は!3whereでの動作になります)
;# 	◆船ゲーム(レス欄で有効)
;# 	!create Yamato  船を作る、Yamatoは自分の船の名前、IQが低いと作れない
;# 	!attack Yamato 攻撃、Yamatoは攻撃先の船に直す
;# 	!list         船一覧
;#
;# 	▽伝説の機能独自版
;# 	▼コードは全て名前欄に記入すること−
;# 	tasukeruyo 運用情報板の機能 fusianasan+HTTP_USER_AGENT+SERVER_PROTOCOL
;# 	▼以下のコードは本文でも反映する。
;# 	!expo 愛知万博のパビリオンや飲食店などがランダムで表示される ささしまサテライトも収録
;# 	!yakyu 三振とかバントホームランとか
;# 	!poke ポケモンの種族名(w がランダムで表示される
;# 	!whenc 日時とかがランダム表示される
;# 	!etc 「オレ、第B京浜 60km  外環 某入口 50km じゃ」の改変コピペを表示
;# 	!user1 ユーザー独自設定内容を表示その1
;# 	!user2 ユーザー独自設定内容を表示その2
;# 	!user3 ユーザー独自設定内容を表示その3
;# 
;# !money、!sign、!calc、!num、!base、!whena、!whenb、!when、!who、!body、!hungry、!food、!do、!where、!power、!year、!mon、!day、!hour、!min、!sec、!mibun、!where、!card、!do、!anime、!expo、!yakyu、!poke、!whenc、!etc、!user1、!user2、!user3は複数回使用可能
;# 複数回使用可能なコードおよび船ゲームなどのファイルを扱い負荷のかかる機能は、基本設定で設定した回数券発行枚数まで使用可能。
;#
;#
;# ▼コードの優先順位(というか処理順序)
;# 伝説の機能1(名無し制御) > 伝説の機能1(それ以外) > 伝説の機能2 > 伝説の機能3 > 伝説の機能独自版
;# 伝説の機能1(名無し制御)内の設定
;# !774!normal!3 > !774!force!noid!3 > !774!force!sage!3 > !774!forcename!3
;# 
;# 伝説の機能1(それ以外)内の設定
;# @******@ = !omikuji = !ver = !tt = !pre
;# > !money > !sign > !calc > !num > !base > !yakyu> !whena
;# > !whenb > !when > !who > !body > !hungry = !food > !do
;# > !where > !power> !year > !mon > !day > !hour > !min > !sec
;#
;# 伝説の機能2内の設定
;# !omikuji = !dama
;#
;# 伝説の機能3内の設定
;# !IQ > !kote > !kakari > !sute
;# !mibun > !where > !card > !do > !anime > !create Yamato = !list > !attack Yamato
;#
;# 伝説の機能独自版内の設定
;# tasukeruyo > !expo > !yakyu > !poke > !whenc > !etc > !user1 > !user2 > !user3
;#
;# 1回しか使えない機能は優先順位高く(船ゲームを除く)、複数回使える機能は順位が低い。
;# @******@、!omikuji、!ver、!tt、!pre、!omikuji、!dama、!IQ、!kote、!kakari、!sute、tasukeruyoは
;# 1回しか使えないが、使用した機能の個数に含まれない(船ゲームを除く)。
;# ※本文入力可能なコードをコピペ可能なテンプレとして表示させるには。
;# 先頭に
;# !money!money!money!money!money!money!money!money!money!money!money!money!money!money!money!money!money!money
;# と(回数券発行枚数より多くの)コードを打ってからテンプレを貼ると優先順位の関係で、きちんと表示される。


ライブラリを作ってみるまで

全てはここから始まった

■ VIP に伝説の機能をつけよう。。。
1 名前: FOX ★ 投稿日: 04/09/05 07:34 ID:???
伝説の機能って何があったっけ? 

ハンマー投げ? 

次々増える機能

■ VIP に伝説の機能をつけよう。。。10
1 名前: 以下、名無しにかわりましてVIPがお送りします 投稿日: 04/09/06 18:55:21 ID:ぅたっべぞぬぅわ
新機能まとめ 

・秒数表示 
 時刻が秒数まで表示されるようになった。 
・IDを平仮名に変更 
・トリップも平仮名に変更 
 !htrip 
・1001の変更 
 VIPクオリティのAAに。テンション高めな感じ。 
・名無しコントロール 
 スレを立てる時に名前欄に!774ほにゃらら!3と入れて立てると 
 そのスレでのデフォルト名無しがほにゃららになる。 
 うまく行っていれば 
 !uptime !power !omikuji 使えます 
 !noid そのスレッドはIDなし、 
 !force 名前欄は何か入れても、********* で上書き 
・おみくじ:名前欄に!omikuji 
 運勢が表示される。ただの駄洒落もある。 
・LA表示:名前欄に!uptime 
 LA=Load Average。大きければ大きいほど鯖に負荷が掛かっているということ。 
 どうやらこの数値らしい。 
 http://ch2.ath.cx/load/ex7.html 
・戦闘力:名前欄に!power 
 Levelが表示される。お遊び用。 
・bbs.cgiのバージョン情報?表示 
 !version 

ちょっと作ってみた

■ VIP に伝説の機能をつけよう。。。30
22 名前: 書記長 amiと クマー amiは 音楽室 投稿日: 04/09/08 01:44:44 ID:CNCTP9wM
ころころ変更されると仕様を追うのが大変だ・・・。 
(ぬるぽ板でも一部実装作業中w) 

そして本公開へ

■ VIP に伝説の機能をつけよう。。。32
252 名前: 山形蔵(yr ◆EXPwYoDqN2 [sage] 投稿日: 04/09/11 03:58:05 ID:6eM3cRGK
>>246 
ファイルを読み込む前に乱数発生範囲を決定してしまう不具合があったので修正しておきました。 

最終版は↓のサイトに常に置いておきます。 
http://tgu-log.hp.infoseek.co.jp/vip_quality.html 

さて、このライブラリの話は一応スレ違い&板違いなので、 
ここにこのネタを自ら出すのは今回を最後にさせて頂きます。 
サポート等はNullReferenceException板(通称ぬるり板 http://www2.nullpo.org/) 
にて行いますのでどうぞよろしくお願いします。 

3\.         / 
2―[ 9 ][ 0 ][ 5 ]― 
1―[ 6 ][ 3 ][ 2 ]― 
2―[ 2 ][ 8 ][ 2 ]― 
3/.         \ 


だうんろーど&さぽーと

vip_quality_v110.zip(27KB) new!

vip_quality_l_v050.zip(lite版=旧 本文置換対応版)(18KB)

更新履歴&旧版

サポート掲示板(NullReferenceException@TGU-BBS)


今後搭載予定の機能?

ってか・・・開発は続くのか?

気が向いたら組み込んじゃうかも(w

▼以下のコードは本文でも反映する。
!ita 2chのどっかの板の名前 (配列リストがかなり大きくなりそう・・・w)
!default どっかの板の名無し (配列リストがかなり大きくなりそう・・・ww)
!coin 表 / 裏 をランダム表示 (符号ランダム表示じゃだめなの?)
!dice 1〜6 までの数字をランダム表示 (!numや!powerの上限設定でどうにかなるのに・・・w)
!d12 1 〜 12 までの数字をランダム表示 (!numや!powerの上限設定でどうにかなるのに・・・ww)
!d20 1〜20 までの数字をランダム表示 (!numや!powerの上限設定でどうにかなるのに・・・www)
!how 「どうした」 (似た機能として!doがあるけど)
!music 「音楽ジャンル」 
!three 「スリーサイズ」 
!car 「車の種類」 
!weapon 「武器の種類」 
!mahjong ランダムな役 
!soprt ランダムなスポーツ 
!col 赤・青・黄など、色を表す文字 
!place 地名 
!country 国名 


こんな機能をライブラリに搭載するのは(自分には)ちょっと無理かも

Level3-BBS/0ch BBSどっちも無理ぽ

!uptime 鯖負荷情報(どっから取得すればいいんだろう?) 
!serial 1時間ごとの書き込み回数(どうやって情報集めよう?)  
!htrip トリップをひらがなに(cryptでひらがな文字列生成かよorz)

Level3-BBSなら作れそうかな?

▼スレ立て時の設定(この辺りの機能は第2スレッド情報ファイル(1000000000.plなど)を用意する必要があるかな?)
!774********!3 スレッドを立てる時に記入するとそのスレのデフォルト名無しが********になる。 
(********の中には上記の!omikuji等の要素も使えるとのこと) 
→0ch BBSではデフォルト名無し設定後にライブラリの処理が入るので難しい。

それはbbs.cgiやmoduleディレクトリにあるライブラリを直接いじるべきではないか?

・秒数表示 
 時刻が秒数まで表示されるようになった。 
0ch BBSの場合はgaladriel.pl(varda.plと同じディレクトリにあります)の655行目にある 
$date = "$year/$mon/$mday $hour:$min"; 
という文を
$date = "$year/$mon/$mday $hour:$min:$sec"; 
に書き換えてやれば良い感じ。

Lv3-BBSの場合はbbs.cgiの132行目にある
$DATE = sprintf("%04d/%02d/%02d(%s) %02d:%02d",$year + 1900, $mon + 1, $mday, $wday, $hour, $min); 
の部分を 
$DATE = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wday, $hour, $min, $sec); 
に書き換えよう。

・1001の変更 
 VIPクオリティのAAに。テンション高めな感じ。 
2chでは
my $p1000 = $PATH . "1000.txt";
if(open(PDATA1000,"$p1000"))
{
print OUT ;
close(PDATA1000);
}
else
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 
もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n"; } というソースで対応しているようだがこれをどう組み込むか。 0ch BBSでは1001の変更が標準対応になりました。

_

_


戻る


copyright © 2004 山形蔵(ry ◆EXPwYoDqN2 All Rights Reserved. <2ch-tgu-log@104.net>
仮作成日 平成16年(2004年)9月11日  (最終更新