3 if(!defined(
'IN_GAME')) {
13 if(!$errorinfo){
return;}
14 if($code == 2){$emessage =
'<b style="color:#ff0">Warning</b> ';}
15 elseif($code == 4){$emessage =
'<b style="color:#f00">Parse</b> ';}
16 elseif($code == 8){$emessage =
'<b>Notice</b> ';}
17 elseif($code == 256){$emessage =
'<b>User Error</b> ';}
18 elseif($code == 512){$emessage =
'<b>User Warning</b> ';}
19 elseif($code == 1024){$emessage =
'<b>User Notice</b> ';}
20 else{$emessage =
'<b style="color:#f00>Fatal error</b> ';}
21 $emessage .=
"($code): $msg in $file on line $line";
22 if(isset($GLOBALS[
'error'])){
23 $GLOBALS[
'error'] .=
'<br>'.$emessage;
25 $GLOBALS[
'error'] = $emessage;
30 function gexit($message =
'',$file =
'', $line = 0) {
32 include
template(
'error');
50 foreach($str as $key => $val) {
54 if($GLOBALS[
'magic_quotes_gpc']) {
55 $str = stripslashes($str);
57 $str = str_replace(
"'",
"",$str);
58 $str = str_replace(
"\\",
"",$str);
59 $str = htmlspecialchars($str,ENT_COMPAT);
64 function language($file, $templateid = 0, $tpldir =
'') {
65 $tpldir = $tpldir ? $tpldir :
TPLDIR;
66 $templateid = $templateid ? $templateid :
TEMPLATEID;
68 $languagepack =
GAME_ROOT.
'./'.$tpldir.
'/'.$file.
'.lang.php';
69 if(file_exists($languagepack)) {
71 }
elseif($templateid != 1 && $tpldir !=
'./templates/default') {
72 return language($file, 1,
'./templates/default');
78 function template($file, $templateid = 0, $tpldir =
'') {
81 $tpldir = $tpldir ? $tpldir :
TPLDIR;
82 $templateid = $templateid ? $templateid :
TEMPLATEID;
84 $tplfile =
GAME_ROOT.
'./'.$tpldir.
'/'.$file.
'.htm';
85 $objfile =
GAME_ROOT.
'./gamedata/templates/'.$templateid.
'_'.$file.
'.tpl.php';
86 if(
TEMPLATEID != 1 && $templateid != 1 && !file_exists($tplfile)) {
87 return template($file, 1,
'./templates/default/');
89 if($tplrefresh == 1) {
90 if(!file_exists($objfile) || filemtime($tplfile) > filemtime($objfile)) {
91 require_once
GAME_ROOT.
'./include/template.func.php';
100 include
template($file);
101 $content = ob_get_contents();
103 $GLOBALS[
'gzipcompress'] ? ob_start(
'ob_gzhandler') : ob_start();
109 setcookie(($prefix ? $tablepre :
'').$var, $value,
110 $life ? $now + $life : 0, $cookiepath,
111 $cookiedomain, $_SERVER[
'SERVER_PORT'] == 443 ? 1 : 0);
116 dsetcookie(
'auth',
'', -86400 * 365);
118 $game_uid = $adminid = $credits = 0;
119 $game_user = $game_pw = $game_secques =
'';
123 $cfgfile = file_exists(
GAME_ROOT.
"./gamedata/cache/{$file}_{$cfg}.php") ?
GAME_ROOT.
"./gamedata/cache/{$file}_{$cfg}.php" :
GAME_ROOT.
"./gamedata/cache/{$file}_1.php";
128 $directory = dir(
$dir);
129 while($entry = $directory->read()) {
130 $filename =
$dir.
'/'.$entry;
131 if(is_file($filename)) {
140 strpos($filename,
'..')!==
false && exit(
'Forbidden');
142 $handle=fopen($filename,$method);
143 if(flock($handle,LOCK_SH)){
145 while (!feof($handle)) {
146 $filedata .= fread($handle, 8192);
150 }
else {exit (
'Read file error.');}
155 function writeover($filename,$data,$method=
"rb+",$iflock=1,$check=1,$chmod=1){
156 $check && strpos($filename,
'..')!==
false && exit(
'Forbidden');
158 $handle=fopen($filename,$method);
160 if(flock($handle,LOCK_EX)){
161 fwrite($handle,$data);
162 if($method==
"rb+") ftruncate($handle,strlen($data));
164 }
else {var_dump($filename);exit (
'Write file error.');}
166 fwrite($handle,$data);
167 if($method==
"rb+") ftruncate($handle,strlen($data));
170 $chmod && chmod($filename,0777);
177 $filedata=str_replace(
"\n",
"\n<:game:>",$filedata);
178 $filedb=explode(
"<:game:>",$filedata);
181 if(empty($filedb)){$filedb[0]=
'';}
186 if(PHP_VERSION <
'5.2.0'){
187 require_once
GAME_ROOT.
'./include/JSON.php';
189 $jdata = $json->encode($data);
191 $jdata = json_encode($data);
228 function addnews($t = 0,
$n =
'',$a=
'',$b=
'',$c =
'', $d =
'', $e =
'') {
245 if(strpos(
$n,
'death11') === 0 || strpos(
$n,
'death32') === 0) {
246 $result = $db->query(
"SELECT lastword FROM {$tablepre}users WHERE username = '$a'");
247 $e = $lastword = $db->result(
$result, 0);
248 $db->query(
"INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('3','$t','$a','$c','$lastword')");
249 }
elseif(strpos(
$n,
'death15') === 0 || strpos(
$n,
'death16') === 0) {
250 $result = $db->query(
"SELECT lastword FROM {$tablepre}users WHERE username = '$a'");
251 $e = $lastword = $db->result(
$result, 0);
252 $result = $db->query(
"SELECT pls FROM {$tablepre}players WHERE name = '$a' AND type = '0'");
253 $place = $db->result(
$result, 0);
254 $db->query(
"INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('3','$t','$a','$place','$lastword')");
256 $db->query(
"INSERT INTO {$tablepre}newsinfo (`time`,`news`,`a`,`b`,`c`,`d`,`e`) VALUES ('$t','$n','$a','$b','$c','$d','$e')");
267 $ldata[
'type']=$type;
269 $ldata[
'time']=$time;
272 $db->array_insert(
"{$tablepre}log", $ldata);
278 global
$gamenum,
$gamestate,$lastupdate,
$starttime,
$winmode,
$winner,
$arealist,
$areanum,
$areatime,$areawarn,
$validnum,
$alivenum,
$deathnum,$afktime,$optime,
$weather,
$hack,$combonum,$gamevars;
279 $result = $db->query(
"SELECT * FROM {$tablepre}game");
280 $gameinfo = $db->fetch_array(
$result);
281 $gamenum = $gameinfo[
'gamenum'];
282 $gamestate = $gameinfo[
'gamestate'];
284 $starttime = $gameinfo[
'starttime'];
285 $winmode = $gameinfo[
'winmode'];
286 $winner = $gameinfo[
'winner'];
287 $arealist = explode(
',',$gameinfo[
'arealist']);
288 $areanum = $gameinfo[
'areanum'];
289 $areatime = $gameinfo[
'areatime'];
290 $areawarn = $gameinfo[
'areawarn'];
291 $validnum = $gameinfo[
'validnum'];
292 $alivenum = $gameinfo[
'alivenum'];
293 $deathnum = $gameinfo[
'deathnum'];
294 $afktime = $gameinfo[
'afktime'];
295 $optime = $gameinfo[
'optime'];
296 $weather = $gameinfo[
'weather'];
297 $hack = $gameinfo[
'hack'];
298 $gamevars = $gameinfo[
'gamevars'];
299 $gamevars = Array(
'sanmaact' => $gamevars & 1,
'sanmadead' => $gamevars & 2);
300 $combonum = $gameinfo[
'combonum'];
306 global
$gamenum,
$gamestate,$lastupdate,
$starttime,
$winmode,
$winner,
$arealist,
$areanum,
$areatime,$areawarn,
$validnum,
$alivenum,
$deathnum,$afktime,$optime,
$weather,
$hack,$combonum,$gamevars;
307 if(!isset($gamenum)||!isset($gamestate)){
return;}
308 if($alivenum < 0){$alivenum = 0;}
309 if($deathnum < 0){$deathnum = 0;}
310 if(empty($afktime)){$afktime =
$now;}
311 if(empty($optime)){$optime =
$now;}
319 $gameinfo[
'arealist'] = implode(
',',$arealist);
322 $gameinfo[
'areawarn'] = $areawarn;
326 $gameinfo[
'afktime'] = $afktime;
327 $gameinfo[
'optime'] = $optime;
329 $gamevars0 = ($gamevars[
'sanmaact'] ? 1 : 0) + ($gamevars[
'sanmadead'] ? 2 : 0);
330 $gameinfo[
'gamevars'] = $gamevars0;
331 $gameinfo[
'hack'] =
$hack;
332 $gameinfo[
'combonum'] = $combonum;
333 $db->array_update(
"{$tablepre}game",$gameinfo,1);
354 if(!$hdamage){$hdamage = 0;}
355 if(!$noisetime){$noisetime = 0;}
356 if(!$noisepls){$noisepls = 0;}
357 if(!$noiseid){$noiseid = 0;}
358 if(!$noiseid2){$noiseid2 = 0;}
359 $combatinfo =
"<?php\n\nif(!defined('IN_GAME')){exit('Access Denied');}\n\n\$hdamage = {$hdamage};\n\$hplayer = '{$hplayer}';\n\$noisetime = {$noisetime};\n\$noisepls = {$noisepls};\n\$noiseid = {$noiseid};\n\$noiseid2 = {$noiseid2};\n\$noisemode = '{$noisemode}';\n\n?>";
362 if($fp = fopen(
"{$dir}combatinfo.php",
'w')) {
363 if(flock($fp,LOCK_EX)) {
364 fwrite($fp, $combatinfo);
366 exit(
"Couldn't save combat info !");
370 gexit(
'Can not write to cache files, please check directory ./gamedata/ .', __file__, __line__);
378 $result = $db->query(
"SELECT * FROM {$tablepre}chat WHERE cid>'$last' AND (type!='1' OR (type='1' AND recv='$team')) ORDER BY cid desc LIMIT $limit");
379 $chatdata = Array(
'lastcid' => $last,
'msg' =>
'');
382 while($chat = $db->fetch_array(
$result)) {
385 $chat[
'msg'] = htmlspecialchars($chat[
'msg']);
386 if($chat[
'type'] ==
'0') {
387 $msg =
"【{$chatinfo[$chat['type']]}】{$chat['send']}:{$chat['msg']}".date(
"\(H:i:s\)",$chat[
'time']).
'<br>';
388 }
elseif($chat[
'type'] ==
'1') {
389 $msg =
"<span class=\"clan\">【{$chatinfo[$chat['type']]}】{$chat['send']}:{$chat['msg']}".date(
"\(H:i:s\)",$chat[
'time']).
'</span><br>';
390 }
elseif($chat[
'type'] ==
'2') {
391 $msg =
"<span class=\"lime\">【{$chatinfo[$chat['type']]}】{$chat['send']}:{$chat['msg']}".date(
"\(H:i:s\)",$chat[
'time']).
'</span><br>';
392 }
elseif($chat[
'type'] ==
'3') {
394 $msg =
"<span class=\"red\">【{$plsinfo[$chat['recv']]}】{$chat['send']}:{$chat['msg']} ".date(
"\(H:i:s\)",$chat[
'time']).
'</span><br>';
396 $msg =
"<span class=\"red\">【{$plsinfo[$chat['recv']]}】{$chat['send']} 什么都没说就死去了 ".date(
"\(H:i:s\)",$chat[
'time']).
'</span><br>';
398 }
elseif($chat[
'type'] ==
'4') {
399 $msg =
"<span class=\"yellow\">【{$chatinfo[$chat['type']]}】{$chat['msg']}".date(
"\(H:i:s\)",$chat[
'time']).
'</span><br>';
400 }
elseif($chat[
'type'] ==
'5') {
401 $msg =
"<span class=\"yellow\">【{$chatinfo[$chat['type']]}】{$chat['msg']}".date(
"\(H:i:s\)",$chat[
'time']).
'</span><br>';
410 if(!$time){$time =
$now;}
411 if($type ==
'areawarn'){
412 if($gamestate == 20){
413 $type =
'areawarn20';
415 $type =
'areawarn40';
417 }
elseif($type ==
'areaadd'){
418 if($gamestate == 20){
425 $chat = $syschatinfo[$type];
426 $list = Array(
'r' => 0,
'b' => 0,
'l' => 0,
'k'=> 0);
427 if($rdown){$list[
'r'] = 1;}
428 if($bdown){$list[
'b'] = 1;}
429 if($ldown){$list[
'l'] = 1;}
430 if($kdown){$list[
'k'] = 1;}
431 foreach($chat as $val){
434 for(
$i=0;
$i < strlen($judge);
$i+=2){
435 $judge0 = substr($judge,
$i,1);
436 $judge1 = substr($judge,
$i+1,1);
437 if($list[$judge0] != $judge1){
442 if($flag){$msgs[] = $val;}
449 $db->query(
"INSERT INTO {$tablepre}chat (type,`time`,send,msg) VALUES ('2','$time','$send','$msg')");
456 if(!$time){$time =
$now;}
457 if($type ==
'areaadd' || $type ==
'areawarn'){
461 foreach($alist as $ar) {
462 $msg .=
"$plsinfo[$ar] ";
464 if($type ==
'areaadd'){
466 }
elseif($type ==
'areawarn'){
467 $msg =
'警告,以下区域即将成为禁区:'.$msg;
469 }
elseif($type ==
'combo'){
471 }
elseif($type ==
'comboupdate'){
472 $msg =
'连斗死亡判断数修正为'.$msg.
'人!';
475 }
elseif($type ==
'newgame'){
477 }
elseif($type ==
'gameover'){
480 $db->query(
"INSERT INTO {$tablepre}chat (type,`time`,send,msg) VALUES ('5','$time','','$msg')");
485 list($usec, $sec) = explode(
" ",microtime());
486 return ((
float)$usec + (
float)$sec);
491 $mtime = ($t_e - $t_s)*1000;
492 writeover( $file.
'.txt',
"$info ;执行时间:$mtime 毫秒 \n",
'ab');
systemputchat($time, $type, $msg= '')
writeover($filename, $data, $method="rb+", $iflock=1, $check=1, $chmod=1)
if(!defined('IN_GAME')) parse_template($file, $templateid, $tpldir)
if(!defined('IN_GAME')) $hdamage
getchat($last, $team='', $limit=0)
logsave($pid, $time, $log= '', $type= 's')
putmicrotime($t_s, $t_e, $file, $info)
addnews($t=0, $n= '', $a='', $b='', $c= '', $d= '', $e= '')
readover($filename, $method="rb")
【生存者数:<?php echo $alivenum?> 人】< input type="button"value="显示全部幸存者"onClick="$('alivemode').value='all';$('gbmode').value='none';postCmd('alive','alive.php');"></p > if($gamblingon &&$gamestate >=20) elseif($gamblingon &&$gamestate<=10)
if(!defined('IN_GAME')) gameerrorhandler($code, $msg, $file, $line)
config($file= '', $cfg=1)
gsetcookie($var, $value, $life=0, $prefix=1)
language($file, $templateid=0, $tpldir= '')
gexit($message= '', $file= '', $line=0)
storyputchat($time, $type)
if(filemtime($mixfile) > filemtime($writefile)||filemtime($shopfile) > filemtime($writefile)||filemtime($mapitemfile) > filemtime($writefile)||filemtime($synfile) > filemtime($writefile)||filemtime($ovlfile) > filemtime($writefile)||filemtime($presentfile) > filemtime($writefile)||filemtime($boxfile) > filemtime($writefile)) $extrahead
if(!$cuser||!$cpass) $result
compatible_json_encode($data)