私設SoS2オーナー応援BBS

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

スレッド

└◇730:
転職所内蔵 [masaki] 08/16 17:18

 └◇731:Re:転職所内蔵 [masaki] 08/16 17:21
  └◇732:Re[2]:転職所内蔵 [moon] 08/16 19:00
   └◇733:修正報告 [moon] 08/16 19:12
    └◇734:Re:修正報告 [masaki] 08/17 06:56<-last


730● 転職所内蔵[ masaki ] 2003 08/16 17:18
マシマロさんの「転職所内蔵」の改造をしたのですが、突然プレイヤーのデータしか表示されなくなってしまいました。
http://box6-6.hp.infoseek.co.jp/sos.jpg(重いです(;;))

改造内容は
main programに
if ($Fm{'mode'} eq 'change_menu') {require 'change_form.pl';&change_form }
if ($Fm{'mode'} eq 'class_change') {require 'change_form.pl';&change_form }
if ($Fm{'mode'} eq 'job_change') {require 'change_form.pl';&change_form }
を追加し、
change_form.plを作成して、その中にsub change_formを作りました。sub change_formの一部↓
if ($Fm{'mode'} eq 'class_change'){require 'class_change.pl';&class_change;}
if ($Fm{'mode'} eq 'job_change') {require 'job_change.pl';&job_change;}
if ($Fm{'mode'} eq 'change_menu') {require 'change_menu.pl';&change_menu;}
問題の場所はclass_change.pl内の
if ($urt) { if ($rt < $urt) { push (@msg,"クラスチェンジするにはRateが$urt以上必要です。"); return }}
だと思うのですが(^^;
returnの意味がよくわからないので、どこをどうすればいいのか…(;;
どうかご教授お願いします。(いつもすみません)
スレッド一覧


731● Re:転職所内蔵[ masaki ] 2003 08/16 17:21
if ($uct) { if ($mn < $uct) { push (@msg,"クラスチェンジするには$uct\G必要です。"); return }}
画像の場所はここでした(^^;
画像のアドレスに(も入ってる・・(汗
スレッド一覧


732● Re[2]:転職所内蔵[ moon ] 2003 08/16 19:00
> if ($Fm{'mode'} eq 'change_menu') {require 'change_form.pl';&change_form }
> if ($Fm{'mode'} eq 'class_change') {require 'change_form.pl';&change_form }
> if ($Fm{'mode'} eq 'job_change') {require 'change_form.pl';&change_form }

に関連して、

> change_form.plを作成して、その中にsub change_formを作りました。sub change_formの一部↓
> if ($Fm{'mode'} eq 'class_change'){require 'class_change.pl';&class_change;}
> if ($Fm{'mode'} eq 'job_change') {require 'job_change.pl';&job_change;}
> if ($Fm{'mode'} eq 'change_menu') {require 'change_menu.pl';&change_menu;}

としているようですが手元の古いバージョンでは、
# ここから引用
  if ($Fm{'mode'} eq 'change_menu') { &change_form }
  if ($Fm{'mode'} eq 'class_change') { &action_form }
  if ($Fm{'mode'} eq 'job_change') { &action_form }
# ここまで引用
となっています。
なので、これに沿って改造したほうが問題が無いように思います。
具体的には、sub change_menuとclass_changeとjob_changeとchange_formを一つのplファイルにまとめ上記の&change_formや&action_formの前にrequireするだけ、にしておく。(どうせ転職などはあまり行われないので3つや4つに分割する効果はほとんど無いだろうし。)

> 問題の場所はclass_change.pl内の
> if ($urt) { if ($rt < $urt) { push (@msg,"クラスチェンジするにはRateが$urt以上必要です。"); return }}
> だと思うのですが(^^;
> returnの意味がよくわからないので、どこをどうすればいいのか…(;;

returnはサブルーチンを強制的に抜ける処理です。

# normal_actionが実行されない原因としては上記からいうとaction_formを実行していないから、だと思います。
スレッド一覧


733● 修正報告[ moon ] 2003 08/16 19:12
余計な情報があると不味い場合もあるので念のためrequireの部分を修正しておきました。
スレッド一覧


734● Re:修正報告[ masaki ] 2003 08/17 06:56
> 余計な情報があると不味い場合もあるので念のためrequireの部分を修正しておきました。
お手数をおかけしてすみません(;;

転職所内蔵のバグは直りました(^^
plファイルが多いので混乱していましたがw
本当にありがとうございました。
スレッド一覧

CGIROOM