私設SoS2オーナー応援BBS

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

スレッド

└◇146:
Re:アイテムを個別にソート [moon] 11/15 19:59

 └◇178:エラーが・・・。 [ナム〜ン] 11/18 09:44
  └◇179:Re:エラーが・・・。 [moon] 11/18 19:39
   └◇182:無事にできました〜☆ [ナム〜ン] 11/19 14:41<-last


146● Re:アイテムを個別にソート[ moon ] 2002 11/15 19:59
> いつもゲームを楽しく遊ばしてもらってます☆
>
> ちなみに今現在私の作ってるsos2でちょっといきずまったので
> 質問させてもらいます。
> moonさんのところのカード関係にある
> 替えるカードにチェックを入れ決定ボタンを押してください
> のやり方を教えてほしいのです。
> アイテムを個別にいれかえる方法がわからなく、たぶんこれを
> 少しいじくればできると思うので・・・。
> どうぞよろしくお願いします。

交換処理は次のような感じです。
ここで、$Fm{'アイテム番号'}は呼び出し側フォームで設定します。

if(@items){
  my $change = -1;
  foreach(0..$#items){
    if($Fm{"$_"}){
      if($change>=0){ # 選択アイテムがあれば真
        ($items[$change],$items[$_]) = ($items[$_],$items[$change]); # 選択アイテムと現在のアイテムを交換
        $change = -1;
      }
      else{
        $change = $_; # 選択アイテムを現在のアイテムに設定
      }
    }
  }
}

# カードのスクリプトを見て即興で作成し直したのでミスをしているかも。
スレッド一覧


178● エラーが・・・。[ ナム〜ン ] 2002 11/18 09:44
解答ありがとうございます。
で、早速やってみたのですがいまいち理解ができなくて
エラーを出してしまいます・・・。
ちなみにアイテムではなく特種能力(スキルとは別物)を
作ってそれを装備や順番入れ替えと言う命令を今作ってます。

# Sub Fsort After #
sub fsort_after {
    @rcdlines = &get_user("$Fm{'id'}");
    return if $fg ne 'FB';
    &splititem('f');
    foreach (0 .. $#fhoses) {
($fhose,$fkz,$flv,$fsk,$frd) = split(/△/,$fhoses[$_]);
if ($fsk =~ /Qs/) { $nomsg = 1 } else { $nomsg = 0 }
        $fsk =~ s/Qs//g;
        if ($Fm{$_}) {
            if (@tf_fshu && @tv_fshu) { &fhose_arm($1,'Qs') }
        }
        if ($Fm{'sort'}) {
if(@fhoses){
  my $change = -1;
  foreach(0..$#fhoses){
    if($Fm{"$_"}){
      if($change>=0){
        ($fhoses[$change],$fhoses[$_]) = ($fhoses[$_],$fhoses[$change]);
        $change = -1;
      }
      else{$change = $_;}
    }
  }
}
    $fg = ''; &userout;
    push (@msg,"フォースを並べ変えました。");
        }
if (!$gn) { $newitem = "$fhose△$fkz△$flv△$fsk"; $newitem .= "△$frd" if $frd; push(@we,$newitem) }
$gn = 0;
    }
    @fhoses = @we; &joinitem(f); $fg = ''; &userout;
}

というやつなんですが
sortをするとアイテムの入れ替えができるというものです。
ちなみに# Sub Fsort Before #でアイテムをチェックして
# Sub Fsort After #で入れ替えるというのなんですが
入れ方が悪いのでしょうか?
スレッド一覧


179● Re:エラーが・・・。[ moon ] 2002 11/18 19:39
> sortをするとアイテムの入れ替えができるというものです。
> ちなみに# Sub Fsort Before #でアイテムをチェックして
> # Sub Fsort After #で入れ替えるというのなんですが
> 入れ方が悪いのでしょうか?

場所が悪いですね。
以下、ソートを選んだ場合はソートしかしないと仮定して変更。(文法チェックなし)

# Sub Fsort After #
sub fsort_after {
  @rcdlines = &get_user("$Fm{'id'}");
  return if($fg ne 'FB');
  &splititem('f');
  if($Fm{'sort'}){
    if(@fhoses){
      my $change = -1;
      foreach(0..$#fhoses){
        if($Fm{"$_"}){
          if($change>=0){
            ($fhoses[$change],$fhoses[$_]) = ($fhoses[$_],$fhoses[$change]);
            $change = -1;
          }
          else{$change = $_;}
        }
      }
    }
    push(@msg,"フォースを並べ変えました。");
  }
  else{
    # こちらにもif(@fhoses)を書いたほうが良いはず
    foreach(0..$#fhoses){
      ($fhose,$fkz,$flv,$fsk,$frd) = split(/△/,$fhoses[$_]);
      if($fsk=~/Qs/){$nomsg = 1;}else{$nomsg = 0;}
      $fsk =~ s/Qs//g;
      if($Fm{$_}){
        &fhose_arm($1,'Qs') if(@tf_fshu && @tv_fshu); # $1は不適切?
      }
      # $gnは使用していないのでいらない
      if(!$gn){$newitem = "$fhose△$fkz△$flv△$fsk"; $newitem .= "△$frd" if($frd); push(@we,$newitem);}
      $gn = 0;
    }
    @fhoses = @we;
  }
  &joinitem('f'); # たぶんエラー原因だったところ f→'f'
  $fg = ''; &userout;
}
スレッド一覧


182● 無事にできました〜☆[ ナム〜ン ] 2002 11/19 14:41
ありがとうございました☆
スレッド一覧

CGIROOM