3 if(!defined(
'IN_GAME')) {
8 global
$db,
$tablepre,
$gamecfg,
$now,
$gamestate,
$plsinfo,
$typeinfo,
$areanum,
$areaadd,$afktime,$combonum,
$deathlimit;
14 $sql = file_get_contents(
"{$sqldir}reset.sql");
15 $sql = str_replace(
"\r",
"\n", str_replace(
' bra_',
' '.$tablepre, $sql));
20 if($fp = fopen(
"{$dir}newsinfo.php",
'wb')) {
22 fwrite($fp, $checkstr);
25 gexit(
'Can not write to cache files, please check directory ./gamedata/ and ./gamedata/cache/ .', __file__, __line__);
53 list($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst) = localtime($starttime);
54 $areatime = (ceil(($starttime + $areahour*60)/600))*600;
56 $arealist = range(1,$plsnum-1);
58 array_unshift($arealist,0);
67 $sql = file_get_contents(
"{$sqldir}players.sql");
68 $sql = str_replace(
"\r",
"\n", str_replace(
' bra_',
' '.$tablepre, $sql));
71 $validnum = $alivenum = $deathnum = 0;
75 $db->query(
"DELETE FROM {$tablepre}players WHERE type>0 ");
76 include_once
config(
'npc',$gamecfg);
84 if (
sizeof($npcs[
'sub'])>$npcs[
'num'])shuffle($npcs[
'sub']);
85 for($j = 1; $j <= $npcs[
'num']; $j++) {
89 $npc[
'endtime'] =
$now;
102 $subnum =
sizeof($npc[
'sub']);
104 $npc = array_merge($npc,$npc[
'sub'][$sub]);
105 $npc[
'hp'] = $npc[
'mhp'];
106 $npc[
'sp'] = $npc[
'msp'];
107 $npc[
'exp'] = round(2*$npc[
'lvl']*$GLOBALS[
'baseexp']);
108 foreach(Array(
'p',
'k',
'g',
'c',
'd',
'f') as $val){
110 $npc[
'w'.$val] = $npc[
'skill'];
114 if($npc[
'gd'] ==
'r'){$npc[
'gd'] = rand(0,1) ?
'm':
'f';}
115 do{$rpls=rand(1,$plsnum-1);}
while ($rpls==34);
116 if($npc[
'pls'] == 99){$npc[
'pls'] = $rpls; }
118 $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'].
"'),";
125 $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);
143 $file =
config(
'mapitem',$gamecfg);
145 $in =
sizeof($itemlist);
146 $an = $areanum ? ceil($areanum/$areaadd) : 0;
149 for(
$i = 1;
$i < $in;
$i++) {
150 if(!empty($itemlist[
$i]) && strpos($itemlist[$i],
',')!==
false){
151 list($iarea,$imap,$inum,$iname,$ikind,$ieff,$ista,$iskind) = explode(
',',$itemlist[$i]);
152 if(($iarea == $an)||($iarea == 99)) {
153 for($j = $inum; $j>0; $j--) {
155 $rmap = rand(1,$plsnum-1);
156 while ($rmap==34){$rmap = rand(1,$plsnum-1);}
157 if(strpos($ikind ,
'TO')===0){
158 $tqry .=
"('$iname', '$ikind','$ieff','$ista','$iskind','$rmap'),";
160 $iqry .=
"('$iname', '$ikind','$ieff','$ista','$iskind','$rmap'),";
165 if(strpos($ikind ,
'TO')===0){
166 $tqry .=
"('$iname', '$ikind','$ieff','$ista','$iskind','$imap'),";
168 $iqry .=
"('$iname', '$ikind','$ieff','$ista','$iskind','$imap'),";
184 $iqry =
"INSERT INTO {$tablepre}mapitem (itm,itmk,itme,itms,itmsk,pls) VALUES ".substr($iqry, 0, -1);
188 $tqry =
"INSERT INTO {$tablepre}maptrap (itm,itmk,itme,itms,itmsk,pls) VALUES ".substr($tqry, 0, -1);
206 unset($itemlist);unset($iqry);
212 $sql = file_get_contents(
"{$sqldir}shopitem.sql");
213 $sql = str_replace(
"\r",
"\n", str_replace(
' bra_',
' '.$tablepre, $sql));
217 $file =
config(
'shopitem',$gamecfg);
220 foreach($shoplist as $lst){
221 if(!empty($lst) && strpos($lst,
',')!==
false){
222 list($kind,$num,$price,$area,$item,$itmk,$itme,$itms,$itmsk)=explode(
',',$lst);
224 $qry .=
"('$kind','$num','$price','$area','$item','$itmk','$itme','$itms','$itmsk'),";
229 $qry =
"INSERT INTO {$tablepre}shopitem (kind,num,price,area,item,itmk,itme,itms,itmsk) VALUES ".substr($qry, 0, -1);
240 list($sec,$min,$hour,$day,$month,$year,$wday,$yday,$isdst) = localtime($now);
244 if($startmode == 1) {
245 if($hour >= $starthour){ $nextday = $day+1;}
246 else{$nextday = $day;}
248 $starttime = mktime($nexthour,$startmin,0,$month,$nextday,$year);
249 }
elseif($startmode == 2) {
250 $starthour = $starthour> 0 ? $starthour : 1;
251 $startmin = $startmin> 0 ? $startmin : 1;
253 $starttime = mktime($nexthour,$startmin,0,$month,$day,$year);
254 }
elseif($startmode == 3) {
255 $starthour = $starthour> 0 ? $starthour : 1;
261 if($nextmin % 60 == 0){
264 $starttime = mktime($nexthour,$nextmin,0,$month,$day,$year);
275 global
$db,
$tablepre,
$now,
$gamestate,
$areaesc,
$arealist,
$areanum,
$arealimit,
$areaadd,
$plsinfo,
$weather,
$hack,
$validnum,
$alivenum,
$deathnum;
277 if (($gamestate > 10)&&($now > $atime)) {
279 if(($areanum >= $arealimit*$areaadd)&&($validnum<=0)) {
282 }
elseif(($areanum + $areaadd) >= $plsnum) {
283 $areaaddlist = array_slice($arealist,$areanum+1);
285 $weather = rand(0,9);
287 addnews($atime,
'addarea',$areaaddlist,$weather);
290 $query = $db->query(
"SELECT * FROM {$tablepre}players WHERE type=0 AND hp>0");
291 while($sub = $db->fetch_array($query)) {
295 $deathpls = $sub[
'pls'];
298 $db->query(
"UPDATE {$tablepre}players SET hp='$hp', bid='$bid', state='$state', endtime='$endtime' WHERE pid=$pid");
301 $db->free_result($query);
303 $dquery = $db->query(
"SELECT pid FROM {$tablepre}players WHERE hp<=0");
304 $deathnum = $db->num_rows($dquery);
305 $db->free_result($dquery);
309 $weather = rand(0,9);
310 if($hack > 0){$hack--;}
311 $areaaddlist = array_slice($arealist,$areanum+1,$areaadd);
315 addnews($atime,
'addarea',$areaaddlist,$weather);
318 $str_arealist = implode(
',',array_slice($arealist,0,$areanum+1));
319 $query = $db->query(
"SELECT * FROM {$tablepre}players WHERE pls IN ($str_arealist) AND hp>0");
320 while($sub = $db->fetch_array($query)) {
323 if(($gamestate >= 40)||(!$areaesc&&($sub[
'tactic']!=4))) {
326 $deathpls = $sub[
'pls'];
329 $db->query(
"UPDATE {$tablepre}players SET hp='$hp', bid='$bid', state='$state', endtime='$endtime' WHERE pid=$pid");
333 do{$pls = $arealist[rand($areanum+1,$plsnum)];}
while ($pls==34);
334 $db->query(
"UPDATE {$tablepre}players SET pls='$pls' WHERE pid=$pid ");
336 }
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) {
337 do{$pls = $arealist[rand($areanum+1,$plsnum)];}
while ($pls==34);
338 $db->query(
"UPDATE {$tablepre}players SET pls='$pls' WHERE pid=$pid");
341 $alivenum = $db->result($db->query(
"SELECT COUNT(*) FROM {$tablepre}players WHERE hp>0 AND type=0"), 0);
342 if(($alivenum == 1)&&($gamestate >= 30)) {
345 }
elseif(($alivenum <= 0)&&($gamestate >= 30)) {
362 $areaaddlist = array_slice($arealist,$areanum+1,$areaadd);
369 function duel($time = 0,$keyitm =
''){
373 }
elseif($gamestate >= 50) {
376 $time = $time == 0 ? $now : $time;
379 addnews($time,
'duelkey',$nick.
' '.$name,$keyitm);
388 function gameover($time = 0, $mode =
'', $winname =
'') {
389 global
$gamestate,
$winmode,
$alivenum,
$winner,
$now,
$gamenum,
$db,
$tablepre,
$gamenum,
$starttime,
$validnum,
$hdamage,
$hplayer;
390 if($gamestate < 10){
return;}
391 if((!$mode)||(($mode==2)&&(!$winname))) {
398 $result = $db->query(
"SELECT * FROM {$tablepre}players WHERE hp>0 AND type=0");
399 $alivenum = $db->num_rows(
$result);
403 }
elseif($alivenum == 1) {
405 $wdata = $db->fetch_array(
$result);
406 $winner = $wdata[
'name'];
407 $db->query(
"UPDATE {$tablepre}players SET state='5' where pid='{$wdata['pid']}'");
414 $winmode = substr($mode,3,1);
417 $time = $time ? $time :
$now;
418 $result = $db->query(
"SELECT gid FROM {$tablepre}winners ORDER BY gid DESC LIMIT 1");
419 if($db->num_rows(
$result)&&($gamenum <= $db->result(
$result, 0))) {
420 $gamenum = $db->result(
$result, 0) + 1;
424 $db->query(
"INSERT INTO {$tablepre}winners (gid,wmode,vnum,getime) VALUES ('$gamenum','$winmode','$validnum','$getime')");
425 }
elseif(($winmode == 0)||($winmode == 1)||($winmode == 6)){
429 $result = $db->query(
"SELECT name,killnum FROM {$tablepre}players WHERE type=0 order by killnum desc, lvl desc limit 1");
430 $hk = $db->fetch_array(
$result);
431 $hkill = $hk[
'killnum'];
433 $db->query(
"INSERT INTO {$tablepre}winners (gid,wmode,vnum,gtime,gstime,getime,hdmg,hdp,hkill,hkp) VALUES ('$gamenum','$winmode','$validnum','$gtime','$gstime','$getime','$hdamage','$hplayer','$hkill','$hkp')");
435 $result = $db->query(
"SELECT * FROM {$tablepre}players WHERE name='$winner' AND type=0");
437 $result2 = $db->query(
"SELECT motto FROM {$tablepre}users WHERE username='$winner'");
438 $pdata[
'motto'] = $db->result($result2, 0);
439 $result3 = $db->query(
"SELECT name,killnum FROM {$tablepre}players WHERE type=0 order by killnum desc, lvl desc limit 1");
440 $hk = $db->fetch_array($result3);
441 $pdata[
'hkill'] = $hk[
'killnum'];
442 $pdata[
'hkp'] = $hk[
'name'];
450 $db->query(
"INSERT INTO {$tablepre}winners (gid,name,pass,type,endtime,gd,sNo,icon,club,hp,mhp,sp,msp,att,def,pls,lvl,`exp`,money,bid,inf,rage,pose,tactic,killnum,killnum2,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,motto,wmode,vnum,gtime,gstime,getime,hdmg,hdp,hkill,hkp,wepsk,arbsk,arhsk,arask,arfsk,artsk,itmsk0,itmsk1,itmsk2,itmsk3,itmsk4,itmsk5,itmsk6) VALUES ('".$gamenum.
"','".
$pdata[
'name'].
"','".
$pdata[
'pass'].
"','".
$pdata[
'type'].
"','".
$pdata[
'endtime'].
"','".
$pdata[
'gd'].
"','".
$pdata[
'sNo'].
"','".
$pdata[
'icon'].
"','".
$pdata[
'club'].
"','".
$pdata[
'hp'].
"','".
$pdata[
'mhp'].
"','".
$pdata[
'sp'].
"','".
$pdata[
'msp'].
"','".
$pdata[
'att'].
"','".
$pdata[
'def'].
"','".
$pdata[
'pls'].
"','".
$pdata[
'lvl'].
"','".
$pdata[
'exp'].
"','".
$pdata[
'money'].
"','".
$pdata[
'bid'].
"','".
$pdata[
'inf'].
"','".
$pdata[
'rage'].
"','".
$pdata[
'pose'].
"','".
$pdata[
'tactic'].
"','".
$pdata[
'killnum'].
"','".
$pdata[
'killnum2'].
"','".
$pdata[
'state'].
"','".
$pdata[
'wp'].
"','".
$pdata[
'wk'].
"','".
$pdata[
'wg'].
"','".
$pdata[
'wc'].
"','".
$pdata[
'wd'].
"','".
$pdata[
'wf'].
"','".
$pdata[
'teamID'].
"','".
$pdata[
'teamPass'].
"','".
$pdata[
'wep'].
"','".
$pdata[
'wepk'].
"','".
$pdata[
'wepe'].
"','".
$pdata[
'weps'].
"','".
$pdata[
'arb'].
"','".
$pdata[
'arbk'].
"','".
$pdata[
'arbe'].
"','".
$pdata[
'arbs'].
"','".
$pdata[
'arh'].
"','".
$pdata[
'arhk'].
"','".
$pdata[
'arhe'].
"','".
$pdata[
'arhs'].
"','".
$pdata[
'ara'].
"','".
$pdata[
'arak'].
"','".
$pdata[
'arae'].
"','".
$pdata[
'aras'].
"','".
$pdata[
'arf'].
"','".
$pdata[
'arfk'].
"','".
$pdata[
'arfe'].
"','".
$pdata[
'arfs'].
"','".
$pdata[
'art'].
"','".
$pdata[
'artk'].
"','".
$pdata[
'arte'].
"','".
$pdata[
'arts'].
"','".
$pdata[
'itm0'].
"','".
$pdata[
'itmk0'].
"','".
$pdata[
'itme0'].
"','".
$pdata[
'itms0'].
"','".
$pdata[
'itm1'].
"','".
$pdata[
'itmk1'].
"','".
$pdata[
'itme1'].
"','".
$pdata[
'itms1'].
"','".
$pdata[
'itm2'].
"','".
$pdata[
'itmk2'].
"','".
$pdata[
'itme2'].
"','".
$pdata[
'itms2'].
"','".
$pdata[
'itm3'].
"','".
$pdata[
'itmk3'].
"','".
$pdata[
'itme3'].
"','".
$pdata[
'itms3'].
"','".
$pdata[
'itm4'].
"','".
$pdata[
'itmk4'].
"','".
$pdata[
'itme4'].
"','".
$pdata[
'itms4'].
"','".
$pdata[
'itm5'].
"','".
$pdata[
'itmk5'].
"','".
$pdata[
'itme5'].
"','".
$pdata[
'itms5'].
"','".
$pdata[
'itm6'].
"','".
$pdata[
'itmk6'].
"','".
$pdata[
'itme6'].
"','".
$pdata[
'itms6'].
"','".
$pdata[
'motto'].
"','".
$pdata[
'wmode'].
"','".
$pdata[
'vnum'].
"','".
$pdata[
'gtime'].
"','".
$pdata[
'gstime'].
"','".
$pdata[
'getime'].
"','".
$pdata[
'hdmg'].
"','".
$pdata[
'hdp'].
"','".
$pdata[
'hkill'].
"','".
$pdata[
'hkp'].
"','".
$pdata[
'wepsk'].
"','".
$pdata[
'arbsk'].
"','".
$pdata[
'arhsk'].
"','".
$pdata[
'arask'].
"','".
$pdata[
'arfsk'].
"','".
$pdata[
'artsk'].
"','".
$pdata[
'itmsk0'].
"','".
$pdata[
'itmsk1'].
"','".
$pdata[
'itmsk2'].
"','".
$pdata[
'itmsk3'].
"','".
$pdata[
'itmsk4'].
"','".
$pdata[
'itmsk5'].
"','".
$pdata[
'itmsk6'].
"')");
454 include_once
GAME_ROOT.
'./include/game/achievement.func.php';
464 addnews($time,
"end$winmode",$winner);
466 addnews($time,
'gameover' ,$gamenum);
468 include_once
'./include/news.func.php';
482 $movedata =
'<option value="main">■ 移动 ■<br />';
484 foreach($plsinfo as $key => $value) {
485 if(array_search($key,$arealist) > $areanum || $hack){
486 $movedata .=
"<option value=\"$key\"><!--{if \$pls == $key}--><--现在位置--><!--{else}-->$value($xyinfo[$key])<!--{/if}--><br />";
491 $areahtm =
GAME_ROOT.TPLDIR.
'/areainfo.htm';
492 $areadata =
'<span class="evergreen"><b>现在的禁区是:</b></span>';
494 $areadata .=
' '.$plsinfo[$arealist[
$i]];
496 $areadata .=
'<br><span class="evergreen"><b>下回的禁区是:</b></span>';
502 if($areanum < count($plsinfo)) {
503 $at= getdate($atime);
504 $nexthour = $at[
'hours'];$nextmin = $at[
'minutes'];
505 while($nextmin >= 60){
506 $nexthour +=1;$nextmin -= 60;
508 if($nexthour >= 24){$nexthour-=24;}
509 $areadata .=
"<b>{$nexthour}时{$nextmin}分:</b> ";
511 $areadata .=
' '.$plsinfo[$arealist[$areanum+
$i]].
' ';
514 if($areanum+$areaadd < count($plsinfo)) {
515 $at2= getdate($atime + $areahour*60);
516 $nexthour2 = $at2[
'hours'];$nextmin2 = $at2[
'minutes'];
517 while($nextmin2 >= 60){
518 $nexthour2 +=1;$nextmin2 -= 60;
520 if($nexthour2 >= 24){$nexthour2-=24;}
521 $areadata .=
";<b>{$nexthour2}时{$nextmin2}分:</b> ";
523 $areadata .=
' '.$plsinfo[$arealist[$areanum+$areaadd+
$i]].
' ';
526 if($areanum+$areaadd*2 < count($plsinfo)) {
527 $at3= getdate($atime + $areahour*120);
528 $nexthour3 = $at3[
'hours'];$nextmin3 = $at3[
'minutes'];
529 while($nextmin3 >= 60){
530 $nexthour3 +=1;$nextmin3 -= 60;
532 if($nexthour3 >= 24){$nexthour3-=24;}
533 $areadata .=
";<b>{$nexthour3}时{$nextmin3}分:</b> ";
535 $areadata .=
' '.$plsinfo[$arealist[$areanum+$areaadd*2+
$i]].
' ';
542 function addnpc($type,$sub,$num,$time = 0) {
543 global
$now,
$db,
$tablepre,
$log,
$plsinfo,
$typeinfo,
$anpcinfo,
$npcinit,
$arealist,
$areanum,
$gamecfg;
544 $time = $time == 0 ? $now : $time;
546 if(empty($anpcinfo) || empty($npcinit)){
547 include_once
config(
'addnpc',$gamecfg);
549 $npc=array_merge($npcinit,$anpcinfo[$type]);
556 $npc = array_merge($npc,$npc[
'sub'][$sub]);
557 $npc[
'type'] = $type;
558 $npc[
'endtime'] = $time;
559 $npc[
'exp'] = round(($npc[
'lvl']*2+1)*$GLOBALS[
'baseexp']);
561 $npc[
'hp'] = $npc[
'mhp'];
562 $npc[
'sp'] = $npc[
'msp'];
563 if(!isset($npc[
'state'])){$npc[
'state'] = 0;}
564 foreach(Array(
'p',
'k',
'g',
'c',
'd',
'f') as $val){
566 $npc[
'w'.$val] = $npc[
'skill'];
570 if($npc[
'gd'] ==
'r'){$npc[
'gd'] = rand(0,1) ?
'm':
'f';}
571 if($npc[
'pls'] == 99){
572 $areaarr = array_slice($arealist,$areanum+1);
581 $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,itm6,itmk6,itme6,itms6,wepsk,arbsk,arhsk,arask,arfsk,artsk,itmsk0,itmsk1,itmsk2,itmsk3,itmsk4,itmsk5,itmsk6) 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[
'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'].
"')");
582 $newsname=$typeinfo[$type].
' '.$npc[
'name'];
584 addnews($now,
'addnpc', $newsname);
587 if($num > $npc[
'num']){
589 $newsname=$typeinfo[$type];
604 if(!$type || !$name){
return false;}
605 if(empty($enpcinfo)){
606 include_once
config(
'evonpc',$gamecfg);
608 if(!isset($enpcinfo[$type])){
return false;}
609 $result = $db->query(
"SELECT * FROM {$tablepre}players WHERE type = '$type' AND name = '$name'");
611 if(!$num){
return false;}
612 if(!isset($enpcinfo[$type][$name])){
return false;}
613 $npc=$enpcinfo[$type][$name];
614 $npc[
'hp'] = $npc[
'mhp'];
615 $npc[
'sp'] = $npc[
'msp'];
616 $npc[
'exp'] = round(($npc[
'lvl']*2+1)*$GLOBALS[
'baseexp']);
617 if(!isset($npc[
'state'])){$npc[
'state'] = 0;}
618 $npc[
'wp'] = $npc[
'wk'] = $npc[
'wg'] = $npc[
'wc'] = $npc[
'wd'] = $npc[
'wf'] = $npc[
'skill'];
619 unset($npc[
'skill']);
621 foreach($npc as $key => $val){
622 $qry .=
"$key = '{$val}',";
625 $qry = substr($qry,0,-1);
626 $db->query(
"UPDATE {$tablepre}players SET $qry WHERE type = '$type' AND name = '$name'" );
634 if(empty($timelimit)){
638 $deadline=$now-$timelimit;
639 $result = $db->query(
"SELECT * FROM {$tablepre}players WHERE type=0 AND endtime < '$deadline' AND hp>'0' AND state<'10'");
640 while($al = $db->fetch_array(
$result)) {
641 $afkerlist[$al[
'pid']]=Array(
'name' => $al[
'name'] ,
'pls' => $al[
'pls']);
644 if(empty($afkerlist)){
return;}
645 foreach($afkerlist as $kid => $kcontent){
646 $db->query(
"UPDATE {$tablepre}players SET hp='0',state='32' WHERE pid='$kid' AND type='0' AND hp>'0' AND state<'10'");
647 if($db->affected_rows()){
648 addnews($now,
'death32',$kcontent[
'name'],
'',$kcontent[
'pls']);
661 $clist = $creditlist = $updatelist = Array();
662 $result = $db->query(
"SELECT * FROM {$tablepre}users RIGHT JOIN {$tablepre}players ON {$tablepre}players.name={$tablepre}users.username WHERE {$tablepre}players.type='0'");
663 while($data = $db->fetch_array(
$result)){
664 $clist[$data[
'name']] = $data;
666 foreach($clist as $key => $val){
668 $credits2 = $val[
'credits2'] + 10;
669 $validgames = $val[
'validgames'] + 1;
670 $wingames = $key == $winner ? $val[
'wingames'] + 1 : $val[
'wingames'];
671 $updatelist[$key] = Array(
674 'credits2' => $credits2,
676 'validgames' => $validgames,
679 $db->multi_update(
"{$tablepre}users", $updatelist,
'username');
683 $db->multi_update(
"{$tablepre}users", $updatelist2,
'username');
750 elseif($data[
'hp']>0){$up = 25;}
752 if($data[
'killnum']){
753 $up += $data[
'killnum'] * 2;
756 $up += round($data[
'lvl'] /2);
760 $skill = array ($data[
'wp'] , $data[
'wk'] , $data[
'wg'] , $data[
'wc'] , $data[
'wd'] , $data[
'wf']);
762 $maxskill = $skill[0];
763 $up += round($maxskill / 25);
764 $up += round($data[
'money']/500);
775 $gbfile =
GAME_ROOT.TPLDIR.
'/lastgb.htm';
776 if(!in_array(
$winmode,Array(2,3,5,7))){
777 $gblog .=
'无人获胜,全部切糕被冴冴吃掉!';
780 $result = $db->query(
"SELECT * FROM {$tablepre}gambling WHERE 1");
785 $bwlist = $updatelist = Array();
786 $bpool = $bwsum = $bwsum2 = 0;
787 while($bdata = $db->fetch_array(
$result)){
788 if($bdata[
'bname'] ==
$winner){
789 $bwlist[$bdata[
'uname']] = $bdata;
790 $bwsum += $bdata[
'wager'];
791 $bwsum2 += $bdata[
'wager'] * $bdata[
'odds'];
793 $bpool += $bdata[
'wager'];
798 $creditsum = $apmnum = 0;
799 foreach($clist as $cdata){
800 $creditsum += $cdata[
'credits'];
801 $apm = $cdata[
'deathtime'] > $cdata[
'validtime'] ? $cdata[
'cmdnum'] / ($cdata[
'deathtime'] - $cdata[
'validtime']) : $cdata[
'cmdnum'] / ($now - $cdata[
'validtime']);
802 if($apm >= 1){$apmnum ++;}
806 if($avrcredit > 10000){$creditodds = 1.25;}
807 else{$creditodds = round((1 + $avrcredit / 40000)*1000)/1000;}
808 $apmodds = round(pow(1.02,$apmnum)*1000)/1000;
809 $timeodds = 1.2 - $areanum/$areaadd * 0.1;
810 if($timeodds < 0.8){$timeodds = 0.8;}
824 $bpool = round($bpool * $creditodds * $apmodds * $timeodds);
825 $gblog =
'奖池:'.$obpool.
' * '.$creditodds.
' * '.$apmodds.
' * '.$timeodds.
' = '.$bpool.
'<br>';
827 $bnlist = array_keys($bwlist);
828 $bnstr =
"('".implode(
"','",$bnlist).
"')";
829 $result2 = $db->query(
"SELECT uid,username,credits2 FROM {$tablepre}users WHERE username IN $bnstr");
830 while(
$udata = $db->fetch_array($result2)){
831 $bwlist[
$udata[
'username']][
'credits2'] = $udata[
'credits2'];
833 if($bwsum >= $bpool){
834 $gblog .=
'奖池少于本金,系统资助判断正确者取回本金。';
835 foreach($bwlist as $key => $val){
836 $bwlist[$val[
'uname']][
'crup'] = 0;
837 $bwlist[$val[
'uname']][
'crrst'] = $val[
'wager'];
838 $credits2 = $val[
'credits2'] + $val[
'wager'];
839 $updatelist[$key] = Array(
'username' => $key,
'credits2' => $credits2);
842 $ext = $bpool - $bwsum;
843 foreach($bwlist as $key => $val){
844 $crup = ceil($ext * 0.9 * $val[
'wager'] * $val[
'odds'] / $bwsum2);
845 $bwlist[$val[
'uname']][
'crup'] = $crup;
846 $bwlist[$val[
'uname']][
'crrst'] = $val[
'wager'] + $crup;
847 $credits2 = $val[
'credits2'] + $val[
'wager'] + $crup;
848 $updatelist[$key] = Array(
'username' => $key,
'credits2' => $credits2);
850 $wcrup = ceil($ext * 0.1);
851 $bwlist[] = Array(
'uname' =>
'获胜者',
'wager' =>
'',
'bname' =>
'',
'odds' =>
'',
'crup' => $wcrup,
'crrst' => $wcrup);
852 if(is_array($updatelist) && isset($updatelist[
$winner][
'credits2'])){
853 $updatelist[
$winner][
'credits2'] += $wcrup;
855 $result3 = $db->query(
"SELECT uid,username,credits2 FROM {$tablepre}users WHERE username='$winner'");
856 $wdata = $db->fetch_array($result3);
857 $updatelist[
$winner] = Array(
'username' => $winner,
'credits2' => $wdata[
'credits2'] + $wcrup);
868 $gblog .=
'无判断正确者,奖池的20%归获胜者。';
869 $wcrup = ceil($bpool * 0.2);
870 $bwlist[] = Array(
'uname' =>
'获胜者',
'wager' =>
'',
'bname' =>
'',
'odds' =>
'',
'crup' => $wcrup,
'crrst' => $wcrup);
871 if(is_array($updatelist) && isset($updatelist[
$winner][
'credits2'])){
872 $updatelist[
$winner][
'credits2'] += $wcrup;
874 $result3 = $db->query(
"SELECT uid,username,credits2 FROM {$tablepre}users WHERE username='$winner'");
875 $wdata = $db->fetch_array($result3);
876 $updatelist[
$winner] = Array(
'username' => $winner,
'credits2' => $wdata[
'credits2'] + $wcrup);
882 include
template(
'gbresult');
883 $gbresult = ob_get_contents();
duel($time=0, $keyitm= '')
systemputchat($time, $type, $msg= '')
writeover($filename, $data, $method="rb+", $iflock=1, $check=1, $chmod=1)
if(!defined('IN_GAME')) $hdamage
if(!defined('IN_GAME')) nparse_news($start=0, $range=0)
addnpc($type, $sub, $num, $time=0)
gameover($time=0, $mode= '', $winname= '')
addnews($t=0, $n= '', $a='', $b='', $c= '', $d= '', $e= '')
check_end_achievement($w, $m)
【生存者数:<?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(!$db->num_rows($result)) $pdata
if(!defined('IN_GAME')) rs_game($mode=0)
config($file= '', $cfg=1)
gexit($message= '', $file= '', $line=0)
storyputchat($time, $type)
if(!$db->num_rows($result)) $udata
if(!$cuser||!$cpass) $result
get_gambling_result($clist, $winner='', $winmode='')
get_credit_up($data, $winner= '', $winmode=0)