私設SoS2オーナー応援BBS

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

スレッド

└◇1621:
Re:連勝数の追加とグラフ表示 [moon] 01/06 00:49

 └◇1622:Re[2]:連勝数の追加とグラフ表示 [rien] 01/06 18:50
  └◇1623:Re[3]:連勝数の追加とグラフ表示 [moon] 01/06 22:27
   └◇1624:Re[4]:連勝数の追加とグラフ表示 [rien] 01/06 23:31
    └◇1625:Re[5]:連勝数の追加とグラフ表示 [moon] 01/07 00:23
     └◇1626:Re[6]:連勝数の追加とグラフ表示 [rien] 01/07 18:04
      └◇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


1621● Re:連勝数の追加とグラフ表示[ moon ] 2009 01/06 00:49
> 昨日教えていただいた連勝数なのですが
> フラグ足しのように昨日追加した場所以外にも追加しなければいけない場所はありますか??
> 既存のキャラデータに<>を追加するべきなのでしょうか??

連勝数を追加したのはwin.datに対してなのでキャラデータは変更する必要がないはずです。(ただし、win.datを他でも使用してる場合は追加で修正する必要があります。)
当然ですが、win.datの末尾には"1<>"(1勝目の意味)を追加しておく必要があります。

> それと桜さんの改造に出てる体力のグラフ化を取り入れています。
> こちらを基にして経験値のグラフを導入してみました。
> 経験値のグラフ化でMAXを超えるとグラフの色が消えてしまうのですが・・これはどの部分を直せばよいでしょうか・・
> ↑以外はなんとか動いているのですが

まず、この状態になった時のHTMLソースを見てグラフを構成するimg要素がどのようになっているかを確認するのが手っ取り早いと思います。
srcで存在しない画像ファイルを指している場合は以下にあたる部分の画像指定のミスが原因である可能性があります。
  elsif ($hp >= $xp) { $hpl = 'hpl'; $hpimg = 'hp'; $hpimg2 = 'hp'; $hpr = 'hpr'; }
また、widthがおかしい場合は「$mybar = int(($hp / $xp) * 90);」または「if ($mybar > 90){$mybar = 90; }」にあたる部分が原因である可能性があります。

