SION0009
Parts1
<TABLE width="778" border="0" cellspacing="0" cellpadding="5">
<TR bgcolor="#FFCCCC"> <TD class="text"> <HR> <B><FONT color="#FF0000">この改造はユーザーデータを多く扱う為、改造時の危険度は高くなっています。</FONT></B>
<P><B><FONT color="#FF0000"> ●作業開始前に、ユーザーデータをコピーし、万一に備えてください。</FONT></B>
<BR> <FONT color="#FF0000"><B>●改造作業中、SOSは動作しないよう停止してください。</B></FONT> <BR> <FONT color="#FF0000"><B>●作業開始前に、全ての改造ポイントに目を通し、どういった処理に変更しているのか理解してください。</B></FONT> <BR> <FONT color="#FF0000"><B>●この改造については、原則として自力で理解できる方を対象としています。それ以外の方はこの改造はご遠慮下さい。</B></FONT> <BR> <FONT color="#FF0000"><B> ●この改造によって生じたいかなる障害・損害についても、当方では一切責任を取れません。改造を適用した時点で、この事をご理解・ご承諾戴いたものと致します。</B></FONT> </P> <HR> この改造により、次の通り変更となります。<BR> ●ユーザーリストや販売リスト、ベストユーザーなどの表示は、最後にセーブした時の状態が反映されるようになります。 <HR> </TD> </TR>
</TABLE>
Parts2
<BR>
<B><FONT color="#0000FF"><A href="../download/exterior_accsess_cgi.txt">exterior_accsess.cgi</A><< ダウンロードしてお使い下さい。</FONT></B><bR>
1)1行目 perl pass 及び 35-40行目を修正して下さい(設定は sos2.cgi に併せてください)。 36行目が、新しく作るストックファイル名となります。 <BR>
2)パーミッション 755 でサーバーにアップロードし、実行して下さい。 <BR>
3)正常に動作し、ストックファイルの完成を確認したら、このプログラムはサーバーから削除して下さい。<BR>
Parts3
<BR>
<B><FONT color="#0000FF">sos2.cgi # ---------- FILE PATH Line31</FONT></B><BR>
<b> $bitdat = './bit.dat'; # bit.datのパス 666(606)</b><Br>
<TEXTAREA name="textarea10" cols="100" rows="4" wrap="OFF">
$bitdat = './bit.dat'; # bit.datのパス 666(606)
$bitdat = './bit.dat'; # bit.datのパス 666(606)
#-ADD-
$listin = './listin.cgi'; # listin.dat のパス 666(606)
#-END of ADD- SION0009v1.02-2-1/14
</TEXTAREA>
Parts4
<BR>
<B><FONT color="#0000FF">sos2.cgi 任意の場所<BR>
<b> 次のルーチンを追加します。</b><BR>
<TEXTAREA name="textarea13" cols="100" rows="5" wrap="OFF">
#=《 Sub List OUT 》=========#
sub list_out {
$del_fg = 1 if (@_[0] eq 'del'); &userout if (!$del_fg); &list_in; undef @newlines; $now = time - 7200; $del_check = time - $def_dl * 86400; foreach (0 .. $#lstlines) { ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$pbn,$pak,$pdd,$php,$pxp,$pab,$pdb, $pav,$pwn,$plz,$pdt,$pmn,$pbg,$pxi,$ptm,$other) = split(/<>/,$lstlines[$_],23); if ($pid eq $id && $pnm eq $nm && $pps eq $ps) { next; } elsif ($now > $ptm && $pps eq $admpas) { @prclines = &get_partner("$pid"); ($php,$ptm) = &hprecover($php,$pxp,$psp,$pav,$ptm,$pfg); &partnerout; $getpartnerflag = 0; push(@newlines,$pline); } elsif ($del_check < $ptm || $pps eq $admpas) { push(@newlines,$lstlines[$_]); } else { unlink("$usrdir$id\.dat"); } } push(@newlines,$line) if (!$del_fg); @newlines = sort @newlines; &writedat($listin,@newlines);
}
</TEXTAREA><BR>
<FONT color="#FF0000">※フラグ足しを行っている場合は、このルーチンも修正を行ってください。 </FONT><BR>
このルーチンの動作:<BR>
1)ユーザーのデータを更新します。<BR>
2)NPCキャラ(パスワードが管理者パスワード)のデータが2時間以上過去の物であれば更新します。<BR>
3)ユーザーデータ削除期限を越えているユーザーを削除します。この際、ユーザーデータも削除します。<BR>
4)それ以外のユーザーは、既存のデータのまま保存します。<BR>
Parts5
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub List In # Line2229-2234</FONT></B><BR>
<b> foreach $no (0 .. $#usrfile) {<BR>
open(IN,"$usrdir$usrfile不正なリンクです。");<BR>
$line = <IN>; close(IN);<BR>
push(@lstlines,$line);<BR>
} </b><br>
<TEXTAREA name="textarea14" cols="100" rows="5" wrap="OFF">
#-EDIT-
# foreach $no (0 .. $#usrfile) {
# open(IN,"$usrdir$usrfile$no]") ");
# $line = <IN>;
# close(IN);
# push(@lstlines,$line);
# }
push (@editor,"get_file&list_in 軽量化 Ver1.01 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); open(IN,"$listin") || &error("Can't open $listin"); @lstlines = <IN>; close(IN);
#-END of EDIT- SION0009v1.02-4-2/14
</TEXTAREA><BR>
<FONT color="#FF0000">※フラグ足しを行っている場合は、このルーチンも修正を行ってください。 </FONT>
Parts6
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Delete After # Line1833</FONT></B><BR>
<b> unlink("$usrdir$id\.dat"); </b><br>
<TEXTAREA name="textarea15" cols="100" rows="4" wrap="OFF">
unlink("$usrdir$id\.dat");
#-ADD-
&list_out('del');
#-END of ADD- SION0009v1.02-5-3/14
</TEXTAREA>
Parts7
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Save Game # Line1781</FONT></B><BR>
<b> &userout; $printmsg = 1; &main_form; </b><Br>
<TEXTAREA name="textarea16" cols="100" rows="3" wrap="OFF">
#-EDIT- &userout; $printmsg = 1; &main_form;
&list_out; $printmsg = 1; &main_form;
#-END of EDIT- SION0009v1.02-6-4/14
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Make Continue # Line548</FONT></B><BR>
<b> $fg = ''; &userout; </b><Br>
<TEXTAREA name="textarea17" cols="100" rows="3" wrap="OFF">
#-EDIT- $fg = ''; &userout;
$fg = ''; &list_out;
#-END of EDIT- SION0009v1.02-6-5/14
</TEXTAREA>
Parts8
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub List In Order # Line1935</FONT></B><BR>
<b> &find_del; &find_best; </b><Br>
<TEXTAREA name="textarea19" cols="100" rows="3" wrap="OFF">
#-EDIT- &find_del; &find_best;
&find_best;
#-END of EDIT- SION0009v1.02-7-6/14
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Find to Delete # Line1983-1986</FONT></B><br>
<b> # Sub Find to Delete #<BR>
sub find_del {<BR>
if ($now > $tm && $ps ne $admpas) { unlink("$usrdir$id\.dat"); } <BR>
}</b><Br>
<TEXTAREA name="textarea18" cols="100" rows="5" wrap="OFF">
#-DEL-
# Sub Find to Delete #
#sub find_del {
# if ($now > $tm && $ps ne $admpas) { unlink("$usrdir$id\.dat"); }
#}
#-END of DEL- SION0009v1.02-7-7/14
</TEXTAREA>
Parts9
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Normal Action # Line642</FONT></B><br>
<b> if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp } </b><Br>
<TEXTAREA name="textarea20" cols="100" rows="3" wrap="OFF">
#-EDIT- if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp }
if ($Fm{'id'} eq $pid) { @rcdlines = &getuser("$Fm{'id'}"); }
#-END of EDIT- SION0009v1.02-8-8/14
</TEXTAREA><BR>
<FONT color="#FF0000">※# Sub Normal Action #内の全ての [ $my** ] という変数を [ $**] と置き換えて下さい。<BR>
無改造であれば: $mysp ⇒ $sp $mybp ⇒ $bp<BR>
代表的な改造は: $myhp ⇒ $hp $mytw ⇒ $tw 等</FONT>
Parts10
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Levy # Line1788</FONT></B><BR>
<b> &get_file; </b><Br>
<TEXTAREA name="textarea21" cols="100" rows="5" wrap="OFF">
#-EDIT- &get_file;
opendir(DIR,"$usrdir") || &error("ユーザデータ読みこみエラー"); @usrfile = sort grep /\.dat/,readdir(DIR); closedir(DIR);
#-END of EDIT- SION0009v1.02-9-9/14
</TEXTAREA><BR>
<FONT color="#FF0000">※改造により税金以外にも &get_file を追加している場合、同様に修正するか、改造ポイント11を飛ばして下さい。 </FONT>
Parts11
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Make New # Line506</FONT></B><BR>
<b> &get_file; &list_in; &get_host; &find_user; </b><Br>
<TEXTAREA name="textarea25" cols="100" rows="3" wrap="OFF">
#-EDIT- &get_file; &list_in; &get_host; &find_user;
&list_in; &get_host; &find_user;
#-END of EDIT- SION0009v1.02-10-10/14
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Normal Action # Line633</FONT></B><BR>
<B> &get_file; &list_in; </b><BR>
<TEXTAREA name="textarea23" cols="100" rows="3" wrap="OFF">
#-EDIT- &get_file; &list_in;
&list_in;
#-END of EDIT- SION0009v1.02-10-11/14
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub List In Order # Line1929</FONT></B><BR>
<b> &get_file; &list_in; &unlock; </b><br>
<TEXTAREA name="textarea24" cols="100" rows="3" wrap="OFF">
#-EDIT- &get_file; &list_in; &unlock;
&list_in; &unlock;
#-END of EDIT- SION0009v1.02-10-12/14
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Sales In Order # Line1960</FONT></B><BR>
<B> &get_file; &list_in; &unlock; </b><BR>
<TEXTAREA name="textarea22" cols="100" rows="3" wrap="OFF">
#-EDIT- &get_file; &list_in; &unlock;
&list_in; &unlock;
#-END of EDIT- SION0009v1.02-10-13/14
</TEXTAREA>
Parts12
<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Get User File # Line2186-2193</FONT></B><BR>
<b> # Sub Get User File #<BR>
sub get_file {<BR>
return if $getfileflag;<BR>
opendir(DIR,"$usrdir") || &error("ユーザデータ読みこみエラー");<BR>
@usrfile = sort grep /\.dat/,readdir(DIR);<BR>
closedir(DIR); <BR>
$getfileflag = 1;<BR>
} </b><Br>
<TEXTAREA name="textarea26" cols="100" rows="5" wrap="OFF">
#-DEL-
# Sub Get User File #
#sub get_file {
# return if $getfileflag;
# opendir(DIR,"$usrdir") || &error("ユーザデータ読みこみエラー");
# @usrfile = sort grep /\.dat/,readdir(DIR);
# closedir(DIR);
# $getfileflag = 1;
#}
#-END of DEL- SION0009v1.02-11-14/14
</TEXTAREA>
Parts13
<BR>
<B><FONT color="#0000FF">ufs2.cgi # ------------ FILE PATH Line32</FONT></B><BR>
<b> $bupdat = './bup.dat'; # bup.datのパス 666(606) </b><Br>
<TEXTAREA name="textarea3" cols="100" rows="4" wrap="OFF">
$bupdat = './bup.dat'; # bup.datのパス 666(606)
#-ADD-
$listin = './listin.cgi'; # listin.dat のパス 666(606)
#-END of ADD- SION0009v1.02-12-1/7
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi 任意の場所</FONT></B><BR>
<b>次のルーチンを追加します。 </b><br>
<TEXTAREA name="textarea6" cols="100" rows="5" wrap="OFF">
#=《 Sub List OUT 》=========#
sub list_out {
$del_fg = 1 if (@_[0] eq 'del'); &list_in; undef @newlines; $now = time - 7200; $del_check = time - $def_dl * 86400; foreach (0 .. $#lstlines) { ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$pbn,$pak,$pdd,$php,$pxp,$pab,$pdb, $pav,$pwn,$plz,$pdt,$pmn,$pbg,$pxi,$ptm,$other) = split(/<>/,$lstlines[$_]); if ($pid eq $id && $pnm eq $nm && $pps eq $ps) { next; } elsif ($now > $ptm && $pps eq $admpas) { &get_partner($pid); ($php,$ptm) = &hprecover($php,$pxp,$psp,$pav,$ptm,$pfg); &partnerout; $getpartnerflag = 0; push(@newlines,$pline); } elsif ($del_check < $ptm) { push(@newlines,$lstlines[$_]); } else { unlink("$usrdir$id\.dat"); } } push(@newlines,$line) if (!$del_fg); @newlines = sort @newlines; &writedat($listin,@newlines);
}
</TEXTAREA><BR>
※sos2.cgi に追加した同名ルーチンとは、&useroutの取り扱いで若干異なります。 <BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub List In # Line970-975</FONT></B><BR>
<B> foreach $no (0 .. $#usrfile) {<BR>
open(IN,"$usrdir$usrfile不正なリンクです。");<BR>
$line = <IN>; close(IN); <BR>
push(@lstlines,$line);<BR>
} </b><Br>
<TEXTAREA name="textarea11" cols="100" rows="5" wrap="OFF">
#-EDIT-
# foreach $no (0 .. $#usrfile) {
# open(IN,"$usrdir$usrfile$no]") ");
# $line = <IN>;
# close(IN);
# push(@lstlines,$line);
# }
open(IN,"$listin") || &error("Can't open $listin"); @lstlines = <IN>; close(IN);
#-END of EDIT- SION0009v1.02-12-2/7
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Made From # Line612</FONT></B><BR>
<b> &make_from;</b><BR>
<TEXTAREA name="textarea7" cols="100" rows="5" wrap="OFF">
#-ADD-
$nm = $Fm{'name'}; $ps = $Fm{'ps1'}; &list_out;
#-END of ADD- SION0009v1.02-12-3/7
&make_from;
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Made Free # Line654</FONT></B><BR>
<b> &make_free; </b><BR>
<TEXTAREA name="textarea8" cols="100" rows="5" wrap="OFF">
#-ADD-line
$nm = $Fm{'name'}; $ps = $Fm{'ps1'}; &list_out;
#-END of ADD- SION0009v1.02-12-4/7
&make_from;
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Recover Player # Line765</FONT></B><BR>
<b> &admin; </b><br>
<TEXTAREA name="textarea12" cols="100" rows="5" wrap="OFF">
#-ADD-line
$line = $newdata; ($id,$nm,$ps) = split('<>',$line); &list_out;
#-END of ADD- SION0009v1.02-12-5/7
&admin;
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Delete # Line776</FONT></B><BR>
<b> &admin; </b><br>
<TEXTAREA name="textarea" cols="100" rows="4" wrap="OFF">
#-ADD-line
&list_out('del');
#-END of ADD- SION0009v1.02-12-6/7
&admin;
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub User Out # Line964</FONT></B><BR>
<b> &writedat("$usrdir$id\.dat",@rcdlines); </b><Br>
<TEXTAREA name="textarea2" cols="100" rows="4" wrap="OFF">
&writedat("$usrdir$id\.dat",@rcdlines);
#-ADD-line
&list_out;
#-END of ADD- SION0009v1.02-12-7/7
</TEXTAREA>