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 > 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 < 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,"$pnmとは暫く戦えません"); return }
if ($plf eq $id && !$find) { push (@msg,"$pnmとは暫く戦えません"); 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,"NPC遭遇(モンスター遭遇) Ver 3.00 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); } 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 && !$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 && $pitems[$Sidice]) { &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,"$item△$sts"); $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/; &joinitem('iI'); &fmsg('奪'); } }
#-ADD-
} else { if ($itemchance && $items[$Sidice]) { &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,"$item△$sts"); $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/; &joinitem('iI'); &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">
'奪',"$pnmから$itemを奪いました",
#-ADD-
'失',"$pnm に $itemを奪われました",
#-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 >= $runrd ) { if ($idt =~ /Ms/) { push (@msg,"何かが近づく気配に気付いたので、うまくやり過ごしました。"); $exp += int(rand(5)); } else { push (@msg,"何物かが草陰から走り去って行きました。"); } } else { $find = 'find'; &joinitem('i'); &userout; $getuserflag = 0; if ($idt =~ /Ms/) { push (@msg,"<HR>$inm が現れ、戦闘となりました。<HR>"); &fight; } else { push (@msg,"<HR>$inm に出会いました。"); $notfound = 0; } return; } # 複数回探索を取り入れている場合は、last; に変更する。 return; }
#-END of ADD- SION0002v3.01-4-8/18
if ($idt !~ /Gl/) { push(@items,"$inm△$idt"); &joinitem('i') }
</TEXTAREA></FONT><BR>
※ 出会いやすくしたり出会い難くするスキルを追加する場合は、<BR>
$runrd = int(rand(100) + 1); の行を改造します。<BR>
<FONT color="#FF0000">※ 複数回探索を取り入れている場合には、1つ目の return を last に書き換えて下さい。 <BR>
また、foreach のループの外にある &userout; は、if (!$find) { &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- &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; &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') { &play_form }
elsif ($Fm{'mode'} eq 'find_item') { &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;
# &splititem('i');
# foreach (@items) {
# $right = 1 if (split(/△/))[1] =~ /$vflag/;
# }
# if (!$right) {
# &error("$pnmに会うためにはあるアイテムが必要です");
# }
# }
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,"NPC遭遇 Ver 3.00 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); &input('hidden','find','on','',''); }
#-END of ADD- SION0002v3.01-6-13/18
&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 < 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) = &fight_check;
if (!$find && !$Fm{'find'}) { my($afgt_chk,$afck_msg) = &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,"NPC遭遇(モンスター遭遇) Ver 3.00 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); 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 && !$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 && $pitems[$Sidice]) { &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,"$item△$sts"); $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/$_// } } &joinitem('iI'); &fmsg('奪'); } }
#-ADD-
} else { if ($itemchance && $items[$Sidice]) { &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,"$item△$sts"); $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/$_// } } &joinitem('iI'); &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">
'奪',"$pnmから$itemを奪いました",
#-ADD-
'失',"$pnm に $itemを奪われました",
#-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); &joinitem('i'); &userout; if ($run >= $runrd ) { if ($idt =~ /Ms/) { push (@msg,"何かが近づく気配に気付いたので、うまくやり過ごしました。"); $exp += int(rand(5)); } else { push (@msg,"何物かが草陰から走り去って行きました。"); } } else { $find = 'find'; if ($idt =~ /Ms/) { push (@msg,"<HR>$inm が現れ、戦闘となりました。<HR>"); require $fightpl; &fight; } else { push (@msg,"<HR>$inm に出会いました。"); $notfound = 0; } last; } return; }
#-END of ADD- SION0002v3.01-4-8/18
require $itemcreatorpl; ($inm,$idt) = &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; &find_item; }
# }
##鍛冶
# elsif ( $Fm{'mode'} eq 'smith_after' ) { require $smithpl; &smith_after; }
if ( $Fm{'mode'} eq 'smith_after' ) { require $smithpl; &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; &contact_check }
if ( $Fm{'mode'} eq 'find_item' ) { $notfound = 1; require $findpl; srand(time | $$); foreach(0 .. ($Fm{'it'} -1)) { undef @founditems; &find_item; } } elsif ( $Fm{'mode'} eq 'find_partner' ) { require $anypl; &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; &play_form }
elsif ($Fm{'mode'} eq 'find_item') { require $formpl; &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])/ && $bg !~ /$1/) { &error("$pnmに会うためにはあるアイテムが必要です") }
#-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,"NPC遭遇 Ver 3.01 <A href='http://www.salion2.halfmoon.jp/soswiki/wiki.cgi' target='_blank'>by SION & SOSWiki</A>"); &input('hidden','find','on','',''); }
#-END of ADD- SION0002v3.01-6-13/18
&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|<tr><td>名前</td><td><input type=text name=name></td></tr>\n|; </b><Br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="4">
#-ADD-
print qq|<tr><td colspan=2><input type=checkbox name=npc> NPC</td></tr>\n|;
#-END of ADD- SION0002v3.01-7-15/18
print qq|<tr><td>名前</td><td><input type=text name=name></td></tr>\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 "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) }
if (!$Fm{'npc'}) { while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) } } else { while (-e "$usrdir$nghead$id\.dat") { $id++; $id = sprintf("%04d",$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|<tr><td>名前</td><td><input type=text name=name></td></tr>\n|; </b><br>
<TEXTAREA name="textarea19" cols="100" wrap="OFF" rows="4">
#-ADD-
print qq|<tr><td colspan=2><input type=checkbox name=npc> NPC</td></tr>\n|;
#-END of ADD- SION0002v3.01-7-17/18
print qq|<tr><td>名前</td><td><input type=text name=name></td></tr>\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 "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) }
if (!$Fm{'npc'}) { while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) } } else { while (-e "$usrdir$nghead$id\.dat") { $id++; $id = sprintf("%04d",$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)/ && $pav =~ /dead/) { $mn += $1; push(@msg,"モンスターは $1 Gを落とした!"); } elsif ($psp =~ /MNY(\d\d\d\d)/ && $result == 1) { $mn += $1; push(@msg,"モンスターは $1 Gを落とした!"); } }
#-END of ADD- SION0002v3.01-10-add
</TEXTAREA><BR>
KIL0000 フラグを追加したNPCを「殺害」すると 0000 G入手出来る。<BR>
MNY0000 フラグを追加したNPCに「勝利」すると 0000 G入手出来る。<BR>
いずれも、ゲーム内の所持金流通量を増加させるため、ゲームバランスの調整が難しくお奨めではありません。<BR>
最低限、乱用はさけ、また入手できる金額も抑えましょう。<BR>