> 先日レティさんの行動値の改造を導入してみたのですが
> 行動値を同じようにグラフ化しようとすると
> バグ・・みたいな・・。
> requireで呼び出した以降・・の部分のステータスが消えました。
> (player's dataのマイレコやドラゴンのステータスなども)

詳細が不明なので何とも言えませんが、少なくとも2つの可能性が考えられます。
・requireが失敗している。
・「$hp / $xp」にあたる部分で$xpにあたる値が0だと0除算エラーになるので、ドラゴンがセットされていない状態でsub graphにあたるものを呼び出したためこのエラーでCGIが終了している。

> グラフ化する場合の注意点などを教えていただきたいのですが
> よろしくお願いします。

グラフ化だけの注意点ではない、というかアドバイスなのですが、致命的ではない表示上の問題が起こった場合はHTMLソースがどのようになっているかを確認し、どのようなHTMLなら正常なのかを考え、正常なHTMLにするためにはソースコードのどこを修正するかを考える、という手順でやると原因の特定が比較的スムースにできると思います。
スレッド一覧


1622● Re[2]:連勝数の追加とグラフ表示[ rien ] 2009 01/06 18:50

> 連勝数を追加したのはwin.datに対してなのでキャラデータは変更する必要がないはずです。(ただし、win.datを他でも使用してる場合は追加で修正する必要があります。)
> 当然ですが、win.datの末尾には"1<>"(1勝目の意味)を追加しておく必要があります。

ありがとうございます。
フラグ足しには今でも緊張感というか恐怖感があるので
サーバーエラーばかりだったからかもしれませんが・・。
win.datに追加するだけで良さそうなので安心しました。

> > それと桜さんの改造に出てる体力のグラフ化を取り入れています。
> まず、この状態になった時のHTMLソースを見てグラフを構成するimg要素がどのようになっているかを確認するのが手っ取り早いと思います。
> srcで存在しない画像ファイルを指している場合は以下にあたる部分の画像指定のミスが原因である可能性があります。
>   elsif ($hp >= $xp) { $hpl = 'hpl'; $hpimg = 'hp'; $hpimg2 = 'hp'; $hpr = 'hpr'; }
> また、widthがおかしい場合は「$mybar = int(($hp / $xp) * 90);」または「if ($mybar > 90){$mybar = 90; }」にあたる部分が原因である可能性があります。

こちらはなんとか出来そうでした。
hppの画像をhpにすることで大丈夫そうでした。
ありがとうございます。

> 詳細が不明なので何とも言えませんが、少なくとも2つの可能性が考えられます。
> ・requireが失敗している。
> ・「$hp / $xp」にあたる部分で$xpにあたる値が0だと0除算エラーになるので、ドラゴンがセットされていない状態でsub graphにあたるものを呼び出したためこのエラーでCGIが終了している。

こちらが修正がまだできていません・・。
現状を説明するのが下手で申し訳ないです。
体力のグラフ化を元に$hpの場所に
経験値グラフでは$expを代入行動値グラフでは$dapを導入という形で表示できるのかと思っておりました。
経験値のグラフ化ではそれで出来たのですが・・・
行動値ではグラフが表示されないだけではなく
それ以下の情報が表示されなくなっていて・・・。

行動値のグラフをrequire'graph3.pl'; &graph3;
として呼び出しているのですが・・
これでは記述が足りないのでしょうか?
行動値での$xpは$MaxApで
設定部分では100となっています。

> グラフ化だけの注意点ではない、というかアドバイスなのですが、致命的ではない表示上の問題が起こった場合はHTMLソースがどのようになっているかを確認し、どのようなHTMLなら正常なのかを考え、正常なHTMLにするためにはソースコードのどこを修正するかを考える、という手順でやると原因の特定が比較的スムースにできると思います。

アドバイスありがとうございます。
HTMLで表示ですね
まだまだ勉強不足でこう表したいのにどうすべきなのかわからない・・というようなことばかりですが
HTMLソースを見て私でも気づくこともあると思うので詰まったら確認してみます。
スレッド一覧


1623● Re[3]:連勝数の追加とグラフ表示[ moon ] 2009 01/06 22:27
> > 詳細が不明なので何とも言えませんが、少なくとも2つの可能性が考えられます。
> > ・requireが失敗している。
> > ・「$hp / $xp」にあたる部分で$xpにあたる値が0だと0除算エラーになるので、ドラゴンがセットされていない状態でsub graphにあたるものを呼び出したためこのエラーでCGIが終了している。
>
> こちらが修正がまだできていません・・。
> 現状を説明するのが下手で申し訳ないです。
> 体力のグラフ化を元に$hpの場所に
> 経験値グラフでは$expを代入行動値グラフでは$dapを導入という形で表示できるのかと思っておりました。
> 経験値のグラフ化ではそれで出来たのですが・・・
> 行動値ではグラフが表示されないだけではなく
> それ以下の情報が表示されなくなっていて・・・。
>
> 行動値のグラフをrequire'graph3.pl'; &graph3;
> として呼び出しているのですが・・
> これでは記述が足りないのでしょうか?
> 行動値での$xpは$MaxApで
> 設定部分では100となっています。

以下を確認してみてください。
  1. graph3.plが存在するかどうか。(ファイル名が完全に一致していることも確認。)
  2. graph3.plに文法ミスがないかどうか。
  3. sub graph3があるかどうか。
  4. sub graph3が複数定義されていないかどうか。
  5. graph3.plの最後に1;があるかどうか。
  6. 「$hp / $xp」の$xpにあたる部分を変数ではなく直接100とするとどうなるか。
スレッド一覧


1624● Re[4]:連勝数の追加とグラフ表示[ rien ] 2009 01/06 23:31
>> 以下を確認してみてください。
>   1. graph3.plが存在するかどうか。(ファイル名が完全に一致していることも確認。)
>   2. graph3.plに文法ミスがないかどうか。
>   3. sub graph3があるかどうか。
>   4. sub graph3が複数定義されていないかどうか。
>   5. graph3.plの最後に1;があるかどうか。
>   6. 「$hp / $xp」の$xpにあたる部分を変数ではなく直接100とするとどうなるか。

す、すみません。。。
サーバーエラーが出てなかったので文法のチェックをしていませんでした・・・。
$dapを代入した時に半角スペースも一緒に代入してしまったみたいで・・・
ほんと申し訳ないです。お手数おかけしましたっ。
今のところきちんと表示はできています。
ありがとうございました。

追加の質問になってしまうのですが。。
デフォルトの魔法使いが使える魔法と区別して
発動頻度は少ないけど威力の高い魔法というものを
新しいスキルとして導入したいと思っているのですが・・
どうしたらよいのでしょうか・・。
それと今回導入した行動値を回復できるスキルというのは
体力回復スキルと同じ方法で追加すれば導入できますか?
スレッド一覧


1625● Re[5]:連勝数の追加とグラフ表示[ moon ] 2009 01/07 00:23
> デフォルトの魔法使いが使える魔法と区別して
> 発動頻度は少ないけど威力の高い魔法というものを
> 新しいスキルとして導入したいと思っているのですが・・
> どうしたらよいのでしょうか・・。

fight_subの「&fmsg('魔');」周辺とsub fmsg、あとは設定部分とsub fightの$Mgdiceを代入している箇所、と同様の処理を用意または利用すれば良いと思います。

> それと今回導入した行動値を回復できるスキルというのは
> 体力回復スキルと同じ方法で追加すれば導入できますか?

体力回復スキルというのがHlスキルを意味しているのでしたら同じ方法で良いと思います。
スレッド一覧


1626● Re[6]:連勝数の追加とグラフ表示[ rien ] 2009 01/07 18:04
> fight_subの「&fmsg('魔');」周辺とsub fmsg、あとは設定部分とsub fightの$Mgdiceを代入している箇所、と同様の処理を用意または利用すれば良いと思います。
 お返事ありがとうございます。$Mgdiceのところを変更して追加してみます。

> > それと今回導入した行動値を回復できるスキルというのは
> > 体力回復スキルと同じ方法で追加すれば導入できますか?

回復スキルはHlではなくて
回復魔法として回復というような
Taktmesser さんの改造をアレンジしてみようと思ったのですが・・
もしうまくできなかったらHlスキルの方で試してみたいと思います。
ありがとうございます。

すみませんもう1つ質問なのですが
今対人戦闘の戦闘が時間経過で再戦できるようになってるのですがNPCだけこの時間を変更(短く)したいと思っているのですが
この場合はどうしたらよいですか??
スレッド一覧


1627● Re[7]:連勝数の追加とグラフ表示[ moon ] 2009 01/07 22:09
> すみませんもう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なら再戦禁止時間の値自体を減少させれば良いのではないか、ということです。
スレッド一覧


1628● Re[8]:連勝数の追加とグラフ表示[ rien ] 2009 01/07 23:09
> 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;

そのまま追記してしまったのですが・・
やはり記述が足りないのでしょうか?
スレッド一覧


1629● Re[9]:連勝数の追加とグラフ表示[ moon ] 2009 01/07 23:45
> いつもお返事ありがとうございます。
> 再戦禁止の改造は深海星さんの改造を取り入れていて
> 上記の
> >>$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);」の上にでも移動したほうが良いです。
スレッド一覧


1630● Re[10]:連勝数の追加とグラフ表示[ rien ] 2009 01/08 00:26
> まずは、$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時間ということですよね?
スレッド一覧


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