]+>//g;
$prod[12] =~ s/<\/TD><\/TR>//g;
$prod[12] =~ s/]+>//g;
$prod[12] =~ s/<\/div>/ /g;
$dummy=quotemeta("基本 グループ1 グループ2");
$prod[12] =~ s/$dummy//g;
print "$prod[12] ";
print " 武器魔法スキル ";
if ($skill_visible) {
for($i=0;$i<$#skilllist+1;$i++){
print "$skilllist[$i]:$skill[$i] ";
}
} else {
print "skill function is not available. ";
}
} elsif($mode eq "prof"){
if($class_edit==0){
$class =~ s/<//g;
}
print "$no/[$class] ";
print "$racelist[$race]($facetypename[$etc[0]])/$relmlistl[$relm]/$point/rank $mrank ";
print "コメント[$comment] ";
if($prof ne "off"){
print "ハンドル[$handle] ";
print "POLハンドル[$polhn] ";
print "e-mail[$mail] ";
print "ホームページ[ $home] ";
print "コメント $comment2";
} else {
print " プロフィール非公開";
}
} elsif($mode eq "level"){
if(($anon ne "on") || ($anon_mode != 1 )){
if($lev[$mainjob]<10){
$main_level="0$lev[$mainjob]";
} else {
$main_level=$lev[$mainjob];
}
if($supportjob <99){
$mod_level=int($lev[$mainjob]/2);
if($mod_level==0){$mod_level=1;}
if($mod_level>$lev[$supportjob]){$mod_level=$lev[$supportjob];}
if($mod_level<10){
$mod_level="0$mod_level";
}
print "$joblist[$mainjob]$main_level/$joblist[$supportjob]$mod_level ";
} else {
print "$joblist[$mainjob]$main_level ";
}
print "ジョブレベル ";
for ($j=0;$j<$job_max;$j++){
print "$joblist[$j]:$lev[$j] ";
}
@prod_r = split(/,/,$etc[1]);
print "合成 ";
for ($j=0;$j<$prod_max;$j++){
print "$prodlist[$j]:$prod[$j]($ranklist[$prod_r[$j]]) ";
}
}
} elsif($mode eq "mission"){
@mission = split(/,/,$prod[15]);
@assault= split (//,$mission[16]);
print"
ミッション ";
print"アトルガン:$amlist[$mission[15]] ";
print"プロマシア:$pmlist[$mission[0]] ";
print"ジラート:$jmlist[$mission[1]] ";
print"サンドリア:$smlist[$mission[2]] ";
print"バストゥーク:$bmlist[$mission[3]] ";
print"ウインダス:$wmlist[$mission[4]] ";
print"裏サンド:$maru[$mission[5]] ";
print"裏バス:$maru[$mission[6]] ";
print"裏ウイン:$maru[$mission[7]] ";
print"裏ジュノ:$maru[$mission[8]] ";
print"裏氷河:$maru[$mission[9]] ";
print"裏ザルカ:$maru[$mission[10]] ";
print"裏バルクルム:$maru[$mission[11]] ";
print"裏ブブリム:$maru[$mission[12]] ";
print"裏クフィム:$maru[$mission[13]] ";
print"裏タブナジア:$maru[$mission[14]] ";
print "
アサルト ";
print"$aslist[0]:$asrank[$assault[0]] ";
print"$aslist[1]:$maru[$assault[1]] ";
print"$aslist[2]:$maru[$assault[2]] ";
print"$aslist[3]:$maru[$assault[3]] ";
print"$aslist[4]:$maru[$assault[4]] ";
print"$aslist[5]:$maru[$assault[5]] ";
print"$aslist[6]:$maru[$assault[6]] ";
print"$aslist[7]:$maru[$assault[7]] ";
print"$aslist[8]:$maru[$assault[8]] ";
print"$aslist[21]:$maru[$assault[21]] ";
print"$aslist[22]:$maru[$assault[22]] ";
print"$aslist[9]:$maru[$assault[9]] ";
print"$aslist[10]:$maru[$assault[10]] ";
print"$aslist[11]:$maru[$assault[11]] ";
print"$aslist[23]:$maru[$assault[23]] ";
print"$aslist[24]:$maru[$assault[24]] ";
print"$aslist[12]:$maru[$assault[12]] ";
print"$aslist[13]:$maru[$assault[13]] ";
print"$aslist[14]:$maru[$assault[14]] ";
print"$aslist[25]:$maru[$assault[25]] ";
print"$aslist[26]:$maru[$assault[26]] ";
print"$aslist[15]:$maru[$assault[15]] ";
print"$aslist[16]:$maru[$assault[16]] ";
print"$aslist[17]:$maru[$assault[17]] ";
print"$aslist[27]:$maru[$assault[27]] ";
print"$aslist[28]:$maru[$assault[28]] ";
print"$aslist[18]:$maru[$assault[18]] ";
print"$aslist[19]:$maru[$assault[19]] ";
print"$aslist[20]:$maru[$assault[20]] ";
print"$aslist[29]:$maru[$assault[29]] ";
print"$aslist[30]:$maru[$assault[30]] ";
} elsif($mode eq "custom"){
@custom=split(/,/,$prod[11]);
print "
$custom_field[0] ";
for($j=1;$j<$#custom_field+1;$j++){
if($custom_pulldown[$j]==0){
print "$custom_field[$j]:$custom[$j] ";
} else {
print "$custom_field[$j]:".${"custom_list$j"}[$custom[$j]]." ";
}
}
} else {
#detailend
}
print "
";
print " プロフィール";
print " レベル・合成スキル";
print " ミッション";
print " $custom_field[0]";
print " メリポ/スキル
";
if($mes_avail){
print <<"EOM";
$nameさんへメッセージ送信
EOM
}
print " ListTop";
}
sub diary_i{
print "$name 's diary
";
if(!open(IN,"$datafile")){&error_message('datafile error2098','data file access failed.');}
@all= ;
close IN;
$match="";
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name){
$match=$i;
}
}
if($match eq ""){&header; &error_message('id/pass error','access failed.');}
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
$diaryfile="$diarydir$name.$diaryletter";
if($diarybg ne ""){$dbg=" bgcolor=$diarybg";}
if (!open(DB,"$diaryfile")) {
print "$name さんの日記はありません。";
}
elsif($prof ne "off"){
@lines = ;
close(DB);
$pagenow=1;
foreach $i (@lines){
($no,$today2,$title,$body,$imgexist,$res)=split(/\t/,$i);
if($pagenow==$page){
print "●$title/$today2($no) ";
if($imgexist ne ""){
@imgfiles = split(/,/,$imgexist);
foreach $imgfile(@imgfiles){
print "[画像] ";
}
}
if ($FORM{'all'} ne "true")
{
@diarylines = split(/ /,$body);
if ($#diarylines > 8)
{
$body = join(" ", @diarylines[0..8])."(略 [全文を読む]";
}
}
print "$body";
if($res ne ""){print " $res ";}
if($diaryres){
print "";
}
}
$pagenow++;
}
$page++;
print " Next";
print " DiaryTop";
print " ListTop";
}
else {
print "$name さんの日記は非公開になっています。";
}
}
sub res_diary_i{
if($body eq ""){&header;&error_message('本文がありません','');}
if($name eq ""){&header;&error_message('名前がありません','');}
if($body !~ /[\x81-\x9A]/ && $denyeng){&header;&error_message('アルファベットのみの書き込みは禁止されています。','')};
&word_ban;
$diaryfile="$diarydir$name2.$diaryletter";
&dirlock;
if (!open(DB,"$diaryfile")) {
&header;
print " ";
} else {
@lines = ;
close(DB);
foreach $i(@lines){
($r_no,$r_today,$r_title,$r_body,$r_img,$r_res)=split(/\t/,$i);
if($no !=$r_no){
push(@out,$i);
} else {
$r_res =~ s/\n//g;
$body =~ s/ //g;
$r_res.="$name > $body ($today2) ";
$r_body =~ s/\n//g; #旧バージョン対策
push(@out,"$r_no\t$r_today\t$r_title\t$r_body\t$r_img\t$r_res\t\n");
}
}
if (!open(OUT,">$diaryfile")) {&header; &error_message('filesystem error','access failed.');}
print OUT @out;
close(OUT);
if(!open(IN,"$datafile")){&error_message('datafile error2480','data file access failed.');}
@all=;
close IN;
@out=();
foreach $i(@all){
($no,$r_name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$i);
if($r_name eq $name2){
push(@out,"$no\t$r_name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t$lev[16]\t$lev[17]\t$lev[18]\t$lev[19]\t\n");
} else {
push(@out,$i);
}
}
if(!open(OUT,">$datafile")){&header; &error_message('datafile error2494','data file access failed.');}
print OUT @out;
close OUT;
rmdir($lockdir);
#RSS用履歴ファイル作成
$historybase="RESDIA\t$name $name2\t$timenow\t$rsstime\t$no\t$body\t$rh\t$addr\t\n";
&add_history;
}
$name=$name2;
}
sub new_regist_i{
if(($gpass ne $reg_pass && $reg_mode==0)){&error_message('illegal login','password is not correct.');}
if($mode eq "regist"){
&new_regist_regist_i;
} else {
&new_regist_normal_i;
}
}
sub new_regist_regist_i{
if(!open(IN,"$datafile")){&error_message('datafile error1791','data file access failed.');}
@all=;
close IN;
if( !($pass =~ /^[A-Za-z0-9_]+$/) ){
&error_message('そのパスワードは登録に利用できません。','パスワードは半角英数字で登録してください。');
}
if( !($name =~ /^[A-Za-z0-9_]+$/) ){
&error_message('その名前は使えません。','名前は半角英数字で登録してください。');
}
if($mainjob == $supportjob){&error_message('main/job error','メインとサポートは同一のジョブにはできません');}
$min_no=0;
foreach $i (@all){
($r_no,$r_user,$dummy)=split(/\t/,$i);
if($r_user eq $name){&error_message('already registed',"'$name' has already registed.");}
}
$no=$#all+2;
if($no<10){$no="0$no";}
if($no<100){$no="0$no";}
push(@all,"$no\t$name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t$lev[16]\t$lev[17]\t$lev[18]\t$lev[19]\t\n");
&dirlock;
if(!open(OUT,">$datafile")){&error_message('datafile error1819','data file access failed.');}
print OUT @all;
close OUT;
rmdir($lockdir);
#RSS用履歴ファイル作成
$historybase="NEWREG\t$name\tNewMember\t$rsstime\t$no\t$rh\t\t$addr\t\n";
&add_history;
print "新規メンバー'$name'($no)の登録を完了しました。";
print " ListTop";
}
sub new_regist_normal_i{
print <<"EOM";
必要事項を入力してください。
";
}
sub keitai_menu{
print "modifying=$all ";
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
@prod_r = split(/,/,$etc[1]);
@mp=split(/,/,$prod[13]);
@mission = split(/,/,$prod[15]);
@assault=split( //,$mission[16]);
#################共通フォーム
print "";
print "No. $no : '$name' 修正 ";
}
sub keitai_mpoint_menu{
#メリポ用メニュー
#mpoint1 HPMPステータス戦闘 0-27
#mpoint2 魔法その他 28-44
#mpoint3 ジョブ1 45-140
#mpoint4 ジョブ2 141-210
print "";
print "";
print "";
print "";
}
sub keitai_mission_menu{
#ミッション用メニュー
#mission1 3国
#mission2 デュナミス
#mission3 ジラート
#mission4 プロマシア
#mission5 アトルガン
#mission6 アサルト
print "";
print "";
print "";
print "";
print "";
print "";
}
sub keitai_modify{
print "modifying=$all ";
print "";
#最初に$allをチェックしてマッチファイルから元データを上書きする。
if($all eq "m_prof"){
($no,$name,$pass,$dummy,$dummy,$dummy,$mainjob,$supportjob,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
} elsif ($all eq "m_level"){
($no,$name,$pass,$anon,$race,$relm,$dummy,$dummy,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$dummy,$etc[2],$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy)=split(/\t/,$match);
} elsif ($all eq "m_skill"){
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$dummy,$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
} elsif ($all eq "custom"){
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
for($j=1;$j<$#custom_field+1;$j++){
if($custom_control[$j] eq $name){
$custom[$j]=$FORM{"custom$count"."_$j"};
if($FORM{"custom0"} != 0){
$custom[$FORM{"custom0"}] += $FORM{"custom$count"."_$j"};
}
}
}
$prod[11]=join(",", @custom);
} elsif ($all =~ "mission"){
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
@mission = split(/,/,$prod[15]);
if($all eq "mission1"){
$mission[2]=$FORM{"mission2"};
$mission[3]=$FORM{"mission3"};
$mission[4]=$FORM{"mission4"};
}
if($all eq "mission2"){
for($i=5;$i<15;$i++){
$mission[$i]=$FORM{"mission$i"};
}
}
if($all eq "mission3"){
$mission[1]=$FORM{"mission1"};
}
if($all eq "mission4"){
$mission[0]=$FORM{"mission0"};
}
if($all eq "mission5"){
$mission[15]=$FORM{"mission15"};
}
if($all eq "mission6"){
$mission[16]="";
for($j=0;$j<$#aslist+1;$j++){
$mission[16]=$mission[16].$FORM{"assault$j"};
}
}
$prod[15]=join(",", @mission);
} elsif ($all =~ "mpoint"){
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
&list_mpoint_i;
@mp=split(/,/,$prod[13]);
if($all eq "mpoint1"){
for($i=0;$i<28;$i++){
$mp[$i]=$FORM{"mp$i"}
}
}
if($all eq "mpoint2"){
for($i=28;$i<45;$i++){
$mp[$i]=$FORM{"mp$i"}
}
}
if($all eq "mpoint3"){
for($i=45;$i<141;$i++){
$mp[$i]=$FORM{"mp$i"}
}
}
if($all eq "mpoint4"){
for($i=141;$i<211;$i++){
$mp[$i]=$FORM{"mp$i"}
}
}
$prod[13]="";
$mptotal=0;
for($i=0;$i<211;$i++){
$prod[13]=$prod[13].$mp[$i].",";
if($mp[$i]>0){
for($j=0;$j<$mp[$i];$j++){
$mptotal= $mptotal + substr($m_needpoint[$i],$j,1);
}
}
}
#layout style2
$j=99; #現在カテゴリ
$prod[12]="| 基本 | グループ1 | グループ2 | | ";
for($i=0;$i<45;$i++){ #基本
if($mp[$i]>0){
if($j !=$m_categorycode[$i]){
$prod[12]=$prod[12]." $m_categoryname[$m_categorycode[$i]](カテゴリ上限$m_categorymax[$m_categorycode[$i]]) ";
$j=$m_categorycode[$i];
}
$prod[12]=$prod[12]."$m_name[$i] :".$mp[$i]."/$m_max[$i] ";
}
}
$prod[12]=$prod[12]." | ";
for($i=45;$i<141;$i++){ #ジョブカテゴリ1
if($mp[$i]>0){
if($j !=$m_categorycode[$i]){
$prod[12]=$prod[12]." $m_categoryname[$m_categorycode[$i]](カテゴリ上限$m_categorymax[$m_categorycode[$i]]) ";
$j=$m_categorycode[$i];
}
$prod[12]=$prod[12]."$m_name[$i] :".$mp[$i]."/$m_max[$i] ";
}
}
$prod[12]=$prod[12]." | ";
for($i=141;$i<211;$i++){ #ジョブカテゴリ2
if($mp[$i]>0){
if($j !=$m_categorycode[$i]){
$prod[12]=$prod[12]." $m_categoryname[$m_categorycode[$i]](カテゴリ上限$m_categorymax[$m_categorycode[$i]]) ";
$j=$m_categorycode[$i];
}
$prod[12]=$prod[12]."$m_name[$i] :".$mp[$i]."/$m_max[$i] ";
}
}
$prod[12]=$prod[12]." | ";
if($mptotal>0){
$prod[12]=$prod[12]."| 総消費メリットポイント | $mptotal | ";
}
} else {
($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match);
}
&dirlock;
if(!open(IN,"$datafile")){&error_message('datafile error612i','data file access failed.');}
@all=;
close IN;
@out=();
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name && $pass eq $r_pass){
$pastdat=$i;
$newdat="$r_no\t$name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t$lev[16]\t$lev[17]\t$lev[18]\t$lev[19]\t\n";
push(@out,$newdat);
} else {
push(@out,$i);
}
}
if(!open(OUT,">$datafile")){&header; &error_message('datafile error627i','data file access failed.');}
print OUT @out;
close OUT;
rmdir($lockdir);
#RSS用履歴ファイル作成
&compare_history;
$historybase="PROFED\t$name\t$name profile modify\t$rsstime\t$no\t$message\t$rh\t$addr\t\n";
&add_history;
print "個人データ更新終了";
print " ListTop";
}
sub login_i {
if(!open(IN,"$datafile")){&header; &error_message('datafile error/system','data file access failed.');}
@all=;
close IN;
$match="";
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name && $pass eq $r_pass){
$match=$i;
}
}
if($match eq ""){&header; &error_message('id/pass error','access failed.');}
if($function eq "mission"){
&mission_i;
} elsif ($mode eq "login"){
&login_enter_i;
} elsif($mode eq "mission"){
&keitai_mission_menu;
} elsif($mode eq "mpoint"){
&keitai_mpoint_menu;
} elsif($mode eq "menu"){
&keitai_menu;
} elsif($mode eq "modify"){
&keitai_modify;
} else {
&login_enter_i;
}
}
sub login_enter_i{
print "MemberList Top ";
print "No. $no : '$name' LoginMenu ";
print "登録データ修正";
#prof
print "";
#levelf
print "";
#skill
print "";
#mpoint
print "";
#mission
print "";
#custom
print "";
#message
if($mes_avail){
#新規メッセージチェック
print " メッセージ";
if (-e "$mesdir$name.cgi") {
if(!open(IN,"$mesdir$name.cgi")){&error_message('datafile error490','data file access failed.');}
@mes=;
close IN;
$k=0;
for $i(@mes){
($j,$dummy)=split(/\t/,$i);
$k=$k+$j;
}
if($k>0){print " $k 件の新しいメッセージがあります。";}
}
print "";
}
print " 日記を書く";
print "";
}
sub write_diary_i{
$diaryfile="$diarydir$name.$diaryletter";
if(!open(IN,"$datafile")){&header; &error_message('datafile error2249','data file access failed.');}
@all=;
close IN;
$match="";
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name && $pass eq $r_pass){
$match=$i;
}
}
if($match eq ""){&header; &error_message('id/pass error','access failed.');}
if ($mode eq "write"){
if($body eq ""){&header;&error_message('本文がありません','');}
if (!open(DB,"$diaryfile")) { @lines=(); }
@lines = ;
close(DB);
($maxno,$dummy1,$dummy2,$dummy3)=split(/\t/,$lines[0]);
$maxno++;
#あげ対策
$maxno=time();
$fnt="";
if($imgexist){$fnt="$name$maxno.$fileexst";}
@lines=reverse(@lines);
push(@lines,"$maxno\t$today2\t$title\t$body\t$fnt\t\t\n");
@lines=reverse(@lines);
@out=();
$count=0;
foreach $i(@lines){
if($count<$diarymax){
push(@out,$i);
$count++;
}
}
if (!open(OUT,">$diaryfile")) {&header; &error_message('filesystem error','access failed.');}
print OUT @out;
close(OUT);
if(!open(IN,"$datafile")){&error_message('datafile error2315','data file access failed.');}
@all=;
close IN;
@out=();
foreach $i(@all){
($no,$r_name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$i);
if($r_name eq $name){
push(@out,"$no\t$r_name\t$pass\t$anon\t$race\t$relm\t$mainjob\t$supportjob\t$prof\t$handle\t$polhn\t$mail\t$home\t$comment2\t$point\t$class\t$timenow\t$comment\t$mrank\t$etc[0]\t$etc[1]\t$etc[2]\t$prod[0]\t$prod[1]\t$prod[2]\t$prod[3]\t$prod[4]\t$prod[5]\t$prod[6]\t$prod[7]\t$prod[8]\t$prod[9]\t$prod[10]\t$prod[11]\t$prod[12]\t$prod[13]\t$prod[14]\t$prod[15]\t$lev[0]\t$lev[1]\t$lev[2]\t$lev[3]\t$lev[4]\t$lev[5]\t$lev[6]\t$lev[7]\t$lev[8]\t$lev[9]\t$lev[10]\t$lev[11]\t$lev[12]\t$lev[13]\t$lev[14]\t$lev[15]\t$lev[16]\t$lev[17]\t$lev[18]\t$lev[19]\t\n");
} else {
push(@out,$i);
}
}
if(!open(OUT,">$datafile")){&header; &error_message('datafile error2329','data file access failed.');}
print OUT @out;
close OUT;
#RSS用履歴ファイル作成
$historybase="DWRITE\t$name\t$title\t$rsstime\t$maxno\t$body\t$rh\t$addr\t\n";
&add_history;
print "日記を書き込みました。 ";
print " ListTop";
} else {
print "新規日記 ";
print "";
}
}
sub send_message_i{
if(!open(IN,"$datafile")){&error_message('datafile error/system','data file access failed.');}
@all=;
close IN;
$match="";
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name && $pass eq $r_pass){
$match=$i;
}
}
if($match eq ""){&header; &error_message('id/pass error','access failed.');}
if($mode eq "submit"){
if($language ne "English"){
if($body eq ""){&error_message('本文がありません','');}
if($name eq ""){&error_message('名前がありません','');}
} else {
if($body eq ""){&error_message('no text','');}
if($name eq ""){&error_message('no name','');}
}
#未読flag sender title body time
$message="1\t$name\t$title\t$body\t$timenow\t\n";
if(!open(IN,"$datafile")){&error_message('datafile error/system','data file access failed.');}
@all=;
close IN;
$match="";
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name2){
$match=$i;
}
}
if($match eq ""){&error_message('送信先が存在しません。','access failed.');}
if(!open(OUT,">>$mesdir$name2.cgi")){&error_message('datafile error1872','data file access failed.');}
print OUT $message;
close OUT;
print <<"EOM";
メッセージを送信しました。
MemberList Top
EOM
} else {
print "$name message send";
print "MemberList Top ";
#mode eq replyの場合は
if($mode eq "reply"){
$title="Re: $title";
$body="> $body";
$body=~ s/ /\n> /g;
}
print <<"EOM";
send message from '$name' to '$name2'
EOM
}
}
sub check_message_i{
if(!open(IN,"$datafile")){&error_message('datafile error/system','data file access failed.');}
@all=;
close IN;
$match="";
foreach $i(@all){
($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i);
if($r_name eq $name && $pass eq $r_pass){
$match=$i;
}
}
if($match eq ""){&error_message('id/pass error','access failed.');}
if(!open(IN,"$mesdir$name.cgi")){&error_message('メッセージはありません。','');}
@mes=;
close IN;
if($mode eq "read"){
print "$name check message:";
print "MemberList Top ";
$count=0;
@outmes=();
foreach $i(@mes){
print "
EOM
if($read ==1){
$message="0\t$name(open)\t開封確認メッセージ\tこのメッセージは$timenowに開封されました。 Title:$title Message: $body\t$timenow\t\n";
if(!open(OUT,">>$mesdir$from.cgi")){&error_message('datafile error3354','data file access failed.');}
print OUT $message;
close OUT;
$read=0;
}
}
push(@outmes,"$read\t$from\t$title\t$body\t$time\t\n");
$count++;
}
if(!open(OUT,">$mesdir$name.cgi")){&error_message('datafile error3316','data file access failed.');}
print OUT @outmes;
close OUT;
} elsif($mode eq "reply"){
&send_message_i;
} else {
print "$name message check: ";
print "MemberList Top ";
#新規メッセージチェック
print " ";
if (-e "$mesdir$name.cgi") {
if(!open(IN,"$mesdir$name.cgi")){&error_message('datafile error490','data file access failed.');}
@mes=;
close IN;
$k=0;
for $i(@mes){
($j,$dummy)=split(/\t/,$i);
$k=$k+$j;
}
if($k>0){print "$k 件の新しいメッセージがあります。";}
}
if($mode eq "delete"){
$count=0;
@outmes=();
foreach $i(@mes){
print "
EOM
$count--;
}
}
}
sub list_mpoint_i{
#カテゴリリスト
@m_categoryname=('HP/MP','ステータス','戦闘スキル','魔法スキル','その他の能力','戦士1','モンク1','白魔道士1','黒魔道士1','赤魔道士1','シーフ1','ナイト1','暗黒騎士1','獣使い1','吟遊詩人1','狩人1','侍1','忍者1','竜騎士1','召喚士1','青魔道士1','コルセア1','からくり士1','戦士2','モンク2','白魔道士2','黒魔道士2','赤魔道士2','シーフ2','ナイト2','暗黒騎士2','獣使い2','吟遊詩人2','狩人2','侍2','忍者2','竜騎士2','召喚士2',);
#各カテゴリのmax
@m_categorymax=(
'8','5','12','8','8','10','10','10','10','10','10','10','10','10','10','10','10','10','10','10','10','10','10','6','6','6','6','6','6','6','6','6','6','6','6','6','6','6',);
#各項目名称
@m_name=(
'HP','MP','STR','DEX','VIT','AGI','INT','MND','CHR','格闘','短剣','片手剣','両手剣','片手斧','両手斧','両手鎌','両手槍','片手刀','両手刀','片手棍','両手棍','弓術','射撃','投てき','ガード','回避','盾','受け流し','神聖魔法','回復魔法','強化魔法','弱体魔法','精霊魔法','暗黒魔法','歌唱','弦楽器','管楽器','忍術','召喚魔法','青魔法','敵対心+','敵対心−','クリティカルヒット率','被クリティカルヒット率','詠唱中断率','バーサク使用間隔','ディフェンダー使用間隔','ウォークライ使用間隔','アグレッサー使用間隔','ダブルアタック確率','集中使用間隔','回避使用間隔','チャクラ使用間隔','カウンター確率','蹴撃確率','女神の印使用間隔','ケアル詠唱時間','属性耐性魔法効果','バニシュ効果','リジェネ効果','精霊の印使用間隔','火属性魔法攻撃力','氷属性魔法攻撃力','風属性魔法攻撃力','土属性魔法攻撃力','雷属性魔法攻撃力','水属性魔法攻撃力','コンバート使用間隔','火属性魔法命中率','氷属性魔法命中率','風属性魔法命中率','土属性魔法命中率','雷属性魔法命中率','水属性魔法命中率','とんずら使用間隔','かくれる使用間隔','不意打ち使用間隔','だまし討ち使用間隔','トリプルアタック確率','シールドバッシュ使用間隔','ホーリーサークル使用間隔','センチネル使用間隔','かばう効果時間','ランパート使用間隔','暗黒使用間隔','アルケインサークル使用間隔','ラストリゾート使用間隔','ラストリゾート効果','ウェポンバッシュ使用間隔','キラー確率','いたわる使用間隔','よびだす使用間隔','ほんきだせ使用間隔','なだめる使用間隔','ララバイ使用間隔','フィナーレ使用間隔','ミンネ効果','メヌエット効果','マドリガル効果','スカベンジ使用間隔','カモフラージュ使用間隔','狙い撃ち使用間隔','エンドレスショット使用間隔','ラピッドショット確率','心眼使用間隔','護摩の守護円使用間隔','ストアTP効果','黙想使用間隔','残心確率','モクシャ効果','火遁の術効果','氷遁の術効果','風遁の術効果','土遁の術効果','雷遁の術効果','水遁の術効果','エンシェントサークル使用間隔','ジャンプ使用間隔','ハイジャンプ使用間隔','スーパージャンプ使用間隔','スピリットリンク使用間隔','召喚獣物理命中率','召喚獣物理攻撃力','召喚獣魔法命中率','召喚獣魔法攻撃力','精霊維持費−','ブルーチェーン使用間隔','ブルーバースト使用間隔','モンスター相関関係効果','物理系青魔法攻撃力','魔法系青魔法命中率','ファントムロール使用間隔','クイックドロー使用間隔','クイックドロー命中率','ランダムディール使用間隔','Bust時間短縮','オートマトン白兵戦スキル','オートマトン射撃戦スキル','オートマトン魔法戦スキル','アクティベート使用間隔','リペアー使用間隔','ウォリアーチャージ','トマホーク','サベッジリ','アグレシブエイム','マントラ','無想無念','錬気','発剄','マーター','デヴォーション','プロテアV','シェルラV','フレアII','フリーズII','トルネドII','クエイクII','バーストII','フラッドII','ディアIII','スロウII','パライズII','ファランクスII','バイオIII','ブラインII','アサシンチャージ','フェイント','オーラスティール','アンブッシュ','フィールティー','シバルリー','アイアンウィル','ガーディアン','ダークシール','ディアボリクアイ','ミューテッドソウル','デスペレートブロー','フェラルハウル','K.インスティンクト','ビーストアフニティ','ビーストヒーラー','ナイチンゲール','トルバドゥール','魔物のシルベント','冒険者のダージュ','ステルスショット','フラッシーショット','スナップショット','リサイクル','士気高揚','峰打ち','意気衝天','正正堂堂','散華','忍具の知識','火遁の術:参','氷遁の術:参','風遁の術:参','土遁の術:参','雷遁の術:参','水遁の術:参','ディープブリージング','アンゴン','エンパシー','ストレイフ','メテオストライク','ヘヴンリーストライク','ウィンドブレード','ジオクラッシュ','サンダーストーム','グランドフォール',);
#各項目のカテゴリコード
@m_categorycode=(
'0','0','1','1','1','1','1','1','1','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','3','3','3','3','3','3','3','3','3','3','3','3','4','4','4','4','4','5','5','5','5','5','6','6','6','6','6','7','7','7','7','7','8','8','8','8','8','8','8','9','9','9','9','9','9','9','10','10','10','10','10','11','11','11','11','11','12','12','12','12','12','13','13','13','13','13','14','14','14','14','14','15','15','15','15','15','16','16','16','16','16','17','17','17','17','17','17','17','18','18','18','18','18','19','19','19','19','19','20','20','20','20','20','21','21','21','21','21','22','22','22','22','22','23','23','23','23','24','24','24','24','25','25','25','25','26','26','26','26','26','26','27','27','27','27','27','27','28','28','28','28','29','29','29','29','30','30','30','30','31','31','31','31','32','32','32','32','33','33','33','33','34','34','34','34','35','35','35','35','35','35','35','35','36','36','36','36','37','37','37','37','37','37',);
#各項目のMAX値
@m_max=(
'8','8','5','5','5','5','5','5','5','8','8','8','8','8','8','8','8','8','8','8','8','8','8','8','4','4','4','4','8','8','8','8','8','8','8','8','8','8','8','8','4','4','4','4','4','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','5','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3',);
#各カテゴリの必要ポイント
@m_needpoint=(
'12345555','12345555','36999','36999','36999','36999','36999','36999','36999','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','1233','1233','1233','1233','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','12333333','1234','1234','1234','1234','1234','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','12345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345','345');
#表示制限ジョブコード
@m_jobcode=(
'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1','1','1','1','1','2','2','2','2','2','3','3','3','3','3','3','3','4','4','4','4','4','4','4','5','5','5','5','5','6','6','6','6','6','7','7','7','7','7','10','10','10','10','10','9','9','9','9','9','8','8','8','8','8','14','14','14','14','14','13','13','13','13','13','13','13','11','11','11','11','11','12','12','12','12','12','15','15','15','15','15','16','16','16','16','16','17','17','17','17','17','0','0','0','0','1','1','1','1','2','2','2','2','3','3','3','3','3','3','4','4','4','4','4','4','5','5','5','5','6','6','6','6','7','7','7','7','10','10','10','10','9','9','9','9','8','8','8','8','14','14','14','14','13','13','13','13','13','13','13','13','11','11','11','11','12','12','12','12','12','12',);
}
1;
|