私設SoS2オーナー応援BBS

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

スレッド

└◇517:
新規登録直後 [masaki] 04/27 07:48

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


517● 新規登録直後[ masaki ] 2003 04/27 07:48
おはようございます!
昨日、レティさんのところにある「戦闘スタイル」の改造をしました。
その改造は終わっているのですが、困った事が一つ。
新規登録直後はsub normal_action↓
    if($mysp !~ /Nf/ && 1<$hp){
        &input('radio','mode','find_item',' checked',"アイテム探索\n");
        print qq|<select name=rt>\n|;
        for($rt=1;$rt<$hp&&$rt<10;$rt++){
            print qq|<option value="$rt">$rt\n| ;
        }
        print qq|</select><br>\n| ;
    }
    &input('radio','mode','dump_before','',"アイテムを捨てる<br>\n");
    &input('radio','mode','stell_before','',"ステラツィオの設定<br>\n")    if $mysp !~ /Nf/;
    &input('radio','mode','poem_before','',"詩・日誌を書く<br>\n")         if $mysp =~ /Wp/ || $mysp =~ /An/;
    &input('radio','mode','goods_before','',"商品の設定<br>\n")            if $mysp =~ /Tv/ && $mysp !~ /Nf/;
    &input('radio','mode','goods_before',' checked',"商品の設定<br>\n")    if $mysp =~ /Nf/;
    &input('radio','mode','fee_before','',"治療費の設定<br>\n")            if $mysp =~ /Ad|Rv/;
    &input('radio','mode','com_before','',"コメント文の変更<br>\n");
    &input('radio','mode','judge_before','',"アイテム鑑定<br>\n")         if $mysp =~ /Eo/;
    &input('radio','mode','fee_before','',"鑑定料の設定<br>\n") if $mysp =~ /Eo/;
    &input('radio','mode','name_before','',"銘入り品の名前を変更する<br>\n") if $mybp =~ /Na/;
    if ($mysp !~ /(Fb|Fk|Fd)/ && $mysp =~ /Tf/){&input('radio','mode','fstyle_before','',"戦闘スタイルの決定【必ず行なってください】<br>\n")}
    &input('radio','mode','fsset_before','',"技の設定<br>\n") if $mysp =~ /Tf/;
    &input('radio','mode','fsmaster_before','',"新たな技を習得<br>\n") if $mysp =~ /Tf/;
    &input('radio','mode','flines_before','',"技発動時のセリフ変更<br>\n") if $mysp =~ /Tf/;
    require "soskit.pl";
&menu_comp;
    &input('radio','mode','bbs_before','',"伝言板に記入<br>\n");
    require 'ability.pl'; &sosiki_name;
if($sst ne "無所属"){
&input('radio','mode','abl_bbs_before','',"<font color=blue>アビリティ伝言板に記入</font><br>\n");
}
&input('radio','mode','idou','',"移動する<br>\n") ;
    if ($mysp !~ /Tf/) {
        &input('radio','mode','reward','','賞金首に金をかける ID:');
&input('text','pd','',' size=4',' 金額:');
&input('text','price','',' size=5','<br><br>');
    }
の内、
アイテム探索
アイテムを捨てる
ステラツィオの設定
コメント文の変更
伝言板に記入
移動する
賞金首に金をかける
しかできません。(探索は5回しかできず、戦闘系でも「賞金首に金をかける」ができてしまいます)
1つの動作(探索、コメント、ステラの設定など)をすれば正常な物にもどるのですが(^^;
どこがおかしいのか全く見当がつきません。
どうかご教授お願いします。
スレッド一覧


518● Re:新規登録直後[ moon ] 2003 04/27 11:08
>         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'}も出力してその時点で何が代入されているかを確認するのが手っ取り早いと思います。
スレッド一覧


519● Re[2]:新規登録直後[ masaki ] 2003 04/27 12:26
$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
スレッド一覧


520● Re[3]:新規登録直後[ moon ] 2003 04/27 13:24
よく考えてみたら新規登録直後にnormal_actionで一部のデータが反映されないというのはデフォルトの仕様です。(@lstlinesに自分のデータが追加されていないので・・・)
うちではnormal_actionでのデータ取得をデフォルトとは程遠いものにしているのですっかり忘れていました。

改善策としては、make_newの&writedat("$usrdir$id\.dat",$line);の上にでもpush(@lstlines, $line);を追加すれば大丈夫だと思います。
スレッド一覧


522● Re[4]:新規登録直後[ masaki ] 2003 04/27 14:51
> よく考えてみたら新規登録直後にnormal_actionで一部のデータが反映されないというのはデフォルトの仕様です。(@lstlinesに自分のデータが追加されていないので・・・)
> うちではnormal_actionでのデータ取得をデフォルトとは程遠いものにしているのですっかり忘れていました。
>
> 改善策としては、make_newの&writedat("$usrdir$id\.dat",$line);の上にでもpush(@lstlines, $line);を追加すれば大丈夫だと思います。
できました(^^
ありがとうございました!
スレッド一覧

CGIROOM