劇ぱわ 改造方法

追加コメント

要旨

試合後のコメント欄に試合後以外にもコメントを登録できる様にする。
・コメント入力欄はコメント表示の上に設置する。
・チーム登録されている者以外は、コメント入力できない様にする。(荒らし防止)
・連続してのコメント登録は禁止とする。(荒らし防止)
・gekipawa.iniに「追加コメント」を使用するかの区分を付ける。

追加コメント出来る様にする改造

gekipawa.ini」ファイルをエディタで開きます。
「追加コメントの使用区分」を付けるために任意の場所に下記赤文字部分を追加する。

$ouen_flg = '0'; # 「追加コメント機能」(0:使用する、1:使用しない)

gekipawa.cgi」ファイルをエディタで開きます。
「モード選択部分」を探して下さい。(無編集なら49〜97行)

# 登録処理
if($form{'record'}) { &record; }
if($form{'comment'}){ &comsyori; }
if($form{'delete'}) { require './geki_login.cgi'; &delete; }
if($form{'comdel'}) { &comdelete; }

if($form{'mode'} eq 'game_log') { &game_log; exit; }
if($form{'mode'} eq 'icon_table'){ &icon_table; exit; }

if($form{'sinki_make'}) { &sinki_make; exit; }
if($form{'make_end'}) { &make_end; exit; }
if($form{'kanri'}) { &kanri; exit; }

if($form{'login'}) { require './geki_login.cgi'; &login; exit; }
if($form{'camp_end'}) { require './geki_login.cgi'; &camp_rec; &login; exit; }
if($form{'delekaku'}) { require './geki_login.cgi'; &delekaku; exit; }

if($form{'playkaku'}) { require './geki_login.cgi'; &playkaku; exit; }
if($form{'campin'}) { require './geki_login.cgi'; &campin; exit; }
if($form{'playball'}) { require './geki_game.cgi'; &playlog; exit; }

if($form{'league_rank'}){
     require './geki_else.cgi';
     $no = $form{'no'};
     if($no eq 1){ &play_rank; }
     else { &team_rank; }
     exit;
}
if($form{'point_rank'}) { require './geki_else.cgi'; &point_rank; exit; }

if($form{'kiroku'}){
     require './geki_else.cgi';
     $no = $form{'no'};
     if($no eq 1) { &last_team; }
     elsif($no eq 2) { &last_play; }
     elsif($no eq 3) { &past_rank; }
     elsif($no eq 4 || $no eq 5) { &each_reco; }
     else { &last_kekka; }
     exit;
}

if($form{'rule'}) { &rule; exit; }

⊤

exit;

##### デコード&ローカル変数へ受け渡し

下記赤文字部分を追加する。

# 登録処理
if($form{'record'}) { &record; }
if($form{'comment'}){ &comsyori; }
if($form{'delete'}) { require './geki_login.cgi'; &delete; }
if($form{'comdel'}) { &comdelete; }

if($form{'mode'} eq 'game_log') { &game_log; exit; }
if($form{'mode'} eq 'icon_table'){ &icon_table; exit; }

if($form{'sinki_make'}) { &sinki_make; exit; }
if($form{'make_end'}) { &make_end; exit; }
if($form{'kanri'}) { &kanri; exit; }

if($form{'login'}) { require './geki_login.cgi'; &login; exit; }
if($form{'camp_end'}) { require './geki_login.cgi'; &camp_rec; &login; exit; }
if($form{'delekaku'}) { require './geki_login.cgi'; &delekaku; exit; }

if($form{'playkaku'}) { require './geki_login.cgi'; &playkaku; exit; }
if($form{'campin'}) { require './geki_login.cgi'; &campin; exit; }
if($form{'playball'}) { require './geki_game.cgi'; &playlog; exit; }

if($form{'league_rank'}){
     require './geki_else.cgi';
     $no = $form{'no'};
     if($no eq 1){ &play_rank; }
     else { &team_rank; }
     exit;
}
if($form{'point_rank'}) { require './geki_else.cgi'; &point_rank; exit; }

if($form{'kiroku'}){
     require './geki_else.cgi';
     $no = $form{'no'};
     if($no eq 1) { &last_team; }
     elsif($no eq 2) { &last_play; }
     elsif($no eq 3) { &past_rank; }
     elsif($no eq 4 || $no eq 5) { &each_reco; }
     else { &last_kekka; }
     exit;
}

