▼スレッド
│
└◇518:Re:新規登録直後 [moon] 04/27 11:08
└◇519:Re[2]:新規登録直後 [masaki] 04/27 12:26
└◇520:Re[3]:新規登録直後 [moon] 04/27 13:24
└◇522:Re[4]:新規登録直後 [masaki] 04/27 14:51<-last
> for($rt=1;$rt<$hp&&$rt<10;$rt++){スレッド一覧
探索回数が5回になるのは、おそらく$hpに最後の人の体力が代入されておりかつその人の体力が6とかなのでは?
その他は、単純に$myspへの代入がされていないように思います。
デフォルトでいうと、if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp }の部分が正常に動作していなさそう。(これを実行する前に$Fm{'ID'}を空にしてあるとか・・・)
とりあえず、これもpushやprintで$hpと$mysp、ついでに$Fm{'ID'}も出力してその時点で何が代入されているかを確認するのが手っ取り早いと思います。
$myspには何も代入されていませんでした(;;スレッド一覧
新規登録直後というのがわかりません(;;
普段はちゃんと$myspに代入されているのですが・・
怪しいのは↓ですが
foreach $line (@lstlines) {
($pid,$pnm,$pps,$pjb,$pig,$psp,$pbp,$pbn,$pak,$pdd,$php,$pxp,$pab,$pdb,
$pav,$pwn,$plz,$pdt,$pmn,$pbg,$pxi,$ptm,$plf,$pfe,$pcm,$pis,$pht,$pfg,$prw,$pkl,$ptw,$pcs,$psg,$pmsgcount,$pFs,$pFa,$pexp,$pFl) = split(/<>/,$line);
if ($Fm{'id'} eq $pid) { $mysp = $psp; $mybp = $pbp; $hp = $php; $myjb = $pjb }
もしかして、make_newのほうでしょうか?(^^;
make_newは↓
# Sub Make New #
sub make_new {
if (!$def_ne) { &error("新規登録受付停止中") }
if ($Fm{'name'} eq "") { &error("名前を入力してください") }
if ($Fm{'pass'} eq "") { &error("パスワードを入力してください") }
if ($Fm{'pass'} ne $Fm{'pass2'}) { &error("2つのパスワードが一致しません") }
if ($def_pa && $Fm{'job'} eq $def_pb && $Fm{'pass'} !~ /$def_pp/) {
&error("質屋は管理者以外使用することができません");
}
&get_file; &list_in; &get_host; &find_user;
&error("その名前は既に使用されています") if $xpoint ne 'del';
&error("同一のホストが既に存在しています") if $zpoint;
$Fm{'ps'} = $Fm{'pass'};
@joblines = &opendat($jobdat);
foreach $line (@joblines) {
($jbn,$jig,$jsp,$jhp,$jxi,$jak,$jdd,$jmn,$jcs) = split(/<>/,$line);
if ($jbn eq $Fm{'job'}) { last }
}
$id = "0000";
while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) }
$line = join('<>',$id,$Fm{'name'},$Fm{'pass'},$jbn,$Fm{'face'},$jsp,'','',$jak,$jdd,$jhp,$jhp,0,0,'alive',0,0,0,$jmn,'',$jxi,time,'','','???','',$host,'',0,0,2,$cs,'','0','','Normal','0','???',"\n");
&writedat("$usrdir$id\.dat",$line);
chmod(0666,"$usrdir$id\.dat");
$Fm{'id'} = $id; &cookie_set; &play_form;
}
長くなってしまってすみません(jДj
よく考えてみたら新規登録直後にnormal_actionで一部のデータが反映されないというのはデフォルトの仕様です。(@lstlinesに自分のデータが追加されていないので・・・)スレッド一覧
うちではnormal_actionでのデータ取得をデフォルトとは程遠いものにしているのですっかり忘れていました。
改善策としては、make_newの&writedat("$usrdir$id\.dat",$line);の上にでもpush(@lstlines, $line);を追加すれば大丈夫だと思います。
> よく考えてみたら新規登録直後にnormal_actionで一部のデータが反映されないというのはデフォルトの仕様です。(@lstlinesに自分のデータが追加されていないので・・・)スレッド一覧
> うちではnormal_actionでのデータ取得をデフォルトとは程遠いものにしているのですっかり忘れていました。
>
> 改善策としては、make_newの&writedat("$usrdir$id\.dat",$line);の上にでもpush(@lstlines, $line);を追加すれば大丈夫だと思います。
できました(^^
ありがとうございました!