No.1813 Re[2]:ログインボーナスとタイムボスに購入ランキング |
いつもお世話になります、いろいろ見直したのですが自分で何が悪いのか見つけることができませんでした…
> 疑わしいのは、ユーザーデータの読み書きが正常に行われていないのではないか、という点です。
> ということで、まずはsub get_user、get_partner、userout、partneroutにきちんと$loginの処理が追加されているかどうかを確認してみてください。
> 接触後ということで特にsub get_partnerとsub partneroutが怪しいです。
自分で見た限りはちゃんと追加してると思っているのですが、以下のような追加方法で間違いないでしょうか?
# Sub Get User #
sub get_user {
return if $getuserflag;
open(IN,"$usrdir$_[0]\.dat") || &error("ID $_[0]は存在しません $nm");
@_ = <IN>;
close(IN);
if (!@_)
{
open(IN,"$usrdir$_[0]\.log") || &error("ID $_[0]は存在しません");
@_ = <IN>;
close(IN);
}
if (!@_) { &error("ID $_[0] 読みこみエラー") }
$_[0] =~ s/[\n\r]//g;
($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,$Dg,$Dm,$md,$sj,$login) = split(/<>/,$_[0]);
if($itemmakemax eq "") {$itemmakemax = 0;}
if($tep eq "") {$tep = 0;}
if($itbreak eq "") {$itbreak = 0;}
if($buyfig eq "") {$buyfig = 0;}
if($buymon eq "") {$buymon = 0;}
if($steal eq "") {$steal = 0;}
if($stolen eq "") {$stolen = 0;}
if($karma eq "") {$karma = 0;}
if($attribute eq "") {$attribute = "-20_10_20_-10__20_-10_-20_10__0_0_0_0__0_0_0_0";}
&error("パスワードが違います") if $Fm{'ps'} ne $ps && $Fm{'ps'} ne $admpas && $Fm{'mode'} ne 'make_con' && $Fm{'mode'} ne 'make_con_m';
$userline = shift(@_);
$getuserflag = 1;
return @_;
}
# Sub Get Partner #
sub get_partner {
return if $getpartnerflag;
open(IN,"$usrdir$_[0]\.dat") || &error("ID $_[0]は存在しません");
@_ = <IN>;
close(IN);
if (!@_)
{
open(IN,"$usrdir$_[0]\.log") || &error("ID $_[0]は存在しません");
@_ = <IN>;
close(IN);
}
if (!@_)
{
&error("ID $_[0] 読みこみエラー");
}
$_[0] =~ s/[\n\r]//g;
($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,$psex,$pitemmakemax,$plist,$psaying,$ptep,$plasttm,$pitbreak,$pbuyfig,$pbuymon,$psteal,$pstolen,$pkarma,$pattribute,$pfighter,$pDg,$pDm,$pmd,$plogin) = split(/<>/,$_[0]);
if($pitemmakemax eq "") {$pitemmakemax = 0;}
if($ptep eq "") {$ptep = 0;}
if($pitbreak eq "") {$pitbreak = 0;}
if($pbuyfig eq "") {$pbuyfig = 0;}
if($pbuymon eq "") {$pbuymon = 0;}
if($psteal eq "") {$psteal = 0;}
if($pstolen eq "") {$pstolen = 0;}
if($pkarma eq "") {$pkarma = 0;}
if($pattribute eq "") {$pattribute = "-20_10_20_-10__20_-10_-20_10__0_0_0_0__0_0_0_0";}
shift(@_);
$getpartnerflag = 1;
return @_;
}
# Sub User Out #
sub userout {
$tm = time;
$line =
join('<>',$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,$Dg,$Dm,$md,$sj,$login,"\n");
unshift (@rcdlines,$line);
&writedat("$usrdir$id\.dat",@rcdlines);
&writedat("$usrdir$id\.log",@rcdlines);
chmod(0666,"$usrdir$id\.log");
# if(-s "$usrdir$id\.dat" < 10){&writedat("$usrdir$id\.dat",@rcdlines);}
}
# Sub Partner Out #
sub partnerout {
$pline =
join('<>',$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,$psex,$pitemmakemax,$plist,$psaying,$ptep,$plasttm,$pitbreak,$pbuyfig,$pbuymon,$psteal,$pstolen,$pkarma,$pattribute,$pfighter,$pDg,$pDm,$pmd,$psj,$plogin,"\n");
unshift (@prclines,$pline);
&writedat("$usrdir$pid\.dat",@prclines);
&writedat("$usrdir$pid\.log",@prclines);
chmod(0666,"$usrdir$pid\.log");
# if(-s "$usrdir$pid\.dat" < 10){&writedat("$usrdir$pid\.dat",@prclines);}
}
> sub get_partnerなどが問題なさそうでしたら、次はすべてのファイルを対象に「login」を検索して、もし今回追加したもの以外に$loginまたは$ploginがありましたら変数が競合している可能性があるということなので今回追加した変数名を別のものにする必要があるかもしれません。
これも検索して探したのですが、被りはありませんでした…
> これでも原因が特定できない場合は同様にすべてのファイルを対象に「なし」を検索して何かのパラメータ変数に代入しているような箇所を探してみてください。
これも特になったです…
そして何故かプレイヤーによっていろいろな表記に代わっていて、その数値がどこから来てるのか不明なのです…
妙な数値が入る人もいれば、そもそものカウントがリセットされてしまっている人もいて;
もうどうしたらいいのか…涙
▼関連発言
│
└◆1797:ログインボーナスとタイムボスに購入ランキング [YOUME] 10/15 14:53
├◆1798:Re:ログインボーナスとタイムボスに購入ランキング [moon] 10/15 21:43
│└◆1799:Re[2]:ログインボーナスとタイムボスに購入ランキ.. [YOUME] 10/16 09:06
│ └◆1800:Re[3]:ログインボーナスとタイムボスに購入ラン.. [moon] 10/16 18:42
│ └◆1801:Re[4]:ログインボーナスとタイムボスに購入ラ.. [YOUME] 10/17 16:42
│ └◆1802:Re[5]:ログインボーナスとタイムボスに購入.. [moon] 10/17 20:14
│ └◆1803:Re[6]:ログインボーナスとタイムボスに購.. [YOUME] 10/20 12:00
│ └◆1804:Re[7]:ログインボーナスとタイムボスに.. [moon] 10/20 19:13
│ └◆1805:Re[8]:ログインボーナスとタイムボス.. [YOUME] 10/21 11:49
│ └◆1806:Re[9]:ログインボーナスとタイムボ.. [moon] 10/21 19:37
│ └◆1807:Re[10]:ログインボーナスとタイ... [YOUME] 10/22 09:49
│ └◆1808:Re[11]:ログインボーナスとタ... [moon] 10/22 19:01
│ └◆1809:Re[12]:ログインボーナスと... [YOUME] 10/23 09:42
│ └◆1810:Re[13]:ログインボーナス... [moon] 10/23 19:34
│ └◆1811:Re[14]:ログインボーナ... [YOUME] 10/24 11:47
└◆1812:Re:ログインボーナスとタイムボスに購入ランキング [moon] 10/24 20:46
└◆1813:Re[2]:ログインボーナスとタイムボスに購入ランキ.. [YOUME] 10/25 11:12
└◆1814:Re[3]:ログインボーナスとタイムボスに購入ラン.. [moon] 10/25 13:58
└◆1815:Re[4]:ログインボーナスとタイムボスに購入ラ.. [moon] 10/25 14:21
└◆1816:Re[5]:ログインボーナスとタイムボスに購入.. [YOUME] 10/26 18:49<-last
◇題名は、短くわかりやすく書いてください。 ◇過去に同じ内容が投稿されていないか検索してから書き込んで下さい。 ◇管理人の判断により相応しくない投稿は削除します。 |