「ネット航海時代の改造」の編集履歴(バックアップ)一覧はこちら
「ネット航海時代の改造」(2010/09/20 (月) 19:12:13) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<h3 id="id_c0c59542"><span style="color:rgb(255,0,0);">自分で考えたい人のために例は白文字にしています。</span></h3>
<div>一応コピペじゃ動作しないようにしてるから自力で頑張ってね。簡単に動くけど。<br />
挿入場所も自力で考えてね。</div>
<p> </p>
<div>
なお付け焼刃の知識&昔遊んだ改造から掘り起こしているプログラムのため間違いや、もっとスマートな方法、文法があるかもしれないのであしからず。</div>
<p> </p>
<h2 id="id_9961a0c4">Lvがあがった場合に表示する</h2>
<div>簡単な方法としてsys.cgiの個人データに変数を追加し、Lvを記録させる。<br />
記録したLvと現在のLvを比較し上がったなら文字列を表示させる。<br />
これで出来ます。</div>
<p> </p>
<div>例<br /><span style="color:rgb(255,255,255);">if($現在冒険Lv >
$記録した冒険Lv){&msg("冒険Lvが上がりました")$記録した冒険Lv=$冒険Lv}</span></div>
<p> </p>
<h2 id="id_977e517e">履歴に時間と分を追加する</h2>
<div>日付取得のsubの日付に時間と分を追加する。</div>
<p> </p>
<div>例<br /><span style="color:rgb(255,255,255);">$日付 = sprintf("%04d\/%02d\/%02d\
%02d\:%02d",$year,$month,$day,$時間,$分)</span></div>
<p> </p>
<h2 id="id_f9fcf888">クリア済の冒険を終了表示にする</h2>
<div>終了済みクエストと該当クエストを比較し含んでいれば終了表示にする。<br />
例<br /><span style="color:rgb(255,255,255);">if($終了済みクエスト【比較演算子】/$file/){print
qq|<input type=radio name=goods value="$_"$checked>終了済み $price
G<br>|}else{print qq|<input type=radio name=goods
value="$_"$checked>$price G<br>|}</span><br />
これを弄れば終了済みは表示しない、選択出来ないようにする等も出来ます。</div>
<p> </p>
<h2 id="id_4b80c17e">港一覧に現在地を表示する</h2>
<div>港リストから飛ばす処理をしている場所を弄ります。</div>
<p> </p>
<div>例<br /><span style="color:rgb(255,255,255);">if ($港 == $現在港) {print qq|<input
type=否選択ラジオボタン>$港(現在地)<br>\n|next;}</span><br />
同様に沖も処理。</div>
<p> </p>
<h2 id="id_2df49a9a">CPUを作ってみる</h2>
<div>CPUはユーザーをCPUとして処理することで作成できます。<br />
場合によってはプログラムのみでも可(船にダメージを与える処理など)。<br />
CPUデータの読み込みと書き込みを忘れないように気をつけてください。</div>
<p> </p>
<div>CPUをストーカーさせてみる。これは簡単。ターゲット対象の処理は自分で考えてね<br />
港の数値を弄れば沖のみ移動になります。<br /><span style="color:rgb(255,255,255);">$uarea=$area $uport=$port</span></div>
<p> </p>
<div>沖移動のみで待機させてみる。<br /><span style="color:rgb(255,255,255);">$ulast=$last if($ulast>$umoved){$uarea=$area<br />
$uport=""<br />
$umoved=$moved+待機時間}<br />
&set_u<br /></span></div>
<p> </p>
<div>
<p>移動、待機、戦闘を選択させてみる。<br />
ここでは沖移動なので沖に居ない場合は攻撃しないように処理を加える。<br /><span style="color:rgb(255,255,255);">$ulast=$last:if($ulast>$umoved){$アクション=int(rand(2))<br />
if($アクション==0){$uarea=$area;$uport="":$umoved=$moved+600<br />
}elsif($アクション==1 && $area == $uarea &&
!港にいない){&NPCとの戦闘処理<br />
}else{$umoved=time+60;}}</span></p>
<p> </p>
<p>戦闘処理(攻撃対象のみダメージ)</p>
<p><font color="#FFFFFF">sub 戦闘処理{<br />
&船データの読み込み;<br />
&msg("NPC襲撃告知<br>")<br />
for($攻撃回数=0;$攻撃回数<最大攻撃回数;$攻撃回数++){<br />
my $CPUの攻撃力 = 1+int(rand(1));<br />
$攻撃対象 = int(rand(@ship));<br />
$攻撃対象のHP = $ship[$攻撃対象][2] - $攻撃力<br />
if ($攻撃対象のHP <= 0) {&msg("<font
color=\"#FF0000\">$ship[$攻撃対象][4]を撃沈されました!</font>");<br />
&add_record("CPUに撃沈された告知 撃沈された船の告知:$ship[$攻撃対象][4]")<br />
&i_lost;<br />
undef @ship_ind;<br />
return if @ship < 0;<br />
foreach (0 .. $#ship) {<br />
next if !$ship[$_][0];<br />
push(@ship_ind ,
"$ship[$_][0],$ship[$_][1],$ship[$_][2],$ship[$_][3],$ship[$_][4]");}<br />
return if $#ship < 0;<br />
} else {<br />
splice(@ship_ind, $攻撃対象 , 1 ,
"$ship[$攻撃対象][0],$ship[$攻撃対象][1],$攻撃対象のHP,$ship[$攻撃対象][3],$ship[$攻撃対象][4]");<br />
&msg("<font color=\"#FF0000\">$ship[$攻撃対象][4]を攻撃されました! $攻撃力
ptのダメージを受けました!</font>");<br />
}}}</font></p>
<p> </p>
<p><br />
CPUにHPを設定しHP0で非表示にしてみる。ここでは商人名声をHPに設定。</p>
<p><font color="#FFFFFF">CPUデータ読み込み<br />
if($uid == "00001"){<br />
if($商人名声>0){<br />
$基本攻撃力=int(rand(2)+1);<br />
$攻撃力=int($a_i_atk*$基本攻撃力+30←おまけは適当に);<br />
$商人名声-=$攻撃力;&msg("$unameに$攻撃力 ptのダメージ")CPUデータ書き込み;}</font><br />
HPが0以下になった場合<br /><font color="#FFFFFF">if($商人名声<=0){&event_write("$unameが消滅しました。");<br />
&msg("$unameを消滅させました。");$非表示判断=1;<br />
$umoved=time+1;<br />
$負け数 増加処理;<br />
$商人名声=100*$負け数+500←おまけ;CPUデータ書き込み;}</font><br /><br />
で襲撃欄に表示する処理の所で非表示判断が1だった場合処理を飛ばせばOK。<br /><br />
非表示の解消 上の選択処理に追加すればOK.<br /><br /><font color="#FFFFFF"> $ulast=$last;<br />
if($ulast>$umoved){<br />
$アクション=int(rand(2));<br />
if($非表示判断==1&&$アクション==0){$非表示判断=0;&event_write("$unameが復活");&msg("$unameが復活しました。")}elseif($非表示判断==0){<br />
if($アクション==0){<br />
$uarea=$area; ・・・・・</font><br />
<br /><br /><strong><font size="4">勝敗の記録と表示</font></strong><br />
SYSに変数を追加しBATTLEの勝敗部分で増加処理をして表示したい部分に表示させるだけなので例は省略。<br /><br /><br /><strong><font size="4">探索</font></strong><br />
昔ソロモンコピって遊んでた時の産物を晒してみようと思ったけどまんま晒すのは改造できないのに改造鯖を作っちゃう人が居そうだからやめました。<br />
ヒント的なことを書いておくと、既存の航海時代のプログラムを弄ってけば作れます。<br />
特定の財宝がないと発見できないだとか、発見できても特定財宝(例えば鍵)が無ければ獲得できない等もできます。<br /><br /><br />
何か知りたかったり分からなかったらTOPに書いてね。気分で返事する。<br /><br /><br />
最終更新 2010/09/12 16:36 眠いから寝る(´・ω・`)</p>
</div>
<h3 id="id_c0c59542"><span style="color:rgb(255,0,0);">自分で考えたい人のために例は白文字にしています。</span></h3>
<h3><span style="color:rgb(255,0,0);">この例を使用する場合ご一報下さい。あなたの海を見に行くZE☆</span></h3>
<div>一応コピペじゃ動作しないようにしてるから自力で頑張ってね。簡単に動くけど。<br />
挿入場所も自力で考えてね。</div>
<p> </p>
<div>
なお付け焼刃の知識&昔遊んだ改造から掘り起こしているプログラムのため間違いや、もっとスマートな方法、文法があるかもしれないのであしからず。</div>
<p> </p>
<h2 id="id_9961a0c4">Lvがあがった場合に表示する</h2>
<div>簡単な方法としてsys.cgiの個人データに変数を追加し、Lvを記録させる。<br />
記録したLvと現在のLvを比較し上がったなら文字列を表示させる。<br />
これで出来ます。</div>
<p> </p>
<div>例<br /><span style="color:rgb(255,255,255);">if($現在冒険Lv >
$記録した冒険Lv){&msg("冒険Lvが上がりました")$記録した冒険Lv=$冒険Lv}</span></div>
<p> </p>
<h2 id="id_977e517e">履歴に時間と分を追加する</h2>
<div>日付取得のsubの日付に時間と分を追加する。</div>
<p> </p>
<div>例<br /><span style="color:rgb(255,255,255);">$日付 = sprintf("%04d\/%02d\/%02d\
%02d\:%02d",$year,$month,$day,$時間,$分)</span></div>
<p> </p>
<h2 id="id_f9fcf888">クリア済の冒険を終了表示にする</h2>
<div>終了済みクエストと該当クエストを比較し含んでいれば終了表示にする。<br />
例<br /><span style="color:rgb(255,255,255);">if($終了済みクエスト【比較演算子】/$file/){print
qq|<input type=radio name=goods value="$_"$checked>終了済み $price
G<br>|}else{print qq|<input type=radio name=goods
value="$_"$checked>$price G<br>|}</span><br />
これを弄れば終了済みは表示しない、選択出来ないようにする等も出来ます。</div>
<p> </p>
<h2 id="id_4b80c17e">港一覧に現在地を表示する</h2>
<div>港リストから飛ばす処理をしている場所を弄ります。</div>
<p> </p>
<div>例<br /><span style="color:rgb(255,255,255);">if ($港 == $現在港) {print qq|<input
type=否選択ラジオボタン>$港(現在地)<br>\n|next;}</span><br />
同様に沖も処理。</div>
<p> </p>
<h2 id="id_2df49a9a">CPUを作ってみる</h2>
<div>CPUはユーザーをCPUとして処理することで作成できます。<br />
場合によってはプログラムのみでも可(船にダメージを与える処理など)。<br />
CPUデータの読み込みと書き込みを忘れないように気をつけてください。</div>
<p> </p>
<div>CPUをストーカーさせてみる。これは簡単。ターゲット対象の処理は自分で考えてね<br />
港の数値を弄れば沖のみ移動になります。<br /><span style="color:rgb(255,255,255);">$uarea=$area $uport=$port</span></div>
<p> </p>
<div>沖移動のみで待機させてみる。<br /><span style="color:rgb(255,255,255);">$ulast=$last if($ulast>$umoved){$uarea=$area<br />
$uport=""<br />
$umoved=$moved+待機時間}<br />
&set_u<br /></span></div>
<p> </p>
<div>
<p>移動、待機、戦闘を選択させてみる。<br />
ここでは沖移動なので沖に居ない場合は攻撃しないように処理を加える。<br /><span style="color:rgb(255,255,255);">$ulast=$last:if($ulast>$umoved){$アクション=int(rand(2))<br />
if($アクション==0){$uarea=$area;$uport="":$umoved=$moved+600<br />
}elsif($アクション==1 && $area == $uarea &&
!港にいない){&NPCとの戦闘処理<br />
}else{$umoved=time+60;}}</span></p>
<p> </p>
<p>戦闘処理(攻撃対象のみダメージ)</p>
<p><font color="#FFFFFF">sub 戦闘処理{<br />
&船データの読み込み;<br />
&msg("NPC襲撃告知<br>")<br />
for($攻撃回数=0;$攻撃回数<最大攻撃回数;$攻撃回数++){<br />
my $CPUの攻撃力 = 1+int(rand(1));<br />
$攻撃対象 = int(rand(@ship));<br />
$攻撃対象のHP = $ship[$攻撃対象][2] - $攻撃力<br />
if ($攻撃対象のHP <= 0) {&msg("<font
color=\"#FF0000\">$ship[$攻撃対象][4]を撃沈されました!</font>");<br />
&add_record("CPUに撃沈された告知 撃沈された船の告知:$ship[$攻撃対象][4]")<br />
&i_lost;<br />
undef @ship_ind;<br />
return if @ship < 0;<br />
foreach (0 .. $#ship) {<br />
next if !$ship[$_][0];<br />
push(@ship_ind ,
"$ship[$_][0],$ship[$_][1],$ship[$_][2],$ship[$_][3],$ship[$_][4]");}<br />
return if $#ship < 0;<br />
} else {<br />
splice(@ship_ind, $攻撃対象 , 1 ,
"$ship[$攻撃対象][0],$ship[$攻撃対象][1],$攻撃対象のHP,$ship[$攻撃対象][3],$ship[$攻撃対象][4]");<br />
&msg("<font color=\"#FF0000\">$ship[$攻撃対象][4]を攻撃されました! $攻撃力
ptのダメージを受けました!</font>");<br />
}}}</font></p>
<p> </p>
<p><br />
CPUにHPを設定しHP0で非表示にしてみる。ここでは商人名声をHPに設定。</p>
<p><font color="#FFFFFF">CPUデータ読み込み<br />
if($uid == "00001"){<br />
if($商人名声>0){<br />
$基本攻撃力=int(rand(2)+1);<br />
$攻撃力=int($a_i_atk*$基本攻撃力+30←おまけは適当に);<br />
$商人名声-=$攻撃力;&msg("$unameに$攻撃力 ptのダメージ")CPUデータ書き込み;}</font><br />
HPが0以下になった場合<br /><font color="#FFFFFF">if($商人名声<=0){&event_write("$unameが消滅しました。");<br />
&msg("$unameを消滅させました。");$非表示判断=1;<br />
$umoved=time+1;<br />
$負け数 増加処理;<br />
$商人名声=100*$負け数+500←おまけ;CPUデータ書き込み;}</font><br /><br />
で襲撃欄に表示する処理の所で非表示判断が1だった場合処理を飛ばせばOK。<br /><br />
非表示の解消 上の選択処理に追加すればOK.<br /><br /><font color="#FFFFFF"> $ulast=$last;<br />
if($ulast>$umoved){<br />
$アクション=int(rand(2));<br />
if($非表示判断==1&&$アクション==0){$非表示判断=0;&event_write("$unameが復活");&msg("$unameが復活しました。")}elseif($非表示判断==0){<br />
if($アクション==0){<br />
$uarea=$area; ・・・・・</font><br />
<br /><br /><strong><font size="4">勝敗の記録と表示</font></strong><br />
SYSに変数を追加しBATTLEの勝敗部分で増加処理をして表示したい部分に表示させるだけなので例は省略。<br /><br /><br /><strong><font size="4">探索</font></strong><br />
昔ソロモンコピって遊んでた時の産物を晒してみようと思ったけどまんま晒すのは改造できないのに改造鯖を作っちゃう人が居そうだからやめました。<br />
ヒント的なことを書いておくと、既存の航海時代のプログラムを弄ってけば作れます。<br />
特定の財宝がないと発見できないだとか、発見できても特定財宝(例えば鍵)が無ければ獲得できない等もできます。<br /><br /><br />
何か知りたかったり分からなかったらTOPに書いてね。気分で返事する。<br /><br /><br />
最終更新 2010/09/12 16:36 眠いから寝る(´・ω・`)</p>
</div>