▼スレッド
│
└◇1348:Re[2]:命中・回避アップ [醒夢] 11/19 23:37
└◇1349:Re[3]:命中・回避アップ [moon] 11/20 00:25
└◇1354:Re[4]:命中・回避アップ [醒夢] 11/20 12:27
└◇1356:Re[5]:命中・回避アップ [moon] 11/20 20:52
└◇1363:Re[6]:命中・回避アップ [醒夢] 11/21 18:35<-last
ご回答ありがとうございます。スレッド一覧
私もそういう風にすれば出来るかと思ったのですが無理でした。
やはり一つのフラグに二つの変数を格納しているというのがダメなんですかね?
でも、とあるサイトさんでは勝利数や敗北数を消費して命中・回避を上げる施設があるんですがね。原理は似ているから出来そうなんですが…。
> 私もそういう風にすれば出来るかと思ったのですが無理でした。スレッド一覧
> やはり一つのフラグに二つの変数を格納しているというのがダメなんですかね?
$quが該当パラメータだと思いますので、パラメータを参照または変更する前に、
($hi, $ev) = split(/△/, $qu);
パラメータを変更した後に、
$qu = join('△', $hi, $ev);
を実行すれば反映されると思います。
レスありがとうございます。スレッド一覧
こんな感じにしてみたのですがこれでいいのでしょうか?
# Sub Lv Form #
sub lv_form {
&level_up_after if $Fm{'mode'} eq 'level_up_after';
&header;
&table_top;
&level_up_before if $Fm{'mode'} eq 'level_up_before';
&msg;
&normal_action;
&player_data;
&table_bottom;
}
# Sub User Level Up Before #
sub level_up_before {
@rcdlines = &get_user("$Fm{'id'}");
$fg = 'LVB'; &userout;
$next_exp = ($lv+1) * $exp_rvs;
if($exp < $next_exp){ push (@msg,"経験値が足りません。次のレベルにはあと$next_exp-$expの経験値が必要です"); return }
($hi,$ev) = split(/△/,$qu);
# 上昇する可能性のある能力の配列作成ここより
if($sp =~ /Tf/){
if($ak < $Max_ak){ push(@sts_up,"攻撃力") }
if($dd < $Max_dd){ push(@sts_up,"防御力") }
if($hi < $Max_hi){ push(@sts_up,"命中率") }
if($ev < $Max_ev){ push(@sts_up,"回避率") }
if($xp < $Max_xp){ push(@sts_up,"HP") }
if($xi < $Max_xi){ push(@sts_up,"所持数") }
}else{
if($xp < $Max_xp){ push(@sts_up,"体力") }
if($xi < $Max_xi){ push(@sts_up,"所持数") }
}
# ここまで
$sts_up = @sts_up;
if(!$sts_up){ push (@msg,'成長する能\力値がありません'); return }
push (@msg,"成長させたい\能\力を選択し、$def_okボタンを押してください");
&form('start'); print qq|<tr><td colspan=2>|;
foreach (0 .. $#sts_up) {
&input('radio','LVU',"$sts_up[$_]",'checked',''); print qq|$sts_up[$_]\n|;
}
&OKbuttoninform('n','level_up_after');
print qq|</td></tr>|; &form('end');
}
# Sub User Level Up After #
sub level_up_after {
@rcdlines = &get_user("$Fm{'id'}");
return if $fg ne 'LVB';
$next_exp = ($lv+1) * $exp_rvs;
if($exp < $next_exp){ push (@msg,"経験値が足りません。次のレベルには$next_expの経験値が必要です"); return }
if($Fm{'LVU'} eq "攻撃力"){
$grow_up = int(rand($stsup_ak_rvs)+1);
$Max_grow_up = $Max_ak - $ak;
$grow_up = $Max_grow_up if $grow_up > $Max_grow_up;
$ak += $grow_up;
}
elsif($Fm{'LVU'} eq "防御力"){
$grow_up = int(rand($stsup_dd_rvs)+1);
$Max_grow_up = $Max_dd - $dd;
$grow_up = $Max_grow_up if $grow_up > $Max_grow_up;
$dd += $grow_up;
}
elsif($Fm{'LVU'} eq "命中率"){
$grow_up = int(rand($stsup_hi_rvs)+1);
$Max_grow_up = $Max_hi - $hi;
$grow_up = $Max_grow_up if $grow_up > $Max_grow_up;
$hi += $grow_up;
}
elsif($Fm{'LVU'} eq "回避率"){
$grow_up = int(rand($stsup_ev_rvs)+1);
$Max_grow_up = $Max_ev - $ev;
$grow_up = $Max_grow_up if $grow_up > $Max_grow_up;
$ev += $grow_up;
}
elsif($Fm{'LVU'} eq "HP"){
$grow_up = int(rand($stsup_xp_rvs)+1);
$Max_grow_up = $Max_xp - $xp;
$grow_up = $Max_grow_up if $grow_up > $Max_grow_up;
$xp += $grow_up;
}
elsif($Fm{'LVU'} eq "所持数"){
$grow_up = int(rand($stsup_xi_rvs)+1);
$Max_grow_up = $Max_xi - $xi;
$grow_up = $Max_grow_up if $grow_up > $Max_grow_up;
$xi += $grow_up;
}
$qu = join('△', $hi, $ev);
push (@msg,"LvUP!$Fm{'LVU'}が$grow_up上がった!");
$exp -= $next_exp;
$lv++;
$fg = ''; &userout;
}
1;
> こんな感じにしてみたのですがこれでいいのでしょうか?スレッド一覧
splitとjoinしか見ていませんが、sub level_up_afterでsplitしていないようです。
ありがとうございます!スレッド一覧
無事上げる事が出来ました。
仰る通りafterの方にsplitを入れていなかったのが問題だったようです。