私設SoS2オーナー応援BBS

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

スレッド

└◇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


983● Re[3]:MyRecordの不具合[ ミル ] 2004 03/14 14:44
迅速な対応、ありがとうございます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
スレッド一覧


984● Re[4]:MyRecordの不具合[ moon ] 2004 03/14 18:45
>     @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'}");
に変更すれば大丈夫です。

何故問題があるのかは理解しておいたほうが良いと思います。
スレッド一覧


985● Re[5]:MyRecordの不具合[ ミル ] 2004 03/15 00:27
あわわ。本当だ。
SoSではプレイヤーとその相手が鏡合わせのような世界だということを聞いたことがありますが、そのレコードのラインを指定するのを間違えてしまった。ということしか分かりません。

ラインの処理を理解できていないのだと思いますが……
スレッド一覧


986● Re[6]:MyRecordの不具合[ moon ] 2004 03/15 09:01
> あわわ。本当だ。
> 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)で上書きした相手のマイレコードが自分のマイレコードとして保存されるわけです。
スレッド一覧

CGIROOM