移動、待機、戦闘を選択させてみる。
ここでは沖移動なので沖に居ない場合は攻撃しないように処理を加える。
$ulast=$last:if($ulast>$umoved){$アクション=int(rand(2))
if($アクション==0){$uarea=$area;$uport="":$umoved=$moved+600
}elsif($アクション==1 && $area == $uarea &&
!港にいない){&NPCとの戦闘処理
}else{$umoved=time+60;}}
戦闘処理(攻撃対象のみダメージ)
sub 戦闘処理{
&船データの読み込み;
&msg("NPC襲撃告知<br>")
for($攻撃回数=0;$攻撃回数<最大攻撃回数;$攻撃回数++){
my $CPUの攻撃力 = 1+int(rand(1));
$攻撃対象 = int(rand(@ship));
$攻撃対象のHP = $ship[$攻撃対象][2] - $攻撃力
if ($攻撃対象のHP <= 0) {&msg("<font
color=\"#FF0000\">$ship[$攻撃対象][4]を撃沈されました!</font>");
&add_record("CPUに撃沈された告知 撃沈された船の告知:$ship[$攻撃対象][4]")
&i_lost;
undef @ship_ind;
return if @ship < 0;
foreach (0 .. $#ship) {
next if !$ship[$_][0];
push(@ship_ind ,
"$ship[$_][0],$ship[$_][1],$ship[$_][2],$ship[$_][3],$ship[$_][4]");}
return if $#ship < 0;
} else {
splice(@ship_ind, $攻撃対象 , 1 ,
"$ship[$攻撃対象][0],$ship[$攻撃対象][1],$攻撃対象のHP,$ship[$攻撃対象][3],$ship[$攻撃対象][4]");
&msg("<font color=\"#FF0000\">$ship[$攻撃対象][4]を攻撃されました! $攻撃力
ptのダメージを受けました!</font>");
}}}
CPUにHPを設定しHP0で非表示にしてみる。ここでは商人名声をHPに設定。
CPUデータ読み込み
if($uid == "00001"){
if($商人名声>0){
$基本攻撃力=int(rand(2)+1);
$攻撃力=int($a_i_atk*$基本攻撃力+30←おまけは適当に);
$商人名声-=$攻撃力;&msg("$unameに$攻撃力 ptのダメージ")CPUデータ書き込み;}
HPが0以下になった場合
if($商人名声<=0){&event_write("$unameが消滅しました。");
&msg("$unameを消滅させました。");$非表示判断=1;
$umoved=time+1;
$負け数 増加処理;
$商人名声=100*$負け数+500←おまけ;CPUデータ書き込み;}
で襲撃欄に表示する処理の所で非表示判断が1だった場合処理を飛ばせばOK。
非表示の解消 上の選択処理に追加すればOK.
$ulast=$last;
if($ulast>$umoved){
$アクション=int(rand(2));
if($非表示判断==1&&$アクション==0){$非表示判断=0;&event_write("$unameが復活");&msg("$unameが復活しました。")}elseif($非表示判断==0){
if($アクション==0){
$uarea=$area; ・・・・・
勝敗の記録と表示
SYSに変数を追加しBATTLEの勝敗部分で増加処理をして表示したい部分に表示させるだけなので例は省略。
探索
昔ソロモンコピって遊んでた時の産物を晒してみようと思ったけどまんま晒すのは改造できないのに改造鯖を作っちゃう人が居そうだからやめました。
ヒント的なことを書いておくと、既存の航海時代のプログラムを弄ってけば作れます。
特定の財宝がないと発見できないだとか、発見できても特定財宝(例えば鍵)が無ければ獲得できない等もできます。
何か知りたかったり分からなかったらTOPに書いてね。気分で返事する。
最終更新 2010/09/12 16:36 眠いから寝る(´・ω・`)