Example #1
0
function reset_game()
{
    if (eval(__MAGIC__)) {
        return $___RET_VALUE;
    }
    eval(import_module('sys'));
    $dir = GAME_ROOT . './gamedata/';
    $sqldir = GAME_ROOT . './gamedata/sql/';
    //重设玩家互动信息、聊天记录、地图道具、地图陷阱、进行状况
    $sql = file_get_contents("{$sqldir}reset.sql");
    $sql = str_replace("\r", "\n", str_replace(' bra_', ' ' . $tablepre, $sql));
    $db->queries($sql);
    //重设游戏进行状况的时间
    writeover(GAME_ROOT . './gamedata/tmp/news/newsinfo_' . $room_prefix . '.php', $checkstr);
    //清空战斗信息
    $hdamage = 0;
    $hplayer = '';
    $noisetime = 0;
    $noisepls = 0;
    $noiseid = 0;
    $noiseid2 = 0;
    $noisemode = '';
    //重设控制台功能
    $bancombo = 0;
    save_combatinfo();
    save_gameinfo();
}
Example #2
0
function rs_game($mode = 0)
{
    global $db, $tablepre, $gamecfg, $now, $gamestate, $plsinfo, $typeinfo, $areanum, $areaadd, $afktime, $combonum, $deathlimit;
    //	$stime=getmicrotime();
    $dir = GAME_ROOT . './gamedata/';
    $sqldir = GAME_ROOT . './gamedata/sql/';
    if ($mode & 1) {
        //重设玩家互动信息、聊天记录、地图道具、地图陷阱、进行状况
        $sql = file_get_contents("{$sqldir}reset.sql");
        $sql = str_replace("\r", "\n", str_replace(' bra_', ' ' . $tablepre, $sql));
        $db->queries($sql);
        //重设游戏进行状况的时间
        if ($fp = fopen("{$dir}newsinfo.php", 'wb')) {
            global $checkstr;
            fwrite($fp, $checkstr);
            fclose($fp);
        } else {
            gexit('Can not write to cache files, please check directory ./gamedata/ and ./gamedata/cache/ .', __FILE__, __LINE__);
        }
        //清空战斗信息
        global $hdamage, $hplayer, $noisetime, $noisepls, $noiseid, $noiseid2, $noisemode, $starttime, $gamevars;
        $hdamage = 0;
        $hplayer = '';
        $noisetime = 0;
        $noisepls = 0;
        $noiseid = 0;
        $noiseid2 = 0;
        $noisemode = '';
        save_combatinfo();
        //修改反挂机间隔
        $afktime = $starttime;
        //重设连斗判断死亡数
        $combonum = $deathlimit;
        //重设游戏剧情开关
        $gamevars = 0;
        save_gameinfo();
    }
    if ($mode & 2) {
        //echo " - 禁区初始化 - ";
        global $arealist, $areanum, $weather, $hack, $areatime, $starttime, $startmin, $areaadd, $areahour;
        list($sec, $min, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime($starttime);
        $areatime = ceil(($starttime + $areahour * 60) / 600) * 600;
        //$areahour已改为按分钟计算,ceil是为了让禁区分钟为10的倍数
        $plsnum = sizeof($plsinfo);
        $arealist = range(1, $plsnum - 1);
        shuffle($arealist);
        array_unshift($arealist, 0);
        $areanum = 0;
        $weather = rand(0, 9);
        $hack = 0;
        movehtm($areatime);
    }
    if ($mode & 4) {
        //echo " - 角色数据库初始化 - ";
        global $validnum, $alivenum, $deathnum;
        $sql = file_get_contents("{$sqldir}players.sql");
        $sql = str_replace("\r", "\n", str_replace(' bra_', ' ' . $tablepre, $sql));
        $db->queries($sql);
        //runquery($sql);
        $validnum = $alivenum = $deathnum = 0;
    }
    if ($mode & 8) {
        //echo " - NPC初始化 - ";
        $db->query("DELETE FROM {$tablepre}players WHERE type>0 ");
        include_once config('npc', $gamecfg);
        //$typenum = sizeof($typeinfo);
        $plsnum = sizeof($plsinfo);
        $npcqry = '';
        //for($i = 1; $i < $typenum; $i++) {
        foreach ($npcinfo as $i => $npcs) {
            if (!empty($npcs)) {
                if (sizeof($npcs['sub']) > $npcs['num']) {
                    shuffle($npcs['sub']);
                }
                for ($j = 1; $j <= $npcs['num']; $j++) {
                    $npc = array_merge($npcinit, $npcs);
                    //$npc = $npcinfo[$i];
                    $npc['type'] = $i;
                    $npc['endtime'] = $now;
                    $npc['sNo'] = $j;
                    //if(($npc['mode'] == 1)&&($npc['num'] <= $npc['sub'])){
                    //	$npc = array_merge($npc,$npc[$j]);
                    //} elseif($npc['mode'] == 2) {
                    //	$k = rand(1,$npc['sub']);
                    //	$npc = array_merge($npc,$npc[$k]);
                    //} else {
                    //	$npc = array_merge($npc,$npc[1]);
                    //}
                    $subnum = sizeof($npc['sub']);
                    $sub = $j % $subnum;
                    $npc = array_merge($npc, $npc['sub'][$sub]);
                    $npc['hp'] = $npc['mhp'];
                    $npc['sp'] = $npc['msp'];
                    $npc['exp'] = round(2 * $npc['lvl'] * $GLOBALS['baseexp']);
                    foreach (array('p', 'k', 'g', 'c', 'd', 'f') as $val) {
                        if (!$npc['w' . $val]) {
                            $npc['w' . $val] = $npc['skill'];
                        }
                    }
                    //$npc['wp'] = $npc['wk'] = $npc['wg'] = $npc['wc'] = $npc['wd'] = $npc['wf'] = $npc['skill'];
                    if ($npc['gd'] == 'r') {
                        $npc['gd'] = rand(0, 1) ? 'm' : 'f';
                    }
                    do {
                        $rpls = rand(1, $plsnum - 1);
                    } while ($rpls == 34);
                    if ($npc['pls'] == 99) {
                        $npc['pls'] = $rpls;
                    }
                    $npc['state'] = 0;
                    $npcqry .= "('" . $npc['name'] . "','" . $npc['pass'] . "','" . $npc['type'] . "','" . $npc['endtime'] . "','" . $npc['gd'] . "','" . $npc['sNo'] . "','" . $npc['icon'] . "','" . $npc['club'] . "','" . $npc['rp'] . "','" . $npc['hp'] . "','" . $npc['mhp'] . "','" . $npc['sp'] . "','" . $npc['msp'] . "','" . $npc['att'] . "','" . $npc['def'] . "','" . $npc['pls'] . "','" . $npc['lvl'] . "','" . $npc['exp'] . "','" . $npc['money'] . "','" . $npc['bid'] . "','" . $npc['inf'] . "','" . $npc['rage'] . "','" . $npc['pose'] . "','" . $npc['tactic'] . "','" . $npc['killnum'] . "','" . $npc['state'] . "','" . $npc['wp'] . "','" . $npc['wk'] . "','" . $npc['wg'] . "','" . $npc['wc'] . "','" . $npc['wd'] . "','" . $npc['wf'] . "','" . $npc['teamID'] . "','" . $npc['teamPass'] . "','" . $npc['wep'] . "','" . $npc['wepk'] . "','" . $npc['wepe'] . "','" . $npc['weps'] . "','" . $npc['arb'] . "','" . $npc['arbk'] . "','" . $npc['arbe'] . "','" . $npc['arbs'] . "','" . $npc['arh'] . "','" . $npc['arhk'] . "','" . $npc['arhe'] . "','" . $npc['arhs'] . "','" . $npc['ara'] . "','" . $npc['arak'] . "','" . $npc['arae'] . "','" . $npc['aras'] . "','" . $npc['arf'] . "','" . $npc['arfk'] . "','" . $npc['arfe'] . "','" . $npc['arfs'] . "','" . $npc['art'] . "','" . $npc['artk'] . "','" . $npc['arte'] . "','" . $npc['arts'] . "','" . $npc['itm0'] . "','" . $npc['itmk0'] . "','" . $npc['itme0'] . "','" . $npc['itms0'] . "','" . $npc['itm1'] . "','" . $npc['itmk1'] . "','" . $npc['itme1'] . "','" . $npc['itms1'] . "','" . $npc['itm2'] . "','" . $npc['itmk2'] . "','" . $npc['itme2'] . "','" . $npc['itms2'] . "','" . $npc['itm3'] . "','" . $npc['itmk3'] . "','" . $npc['itme3'] . "','" . $npc['itms3'] . "','" . $npc['itm4'] . "','" . $npc['itmk4'] . "','" . $npc['itme4'] . "','" . $npc['itms4'] . "','" . $npc['itm5'] . "','" . $npc['itmk5'] . "','" . $npc['itme5'] . "','" . $npc['itms5'] . "','" . $npc['itm6'] . "','" . $npc['itmk6'] . "','" . $npc['itme6'] . "','" . $npc['itms6'] . "','" . $npc['wepsk'] . "','" . $npc['arbsk'] . "','" . $npc['arhsk'] . "','" . $npc['arask'] . "','" . $npc['arfsk'] . "','" . $npc['artsk'] . "','" . $npc['itmsk0'] . "','" . $npc['itmsk1'] . "','" . $npc['itmsk2'] . "','" . $npc['itmsk3'] . "','" . $npc['itmsk4'] . "','" . $npc['itmsk5'] . "','" . $npc['itmsk6'] . "','" . $npc['skills'] . "'),";
                    //$db->query("INSERT INTO {$tablepre}players (name,pass,type,endtime,gd,sNo,icon,club,hp,mhp,sp,msp,att,def,pls,lvl,`exp`,money,bid,inf,rage,pose,tactic,killnum,state,wp,wk,wg,wc,wd,wf,teamID,teamPass,wep,wepk,wepe,weps,arb,arbk,arbe,arbs,arh,arhk,arhe,arhs,ara,arak,arae,aras,arf,arfk,arfe,arfs,art,artk,arte,arts,itm0,itmk0,itme0,itms0,itm1,itmk1,itme1,itms1,itm2,itmk2,itme2,itms2,itm3,itmk3,itme3,itms3,itm4,itmk4,itme4,itms4,itm5,itmk5,itme5,itms5,wepsk,arbsk,arhsk,arask,arfsk,artsk,itmsk0,itmsk1,itmsk2,itmsk3,itmsk4,itmsk5) VALUES ('".$npc['name']."','".$npc['pass']."','".$npc['type']."','".$npc['endtime']."','".$npc['gd']."','".$npc['sNo']."','".$npc['icon']."','".$npc['club']."','".$npc['hp']."','".$npc['mhp']."','".$npc['sp']."','".$npc['msp']."','".$npc['att']."','".$npc['def']."','".$npc['pls']."','".$npc['lvl']."','".$npc['exp']."','".$npc['money']."','".$npc['bid']."','".$npc['inf']."','".$npc['rage']."','".$npc['pose']."','".$npc['tactic']."','".$npc['killnum']."','".$npc['death']."','".$npc['wp']."','".$npc['wk']."','".$npc['wg']."','".$npc['wc']."','".$npc['wd']."','".$npc['wf']."','".$npc['teamID']."','".$npc['teamPass']."','".$npc['wep']."','".$npc['wepk']."','".$npc['wepe']."','".$npc['weps']."','".$npc['arb']."','".$npc['arbk']."','".$npc['arbe']."','".$npc['arbs']."','".$npc['arh']."','".$npc['arhk']."','".$npc['arhe']."','".$npc['arhs']."','".$npc['ara']."','".$npc['arak']."','".$npc['arae']."','".$npc['aras']."','".$npc['arf']."','".$npc['arfk']."','".$npc['arfe']."','".$npc['arfs']."','".$npc['art']."','".$npc['artk']."','".$npc['arte']."','".$npc['arts']."','".$npc['itm0']."','".$npc['itmk0']."','".$npc['itme0']."','".$npc['itms0']."','".$npc['itm1']."','".$npc['itmk1']."','".$npc['itme1']."','".$npc['itms1']."','".$npc['itm2']."','".$npc['itmk2']."','".$npc['itme2']."','".$npc['itms2']."','".$npc['itm3']."','".$npc['itmk3']."','".$npc['itme3']."','".$npc['itms3']."','".$npc['itm4']."','".$npc['itmk4']."','".$npc['itme4']."','".$npc['itms4']."','".$npc['itm5']."','".$npc['itmk5']."','".$npc['itme5']."','".$npc['itms5']."','".$npc['wepsk']."','".$npc['arbsk']."','".$npc['arhsk']."','".$npc['arask']."','".$npc['arfsk']."','".$npc['artsk']."','".$npc['itmsk0']."','".$npc['itmsk1']."','".$npc['itmsk2']."','".$npc['itmsk3']."','".$npc['itmsk4']."','".$npc['itmsk5']."')");
                    unset($npc);
                }
            }
        }
        if (!empty($npcqry)) {
            $npcqry = "INSERT INTO {$tablepre}players (name,pass,type,endtime,gd,sNo,icon,club,rp,hp,mhp,sp,msp,att,def,pls,lvl,`exp`,money,bid,inf,rage,pose,tactic,killnum,state,wp,wk,wg,wc,wd,wf,teamID,teamPass,wep,wepk,wepe,weps,arb,arbk,arbe,arbs,arh,arhk,arhe,arhs,ara,arak,arae,aras,arf,arfk,arfe,arfs,art,artk,arte,arts,itm0,itmk0,itme0,itms0,itm1,itmk1,itme1,itms1,itm2,itmk2,itme2,itms2,itm3,itmk3,itme3,itms3,itm4,itmk4,itme4,itms4,itm5,itmk5,itme5,itms5,itm6,itmk6,itme6,itms6,wepsk,arbsk,arhsk,arask,arfsk,artsk,itmsk0,itmsk1,itmsk2,itmsk3,itmsk4,itmsk5,itmsk6,skills) VALUES " . substr($npcqry, 0, -1);
            $db->query($npcqry);
            unset($npcqry);
        }
    }
    if ($mode & 16) {
        //echo " - 地图道具/陷阱初始化 - ";
        //感谢 Martin1994 提供地图道具数据库化的源代码
        $plsnum = sizeof($plsinfo);
        $iqry = $tqry = '';
        //		if($gamestate == 0){
        //			global $checkstr;
        //			dir_clear("{$dir}mapitem/");
        //			for($i = 0;$i < $plsnum; $i++){
        //				$mapfile = GAME_ROOT."./gamedata/mapitem/{$i}mapitem.php";
        //				writeover($mapfile,$checkstr);
        //			}
        //		}
        $file = config('mapitem', $gamecfg);
        $itemlist = openfile($file);
        $in = sizeof($itemlist);
        $an = $areanum ? ceil($areanum / $areaadd) : 0;
        //$mapitem = array();
        //$ifqry = $iqry = 'INSERT INTO '.$tablepre.'mapitem (itm,itmk,itme,itms,itmsk,map) VALUES ';
        for ($i = 1; $i < $in; $i++) {
            if (!empty($itemlist[$i]) && strpos($itemlist[$i], ',') !== false) {
                list($iarea, $imap, $inum, $iname, $ikind, $ieff, $ista, $iskind) = explode(',', $itemlist[$i]);
                if ($iarea == $an || $iarea == 99) {
                    for ($j = $inum; $j > 0; $j--) {
                        if ($imap == 99) {
                            $rmap = rand(1, $plsnum - 1);
                            while ($rmap == 34) {
                                $rmap = rand(1, $plsnum - 1);
                            }
                            if (strpos($ikind, 'TO') === 0) {
                                $tqry .= "('{$iname}', '{$ikind}','{$ieff}','{$ista}','{$iskind}','{$rmap}'),";
                            } else {
                                $iqry .= "('{$iname}', '{$ikind}','{$ieff}','{$ista}','{$iskind}','{$rmap}'),";
                            }
                            //$iqry[$rmap] .= "('$iname', '$ikind','$ieff','$ista','$iskind'),";
                            //$db->query("INSERT INTO {$tablepre}{$rmap}mapitem (itm,itmk,itme,itms,itmsk) VALUES ('$iname', '$ikind','$ieff','$ista','$iskind')");
                        } else {
                            if (strpos($ikind, 'TO') === 0) {
                                $tqry .= "('{$iname}', '{$ikind}','{$ieff}','{$ista}','{$iskind}','{$imap}'),";
                            } else {
                                $iqry .= "('{$iname}', '{$ikind}','{$ieff}','{$ista}','{$iskind}','{$imap}'),";
                            }
                            //$db->query("INSERT INTO {$tablepre}{$imap}mapitem (itm,itmk,itme,itms,itmsk) VALUES ('$iname', '$ikind','$ieff','$ista','$iskind')");
                        }
                        //if($imap == 99) {
                        //	$imap = rand(1,$plsnum-1);
                        //$mapitem[$rmap] .= "$iname,$ikind,$ieff,$ista,$iskind,\n";
                        //} else {
                        //$mapitem[$imap] .= "$iname,$ikind,$ieff,$ista,$iskind,\n";
                        //}
                    }
                }
            }
        }
        if (!empty($iqry)) {
            $iqry = "INSERT INTO {$tablepre}mapitem (itm,itmk,itme,itms,itmsk,pls) VALUES " . substr($iqry, 0, -1);
            $db->query($iqry);
        }
        if (!empty($tqry)) {
            $tqry = "INSERT INTO {$tablepre}maptrap (itm,itmk,itme,itms,itmsk,pls) VALUES " . substr($tqry, 0, -1);
            $db->query($tqry);
        }
        //		for($imap = 0;$imap<$plsnum;$imap++){
        //			if(!empty($iqry[$imap])){
        //				$iqry[$imap] = "INSERT INTO {$tablepre}{$imap}mapitem (itm,itmk,itme,itms,itmsk) VALUES ".substr($iqry[$imap], 0, -1);
        //				$db->query($iqry[$imap]);
        //			}
        //		}
        //		if($ifqry != $iqry){//判定是否有数据写入
        //			$iqry = substr($iqry, 0, -1);//去除尾部多余的逗号
        //			$db->query($iqry);
        //		}
        //		foreach($mapitem as $map => $itemdata) {
        //			$mapfile = GAME_ROOT."./gamedata/mapitem/{$map}mapitem.php";
        //			writeover($mapfile,$itemdata,'ab');
        //		}
        unset($itemlist);
        unset($iqry);
        //unset($mapitem);
    }
    if ($mode & 32) {
        //echo " - 商店初始化 - ";
        $sql = file_get_contents("{$sqldir}shopitem.sql");
        $sql = str_replace("\r", "\n", str_replace(' bra_', ' ' . $tablepre, $sql));
        $db->queries($sql);
        //runquery($sql);
        $file = config('shopitem', $gamecfg);
        $shoplist = openfile($file);
        $qry = '';
        foreach ($shoplist as $lst) {
            if (!empty($lst) && strpos($lst, ',') !== false) {
                list($kind, $num, $price, $area, $item, $itmk, $itme, $itms, $itmsk) = explode(',', $lst);
                if ($kind != 0) {
                    $qry .= "('{$kind}','{$num}','{$price}','{$area}','{$item}','{$itmk}','{$itme}','{$itms}','{$itmsk}'),";
                }
            }
        }
        if (!empty($qry)) {
            $qry = "INSERT INTO {$tablepre}shopitem (kind,num,price,area,item,itmk,itme,itms,itmsk) VALUES " . substr($qry, 0, -1);
        }
        $db->query($qry);
    }
}
Example #3
0
function addnoise($wp_kind, $wsk, $ntime, $npls, $nid1, $nid2, $nmode)
{
    if ($wp_kind == 'G' && strpos($wsk, 'S') === false || $wp_kind == 'F') {
        global $noisetime, $noisepls, $noiseid, $noiseid2, $noisemode;
        $noisetime = $ntime;
        $noisepls = $npls;
        $noiseid = $nid1;
        $noiseid2 = $nid2;
        $noisemode = $nmode;
        save_combatinfo();
    } elseif (strpos($wsk, 'd') !== false) {
        global $noisetime, $noisepls, $noiseid, $noiseid2, $noisemode;
        $noisetime = $ntime;
        $noisepls = $npls;
        $noiseid = $nid1;
        $noiseid2 = $nid2;
        $noisemode = 'D';
        save_combatinfo();
    }
    if (strlen($wp_kind) >= 3) {
        global $noisetime, $noisepls, $noiseid, $noiseid2, $noisemode, $wep;
        $noisetime = $ntime;
        $noisepls = $npls;
        $noiseid = $nid1;
        $noiseid2 = $nid2;
        $noisemode = $wp_kind;
        save_combatinfo();
    }
    return;
}