▼スレッド
│
└◇1627:Re[7]:連勝数の追加とグラフ表示 [moon] 01/07 22:09
└◇1628:Re[8]:連勝数の追加とグラフ表示 [rien] 01/07 23:09
└◇1629:Re[9]:連勝数の追加とグラフ表示 [moon] 01/07 23:45
└◇1630:Re[10]:連勝数の追加とグラフ表示 [rien] 01/08 00:26
└◇1631:Re[11]:連勝数の追加とグラフ表示 [moon] 01/08 08:09
└◇1632:Re[12]:連勝数の追加とグラフ表示 [rien] 01/08 17:40
└◇1633:Re[13]:連勝数の追加とグラフ表示 [moon] 01/08 23:26
└◇1634:Re[14]:連勝数の追加とグラフ表示 [rien] 01/09 00:29<-last
> すみませんもう1つ質問なのですがスレッド一覧
> 今対人戦闘の戦闘が時間経過で再戦できるようになってるのですがNPCだけこの時間を変更(短く)したいと思っているのですが
> この場合はどうしたらよいですか??
sub fightの上のほうで例えば以下のようにしているとします。
if ($plf eq $id && time < $ptm + $limit) { push (@msg,"$pnmとは暫く戦えません"); return } # $limitは再戦を禁止する時間
このような場合は以下のようにします。
$limit -= 3600 if(index($psp, 'NPCスキル') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
if ($plf eq $id && time < $ptm + $limit) { push (@msg,"$pnmとは暫く戦えません"); return } # $limitは再戦を禁止する時間
上記は相手の時間を見て判断するという非常に単純な場合ですが、要するに相手がNPCなら再戦禁止時間の値自体を減少させれば良いのではないか、ということです。
> sub fightの上のほうで例えば以下のようにしているとします。スレッド一覧
> if ($plf eq $id && time < $ptm + $limit) { push (@msg,"$pnmとは暫く戦えません"); return } # $limitは再戦を禁止する時間
> このような場合は以下のようにします。
> $limit -= 3600 if(index($psp, 'NPCスキル') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
> if ($plf eq $id && time < $ptm + $limit) { push (@msg,"$pnmとは暫く戦えません"); return } # $limitは再戦を禁止する時間
> 上記は相手の時間を見て判断するという非常に単純な場合ですが、要するに相手がNPCなら再戦禁止時間の値自体を減少させれば良いのではないか、ということです。
いつもお返事ありがとうございます。
再戦禁止の改造は深海星さんの改造を取り入れていて
上記の
>>$limit -= 3600 if(index($psp, 'NPCスキル') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
> if ($plf eq $id && time < $ptm + $limit)
の$limitに$btlser_timeを代入してみたのですが・・
これだと時間が制限されずに連戦できてしまいました。
NPC問わずに。
Sub fightはこのようになっているのですが
>>@plf1 = split(/△/,$plf);
$remtime = time - $plf1[1];
$remain = $remtime / 3600;
$remhor = $btlser_time - int($remtime/3600) - 1;
$remmin = 59 - int(($remtime%3600)/60);
$remsec = 59 - $remtime % 60;
$btlser_time -= 3600 if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
if ($plf1[0] eq $id && $remain < $btlser_time) {
push (@msg,"$pnmとは暫く戦えません(あと$remhor時間$remmin分$remsec秒)"); return;
そのまま追記してしまったのですが・・
やはり記述が足りないのでしょうか?
> いつもお返事ありがとうございます。スレッド一覧
> 再戦禁止の改造は深海星さんの改造を取り入れていて
> 上記の
> >>$limit -= 3600 if(index($psp, 'NPCスキル') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
> > if ($plf eq $id && time < $ptm + $limit)
> の$limitに$btlser_timeを代入してみたのですが・・
> これだと時間が制限されずに連戦できてしまいました。
> NPC問わずに。
> Sub fightはこのようになっているのですが
>
> >>@plf1 = split(/△/,$plf);
> $remtime = time - $plf1[1];
> $remain = $remtime / 3600;
> $remhor = $btlser_time - int($remtime/3600) - 1;
> $remmin = 59 - int(($remtime%3600)/60);
> $remsec = 59 - $remtime % 60;
> $btlser_time -= 3600 if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
> if ($plf1[0] eq $id && $remain < $btlser_time) {
> push (@msg,"$pnmとは暫く戦えません(あと$remhor時間$remmin分$remsec秒)"); return;
>
> そのまま追記してしまったのですが・・
> やはり記述が足りないのでしょうか?
まずは、$btlser_timeの単位が秒ではなくて時間のようなので$btlser_time--や$btlser_time -= 1のようにする必要があります。
次に、if文の追加位置が上記だと再戦が可能になるまでの残り時間の表示に問題がありますので「@plf1 = split(/△/,$plf);」の上にでも移動したほうが良いです。
> まずは、$btlser_timeの単位が秒ではなくて時間のようなので$btlser_time--や$btlser_time -= 1のようにする必要があります。スレッド一覧
> 次に、if文の追加位置が上記だと再戦が可能になるまでの残り時間の表示に問題がありますので「@plf1 = split(/△/,$plf);」の上にでも移動したほうが良いです。
何度もすみません。。。
>>> $btlser_time -= 3600 if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
ここの部分を
$btlser_time -= 1 if(index($psp, 'Ng') != -1);
こうしてみたのですが
誰と戦闘しても連戦できてしまいました・・。
ここではないのか・・と思って他の$btlser_timeの場所も・・かなと思って代入をしてみても
変わりませんでした。
他の場所に何かおかしいところがあるのでしょうか・・・。
文法のチェックはしてあります。
if文は一番上に変更してあります。
余談なのですがこの改造で分単位の指定はできますか?
時間で指定している以上は最低で1時間ということですよね?
> 何度もすみません。。。スレッド一覧
> >>> $btlser_time -= 3600 if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
> ここの部分を
> $btlser_time -= 1 if(index($psp, 'Ng') != -1);
> こうしてみたのですが
> 誰と戦闘しても連戦できてしまいました・・。
> ここではないのか・・と思って他の$btlser_timeの場所も・・かなと思って代入をしてみても
> 変わりませんでした。
> 他の場所に何かおかしいところがあるのでしょうか・・・。
> 文法のチェックはしてあります。
> if文は一番上に変更してあります。
関係するそれぞれの変数の変更後にpush(@msg, 〜);で変数の値を表示してみて、正しい値になっていることを確認してください。
> 余談なのですがこの改造で分単位の指定はできますか?
> 時間で指定している以上は最低で1時間ということですよね?
設定として小数での指定がOKなので時間未満も可能ですが、処理として変更する場合は「$remain = $remtime / 3600;」を「$remain = $remtime / 60;」にすることで分単位になります。
スレッド一覧
> 関係するそれぞれの変数の変更後にpush(@msg, 〜);で変数の値を表示してみて、正しい値になっていることを確認してください。
お返事ありがとうございます。
sub_fightに部分をこうして記述を追加してみました
>>if ($plf1[0] eq $id && $remain < $btlser_time--) {
@plf1 = split(/△/,$plf);
$remtime = time - $plf1[1];
$remain = $remtime / 3600;
$remhor = $btlser_time-- - int($remtime/3600) - 1;
$remmin = 59 - int(($remtime%3600)/60);
$remsec = 59 - $remtime % 60;
$btlser_time -- if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
push (@msg,"$pnmとは暫く戦えません(あと$remhor時間$remmin分$remsec秒)"); return;
戦闘を行うと12という数値が出ます。
12は設定部分で$btlser_timeを設定している数値です。
> 設定として小数での指定がOKなので時間未満も可能ですが、処理として変更する場合は「$remain = $remtime / 3600;」を「$remain = $remtime / 60;」にすることで分単位になります。
こちらの質問にも答えていただきありがとうございます。
うまく設置できたら変更してみたいと思います。
> > 関係するそれぞれの変数の変更後にpush(@msg, 〜);で変数の値を表示してみて、正しい値になっていることを確認してください。スレッド一覧
>
> お返事ありがとうございます。
> sub_fightに部分をこうして記述を追加してみました
> >>if ($plf1[0] eq $id && $remain < $btlser_time--) {
> @plf1 = split(/△/,$plf);
> $remtime = time - $plf1[1];
> $remain = $remtime / 3600;
> $remhor = $btlser_time-- - int($remtime/3600) - 1;
> $remmin = 59 - int(($remtime%3600)/60);
> $remsec = 59 - $remtime % 60;
> $btlser_time -- if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を1時間短くする
>
> push (@msg,"$pnmとは暫く戦えません(あと$remhor時間$remmin分$remsec秒)"); return;
>
> 戦闘を行うと12という数値が出ます。
> 12は設定部分で$btlser_timeを設定している数値です。
移動するif文が違います。
また、移動するだけでは表示上の問題は解決しなかったです。
諸々を変更したソース例を載せます。
$btlser_time -= 30 if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を30分短くする
@plf1 = split(/△/,$plf);
$remtime = time - $plf1[1]; # 経過時間を求める(秒単位)
if ($plf1[0] eq $id && $remtime < $btlser_time * 60) {
my $remspan = $btlser_time * 60 - $remtime;
$remhor = int($remspan / 3600); # 表示用の残り時間の時間部分を求める
$remmin = int(($remspan % 3600) / 60); # 表示用の残り時間の分部分を求める
$remsec = int($remspan % 60); # 表示用の残り時間の秒部分を求める
push (@msg,"$pnmとは暫く戦えません(あと$remhor時間$remmin分$remsec秒)");
return;
}
> 移動するif文が違います。スレッド一覧
> また、移動するだけでは表示上の問題は解決しなかったです。
> 諸々を変更したソース例を載せます。
> $btlser_time -= 30 if(index($psp, 'Ng') != -1); # 相手にNPCスキルがある場合には再戦禁止時間を30分短くする
> @plf1 = split(/△/,$plf);
> $remtime = time - $plf1[1]; # 経過時間を求める(秒単位)
> if ($plf1[0] eq $id && $remtime < $btlser_time * 60) {
> my $remspan = $btlser_time * 60 - $remtime;
> $remhor = int($remspan / 3600); # 表示用の残り時間の時間部分を求める
> $remmin = int(($remspan % 3600) / 60); # 表示用の残り時間の分部分を求める
> $remsec = int($remspan % 60); # 表示用の残り時間の秒部分を求める
> push (@msg,"$pnmとは暫く戦えません(あと$remhor時間$remmin分$remsec秒)");
> return;
> }
お返事ありがとうございます。
詳しいソースまで出していただいてありがとうございます。
記述する文から間違っていたのですね。。
お恥ずかしい限りです。。
再戦の単位を分刻みに直していただき
どこを直すと良いのか分かりました。
いつもお世話になります。
ありがとうございました。