📄 suport.pl
字号:
#_/_/_/_/_/_/_/_/_/_/_/_/#
# CHARA MAIN OPEN #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub CHARA_MAIN_OPEN {
open(IN,"./charalog/main/$in{'id'}.cgi") or &ERR2('ID不正确!');
@CN_DATA = <IN>;
close(IN);
($kid,$kpass,$kname,$kchara,$kstr,$kint,$klea,$kcha,$ksol,$kgat,$kcon,$kgold,$krice,$kcex,$kclass,$karm,$kbook,$kbank,$ksub1,$ksub2,$kpos,$kmes,$khost,$kdate,$kmail,$kos) = split(/<>/,$CN_DATA[0]);
if($in{'id'} ne "$kid" or $in{'pass'} ne "$kpass"){&ERR2("ID不正确!");}
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# CHARA MAIN INPUT #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub CHARA_MAIN_INPUT {
@NEW_DATA=();
unshift(@NEW_DATA,"$kid<>$kpass<>$kname<>$kchara<>$kstr<>$kint<>$klea<>$kcha<>$ksol<>$kgat<>$kcon<>$kgold<>$krice<>$kcex<>$kclass<>$karm<>$kbook<>$kbank<>$ksub1<>$ksub2<>$kpos<>$kmes<>$khost<>$kdate<>$kmail<>$kos<>\n");
open(OUT,">./charalog/main/$kid\.cgi") or &ERR('MAIN 新登录。');
print OUT @NEW_DATA;
close(OUT);
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# ENEMY DATA ALL OPEN #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub ENEMY_OPEN {
open(IN,"./charalog/main/$in{'eid'}.cgi") or &ERR2('ID的密码不正确。');
@E_DATA = <IN>;
close(IN);
($eid,$epass,$ename,$echara,$estr,$eint,$elea,$echa,$esol,$egat,$econ,$egold,$erice,$ecex,$eclass,$earm,$ebook,$ebank,$esub1,$esub2,$epos,$emes,$ehost,$edate,$email,$eos) = split(/<>/,$E_DATA[0]);
if($in{'eid'} ne "$eid" ){&ERR2("ID的密码不正确。");}
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# ENEMY DATA ALL INPUT #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub ENEMY_INPUT {
@NEW_DATA=();
unshift(@NEW_DATA,"$eid<>$epass<>$ename<>$echara<>$estr<>$eint<>$elea<>$echa<>$esol<>$egat<>$econ<>$egold<>$erice<>$ecex<>$eclass<>$earm<>$ebook<>$ebank<>$esub1<>$esub2<>$epos<>$emes<>$ehost<>$edate<>$email<>$eos<>\n");
open(OUT,">./charalog/main/$eid\.cgi") or &ERR2('ENEMY 新登录。');
print OUT @NEW_DATA;
close(OUT);
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
#_/ LOG偺彂偒崬傒 _/#
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub MAP_LOG {
if($lockkey) { &F_LOCK; }
open(IN,"$MAP_LOG_LIST");
@S_MOVE = <IN>;
close(IN);
&TIME_DATA;
unshift(@S_MOVE,"$_[0]($mday日$hour时$min分)\n");
splice(@S_MOVE,20);
open(OUT,">$MAP_LOG_LIST") or &ERR2('LOG 新登录。');
print OUT @S_MOVE;
close(OUT);
if (-d $lockfile) { &UNLOCK_FILE; }
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
#_/ LOG偺彂偒崬傒 _/#
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub MAP_LOG2 {
if($lockkey) { &F_LOCK; }
open(IN,"$MAP_LOG_LIST2");
@S_MOVE = <IN>;
close(IN);
unshift(@S_MOVE,"<b>$_[0]</b>($mday日$hour时$min分)\n");
splice(@S_MOVE,20);
open(OUT,">$MAP_LOG_LIST2") or &ERR2('LOG 新登录。');
print OUT @S_MOVE;
close(OUT);
if (-d $lockfile) { &UNLOCK_FILE; }
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
#_/ LOG偺彂偒崬傒 _/#
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub K_LOG {
open(IN,"./charalog/log/$kid.cgi");
@K_LOG = <IN>;
close(IN);
unshift(@K_LOG,"$_[0]($mday日$hour时$min分)\n");
splice(@K_LOG,20);
open(OUT,">./charalog/log/$kid.cgi");
print OUT @K_LOG;
close(OUT);
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# BATTLE ITEM ALL OPEN #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub CHARA_ITEM_OPEN {
open(IN,"$ARM_LIST") or &ERR('成功。');
@ARM_DATA = <IN>;
close(IN);
open(IN,"$PRO_LIST") or &ERR('成功。');
@PRO_DATA = <IN>;
close(IN);
($karmname,$karmval,$karmdmg,$karmwei,$karmele,$karmsta,$karmclass,$karmtownid) = split(/<>/,$ARM_DATA[$karm]);
($kproname,$kproval,$kprodmg,$kprowei,$kproele,$kprosta,$kproclass,$kprotownid) = split(/<>/,$PRO_DATA[$kbook]);
if($eid){
($earmname,$earmval,$earmdmg,$earmwei,$earmele,$earmsta,$earmclass,$earmtownid) = split(/<>/,$ARM_DATA[$earm]);
($eproname,$eproval,$eprodmg,$eprowei,$eproele,$eprosta,$eproclass,$eprotownid) = split(/<>/,$PRO_DATA[$ebook]);
}
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# 帪娫 庢摼 #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub TIME_DATA {
$tt = time ;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime(time);
$mon++;
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$daytime = sprintf("%02d\/%02d\/(%s) %02d:%02d", $mon,$mday,$ww,$hour,$min);
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# COUNTRY DATA OPEN #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub COUNTRY_DATA_OPEN {
open(IN,"$COUNTRY_LIST") or &ERR2('成功。err no :country');
@COU_DATA = <IN>;
close(IN);
$country_no=0;$hit=0;
foreach(@COU_DATA){
($xcid,$xname,$xele,$xmark,$xking,$xmes,$xsub,$xpri)=split(/<>/);
if("$_[0]" eq "$xcid"){$hit=1;last;}
$country_no++;
}
if(!$hit){
$xcid=0;
$xname="流浪国";
$xele=0;
$xmark=0;
$xking="";
$xmes=0;
$xsub=0;
$xpri=0;
}
foreach(@COU_DATA){
($x2cid,$x2name,$x2ele,$x2mark)=split(/<>/);
$cou_name[$x2cid] = "$x2name";
$cou_ele[$x2cid] = "$x2ele";
$cou_mark[$x2cid] = "$x2mark";
}
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# COUNTRY DATA INPUT #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub COUNTRY_DATA_INPUT {
if($lockkey) { &F_LOCK; }
if("$xcid" ne "0" && "$xcid" ne ""){
splice(@COU_DATA,$country_no,1,"$xcid<>$xname<>$xele<>$xmark<>$xking<>$xmes<>$xsub<>$xpri<>\n");
open(OUT,">$COUNTRY_LIST") or &ERR('COUNTRY 新登录。');
print OUT @COU_DATA;
close(OUT);
}
$s_i = int(rand(5));
if($s_i eq "0" && $xcid ne ""){
open(OUT,">$COUNTRY_LIST2") or &ERR('COUNTRY2 新登录。');
print OUT @COU_DATA;
close(OUT);
}
if (-d $lockfile) { &UNLOCK_FILE; }
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# TOWN DATA OPEN #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub TOWN_DATA_OPEN {
open(IN,"$TOWN_LIST") or &ERR("指定登录。");
@TOWN_DATA = <IN>;
close(IN);
$zid = $_[0];
($zname,$zcon,$znum,$znou,$zsyo,$zshiro,$znou_max,$zsyo_max,$zshiro_max,$zpri,$zx,$zy,$zsouba,$z[0],$z[1],$z[2],$z[3])=split(/<>/,$TOWN_DATA[$_[0]]);
if($zname eq ""){&ERR("这个名字已有。");}
$zc=0;
foreach(@TOWN_DATA){
($z2name,$z2con,$z2num,$z2nou,$z2syo,$z2shiro)=split(/<>/);
$town_name[$zc] = "$z2name";
$town_cou[$zc] = "$z2con";
$town_get[$z2con] += 1;
$town_num[$z2con] += $z2num;
$town_nou[$z2con] += $z2nou;
$town_syo[$z2con] += $z2syo;
$zc++;
}
}
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
# TOWN DATA INPUT #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
sub TOWN_DATA_INPUT {
if($lockkey) { &F_LOCK; }
if("$zname" ne ""){
splice(@TOWN_DATA,$zid,1,"$zname<>$zcon<>$znum<>$znou<>$zsyo<>$zshiro<>$znou_max<>$zsyo_max<>$zshiro_max<>$zpri<>$zx<>$zy<>$zsouba<>$z[0]<>$z[1]<>$z[2]<>$z[3]<>\n");
open(OUT,">$TOWN_LIST") or &ERR('TOWN 新登录。');
print OUT @TOWN_DATA;
close(OUT);
}
$s_it = int(rand(3));
if($s_it eq "0" && $zname ne ""){
open(OUT,">$TOWN_LIST2") or &ERR('TOWN2 新登录。');
print OUT @TOWN_DATA;
close(OUT);
}
if (-d $lockfile) { &UNLOCK_FILE; }
}
#_/_/_/_/_/_/_/_/#
# DECODE #
#_/_/_/_/_/_/_/_/#
sub DECODE {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
if ($ENV{'CONTENT_LENGTH'} > 51200) { &ERR("投稿中"); }
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/, $buffer);
foreach (@pairs) {
($name,$value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# 暥帤僐乕僪傪僔僼僩JIS曄姺
&jcode'convert(*value, "sjis", "", "z");
# 僞僌張棟
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\"/"/g;
# 夵峴摍張棟
if ($name eq "ins") {
$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;
} else {
$value =~ s/\r//g;
$value =~ s/\n//g;
}
$in{$name} = $value;
}
$mode = $in{'mode'};
$in{'url'} =~ s/^http\:\/\///;
$cookie_pass = $in{'pass'};
$cookie_id = $in{'id'};
}
#_/_/_/_/_/_/_/_/#
# HOST NAME #
#_/_/_/_/_/_/_/_/#
sub HOST_NAME {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($get_remotehost) {
if ($host eq "" || $host eq "$addr") {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
}
}
if ($host eq "") { $host = $addr; }
}
#_/_/_/_/_/_/_/_/#
# ERROR PRINT #
#_/_/_/_/_/_/_/_/#
sub ERR {
&CHARA_MAIN_OPEN;
&HEADER;
if (-d $lockfile) { &UNLOCK_FILE; }
print "<center><hr size=0><h3>ERROR !</h3>\n";
print "<P><font color=red><B>$_[0]</B></font>\n";
print "<form action=\"$FILE_STATUS\" method=\"post\"><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS><input type=submit value=\"返回都市\"></form>";
print "<P><hr size=0></center>\n</body></html>\n";
exit;
}
#_/_/_/_/_/_/_/_/_/#
# ERROR PRINT2 #
#_/_/_/_/_/_/_/_/_/#
sub ERR2 {
&HEADER;
if (-d $lockfile) { &UNLOCK_FILE; }
print "<center><hr size=0><h3>ERROR !</h3>\n";
print "<P><font color=red><B>$_[0]</B></font>\n";
print "<P><hr size=0></center>\n</body></html>\n";
exit;
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# FILE LOCK #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub F_LOCK {
$qhit=0;
for($qp=0;$qp<1;$qp++){
if (-d $lockfile) {
$qhit=1;
sleep(1);
last;
}else{
mkdir($lockfile, 0755);
}
}
if($qhit){
&UNLOCK_FILE();
&ERR("File lock error!<BR>请刷新.");
}
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# FILE UNLOCK #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub UNLOCK_FILE
{
rmdir("$lockfile");
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# HTML HEADER #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub HEADER {
print "Cache-Control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print <<"EOM";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=gb2312">
EOM
print <<"EOM";
<STYLE type="text/css">
<!--
BODY,TR,TD,TH{
font-family : "MS 粗体字";
font-size: $FONT_SIZE
}
A:HOVER{
color: $ALINK
}
.S1 {color:#fff; border-style: double; border-width: 3px;BACKGROUND: #633;}
.dmg { color: #FF0000; font-size: 18pt }
.clit { color: #0000FF; font-size: 18pt }
.r { color: #FF4444; font-size: 10pt }
.b { color: #4444DD; font-size: 10pt }
.s { color: #44AAEE; font-size: 10pt }
.g { color: #44DD44; font-size: 10pt }
.o { color: #EEAA44; font-size: 10pt }
-->
</STYLE>
<title>$GAME_TITLE</title></head>
<body background="$BACKGROUND" bgcolor="$BGCOLOR" text="$TEXT" link="$LINK" vlink="$VLINK" alink="$ALINK" leftmargin="0" marginwidth="0" marginheight="0">
EOM
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# HTML FOOTER #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub FOOTER {
# 壜曄丄嶍彍傪嬛巭偟傑偡丅
print "<HR SIZE=0>\n";
print "三国志NET $VER <a href=\"http://www3.to/maccyu2/\" target=\"_top\">maccyu</a><br>\n";
print "游戏首页 <a href=\"./index.cgi\" target=\"_top\">HOME</a><br>\n";
print "汉化 <a href=\"http://chu.kl90.com\" target=\"_top\">onetwo</a><br>\n";
print "美化 <a href=\"http://chu.kl90.com\" target=\"_top\">onetwo</a><br>\n";
print "请保留以上版权 <a href=\"http://chu.kl90.com\" target=\"_top\">中国C派</a><br>\n";
print "</body></html>\n";
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# COOKIE 忣曬庢摼 #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub GET_COOKIE {
@pairs = split(/;/, $ENV{'HTTP_COOKIE'});
foreach (@pairs) {
local($key,$val) = split(/=/);
$key =~ s/\s//g;
$GET{$key} = $val;
}
@pairs = split(/,/, $GET{'WOR'});
foreach (@pairs) {
local($key,$val) = split(/<>/);
$COOK{$key} = $val;
}
$_id = $COOK{'id'};
$_pass = $COOK{'pass'};
}
#_/_/_/_/_/_/_/_/_/_/_/_/#
# SET COOKIE #
#_/_/_/_/_/_/_/_/_/_/_/_/#
sub SET_COOKIE {
local($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time+60*24*60*60);
@month=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
$week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec);
$cook="id<>$cookie_id\,pass<>$cookie_pass";
print "Set-Cookie: WOR=$cook; expires=$gmt\n";
}
#_/_/_/_/_/_/_/_/_/_/#
# GUEST忣曬廂廤 #
#_/_/_/_/_/_/_/_/_/_/#
sub MAKE_GUEST_LIST {
if($lockkey) { &F_LOCK; }
open(GUEST,"$GUEST_LIST") or &ERR2('NO,NO。');
@GUEST=<GUEST>;close(GUEST);
$times = time();@m_list = ();$hit=0;@New_guest_list=();
foreach (@GUEST){($timer,$name,$con,$opos) = split(/<>/);
if( $times - 180 > $timer){
next;
}elsif($kname eq $name){
if( $times - 5 <= $timer){ &ERR("5秒后更新。<BR>间隔时间。"); }
push (@New_guest_list,"$times<>$kname<>$kcon<>$kpos<>\n");
$m_list .= "$kname\[$town_name[$kpos]\] ";
$hit = 1;
}else{
push (@New_guest_list,"$timer<>$name<>$con<>$opos<>\n");
if($kcon eq $con){
$m_list .= "$name\[$town_name[$opos]\] ";
}
}
}
if(!$hit){
push(@New_guest_list,"$times<>$kname<>$kcon<>$kpos<>\n");
$m_list .= "$kname\[$town_name[$kpos]\] ";
}
open(GUEST,">$GUEST_LIST") or &ERR('新登录。');
print GUEST @New_guest_list;close(GUEST);
if (-d $lockfile) { &UNLOCK_FILE; }
}
#_/_/_/_/_/_/_/_/_/_/#
# 晧壸杊巭婡擻 #
#_/_/_/_/_/_/_/_/_/_/#
sub SERVER_STOP {
&HOST_NAME;
open(GUEST,"./log_file/stop.cgi") or &ERR2('新登录。');
@STOP=<GUEST>;close(GUEST);
if($host eq ""){&ERR("ID有效。");}
$times = time();@m_list = ();$hit=0;@New_stop=();
$phit=0;
foreach (@STOP){
($stimer,$shost) = split(/<>/);
if( $times - 180 > $stimer){
next;
}elsif($shost eq $host){
if( $times-5 <= $stimer){
$phit = 1;
}
push (@New_stop,"$times<>$host<>\n");
$hit = 1;
}else{
push (@New_stop,"$stimer<>$shost<>\n");
}
}
if(!$hit){
push(@New_stop,"$times<>$host<>\n");
}
open(GUEST,">./log_file/stop.cgi") or &ERR('新登录。');
print GUEST @New_stop;close(GUEST);
if($phit){
if($in{'id'} eq ""){
# &ERR2("僒乕僶傊偺晄壜杊巭偺堊丄峏怴偟偰偐傜<BR>5昩埲忋娫妘傪偁偗偰幚峴偟偰偔偩偝偄丅<BR>Your host name : $host");
}else{
# &ERR("僒乕僶傊偺晄壜杊巭偺堊丄峏怴偟偰偐傜<BR>5昩埲忋娫妘傪偁偗偰幚峴偟偰偔偩偝偄丅<BR>Your host name : $host");
}
}
}
1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -