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(); }
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); } }
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; }