if($form{'rule'}) { &rule; exit; }
if($form{'ouen'}) { require './geki_else.cgi'; &ouen_syori; } # 追加コメント機能

⊤

exit;

##### デコード&ローカル変数へ受け渡し

「コメント入力部分」を作成します。
gekipawa.cgi」の下記部分を探して下さい。(無編集なら354〜358行目)

&top1;

$c_home =~ s/http:\/\///g; # アドレスの処理

print <<"_EOF_";

下記赤文字部分を追加する。

&top1;

$c_home =~ s/http:\/\///g; # アドレスの処理

# 追加コメント機能 @ouen_pri
if($ouen_flg){ # gekipawa.iniに追加した$ouen_flg
     @ouen_pri = ();
}else{
     $comsize = $comleng * 2;
     @ouen_pri = ();
     $ouen_pri[0] = "<br><br><form action=$cgifile method=$method>\n";
     $ouen_pri[1] = "<table border=1 width=80% cellspacing=0 cellpadding=5>\n";
     $ouen_pri[2] = "<tr align=center><td>\n";
     $ouen_pri[3] = "追加コメント($comleng文字まで)【モラルある使用をして下さい】</td></tr>\n";
     $ouen_pri[4] = "<tr align=center><td>\n";
     $ouen_pri[5] = "<input type=text name=ouencom size=$comsize value=\"ゲーム参加者のみコメントが追加できます!\">\n";
     $ouen_pri[6] = "</td></tr>\n";
     $ouen_pri[7] = "<tr align=center><td>";
     $ouen_pri[8] = "登録されている";
     $ouen_pri[9] = " なまえ <input type=text name=ew_saku size=15 value=$c_saku>\n";
     $ouen_pri[10] = " パスワード <input type=password name=ew_pass size=10 value=$c_pass>\n";
     $ouen_pri[11] = " <input type=submit name=ouen value=\"コメント登録\"></td></tr>\n";
     $ouen_pri[12] = "</table></form><br>\n";
}
# 追加コメント機能 @ouen_pri ここまで

print <<"_EOF_";

「コメント入力画面」を作成します。
gekipawa.cgi」の下記部分を探して下さい。(無編集なら418〜425行目)

</table>
<br><br>
@com_pri
<br>

_EOF_

&footer;

下記赤文字部分を追加する。

</table>
<br><br>
@ouen_pri
@com_pri
<br>

_EOF_

&footer;

「追加コメントファイル書き込み処理」を作成します。
geki_else.cgi」の下記部分を探して下さい。(最後の部分)
(※gekipawa.cgiに設定すると毎回の処理が重くなりますので、geki_else.cgiに設定します。)

}#end league_end

1;

下記赤文字部分を追加する。

}#end league_end

# 追加コメント記入処理
sub ouen_syori{

 if(length($form{'ouencom'}) < 1 || length($form{'ouencom'}) > $comleng * 2){ &error('コメントの長さが正しくないよ。'); }
 if($form{'ouencom'} eq "ゲーム参加者のみコメントが追加できます!"){ &error('コメントを入力してね。'); }

 $ouen_saku = $form{'ew_saku'};
 $ouen_pass = $form{'ew_pass'};
 $ouen_com = $form{'ouencom'};
 $ouen_ew = 0;

 open(US,"$leaguefold/$userfile") || &error('指定されたファイルが開けません。');
 eval 'flock(US,1);';
 @com_users = <US>;
 close(US);
 eval 'flock(US,8);';
 foreach(@com_users) {
  ($com_saku, $com_pass, $com_home) = split /<p>/;
  if($ouen_saku eq $com_saku && $ouen_pass eq $com_pass){
   $ouen_ew = 5;
   $ouen_home = $com_home;
   last;
  }
 }

 if(!$ouen_ew){ &error('ゲーム参加者以外コメント追加出来ないよ。');}

 open(CF,"+<$commentfile") || &error('指定されたファイルが開けません。');
 eval 'flock(CF,2);';
 @comments = <CF>;
 if((split(/<>/, $comments[0]))[1] eq $ouen_saku){ &error('連続で登録はできないよ。'); }
 $kakiko =
  "$ouen_ew<>$ouen_saku<>$ouen_home<>$times<>$ouen_com<><>\n";

 unshift(@comments, $kakiko);
 splice(@comments, $com_max);

 truncate (CF, 0); 
 seek(CF,0,0); print CF @comments;
 close(CF);
 eval 'flock(CF,8);';

}#end ouen_syori

