トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

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>&lt;&lt; ダウンロードしてお使い下さい。</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');
&amp;userout if (!$del_fg);
&amp;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(/&lt;&gt;/,$lstlines[$_],23);
	if ($pid eq $id &amp;&amp; $pnm eq $nm &amp;&amp; $pps eq $ps) { next; }
	elsif ($now &gt; $ptm &amp;&amp; $pps eq $admpas) {
		@prclines = &amp;get_partner(&quot;$pid&quot;);
		($php,$ptm) = &amp;hprecover($php,$pxp,$psp,$pav,$ptm,$pfg);
		&amp;partnerout;
		$getpartnerflag = 0;
		push(@newlines,$pline); }
	elsif ($del_check &lt; $ptm || $pps eq $admpas) { push(@newlines,$lstlines[$_]); }
	else { unlink(&quot;$usrdir$id\.dat&quot;); }
}
push(@newlines,$line) if (!$del_fg);
@newlines = sort @newlines;
&amp;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,&quot;$usrdir$usrfile$no]&quot;) &quot;);
# $line = &lt;IN&gt;;
# close(IN);
# push(@lstlines,$line);
# }

push (@editor,&quot;get_file&amp;list_in 軽量化 Ver1.01 &lt;A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'&gt;by SION & SOSWiki&lt;/A&gt;&quot;);
open(IN,&quot;$listin&quot;) || &amp;error(&quot;Can't open $listin&quot;);
@lstlines = &lt;IN&gt;;
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(&quot;$usrdir$id\.dat&quot;);

#-ADD-

	&amp;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- &amp;userout; $printmsg = 1; &amp;main_form;

&amp;list_out; $printmsg = 1; &amp;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 = ''; &amp;userout;

$fg = ''; &amp;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- &amp;find_del; &amp;find_best;

		&amp;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 &gt; $tm &amp;&amp; $ps ne $admpas) { unlink(&quot;$usrdir$id\.dat&quot;); }
#}
#-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 = &amp;getuser(&quot;$Fm{'id'}&quot;); }

#-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- &amp;get_file;

opendir(DIR,&quot;$usrdir&quot;) || &amp;error(&quot;ユーザデータ読みこみエラー&quot;);
@usrfile = sort grep /\.dat/,readdir(DIR);
closedir(DIR);

#-END of EDIT- SION0009v1.02-9-9/14
</TEXTAREA><BR>
<FONT color="#FF0000">※改造により税金以外にも &amp;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- &amp;get_file; &amp;list_in; &amp;get_host; &amp;find_user;

&amp;list_in; &amp;get_host; &amp;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- &amp;get_file; &amp;list_in;

&amp;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- &amp;get_file; &amp;list_in; &amp;unlock;

&amp;list_in; &amp;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- &amp;get_file; &amp;list_in; &amp;unlock;

&amp;list_in; &amp;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,&quot;$usrdir&quot;) || &amp;error(&quot;ユーザデータ読みこみエラー&quot;);
# @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');
&amp;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(/&lt;&gt;/,$lstlines[$_]);
	if ($pid eq $id &amp;&amp; $pnm eq $nm &amp;&amp; $pps eq $ps) {
		next;
	} elsif ($now &gt; $ptm &amp;&amp; $pps eq $admpas) {
		&amp;get_partner($pid);
		($php,$ptm) = &amp;hprecover($php,$pxp,$psp,$pav,$ptm,$pfg);
		&amp;partnerout;
		$getpartnerflag = 0;
		push(@newlines,$pline);
	} elsif ($del_check &lt; $ptm) {
		push(@newlines,$lstlines[$_]);
	} else {
		unlink(&quot;$usrdir$id\.dat&quot;);
	}
}
push(@newlines,$line) if (!$del_fg);
@newlines = sort @newlines;
&amp;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,&quot;$usrdir$usrfile$no]&quot;) &quot;);
# $line = &lt;IN&gt;;
# close(IN);
# push(@lstlines,$line);
# }

open(IN,&quot;$listin&quot;) || &amp;error(&quot;Can't open $listin&quot;);
@lstlines = &lt;IN&gt;;
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'};
&amp;list_out;

#-END of ADD- SION0009v1.02-12-3/7

&amp;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'};
&amp;list_out;

#-END of ADD- SION0009v1.02-12-4/7

&amp;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('&lt;&gt;',$line);
&amp;list_out;

#-END of ADD- SION0009v1.02-12-5/7

&amp;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

&amp;list_out('del');

#-END of ADD- SION0009v1.02-12-6/7

&amp;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">

&amp;writedat(&quot;$usrdir$id\.dat&quot;,@rcdlines);

#-ADD-line

&amp;list_out;

#-END of ADD- SION0009v1.02-12-7/7
</TEXTAREA>