私設SoS2オーナー応援BBS

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

スレッド

└◇1651:
オークションについて [rien] 02/04 23:49

 └◇1652:Re:オークションについて [moon] 02/05 00:59
  └◇1653:Re[2]:オークションについて [moon] 02/05 08:13
   └◇1654:Re[3]:オークションについて [rien] 02/05 21:37
    └◇1655:Re[4]:オークションについて [moon] 02/05 23:57
     └◇1656:Re[5]:オークションについて [rien] 02/06 00:46
      └◇1657:Re[6]:オークションについて [moon] 02/06 23:26
       └◇1658:Re[7]:オークションについて [moon] 02/06 23:41
        └◇1660:Re[8]:オークションについて [rien] 02/07 17:02
         └◇1661:Re[9]:オークションについて [moon] 02/07 23:34
          └◇1663:Re[10]:オークションについて [rien] 02/08 00:01
           └◇1664:Re[11]:オークションについて [moon] 02/08 00:41
            └◇1665:Re[12]:オークションについて [moon] 02/08 00:46
             └◇1666:Re[13]:オークションについて [rien] 02/08 01:24<-last


1651● オークションについて[ rien ] 2009 02/04 23:49
いつもお世話になります。
今回またわからないところがでてきてしまって・・
教えていただけると助かります。

Hell's Kitchen さんのオークションシステムを導入しております。
オークション終了時に出品者&落札者にNPCからメッセージが届くはずなのですが・・・
これの表示がどうもおかしいのです。
日付が過ぎてもメッセージが送られず
どちらか(出品者&落札者)がオークションへとりにゆくと
『落札されましたので期限内に取りに来て下さい』というようなメッセージが送られています。
これはどこを直せばよいのでしょうか??

それとまだ1回しか起こっていないことなのですが
オークションで品物を取りに行っても不具合はないのですが
お金を受け取ると先日導入した行動値が0になってしまっていたのですが・・・フラグ足しが足りないのでしょうか??
よかったら教えて下さい。
よろしくお願いします。
スレッド一覧


1652● Re:オークションについて[ moon ] 2009 02/05 00:59
> Hell's Kitchen さんのオークションシステムを導入しております。
> オークション終了時に出品者&落札者にNPCからメッセージが届くはずなのですが・・・
> これの表示がどうもおかしいのです。
> 日付が過ぎてもメッセージが送られず
> どちらか(出品者&落札者)がオークションへとりにゆくと
> 『落札されましたので期限内に取りに来て下さい』というようなメッセージが送られています。
> これはどこを直せばよいのでしょうか??

sub auction_checkが該当サブルーチンのようですので、これを好きなタイミングで実行すれば良いのではないかと思います。
例えば、コンティニュー時にもチェックするのであればsub make_con内でrequireして&auction_check;とします。
ただし、これで良いのかどうかは動作確認してください。

これに関連して、sos2wikiからリンクされているバージョンのものではsub get_partnerの呼び出しを複数回やっているようですが$getpartnerflagをクリアしていないため、最初の読み込みしか行われないように思います。
sub get_partnerの呼び出し後に$getpartnerflag = 0;としてクリアしてみてください。

> それとまだ1回しか起こっていないことなのですが
> オークションで品物を取りに行っても不具合はないのですが
> お金を受け取ると先日導入した行動値が0になってしまっていたのですが・・・フラグ足しが足りないのでしょうか??
> よかったら教えて下さい。
> よろしくお願いします。

行動値用の変数は$dapと$pdapですよね。
auction2.cgi内に"dap"が見付からないようでしたら、auction2.cgi自体が原因の可能性が低くなりますので、まずは現象の再現方法を見つけてから考えたほうが良いと思います。
スレッド一覧


1653● Re[2]:オークションについて[ moon ] 2009 02/05 08:13
> 例えば、コンティニュー時にもチェックするのであればsub make_con内でrequireして&auction_check;とします。

補足ですが、処理を行う箇所としてはget_userとuseroutの間は避けたほうが良いのでmake_conの場合ですとuserout以降に行うのが良いと思います。
スレッド一覧


