No.1838 削除順リストを、ログインした順にする方法 |
ご無沙汰しております、YOUMEです。
いつもお世話になっております。
今回も、お知恵を貸して頂ければと思い、やってきました。
かなり前に「削除順」というリスト表示を実装したのですが、ログイン順にしたいと考えております。
言葉だけは「ログイン順」としているのですが、
実際のところ削除日数が近い順番から並んでしまっているのが現状です。
list_order.pl内
----------------------
$now = time - $def_dl * 86400;
&get_file; &list_in;
$Fm{'ps'} = $admpas;
# $TfSkip = "AttackPoint-DefensePoint-ItemBreak-Rate-Bounty-StealFiguar-StolenFigure-Fighter";
# $TvSkip = "BuyFigure-BuyPrice";
foreach (0 .. $#lstlines)
{
($id,$nm,$ps,$jb,$ig,$sp,$bp,$bn,$ak,$dd,$hp,$xp,$ab,$db,$av,$wn,$lz,$dt,$mn,$bg,$xi,$tm,$lf,$fe,$cm,$is,$ht,$fg,$rw,$kl,$sex,$itemmakemax,$list,$saying,$tep,$lasttm,$itbreak,$buyfig,$buymon,$steal,$stolen,$karma,$attribute,$fighter,$cm_length,$Dlv,$md,$sj,$login,$buybuy) = split(/<>/,$lstlines[$_]);
next if $Fm{order} ne 'ID' && $sp =~ /-NPC-/;
# if ($TfSkip =~ /$Fm{order}/ && $sp !~ /Tf/){next;}
# if ($TvSkip =~ /$Fm{order}/ && $sp !~ /Tv/){next;}
$att = $ak + $ab; $def = $dd + $db; $itbreak = 0 if $itbreak !~ /[0-9]/; $buyfig = 0 if $buyfig !~ /[0-9]/; $buymon = 0 if $buymon !~ /[0-9]/; $steal = 0 if $steal !~ /[0-9]/; $stolen = 0 if $stolen !~ /[0-9]/;
my ($buy_count, $buy_total) = split(/\Q△\E/o, $buybuy);
if ($Fm{'listtyper'} eq "action")
{
if (($Fm{'idbef'} || $Fm{'idaft'}) && $id =~ /[a-zA-Z]/){next;}
if ($Fm{'idbef'} && $Fm{'idbef'} > $id){next;}
if ($Fm{'idaft'} && $Fm{'idaft'} < $id){next;}
if ($Fm{'mnbef'} && $Fm{'mnbef'} > $mn){next;}
if ($Fm{'mnaft'} && $Fm{'mnaft'} < $mn){next;}
if ($Fm{'rwbef'} && $Fm{'rwbef'} > $rw){next;}
if ($Fm{'rwaft'} && $Fm{'rwaft'} < $rw){next;}
if ($Fm{'atbef'} && $Fm{'atbef'} > $att){next;}
if ($Fm{'ataft'} && $Fm{'ataft'} < $att){next;}
if ($Fm{'defbef'} && $Fm{'defbef'} > $def){next;}
if ($Fm{'defaft'} && $Fm{'defaft'} < $def){next;}
# if ($Fm{'Dlvbef'} && $Fm{'Dlvbef'} > $Dlv){next;}
# if ($Fm{'Dlvaft'} && $Fm{'Dlvaft'} < $Dlv){next;}
# if ($Fm{'loginbef'} && $Fm{'loginbef'} > $login){next;}
# if ($Fm{'loginaft'} && $Fm{'loginaft'} < $login){next;}
# if ($Fm{'buy_countbef'} && $Fm{'buy_countbef'} > $buy_count){next;}
# if ($Fm{'buy_countaft'} && $Fm{'buy_countaft'} < $buy_count){next;}
# if ($Fm{'buy_totalbef'} && $Fm{'buy_totalbef'} > $buy_total){next;}
# if ($Fm{'buy_totalaft'} && $Fm{'buy_totalaft'} < $buy_total){next;}
if ($Fm{'mdbef'} && $Fm{'mdbef'} > $md){next;}
if ($Fm{'mdaft'} && $Fm{'mdaft'} < $md){next;}
if ($Fm{'av_alive'} && $av eq "alive"){next;}
if ($Fm{'av_poison'} && $av eq "poison"){next;}
if ($Fm{'av_withgost'} && $av eq "with ghost"){next;}
if ($Fm{'av_dead'} && $av eq "dead"){next;}
if ($Fm{'ss_ns'} && $fg eq "NS"){next;}
if ($Fm{'ss_hs'} && $fg eq "HS"){next;}
if ($Fm{'ss_ss'} && ($fg eq "SS" || $fg eq "DISCOVERS")){next;}
if ($Fm{'ss_sn'} && ($fg ne "NS" && $fg ne "HS" && $fg ne "SS" && $fg ne "DISCOVERS")){next;}
if ($sp =~ /Pb/){ $utype = 3; }
elsif ($ps eq "$admpas" && $id ne "$ad_id"){ $utype = 5; }
elsif ( $sp =~ /Tf/ && $sp =~ /Tv/) { $utype = 4; }
elsif ( $sp =~ /Tf/) { $utype = 1; }
else { $utype = 2; }
if ($Fm{'typef'} && $utype == 1){next;}
if ($Fm{'typev'} && $utype == 2){next;}
if ($Fm{'typep'} && $utype == 3){next;}
if ($Fm{'typefv'} && $utype == 4){next;}
if ($Fm{'typenpc'} && $utype == 5){next;}
if ($Fm{'listnameha'} && index($nm,$Fm{'listnameha'}) == -1){next;}
if ($Fm{'listcomha'} && index($cm,$Fm{'listcomha'}) == -1){next;}
if ($Fm{'play_setell'}){
$stell_check = lc($Fm{'play_setell'});
if($is !~ /$stell_check/){next}
}
}
if ($itemmakemax !~ /[0-9]/) {$itemmakemax = 0;}
if($Fm{'order'} eq "ログイン")
{
if($ps eq $admpas || $sp =~ /-ND-/){ $time1 = "無期"; }
else{
if(!$del_tms || !$lasttm){$times = ($def_dl * 86400) - time + $tm;}
else{$times = ($def_dl * 86400) - time + $lasttm;}
$time1 = int(($times) / 86400); $times -= ($time1 * 86400);
$time2 = int(($times) / 3600); $times -= ($time2 * 3600); $time2 = sprintf("%02d",$time2);
$time3 = int(($times) / 60); $times -= ($time3 * 60); $time3 = sprintf("%02d",$time3); $times = sprintf("%02d",$times);
$times = "$time1日$time2:$time3:$times";
$time1 = "<!--$lasttm-->$times" if $lasttm;
$time1 = "<!--$tm-->$times" if !$lasttm;
}
}
if($Fm{'order'} eq "Rate" || $Fm{'mode'} eq '' || $Fm{'mode'} eq 'norm_save' || $Fm{'mode'} eq 'hide_save' || $Fm{'mode'} eq 'levy'){ if ($wn) { $rt = &rate($wn,$lz,$kl,$dt) } else { $rt = 0 } }
if ($Fm{'mode'} eq '' || $Fm{'mode'} eq 'norm_save' || $Fm{'mode'} eq 'hide_save' || $Fm{'mode'} eq 'levy' || $Fm{'mode'} eq 'con_game')
{
&find_del; &find_best;
if ($fg eq '' || $fg =~ /B/) { $playernow++; $playernow_name .= '<br>' if $playernow_name; $playernow_name .= "<img src=../wakiyaku/itmimg/N_etc/2011-12-23_3-141.gif><b><FONT color=#F0E68C>$nm</FONT></b> が走ってるみたいです。";
}
}
$cm_length = length($cm);
%order =
(
'ID',$id,
'名前',$nm,
'Rate',$rt,
'G',$mn,
'ブラックリスト',$rw,
'職業',$jb,
'攻撃力',$att,
'防御力',$def,
'ログイン',$time1,
'合成回数',$itemmakemax,
'ItemBreak',$itbreak,
'BuyFigure',$buymon,
'BuyPrice',$buyfig,
'StealFigure',$steal,
'StolenFigure',$stolen,
'Fighter',$fighter,
'ドラゴンマスターレベル',$Dlv,
'Mdcoins',$md,
'ログイン回数',$login,
'総購入回数',$buy_count,
'総購入金額',$buy_total,
'Comment',$cm_length
);
if ($sp =~ /-NPC-/){ next }
push (@odrlines,"$order{$Fm{'order'}}<>$lstlines[$_]");
}
if ($Fm{'order'} ne 'Name' && $Fm{'order'} ne '職業' && $Fm{'order'} ne 'ID' && $Fm{'order'} ne 'ログイン' && $Fm{'order'} ne 'Dlv' && $Fm{'order'} ne 'Mdcoins')
{@odrlines = sort({$b <=> $a} @odrlines);}
else{@odrlines = sort(@odrlines);}
1;
----------------------
現状こんな感じになっております。
ログインした順番に並び替えることはできるのでしょうか?
今までもいろいろ試したことはあったのですが、まったく再現できず…
もし可能であれば、ご教授頂けたら幸いです…!
▼関連発言
│
└◆1838:削除順リストを、ログインした順にする方法 [YOUME] 05/08 12:03
└◆1839:Re:削除順リストを、ログインした順にする方法 [moon] 05/08 20:30
└◆1840:Re[2]:削除順リストを、ログインした順にする方法.. [YOUME] 05/11 09:13<-last
◇題名は、短くわかりやすく書いてください。 ◇過去に同じ内容が投稿されていないか検索してから書き込んで下さい。 ◇管理人の判断により相応しくない投稿は削除します。 |