罪と罰++二律背反


[[罪罰改造]]

各キャラにアイコンを設定できるようにする
*アイコンパラメータの保存と読み出し [#h701cca1]
**./inc/ore_sub-system.cgi [#l01b7835]
-ユーザファイルからパラメータ名(icon)をキーにして変数$icon_fnに読み込む

 sub hash_data {
 
   # ... ( 省 略 ) ... 
 
   $info_mes = $DAT{'info_mes'};
   $icon = $DAT{'icon'};
 }
-ユーザファイルに保存するデータに$iconを加える

 sub dat_write {
 
   # ... ( 省 略 ) ... 
 
   ,icon;$icon,info_mes;$info_mes,\n";
-info_mesの後ろに追加していたところ、iconが消えてしまう。
現象を追えないので、とりあえず、iconフィールドの場所を変えたところ問題ない。
info_mesの後ろには加えない方がいいのかな?

フォームデコード
-情報画面でポストされる値を変数へセットする

 sub decode {
 
   # ... ( 省 略 ) ... 
 
   $com = $in{'com'};
   $icon_fn = $in{'icon'};
 }
*情報フォームに手を入れる [#g6bc1bcd]
**./inc/ore_sub-infomation_pc.cgi [#q7935344]
 sub infomation_com {
 
   # ... ( 省 略 ) ... 
 
   if($com){
 
     # ... ( 省 略 ) ... 
 
     $info_mes = $com;
   }
   $icon = $icon_fn if($icon_fn);
 
 
   # ... ( 省 略 ) ... 
 
   # ここ付近に追加
   # <input type=text name="icon" class="button2" style="width:360px">
   # テキストボックスの替わりにアイコン選択部分を参照してアイコンの選択を入れる
   <input type=text name="com" class="button2" style="width:360px">
 
   # ... ( 省 略 ) ... 
 
 }

**アイコンの選択部分 [#vac194d8]
+$log .= の直前の行に下を追加
 $select_icon = qq|<select name="icon" style="width:100px" >|;
 for($no=1;$no<11;$no++){             # アイコン番号 001-010 までをループ
   $no0 = sprintf('%03.d',$no);
   if("$no0" eq $icon){               # $icon変数と同じなら選択する
     $select_icon .= qq|<option value="$no0" selected>$no0</option>|;
   } else {
     $select_icon .= qq|<option value="$no0">$no0</option>|;
   }
 }
 $select_icon .= "</select>";
+FORM の中、表示させたいところに$select_iconをいれる。例えば、下のような感じ
 コメントは全角40文字まで。<br>
 <input type=text name="com" value="$info_mes" class="button2" style="width:360px">
 <input type=submit value="ポチッ/更新" class="button2" style="width:100px">
 <input type=reset value="クリア"  class="button2" style="width:40px">
 <br><br>
 $select_icon
 EOM

*表示画面 [#u0fd770e]
**./inc/ore_sub-base_pc.cgi [#x9930bdf]
 sub status{
 
 # ... ( 省 略 ) ... 
 
 $log1.=<<EOM;
 # ステータス表示幅を80%にしてアイコンの空間を空ける
 # <tt class="moji1" >
 <tt class="moji1" style="width:80%;" >
 
 # ... ( 省 略 ) ... 
 
 # 一番下に以下を追加
 $log1 .= qq|<SPAN style="height:100%;">|;
 if($icon ne ''){
 $log1 .= qq|<IMG alt="ICON" src="$imgs/$icon.gif" width="66px" height="80px"
   style="border-style:solid;border-width:1px;border-color:blue;" >|;
 } else {
 $log1 .= qq|<span alt="ICON" width="66px" height="80px"
   style="color:silver;width:66px;height:80px;border-style:solid;border-width:1px
 ;border-color:blue;" >
   NowPrinting|;
 }
 $log1 .= qq|</SPAN>|;
 
*仕上げ。ログインページ ./index.cgi [#r0d45c5e]
プレイ中の参加者のところにアイコンを付加する

 # 参加者データ一括読み込み
 sub read_data_index{
 
   # ... ( 省 略 ) ... 
 
   foreach(0 .. $#tdat){
     %DAT = '';
     my @prats = split(/,/,$tdat[$_]);
     foreach $prats (@prats){			
       my($key,$v) = split(/;/,$prats);
       $DAT{$key} = $v;
     }
     # 現在のプレイヤー抽出
     if($player_now>=$time-$DAT{'la'}){
       if($mv_mode eq 'pc'){
         
         # ここから変更箇所
 
         if ($DAT{'icon'} ne '') {
 $icon_text = qq|<span>
 <IMG src="$imgs/$DAT{'icon'}.gif" style="width:40px;border-style:none;"></span>|;
         } else { 
           $icon_text = qq|<span style="width:40px;"></span>|; 
         }
 $now_nm .= ($DAT{'sogo'}) ? qq|<div style="color:$color[$DAT{'camp'}]">
 $icon_text
 <span style=height:100%;>$DAT{'nm'} [$sogo_p[$DAT{'sogo'}]] [$cmp[$DAT{'camp'}]]/$DAT{'info_mes'}<hr></span>
 </div>| : qq|<div style="color:$color[$DAT{'camp'}]">
 <span>$icon_text
 <span style="height:100%;">$DAT{'nm'} [$cmp[$DAT{'camp'}]]/$DAT{'info_mes'}<hr></span>
         </div>| ;
      }else{
 
   # ... ( 省 略 ) ... 
 
*修行・対戦相手 [#e8834e10]
**./inc/ore_sub-training_pc.cgi [#f99bbb9d]

 sub sele_list
 
   # ... ( 省 略 ) ... 
 
   # アイコン読み込み
   $CP_V{$R{'nm'}}         = $R{'camp'};   # 所属
   $SG_V{$R{'nm'}}         = $R{'sogo'};   # 称号
   $N_M{$R{'nm'}}          = $R{'id'};             # ID
   $ICON_V{$R{'nm'}}       = $R{'icon'};   #ICON
 
   # ... ( 省 略 ) ... 
 
   #名前の前にアイコンを付加する
   $log .= ($ICON_V{$nm}) ? qq|<IMG src="$imgs/$ICON_V{$nm}.gif" height="40px">| : qq|<span></span>|;
   $log .= "</td><td>";
   # 称号
 
   # ... ( 省 略 ) ... 
 
   #対戦相手
   $ticon  = $VS{'icon'};          # ICON

*掲示板に表示する [#x0bea687]
-park.cgiなど各掲示板ファイルを修正
**アイコンの読み込み [#ud5d0e2b]
        # ログを展開
        open(IN,"$logfile") || &error("Open Error : $logfile");
        local $log_last_flag=0;
 
        while (<IN>) {
                $log_last_flag++;
                # アイコンを$iconに読み込み
                #local($date,$nm,$camp,$com,$sogo,$addr,$host,$agent,$icon) = split(/<>/);
                local($date,$nm,$camp,$com,$sogo,$addr,$host,$agent,$icon) = split(/<>/);
                $icon_img = qq|<IMG src="$imgs/$icon.gif" />| if($icon ne ""); # ※1

** アイコンイメージを表示する [#pe52328f]
                # ↑のちょっと下付近に
                ($mv_mode eq 'mv') ?
                        print qq|$nm:$com [$camp_info[$camp][0] $date]<br>\n|:
                        print qq|<span style="color:$camp_info[$camp][1]">$icon_img$nm : $com </span><span class="date">[ $camp_info[$camp][0] $date ]</span><hr>\n|;  # ※1


**アイコンをログに書き込み [#e904b752]
 #ログの更新処理
 # unshift (@lines,"$date<>$DAT{'nm'}<>$DAT{'camp'}<>$com<>$DAT{'sogo'}<>$addr<>$host<>$agent<>\n");
 unshift (@lines,"$date<>$DAT{'nm'}<>$DAT{'camp'}<>$com<>$DAT{'sogo'}<>$addr<>$host<>$agent<>$DAT{'icon'}<>\n");

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS