SHARE
TWEET

Untitled

a guest Oct 18th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #============================================================================================================
  2. #
  3. #   拡張機能 - ランダム1001
  4. #   0ch_random1001.pl
  5. #   ---------------------------------------------------------------------------
  6. #   > ・ランダム1001
  7. #   >   ・$type == 16で
  8. #   >     ・$sys->_NUM_ >= $sys->RESMAXがtrueならば
  9. #   >       ・$form->subject = "\n".chomp(1000.txtに相当するデータ)
  10. #   >       ・$sys->RESMAX += 2
  11. #   >   ・vara.plのWriteに戻ると…
  12. #   >     ・$data、$lineを組み立てる時に、いい具合に2行になるはず
  13. #   >     ・本文のDirectAppend時に、1001も同時に書き込まれるはず
  14. #   >     ・その後dat実際のレス数を取得するので、subjectのレス数はちゃんとなる
  15. #   >     ・本来の$sys->RESMAXを1オーバーするが、一時的に+2してあるので、「# datにOVERスレッドレスを書き込む」のブロックは実行されない
  16. #   >   ・DirectAppendをごにょごにょすればプラグインとして実装できると頭に降ってきた
  17. #   >     ・vara.plを読みながら書いてみたけど、抜けが無いとも限らないので気をつけて
  18. #   以上、dekisugiのメモより。
  19. #   せっかくなので熱が冷めないうちに、今から実装してみる。
  20. #
  21. #   あとがき:
  22. #   whileを書こうとしてるあたりで飽きてきた^^;
  23. #   一応 perl -cw は通ったよ?
  24. #   ---------------------------------------------------------------------------
  25. #   2019.09.29 start
  26. #
  27. #============================================================================================================
  28. use strict;
  29. # use warnings;
  30.  
  31. package ZPL_random1001;
  32.  
  33. #------------------------------------------------------------------------------------------------------------
  34. #   コンストラクタ
  35. #------------------------------------------------------------------------------------------------------------
  36. sub new
  37. {
  38.     my $this = shift;
  39.     my ($Config) = @_;
  40.     my ($obj);
  41.    
  42.     $obj = {};
  43.     bless $obj, $this;
  44.    
  45.     if (defined $Config) {
  46.         $obj->{'PLUGINCONF'} = $Config;
  47.         $obj->{'is0ch+'} = 1;
  48.     }
  49.     else {
  50.         $obj->{'CONFIG'} = $this->getConfig();
  51.         $obj->{'is0ch+'} = 0;
  52.     }
  53.    
  54.     return $obj;
  55. }
  56.  
  57. #------------------------------------------------------------------------------------------------------------
  58. #   拡張機能名称取得
  59. #   -------------------------------------------------------------------------------------
  60. #   @return 名称文字列
  61. #------------------------------------------------------------------------------------------------------------
  62. sub getName
  63. {
  64.     my  $this = shift;
  65.     return 'ランダム1001';
  66. }
  67.  
  68. #------------------------------------------------------------------------------------------------------------
  69. #   拡張機能説明取得
  70. #   -------------------------------------------------------------------------------------
  71. #   @return 説明文字列
  72. #------------------------------------------------------------------------------------------------------------
  73. sub getExplanation
  74. {
  75.     my  $this = shift;
  76.     return '1001をランダムにします';
  77. }
  78.  
  79. #------------------------------------------------------------------------------------------------------------
  80. #   拡張機能タイプ取得
  81. #   -------------------------------------------------------------------------------------
  82. #   @return 拡張機能タイプ(スレ立て:1, レス:2, read:4, index:8, 書き込み前処理:16)
  83. #------------------------------------------------------------------------------------------------------------
  84. sub getType
  85. {
  86.     my  $this = shift;
  87.     return (16);
  88. }
  89.  
  90. #------------------------------------------------------------------------------------------------------------
  91. #   設定リスト取得 (0ch+ Only)
  92. #   -------------------------------------------------------------------------------------
  93. #   @param  なし
  94. #   @return 設定ハッシュリファレンス
  95. #       \%config = (
  96. #           '設定名' => {
  97. #               'default'       => 初期値,           # 真偽値の場合は on/true: 1, off/false: 0
  98. #               'valuetype'     => 値のタイプ,     # 数値: 1, 文字列: 2, 真偽値: 3
  99. #               'description'   => '設定の説明',   # 無くても構いません
  100. #           },
  101. #       );
  102. #------------------------------------------------------------------------------------------------------------
  103. =for
  104. sub getConfig
  105. {
  106.     my  $this = shift;
  107.     my  %config;
  108.    
  109.     %config = (
  110.         'testnum'   => {
  111.             'default'       => 123,
  112.             'valuetype'     => 1,
  113.         },
  114. #       'testtext'  => {
  115. #           'default'       => 'test',
  116. #           'valuetype'     => 2,
  117. #       },
  118.     );
  119.    
  120.     return \%config;
  121. }
  122. =cut
  123.  
  124. #------------------------------------------------------------------------------------------------------------
  125. #   拡張機能実行インタフェイス
  126. #   -------------------------------------------------------------------------------------
  127. #   @param  $sys    MELKOR
  128. #   @param  $form   SAMWISE
  129. #   @param  $type   実行タイプ
  130. #   @return 正常終了の場合は0
  131. #------------------------------------------------------------------------------------------------------------
  132. sub execute
  133. {
  134.     my  $this = shift;
  135.     my  ($sys, $form, $type) = @_;
  136.    
  137.     my $resmax = $sys->Get('RESMAX');
  138.    
  139.     if ($sys->Get('_NUM_') >= $resmax) {
  140.         my @list;
  141.         while (my $line = <DATA>) {
  142.             $line =~ s/\x0d?\x0a?\z//;
  143.             $line =~ s/!RESMAX!/$resmax/g;
  144.             $line =~ s/!RESMAX1!/$resmax+1/eg;
  145.             push @list, $line if ($line);
  146.         }
  147.        
  148.         $form->Set('subject', "\n".$list[int(rand @list)]);
  149.        
  150.         $sys->Set('RESMAX', $resmax+2);
  151.     }
  152.    
  153.     return 0;
  154. }
  155.  
  156. #------------------------------------------------------------------------------------------------------------
  157. #   設定値取得 (0ch+ Only)
  158. #   -------------------------------------------------------------------------------------
  159. #   @param  $key    設定名
  160. #   @return 設定値
  161. #------------------------------------------------------------------------------------------------------------
  162. sub GetConf
  163. {
  164.     my  $this = shift;
  165.     my  ($key) = @_;
  166.     my  ($val);
  167.    
  168.     if ($this->{'is0ch+'}) {
  169.         $val = $this->{'PLUGINCONF'}->GetConfig($key);
  170.     }
  171.     else {
  172.         if (defined $this->{'CONFIG'}->{$key}) {
  173.             $val = $this->{'CONFIG'}->{$key}->{'default'};
  174.         }
  175.         else {
  176.             $val = undef;
  177.         }
  178.     }
  179.    
  180.     return $val;
  181. }
  182.  
  183. #------------------------------------------------------------------------------------------------------------
  184. #   設定値設定 (0ch+ Only)
  185. #   -------------------------------------------------------------------------------------
  186. #   @param  $key    設定名
  187. #   @param  $val    設定値
  188. #   @return なし
  189. #------------------------------------------------------------------------------------------------------------
  190. sub SetConf
  191. {
  192.     my  $this = shift;
  193.     my  ($key, $val) = @_;
  194.    
  195.     if ($this->{'is0ch+'}) {
  196.         $this->{'PLUGINCONF'}->SetConfig($key, $val);
  197.     }
  198.     else {
  199.         if (defined $this->{'CONFIG'}->{$key}) {
  200.             $this->{'CONFIG'}->{$key}->{'default'} = $val;
  201.         }
  202.         else {
  203.             $this->{'CONFIG'}->{$key} = { 'default' => $val };
  204.         }
  205.     }
  206. }
  207.  
  208. #============================================================================================================
  209. #   Module END
  210. #============================================================================================================
  211. 1;
  212.  
  213. __DATA__
  214. !RESMAX1!<><>Over !RESMAX! Thread<>このスレッドは!RESMAX!を超えやがりました。<br>これ以上書けないから、新しいスレッドを立てやがってください。<>
  215. !RESMAX1!<><>Over !RESMAX! Thread<>あかりだよぉ~<br>!RESMAX! になったよ~<br>新しいスレッドを立ててねぇ~<>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top