Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #============================================================================================================
- #
- # 拡張機能 - ランダム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
- #
- #============================================================================================================
- use strict;
- # use warnings;
- package ZPL_random1001;
- #------------------------------------------------------------------------------------------------------------
- # コンストラクタ
- #------------------------------------------------------------------------------------------------------------
- sub new
- {
- my $this = shift;
- my ($Config) = @_;
- my ($obj);
- $obj = {};
- bless $obj, $this;
- if (defined $Config) {
- $obj->{'PLUGINCONF'} = $Config;
- $obj->{'is0ch+'} = 1;
- }
- else {
- $obj->{'CONFIG'} = $this->getConfig();
- $obj->{'is0ch+'} = 0;
- }
- 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);
- }
- #------------------------------------------------------------------------------------------------------------
- # 設定リスト取得 (0ch+ Only)
- # -------------------------------------------------------------------------------------
- # @param なし
- # @return 設定ハッシュリファレンス
- # \%config = (
- # '設定名' => {
- # 'default' => 初期値, # 真偽値の場合は on/true: 1, off/false: 0
- # 'valuetype' => 値のタイプ, # 数値: 1, 文字列: 2, 真偽値: 3
- # 'description' => '設定の説明', # 無くても構いません
- # },
- # );
- #------------------------------------------------------------------------------------------------------------
- =for
- sub getConfig
- {
- my $this = shift;
- my %config;
- %config = (
- 'testnum' => {
- 'default' => 123,
- 'valuetype' => 1,
- },
- # 'testtext' => {
- # 'default' => 'test',
- # 'valuetype' => 2,
- # },
- );
- return \%config;
- }
- =cut
- #------------------------------------------------------------------------------------------------------------
- # 拡張機能実行インタフェイス
- # -------------------------------------------------------------------------------------
- # @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;
- }
- #------------------------------------------------------------------------------------------------------------
- # 設定値取得 (0ch+ Only)
- # -------------------------------------------------------------------------------------
- # @param $key 設定名
- # @return 設定値
- #------------------------------------------------------------------------------------------------------------
- sub GetConf
- {
- my $this = shift;
- my ($key) = @_;
- my ($val);
- if ($this->{'is0ch+'}) {
- $val = $this->{'PLUGINCONF'}->GetConfig($key);
- }
- else {
- if (defined $this->{'CONFIG'}->{$key}) {
- $val = $this->{'CONFIG'}->{$key}->{'default'};
- }
- else {
- $val = undef;
- }
- }
- return $val;
- }
- #------------------------------------------------------------------------------------------------------------
- # 設定値設定 (0ch+ Only)
- # -------------------------------------------------------------------------------------
- # @param $key 設定名
- # @param $val 設定値
- # @return なし
- #------------------------------------------------------------------------------------------------------------
- sub SetConf
- {
- my $this = shift;
- my ($key, $val) = @_;
- if ($this->{'is0ch+'}) {
- $this->{'PLUGINCONF'}->SetConfig($key, $val);
- }
- else {
- if (defined $this->{'CONFIG'}->{$key}) {
- $this->{'CONFIG'}->{$key}->{'default'} = $val;
- }
- else {
- $this->{'CONFIG'}->{$key} = { 'default' => $val };
- }
- }
- }
- #============================================================================================================
- # Module END
- #============================================================================================================
- 1;
- __DATA__
- !RESMAX1!<><>Over !RESMAX! Thread<>このスレッドは!RESMAX!を超えやがりました。<br>これ以上書けないから、新しいスレッドを立てやがってください。<>
- !RESMAX1!<><>Over !RESMAX! Thread<>あかりだよぉ~<br>!RESMAX! になったよ~<br>新しいスレッドを立ててねぇ~<>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement