|
#============================================================================================================ |
|
# |
|
# 拡張機能 - ランダム1001 |
|
# 0ch_random1001.pl |
|
# --------------------------------------------------------------------------- |
|
# > ・ランダム1001 |
|
# > ・$type == 16で |
|
# > ・$sys->_NUM_ >= $sys->RESMAXがtrueならば |
|
# > ・$form->subject = "\n".chomp(1000.txtに相当するデータ) |
|
# > ・$sys->RESMAX += 2 |
|
# > ・vara.plのWriteに戻ると… |
|
# > ・$data、$lineを組み立てる時に、いい具合に2行になるはず |
|
# > ・本文のDirectAppend時に、1001も同時に書き込まれるはず |
|
# > ・その後dat実際のレス数を取得するので、subjectのレス数はちゃんとなる |
|
# > ・本来の$sys->RESMAXを1オーバーするが、一時的に+2してあるので、「# datにOVERスレッドレスを書き込む」のブロックは実行されない |
|
# > ・DirectAppendをごにょごにょすればプラグインとして実装できると頭に降ってきた |
|
# > ・vara.plを読みながら書いてみたけど、抜けが無いとも限らないので気をつけて |
|
# 以上、dekisugiのメモより。 |
|
# せっかくなので熱が冷めないうちに、今から実装してみる。 |
|
# |
|
# あとがき: |
|
# whileを書こうとしてるあたりで飽きてきた^^; |
|
# 一応 perl -cw は通ったよ? |
|
# --------------------------------------------------------------------------- |
|
# 2019.09.29 start |
|
# 2021.11.21 動いてなかったので修正。ついでに余計なところを消しました。 |
|
# |
|
#============================================================================================================ |
|
use strict; |
|
# use warnings; |
|
|
|
package ZPL_random1001; |
|
|
|
#------------------------------------------------------------------------------------------------------------ |
|
# コンストラクタ |
|
#------------------------------------------------------------------------------------------------------------ |
|
sub new |
|
{ |
|
my $this = shift; |
|
my ($obj); |
|
|
|
$obj = {}; |
|
bless $obj, $this; |
|
|
|
return $obj; |
|
} |
|
|
|
#------------------------------------------------------------------------------------------------------------ |
|
# 拡張機能名称取得 |
|
# ------------------------------------------------------------------------------------- |
|
# @return 名称文字列 |
|
#------------------------------------------------------------------------------------------------------------ |
|
sub getName |
|
{ |
|
my $this = shift; |
|
return 'ランダム1001'; |
|
} |
|
|
|
#------------------------------------------------------------------------------------------------------------ |
|
# 拡張機能説明取得 |
|
# ------------------------------------------------------------------------------------- |
|
# @return 説明文字列 |
|
#------------------------------------------------------------------------------------------------------------ |
|
sub getExplanation |
|
{ |
|
my $this = shift; |
|
return '1001をランダムにします'; |
|
} |
|
|
|
#------------------------------------------------------------------------------------------------------------ |
|
# 拡張機能タイプ取得 |
|
# ------------------------------------------------------------------------------------- |
|
# @return 拡張機能タイプ(スレ立て:1, レス:2, read:4, index:8, 書き込み前処理:16) |
|
#------------------------------------------------------------------------------------------------------------ |
|
sub getType |
|
{ |
|
my $this = shift; |
|
return (16); |
|
} |
|
|
|
#------------------------------------------------------------------------------------------------------------ |
|
# 拡張機能実行インタフェイス |
|
# ------------------------------------------------------------------------------------- |
|
# @param $sys MELKOR |
|
# @param $form SAMWISE |
|
# @param $type 実行タイプ |
|
# @return 正常終了の場合は0 |
|
#------------------------------------------------------------------------------------------------------------ |
|
sub execute |
|
{ |
|
my $this = shift; |
|
my ($sys, $form, $type) = @_; |
|
|
|
my $resmax = $sys->Get('RESMAX'); |
|
|
|
if ($sys->Get('_NUM_') >= $resmax) { |
|
my @list; |
|
while (my $line = <DATA>) { |
|
$line =~ s/\x0d?\x0a?\z//; |
|
$line =~ s/!RESMAX!/$resmax/g; |
|
$line =~ s/!RESMAX1!/$resmax+1/eg; |
|
push @list, $line if ($line); |
|
} |
|
|
|
$form->Set('subject', "\n".$list[int(rand @list)]); |
|
|
|
$sys->Set('RESMAX', $resmax+2); |
|
} |
|
|
|
return 0; |
|
} |
|
|
|
#============================================================================================================ |
|
# Module END |
|
#============================================================================================================ |
|
1; |
|
|
|
__DATA__ |
|
!RESMAX1!<><>Over !RESMAX! Thread<>このスレッドは!RESMAX!を超えやがりました。<br>これ以上書けないから、新しいスレッドを立てやがってください。<> |
|
!RESMAX1!<><>Over !RESMAX! Thread<>あかりだよぉ~<br>!RESMAX! になったよ~<br>新しいスレッドを立ててねぇ~<> |