私設SoS2オーナー応援BBS

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

スレッド

└◇483:
Re[7]:勢力の掲示板 [masaki] 04/20 07:32

 └◇484:Re[8]:勢力の掲示板 [moon] 04/20 10:19
  ├◇485:補足&訂正 [moon] 04/20 10:34
  └◇486:Re[9]:勢力の掲示板 [masaki] 04/20 13:00
   └◇487:Re[10]:勢力の掲示板 [moon] 04/20 14:12
    └◇488:Re[11]:勢力の掲示板 [masaki] 04/20 15:27
     └◇489:Re[12]:勢力の掲示板 [moon] 04/20 17:49
      └◇490:Re[13]:勢力の掲示板 [masaki] 04/20 19:14
       └◇491:Re[14]:勢力の掲示板 [moon] 04/20 21:46


483● Re[7]:勢力の掲示板[ masaki ] 2003 04/20 07:32
> それなら、
>   &abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
>   push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
> を、
>   print "\n\n\nabl_add_bbs before<br>\n\n\n";
>   &abl_add_bbs("[$id] $nmのコメント:「$Fm{'words'}」");
>   print "\n\n\nabl_add_bbs after<br>\n\n\n";
>   push (@msg,"アビリティ伝言板にコメントを残しました[$mynm/$nm]");
>   print "\n\n\npush after<br>\n\n\n";
> としてabl_add_bbsやpushが実行されているかを確認してみてください。
abl_add_bbs beforeまでしか表示されませんでした(;;
スレッド一覧


484● Re[8]:勢力の掲示板[ moon ] 2003 04/20 10:19
> abl_add_bbs beforeまでしか表示されませんでした(;;

いまさらながらsatosiさんのところの改造方法を見てきました。(笑)
で、abl_add_bbsで考えられる原因は、
・abl_add_bbsの綴り間違い
・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
・sosiki_nameが存在しない
です。

# &sosiki_name;の前のrequire 'ability.pl';は不要な処理のような気が。
スレッド一覧


485● 補足&訂正[ moon ] 2003 04/20 10:34
> ・sosiki_nameが存在しない

または、その中でエラーが出ている。

> # &sosiki_name;の前のrequire 'ability.pl';は不要な処理のような気が。

これは間違いです。
既に読み込んであるのはability_bbs.plであり、ability.plは読み込んでありませんでしたね。
スレッド一覧


486● Re[9]:勢力の掲示板[ masaki ] 2003 04/20 13:00
> > abl_add_bbs beforeまでしか表示されませんでした(;;
>
> いまさらながらsatosiさんのところの改造方法を見てきました。(笑)
> で、abl_add_bbsで考えられる原因は、
> ・abl_add_bbsの綴り間違い
探してみましたが、これはなさそうです(^^;
> ・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
これがよくわからないのですが、sub abl_add_bbsがability_bbs.pl内にあり、そのなかにget_timeがありました(^^;(それしかないです)
> ・sosiki_nameが存在しない
sosiki_nameはability.pl内にありました(^^;
一応今のファイルはとっておいて、もう一度最初からやってみます。
スレッド一覧


487● Re[10]:勢力の掲示板[ moon ] 2003 04/20 14:12
> > ・ファイルを分割している場合に、get_timeが読み込んでいないplファイルにある
> これがよくわからないのですが、sub abl_add_bbsがability_bbs.pl内にあり、そのなかにget_timeがありました(^^;(それしかないです)

呼び出しているところではなくsub get_timeの場所です。
ただ、よく使うサブルーチンなのでsos2.cgi内にあると思うので大丈夫だと思います。

> > ・sosiki_nameが存在しない
> sosiki_nameはability.pl内にありました(^^;
> 一応今のファイルはとっておいて、もう一度最初からやってみます。

わざわざ最初からやらなくてもpushやprintでどこまで実行されているかを確認して修正していけば良いだけだと思うのですが・・・。

何のエラーが出ているかがわからない場合は、
AN HTTPDのPerlの実行ファイルへのパス(c:\perl\bin\perl.exeなどになっているはず)をperlis.dllのパスに変更してCGIを実行し、同フォルダに作成されるPerlIS-Err.logを見るとエラーメッセージが書かれています。
スレッド一覧


488● Re[11]:勢力の掲示板[ masaki ] 2003 04/20 15:27
> わざわざ最初からやらなくてもpushやprintでどこまで実行されているかを確認して修正していけば良いだけだと思うのですが・・・。
最初からやってもだめでした(;;
> 何のエラーが出ているかがわからない場合は、
> AN HTTPDのPerlの実行ファイルへのパス(c:\perl\bin\perl.exeなどになっているはず)をperlis.dllのパスに変更してCGIを実行し、同フォルダに作成されるPerlIS-Err.logを見るとエラーメッセージが書かれています。
Activeperlでも可能でしょうか?(^^;;
スレッド一覧


489● Re[12]:勢力の掲示板[ moon ] 2003 04/20 17:49
> Activeperlでも可能でしょうか?(^^;;

「でも」ではなくてActivePerl「で」やることを前提に書いています。(笑)
スレッド一覧


490● Re[13]:勢力の掲示板[ masaki ] 2003 04/20 19:14
> > Activeperlでも可能でしょうか?(^^;;
>
> 「でも」ではなくてActivePerl「で」やることを前提に書いています。(笑)
やっとできました(;;
5時間以上やってて、結局1;が原因とは…。。(泣
moonさんの仰っていた、1;というのはplファイルなら、どれでも最後に必要なのですね(^^;;
また一つ勉強しましたw
(casino.plを見てて、最後に1;があったので気づきましたσ(^^;)
いろいろいじり過ぎたせいで、新たなバグが(泣
ログインしたときに、右側に表示されるものが全然違うキャラのデータになってしまうのです。
でも、お金とかはログインしたキャラのと同じ。
例えば
プレイヤーA 所持金1000Gでログインすると、プレイヤーBのデータが右側に表示されます。↓
プレイヤーB 所持金2800G
でも、これで2000Gの物を買おうとすると、「お金が足りません」と表示され買えません。1000G(プレイヤーAの所持金)までなら買えます。
探索でも、探索で手に入れたアイテムはBの所持品ではなく、Aの所持品に追加されます。
わかりにくいですが、「見た目だけプレイヤーBになってしまった」という状態です(;;
因みに、IDが一番大きいプレイヤーに変装してしまうようです(;;
スレッド一覧


491● Re[14]:勢力の掲示板[ moon ] 2003 04/20 21:46
> やっとできました(;;
> 5時間以上やってて、結局1;が原因とは…。。(泣
> moonさんの仰っていた、1;というのはplファイルなら、どれでも最後に必要なのですね(^^;;
> また一つ勉強しましたw
> (casino.plを見てて、最後に1;があったので気づきましたσ(^^;)

ここは1;で無くても良いのですが慣例的に1;にするようです。("xyz";のような文字列でも大丈夫)

> いろいろいじり過ぎたせいで、新たなバグが(泣
> ログインしたときに、右側に表示されるものが全然違うキャラのデータになってしまうのです。
> でも、お金とかはログインしたキャラのと同じ。
> 例えば
> プレイヤーA 所持金1000Gでログインすると、プレイヤーBのデータが右側に表示されます。↓
> プレイヤーB 所持金2800G
> でも、これで2000Gの物を買おうとすると、「お金が足りません」と表示され買えません。1000G(プレイヤーAの所持金)までなら買えます。
> 探索でも、探索で手に入れたアイテムはBの所持品ではなく、Aの所持品に追加されます。
> わかりにくいですが、「見た目だけプレイヤーBになってしまった」という状態です(;;
> 因みに、IDが一番大きいプレイヤーに変装してしまうようです(;;

sub normal_actionの、
  foreach $line (@lstlines) {
    ($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$others) = split(/<>/,$line);
    if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp }
    else { print qq|<option value="$pid">$pid:$pnm($pjb)\n| }
  }
のあたりかな?
ここで$pidとかではなく$idなどにしているか、逆にplayer_dataのほうで$pidとかを利用しているとか、が考えられます。
どちらにしても他人のIDや名前が意図しないときに表示されているのはパスワードさえ載っている可能性があるのでかなり危険な状態ですね。
スレッド一覧

CGIROOM