Esempio n. 1
0
 //	}
 //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;
     }
 }
Esempio n. 2
0
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;
    }
}