Script of Saga III b1.1 修正点

戻る

sos3.cgi,master.cgi
修正前
if ($set::kpm) { use KCatch qw( source ) }
修正後
if ($set::kpm) { require KCatch; import KCatch qw( source ) }
library/companion.cgi : sub companion

コメントを外す(先頭の#)
    &say("$Ip->{Im}$Ip->{Nm}を冒険に連れて行くことはできません。",'pet') if $Ip->{cl} eq 'Ls' || $Ip->{cl} eq 'Hr';
library/fight.cgi : sub fight_player
コメントを外す(先頭の#)
    &partner('',"<img src=$set::mim_dir/envGd.gif><br><br>$I->{Pl}{nm}での戦闘は禁止されています") if $I->{Pl}{ev}{Gd};
library/fight.cgi : sub fight_player
コメントを外す(先頭の#)
    &partner('',"$Unmとは暫く戦えません・・・") if @Den;
library/fight.cgi : sub fight_player
コメントを外す(先頭の#)
    &set_record($V,$I->{Id});
library/fight.cgi : sub fight_player
コメントを外す(先頭の#)
    &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 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
修正前
    if (&roll_dice(100) <= $dice) {
修正後
    if ($D->{WO} && $D->{WO} != 7 && &roll_dice(100) <= $dice) {

修正前
        undef %{$D->{rh}};
        $D->{rh} = '';
修正後
        undef %{$D->{Rh}};
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';
library/fight.cgi : sub basic_offense
一行削除
    #&error("$S->{nm}:$S->{AT}");
library/use.cgi : sub use
下記のソースの下に
    $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/find.cgi : sub encounter
コメントを外す(先頭の#)
    &sort_item($I);
    &set_item($I);

    &set_user($I);
library/find.cgi : sub found
修正前
            $S->{ob} .= $Ii->{ef};
            $S->{Ob} = split(//,$S->{ob});
修正後
            $S->{ob} .= $Ii->{ef};
            $S->{Ob} = [split(//,$S->{ob})];
library/buy.cgi : sub buy_after
修正前
my ($Ui,$Up,$V);
修正後
my ($Ii,$Ui,$Ip,$Up,$V);

修正前
        push (@{$I->{Bg}},$Ui);
修正後
        %$Ii = %$Ui;
        push (@{$I->{Bg}},$Ii);

修正前
        push (@{$I->{Pt}},$Up);
修正後
        %$Ip = %$Up;
        push (@{$I->{Pt}},$Ip);
library/main.cgi : sub main
コメントを外す(先頭の#)
    &delete_check;
library/main.cgi : sub departure_monitor
コメントを外す(先頭の#)
    $F = &login_check($U,1) ? 1 : 0;
library/new.cgi : sub regist_check
コメントを外す(先頭の#)
    if ($U->{ip} eq $F{ip}) { &say('同一ホストIPを持つプレイヤーが既にいる為新規登録できません') }
library/playerlist.cgi : sub playerlist_statistics
修正前
    $L->{mp} = int($L->{m} / $L->{tp} * 100);
    $L->{wp} = 100 - $L->{mp};
修正後
    $L->{mp} = $L->{tp} ? int($L->{m} / $L->{tp} * 100) : 0;
    $L->{wp} = $L->{tp} ? 100 - $L->{mp} : 0;

修正前
    $L->{fp} = int($L->{f} / $L->{tp} * 100);
    $L->{cp} = 100 - $L->{fp};
修正後
    $L->{fp} = $L->{tp} ? int($L->{f} / $L->{tp} * 100) : 0;
    $L->{cp} = $L->{tp} ? 100 - $L->{fp} : 0;
library/trade.cgi : sub trade_after
修正前
    &lock($U->{id});
修正後
    &lock($F{id});
library/words.cgi : sub words_before
修正前
    <textarea class=textarea name=w3 cols=40 rows=3>$I->{w2}</textarea><br>
修正後
    <textarea class=textarea name=w3 cols=40 rows=3>$I->{w3}</textarea><br>
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/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}">
data/place.cgi
リンの位置データの修正

修正前
'lc' => '468,322',
修正後
'lc' => '426,384',
set.cgi
以下の設定データを変更
$fvt = 1; → 5                   # 探索で消費するVIT
$mvt = 0; → 5                   # 採掘で消費するVIT
$kpm = 1; → 0                   # デバッグ用にKCatch.pmを使用する(yes=1,no=0)
image.html
修正前
  sex = opener.newform.sx.value;
(修正後)
  sex = window.opener.document.newform.sx.value;

修正前
<script language="JavaScript" src="javascript/GetObject.js"></script>
修正後
<script language="JavaScript" src="javascript/GetView.js"></script>

修正前
      tag += "<th><img src=" + ImageDirectory + sex + ++count + ImageFileType + "><br>" + count + "</th>";
修正後
      tag += "<th><img src=" + MainImageDirectory + sex + ++count + ImageFileType + "><br>" + count + "</th>";
javascript/Reload.js
「opener.」を全て「window.opener.document.」に置換
javascript/MapProgram.js
修正前
	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(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) {

以上の修正情報はUchimata様よりご提供頂きました。




set.cgi
修正前
$inf_htm = './information.html';# information.html
修正後
$inf_htm = './information.html';# information.html
$sli_htm = './sales.html';      # sales.html
library/main.cgi/sub main
修正前
    <option value="Ps">人口統計</option>
修正後
    <option value="Ps">人口統計</option>
    <option value="Si">販売情報</option>
library/playerlist.cgi/sub playerlist
修正前
    &playerlist_statistics if $F{or} eq 'Ps';
修正後
    &playerlist_statistics if $F{or} eq 'Ps';
    &sales_information if $F{or} eq 'Si';

修正前
        next if $F{or} eq 'Ft' &&  $U->{Sk}{Cz};
修正後
        next if $F{or} eq 'Ft' &&  $U->{Sk}{Cz};
        next if $F{or} eq 'Bt' &&  $U->{rw} < $set::sps;
library/playerlist.cgi
サブルーチンを追加
# Sub Sales Information #
sub sales_information {
my (@L,@T,$T);
my ($t1,$t2);

    &transfer_HTML($set::sli_htm) if !&schedule_monitor(2);

    @L = &get_allusersID();

    require "$set::dat_dir/place.cgi";

    foreach (@L) {
        $U = &get_user('A',$_);
        &get_item($U);
        foreach $Ui (@{$U->{Bg}}) {
            # 販売価格が設定され予約者がいない
            next unless $Ui->{sp} && !$Ui->{rs};
            $Ui->{Id} = $U->{id};
            $Ui->{Nm} = $U->{nm};
            $Ui->{Pl} = $PL{$U->{pl}}{nm};
            push (@T,$Ui);
        }
    }

    require "$set::dat_dir/sort.cgi";

    @T = sort { $SO{$a->{cl}} <=> $SO{$b->{cl}} || $a->{id} cmp $b->{id} || $a->{sp} <=> $b->{sp} } @T;


    foreach $T (@T) {
        $t1 .= "<tr><td nowrap>$T->{nm}</td><td nowrap align=right>$T->{sp} $set::mny</td><td nowrap>$T->{Id}</td><td nowrap>$T->{Nm}</td><td width=100%>$T->{Pl}</td></tr>\n";
    }

    $t2  = &header(CSS=>'list',GetTag=>1);
    $t2 .= <<"    END_OF_HTML";
    <div class=label>販売情報</div>
    <table>
    <tr><th nowrap>商品名</th><th nowrap>金額</th><th nowrap>ID</th><th nowrap>販売者</th><th width=100%>所在地</th></tr>
    $t1
    </table>
    END_OF_HTML
    $t2 .= &footer(GetTag=>1);
    &write_dat($set::sli_htm,$t2);
    &transfer_HTML($set::sli_htm);
}
library/market.cgi/sub market
修正前
    if ($I->{Pl}{xf}) {
修正後
    if ($I->{Pl}{bm}) {
library/blackmarket.cgi/sub blackmarket_after
修正前
    &lock($I->{Pl}{xf});
修正後
    &lock($I->{Pl}{bm});

修正前
    &unlock($I->{Pl}{xf});
修正後
    &unlock($I->{Pl}{bm});

コメントアウト(#を先頭に付ける)
    &say('売り切れです','blackmarket_before') if !$F{ui};
library/sell.cgi/sub sell_after
修正前
   		elsif ($UI{$Ii->{id}} && $UI{$Ii->{id}}{Ql}{Dx} != $Ii->{Ql}{Dx}) {
修正後
 		elsif ($UI{$Ii->{id}}) {

修正前
    $Ii->{sp} = $Ii->{rs} = '';
修正後
    $Ii->{Ql}{Dx} = $Ii->{sp} = $Ii->{rs} = '';

コメントを外す(先頭の#)
    &set_item($I);



orb.htmlを修正



データを幾つか追加(各数値は仮設定)

item/market_sale_fir.cgi
            { nm => '大工道具',
              cl => 'Ca',
              id => 'Carpenterstools',
              im => 'carpenterstools.gif',
              ql => 'Rh,Sb',
              qn => 1,
              bp => 100,
              db => 30,
              wt => 1,
              cp => 'tc=3' },
            { nm => '細工道具',
              cl => 'Tt',
              id => 'Tinkerstools',
              im => 'tinkerstools.gif',
              ql => 'Rh,Sb',
              qn => 1,
              bp => 100,
              db => 30,
              wt => 1,
              cp => 'tc=3' },
item/woodwork.cgi
        { id => { Log => 6 },
          cl => { Ca => 1, Ig => 2 },
          gf => 'lv=2',
          gv => 'lf=5,vt=10',
          ex => 55,
          rl => 70,
          dt => { nm => '棚',
                  cl => 'Sf',
                  id => 'Shelf',
                  im => 'shelf.gif',
                  qn => 1,
                  bp => 120,
                  wt => 5 } },



Copyright 2000-2007 Missing Link All Rights Reserved.