発言者: moon
発言日: 2008 02/28 23:33
> use_afterのラストのuseroutの後に
> >if ($saveitem = 1) {&save_game}
これはif($saveitem)やif($saveitem == 1)のようにしないと毎回save_gameが実行されてしまいます。
> sub save_gameに
> if ($bp =~ /Ds/) { $fg = 'DS'; $bp = $bn = '' }
> ※次回sub make_conでダンジョンモードから再開させるためのフラグ
>
> としてみたんですが、使用するととりあえずセーブ&ログアウトはされるようなのですが
> その後メイン画面が分裂してしまい、表示もバグって訳のわからない事になってしまいます。(上部のメニューなども二重に表示されてしまう)
> どこに問題があるか、判りますでしょうか…。
表示がおかしくなるのは単純にsub headerやsub table_topが2度実行されてしまうためです。
また、save_gameの中でもuseroutが実行されますので(何も対策をしていない場合は)マイレコードが消えてしまいます。
ですので1つのやり方としての追加修正は、
・sub play_formの中でuse_afterを実行した後に$saveitemが1ならsave_gameを実行してからすぐにreturnする。
・sub save_gameの中で$saveitemが1なら@rcdlines = &get_user("$Fm{'id'}");を実行しない。
・sub use_afterの中で該当使い捨てアイテムが使われた後に他のアイテムが使われないようにする。(「if ($Fm{$_}) {」→「if ($Fm{$_} && !$saveitem) {」)
・sub use_afterの中でsave_gameの実行を行わず、$saveitemが1ならuseroutを実行しない。
これでどうでしょうか。
▼関連発言
│
└◆1478:セーブアイテム使用時の即時ログアウト [矢神] 02/28 20:53
└◆1480:Re:セーブアイテム使用時の即時ログアウト [moon] 02/28 23:33
└◆1484:Re[2]:セーブアイテム使用時の即時ログアウト [矢神] 02/29 11:02
└◆1485:訂正 [矢神] 02/29 12:53
└◆1487:Re:訂正 [moon] 02/29 20:59
└◆1488:Re[2]:訂正 [moon] 02/29 21:03
└◆1490:ありがとうございました! [矢神] 03/02 00:28<-last