▼スレッド
│
└◇982:Re[2]:MyRecordの不具合 [moon] 03/14 13:08
└◇983:Re[3]:MyRecordの不具合 [ミル] 03/14 14:44
└◇984:Re[4]:MyRecordの不具合 [moon] 03/14 18:45
└◇985:Re[5]:MyRecordの不具合 [ミル] 03/15 00:27
└◇986:Re[6]:MyRecordの不具合 [moon] 03/15 09:01<-last
> 新規で作成した場合ではなく、手紙を送った場合に自分のマイレコが相手のマイレコの3件ほどに上書きされる。スレッド一覧
> そのまま同じ相手に手紙を送ると、ほとんどの確率で自分の送った内容が返ってくる。返ってこないこともある。意味不明
> そして、それまた別の人に手紙を送ってみると、それまでのマイレコが全て消失。相手の人のマイレコの1~3件になる。
そういうことでしたら、No.381は無視してsub note_beforeとsub note_afterを書き込んでください。
手紙だけでなくメッセージでもなるならsub words_beforeとsub words_afterもあったほうが良いです。
迅速な対応、ありがとうございますTTスレッド一覧
sub note_before {
if ($Fm{'pd2'}) { $Fm{'pd'} = $Fm{'pd2'} }
if ($Fm{'pd2'} eq $Fm{'id'}) { push (@msg,"自分に手紙を出すことはできません"); return }
@rcdlines = &get_user("$Fm{'id'}");
@rcdlines = &get_partner("$Fm{'pd'}");
&get_partner("$Fm{'pd'}");
$fg='NB'; &userout;
push (@msg,"[$Fm{'pd'}] $pnm相手に手紙を書くことができます");
print qq|<td bgcolor="#E6E6FA" colspan=2>手紙の内容:|; &form('start');
print qq|<textarea rows=5 cols=60 wrap=soft name=words></textarea>|;
&OKbuttoninform('on','note_after');
print qq|</td></tr>|; &form('end');
}
sub note_after {
if ($Fm{'pd2'}) { $Fm{'pd'} = $Fm{'pd2'} }
if ($Fm{'pd'} eq $Fm{'id'}) { push (@msg,"自分に手紙を出すことはできません"); return }
@rcdlines = &get_user("$Fm{'id'}");
@prclines = &get_partner("$Fm{'pd'}");
($pcc,$pfc,$psc,$ptc) = split(/△/,$pmc);
$pcc++;
$pmc = "$pcc△$pfc△$psc△$ptc";
return if $fg ne 'NB';
return if $Fm{'words'} eq '';
&add_record("[$id] $nmからの手紙:「$Fm{'words'}」");
push (@msg,"$pnmに手紙を残しました");
$fg = ''; &userout;
}
こういった感じです……。もしかしてadd_recordやPartnerGetに問題でもあるのかと思うのですが、普通にメッセージを残す場合は問題ありませんでしたし、いくら見てもやっぱり分かりませんでしたTT
> @rcdlines = &get_user("$Fm{'id'}");スレッド一覧
> @rcdlines = &get_partner("$Fm{'pd'}");
> &get_partner("$Fm{'pd'}");
sub note_beforeの上記が原因です。
上記を、
@rcdlines = &get_user("$Fm{'id'}");
@prclines = &get_partner("$Fm{'pd'}");
に変更すれば大丈夫です。
何故問題があるのかは理解しておいたほうが良いと思います。
あわわ。本当だ。スレッド一覧
SoSではプレイヤーとその相手が鏡合わせのような世界だということを聞いたことがありますが、そのレコードのラインを指定するのを間違えてしまった。ということしか分かりません。
ラインの処理を理解できていないのだと思いますが……
> あわわ。本当だ。スレッド一覧
> SoSではプレイヤーとその相手が鏡合わせのような世界だということを聞いたことがありますが、そのレコードのラインを指定するのを間違えてしまった。ということしか分かりません。
>
> ラインの処理を理解できていないのだと思いますが……
では、一応説明しておきますね。
(1) @rcdlines = &get_user("$Fm{'id'}");
(2) @rcdlines = &get_partner("$Fm{'pd'}");
(3) &get_partner("$Fm{'pd'}");
(4) &userout;
(1)で@rcdlinesに自分のマイレコードを読み込んで、(2)では相手のマイレコードで@rcdlinesを上書きしています。
そして、&userout;では@rcdlinesを保存するので結果的に(2)で上書きした相手のマイレコードが自分のマイレコードとして保存されるわけです。