// } //include GAME_ROOT.'./gamedata/gameinfo.php'; $ginfochange = false; // $old_gamestate = $gamestate; // $old_areanum = $areanum; if (!$gamestate) { //判定游戏准备 if ($starttime && $now > $starttime - $startmin * 60) { $gamenum++; $gamestate = 10; $hdamage = 0; $hplayer = ''; $noisemode = ''; //save_gameinfo(); include_once GAME_ROOT . './include/system.func.php'; rs_game(1 + 2 + 4 + 8 + 16 + 32); //save_gameinfo(); $ginfochange = true; } } if ($gamestate == 10) { //判定游戏开始 if ($now >= $starttime) { $gamestate = 20; //save_gameinfo(); //addnews($starttime,'newgame',$gamenum); addnews($starttime, 'newgame', $gamenum); systemputchat($starttime, 'newgame'); $ginfochange = true; } }
function add_once_area($atime) { //实际上GAMEOVER的判断是在common.inc.php里 global $db, $tablepre, $now, $gamestate, $areaesc, $arealist, $areanum, $arealimit, $areaadd, $plsinfo, $weather, $hack, $validnum, $alivenum, $deathnum; if ($gamestate > 10 && $now > $atime) { $plsnum = sizeof($plsinfo) - 1; if ($areanum >= $arealimit * $areaadd && $validnum <= 0) { //无人参加GAMEOVER不是因为这里,这里只是保险。 gameover($atime, 'end4'); return; } elseif ($areanum + $areaadd >= $plsnum) { $areaaddlist = array_slice($arealist, $areanum + 1); $areanum = $plsnum; $weather = rand(0, 9); //addnews($atime,'addarea',$areaaddlist,$weather); addnews($atime, 'addarea', $areaaddlist, $weather); storyputchat($now, 'areaadd'); systemputchat($atime, 'areaadd', $areaaddlist); $query = $db->query("SELECT * FROM {$tablepre}players WHERE type=0 AND hp>0"); while ($sub = $db->fetch_array($query)) { $pid = $sub['pid']; $hp = 0; $state = 11; $deathpls = $sub['pls']; $bid = 0; $endtime = $atime; $db->query("UPDATE {$tablepre}players SET hp='{$hp}', bid='{$bid}', state='{$state}', endtime='{$endtime}' WHERE pid={$pid}"); addnews($endtime, "death{$state}", $sub['name'], $sub['type'], $deathpls); } $db->free_result($query); $alivenum = 0; $dquery = $db->query("SELECT pid FROM {$tablepre}players WHERE hp<=0"); $deathnum = $db->num_rows($dquery); $db->free_result($dquery); gameover($atime, 'end1'); return; } else { $weather = rand(0, 9); if ($hack > 0) { $hack--; } $areaaddlist = array_slice($arealist, $areanum + 1, $areaadd); $areanum += $areaadd; movehtm(); //addnews($atime,'addarea',$areaaddlist,$weather); addnews($atime, 'addarea', $areaaddlist, $weather); storyputchat($now, 'areaadd'); systemputchat($atime, 'areaadd', $areaaddlist); $str_arealist = implode(',', array_slice($arealist, 0, $areanum + 1)); $query = $db->query("SELECT * FROM {$tablepre}players WHERE pls IN ({$str_arealist}) AND hp>0"); while ($sub = $db->fetch_array($query)) { $pid = $sub['pid']; if (!$sub['type']) { if ($gamestate >= 40 || !$areaesc && $sub['tactic'] != 4) { $hp = 0; $state = 11; $deathpls = $sub['pls']; $bid = 0; $endtime = $atime; $db->query("UPDATE {$tablepre}players SET hp='{$hp}', bid='{$bid}', state='{$state}', endtime='{$endtime}' WHERE pid={$pid}"); addnews($endtime, "death{$state}", $sub['name'], $sub['type'], $deathpls); $deathnum++; } else { do { $pls = $arealist[rand($areanum + 1, $plsnum)]; } while ($pls == 34); $db->query("UPDATE {$tablepre}players SET pls='{$pls}' WHERE pid={$pid} "); } } elseif ($sub['type'] != 1 && $sub['type'] != 7 && $sub['type'] != 9 && $sub['type'] != 13 && $sub['type'] != 20 && $sub['type'] != 21 && $sub['type'] != 88 && $sub['type'] != 22) { do { $pls = $arealist[rand($areanum + 1, $plsnum)]; } while ($pls == 34); $db->query("UPDATE {$tablepre}players SET pls='{$pls}' WHERE pid={$pid}"); } } $alivenum = $db->result($db->query("SELECT COUNT(*) FROM {$tablepre}players WHERE hp>0 AND type=0"), 0); if ($alivenum == 1 && $gamestate >= 30) { gameover($atime); return; } elseif ($alivenum <= 0 && $gamestate >= 30) { gameover($atime, 'end1'); return $atime; } else { rs_game(16 + 32); //$areatime += $areahour*3600; //addarea($areatime); return; } } } else { return; } }