1654● Re[3]:オークションについて[ rien ] 2009 02/05 21:37
> > 例えば、コンティニュー時にもチェックするのであればsub make_con内でrequireして&auction_check;とします。
>
> 補足ですが、処理を行う箇所としてはget_userとuseroutの間は避けたほうが良いのでmake_conの場合ですとuserout以降に行うのが良いと思います。

お早い返答いつもありがとうございます。
>>$fg = ''; &userout;
の下に追加してみました。
まだメッセージを全ては確認できていないのですが
オーク開始や入札金額が上乗せされた時の表示はできているようです。

行動値の方ですが
まだ原因がどこか特定できないため・・このまま様子を見ることにしました。
判明後、手に負えない状態でしたらまたお世話になると思いますがよろしくお願いします。

すみません・・追加となってしまうのですが・・・
Normal Actionの部分のIDのプルダウンなのですが
ここで、戦闘不能のキャラクターを色を変えて表示したいと思っているのですが・・
この場合はどのようにしたらよいのでしょうか??
よろしくお願いいたします。
スレッド一覧


1655● Re[4]:オークションについて[ moon ] 2009 02/05 23:57
> すみません・・追加となってしまうのですが・・・
> Normal Actionの部分のIDのプルダウンなのですが
> ここで、戦闘不能のキャラクターを色を変えて表示したいと思っているのですが・・
> この場合はどのようにしたらよいのでしょうか??
> よろしくお願いいたします。

sub normal_actionに以下のような処理があると思います。
  ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$others) = split(/<>/,$line);
この処理を以下のようにします。
  ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$pbn,$pak,$pdd,$php,$pxp,$pab,$pdb,$pav) = split(/<>/,$line);
あとは、ここで取得した$pavで判断しスタイルシートでoption要素の色を指定すれば良いはずです。
スレッド一覧


1656● Re[5]:オークションについて[ rien ] 2009 02/06 00:46
>>ここで取得した$pavで判断しスタイルシートでoption要素の色を指定すれば良いはずです。

すみません・・
ここが理解できてなくて・・詳しく教えていただいてもよろしいでしょうか??

normal_actionの部分に
こう記述してあります
else {
    if ($tw eq $ptw || index($psp, 'Am') != -1) { $mark = '○'} elsif ($tw ne $ptw) { $mark = '×'}
    print qq|<option value="$pid">$mark:$pid:$pnm($pjb)\n|}}

{print qq|<option value="$pav" style=\"color:gray\">$pid:$pnm($pjb)\n| }←ココを追加したのですが

どうも表示がうまくできません・・。
ID9999のキャラが増えてしまって・・。

初歩的なことばかりですみません・・。
スレッド一覧


1657● Re[6]:オークションについて[ moon ] 2009 02/06 23:26
> {print qq|<option value="$pav" style=\"color:gray\">$pid:$pnm($pjb)\n| }←ココを追加したのですが
これは必要無いです。

>     print qq|<option value="$pid">$mark:$pid:$pnm($pjb)\n|}}
この部分を以下のようにすれば良いです。
      print qq|<option value="$pid"|, ($pav eq 'dead' ? ' style="color: gray"' : ''), qq|>$mark:$pid:$pnm($pjb)\n|;
    }
  }

個人的には色がgrayならcolorよりはbackground-colorにしたほうが見分けやすいのでは、と思います。
スレッド一覧


1658● Re[7]:オークションについて[ moon ] 2009 02/06 23:41
見直してみて気付いたのですが、戦闘不能というのは死亡状態ではなく文字通りの「挑戦することが出来ない相手」でしょうか?
その場合は、$pavの比較だけではなく、sub contact_actionの「戦う」メニューの表示部分とsub fightの先頭部分で行っているような判定を行うことで色を決める必要があります。
スレッド一覧


1660● Re[8]:オークションについて[ rien ] 2009 02/07 17:02
> 見直してみて気付いたのですが、戦闘不能というのは死亡状態ではなく文字通りの「挑戦することが出来ない相手」でしょうか?
> その場合は、$pavの比較だけではなく、sub contact_actionの「戦う」メニューの表示部分とsub fightの先頭部分で行っているような判定を行うことで色を決める必要があります。

