www.pudn.com > sangoku_26_zh_tw.rar > new_chara.cgi


#_/_/_/_/_/_/_/_/_/_/_/_/# 
#        NEW_CHARA       # 
#_/_/_/_/_/_/_/_/_/_/_/_/# 
 
sub NEW_CHARA { 
 
	&CHEACKER; 
	if ($CHARA_STOP) { &ERR2("現在沒有接受新規章註冊"); } 
	if ($in{'id'} =~ m/[^0-9a-zA-Z]/) { &E_ERR("帳號中包含著半角英數字以外的文字。"); } 
	if ($in{'pass'} =~ m/[^0-9a-zA-Z]/) { &E_ERR("密碼中包含著半角英數字以外的文字。"); } 
	if ($in{'mail'} =~ /yahoo/ || $in{'mail'} =~ /hotmail/ || $in{'mail'} =~ /pchome/) { &E_ERR("那個郵件地址不能使用。"); } 
	if ($in{'mail'} eq "" || $in{'mail'} !~ /(.*)\@(.*)\.(.*)/){ &E_ERR("郵件地址的輸入不正確。");} 
	if ($in{'id'} eq "" or length($in{'id'}) < 4 or length($in{'id'}) > 8) { &E_ERR("帳號-請輸入4~8個半行之間文字。"); } 
	elsif($in{'pass'} eq "" || length($in{'pass'}) < 4 || length($in{'pass'}) > 8) { &E_ERR("密碼-請輸入4~8個半行之間文字。"); } 
	elsif($in{'con'} eq "") { &E_ERR("初期位置尚未選擇。"); } 
	elsif($in{'mail'} eq "\@" || $in{'mail'} eq "") { &E_ERR("郵件地址的輸入不正確"); } 
	elsif($in{'pass'} eq "" || length($in{'pass'}) < 4 || length($in{'pass'}) > 16) { &E_ERR("角色人物密碼尚未輸入。"); } 
	elsif($in{'chara_name'} eq "" || length($in{'chara_name'}) < 4 || length($in{'chara_name'}) > 12) { &E_ERR("登場人物的名字數值尚未輸入。"); } 
	elsif($in{'id'} eq $in{'pass'}) { &E_ERR("帳號和密碼相同,不能註冊"); } 
	if ($in{'str'} =~ m/[^0-9]/) { &E_ERR("力量中包含著數字以外的文字。"); } 
	if ($in{'str'} eq "" || $in{'str'} < 5 || $in{'str'} > 100) { &E_ERR("力量數值尚未輸入。");} 
	if ($in{'int'} =~ m/[^0-9]/) { &E_ERR("智力中包含著數字以外的文字。"); } 
	if ($in{'int'} eq "" || $in{'int'} < 5 || $in{'int'} > 100) { &E_ERR("智力數值尚未輸入。");} 
	if ($in{'tou'} =~ m/[^0-9]/) { &E_ERR("統率力中包含著數字以外的文字。"); } 
	if ($in{'chara'} =~ m/[^0-9]/) { &E_ERR("不正確。"); } 
	if($in{'tou'} eq "" || $in{'tou'} < 5 || $in{'tou'} > 100) { &E_ERR("統率力數值尚未輸入。");} 
 
	$max = $in{'str'} + $in{'int'} + $in{'tou'}; 
	if($max ne "150"){ 
		&E_ERR("能力總計需要150點,你尚未全部輸入。(目前總計:$max點)"); 
	} 
 
	open(IN,"$TOWN_LIST") or &E_ERR("打不開指定文件。"); 
	@TOWN_DATA = ; 
	close(IN); 
 
	open(IN,"$COUNTRY_LIST") or &E_ERR('沒開起文件。err no :country'); 
	@COU_DATA = ; 
	close(IN); 
 
	open(IN,"$COUNTRY_NO_LIST") or &E_ERR('沒開啟文件。err no :country no'); 
	@COU_NO_DATA = ; 
	close(IN); 
 
	$zc=0;$m_hit=0; 
	($z2name,$z2con)=split(/<>/,$TOWN_DATA[$in{'con'}]); 
	if($z2con eq ""){ 
		if($in{'ele'} eq ""){ 
			&E_ERR("請選擇君主國家顏色。"); 
		}elsif($in{'cou_name'} eq "" || length($in{'cou_name'}) < 2 || length($in{'cou_name'}) > 16) { 
			&E_ERR("國家的名稱尚未輸入。"); 
		} 
		$m_hit = 1; 
		$cou_name = $in{'cou_name'}; 
		$new_cou_no = @COU_NO_DATA + 1; 
		$hit = 1; 
	}else{ 
		foreach(@COU_DATA){ 
			($xcid,$xname,$xele,$xmark,$xking,$xmes,$xsub,$xpri)=split(/<>/); 
			if($xcid eq $z2con){ 
				$cou_name = $xname; 
				$kcon = $xcid; 
				$hit = 1; 
			} 
		} 
	} 
 
	if(!$hit){ 
		&E_ERR("那個國家不存在。"); 
	} 
 
	&SET_COOKIE; 
	&HOST_NAME; 
 
	$date = time(); 
	$pos = 2; 
	open(IN,"./charalog/main/$in{'id'}.cgi"); 
	@NEWCHARA = ; 
	close(IN); 
 
	$dir="./charalog/main"; 
	opendir(dirlist,"$dir"); 
	while($file = readdir(dirlist)){ 
		if($file =~ /\.cgi/i){ 
			if(!open(page,"$dir/$file")){ 
				&E_ERR("文件開啟錯誤!"); 
			} 
			@page = ; 
			close(page); 
			push(@REGIST_VI,"@page
"); } } closedir(dirlist); $hit=0;@new_chara=(); ($rkid,$rkpass,$rkname,$rkchara,$rkstr,$rkint,$rklea,$rkcha,$rksol,$rkgat,$rkcon,$rkgold,$rkrice,$rkcex,$rkclass,$rkarm,$rkbook,$rkbank,$rksub1,$rksub2,$rkpos,$rkmes,$rkhost,$rkdate,$rkmail,$rkos) = split(/<>/,$NEWCHARA[0]); if($rkid eq "$in{'id'}") {&E_ERR("那個帳號已經註冊過了,請另選帳號註冊。");} if($REFREE){ if($ENV{'HTTP_REFERER'} ne "$SANGOKU_URL/$FILE_ENTRY" && $ENV{'HTTP_REFERER'} ne "$SANGOKU_URL/$FILE_TOP" && $ENV{'HTTP_REFERER'} ne "$SANGOKU_URL/"){ &E_ERR("ERR No.001
那個角色人物不能創造。
請對管理者詢問。
P1:$ROSER_URL/$FILE_ENTRY
P2$ENV{'HTTP_REFERER'}"); } } foreach(@REGIST_VI){ ($rkid,$rkpass,$rkname,$rkchara,$rkstr,$rkint,$rklea,$rkcha,$rksol,$rkgat,$rkcon,$rkgold,$rkrice,$rkcex,$rkclass,$rkarm,$rkbook,$rkbank,$rksub1,$rksub2,$rkpos,$rkmes,$rkhost,$rkdate,$rkmail,$rkos) = split(/<>/); if($ACCESS){ if($host eq $rkhost ){ &E_ERR("關於另一角色名稱已有相同名稱註冊。或相同已經有IP註冊。"); } } if($rkname eq "$in{'chara_name'}"){ &E_ERR("那個名字已經被註冊。請使用不同的名字註冊。"); } if($rkmail eq "$in{'mail'}"){ &E_ERR("那個郵件地址已經被註冊。"); } if($kcon eq $rkcon){ $con_num++; } } if($xmark < $BATTLE_STOP && $con_num >= $CON_ENTRY_MAX){ &E_ERR("那個國家已經超過相對人數不能入國。"); } if($m_hit){ $kcon = $new_cou_no; $month_read = "$LOG_DIR/date_count.cgi"; open(IN,"$month_read") or &E_ERR('沒開啟文件。'); @MONTH_DATA = ; close(IN); ($myear,$mmonth,$mtime) = split(/<>/,$MONTH_DATA[0]); $old_date = sprintf("%02d\年%02d\月", $F_YEAR+$myear, $mmonth); push(@COU_DATA,"$new_cou_no<>$in{'cou_name'}<>$in{'ele'}<>1<>$in{'id'}<><>$in{'chara_name'}<>1<>\n"); open(OUT,">$COUNTRY_LIST") or &E_ERR('COUNTRY 不能寫上數據。'); print OUT @COU_DATA; close(OUT); push(@COU_NO_DATA,"$new_cou_no<>$in{'cou_name'}<>$in{'ele'}<>1<>$in{'id'}<><><>1<>\n"); open(OUT,">$COUNTRY_NO_LIST") or &E_ERR('COUNTRY 不能寫上數據。'); print OUT @COU_NO_DATA; close(OUT); &TOWN_DATA_OPEN("$in{'con'}"); $zcon = $new_cou_no; &TOWN_DATA_INPUT; &MAP_LOG2("【建國】 \[$old_date\]新君主$in{'chara_name'}建國,國號 $cou_name國。"); &MAP_LOG("【建國】 新君主$in{'chara_name'}建國,國號 $cou_name國。"); }else{ &MAP_LOG("\[仕官\]新武將 $in{'chara_name'}$cou_name國仕官。"); } @NEW_COM=(); for($i=0;$i<$MAX_COM;$i++){ push(@NEW_COM,"<><><>$tt<><><>50<>\n"); } open(OUT,">./charalog/command/$in{'id'}.cgi"); print OUT @NEW_COM; close(OUT); if($ATTESTATION){ &mail_to; $os = 0; }else{ $os = 1; } $kcha = int(rand(101)); $ksol = 0; $kgat = 0; $kgold = 1000; $krice = 500; $kcex = 0; $kclass = 0; $karm = 0; $kbook = 0; $kbank = ""; $ksub1 = ""; $ksub2 = $DEL_TURN - 20; $kstr = $in{'str'}+0; $kint = $in{'int'}+0; $ktou = $in{'tou'}+0; unshift(@new_chara,"$in{'id'}<>$in{'pass'}<>$in{'chara_name'}<>$in{'chara'}<>$kstr<>$kint<>$ktou<>$kcha<>$ksol<>$kgat<>$kcon<>$kgold<>$krice<>$kcex<>$kclass<>$karm<>$kbook<>$kbank<>$ksub1<>$ksub2<>$in{'con'}<>$in{'mes'}<>$host<>$date<>$in{'mail'}<>$os<>\n"); open(OUT,">./charalog/main/$in{'id'}.cgi"); print OUT @new_chara; close(OUT); &DATA_SEND; exit; } #------------------# # фみю送信處理 # #------------------# sub mail_to { unless (-e $SENDMAIL) { &E_ERR("sendmail設定不正確"); } # фみю標題 $mail_sub = " 登錄完了通知"; &TIME_DATA; $a_pass = crypt("$in{'pass'}", $ATTESTATION_ID); # фみю本文 $mail_msg = <<"EOM"; $in{'chara_name'} 給 這次謝謝給、$GAME_TITLE 的登記。 登記內容因為是以下的大城市,請確認。 ■登錄日時:$daytime ■君主名稱:$host ■參加者名:$in{'chara_name'} ■電子郵件:$in{'mail'} ■帳 號:$in{'id'} ■密 碼:$in{'pass'} ■認 證 碼:$a_pass 登認證鑰匙?根據做的事對遊戲能參 加。 [認證鑰匙的設定] $SANGOKU_URL/entry.cgi?mode=ATTESTATI ON(※從這邊能登入。) 很好請仔細閱讀參加規章之後請開始遊戲。 同時,密碼,帳號等的再發行因為不做最後 一幕預先請保管。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ $GAME_TITLE管理員 Home: $HOME_URL EOM # JIS變換向編碼 #&jcode'convert(*mail_sub,'jis'); #&jcode'convert(*mail_msg,'jis'); # 復原評語內的另起一行和標記 $mail_msg =~ s/
/\n/ig; # 郵件處理 open(MAIL,"| $SENDMAIL -t") || &E_ERR("郵件發送失敗了"); print MAIL "To: $in{'mail'}\n"; print MAIL "Subject: $mail_sub\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "X-Mailer: $ver\n\n"; print MAIL "$mail_msg\n"; close(MAIL); } #_/_/_/_/_/_/_/_/# # ERROR PRINT # #_/_/_/_/_/_/_/_/# sub E_ERR { &HEADER; if (-e $lockfile) { unlink($lockfile); } print "

操 作 錯 誤~

\n"; print "

$_[0]\n"; print "

"; print "


\n\n"; exit; } #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/# #_/ 檢查參加登錄者上限 _/# #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/# sub CHEACKER { $dir="./charalog/main"; opendir(dirlist,"$dir"); while($file = readdir(dirlist)){ if($file =~ /\.cgi/i){ if(!open(page,"$dir/$file")){ &ERR2("文件開啟錯誤!"); } @page = ; close(page); push(@CL_DATA,"@page
"); } } closedir(dirlist); $num = @CL_DATA; if($ENTRY_MAX){ if($num > $ENTRY_MAX){ &ERR2("最大註冊數量\[$ENTRY_MAX\]。現在新規章不能註冊。"); } } } 1;