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

SION0002

Parts1

<TABLE width="778" border="0" cellspacing="0" cellpadding="5">

<TR bgcolor="#FFCCCC"> 
	<TD class="text"> 
		<HR>
		<B>masimaro さんの配布されております、<FONT color="#0000FF">[ 装備使用回数制限 ] </FONT> と併用する場合には、下記修正を必ず実施して下さい。<BR>
		</B><B><FONT color="#0000FF">[ 装備使用回数制限 ]</FONT></B> は、非戦闘系の戦闘を想定していない為、この修正が必要となります。<BR>
		# sub fight # <FONT color="#FF0000" face="MS ゴシック, Osaka−等幅">【 <B>if ($pc 
		> 0) {</B> 】</FONT>の行を、<FONT color="#FF0000" face="MS ゴシック, Osaka−等幅">【 
		<B>if ($break == 0 || $pc &gt; 0) {</B> 】</FONT>として下さい。 
		<HR>
		<B>ねる部屋 さんの配布されておりました、<FONT color="#0000FF">[ 戦闘に解説を付ける ] </FONT> と併用する場合には、下記修正を必ず実施して下さい。</B><BR>
		<B><FONT color="#0000FF">[ 戦闘に解説を付ける ]</FONT></B> の該当部分は、問題を孕んでいます。 <BR>
		battle.pl  sub bmsg <FONT color="#FF0000" face="MS ゴシック, Osaka−等幅"><BR>
		foreach $item (@items) {</FONT> <BR>
		<FONT color="#FF0000" face="MS ゴシック, Osaka−等幅"> ($item,$sts,$price) = split(/△/,$item);</FONT><BR>
		の所を、 <BR>
		<FONT color="#FF0000" face="MS ゴシック, Osaka−等幅"> foreach $temp (@items) {</FONT> 
		<BR>
		<FONT color="#FF0000" face="MS ゴシック, Osaka−等幅"> ($item,$sts,$price) = split(/△/,$temp); 
		</FONT><BR>
		として下さい。 
		<HR>
	</TD>
</TR>

</TABLE>

Parts2

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Get Partner # Line:2164<BR>
perl/subsos.cgi # Sub Get Partner # Line:83</FONT></B> <BR>
<b>shift(@_); </b><br>
<FONT color="#FF00FF">
<TEXTAREA name="textarea10" cols="100" wrap="OFF" rows="5">
#-ADD-

if ($find || $Fm{'find'}) {
	$ptw = $tw; $parea = $area;
	if ($php &lt; 3) { $php = 3; }
}

#-END of ADD- SION0002v3.01-1-1/18

shift(@_);

</TEXTAREA><BR>
※ 街移動システム/エリア移動システムが未導入の場合、特に必要ありません。<BR>
※【 NPC強化 】</A>改造を併せてお奨めします。 </FONT>

Parts3

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Fight # Line:1550</FONT></B><BR>
<b>if ($plf eq $id) { push (@msg,"$pnmとは暫く戦えません"); return }</b><br>
<TEXTAREA name="textarea13" cols="100" wrap="OFF" rows="3">
#-EDIT- if ($plf eq $id) { push (@msg,&quot;$pnmとは暫く戦えません&quot;); return }

if ($plf eq $id &amp;&amp; !$find) { push (@msg,&quot;$pnmとは暫く戦えません&quot;); return }

#-END of EDIT- SION0002v3.01-2-2/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Fight # Line:1572 </FONT></B><BR>
<b>$uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po;</b><br>
<TEXTAREA name="textarea13" cols="100" wrap="OFF" rows="3">
#-EDIT- $uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po;

if ($find) { $uatk = $ak + $ab + $def_ab + $uw + $uo; $patk = $pak + $pab + $pw + $po;
	push (@editor,&quot;NPC遭遇(モンスター遭遇) Ver 3.00 &lt;A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'&gt;by SION & SOSWiki&lt;/A&gt;&quot;); }
else       { $uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po; }

#-END of EDIT- SION0002v3.01-2-3/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Fight # Line:1626</FONT></B><BR>
<b>if (!$Bidice) { </b><Br>
<TEXTAREA name="textarea13" cols="100" wrap="OFF" rows="3">
#-EDIT- unless ($Bidice) {

if (!$Bidice &amp;&amp; !$find) {

#-END of EDIT- SION0002v3.01-2-4/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Fight # Line:1649-1661</FONT></B> <BR>
<b>if ($itemchance && $pitems[$Sidice]) {<BR>

		&splititem('i');<BR>
		($item,$sts,$price) = split(/△/,$pitems[$Sidice]);<BR>
		if ($sts !~ /Ns/) {<BR>
		if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) 
		}<BR>
		splice(@pitems,$Sidice,1); push(@items,"$item△$sts");<BR>
		$psp =~ s/Qb//g if $sts =~ /Bw/;<BR>
		$psp =~ s/Qk//g if $sts =~ /Kt/;<BR>
		$psp =~ s/Qx//g if $sts =~ /Ax/; <BR>
		$psp =~ s/Qm//g if $sts =~ /Sw/;<BR>
		&joinitem('iI'); &fmsg('奪');<BR>
		}<BR>
		} </b><br>

<TEXTAREA name="textarea14" cols="100" wrap="OFF" rows="5">
#-ADD-

if (!$find) {

#-END of ADD- SION0002v3.01-2-5(1)/18

	if ($itemchance &amp;&amp; $pitems[$Sidice]) {
		&amp;splititem('i');
		($item,$sts,$price) = split(/△/,$pitems[$Sidice]);
		if ($sts !~ /Ns/) {
			if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) }
			splice(@pitems,$Sidice,1); push(@items,&quot;$item△$sts&quot;);
			$psp =~ s/Qb//g if $sts =~ /Bw/;
			$psp =~ s/Qk//g if $sts =~ /Kt/;
			$psp =~ s/Qx//g if $sts =~ /Ax/;
			$psp =~ s/Qm//g if $sts =~ /Sw/;
			&amp;joinitem('iI'); &amp;fmsg('奪');
		}
	}

#-ADD-

} else {
	if ($itemchance &amp;&amp; $items[$Sidice]) {
		&amp;splititem('i');
		($item,$sts,$price) = split(/△/,$items[$Sidice]);
		if ($sts !~ /Ns/) {
			if ($sts =~ s/Q[swat]//g) { $ab -= substr($sts,4,2); $db -= substr($sts,6,2) }
			splice(@items,$Sidice,1); push(@pitems,&quot;$item△$sts&quot;);
			$sp =~ s/Qb//g if $sts =~ /Bw/;
			$sp =~ s/Qk//g if $sts =~ /Kt/;
			$sp =~ s/Qx//g if $sts =~ /Ax/;
			$sp =~ s/Qm//g if $sts =~ /Sw/;
			&amp;joinitem('iI'); &amp;fmsg('失');
}	}	}

#-END of ADD- SION0002v3.01-2-5(2)/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Fight Message # Line:1727</FONT></B> <BR>
<b>'奪',"$pnmから$itemを奪いました", </b><br>
<TEXTAREA name="textarea13" cols="100" wrap="OFF" rows="4">

		  '奪',&quot;$pnmから$itemを奪いました&quot;,

#-ADD-

		  '失',&quot;$pnm に $itemを奪われました&quot;,

#-END of ADD- SION0002v3.01-2-6/18
</TEXTAREA>

Parts4

<BR>
<B><FONT color="#0000FF">sos2.cgi # ---------- USER DIRECTORY Line34 </FONT></B><BR>
<b>$usrdir = 'userdata/'; # ユーザデータを格納するフォルダ </b><br>
<FONT color="#FF00FF">
<TEXTAREA name="textarea15" cols="100" wrap="OFF" rows="4">
$usrdir = 'userdata/'; # ユーザデータを格納するフォルダ
#-ADD-
$nghead = 'NPC'; # npcファイルの接頭子(***0000.dat)
#-END of ADD- SION0002v3.01-3-7/18
</TEXTAREA><BR>
※ 'NPC' の部分は任意に変更して下さい。<BR>
ファイル名を変更せず、デフォルト(ID4桁のみ)を使う場合は Null('')にして下さい。</FONT>

Parts5

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Find Item # Line792 </FONT></B><BR>
<b>if ($idt !~ /Gl/) { push(@items,"$inm△$idt"); &joinitem('i') } </b><Br>
<FONT color="#FF00FF">
<TEXTAREA name="textarea16" cols="100" wrap="OFF" rows="5">
#-ADD-
#-------- NPC出現 -------------------

if ($idt =~ /Ng/ || $idt =~ /Ms/) {
	$ngid = substr($idt,0,4);
	$Fm{'pd'} = $nghead . $ngid;
	$runtf = substr($idt,4,2);
	$runtv = substr($idt,6,2);
	if ($sp =~ /Tf/) { $run = $runtf } else { $run = $runtv }
	$runrd = int(rand(100) + 1);
	if ($run &gt;= $runrd ) {
		if ($idt =~ /Ms/) {
			push (@msg,&quot;何かが近づく気配に気付いたので、うまくやり過ごしました。&quot;);
			$exp += int(rand(5));	}
		else {
			push (@msg,&quot;何物かが草陰から走り去って行きました。&quot;); }
	} else {
		$find = 'find';
		&amp;joinitem('i'); &amp;userout;
		$getuserflag = 0;
		if ($idt =~ /Ms/) {
			push (@msg,&quot;&lt;HR&gt;$inm が現れ、戦闘となりました。&lt;HR&gt;&quot;);
			&amp;fight; }
		else {
			push (@msg,&quot;&lt;HR&gt;$inm に出会いました。&quot;);
			$notfound = 0; }
		return; }                   # 複数回探索を取り入れている場合は、last; に変更する。
	return; }

#-END of ADD- SION0002v3.01-4-8/18

if ($idt !~ /Gl/) { push(@items,&quot;$inm△$idt&quot;); &amp;joinitem('i') }

</TEXTAREA></FONT><BR>
※ 出会いやすくしたり出会い難くするスキルを追加する場合は、<BR>
$runrd = int(rand(100) + 1); の行を改造します。<BR>
<FONT color="#FF0000">※ 複数回探索を取り入れている場合には、1つ目の return を last に書き換えて下さい。 <BR>
また、foreach のループの外にある &amp;userout; は、if (!$find) { &amp;userout; }として下さい。</FONT>

Parts6

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Play Form # Line299</FONT></B><BR>
<b>&find_item if $Fm{'mode'} eq 'find_item'; </b><br>
<TEXTAREA name="textarea17" cols="100" wrap="OFF" rows="2">
#-DEL- &amp;find_item if $Fm{'mode'} eq 'find_item';
#-END of DEL- SION0002v3.01-5-9/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Contact Form # Line329 </FONT></B> <BR>
<b>sub contact_form { </b><Br>
<TEXTAREA name="textarea17" cols="100" wrap="OFF" rows="4">
sub contact_form {
#-ADD-

if ($Fm{'mode'} eq 'find_item') { $notfound = 1; &amp;find_item; }

#-END of ADD- SION0002v3.01-5-10/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Main Program # Line229</FONT></B><BR>
<b>if ($Fm{'mode'} eq 'find_item') { &play_form } </b><br>
<TEXTAREA name="textarea17" cols="100" wrap="OFF" rows="3">
#-EDIT-if ($Fm{'mode'} eq 'find_item') { &amp;play_form }
elsif ($Fm{'mode'} eq 'find_item') { &amp;contact_form }
#-END of EDIT- SION0002v3.01-5-11/18
</TEXTAREA>

Parts7

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Contact Action # Line685</FONT></B><BR>
<b> if ($psp =~ /(V[a-z])/) {<BR>

		$vflag = $1;<BR>
		&splititem('i'); <BR>
		foreach (@items) {<BR>
		$right = 1 if (split(/△/))[1] =~ /$vflag/;<BR>
		}<BR>
		if (!$right) {<BR>
		&error("$pnmに会うためにはあるアイテムが必要です"); <BR>
		} <BR>
		} </b><BR>

<TEXTAREA name="textarea18" cols="100" wrap="OFF" rows="5">
#-EDIT- if ($psp =~ /(V[a-z])/) {
# $vflag = $1;
# &amp;splititem('i');
# foreach (@items) {
# $right = 1 if (split(/△/))[1] =~ /$vflag/;
# }
# if (!$right) {
# &amp;error(&quot;$pnmに会うためにはあるアイテムが必要です&quot;);
# }
# }

if (!$post) { return; }

#-END of EDIT- SION0002v3.01-6-12/18
</TEXTAREA><BR>
<FONT color="#FF00FF">※ $method をGETに変更していると動作しなくなります。POST の設定に戻してください。<BR>
何らかの事情で GET にせざるを得ない場合は、if (!$post) { return } の行を削除すれば<BR>
動作はしますが、不正行為が行われやすくなります。</FONT> <BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Contact Action # Line685 </FONT></B> <BR>
<b>&OKbuttoninform('on');</b><br>
<TEXTAREA name="textarea18" cols="100" wrap="OFF" rows="5">
#-ADD-

if ($find || $Fm{'find'}) {
	push (@editor,&quot;NPC遭遇 Ver 3.00 &lt;A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'&gt;by SION & SOSWiki&lt;/A&gt;&quot;);
	&amp;input('hidden','find','on','',''); }

#-END of ADD- SION0002v3.01-6-13/18

&amp;OKbuttoninform('on');

</TEXTAREA>

Parts8

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub Get Partner # Line:2164<BR>
perl/subsos.cgi # Sub Get Partner # Line:83</FONT></B> <BR>
<b>shift(@_); </b><br>
<FONT color="#FF00FF">
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-ADD-

if ($find || $Fm{'find'}) {
	if ($php &lt; 3) { $php = 3; }
	$parea = $area; }

#-END of ADD- SION0002v3.01-1-1/18

shift(@_);

</TEXTAREA><BR>
※ 街移動システム/エリア移動システムが未導入の場合、特に必要ありません。<BR>
※【 NPC強化 】改造を併せてお奨めします。 </FONT>

Parts9

<BR>
<B><FONT color="#0000FF">perl/fight.cgi # Sub Fight # Line:9</FONT></B><BR>
<b>my($afgt_chk,$afck_msg) = &fight_check;</b><Br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="3">
#-EDIT- my($afgt_chk,$afck_msg) = &amp;fight_check;

if (!$find &amp;&amp; !$Fm{'find'}) { my($afgt_chk,$afck_msg) = &amp;fight_check; }

#-END of EDIT- SION0002v3.01-2-2/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF"> perl/fight.cgi # Sub Fight # Line:33</FONT></B><BR>
<b>$uatk = $ak + $ab + $def_ab + $uw + $uo; $patk = $pak + $pab + $pw + $po;</b><br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-EDIT- $uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po;

if ($find) { $uatk = $ak + $ab + $def_ab + $uw + $uo; $patk = $pak + $pab + $pw + $po; }
	           push (@editor,&quot;NPC遭遇(モンスター遭遇) Ver 3.00 &lt;A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'&gt;by SION & SOSWiki&lt;/A&gt;&quot;);
else       { $uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po; }

#-END of EDIT- SION0002v3.01-2-3/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">perl/fight.cgi # Sub Fight # Line:128</FONT></B><BR>
<B>unless ($Bidice) { </b><Br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="3">
#-EDIT- unless ($Bidice) {

if (!$Bidice &amp;&amp; !$find) {

#-END of EDIT- SION0002v3.01-2-4/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">perl/fight.cgi # Sub Fight # Line:155-171</FONT></B> <BR>
<b>if ($itemchance && $pitems[$Sidice]) {<BR>

		&splititem('i');<BR>
		($item,$sts,$price) = split(/△/,$pitems[$Sidice]); <BR>
		if ($sts !~ /Ns/) {<BR>
		if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) 
		}<BR>
		splice(@pitems,$Sidice,1); push(@items,"$item△$sts");<BR>
		$psp =~ s/Qb//g if $sts =~ /Bw/;<BR>
		$psp =~ s/Qk//g if $sts =~ /Kt/;<BR>
		$psp =~ s/Qx//g if $sts =~ /Ax/; <BR>
		$psp =~ s/Qm//g if $sts =~ /Sw/;<BR>
		$psp =~ s/Of// if $sts =~ /Of/; # 釣り竿の盗み処理<BR>
		#属性<BR>
		foreach (@element_ak) { if($sts =~ /$_/) { $psp =~ s/$_// } }<BR>
		foreach (@element_df) { if($sts =~ /$_/) { $psp =~ s/$_// } }<BR>
		&joinitem('iI'); &fmsg('奪');<BR>
		}<BR>
		} </b><br>

<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-ADD-

if (!$find) {

#-END of ADD- SION0002v3.01-2-5(1)/18

	if ($itemchance &amp;&amp; $pitems[$Sidice]) {
		&amp;splititem('i');
		($item,$sts,$price) = split(/△/,$pitems[$Sidice]);
		if ($sts !~ /Ns/) {
			if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) }
			splice(@pitems,$Sidice,1); push(@items,&quot;$item△$sts&quot;);
			$psp =~ s/Qb//g if $sts =~ /Bw/;
			$psp =~ s/Qk//g if $sts =~ /Kt/;
			$psp =~ s/Qx//g if $sts =~ /Ax/;
			$psp =~ s/Qm//g if $sts =~ /Sw/;
			$psp =~ s/Of// if $sts =~ /Of/; # 釣り竿の盗み処理

#属性

			foreach (@element_ak) { if($sts =~ /$_/) { $psp =~ s/$_// } }
			foreach (@element_df) { if($sts =~ /$_/) { $psp =~ s/$_// } }
			&amp;joinitem('iI'); &amp;fmsg('奪');
		}
	}

#-ADD-

} else {
	if ($itemchance &amp;&amp; $items[$Sidice]) {
		&amp;splititem('i');
		($item,$sts,$price) = split(/△/,$items[$Sidice]);
		if ($sts !~ /Ns/) {
			if ($sts =~ s/Q[swat]//g) { $ab -= substr($sts,4,2); $db -= substr($sts,6,2) }
			splice(@items,$Sidice,1); push(@pitems,&quot;$item△$sts&quot;);
			$sp =~ s/Qb//g if $sts =~ /Bw/;
			$sp =~ s/Qk//g if $sts =~ /Kt/;
			$sp =~ s/Qx//g if $sts =~ /Ax/;
			$sp =~ s/Qm//g if $sts =~ /Sw/;
			$sp =~ s/Of//  if $sts =~ /Of/; # 釣り竿の盗み処理

#属性

			foreach (@element_ak) { if($sts =~ /$_/) { $sp =~ s/$_// } }
			foreach (@element_df) { if($sts =~ /$_/) { $sp =~ s/$_// } }
			&amp;joinitem('iI'); &amp;fmsg('失');
		}
	}
}

#-END of ADD- SION0002v3.01-2-5(2)/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">perl/fight.cgi # Fight Message # Line:237</FONT></B><BR>
<b>'奪',"$pnmから$itemを奪いました", </b><br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="4">

		  '奪',&quot;$pnmから$itemを奪いました&quot;,

#-ADD-

		  '失',&quot;$pnm に $itemを奪われました&quot;,

#-END of ADD- SION0002v3.01-2-6/18
</TEXTAREA>

Parts10

<BR>
<B><FONT color="#0000FF">ini/filepath.cgi # ---------- USER DIRECTORY Line:19 </FONT></B><BR>
<b>$usrdir = 'userdata/'; # ユーザデータを格納するフォルダ </b><br>
<FONT color="#FF00FF">
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="4">
$usrdir = 'userdata/'; # ユーザデータを格納するフォルダ
#-ADD-
$nghead = 'NPC'; # npcファイルの接頭子(***0000.dat)
#-END of ADD- SION0002v3.01-3-7/18
</TEXTAREA><BR>
※ 'NPC' の部分は任意に変更して下さい。<BR>
ファイル名を変更せず、デフォルト(ID4桁のみ)を使う場合は Null('')にして下さい。</FONT>

Parts11

<BR>
<B><FONT color="#0000FF">perl/find.cgi # Sub Find Item # Line:45</FONT></B><BR>
<b>require $itemcreatorpl; ($inm,$idt) = &item_ceator($inm,$idt); </b><Br>
<FONT color="#FF00FF">
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-ADD-
#-------- NPC出現 -------------------

if ($idt =~ /Ng/ || $idt =~ /Ms/) {
	$ngid = substr($idt,0,4);
	$Fm{'pd'} = $nghead . $ngid;
	$runtf = substr($idt,4,2);
	$runtv = substr($idt,6,2);
	if ($sp =~ /Tf/) { $run = $runtf } else { $run = $runtv }
	$runrd = int(rand(100) + 1);
	&amp;joinitem('i'); &amp;userout;
	if ($run &gt;= $runrd ) {
		if ($idt =~ /Ms/) { push (@msg,&quot;何かが近づく気配に気付いたので、うまくやり過ごしました。&quot;);
			$exp += int(rand(5)); }
		else              { push (@msg,&quot;何物かが草陰から走り去って行きました。&quot;); }
	} else {
		$find = 'find';
		if ($idt =~ /Ms/) {
			push (@msg,&quot;&lt;HR&gt;$inm が現れ、戦闘となりました。&lt;HR&gt;&quot;);
			require $fightpl; &amp;fight; }
		else {
			push (@msg,&quot;&lt;HR&gt;$inm に出会いました。&quot;);
			$notfound = 0; }
		last; }
	return; }

#-END of ADD- SION0002v3.01-4-8/18

require $itemcreatorpl; ($inm,$idt) = &amp;item_ceator($inm,$idt);

</TEXTAREA></FONT><BR>
※ 出会いやすくしたり出会い難くするスキルを追加する場合は、<BR>
$runrd = int(rand(100) + 1); <BR>
の行を改造します。

Parts12

<BR>
<B><FONT color="#0000FF">perl/form.cgi # Sub Play Form # Line:14-19</FONT></B><BR>
<b> if ( $Fm{'mode'} eq 'find_item' ) {<BR>

		require $findpl; srand(time | $$);<BR>
		foreach(0 .. ($Fm{'it'} -1)) { undef @founditems; &find_item; } <BR>
		}<BR>
		#鍛冶<BR>
		elsif ( $Fm{'mode'} eq 'smith_after' ) { require $smithpl; &smith_after; 
		} </b><br>

<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-EDIT- if ( $Fm{'mode'} eq 'find_item' ) {
# require $findpl; srand(time | $$);
# foreach(0 .. ($Fm{'it'} -1)) { undef @founditems; &amp;find_item; }
# }
##鍛冶
# elsif ( $Fm{'mode'} eq 'smith_after' ) { require $smithpl; &amp;smith_after; }

if ( $Fm{'mode'} eq 'smith_after' ) { require $smithpl; &amp;smith_after; }

#-END of EDIT- SION0002v3.01-5-9/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">perl/form.cgi # Sub Contact Form # Line:61 </FONT></B> <BR>
<b>if ( $Fm{'mode'} eq 'find_partner' ) { require $anypl; &contact_check } </b><br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-EDIT- if ( $Fm{'mode'} eq 'find_partner' ) { require $anypl; &amp;contact_check }

if ( $Fm{'mode'} eq 'find_item' ) {
	$notfound = 1; 
	require $findpl; srand(time | $$);
	foreach(0 .. ($Fm{'it'} -1)) { undef @founditems; &amp;find_item; }
}
elsif ( $Fm{'mode'} eq 'find_partner' ) { require $anypl; &amp;contact_check }

#-END of ADD- SION0002v3.01-5-10/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">sos2.cgi # Main Program # Line:36</FONT></B><BR>
<b>elsif ($Fm{'mode'} eq 'find_item') { require $formpl; &play_form } </b><br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="3">
#-EDIT-elsif ($Fm{'mode'} eq 'find_item') { require $formpl; &amp;play_form }
elsif ($Fm{'mode'} eq 'find_item') { require $formpl; &amp;contact_form }
#-END of EDIT- SION0002v3.01-5-11/18
</TEXTAREA>

Parts13

<BR>
<B><FONT color="#0000FF">perl/action.cgi # Sub Contact Action # Line:69</FONT></B><BR>
<b>if ($psp =~ /(V[a-z])/ && $bg !~ /$1/) { &error("$pnmに会うためにはあるアイテムが必要です")

		} </b><br>

<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="2">
#-DEL- if ($psp =~ /(V[a-z])/ &amp;&amp; $bg !~ /$1/) { &amp;error(&quot;$pnmに会うためにはあるアイテムが必要です&quot;) }
#-END of DEL- SION0002v3.01-6-12/18
</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">perl/action.cgi # Sub Contact Action # Line:85</FONT></B><BR>
<b>&OKbuttoninform('on'); </b><br>
<TEXTAREA name="textarea20" cols="100" wrap="OFF" rows="5">
#-ADD-

if ($find || $Fm{'find'}) {
	push (@editor,&quot;NPC遭遇 Ver 3.01 &lt;A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'&gt;by SION & SOSWiki&lt;/A&gt;&quot;);
	&amp;input('hidden','find','on','',''); }

#-END of ADD- SION0002v3.01-6-13/18

&amp;OKbuttoninform('on');

</TEXTAREA>

Parts14

<BR>
<B><FONT color="#0000FF">ufs2.cgi # ------------ USER DIRECTORY Line39<BR>
dollEx 版は不要</FONT></B> <BR>
<b>$usrdir = 'userdata/'; # ユーザデータを格納しているフォルダ </b><br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="4">
$usrdir = 'userdata/'; # ユーザデータを格納しているフォルダ
#-ADD-
$nghead = 'NPC'; # npcファイルの接頭子(***0000.dat)
#-END of ADD- SION0002v3.01-7-14/18
</TEXTAREA><BR>
※ 改造ポイント03に併せて下さい。 <BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Make From # Line576 </FONT></B><BR>
<B><FONT color="#0000FF">ufs/make.cgi # Sub Make From # Line:6</FONT></B><BR>
<b>print qq|&lt;tr>&lt;td>名前&lt;/td>&lt;td>&lt;input type=text name=name>&lt;/td>&lt;/tr>\n|; </b><Br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="4">
#-ADD-

print qq|&lt;tr&gt;&lt;td colspan=2&gt;&lt;input type=checkbox name=npc&gt; NPC&lt;/td&gt;&lt;/tr&gt;\n|;

#-END of ADD- SION0002v3.01-7-15/18

print qq|&lt;tr&gt;&lt;td&gt;名前&lt;/td&gt;&lt;td&gt;&lt;input type=text name=name&gt;&lt;/td&gt;&lt;/tr&gt;\n|;

</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Made From # Line605</FONT></B><BR>
<B><FONT color="#0000FF">ufs/make.cgi # Sub Made From # Line:33</FONT></B><BR>
<b>while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) } </b><br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="5">
#-EDIT- while (-e &quot;$usrdir$id\.dat&quot;) { $id++; $id = sprintf(&quot;%04d&quot;,$id) }

if (!$Fm{'npc'}) { while (-e &quot;$usrdir$id\.dat&quot;) { $id++; $id = sprintf(&quot;%04d&quot;,$id) }
} else {
	while (-e &quot;$usrdir$nghead$id\.dat&quot;) { $id++; $id = sprintf(&quot;%04d&quot;,$id) }
	$id = $nghead . $id;
	if ($jsp !~ /Ng/) { $jsp .= 'Ng'; }
}

#-END of EDIT- SION0002v3.01-7-16/18
</TEXTAREA><BR>
<FONT color="#FF00FF">※ 必要に応じ、.dat を .cgi に修正して下さい(3箇所)</FONT><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Make Free # Line620</FONT></B> <BR>
<B><FONT color="#0000FF">ufs/make.cgi # Sub Make Free # Line:46</FONT></B><BR>
<b>print qq|&lt;tr>&lt;td>名前&lt;/td>&lt;td>&lt;input type=text name=name>&lt;/td>&lt;/tr>\n|; </b><br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="4">
#-ADD-

print qq|&lt;tr&gt;&lt;td colspan=2&gt;&lt;input type=checkbox name=npc&gt; NPC&lt;/td&gt;&lt;/tr&gt;\n|;

#-END of ADD- SION0002v3.01-7-17/18

print qq|&lt;tr&gt;&lt;td&gt;名前&lt;/td&gt;&lt;td&gt;&lt;input type=text name=name&gt;&lt;/td&gt;&lt;/tr&gt;\n|;

</TEXTAREA><BR><BR><BR>
<B><FONT color="#0000FF">ufs2.cgi # Sub Made Free # Line647</FONT></B><BR>
<B><FONT color="#0000FF">ufs/make.cgi # Sub Made Free # Line:73 </FONT></B><BR>
<b>while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) } </b><br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="5">
#-EDIT- while (-e &quot;$usrdir$id\.dat&quot;) { $id++; $id = sprintf(&quot;%04d&quot;,$id) }

if (!$Fm{'npc'}) {
	while (-e &quot;$usrdir$id\.dat&quot;) { $id++; $id = sprintf(&quot;%04d&quot;,$id) }
} else {
	while (-e &quot;$usrdir$nghead$id\.dat&quot;) { $id++; $id = sprintf(&quot;%04d&quot;,$id) }
	$id = $nghead . $id;
	if ($Fm{'sp'} !~ /Ng/) { $Fm{'sp'} .= 'Ng'; }
}

#-END of EDIT- SION0002v3.01-7-18/18
</TEXTAREA><BR>
<FONT color="#FF00FF">※ 必要に応じ、.dat を .cgi に修正して下さい(3箇所)</FONT>

Parts15

NPCとの遭遇データを設定します。<br>
<P><B><FONT color="#0000FF">itm.dat 任意の場所に追加</FONT> ( dollEx ver の場合は、dat/itm.cgi )</B></P>
<P><FONT color="#FF0000"><B>NPC名<>8桁のステータス+Ng<>出現割合<></B></FONT> として、NPCを設置するか、または<BR>
<FONT color="#FF0000"><B>NPC名<>8桁のステータス+Ms<>出現割合<></B></FONT> として、モンスタを設置します。</P>
<P><B><FONT color="#FF0000">NPC</FONT><FONT color="#FF0000">名</FONT></B><BR>
例えば「キメラ」の場合、「キメラ」と設定しても構いませんが、「鳥の様なモンスター」と設定しても面白いでしょう。 </P>
<P><FONT color="#FF0000"><B>ステータス(1〜4桁目)</B></FONT><BR>
 NPCのIDの数値部分4桁を設定します。<BR>
 実際のNPC-IDは、改造ポイント3で設定した $nghead+このID4桁 となります。</P>
<P><FONT color="#FF0000"><B>ステータス(5〜6桁目)</B></FONT><BR>

 戦闘系キャラ(Tf)の場合の、逃げる(またはNPCに逢い損ねる)確率を設定します。 </P>

<P><B><FONT color="#FF0000">ステータス(7〜8桁目)</FONT></B><BR>

 非戦闘系キャラ(Tfが無い)の場合の、逃げる(またはNPCに逢い損ねる)確率を設定します。 </P>

<P> <B><FONT color="#FF0000">Ms</FONT></B><BR>
 遭遇した場合、強制的に戦闘を開始します。Ng より優先されます。</P>
<P><B><FONT color="#FF0000">Ng</FONT> </B> <BR>
 Ms が設定されていない場合には、そのNPCとの遭遇画面となります。</P>
<P><B><FONT color="#FF0000">出現割合には、そのNPCに出会う確率値を入れます。</FONT></B>通常のアイテムと同様に設定して下さい。 <BR><BR></P>
<P><FONT color="#0000FF"><B>ufs2.cgi を使用して設定する事も可能です。 </B></FONT> </P>
<P>この場合、次の様に設定して下さい。</P>
<P>アイテム名 ⇒ NPC名<BR>
買取価格  ⇒ ステータス 1〜4桁目<BR>
属性    ⇒ Ms 又は Ng<BR>
攻撃値   ⇒ ステータス 5〜6桁目<BR>
防御値   ⇒ ステータス 7〜8桁目<BR>
発見確率  ⇒ 出現割合 </P>

Parts16

NPCデータを作成します。<br>
<P><FONT color="#0000FF"><B><FONT color="#0000FF">通常の「キャラクタを作る手順」で作成して構いません。</FONT></B></FONT></P>
<P><FONT color="#0000FF"><B>ufs2.cgi を使用して作成する場合には、NPCのチェックボックスをONにして作成して下さい。</B></FONT><BR>
この場合、自動的に キャラスキルフラグに Ng が追加されます。</P>

Parts17

<BR>
<B><FONT color="#0000FF">sos2.cgi # Sub fight # Line:1662</FONT></B><BR>
<B><FONT color="#0000FF">perl/fight.cgi # Sub fight # Line:172</FONT></B><BR>
<b>$bp = $bn = $pbp = $pbn = ''; $plf = $id; </b><br>
<TEXTAREA name="textarea" cols="100" wrap="OFF" rows="5"> $bp = $bn = $pbp = $pbn = ''; $plf = $id;
#-ADD-

if ($psp =~ /Ng/) {
	if ($psp =~ /KIL(\d\d\d\d)/ &amp;&amp; $pav =~ /dead/) { $mn += $1; push(@msg,&quot;モンスターは $1 Gを落とした!&quot;); }
	elsif ($psp =~ /MNY(\d\d\d\d)/ &amp;&amp; $result == 1) { $mn += $1; push(@msg,&quot;モンスターは $1 Gを落とした!&quot;); }
}

#-END of ADD- SION0002v3.01-10-add
</TEXTAREA><BR>
KIL0000 フラグを追加したNPCを「殺害」すると 0000 G入手出来る。<BR>
MNY0000 フラグを追加したNPCに「勝利」すると 0000 G入手出来る。<BR>

いずれも、ゲーム内の所持金流通量を増加させるため、ゲームバランスの調整が難しくお奨めではありません。<BR>

最低限、乱用はさけ、また入手できる金額も抑えましょう。<BR>