# GMR for Keitai sub routine # ver 0.65alpha(07/06/07) sub header_i{ print "Content-type: text/html\n\n"; print "$topic\n"; } sub footer_i{ print "
$version"; } sub list_i{ &get_cookie; if(!open(IN,"$datafile")){&error_message('datafile error','data file access failed.');} @all=; close IN; $sort=16; $mode=r; &sort_table; print "[]
"; $count=0; $pagenow=1; foreach $i (@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/,$i); $count++; if($count==15){$count=0;$pagenow++;} if($pagenow==$page){ $date=substr($time,0,8); $diary=""; $diaryfile="$diarydir$name.$diaryletter"; if(-e "$diaryfile"){ if((-M $diaryfile)<1){ $diary.="UP!"; } print "$date:$name"; print " $diary
"; } else{ print "$date:$name
"; } } } print "[Top]"; $pastpage=$page-1; if($pastpage<1){ print "[--]"; } else { print "[]"; } $page++; print "[]"; print "[]"; print <<"EOM";
<メンバーメニュー>
Name
Pass
EOM #if($mes_avail){ #print ""; #} print "

新規登録
"; if($reg_mode==0){print "";} print ""; print "
"; print "最近の更新20件\n"; } sub prof_i{ &get_cookie; print "Profile: $name
"; 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); if($mode eq "detail"){ #detail @skill = split(/,/,$etc[2]); print "[Skill]
\n"; print "メリットポイント状況
\n"; $prod[12] =~ s/<\/TD>]+>/
/g; $prod[12] =~ s/]+>//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]); $assault[0]=hex($assault[0]); 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 "ナイズル島開通:"; if($mission[17]==0){print "$maru[0]";} else {print "$maru[1]";} print "
"; 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[31]:$maru[$assault[31]]
"; print"$aslist[32]:$maru[$assault[32]]
"; print"$aslist[41]:$maru[$assault[41]]
"; print"$aslist[46]:$maru[$assault[46]]
"; print"$aslist[51]:$maru[$assault[51]]
"; 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[33]:$maru[$assault[33]]
"; print"$aslist[34]:$maru[$assault[34]]
"; print"$aslist[42]:$maru[$assault[42]]
"; print"$aslist[47]:$maru[$assault[47]]
"; print"$aslist[52]:$maru[$assault[52]]
"; 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[35]:$maru[$assault[35]]
"; print"$aslist[36]:$maru[$assault[36]]
"; print"$aslist[43]:$maru[$assault[43]]
"; print"$aslist[48]:$maru[$assault[48]]
"; print"$aslist[53]:$maru[$assault[53]]
"; 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[37]:$maru[$assault[37]]
"; print"$aslist[38]:$maru[$assault[38]]
"; print"$aslist[44]:$maru[$assault[44]]
"; print"$aslist[49]:$maru[$assault[49]]
"; print"$aslist[54]:$maru[$assault[54]]
"; 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]]
"; print"$aslist[39]:$maru[$assault[39]]
"; print"$aslist[40]:$maru[$assault[40]]
"; print"$aslist[45]:$maru[$assault[45]]
"; print"$aslist[50]:$maru[$assault[50]]
"; print"$aslist[55]:$maru[$assault[55]]
"; if($mission[17]>0){ print "ナイズル島到達度:$nzlist[$mission[17]]
"; } } 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さんへメッセージ送信
name pass
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 "
$name さんの日記はありません。
"; } 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); #RSS用履歴ファイル作成 $historybase="RESDIA\t$name $name2\t$timenow\t$rsstime\t$no\t$body\t$rh\t$addr\t\n"; &add_history; 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); } $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"; 必要事項を入力してください。
name
pass
anon mode
EOM print "Race
"; print "Realm
"; print "FaceType"; print "Main
"; print "Sup
"; for($i=0;$i<$job_max;$i++){ print "$joblist[$i]
"; } for($i=0;$i<$prod_max;$i++){ print "$prodlist[$i]
"; } print "point
"; print "rank
"; print "comment
"; print "profile 公開
"; print "ハンドル
"; print "POL内ハンドル
"; print "e-mail
"; print "url
"; $comment2 =~ s/
/\r/g; print "prof comment
"; print "
"; } 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]); $assault[0]=hex($assault[0]); #################共通フォーム print "
"; print "No. $no : '$name' 修正
"; ####################ジョブ・合成スキル if($all eq "m_level"){ print ""; print "Main Job
"; print "Support Job
"; for($i=0;$i<$job_max;$i++){ print "$joblist[$i]
\n"; } for($i=0;$i<$prod_max;$i++){ print "$prodlist[$i]\n"; print "
\n"; } } ######################プロフィール if($all eq "m_prof"){ print ""; if($class_edit){ print "class
"; } else { print "
"; } print "anon mode(レベル表\示を隠します)
"; print "Race
"; print "Realm
"; print "FaceType"; print "個人ポイント(リージョン情報参照)
"; print "ミッションランク
"; print "comment(リストに表\示されます)
"; print "
"; print "profile&日記公開スイッチ(on:公開)
"; print "ハンドル
"; print "POL内ハンドル
"; print "e-mail
"; print "homepage url
"; print ""; #プロフ画像 $comment2 =~ s/
/\r/g; print "プロフィール用コメント
"; } ######################武器魔法スキル if($all eq "m_skill"){ print ""; @skill = split(/,/,$etc[2]); if ($skill_visible) { for($i=0;$i<$#skilllist+1;$i++){ print "$skilllist[$i]
"; } } else { print "skill function is not available.
"; } } #######################カスタムフィールド if($all eq "custom"){ print ""; @custom=split(/,/,$prod[11]); for ($i=1;$i<$#custom_field+1;$i++){ if($custom_pulldown[$i]==0){ if($custom_control[$i] eq "0"){ print "$custom_field[$i]
"; } else { print ""; } } else { if($custom_control[$i] eq "0"){ print "$custom_field[$i]
"; } else { print ""; } } } } ######################メリポ1 0-27 if($all eq "mpoint1"){ &list_mpoint_i; print ""; for($i=0;$i<28;$i++){ print "$m_name[$i]($m_categoryname[$m_categorycode[$i]])"; print "
"; } } ######################メリポ2 28-44 if($all eq "mpoint2"){ &list_mpoint_i; print ""; for($i=28;$i<45;$i++){ print "$m_name[$i]($m_categoryname[$m_categorycode[$i]])"; print "
"; } } ######################メリポ3 45-140 if($all eq "mpoint3"){ &list_mpoint_i; print ""; for($i=45;$i<141;$i++){ if($lev[$m_jobcode[$i]] == 75){ print "$m_name[$i]($m_categoryname[$m_categorycode[$i]])"; print "
"; } } } ######################メリポ4 141-223 if($all eq "mpoint4"){ &list_mpoint_i; print ""; for($i=141;$i<223;$i++){ if($lev[$m_jobcode[$i]] == 75){ print "$m_name[$i]($m_categoryname[$m_categorycode[$i]])"; print "
"; } } } ######################ミッション1 三国 if($all eq "mission1"){ print ""; print "$mlist[2]"; print "
\n"; print "$mlist[3]"; print "
\n"; print "$mlist[4]"; print "\n"; } ######################ミッション2 デュナミス if($all eq "mission2"){ print ""; for($k=5;$k<15;$k++){ print "$mlist[$k]
"; } } ######################ミッション3 ジラート if($all eq "mission3"){ print ""; print "$mlist[1]"; print "
\n"; } ######################ミッション4 プロマシア if($all eq "mission4"){ print ""; print "$mlist[0]"; print "
\n"; } ######################ミッション5 アトルガン if($all eq "mission5"){ print ""; print "$mlist[15]"; print "
\n"; } ######################ミッション6 アサルト if($all eq "mission6"){ print ""; print "$aslist[0]"; print "
\n"; for($j=1;$j<$#aslist+1;$j++){ print "$aslist[$j]
\n"; } print "ナイズル島進行度(開通)"; print "
\n"; } ####################共通部フッタ print "
"; } 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"){ $FORM{"assault0"}=sprintf("%x",$FORM{"assault0"}); $mission[16]=$FORM{"assault0"}; for($j=1;$j<$#aslist+1;$j++){ $mission[16]=$mission[16].$FORM{"assault$j"}; } $mission[17]=$FORM{"mission17"}; } $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<223;$i++){ $mp[$i]=$FORM{"mp$i"} } } $prod[13]=""; $mptotal=0; for($i=0;$i<223;$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<223;$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 "
\ntitle

body

"; 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'
title :

message
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 "
"; ($read,$from,$title,$body,$time)=split(/\t/,$i); if($count == $no){ print "Title:$title
"; print "From:$from
"; print "Time:$time
"; print "Message:
$body
"; $body2=$body; $body2=~ s/
/\n/g; $body2=~ s/"/"/g; print <<"EOM";
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 "
"; ($read,$from,$title,$body,$time)=split(/\t/,$i); if($count != $no){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; @mes=@outmes; print "メッセージを1件削除しました。
"; } @mes=reverse(@mes); $count=$#mes; foreach $i(@mes){ print ""; ($read,$from,$title,$body,$time)=split(/\t/,$i); if($read){ print "未読:$title from $from on $time"; } else {print "既読:$title from $from on $time";} print <<"EOM";

EOM $count--; } } } sub history_i{ #履歴表示 if(!open(IN,"$historyfile")){&header; &error_message('datafile error2449','data file access failed.');} @list=; close IN; @list=reverse(@list); $items=""; $item=""; $count=0; print "最近の更新20件

\n"; foreach $i(@list){ ($dummy,$rname,$rtitle,$rtime,$rmaxno,$rbody)=split(/\t/,$i); $rbody =~ s/&/&/g; $rbody =~ s/"/"/g; $rbody =~ s/'/'/g; $rbody =~ s/&sbquo;/‚/g; $rbody =~ s/&lt;/</g; $rbody =~ s/&gt;/>/g; $rtime =~ s/T/ /g; $rtime =~ s/\+09:00//g; if($dummy eq "DWRITE"){ $rstitle="$rtitle : $rname さんの日記[$rmaxno]更新"; $rsource="$rname/diary/$rmaxno"; $link="$script?function=diary&name=$rname&mode=$rmaxno"; } if($dummy eq "NEWREG"){ $rstitle="$rtitle : $rname さん[$rmaxno]新規登録"; $rsource="$rname/newreg/$rmaxno"; $link="$script?function=prof&name=$rname"; $rbody="新規登録"; } if($dummy eq "DMODIF"){ $rstitle="$rtitle : $rname さんの日記[$rmaxno]修正"; $rsource="$rname/dmodif/$rmaxno"; $link="$script?function=diary&name=$rname&mode=$rmaxno&mod"; $rbody="日記修正"; } if($dummy eq "PROFED"){ $rstitle="$rname さんプロフィール変更"; $rsource="$rname/profed/$rmaxno"; $link="$script?function=prof&name=$rname"; $rbody =~ s/\//
\n/g; } if($dummy eq "MERIED"){ $rstitle="$rname さんメリットポイント 変更"; $rsource="$rname/profed/$rmaxno"; $link="$script?function=prof&name=$rname"; $rbody =~ s/\//
\n/g; # $rbody = "メリットポイントに変更がありました。"; } if($dummy eq "CUSTED"){ $rstitle="$rname さん$custom_field[0] 変更"; $rsource="$rname/profed/$rmaxno"; $link="$script?function=prof&name=$rname"; $rbody =~ s/\//
\n/g; # $rbody = "$custom_field[0]変更"; } if($dummy eq "DERASE"){ $rstitle="$rname さんの日記[$rmaxno]が削除"; $rsource="$rname/derase/$rmaxno"; $link="$script?function=prof&name=$rname&del"; $rbody="deleted"; } if($dummy eq "RESDIA"){ ($n1,$n2)=split(/ /,$rname); $rstitle="$n2 さんの日記[$rmaxno]に$n1さんがレス"; $rsource="$n1$n2$rtitle/resdia/$rmaxno"; $link="$script?function=diary&name=$n2&mode=$rmaxno&$rtitle"; } @rbodylines = split(/
/,$rbody); if ($#rbodylines > 8) { $rbody = join("
", @rbodylines[0..5])."(and more)"; } if($count<20){ print "$rstitle($rtime)
\n"; } $count++; } print "
List Top\n"; } sub list_mpoint_i{ #各カテゴリのmax @m_categorymax=( '8','5','20','16','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','6','6','6',); if($language ne "English"){ #カテゴリリスト @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','青魔道士2','コルセア2','からくり士2',); #各項目名称 @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.インスティンクト','ビーストアフニティ','ビーストヒーラー','ナイチンゲール','トルバドゥール','魔物のシルベント','冒険者のダージュ','ステルスショット','フラッシーショット','スナップショット','リサイクル','士気高揚','峰打ち','意気衝天','正正堂堂','散華','忍具の知識','火遁の術:参','氷遁の術:参','風遁の術:参','土遁の術:参','雷遁の術:参','水遁の術:参','ディープブリージング','アンゴン','エンパシー','ストレイフ','メテオストライク','ヘヴンリーストライク','ウィンドブレード','ジオクラッシュ','サンダーストーム','グランドフォール','コンバージェンス','ディフュージョン','エンチェーンメント','アシミレーション','スネークアイ','フォールド','ウィニングストリーク','ローデッドデッキ','黒衣チェンジ','腹話術','微調整','最適化'); } else { @m_categoryname=('HP/MP','Attributes','CombatSkills','MagicSkills','OtherSkills','Warrior1','Monk1','WhiteMage1','BlackMage1','RedMage1','Thief1','Paladin1','DarkKnight1','Beastmaster1','Bard1','Ranger1','Samurai1','Ninja1','Dragoon1','Summoner1','BlueMage1','Corsair1','Puppetmaster1','Warrior2','Monk2','WhiteMage2','BlackMage2','RedMage2','Thief2','Paladin2','DarkKnight2','BeastMaster2','Bard2','Ranger2','Samurai2','Ninja2','Dragoon2','Summoner2','BlueMage2','Corsair2','Puppetmaster2',); @m_name=('HP','MP','STR','DEX','VIT','AGI','INT','MND','CHR','Hand-to-Hand','Dagger','Sword','GreatSword','Axe','GreatAxe','Scythe','Polearm','Katana','GreatKatana','Club','Staff','Archery','Marksmanship','Throwing','Guarding','Evasion','Shield','Parrying','DivineMagic','HealingMagic','EnhancingMagic','EnfeeblingMagic','ElementalMagic','DarkMagic','Singing','StringInstrument','WindInstrument','Ninjutsu','Summoning','BlueMagic','EnmityIncrease','EnmitiyDecrease','CriticalHitRate','EnemyCriticalHitRate','SpellInterruptionRate','Berserk Recast','Defender Recast','Warcry Recast','Aggressor Recast','Double Attack Rate','Focus Recast','Dodge Recast','Chakra Recast','Counter Rate','Kick Attack Rate ','Divine Seal Recast','Cure Cast Time','Bar Spell Effect','Banish Effect','Regen Effect','Elemental Seal Recast','Fire Magic Potency','Ice Magic Potency','Wind Magic Potency','Earth Magic Potency','Lightning Magic Potency','Water Magic Potency ','Convert Recast','Fire Magic Accuracy','Ice Magic Accuracy','Wind Magic Accuracy','Earth Magic Accuracy','Lightning Magic Accuracy','Water Magic Accuracy','Flee Recast','Hide Recast','Sneak Attack Recast','Trick Attack Recast','Triple Attack Rate ','Shield Bash Recast','Holy Circle Recast','Sentinel Recast','Cover Effect Length','Rampart Recast','Souleater Recast','Arcane Circle Recast','Last Resort Recast','Last Resort Effect','Weapon Bash Recast ','Killer Effects','Reward Recast','Call Beast Recast','Sic Recast','Tame Recast','Lullaby Recast','Finale Recast','Minne Effect','Minuet Effect','Madrigal Effect ','Scavenge Recast','Camouflage Recast','Sharpshot Recast','Unlimited Shot Recast','Rapid Shot Rate','Third Eye Recast','Warding Circle Recast','Store TP Effect','Meditate Recast','Zanshin Attack Rate ','Subtle Blow Effect','Katon Effect','Hyoton Effect','Huton Effect','Doton Effect','Raiton Effect','Suiton Effect','Ancient Circle Recast','Jump Recast','High Jump Recast','Super Jump Recast','Spirit Link Recast ','Avatar Physical Accuracy','Avatar Physical Attack','Avatar Magical Accuracy','Avatar Magical Attack','Elemental MP Cost ','Chain Affinity Recast','Burst Affinity Recast','Monster Correlation','Physical Potency','Magical Accuracy','Phantom Roll Recast','Quick Draw Recast','Quick Draw Accuracy','Random Deal Recast','Bust Duration','Automaton Melee Skill','Automaton Ranged Skill','Automaton Magic Skill','Activate Recast','Repair Recast',"Warriors Charge",'Tomahawk','Savagery','Aggressive Aim','Mantra','Formless Strikes','Invigorate','Penance ','Martyr','Devotion','Protectra V','Shellra V','Flare II','Freeze II','Tornado II','Quake II','Burst II ','Flood II ','Dia III','Slow II','Paralyze II','Phalanx II','Bio III','Blind II',"Assassins Charge",'Feint','Aura Steal','Ambush','Fealty','Chivalry','Iron Will','Guardian','Dark Seal','Diabolic Eye','Muted Soul','Desperate Blows','Feral Howl','Killer Instinct','Beast Affinity ','Beast Healer','Nightingale','Troubadour','Foe Sirvente',"Adventurers Dirge",'Stealth Shot','Flashy Shot','Snapshot','Recycle','Shikikoyo','Blade Bash','Ikishoten','Overwhelm','Katon: San','Hyoton: San','Huton: San','Doton: San','Raiton: San','Suiton: San','Sange','Ninja Tool Expertise','Deep Breathing','Angon','Empathy','Strafe','Meteor Strike','Heavenly Strike','Wind Blade','Geocrush','Thunderstorm','Grand Fall','BLU1','BLU2','BLU3','BLU4','COR1','COR2','COR3','COR4','PUP1','PUP2','PUP3','PUP4'); } #各項目のカテゴリコード @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','38','38','38','38','39','39','39','39','40','40','40','40',); #各項目の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','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','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','15','15','15','15','16','16','16','16','17','17','17','17'); } 1;