不具合の修正 - Ver b1.0

設置支援ページへ

  1. KCatchが常にインポートされる不具合の修正
  2. 顔画像関連の不具合修正
  3. コメント関連の不具合修正
  4. リスト関連の不具合修正
  5. 街移動関連の不具合修正
  6. オーブ関連の不具合修正
  7. 戦闘関連の不具合修正
  8. 荷物関連の不具合修正
  9. その他の不具合修正
  10. ちょっとしたこと


  1. KCatchが常にインポートされる不具合の修正

    設定で $kpm = 0; としてもKCatchが呼び出される(KCatchがないとエラーになる)不具合を修正します。

    sos3.cgi, master.cgiを開く
    if ($set::kpm) { use KCatch qw( source ) }
    ↓
    if ($set::kpm) { require KCatch; import KCatch qw( source ) }
    

    【トップへ戻る】



  2. 顔画像関連の不具合修正

    新規登録時に顔画像が出ない不具合を修正します。

    library/new.cgiを開く
    sub new_before:
        $F{im} ||= "1.$set::cit";
    ↓
        $F{im} ||= "$F{sx}1.$set::cit";
    

    顔画像リストが表示されない不具合を修正します。

    javascript/Reload.js, Set.jsを開く
    Set.js: Reload.js から function GetObject をコピペ
    function GetObject(id,target) {
        if (document.getElementById) { target = target.document.getElementById(id) }
        else if (navigator.appName.charAt(0) == "M") {
            if (document.all) { target = target.document.all(id) }
        }
        else if (navigator.appName.charAt(0) == "N") {
            if (document.layers) { target = target.document.layers[id] }
        }
        return target;
    }
    
    image.htmlを開く
    GetObject.jsはないので <script language="JavaScript" src="javascript/GetObject.js"></script> を削除。

    あとちょこちょこと
      sex = opener.newform.sx.value;
    ↓
      sex = window.opener.document.newform.sx.value;
    
    ImageDirectory → MainImageDirectory
    

    【トップへ戻る】



  3. コメント関連の不具合修正

    自己紹介設定で、文字数制限がうまくいかない不具合を修正します。

    library/words.cgiを開く
    sub words_after:
            &say(qq|「$_」は全角${"set_wx$i"}文字まで|,'words_before') if length $F{"w$i"} > ${"set_wx$i"} * 2;
    ↓
            &say(qq|「$_」は全角${"set::wx$i"}文字まで|,'words_before') if length $F{"w$i"} > ${"set::wx$i"} * 2;
    

    自己紹介設定で、相手がアイテムを買うときのメッセージが詳細な自己紹介に書き換えられてしまう不具合を修正します。

    library/words.cgiを開く
    sub words_before:
        相手がアイテムを買う時 <tt>全角$set::wx3文字まで (改行可)</tt><br>
        <textarea class=textarea name=w3 cols=40 rows=3>$I->{w2}</textarea><br>
    ↓
        相手がアイテムを買う時 <tt>全角$set::wx3文字まで (改行可)</tt><br>
        <textarea class=textarea name=w3 cols=40 rows=3>$I->{w3}</textarea><br>
    

    【トップへ戻る】



  4. リスト関連の不具合修正

    人口統計のスケジュールでエラーが出たのでその修正をします(人がいれば問題ないと思う)

    library/playerlist.cgiを開く
    sub playerlist_statistics:
        $L->{mp} = int($L->{m} / $L->{tp} * 100);
    ↓
        $L->{mp} = $L->{tp} ? int($L->{m} / $L->{tp} * 100) : 0;
    
        $L->{fp} = int($L->{f} / $L->{tp} * 100);
    ↓
        $L->{fp} = $L->{tp} ? int($L->{f} / $L->{tp} * 100) : 0;
    

    【トップへ戻る】



  5. 街移動関連の不具合修正

    他の地へ移動したときに移動コマンドが変更されない(javascriptエラーになる)不具合を修正します。

    javascript/Reload.jsを開く
    Reload.js: opener. を window.opener.document. に全て置き換え

    【トップへ戻る】



  6. オーブ関連の不具合修正

    探索でオーブを見つけてもユーザーデータに保存されない不具合を修正します。

    library/find.cgiを開く
    sub found:
            if ($Ii->{cl} eq 'Ob') {
                $Ii->{Im} = &orb_image($Ii->{ef});
                &M("$Ii->{Im}$Ii->{nm}を発見しました。");
                $S->{ob} .= $Ii->{ef};
                $S->{Ob} = split(//,$S->{ob});
            }
    ↓
            if ($Ii->{cl} eq 'Ob') {
                $Ii->{Im} = &orb_image($Ii->{ef});
                &M("$Ii->{Im}$Ii->{nm}を発見しました。");
                $S->{ob} .= $Ii->{ef};
                $S->{Ob} = [split(//,$S->{ob})];
            }
    

    オーブのトレードをしようとすると'Reload Lock Error'となる不具合を修正します。

    library/trade.cgiを開く
    sub trade_after:
        &lock($U->{id});
    ↓
        &lock($F{ud});
    

    【トップへ戻る】



  7. 戦闘関連の不具合修正

    戦闘時、プレイヤーデータの保存が行われない不具合を修正します。

    library/fight.cgiを開く
    sub fight_player:
    #    &set_record($V,$I->{Id});
    ↓
        &set_record($V,$I->{Id});
    
    #    &set_user($I);
    #    &set_user($U);
    ↓
        &set_user($I);
        &set_user($U);
    
    コメントアウトを戻すだけ。

    戦闘を仕掛けようとすると『現在、ファイル更新中です。』となる不具合を修正します。

    library/fight.cgiを開く
    sub fight_player:
        # 相手のMy Recordに保存 #
        $V  = "<div class=alert>$Vが戦闘を仕掛けてきた。</div>";
        map { $V .= $_ } @{$I->{M}};
        $I->{Id} = $I->{WN} && $I->{Sk}{Uk} ? '????' : $I->{id};
        &set_record($V,$I->{Id});
    を
        &unlock($F{ud});
    の下へ移動。
    

    戦闘直後でも再戦できてしまう(連戦可能)不具合を修正します。

    library/fight.cgiを開く
    sub fight_player:
    #   &partner('',"$Unmとは暫く戦えません・・・") if @Den;
    ↓
        &partner('',"$U->{nm}とは暫く戦えません・・・") if @Den;
    
    同じくコメントを戻す。

    環境にガードがある地域でも戦闘できてしまう不具合を修正します。

    library/fight.cgiを開く
    sub fight_player:
    #   &partner('',"<img src=$set::mim_dir/envGd.gif><br><br>$I->{Pl}{nm}での戦闘は禁止されています") if $I->{Pl}{ev}{Gd};
    ↓
        &partner('',"<img src=$set::mim_dir/envGd.gif><br><br>$I->{Pl}{nm}での戦闘は禁止されています") if $I->{Pl}{ev}{Gd};
    
    同上。

    対モンスター戦闘後アイテムを入手したと表示されるが荷物に追加されない(プレイヤーデータが保存されない)不具合を修正します。

    library/find.cgiを開く
    sub encounter:
    #    &sort_item($I);
    #    &set_item($I);
    
    #    &set_user($I);
    ↓
        &sort_item($I);
        &set_item($I);
    
        &set_user($I);
    
    これまた。

    対モンスター戦(狩り含む)後所持品がオプションに置き換えられてしまう(所持品が全て消えてしまう)不具合を修正します。

    library/fight.cgiを開く
    sub get_option:
    my ($K,$V);
    ↓
    my ($T,$K,$V);
    
        &get_item($S,2);
        $S->{Op} = shift @{$S->{Bg}};
        return if !$S->{Op}{nm};
        &set_item($S,2);
    ↓
        $T->{id} = $S->{id};
        &get_item($T,2);
        $S->{Op} = shift @{$T->{Bg}};
        return if !$S->{Op}{nm};
        &set_item($T,2);
    

    装備がはじかれたあと、ログインしなおすと装備が外れた状態(荷物は装備中のまま)になる不具合を修正します。

    library/fight.cgiを開く
    sub knock_weapon:
            undef %{$D->{rh}};
            $D->{rh} = '';
    ↓
            undef %{$D->{Rh}};
    
    戦闘中だけ外れるという解釈で修正。

    装備がなくても装備がはじかれるメッセージが出る不具合を修正します。

    library/fight.cgiを開く
    sub knock_weapon:
        if (&roll_dice(100) <= $dice) {
    ↓
        if ($D->{WO} && $D->{WO} != 7 && &roll_dice(100) <= $dice) {
    

    装備が壊れてもステータス画面ではまだ装備中になっている不具合を修正します。

    library/fight.cgiを開く
    sub baggage_check:
            if ($I->{ST} == $i && !$Ii->{Ql}{Sc} && !$F) {
    ↓
            if ($I->{ST} == $i && !$Ii->{Ql}{Sc} && !$F) {
                &reload_data($Ii->{eq});
                &reload_data('of') if $Ii->{eq} eq 'rh';
                &reload_data('df') if $Ii->{cl} eq 'Ar';
    
    
            if ($Ii->{Ql}{Rp}) {
    ↓
            if ($Ii->{Ql}{Rp}) {
                &reload_data($Ii->{eq});
                &reload_data('of') if $Ii->{eq} eq 'rh';
                &reload_data('df') if $Ii->{cl} eq 'Ar';
    
    
            else {
    ↓
            else {
                &reload_data($Ii->{eq});
                &reload_data('of') if $Ii->{eq} eq 'rh';
                &reload_data('df') if $Ii->{cl} eq 'Ar';
    

    【トップへ戻る】



  8. 荷物関連の不具合修正

    使うで死亡中でもアイテムが使用できる不具合を修正します。

    library/use.cgiを開く
    sub use:
        $I = &get_user('I');
        &get_item($I);
    ↓
        $I = &get_user('I');
        &get_item($I);
    
        &dead_check($I,'CLOSE');
    
    蘇生用アイテムがあるとまずいかも。

    城で、所持数に余裕があるのに販売権利書を買えない不具合を修正します。

    library/castle.cgiを開く
    sub castle_after:
            &say("これ以上は重くて持てません",'castle_before') if $I->{bg} + $FI{Dd}{qn} < $I->{Mbg};
    ↓
            &say("これ以上は重くて持てません",'castle_before') if $I->{bg} + $FI{Dd}{qn} > $I->{Mbg};
    

    他プレイヤーから買い物をしても買ったアイテム・ペットが荷物に追加されない不具合を修正します。

    library/buy.cgiを開く
    sub buy_after:
            push (@{$I->{Bg}},$Ui);
    ↓
            my $Ii;
            %$Ii = %$Ui;
    
            push (@{$I->{Bg}},$Ii);
    
    
            push (@{$I->{Pt}},$Up);
    ↓
            my $Ip;
            %$Ip = %$Up;
    
            push (@{$I->{Pt}},$Ip);
    

    【トップへ戻る】



  9. その他の不具合修正

    地図のポップアップのエラーをなんとかします。

    javascript/MapProgram.jsを開く
    function SetMap:
    	target.innerHTML += "<img src=" + MainImageDirectory + "1n.gif id=\"" + para[0] + "\" width=" + para[1] + " height=" + para[2] + " style=\"left:" + para[3] + ";top:" + para[4] + ";position:absolute;\" onMouseOver=\"Information(this.id)\" onMouseOut=\"Information(0)\">";
    ↓
    	target.innerHTML += "<img src=" + MainImageDirectory + "1n.gif id=\"" + para[0] + "\" width=" + para[1] + " height=" + para[2] + " style=\"left:" + para[3] + ";top:" + para[4] + ";position:absolute;\" onMouseOver=\"Information(this.id,event)\" onMouseOut=\"Information(0)\">";
    
    
    function Information:
    function Information(index) {
    ↓
    function Information(index,e) {
    
    
      else { 
    	x = event.pageX;
    	y = event.pageY;
    ↓
      else { 
    	event = e || window.event;
    	x = event.pageX;
    	y = event.pageY;
    
    
    	if (document.layers) {
    ↓
    	else if (document.layers) {
    
    Netscape未対応です(作ったIMGがどっか行ってしまう)

    同一のIPがあっても新規登録できてしまう(多重登録できる)不具合を修正します。

    library/new.cgiを開く
    sub regist_check:
    #        if ($U->{ip} eq $F{ip}) { &say('同一ホストIPを持つプレイヤーが既にいる為新規登録できません') }
    ↓
            if ($U->{ip} eq $F{ip}) { &say('同一ホストIPを持つプレイヤーが既にいる為新規登録できません') }
    
    これではちょっと足りないですけど・・・まあいっか。

    ログイン中に戦闘を仕掛けられる、マイレコードを見ても新着メッセージのアラートが消えない等の不具合を修正します。

    library/base.cgiを開く
    sub set_code:
    return;
    ↓
    #return;
    

    マップでリンにいるはずがウルシュの位置に表示される不具合を修正します。

    data/place.cgiを開く
        'lyn' => { 'nm' => 'リン',
                   'im' => 'place04.gif',
                   'lc' => '468,322',
                   'kg' => 'ven',
                   'tf' => 'qui,uls',
                   'lt' => 'fir',
                   'lh' => 'ein',
                   'ev' => 'Hb,Pb,Gd',
                   'it' => 'find_item_all.cgi',
                   'se' => 'sea_fish_all.cgi',
                   'gl' => '6',
                   'pr' => '' },
    ↓
        'lyn' => { 'nm' => 'リン',
                   'im' => 'place04.gif',
                   'lc' => '426,384',
                   'kg' => 'ven',
                   'tf' => 'qui,uls',
                   'lt' => 'fir',
                   'lh' => 'ein',
                   'ev' => 'Hb,Pb,Gd',
                   'it' => 'find_item_all.cgi',
                   'se' => 'sea_fish_all.cgi',
                   'gl' => '6',
                   'pr' => '' },
    
    lcの値を変更。

    LIFが回復しないのでゲームが進まなくなる不具合を修正します。

    data/set.cgiを開く
    # 時間 Time ########################################## #
    $rcv = 90;                   # VITが0.1回復するのに必要な秒数
    ↓
    # 時間 Time ########################################## #
    $rcl = 60;                   # LIFが0.1回復するのに必要な秒数
    $rcv = 90;                   # VITが0.1回復するのに必要な秒数
    
    設定はお好みで変えてください。
    data/main.cgiを開く
    sub main:
        # VITの回復
        $I->{Vt}  = int((time - $precode) / $set::rcv) / 10;
        $I->{vt} += $I->{Vt};
        $I->{vt}  = $I->{Mvt} if $I->{vt} > $I->{Mvt};
        $I->{Vt}  = int($I->{vt});
        $I->{li}  = 'in';
    の上に
        # LIFの回復
        if ($I->{da} ne 'Dd') {
            $I->{Lf}  = int((time - $precode) / $set::rcl) / 10;
            $I->{lf} += $I->{Lf};
            $I->{lf}  = $I->{Mlf} if $I->{lf} > $I->{Mlf};
        }
        $I->{Lf}  = int($I->{lf});
    を追加
    
        <td nowrap class=r><span id=lf>$I->{lf}</span></td>
    ↓
        <td nowrap class=r><span id=lf>$I->{Lf}/$I->{Mlf}</span></td>
    

    レベルアップボーナスを振ろうとすると'Crypt error'となる不具合を修正します。

    data/levelup.cgiを開く
    sub levelup_before:
        <input type=hidden name=id value="$F{id}">
        <input type=hidden name=ps value="$F{ps}">
    ↓
        <input type=hidden name=id value="$F{id}">
        <input type=hidden name=ps value="$F{ps}">
        <input type=hidden name=xx value="$I->{XX}">
    

    採掘に必要なVITが0になっている不具合?を修正します。

    set.cgiを開く
    $mvt = 0;                    # 採掘で消費するVIT
    ↓
    $mvt = 5;                    # 採掘で消費するVIT
    
    設定はお好みで。

    【トップへ戻る】



  10. ちょっとしたこと
    不具合ではないけど、一応やってみたことです。

    インフォメーション作成で文字実体参照が使えるようにします(問題が起こりそうなのでやらないほうがいいかも)

    master.cgi, library/base.cgiを開く
    master.cgi sub edit_information:
        $t1 =~ s/<br>/\n/g;
    ↓
        $t1 =~ s/<br>/\n/g;
        $t1 =~ s/&/&amp;/g;
    
    master.cgi sub make_information:
        $F{in} =~ s/&lt;/</g;
        $F{in} =~ s/&gt;/>/g;
    ↓
        $F{in} =~ s/&lt;/</g;
        $F{in} =~ s/&gt;/>/g;
        $F{in} =~ s/&amp;/&/g;
    
    library/base.cgi sub decode:
            $V =~ s/</&lt;/g;
            $V =~ s/>/&gt;/g;
    ↓
            $V =~ s/&/&amp;/g;
            $V =~ s/</&lt;/g;
            $V =~ s/>/&gt;/g;
    

    ホームページに戻るリンクがないような気がしたので

    library/rights.cgiを開く
    sub rights:
        print qq|<br>Edit:$set::edt\n| if $set::edt;
    ↓
        print qq|<br><a href="$set::rtn">Edit:$set::edt</a>\n| if $set::edt;
    

    Spetial Thanksのアンカーを無効に

    library/rights.cgiを開く
    sub rights:
        print qq|<a href="#" onClick="GetView('creators')">$creators_label</a>\n| if !$set::stv;
    ↓
        print qq|<a href="#" onClick="GetView('creators');return false">$creators_label</a>\n| if !$set::stv;
    

    【トップへ戻る】