いつもお世話になります。
書き込みが遅れてしまいました・・。

1つ前のやり方でうまく表示できました。
ありがとうございます。
バックの色の表示なのですがこれがすでにgrayぽいので
文字色で表示の方にしました。

最初の予定では挑戦することのできない〜という感じにしたかったのですが・・最低戦闘不能者の表示と思っていたので。
改造していて自分には荷が重いかも・・と思ったので
戦闘不能者のみの表示にします。
いつもありがとうございます。

いつも追加の質問になってしまって申し訳ないのですが
いくつか質問させて下さい。
探索などで見つけることのできるアイテムですが
この確率をかえることはできますか??
いまだと最低値で1%(1/100
ですがこれ以下で見つけにくいアイテムを作りたいのですが・・。

それともう1つすみません・・。
Sphereさんの街移動を導入しているのですが
それぞれの街で探索できるものを変えることは可能でしょうか?
装備品が取りやすい街、食料が取りやすい街というようなイメージで・・。
マシマロさんの探索場所追加も導入しています。

度々で申し訳ないのですがよろしくお願いします。
スレッド一覧


1661● Re[9]:オークションについて[ moon ] 2009 02/07 23:34
> いつも追加の質問になってしまって申し訳ないのですが
> いくつか質問させて下さい。
> 探索などで見つけることのできるアイテムですが
> この確率をかえることはできますか??
> いまだと最低値で1%(1/100
> ですがこれ以下で見つけにくいアイテムを作りたいのですが・・。

基本的に以下の2箇所の変更で済むと思います。
  $rnd = int(rand(100)) + 1;
  if ($rnd <= $idc)

  $rnd = rand(100);
  if ($rnd < $idc)


> それともう1つすみません・・。
> Sphereさんの街移動を導入しているのですが
> それぞれの街で探索できるものを変えることは可能でしょうか?
> 装備品が取りやすい街、食料が取りやすい街というようなイメージで・・。
> マシマロさんの探索場所追加も導入しています。

条件が以下の場合は、
  街1、街2、街3の3つ。(それぞれ$twが1、2、3)
  各街に探索場所が4つずつ。(それぞれmodeがfind_item、find_item2、find_item3、find_item4)
3*4=12ファイルのアイテムファイルを作成します。
ファイル名を以下のようにした場合、
  item_1a.dat(街1のfind_itemに対応)
    〜
  item_1d.dat(街1のfind_item4に対応)
  item_2a.dat
    〜
  item_2d.dat
  item_3a.dat
    〜
  item_3d.dat
ソースコードの変更は、
  if($Fm{'mode'} eq 'find_item'){
    @itemlines = &opendat($itmdat);
    if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
  }elsif($Fm{'mode'} eq 'find_item2'){
    @itemlines = &opendat($itm2dat);
    if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
  }elsif($Fm{'mode'} eq 'find_item3'){
    @itemlines = &opendat($itm3dat);
    if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
  }elsif($Fm{'mode'} eq 'find_item4'){
    @itemlines = &opendat($itm4dat);
    if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
  }
この部分を以下のように変更します。
  # 探索場所に対応する記号(a〜d)を定義する
  my %location = (
    'find_item' => 'a',
    'find_item2' => 'b',
    'find_item3' => 'c',
    'find_item4' => 'd',
  );
  # アイテムファイルのパスを作成する
  my $itemfile = 'item_' . int($tw) . $location{$Fm{'mode'}} . '.dat';
  # アイテムファイルを読み込む
  @itemlines = &opendat($itemfile);
  # アイテム数が0個の場合はエラーとする
  &error('アイテムデータ読みこみエラー') if(!@itemlines);
スレッド一覧


1663● Re[10]:オークションについて[ rien ] 2009 02/08 00:01
> 基本的に以下の2箇所の変更で済むと思います。
>   $rnd = int(rand(100)) + 1;
>   if ($rnd <= $idc)
> ↓
>   $rnd = rand(100);
>   if ($rnd < $idc)

お返事ありがとうございます。
上記のようにした場合、出現確率が1以下(小数点
で可能になるという意味なのでしょうか??
ここだけの変更でよいとは・・目から鱗状態です・・。


> 条件が以下の場合は、
>   街1、街2、街3の3つ。(それぞれ$twが1、2、3)
>   各街に探索場所が4つずつ。(それぞれmodeがfind_item、find_item2、find_item3、find_item4)
> 3*4=12ファイルのアイテムファイルを作成します。
> ファイル名を以下のようにした場合、
>   item_1a.dat(街1のfind_itemに対応)
>     〜
>   item_1d.dat(街1のfind_item4に対応)
>   item_2a.dat
>     〜
>   item_2d.dat
>   item_3a.dat
>     〜
>   item_3d.dat
> ソースコードの変更は、
>   if($Fm{'mode'} eq 'find_item'){
>     @itemlines = &opendat($itmdat);
>     if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
>   }elsif($Fm{'mode'} eq 'find_item2'){
>     @itemlines = &opendat($itm2dat);
>     if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
>   }elsif($Fm{'mode'} eq 'find_item3'){
>     @itemlines = &opendat($itm3dat);
>     if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
>   }elsif($Fm{'mode'} eq 'find_item4'){
>     @itemlines = &opendat($itm4dat);
>     if (!@itemlines) { &error('アイテムデータ読みこみエラー') }
>   }
> この部分を以下のように変更します。
>   # 探索場所に対応する記号(a〜d)を定義する
>   my %location = (
>     'find_item' => 'a',
>     'find_item2' => 'b',
>     'find_item3' => 'c',
>     'find_item4' => 'd',
>   );
>   # アイテムファイルのパスを求める
>   my $itemfile = 'item_' . int($tw) . $location{$Fm{'mode'}} . '.dat';
>   @itemlines = &opendat($itemfile); # アイテムファイルを読み込む
>   &error('アイテムデータ読みこみエラー') if(!@itemlines); # アイテムファイルが存在しないかアイテム数が0個の場合はエラーとする

ありがとうございます。
こちらも早速やってみます。
この場合でそれぞれの街の探索場所の名称を変更するなどということはできるのでしょうか??
スレッド一覧


1664● Re[11]:オークションについて[ moon ] 2009 02/08 00:41
> 上記のようにした場合、出現確率が1以下(小数点
> で可能になるという意味なのでしょうか??

はい、そうです。

> この場合でそれぞれの街の探索場所の名称を変更するなどということはできるのでしょうか??

sub normal_action内の探索場所名部分を$twで判断して変更すれば良いです。
例えば、以下のようにします。
  &input('radio','mode','find_item',' checked',"草原探索  探索回数:");
    ↓
  # find_itemに対応する探索場所名
  my %location1 = (
    1 => '探索場所A', # 街1用
    2 => '探索場所B', # 街2用
    3 => '探索場所C', # 街3用
  );
    〜
  # find_item4に対応する探索場所名
  my %location4 = (
    1 => '探索場所X', # 街1用
    2 => '探索場所Y', # 街2用
    3 => '探索場所Z', # 街3用
  );
  &input('radio','mode','find_item',' checked',$location1{int($tw)} . "  探索回数:");
  # find_item2〜find_item4に対応する部分も同様に変更
スレッド一覧


1665● Re[12]:オークションについて[ moon ] 2009 02/08 00:46
> > 上記のようにした場合、出現確率が1以下(小数点
> > で可能になるという意味なのでしょうか??
>
> はい、そうです。

すみません、1つ修正が抜けていました。
  if ($sp =~ /Ft/) { $rnd -= 2; $rnd = 1 if $rnd < 1 }
    ↓
  if ($sp =~ /Ft/) { $rnd -= 2; }
スレッド一覧


1666● Re[13]:オークションについて[ rien ] 2009 02/08 01:24
> > > 上記のようにした場合、出現確率が1以下(小数点
> > > で可能になるという意味なのでしょうか??
> >
> > はい、そうです。
>
> すみません、1つ修正が抜けていました。
>   if ($sp =~ /Ft/) { $rnd -= 2; $rnd = 1 if $rnd < 1 }
>     ↓
>   if ($sp =~ /Ft/) { $rnd -= 2; }

いつもありがとうございます。
追記してみます。
スレッド一覧

CGIROOM