▼スレッド
│
└◇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
> いつもゲームを楽しく遊ばしてもらってます☆スレッド一覧
>
> ちなみに今現在私の作ってる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 = $_; # 選択アイテムを現在のアイテムに設定
}
}
}
}
# カードのスクリプトを見て即興で作成し直したのでミスをしているかも。
解答ありがとうございます。スレッド一覧
で、早速やってみたのですがいまいち理解ができなくて
エラーを出してしまいます・・・。
ちなみにアイテムではなく特種能力(スキルとは別物)を
作ってそれを装備や順番入れ替えと言う命令を今作ってます。
# 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 #で入れ替えるというのなんですが
入れ方が悪いのでしょうか?
> 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;
}
ありがとうございました☆スレッド一覧