1;

「コメント表示部分」を作成します。
gekipawa.cgi」の下記部分を探して下さい。(無編集なら331〜336行目)
※「管理者コメント追加」の改造を施した場合は、「改造内容の注意事項」を参照して下さい。

if($no){
 if($kekka){ $kekka = "【 $kekka 】"; }
 $com_pri[$i+3] = "■ 劇ぱわニュース : 『 $com 』 $kekka ($date)\n";
}else{
 $com_pri[$i+3] = "□ $saku : 『 $com 』 【 $kekka 】 ($date)\n";
}

下記赤文字部分の様に修正して下さい。

#if($no){
if($no eq 1){
 if($kekka){ $kekka = "【 $kekka 】"; }
 $com_pri[$i+3] = "■ 劇ぱわニュース : 『 $com 』 $kekka ($date)\n";
}elsif($no eq 5){
 $com_pri[$i+3] = "★ $saku : 『 $com 』 ($date)\n";
}else{
 $com_pri[$i+3] = "□ $saku : 『 $com 』 【 $kekka 】 ($date)\n";
}

改造内容の注意事項

「comment.dat」ファイルに記録されるコメントの区分
「0」試合後の監督コメント
「1」劇ぱわニュース
「5」追加コメント(新設)
「9」管理者コメント(「管理者コメント追加」)

管理者コメント追加」をしている場合、「コメント表示部分」の成形が微妙に違いますので戸惑うかもしれません。
基本的には片方のみ改造しても、両方改造しても支障の無い様になっています。
両方改造した場合は、下記の様になります。

  print "<tr><td bgcolor=\"FFFFFF\">\n";
#  if($no){
#   if($kekka){ $kekka = "【 $kekka 】"; }
#   print "<input type=checkbox name=del$i value=$i> 劇ぱわニュース : 『 $com 』 $kekka ($date)\n";
  if($no eq 1){
   if($kekka){ $kekka = "【 $kekka 】"; }
   print "<input type=checkbox name=del$i value=$i> 劇ぱわニュース : 『 $com 』 $kekka ($date)\n";
  }elsif($no eq 5){
   $com_pri[$i+3] = "★ $saku : 『 $com 』 ($date)\n";
  }elsif($no eq 9){
   print "<input type=checkbox name=del$i value=$i> ★ 管理者 : 『 $com 』 ($date)\n";
  }else{
   print "<input type=checkbox name=del$i value=$i> $saku : 『 $com 』 【 $kekka 】 ($date)\n";
  }
  print "</td></tr>\n";

「劇ぱわ」の下部著作権部分へのリンクを貼る方法

##### 著作権表示
sub chosaku{
  print <<"_CHOSAKU_";
  </center>
  <hr size="1">
  <div align="right">
    <a href="http://homepage2.nifty.com/osktaka/" target="_blank" title="気ままなまま">
      <font size="2">劇空間ぱわふるリーグ2 ver 3.00b (Free)</font>
    </a>
  </div>
  <div align="right">
    <a href="http://ryoquest.sakura.ne.jp/" target="_blank" title="改造:「野良猫のCGI講座」Take it easy !">
      <font size="2">改造:「野良猫のCGI講座」Take it easy !</font>
    </a>
  </div>
  <!--広告バナー挿入位置、ページ下部-->
  </body>
  </html>
  _CHOSAKU_
}#end chosaku

前後の内容

CGI/perl劇ぱわ俺ペナ
不具合対策改造方法
管理者コメント追加追加コメントキャンプでアイコン変更

【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents

『野良猫のCGI講座』は、
【劇ぱわ改造設置支援サイト】Take it easy ! RYOQUEST presents のコンテンツとして、虎猫が公開しています。

「劇空間ぱわふるリーグ2 ver 3.00b(劇ぱわ)」は、
きままなまま』で管理人にーやん様が作成・無料配布されているCGI/Perlによる野球ゲームです。

参考にされた方は、当サイトへリンクを貼って下さい♪
サイト名:Take it easy ! RYOQUEST presents
(サイト名:Take it easy !
URL:http://ryoquest.sakura.ne.jp/
バナーURL:http://ryoquest.sakura.ne.jp/image/tie_8831an.gif
Take it easy !

『旧:野良猫のCGI講座』

以前の『野良猫のCGI講座』をご覧になりたい方は、『旧:野良猫のCGI講座』からアクセスして下さい。
但し、更新は一切していません。

ページのトップへ戻る