!Parts1

この改造はユーザーデータを多く扱う為、改造時の危険度は高くなっています。

●作業開始前に、ユーザーデータをコピーし、万一に備えてください。
●改造作業中、SOSは動作しないよう停止してください。
●作業開始前に、全ての改造ポイントに目を通し、どういった処理に変更しているのか理解してください。
●この改造については、原則として自力で理解できる方を対象としています。それ以外の方はこの改造はご遠慮下さい。
●この改造によって生じたいかなる障害・損害についても、当方では一切責任を取れません。改造を適用した時点で、この事をご理解・ご承諾戴いたものと致します。


この改造により、次の通り変更となります。
●ユーザーリストや販売リスト、ベストユーザーなどの表示は、最後にセーブした時の状態が反映されるようになります。
!Parts2
exterior_accsess.cgi<< ダウンロードしてお使い下さい。
1)1行目 perl pass 及び 35-40行目を修正して下さい(設定は sos2.cgi に併せてください)。 36行目が、新しく作るストックファイル名となります。
2)パーミッション 755 でサーバーにアップロードし、実行して下さい。
3)正常に動作し、ストックファイルの完成を確認したら、このプログラムはサーバーから削除して下さい。
!Parts3
sos2.cgi # ---------- FILE PATH Line31
$bitdat = './bit.dat'; # bit.datのパス 666(606)
!Parts4
sos2.cgi 任意の場所
次のルーチンを追加します。

※フラグ足しを行っている場合は、このルーチンも修正を行ってください。
このルーチンの動作:
1)ユーザーのデータを更新します。
2)NPCキャラ(パスワードが管理者パスワード)のデータが2時間以上過去の物であれば更新します。
3)ユーザーデータ削除期限を越えているユーザーを削除します。この際、ユーザーデータも削除します。
4)それ以外のユーザーは、既存のデータのまま保存します。
!Parts5
sos2.cgi # Sub List In # Line2229-2234
foreach $no (0 .. $#usrfile) {
open(IN,"$usrdir$usrfile[$no]") || &error("Can't open $usrfile[$no]");
$line = ; close(IN);
push(@lstlines,$line);
}


※フラグ足しを行っている場合は、このルーチンも修正を行ってください。 !Parts6
sos2.cgi # Sub Delete After # Line1833
unlink("$usrdir$id\.dat");
!Parts7
sos2.cgi # Sub Save Game # Line1781
&userout; $printmsg = 1; &main_form;



sos2.cgi # Sub Make Continue # Line548
$fg = ''; &userout;
!Parts8
sos2.cgi # Sub List In Order # Line1935
&find_del; &find_best;



sos2.cgi # Sub Find to Delete # Line1983-1986
# Sub Find to Delete #
sub find_del {
if ($now > $tm && $ps ne $admpas) { unlink("$usrdir$id\.dat"); }
}

!Parts9
sos2.cgi # Sub Normal Action # Line642
if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp }

※# Sub Normal Action #内の全ての [ $my** ] という変数を [ $**] と置き換えて下さい。
無改造であれば: $mysp ⇒ $sp $mybp ⇒ $bp
代表的な改造は: $myhp ⇒ $hp $mytw ⇒ $tw 等
!Parts10
sos2.cgi # Sub Levy # Line1788
&get_file;

※改造により税金以外にも &get_file を追加している場合、同様に修正するか、改造ポイント11を飛ばして下さい。 !Parts11
sos2.cgi # Sub Make New # Line506
&get_file; &list_in; &get_host; &find_user;



sos2.cgi # Sub Normal Action # Line633
&get_file; &list_in;



sos2.cgi # Sub List In Order # Line1929
&get_file; &list_in; &unlock;



sos2.cgi # Sub Sales In Order # Line1960
&get_file; &list_in; &unlock;
!Parts12
sos2.cgi # Sub Get User File # Line2186-2193
# Sub Get User File #
sub get_file {
return if $getfileflag;
opendir(DIR,"$usrdir") || &error("ユーザデータ読みこみエラー");
@usrfile = sort grep /\.dat/,readdir(DIR);
closedir(DIR);
$getfileflag = 1;
}

!Parts13
ufs2.cgi # ------------ FILE PATH Line32
$bupdat = './bup.dat'; # bup.datのパス 666(606)



ufs2.cgi 任意の場所
次のルーチンを追加します。

※sos2.cgi に追加した同名ルーチンとは、&useroutの取り扱いで若干異なります。


ufs2.cgi # Sub List In # Line970-975
foreach $no (0 .. $#usrfile) {
open(IN,"$usrdir$usrfile[$no]") || &error("Can't open $usrfile[$no]");
$line = ; close(IN);
push(@lstlines,$line);
}




ufs2.cgi # Sub Made From # Line612
&make_from;



ufs2.cgi # Sub Made Free # Line654
&make_free;



ufs2.cgi # Sub Recover Player # Line765
&admin;



ufs2.cgi # Sub Delete # Line776
&admin;



ufs2.cgi # Sub User Out # Line964
&writedat("$usrdir$id\.dat",@rcdlines);