私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

スレッド

└◇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


1631● Re[11]:連勝数の追加とグラフ表示[ moon ] 2009 01/08 08:09
> 何度もすみません。。。
> >>> $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;」にすることで分単位になります。
スレッド一覧


1632● Re[12]:連勝数の追加とグラフ表示[ rien ] 2009 01/08 17:40

> 関係するそれぞれの変数の変更後に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;」にすることで分単位になります。

こちらの質問にも答えていただきありがとうございます。
うまく設置できたら変更してみたいと思います。
スレッド一覧


1633● Re[13]:連勝数の追加とグラフ表示[ moon ] 2009 01/08 23:26
> > 関係するそれぞれの変数の変更後に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;
  }
スレッド一覧


1634● Re[14]:連勝数の追加とグラフ表示[ rien ] 2009 01/09 00:29
> 移動する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;
>   }

お返事ありがとうございます。
詳しいソースまで出していただいてありがとうございます。
記述する文から間違っていたのですね。。
お恥ずかしい限りです。。
再戦の単位を分刻みに直していただき
どこを直すと良いのか分かりました。
いつもお世話になります。
ありがとうございました。
スレッド一覧

CGIROOM