Commit 017671f5 authored by hisuinohoshi's avatar hisuinohoshi

Add sponsor(?) & findneut

update:{...}
新增了有钱真的可以为所欲为的场外援助系统;
新增了用于配送道具的快递员NPC;
新增了玩家与中立/友好NPC的互动功能与界面。暂时只会在遇到快递员取货时触发。偶像大师应该会用到这个功能;
新增了一个用于登记NPC死亡时会触发事件的函数check_kill_events();
为商店界面添加了tooltip支持;
为gambling表添加了字段'bnid';
修改了初始化npc、addnpc的部分逻辑,现在可以在编辑npc配置文件时定义社团参数等后添加的字段了。
修改了探索时遇敌的概率判定逻辑,可能可以改善目前尸体发现率过低的问题;
后台管理界面在编辑玩家/NPC时可以编辑社团相关参数了;
挪动了一些常用函数的位置;
天然呆修正;
parent 7a730329
......@@ -3,6 +3,7 @@
define('CURSCRIPT', 'alive');
require './include/common.inc.php';
require './include/game/special.func.php';
//extract(gkillquotes($_POST));
//unset($_GET);
......@@ -31,6 +32,23 @@ while($apdata = $db->fetch_array($result)) {
$adata = Array();
if($gamblingon){
//允许购买投资物品的商店类型
$gshoplist = Array
(
1=>'■ 补给品 ■',2=>'■ 药剂 ■',3=>'■ 钝器 ■',
4=>'■ 锐器 ■',5=>'■ 远程兵器 ■',6=>'■ 投掷兵器 ■',
7=>'■ 爆炸物 ■',8=>'■ 灵力兵器材料 ■',9=>'■ 防具 ■',
10=>'■ 书籍 ■',11=>'■ 电子装备 ■',12=>'■ 杂物 ■',
17=>'■ 限量福袋 ■',13=>'■ 埃克法轻工特供武器 ■',14=>'■ 林苍月的提示 ■',
15=>'■ Key社纪念品专卖 ■',16=>'■ NPC解锁钥匙 ■',18=>'■ 上级者向物品 ■',
);
//切糕与游戏币的兑换比率:1切糕=2块钱
$credits2_values = 2;
//不能赞助自己 1:启用 0:关闭
$no_self_sponsored = 0;
//赞助者的头衔
$sponsor_title = '场外热心玩家';
//初始化赌局变量
$gbinfo = '';
$gbingdata = $gbeddata = $gambled = Array();
$gbpool = 0;
......@@ -58,40 +76,131 @@ if($gamblingon){
// $ad['odds'] = podds($ad);
}
//判断是否满足下注条件
if($cuser && $cpass){
if($cuser && $cpass)
{
if($gamestate < 20) { $gbinfo .= $_ERROR['no_start']; }
//elseif($now - $starttime >= 600) { $gbinfo .= '游戏开始超过10分钟,不可进行下注!'; }
elseif($areanum >= $areaadd) { $gbinfo .= '游戏超过一禁,不可进行下注!'; }
elseif($gamestate >= 30) { $gbinfo .= '游戏已停止激活,不可进行下注!'; }
elseif($gbmode=='gamble' && $now - $starttime >= 600) { $gbinfo .= '游戏开始超过10分钟,不可进行下注!'; }
elseif($gbmode=='gamble' && $areanum >= $areaadd) { $gbinfo .= '游戏超过一禁,不可进行下注!'; }
elseif($gamestate >= 30) { $gbinfo .= '游戏已停止激活,不可进行下注或赞助!'; }
elseif($gbpool >= 8000 && $wager>50) { $gbinfo .= '本局总奖池已经超过8000切糕上限,此时每人最多只能下注50切糕!'; }
else{
else
{
$uresult = $db->query("SELECT * FROM {$tablepre}users WHERE username='$cuser'");
if(!$db->num_rows($uresult)) { $gbinfo .= $_ERROR['login_check']; }
else{
if(!$db->num_rows($uresult))
{
$gbinfo .= $_ERROR['login_check'];
}
else
{
$udata = $db->fetch_array($uresult);
if($udata['password'] != $cpass) { $gbinfo .= $_ERROR['wrong_pw']; }
elseif($udata['groupid'] <= 0) { $gbinfo .= $_ERROR['user_ban']; }
elseif($alivenum <= 0){ $gbinfo .= '当前生存人数为0,无法下注!';}
else{
elseif($alivenum <= 0){ $gbinfo .= '当前生存人数为0,无法下注!<br>';}
else
{
$uid = $udata['uid'];$uname = $udata['username'];
$credits2 = $udata['credits2'];
if($gbmode == 'gamble'){
$wager = ceil((int)$wager);
if(!$bet || $bet == 'none'){ $gbinfo .= '投注对象有误,请检查输入。';}
elseif($wager <= 0){ $gbinfo .= '投注数额有误,请检查输入。';}
elseif($wager > $credits2 || $wager > 1000 ){ $gbinfo .= '投注数额过大。每人每局最多只能投注总计不超过1000切糕。';}
elseif ($gbpool >= 8000 && $wager > 50) { $gbinfo .= '本局总奖池已经超过8000切糕上限,此时每人最多只能下注50切糕!'; }
else{
$bet = (int)$bet;
$bresult = $db->query("SELECT * FROM {$tablepre}players LEFT JOIN {$tablepre}users ON {$tablepre}players.name={$tablepre}users.username WHERE {$tablepre}players.pid='$bet'");
if(!$db->num_rows($bresult)) { $gbinfo .= '投注对象不存在。'; }
else{
$bdata = $db->fetch_array($bresult);
$bname = $bdata['name'];
if($bdata['hp'] <= 0 || $bdata['state'] >= 10) {$gbinfo .= '投注对象已死亡,无法下注。'; }
elseif($bdata['type'] >=1) {$gbinfo .= '投注对象不是人类!'; }
if(isset($gbmode) && $gbmode!=='none')
{
//脑瓜子嗡嗡的……连goto都用上了
if(!$bet || $bet == 'none')
{
$gbinfo .= '选择对象有误,请检查输入。<br>';
goto gb_result;
}
$bresult = $db->query("SELECT * FROM {$tablepre}players LEFT JOIN {$tablepre}users ON {$tablepre}players.name={$tablepre}users.username WHERE {$tablepre}players.pid='$bet'");
if(!$db->num_rows($bresult))
{
$gbinfo .= '选择的对象不存在。<br>';
goto gb_result;
}
$bdata = $db->fetch_array($bresult);
if($bdata['hp'] <= 0 || $bdata['state'] >= 10)
{
$gbinfo .= '选择的对象已死亡,无法下注或赞助。';
goto gb_result;
}
if($bdata['type'] >=1)
{
$gbinfo .= '选择的对象不是玩家!';
goto gb_result;
}
$bet = (int)$bet;
$bname = $bdata['name']; $bid = $bdata['pid'];
$gbudata = $gbeddata[$udata['uid']];
if($no_self_sponsored && $bname==$uname)
{
$gbinfo .= '不能给自己下注或赞助!<br>';
goto gb_result;
}
if($gbmode == 'gsponsor')
{
//使用切糕点外卖
if ($gbudata['bitm'] || $gbudata['bnid'] )
{
$gbinfo .= '你派出去的快递员还没回来,耐心等等吧!<br>';
goto gb_result;
}
$iresult=$db->query("SELECT * FROM {$tablepre}shopitem WHERE sid = '$gbid'");
$iteminfo = $db->fetch_array($iresult);
$bnum = (int)$gbinum;
if(!$iteminfo)
{
$gbinfo .= '要购买的道具不存在!<br><br>';
goto gb_result;
}
if($iteminfo['num'] <= 0) {
$gbinfo .= '此物品已经售空!<br><br>';
goto gb_result;
} elseif($bnum<=0) {
$gbinfo .= '购买数量必须为大于0的整数。<br><br>';
goto gb_result;
} elseif($bnum>$iteminfo['num']) {
$gbinfo .= '购买数量必须小于存货数量。<br><br>';
goto gb_result;
} elseif($credits2*$credits2_values < $iteminfo['price']*$bnum) {
$gbinfo .= '切糕不足,不能购买此物品!<br><br>';
goto gb_result;
} elseif(!preg_match('/^(WC|WD|WF|Y|B|C|TN|GB|H|V|M)/',$iteminfo['itmk'])&&$bnum>1) {
$gbinfo .= '此物品一次只能购买一个。<br><br>';
goto gb_result;
}elseif($iteminfo['area']> $areanum/$areaadd){
$gbinfo .= '此物品尚未开放出售!<br><br>';
goto gb_result;
}
$inum = $iteminfo['num']-$bnum;
$sid = $iteminfo['sid'];
//扣除商店库存
$db->query("UPDATE {$tablepre}shopitem SET num = '$inum' WHERE sid = '$sid'");
//扣除切糕
$cost_credits2 = round($iteminfo['price']*$bnum/$credits2_values);
$credits2 -= $cost_credits2;
$db->query("UPDATE {$tablepre}users SET credits2='$credits2' WHERE uid='$uid'");
//发news
$gbinfo .= "花费{$cost_credits2}切糕购买了{$bnum}{$iteminfo['item']}。<br>";
addnews($now,'gpost',$sponsor_title.' '.$udata['username'],$iteminfo['item'],$bdata['nick'].' '.$bdata['name'],$plsinfo[$bdata['pls']],$bnum);
//打包快递给快递员 返回新生成的快递员pid
$gclb = Array('clbpara'=>Array('sponsor'=>$uid,'post'=>$bet,'postid'=>6),); //记录赞助者的uid、收货方的pid、道具位置
$gitem = Array(6,$iteminfo['item'],$iteminfo['itmk'],$iteminfo['itme'],$iteminfo['itms']*$bnum,$iteminfo['itmsk']);//打包快递
include_once GAME_ROOT.'./include/system.func.php';
$nid = addnpc(90,0,1,$now,$gclb,$gitem,$bdata['pls'])[0];
$gbinfo .= "快递员已带着你赞助的商品前往{$bdata['name']}所在的{$plsinfo[$bdata['pls']]}!谢谢惠顾~<br>";
//存一条发快递记录到gambling表里,一个玩家在快递被接收前不能发第二份快递。防止有人狂买低价商品挤爆players表。
//有过投注记录
if($gbnum && isset($gbeddata[$udata['uid']])) $db->query("UPDATE {$tablepre}gambling SET bnid='$nid' WHERE uid='$uid'");
//没有投注记录,新生成一条
else $db->query("INSERT INTO {$tablepre}gambling (uid,uname,bnid) VALUES ('$uid','$uname','$nid')");
}
elseif($gbmode == 'gamble')
{
//使用切糕刚不灵
$wager = ceil((int)$wager);
if($wager > $credits2 || $wager > 1000 ){ $gbinfo .= '投注数额过大。每人每局最多只能投注总计不超过1000切糕。';}
elseif ($gbpool >= 8000 && $wager > 50) { $gbinfo .= '本局总奖池已经超过8000切糕上限,此时每人最多只能下注50切糕!'; }
else
{
if($wager <= 0){ $gbinfo .= '投注数额有误,请检查输入。';}
elseif($gbnum && isset($gbeddata[$udata['uid']])){//已经下注
$gbudata = $gbeddata[$udata['uid']];
if ($gbudata['wager'] + $wager > 1000 )
{
$gbinfo .= '投注数额过大。每人每局最多只能投注总计不超过1000切糕。';
......@@ -100,11 +209,11 @@ if($gamblingon){
{
$gbinfo .= '本局总奖池已经超过8000切糕上限,此时每人最多只能下注50切糕!';
}
else if($gbudata['bid'] != $bet){$gbinfo .= '追加切糕的对象必须跟之前相同。';}
else if($gbudata['bid'] != $bet && $gbudata['bid'] != 0){$gbinfo .= '追加切糕的对象必须跟之前相同。';}
else{
$bwager = $gbudata['wager'] + $wager;
$odds = ($gbudata['wager'] * $gbudata['odds'] + $nowodds * $wager)/$bwager;
$db->query("UPDATE {$tablepre}gambling SET wager='$bwager',odds='$odds' WHERE uid='$uid'");
$db->query("UPDATE {$tablepre}gambling SET bid='$bet',bname='$bname',wager='$bwager',odds='$odds' WHERE uid='$uid'");
if($db->affected_rows() == 1){
$gbeddata[$udata['uid']]['wager']+=$wager;
//$gbeddata[$udata['uid']]['odds']=$odds;
......@@ -141,15 +250,16 @@ if($gamblingon){
}
}
}
gb_result:
if($gbnum && isset($gbeddata[$udata['uid']])){
$gbudata = $gbeddata[$udata['uid']];
$gbinfo .= '你已下注,对象为:'.$gbudata['bname'].',切糕为:'.$gbudata['wager'].';';
//var_dump($gbeddata[$udata['uid']]);
if($gbudata['wager']>0) $gbinfo .= '<span class=\'yellow\'>你已下注,对象为:'.$gbudata['bname'].',下注的切糕为:'.$gbudata['wager'].';</span><br>';
if($gbudata['bnid']>0) $gbinfo .= '<span class=\'yellow\'>你赞助的包裹尚在运输途中!</span><br>';
$gbact = 1;
}else{
$gbinfo .= '你尚未下注。';
$gbinfo .= '<span class=\'grey\'>你尚未下注或投资。</span>';
$gbact = 0;
}
}
}
}
}
......
......@@ -102,6 +102,20 @@ if((strpos($action,'corpse')===0 || strpos($action,'pacorpse')===0) && $gamestat
}
}
}
elseif((strpos($action,'neut')===0)){
$nid = str_replace('neut','',$action);
if($nid){
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$nid' AND hp>0");
if($db->num_rows($result)>0){
$edata = $db->fetch_array($result);
include_once GAME_ROOT.'./include/game/revcombat.func.php';
findneut($edata,1);
extract($edata,EXTR_PREFIX_ALL,'w');
init_battle(1);
$main = 'battle';
}
}
}
if($hp > 0 && $coldtimeon && $showcoldtimer && $rmcdtime){$log .= "行动冷却时间:<span id=\"timer\" class=\"yellow\">0.0</span>秒<script type=\"text/javascript\">demiSecTimerStarter($rmcdtime);</script><br>";}
if ($club==0)
......
......@@ -1684,6 +1684,73 @@ $anpcinfo = array
),
),
90 => array
(
'mode' => 2,
'num' => 1,
'pass' => 'bra',
'club' => 0,
'bid' => 0,
'inf' => '',
'rage' => 0,
'pose'=> 3,
'tactic' => 2,
'killnum' => 0,
'teamID' => '',
'teamPass' => '',
'gd' => 'f',
'pls' => 99,
'mhp' => 520,
'msp' => 200,
'att' => 80,
'def' => 233,
'lvl' => 23,
'skill' => 77,
'money' => 250,
'arb' => '黄色的冲锋衣',
'arbk' => 'DB',
'arbe' => 25,
'arbs' => 50,
'arh' => '黄色的骑行头盔',
'arhk' => 'DH',
'arhe' => 25,
'arhs' => 50,
'ara' => '智能手环',
'arak' => 'DA',
'arae' => 25,
'aras' => 50,
'arf' => '运动鞋',
'arfk' => 'DF',
'arfe' => 25,
'arfs' => 50,
'art' => '快递单',
'artk' => 'A',
'arte' => 1,
'arts' => 1,
'artsk' => 'z',
'itm4' => '锅?',
'itmk4' => 'Y',
'itme4' => 1,
'itms4' => 1,
'itm5' => '压缩饼干',
'itmk5' => 'HB',
'itme5' => 35,
'itms5' => 10,
'sub' => array
(
0 => array
(
'name' => '迷之搬运工',
'icon' => 10,
'wep' => '大喇叭',
'wepk' => 'WP',
'wepe' => 25,
'weps' => 75,
'wepsk' => 'w',
),
),
),
92 => array
(
'mode' => 2,
......
......@@ -48,9 +48,9 @@ $mixinfo = array
array('class' => 'wp', 'stuff' => array('☆法式长棍面包☆','水'),'result' => array('法式面包棍棒','WP',120,25,'NRz'),),
array('class' => 'wp', 'stuff' => array('棍棒','岩石','钉','毒药'),'result' => array('绽花毒藤','WKP',180,150,'Np'),),
array('class' => 'wp', 'stuff' => array('向日葵','月光碎片','铁链','超级重锤'),'result' => array('太极','WP',180,150,'Nwc'),),
array('class' => 'wp', 'stuff' => array('红宝石方块','制御棒','延展御柱','夜雀歌谱'),'result' => array('晨星链刃','WKP',827,260,'rdfc'),),
array('class' => 'wp', 'stuff' => array('岩石','火把','阔剑地雷'),'result' => array('阳炎之怒','WP',188,30,'du'),),
array('class' => 'wp', 'stuff' => array('阳炎之怒','雏人型','祝福宝石'),'result' => array('风滚草','WP',156,77,'rcd'),),
array('class' => 'wp', 'stuff' => array('红宝石方块','★制御棒★','『延展御柱』','夜雀歌谱'),'result' => array('晨星链刃','WKP',827,260,'rdfc'),),
array('class' => 'wp', 'stuff' => array('岩石','火把','★阔剑地雷★'),'result' => array('阳炎之怒','WP',188,30,'du'),),
array('class' => 'wp', 'stuff' => array('阳炎之怒','雏人形','『祝福宝石』'),'result' => array('风滚草','WP',156,77,'rcd'),),
array('class' => 'wp', 'stuff' => array('风滚草','晨星链刃','太极','海胆链球'),'result' => array('龙魂破','WKP',6600,2200,'ZrdfN'),),
array('class' => 'wg', 'stuff' => array('火把','红宝石方块','某种电子零件'),'result' => array('『红石电路』','X',1,1,''),),
......
......@@ -86,7 +86,7 @@ $typeinfo = Array(
89=>'残像回声',
90=>'各路党派',
91=>'各路党派',
92=>'种火'
92=>'种火',
);
$killmsginfo = Array(
0=>'',
......@@ -942,6 +942,7 @@ $iteminfo = Array(//注意顺序,AB必须在A的前面,以此类推
//'R' => '探测仪器',
'ss' => '歌词卡片',
'T' => '陷阱',
'U' => '扫雷设备',
'V'=> '技能书籍',
'VV'=> '技能书籍',
'WN' => '空手',#空手
......
......@@ -13,6 +13,7 @@ input {cursor: crosshair;}
.subtitle {font-family: "微软雅黑"; margin: 6px;color: #cceafa; width: 100%;font-size: 24px;font-weight:400;}
.headerlink{}
.small {font-size: 9pt}
.center-text {text-align: center;}
.ver a{font:bold 10pt "Viner Hand ITC","隶书" serif;color:#ff0000;}
.b1 {background-color:rgba(225, 124, 226, 0.6); *BACKGROUND: rgb(98,135,163); *filter:alpha(opacity=60); BORDER: #000 0px none; TEXT-ALIGN: center; COLOR: #fff; border-right: #111 1px solid; border-bottom: #111 1px solid;font:bold 10pt "微软雅黑" serif;}
.b2 {background-color:rgba(225, 124, 226, 0.6); *BACKGROUND: rgb(98,135,163); *filter:alpha(opacity=80); BORDER: #000 0px none; TEXT-ALIGN: center; COLOR: #fff; border-right: #111 1px solid;font:10pt "微软雅黑" serif;}
......@@ -99,6 +100,8 @@ table.admin td.tdtitle {
.evergreen{color:#98fb98;font: bold 10pt "微软雅黑" serif;line-height:16px}
.evergreen2{color:#98fb98;font:18pt "微软雅黑" serif;}
.lightgreen{color:#8AE234;font: bold 10pt "微软雅黑" serif;line-height:16px}
.magenta{color:#FF00FF;font: bold 10pt "微软雅黑" serif;line-height:16px}
.sienna{color:#EE7942;font: bold 10pt "微软雅黑" serif;line-height:16px}
.dmg {color:#ff0000;font: bold 10pt "微软雅黑" serif;}
.grey{color:#999; font: bold 10pt "微软雅黑" serif;line-height:16px}
.linen{color:rgb(200,192,184); font: bold 10pt "微软雅黑" serif;line-height:16px}
......
......@@ -101,6 +101,6 @@ CREATE TABLE bra_gambling (
bname char(15) NOT NULL default '',
wager int unsigned NOT NULL default '0',
odds decimal(8,4) unsigned NOT NULL default '0',
bnid smallint unsigned NOT NULL default '0',
PRIMARY KEY (gid)
) ENGINE=MyISAM;
\ No newline at end of file
......@@ -118,7 +118,8 @@ if($command == 'kill' || $command == 'live' || $command == 'del') {
}
}
} elseif($command == 'submitedit') {
$db->query("UPDATE {$tablepre}players SET gd='$gd',icon='$icon',club='$club',sNo='$sNo',hp='$hp',mhp='$mhp',sp='$sp',msp='$msp',att='$att',def='$def',pls='$pls',lvl='$lvl',exp='$exp',money='$money',bid='$bid',inf='$inf',rage='$rage',pose='$pose',tactic='$tactic',killnum='$killnum',wp='$wp',wk='$wk',wg='$wg',wc='$wc',wd='$wd',wf='$wf',teamID='$teamID',teamPass='$teamPass',wep='$wep',wepk='$wepk',wepe='$wepe',weps='$weps',wepsk='$wepsk',arb='$arb',arbk='$arbk',arbe='$arbe',arbs='$arbs',arbsk='$arbsk',arh='$arh',arhk='$arhk',arhe='$arhe',arhs='$arhs',arhsk='$arhsk',ara='$ara',arak='$arak',arae='$arae',aras='$aras',arask='$arask',arf='$arf',arfk='$arfk',arfe='$arfe',arfs='$arfs',arfsk='$arfsk',art='$art',artk='$artk',arte='$arte',arts='$arts',artsk='$artsk',itm0='$itm0',itmk0='$itmk0',itme0='$itme0',itms0='$itms0',itmsk0='$itmsk0',itm1='$itm1',itmk1='$itmk1',itme1='$itme1',itms1='$itms1',itmsk1='$itmsk1',itm2='$itm2',itmk2='$itmk2',itme2='$itme2',itms2='$itms2',itmsk2='$itmsk2',itm3='$itm3',itmk3='$itmk3',itme3='$itme3',itms3='$itms3',itmsk3='$itmsk3',itm4='$itm4',itmk4='$itmk4',itme4='$itme4',itms4='$itms4',itmsk4='$itmsk4',itm5='$itm5',itmk5='$itmk5',itme5='$itme5',itms5='$itms5',itmsk5='$itmsk5',itm6='$itm6',itmk6='$itmk6',itme6='$itme6',itms6='$itms6',itmsk6='$itmsk6' where pid='$pid'");
if(is_array($clbpara)) $clbpara = json_encode($clbpara);
$db->query("UPDATE {$tablepre}players SET gd='$gd',icon='$icon',club='$club',sNo='$sNo',hp='$hp',mhp='$mhp',sp='$sp',msp='$msp',att='$att',def='$def',pls='$pls',lvl='$lvl',exp='$exp',clbstatusa='$clbstatusa',clbstatusb='$clbstatusb',clbstatusc='$clbstatusc',clbstatusd='$clbstatusd',clbstatuse='$clbstatuse',clbpara='$clbpara',money='$money',bid='$bid',inf='$inf',rage='$rage',pose='$pose',tactic='$tactic',killnum='$killnum',wp='$wp',wk='$wk',wg='$wg',wc='$wc',wd='$wd',wf='$wf',teamID='$teamID',teamPass='$teamPass',wep='$wep',wepk='$wepk',wepe='$wepe',weps='$weps',wepsk='$wepsk',arb='$arb',arbk='$arbk',arbe='$arbe',arbs='$arbs',arbsk='$arbsk',arh='$arh',arhk='$arhk',arhe='$arhe',arhs='$arhs',arhsk='$arhsk',ara='$ara',arak='$arak',arae='$arae',aras='$aras',arask='$arask',arf='$arf',arfk='$arfk',arfe='$arfe',arfs='$arfs',arfsk='$arfsk',art='$art',artk='$artk',arte='$arte',arts='$arts',artsk='$artsk',itm0='$itm0',itmk0='$itmk0',itme0='$itme0',itms0='$itms0',itmsk0='$itmsk0',itm1='$itm1',itmk1='$itmk1',itme1='$itme1',itms1='$itms1',itmsk1='$itmsk1',itm2='$itm2',itmk2='$itmk2',itme2='$itme2',itms2='$itms2',itmsk2='$itmsk2',itm3='$itm3',itmk3='$itmk3',itme3='$itme3',itms3='$itms3',itmsk3='$itmsk3',itm4='$itm4',itmk4='$itmk4',itme4='$itme4',itms4='$itms4',itmsk4='$itmsk4',itm5='$itm5',itmk5='$itmk5',itme5='$itme5',itms5='$itms5',itmsk5='$itmsk5',itm6='$itm6',itmk6='$itmk6',itme6='$itme6',itms6='$itms6',itmsk6='$itmsk6' where pid='$pid'");
if(!$db->affected_rows()){
$cmd_info = "无法修改角色 $name";
} else {
......
......@@ -121,7 +121,8 @@ if($command == 'kill' || $command == 'live' || $command == 'del') {
}
}
} elseif($command == 'submitedit') {
$db->query("UPDATE {$tablepre}players SET gd='$gd',icon='$icon',club='$club',sNo='$sNo',hp='$hp',mhp='$mhp',sp='$sp',msp='$msp',ss='$ss',mss='$mss',att='$att',def='$def',pls='$pls',achievement='$achievement',exp='$exp',money='$money',bid='$bid',inf='$inf',rage='$rage',pose='$pose',tactic='$tactic',killnum='$killnum',wp='$wp',wk='$wk',wg='$wg',wc='$wc',wd='$wd',wf='$wf',teamID='$teamID',achievement='$achievement',wep='$wep',wepk='$wepk',wepe='$wepe',weps='$weps',wepsk='$wepsk',arb='$arb',arbk='$arbk',arbe='$arbe',arbs='$arbs',arbsk='$arbsk',arh='$arh',arhk='$arhk',arhe='$arhe',arhs='$arhs',arhsk='$arhsk',ara='$ara',arak='$arak',arae='$arae',aras='$aras',arask='$arask',arf='$arf',arfk='$arfk',arfe='$arfe',arfs='$arfs',arfsk='$arfsk',art='$art',artk='$artk',arte='$arte',arts='$arts',artsk='$artsk',itm0='$itm0',itmk0='$itmk0',itme0='$itme0',itms0='$itms0',itmsk0='$itmsk0',itm1='$itm1',itmk1='$itmk1',itme1='$itme1',itms1='$itms1',itmsk1='$itmsk1',itm2='$itm2',itmk2='$itmk2',itme2='$itme2',itms2='$itms2',itmsk2='$itmsk2',itm3='$itm3',itmk3='$itmk3',itme3='$itme3',itms3='$itms3',itmsk3='$itmsk3',itm4='$itm4',itmk4='$itmk4',itme4='$itme4',itms4='$itms4',itmsk4='$itmsk4',itm5='$itm5',itmk5='$itmk5',itme5='$itme5',itms5='$itms5',itmsk5='$itmsk5',itm6='$itm6',itmk6='$itmk6',itme6='$itme6',itms6='$itms6',itmsk6='$itmsk6' where pid='$pid'");
if(is_array($clbpara)) $clbpara = json_encode($clbpara);
$db->query("UPDATE {$tablepre}players SET gd='$gd',icon='$icon',club='$club',sNo='$sNo',hp='$hp',mhp='$mhp',sp='$sp',msp='$msp',ss='$ss',mss='$mss',att='$att',def='$def',pls='$pls',achievement='$achievement',exp='$exp',clbstatusa='$clbstatusa',clbstatusb='$clbstatusb',clbstatusc='$clbstatusc',clbstatusd='$clbstatusd',clbstatuse='$clbstatuse',clbpara='$clbpara',money='$money',bid='$bid',inf='$inf',rage='$rage',pose='$pose',tactic='$tactic',killnum='$killnum',wp='$wp',wk='$wk',wg='$wg',wc='$wc',wd='$wd',wf='$wf',teamID='$teamID',achievement='$achievement',wep='$wep',wepk='$wepk',wepe='$wepe',weps='$weps',wepsk='$wepsk',arb='$arb',arbk='$arbk',arbe='$arbe',arbs='$arbs',arbsk='$arbsk',arh='$arh',arhk='$arhk',arhe='$arhe',arhs='$arhs',arhsk='$arhsk',ara='$ara',arak='$arak',arae='$arae',aras='$aras',arask='$arask',arf='$arf',arfk='$arfk',arfe='$arfe',arfs='$arfs',arfsk='$arfsk',art='$art',artk='$artk',arte='$arte',arts='$arts',artsk='$artsk',itm0='$itm0',itmk0='$itmk0',itme0='$itme0',itms0='$itms0',itmsk0='$itmsk0',itm1='$itm1',itmk1='$itmk1',itme1='$itme1',itms1='$itms1',itmsk1='$itmsk1',itm2='$itm2',itmk2='$itmk2',itme2='$itme2',itms2='$itms2',itmsk2='$itmsk2',itm3='$itm3',itmk3='$itmk3',itme3='$itme3',itms3='$itms3',itmsk3='$itmsk3',itm4='$itm4',itmk4='$itmk4',itme4='$itme4',itms4='$itms4',itmsk4='$itmsk4',itm5='$itm5',itmk5='$itmk5',itme5='$itme5',itms5='$itms5',itmsk5='$itmsk5',itm6='$itm6',itmk6='$itmk6',itme6='$itme6',itms6='$itms6',itmsk6='$itmsk6' where pid='$pid'");
if(!$db->affected_rows()){
$cmd_info = "无法修改角色 $name";
} else {
......
......@@ -4,143 +4,6 @@ if(!defined('IN_GAME')) {
exit('Access Denied');
}
//格式化储存player表 可能也是四面的遗产
function update_db_player_structure($type=0)
{
global $db,$tablepre,$checkstr;
$db_player_structure = $db_player_structure_types = $tpldata = Array();
$dps_need_update = 0;//判定是否需要更新玩家字段
$dps_file = GAME_ROOT.'./gamedata/bak/db_player_structure.config.php';
$sql_file = GAME_ROOT.'./gamedata/sql/players.sql';
if(!file_exists($dps_file) || filemtime($sql_file) > filemtime($dps_file)){
$dps_need_update = 1;
}
if($dps_need_update){//如果要更新,直接新建一个表,不需要依赖已有的players表
$sql = file_get_contents($sql_file);
$sql = str_replace("\r", "\n", str_replace(' bra_', ' '.$tablepre.'tmp_', $sql));
$db->queries($sql);
$result = $db->query("DESCRIBE {$tablepre}tmp_players");
while ($sttdata = $db->fetch_array($result))
{
global ${$sttdata['Field']};
$db_player_structure[] = $sttdata['Field'];
$db_player_structure_types[$sttdata['Field']] = $sttdata['Type'];
//array_push($db_player_structure,$pdata['Field']);
}
$dps_cont = str_replace('?>','',str_replace('<?','<?php',$checkstr));
$dps_cont .= '$db_player_structure = ' . var_export($db_player_structure,1).";\r\n".'$db_player_structure_types = ' . var_export($db_player_structure_types,1).";\r\n?>";
writeover($dps_file, $dps_cont);
chmod($dps_file,0777);
}else{//若不需要更新,则直接读文件就好
include $dps_file ;
}
return $type ? $db_player_structure_types : $db_player_structure;
}
//返回一个只有数据库合法字段键名的pdata数组
function player_format_with_db_structure($data){
$ndata=Array();
$db_player_structure = update_db_player_structure();
foreach ($db_player_structure as $key){
if (isset($data[$key])) {
$ndata[$key]=$data[$key];
}
}
return $ndata;
}
//将sk转为数组格式 只会转换登记过的属性
function get_itmsk_array($sk_value)
{
global $itemspkinfo;
$ret = Array();
$i = 0;
while ($i < strlen($sk_value))
{
$sub = substr($sk_value,$i,1);
$i++;
if(!empty($sub) && array_key_exists($sub,$itemspkinfo)) array_push($ret,$sub);
}
return $ret;
}
//还原itmsk为字符串 $max_length:字符串长度上限
function get_itmsk_strlen($sk_value,$max_length=5)
{
global $itemspkinfo;
$ret = ''; $sk_count = 0;
foreach($sk_value as $sk)
{
if(array_key_exists($sk,$itemspkinfo))
{
$ret.=$sk;
$sk_count+=strlen($sk);
}
if($sk_count>=$max_length) break;
}
return $ret;
}
//为显示在主界面、尸体发现界面、游戏帮助界面的道具名、道具类、道具属性添加额外描述
//传入$n=道具名/类/属性;$t='m'(使用名称数组)/'k'(类别)/'sk'(属性);$short=1(传入的$n为数组情况下才有效,缩写属性);$class(如果传入的$n没有匹配的样式,则应用该样式)
function parse_itm_desc($n,$t,$short=0,$c=NULL)
{
global $iteminfo,$itemspkinfo;
global $iteminfo_tooltip,$itemkinfo_tooltip,$itemspkinfo_tooltip,$iteminfo_tooltip_desc;
$s = "<span "; $p1 = ''; $p2 = ''; $ret = '';
switch($t)
{
//处理类别
case $t=='k':
if(isset($itemkinfo_tooltip[$n]['title'])) $p1 = "title=\"".$itemkinfo_tooltip[$n]['title']."\"";
if(isset($itemkinfo_tooltip[$n]['class'])) $p2 = "class=\"".$itemkinfo_tooltip[$n]['class']."\"";
$n = $iteminfo[$n];
break;
//处理属性
case $t=='sk':
//如果传入的n为数组,且开启缩写模式,则输出一段缩写
if($short && is_array($n))
{
$p1 = "title=\"";
$sk1 = $itemspkinfo[current($n)]; $sk2 = $itemspkinfo[end($n)]; $skn = '';
foreach($n as $sk_value)
{
if(!empty($skn)) $skn .='+'.$itemspkinfo[$sk_value];
else $skn = $itemspkinfo[$sk_value];
}
$p1.=$skn; $n = $sk1.'+...+'.$sk2; $p2 = "\"";
}
else
{
if(isset($itemspkinfo_tooltip[$n]['title'])) $p1 = "title=\"".$itemspkinfo_tooltip[$n]['title']."\"";
if(isset($itemspkinfo_tooltip[$n]['class'])) $p2 = "class=\"".$itemspkinfo_tooltip[$n]['class']."\"";
$n = $itemspkinfo[$n];
}
break;
//处理名字
case $t=='m':
$filter_n = preg_replace('/锋利的|电气|毒性|钉|\[.*\]|-改/', '', $n);
if(isset($iteminfo_tooltip[$filter_n]))
{
if(is_array($iteminfo_tooltip[$filter_n]))
{
if(isset($iteminfo_tooltip[$filter_n]['title'])) $p1 = "title=\"".$iteminfo_tooltip[$filter_n]['title']."\"";
if(isset($iteminfo_tooltip[$filter_n]['class'])) $p2 = "class=\"".$iteminfo_tooltip[$filter_n]['class']."\"";
}
elseif(isset($iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]))
{ //使用可复用描述 越来越离谱了
if(isset($iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['title'])) $p1 = "title=\"".$iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['title']."\"";
if(isset($iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['class'])) $p2 = "class=\"".$iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['class']."\"";
}
}
break;
}
//传入了样式 且道具没有与预设匹配的样式 则使用传入的样式
if(isset($c) && !$p2) $p2 = "class=\"".$c."\"";
$p3 = " >"; $e = "</span>";
$ret = $s.$p1.$p2.$p3.$n.$e;
return $ret;
}
function init_playerdata(){
global $lvl,$baseexp,$exp,$gd,$icon,$arbe,$arhe,$arae,$arfe,$weather,$fog,$weps,$arbs,$log,$upexp,$lvlupexp,$iconImg,$ardef;
......@@ -552,7 +415,19 @@ function w_save2(&$data){
//$db->query("UPDATE {$tablepre}players SET name='$w_name',pass='$w_pass',type='$w_type',endtime='$w_endtime',gd='$w_gd',sNo='$w_sNo',icon='$w_icon',club='$w_club',hp='$w_hp',mhp='$w_mhp',sp='$w_sp',msp='$w_msp',att='$w_att',def='$w_def',pls='$w_pls',lvl='$w_lvl',exp='$w_exp',money='$w_money',bid='$w_bid',inf='$w_inf',rage='$w_rage',pose='$w_pose',tactic='$w_tactic',state='$w_state',killnum='$w_killnum',wp='$w_wp',wk='$w_wk',wg='$w_wg',wc='$w_wc',wd='$w_wd',wf='$w_wf',teamID='$w_teamID',teamPass='$w_teamPass',wep='$w_wep',wepk='$w_wepk',wepe='$w_wepe',weps='$w_weps',wepsk='$w_wepsk',arb='$w_arb',arbk='$w_arbk',arbe='$w_arbe',arbs='$w_arbs',arbsk='$w_arbsk',arh='$w_arh',arhk='$w_arhk',arhe='$w_arhe',arhs='$w_arhs',arhsk='$w_arhsk',ara='$w_ara',arak='$w_arak',arae='$w_arae',aras='$w_aras',arask='$w_arask',arf='$w_arf',arfk='$w_arfk',arfe='$w_arfe',arfs='$w_arfs',arfsk='$w_arfsk',art='$w_art',artk='$w_artk',arte='$w_arte',arts='$w_arts',artsk='$w_artsk',itm0='$w_itm0',itmk0='$w_itmk0',itme0='$w_itme0',itms0='$w_itms0',itmsk0='$w_itmsk0',itm1='$w_itm1',itmk1='$w_itmk1',itme1='$w_itme1',itms1='$w_itms1',itmsk1='$w_itmsk1',itm2='$w_itm2',itmk2='$w_itmk2',itme2='$w_itme2',itms2='$w_itms2',itmsk2='$w_itmsk2',itm3='$w_itm3',itmk3='$w_itmk3',itme3='$w_itme3',itms3='$w_itms3',itmsk3='$w_itmsk3',itm4='$w_itm4',itmk4='$w_itmk4',itme4='$w_itme4',itms4='$w_itms4',itmsk4='$w_itmsk4',itm5='$w_itm5',itmk5='$w_itmk5',itme5='$w_itme5',itms5='$w_itms5',itmsk5='$w_itmsk5',itm6='$w_itm6',itmk6='$w_itmk6',itme6='$w_itme6',itms6='$w_itms6',itmsk6='$w_itmsk6' WHERE pid='$w_pid'");
}
return;
}
//销毁尸体
function destory_corpse(&$edata)
{
if($edata)
{
$edata['state'] = 16; $edata['hp'] = 0; $edata['money'] = 0; $edata['pls'] = 99;
$edata['weps'] = 0;$edata['arbs'] = 0;$edata['arhs'] = 0;$edata['aras'] = 0;$edata['arfs'] = 0;$edata['arts'] = 0;
$edata['itms0'] = 0;$edata['itms1'] = 0;$edata['itms2'] = 0;$edata['itms3'] = 0;$edata['itms4'] = 0;$edata['itms5'] = 0;$edata['itms6'] = 0;
player_save($edata);
}
return;
}
......
......@@ -227,6 +227,7 @@ function combat($active = 1, $wep_kind = '') {
include_once GAME_ROOT . './include/state.func.php';
$killmsg = kill ( $wep_kind, $w_name, $w_type, $w_pid, $wep_temp );
check_kill_events($pid,$w_pid);
$log .= npc_chat ( $w_type,$w_name, 'death' );
include_once GAME_ROOT.'./include/game/achievement.func.php';
......
......@@ -996,20 +996,6 @@
/********一些可复用函数 也许可以挪到其他地方********/
//销毁尸体
function destory_corpse(&$edata)
{
if($edata && $edata['hp']<=0)
{
//$edata['state'] = 16;
$edata['money'] = 0;
$edata['weps'] = 0;$edata['arbs'] = 0;$edata['arhs'] = 0;$edata['aras'] = 0;$edata['arfs'] = 0;$edata['arts'] = 0;
$edata['itms0'] = 0;$edata['itms1'] = 0;$edata['itms2'] = 0;$edata['itms3'] = 0;$edata['itms4'] = 0;$edata['itms5'] = 0;$edata['itms6'] = 0;
player_save($edata);
}
return;
}
//打包尸体 ……
function pack_corpse(&$edata)
{
......
......@@ -11,6 +11,53 @@
但是只要提供了正确的pa和pd当然也可以给玩家使用。 //哈哈!不行!玩家数据存不回去!傻了吧! //搞定了! //没搞定啊!!不能100%保证不出怪问题,所以还是不要给玩家使用
本质上就是一套整理过的原版战斗函数。*/
//发现中立NPC $kind 0=中立单位 1=友军
function findneut(&$edata,$kind=0)
{
global $log,$action,$mode,$name,$main,$cmd,$battle_title,$pid,$db,$tablepre;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_sp,$w_msp,$w_rage,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;
$battle_title = $kind ? '发现朋友' : '发现敌人?';
extract($edata,EXTR_PREFIX_ALL,'w');
init_battle(1);
if(!is_array($edata['clbpara'])) $edata['clbpara']=get_clbpara($edata['clbpara']);
$log .= "你发现了<span class=\"yellow\">$w_name</span>!<br>";
if(!$kind) $log .= "对方看起来没有敌意。<br>";
//TODO:把这一段挪到一个独立函数里
if($edata['clbpara']['post'] == $pid)
{
$log.="对方一看见你,便猛地朝你扑了过来!<br>
<br><span class='sienna'>“老板!有你的快递喔!”</span><br>
<br>你被这突然袭击吓了一跳!<br>
但对方只是从身上摸出了一个包裹样的东西扔给了你。然后又急匆匆地转身离开了。<br>
<br>……这是在搞啥……?<br><br>";
$action='';
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$iid=$edata['clbpara']['postid'];
$itm0=$edata['itm'.$iid];$itmk0=$edata['itmk'.$iid];$itmsk0=$edata['itmsk'.$iid];
$itme0=$edata['itme'.$iid];$itms0=$edata['itms'.$iid];
//发一条news 表示快递已送达
$sponsorid = $edata['clbpara']['sponsor'];
$result = $db->query("SELECT * FROM {$tablepre}gambling WHERE uid = '$sponsorid'");
$sordata = $db->fetch_array($result);
addnews($now,'gpost_success',$sordata['uname'],$itm0,$name);
//再见了~快递员!
unset($edata['clbpara']['post']);unset($edata['clbpara']['postid']);unset($edata['clbpara']['sponsor']);
destory_corpse($edata);
//解除快递锁
$db->query("UPDATE {$tablepre}gambling SET bnid=0 WHERE uid='$sponsorid'");
}
include template('findneut');
$cmd = ob_get_contents();
ob_clean();
$main = 'battle';
return;
}
//战斗准备流程:通过传入的战斗双方ID初始化
function rev_combat_prepare($nid,$eid)
{
......
......@@ -363,8 +363,6 @@ function discover($schmode = 0) {
combat(0);
return;
}
}
$trap_dice=rand(0,99);//随机数,开始判断是否踩陷阱
......@@ -459,15 +457,12 @@ function discover($schmode = 0) {
// }
// }
include_once GAME_ROOT.'./include/game/attr.func.php';
$mode_dice = rand(0,99);
if($mode_dice < $schmode) {
if($mode_dice < $schmode)
{
global $pid,$corpse_obbs,$teamID,$fog,$bid,$gamestate;
// if($gamestate < 40) {
// $result = $db->query("SELECT * FROM {$tablepre}players WHERE pls='$pls' AND pid!='$pid' AND pid!='$bid'");
// } else {
// $result = $db->query("SELECT * FROM {$tablepre}players WHERE pls='$pls' AND pid!='$pid'");
// }
global $clbpara,$clbstatusa,$clbstatusb,$clbstatusc,$clbstatusd,$clbstatuse;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pls='$pls' AND pid!='$pid'");
if(!$db->num_rows($result)){
$log .= '<span class="yellow">周围一个人都没有。</span><br>';
......@@ -482,81 +477,123 @@ function discover($schmode = 0) {
$find_r = get_find_r($weather,$pls,$pose,$tactic,$club,$inf);
$find_obbs = $enemy_obbs + $find_r;
foreach($enemyarray as $enum){
//移除了重复调用discover()的设定,尝试用一种正常一点的办法确保敌人/尸体发现率符合基础设定值,不然现在的尸体确实太难摸了。
//现在触发遇敌事件只会返回三种结果:1、发现尸体;2、发现敌人、3、敌人隐藏起来;所以实际的尸体发现率=$enemyrate*$corpse_obbs
$meetman_flag = 0;
foreach($enemyarray as $enum)
{
$db->data_seek($result, $enum);
$edata = $db->fetch_array($result);
if(!$edata['type'] || $gamestate < 50){
if($edata['hp'] > 0) {
global $art,$artk,$name;
if ((!$edata['type'])&&($artk=='XX')&&(($edata['artk']!='XX')||($edata['art']!=$name))&&($gamestate<50)){
continue;
if(!$edata['type'] || $gamestate < 50)
{
if($edata['hp'] <= 0)
{
//直接略过无效尸体
if($gamestate>=40||($edata['endtime']>($now-$corpseprotect))) continue;
$ret = false;
foreach(array('money','arhs','aras','arfs','arts','itms1','itms2','itms3','itms4','itms5','itms6') as $chkval)
{
if($edata[$chkval])
{
$ret = true;
break;
}
}
if (($artk!='XX')&&($edata['artk']=='XX')&&($gamestate<50)){
continue;
if(!$ret) continue;
//计算尸体发现率
$corpse_dice = rand(0,99);
if($corpse_dice < $corpse_obbs)
{
$meetman_flag = 1;
break;
}
}
else
{
//直接略过决斗者
if ((!$edata['type'])&&($artk=='XX')&&(($edata['artk']!='XX')||($edata['art']!=$name))&&($gamestate<50)) continue;
if (($artk!='XX')&&($edata['artk']=='XX')&&($gamestate<50)) continue;
//计算活人发现率
$hide_r = get_hide_r($weather,$pls,$edata['pose'],$edata['tactic'],$edata['club'],$edata['inf']);
include_once GAME_ROOT.'./include/game/clubskills.func.php';
$hide_r *= get_clubskill_bonus_hide($edata['club'],$edata['skills']);
$enemy_dice = rand(0,99);
if($enemy_dice < ($find_obbs - $hide_r)) {
if($teamID&&(!$fog)&&($gamestate<40)&&($teamID == $edata['teamID'])){
$bid = $edata['pid'];
$action = 'team'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findteam($edata);
return;
} else {
$active_r = get_active_r($weather,$pls,$pose,$tactic,$club,$inf,$edata['pose']);
include_once GAME_ROOT.'./include/game/clubskills.func.php';
$active_r *= get_clubskill_bonus_active($club,$skills,$edata['club'],$edata['skills']);
if ($active_r>96) $active_r=96;
$bid = $edata['pid'];
$active_dice = rand(0,99);
if($active_dice < $active_r) {
$action = 'enemy'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findenemy($edata);
return;
} else {
if (CURSCRIPT == 'botservice')
{
echo "passive_battle=1\n";
echo "passive_w_name={$edata['name']}\n";
echo "passive_w_type={$edata['type']}\n";
echo "passive_w_sNo={$edata['sNo']}\n";
}
include_once GAME_ROOT.'./include/game/combat.func.php';
combat(0);
return;
}
}
}else{
$hideflag = true;
}
} else {
$corpse_dice = rand(0,99);
if($corpse_dice < $corpse_obbs) {
if($gamestate <40 && $edata['endtime'] < $now - $corpseprotect && (($edata['weps'] && $edata['wepe'])||($edata['arbs'] && $edata['arbe'])||$edata['arhs']||$edata['aras']||$edata['arfs']||$edata['arts']||$edata['itms0']||$edata['itms1']||$edata['itms2']||$edata['itms3']||$edata['itms4']||$edata['itms5']||$edata['money'])){
$bid = $edata['pid'];
$action = 'corpse'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findcorpse($edata);
return;
} else {
//这看上去是个bug…… 会导致地图上最后一个兵很难摸到……
//改成discover(100)应该就能解决问题…… 但修复了可能导致平衡性问题…… 所以暂时留在这……
discover(50);
return;
$meetman_flag = $enemy_dice<($find_obbs - $hide_r) ? 1 : -1;
break;
}
}
}
if($meetman_flag>0)
{
if($edata['hp'] > 0)
{
if(isset($edata['clbpara'])) $edata['clbpara']=get_clbpara($edata['clbpara']);
//发现队友
if($teamID&&(!$fog)&&($gamestate<40)&&($teamID == $edata['teamID']))
{
$bid = $edata['pid'];
$action = 'team'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findteam($edata);
return;
}
//发现中立NPC或友军 TODO:把这里条件判断挪到一个函数里
elseif($edata['clbpara']['post'] == $pid)
{
$bid = $edata['pid'];
$action = 'neut'.$edata['pid'];
include_once GAME_ROOT.'./include/game/revcombat.func.php';
findneut($edata,1);
return;
}
//发现敌人
else
{
$active_r = get_active_r($weather,$pls,$pose,$tactic,$club,$inf,$edata['pose']);
include_once GAME_ROOT.'./include/game/clubskills.func.php';
$active_r *= get_clubskill_bonus_active($club,$skills,$edata['club'],$edata['skills']);
if ($active_r>96) $active_r=96;
$bid = $edata['pid'];
$active_dice = rand(0,99);
//先制
if($active_dice < $active_r)
{
$action = 'enemy'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findenemy($edata);
return;
}
//挨打
else
{
if (CURSCRIPT == 'botservice')
{
echo "passive_battle=1\n";
echo "passive_w_name={$edata['name']}\n";
echo "passive_w_type={$edata['type']}\n";
echo "passive_w_sNo={$edata['sNo']}\n";
}
include_once GAME_ROOT.'./include/game/combat.func.php';
combat(0);
return;
}
}
}
else
{
$bid = $edata['pid'];
$action = 'corpse'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findcorpse($edata);
return;
}
}
if($hideflag == true){
elseif($meetman_flag < 0)
{
$log .= '似乎有人隐藏着……<br>';
}else{
}
else
{
$log .= '<span class="yellow">周围一个人都没有。</span><br>';
}
$mode = 'command';
......@@ -566,11 +603,6 @@ function discover($schmode = 0) {
$find_obbs = $item_obbs + $find_r;
$item_dice = rand(0,99);
if($item_dice < $find_obbs) {
//$mapfile = GAME_ROOT."./gamedata/mapitem/{$pls}mapitem.php";
//$mapitem = openfile($mapfile);
//$itemnum = sizeof($mapitem) - 1;
// $result = $db->query("SELECT * FROM {$tablepre}mapitem WHERE map='$pls'");
// $itemnum = $db->num_rows($result);
$result = $db->query("SELECT * FROM {$tablepre}mapitem WHERE pls = '$pls'");
$itemnum = $db->num_rows($result);
if($itemnum <= 0){
......@@ -589,10 +621,6 @@ function discover($schmode = 0) {
$itmsk0=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
//list($itm0,$itmk0,$itme0,$itms0,$itmsk0) = explode(',', $mapitem[$itemno]);
//array_splice($mapitem,$itemno,1);
//writeover($mapfile,implode('', $mapitem),'wb');
//unset($mapitem);
if($itms0){
include_once GAME_ROOT.'./include/game/itemmain.func.php';
......
......@@ -475,12 +475,13 @@ function press_bomb(){
return;
}
function shoplist($sn) {
function shoplist($sn,$getlist=NULL) {
global $gamecfg,$mode,$itemdata,$areanum,$areaadd,$iteminfo,$itemspkinfo,$club;
global $db,$tablepre;
$arean = floor($areanum / $areaadd);
$result=$db->query("SELECT * FROM {$tablepre}shopitem WHERE kind = '$sn' AND area <= '$arean' AND num > '0' AND price > '0' ORDER BY sid");
$shopnum = $db->num_rows($result);
$itemdata = Array();
for($i=0;$i< $shopnum;$i++){
$itemlist = $db->fetch_array($result);
$itemdata[$i]['sid']=$itemlist['sid'];
......@@ -489,26 +490,38 @@ function shoplist($sn) {
$itemdata[$i]['price']= $club == 11 ? round($itemlist['price']*0.75) : $itemlist['price'];
$itemdata[$i]['area']=$itemlist['area'];
$itemdata[$i]['item']=$itemlist['item'];
$itemdata[$i]['item_words']= parse_itm_desc($itemdata[$i]['item'],'m');
$itemdata[$i]['itme']=$itemlist['itme'];
$itemdata[$i]['itms']=$itemlist['itms'];
//list($sid,$kind,$num,$price,$area,$item,$itmk,$itme,$itms,$itmsk)=explode(',',$itemlist);
foreach($iteminfo as $info_key => $info_value){
if(strpos($itemlist['itmk'],$info_key)===0){
$itemdata[$i]['itmk_words'] = $info_value;
if(isset($getlist)) $itemdata[$i]['itmk'] = $info_value;
$itemdata[$i]['itmk_words'] = parse_itm_desc($info_key,'k');
break;
}
}
$itemdata[$i]['itmsk_words'] = '';
if($itemlist['itmsk'] && ! is_numeric($itemlist['itmsk'])){
for ($j = 0; $j < strlen($itemlist['itmsk']); $j++) {
$sub = substr($itemlist['itmsk'],$j,1);
if(!empty($sub)){
$itemdata[$i]['itmsk_words'] .= $itemspkinfo[$sub];
if(!isset($getlist))
{
$tmp_sk = get_itmsk_array($itemlist['itmsk']);
foreach($tmp_sk as $sk) $itemdata[$i]['itmsk_words'].= parse_itm_desc($sk,'sk');
}
else
{
for ($j = 0; $j < strlen($itemlist['itmsk']); $j++) {
$sub = substr($itemlist['itmsk'],$j,1);
if(!empty($sub) && isset($itemspkinfo[$sub])){
$itemdata[$i]['itmsk_words'] .= $itemspkinfo[$sub];
}
}
}
}
//$itemdata[$i] = array('sid' => $sid, 'kind' => $kind,'num' => $num, 'price' => $price, 'area' => $area, 'item' => $item,'itmk_words' => $itmk_words,'itme' => $itme, 'itms' => $itms,'itmsk_words' => $itmsk_words);
}
if(isset($getlist)) return $itemdata;
$mode = 'shop';
......
......@@ -492,10 +492,161 @@ function putmicrotime($t_s,$t_e,$file,$info)
writeover( $file.'.txt',"$info ;执行时间:$mtime 毫秒 \n",'ab');
}
//格式化储存player表 可能也是四面的遗产
function update_db_player_structure($type=0)
{
global $db,$tablepre,$checkstr;
$db_player_structure = $db_player_structure_types = $tpldata = Array();
$dps_need_update = 0;//判定是否需要更新玩家字段
$dps_file = GAME_ROOT.'./gamedata/bak/db_player_structure.config.php';
$sql_file = GAME_ROOT.'./gamedata/sql/players.sql';
if(!file_exists($dps_file) || filemtime($sql_file) > filemtime($dps_file)){
$dps_need_update = 1;
}
if($dps_need_update){//如果要更新,直接新建一个表,不需要依赖已有的players表
$sql = file_get_contents($sql_file);
$sql = str_replace("\r", "\n", str_replace(' bra_', ' '.$tablepre.'tmp_', $sql));
$db->queries($sql);
$result = $db->query("DESCRIBE {$tablepre}tmp_players");
while ($sttdata = $db->fetch_array($result))
{
global ${$sttdata['Field']};
$db_player_structure[] = $sttdata['Field'];
$db_player_structure_types[$sttdata['Field']] = $sttdata['Type'];
//array_push($db_player_structure,$pdata['Field']);
}
$dps_cont = str_replace('?>','',str_replace('<?','<?php',$checkstr));
$dps_cont .= '$db_player_structure = ' . var_export($db_player_structure,1).";\r\n".'$db_player_structure_types = ' . var_export($db_player_structure_types,1).";\r\n?>";
writeover($dps_file, $dps_cont);
chmod($dps_file,0777);
}else{//若不需要更新,则直接读文件就好
include $dps_file ;
}
return $type ? $db_player_structure_types : $db_player_structure;
}
//返回一个只有数据库合法字段键名的pdata数组
function player_format_with_db_structure($data){
$ndata=Array();
$db_player_structure = update_db_player_structure();
foreach ($db_player_structure as $key){
if (isset($data[$key]))
{
if(is_array($data[$key])) $data[$key]=json_encode($data[$key]);
$ndata[$key]=$data[$key];
}
}
return $ndata;
}
//为显示在主界面、尸体发现界面、游戏帮助界面的道具名、道具类、道具属性添加额外描述
//传入$n=道具名/类/属性;$t='m'(使用名称数组)/'k'(类别)/'sk'(属性);$short=1(传入的$n为数组情况下才有效,缩写属性);$class(如果传入的$n没有匹配的样式,则应用该样式)
function parse_itm_desc($n,$t,$short=0,$c=NULL)
{
global $iteminfo,$itemspkinfo;
global $iteminfo_tooltip,$itemkinfo_tooltip,$itemspkinfo_tooltip,$iteminfo_tooltip_desc;
$s = "<span "; $p1 = ''; $p2 = ''; $ret = '';
switch($t)
{
//处理类别
case $t=='k':
if(isset($itemkinfo_tooltip[$n]['title'])) $p1 = "title=\"".$itemkinfo_tooltip[$n]['title']."\"";
if(isset($itemkinfo_tooltip[$n]['class'])) $p2 = "class=\"".$itemkinfo_tooltip[$n]['class']."\"";
$n = $iteminfo[$n];
break;
//处理属性
case $t=='sk':
//如果传入的n为数组,且开启缩写模式,则输出一段缩写
if($short && is_array($n))
{
$p1 = "title=\"";
$sk1 = $itemspkinfo[current($n)]; $sk2 = $itemspkinfo[end($n)]; $skn = '';
foreach($n as $sk_value)
{
if(!empty($skn)) $skn .='+'.$itemspkinfo[$sk_value];
else $skn = $itemspkinfo[$sk_value];
}
$p1.=$skn; $n = $sk1.'+...+'.$sk2; $p2 = "\"";
}
else
{
if(isset($itemspkinfo_tooltip[$n]['title'])) $p1 = "title=\"".$itemspkinfo_tooltip[$n]['title']."\"";
if(isset($itemspkinfo_tooltip[$n]['class'])) $p2 = "class=\"".$itemspkinfo_tooltip[$n]['class']."\"";
$n = $itemspkinfo[$n];
}
break;
//处理名字
case $t=='m':
$filter_n = preg_replace('/锋利的|电气|毒性|钉|\[.*\]|-改/', '', $n);
if(isset($iteminfo_tooltip[$filter_n]))
{
if(is_array($iteminfo_tooltip[$filter_n]))
{
if(isset($iteminfo_tooltip[$filter_n]['title'])) $p1 = "title=\"".$iteminfo_tooltip[$filter_n]['title']."\"";
if(isset($iteminfo_tooltip[$filter_n]['class'])) $p2 = "class=\"".$iteminfo_tooltip[$filter_n]['class']."\"";
}
elseif(isset($iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]))
{ //使用可复用描述 越来越离谱了
if(isset($iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['title'])) $p1 = "title=\"".$iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['title']."\"";
if(isset($iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['class'])) $p2 = "class=\"".$iteminfo_tooltip_desc[$iteminfo_tooltip[$filter_n]]['class']."\"";
}
}
break;
}
//传入了样式 且道具没有与预设匹配的样式 则使用传入的样式
if(isset($c) && !$p2) $p2 = "class=\"".$c."\"";
$p3 = " >"; $e = "</span>";
$ret = $s.$p1.$p2.$p3.$n.$e;
return $ret;
}
//----------------------------------------
// 字符串处理
//----------------------------------------
//将sk转为数组格式 只会转换登记过的属性
function get_itmsk_array($sk_value)
{
global $itemspkinfo;
$ret = Array();
$i = 0;
while ($i < strlen($sk_value))
{
$sub = substr($sk_value,$i,1);
$i++;
if(!empty($sub) && array_key_exists($sub,$itemspkinfo)) array_push($ret,$sub);
}
return $ret;
}
//还原itmsk为字符串 $max_length:字符串长度上限
function get_itmsk_strlen($sk_value,$max_length=5)
{
global $itemspkinfo;
$ret = ''; $sk_count = 0;
foreach($sk_value as $sk)
{
if(array_key_exists($sk,$itemspkinfo))
{
$ret.=$sk;
$sk_count+=strlen($sk);
}
if($sk_count>=$max_length) break;
}
return $ret;
}
function get_clbpara($para)
{
return json_decode($para,true);
}
function set_clbpara($para)
{
return json_encode($para);
}
function mgzdecode($data)
{
return gzinflate(substr($data,10,-8));
......
......@@ -31,8 +31,6 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$nday = $day;
}
//tooltip处理(可能不用include……)
include_once GAME_ROOT.'./include/game.func.php';
//死法(除DN外):道具名登记在$d上;第四个参数:没有检查到特殊样式的给一个红色
if(strpos($news,'death')!==false && $news!=='death28' && isset($d)) $d = parse_itm_desc($d,'m',0,"red");
//赠送道具、吃到毒补给、陷阱、改变天气、强化武器、唱歌、打开礼物盒:道具名登记在$c上;
......@@ -286,6 +284,12 @@ function nparse_news($start = 0, $range = 0 ){//$type = '') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"yellow\">{$a}用零散的元素组合出了{$b}!</span><br>\n";
} elseif($news == 'emix_failed') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"red\">{$a}试图把零散的元素重新组合起来,但是失败了!哎呀呀、这可真是……</span><br>\n";
} elseif($news == 'gpost') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"sienna\">{$a}{$c}赞助了{$e}{$b}!快递员正带着包裹前往【{$d}】</span><br>\n";
} elseif($news == 'gpost_success') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"sienna\">{$a}{$c}赞助的{$b}已成功送达!</span><br>\n";
} elseif($news == 'gpost_failed') {
$newsinfo .= "<li>{$hour}{$min}{$sec}秒,<span class=\"sienna\">{$a}向场内玩家赞助的{$b}竟然被人半路截走了!真是天有不测风云……</span><br>\n";
} else {
$newsinfo .= "<li>$time,$news,$a,$b,$c,$d<br>\n";
}
......
......@@ -538,4 +538,32 @@ function rest($command) {
return;
}
//登记一些特殊的死亡事件
function check_kill_events($kid,$eid)
{
global $db,$tablepre,$log;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$eid'");
$edata = $db->fetch_array($result);
if(!is_array($edata['clbpara'])) $edata['clbpara']=get_clbpara($edata['clbpara']);
if($edata['clbpara']['post'])
{
//发一条news 表示快递被劫走了
$log.="<span class='sienna'>某样东西从{$edata['name']}身上掉了出来……</span><br>";
$iid = $edata['clbpara']['postid'];
$sponsorid = $edata['clbpara']['sponsor'];
$result = $db->query("SELECT * FROM {$tablepre}gambling WHERE uid = '$sponsorid'");
$sordata = $db->fetch_array($result);
addnews($now,'gpost_failed',$sordata['uname'],$edata['itm'.$iid]);
//消除快递相关参数
unset($edata['clbpara']['post']);unset($edata['clbpara']['postid']);unset($edata['clbpara']['sponsor']);
//解除快递锁
$db->query("UPDATE {$tablepre}gambling SET bnid=0 WHERE uid='$sponsorid'");
player_save($edata);
}
return;
}
?>
......@@ -115,17 +115,19 @@ function rs_game($mode = 0) {
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']."'),";
$npc=player_format_with_db_structure($npc);
$db->array_insert("{$tablepre}players", $npc);
//$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)){
/*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 " - 地图道具/陷阱初始化 - ";
......@@ -539,7 +541,7 @@ function movehtm($atime = 0) {
return;
}
function addnpc($type,$sub,$num,$time = 0) {
function addnpc($type,$sub,$num,$time = 0,$clbstatus=NULL,$aitem=NULL,$apls=NULL) {
global $now,$db,$tablepre,$log,$plsinfo,$typeinfo,$anpcinfo,$npcinit,$arealist,$areanum,$gamecfg;
$time = $time == 0 ? $now : $time;
$plsnum = sizeof($plsinfo);
......@@ -577,14 +579,37 @@ function addnpc($type,$sub,$num,$time = 0) {
$npc['pls'] = $areaarr[0];
}
//$npc['pls'] = rand(1,$plsnum-1);
}
$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']."')");
}
//自定义addnpc出现位置,会覆盖原本预设的位置。 TODO:要不要发个特别的news?
if(isset($apls)) $npc['pls'] = (int)$apls;
//自定义addnpc身上携带的道具,会覆盖原本预设的道具。 格式:$aitem=Array($iid=>Array($itm,$itmk,$itme,$itms,$itmsk),...)
if(isset($aitem))
{
$aid = $aitem[0];
$npc['itm'.$aid] = $aitem[1];$npc['itmk'.$aid] = $aitem[2];$npc['itme'.$aid] = $aitem[3];$npc['itms'.$aid] = $aitem[4];$npc['itmsk'.$aid] = $aitem[5];
}
//自定义addnpc身上的社团参数,会覆盖原本预设的参数。 格式:$clbstatus=Array('a'=>'int(10)',...'clbpara'=> $arr')
if(isset($clbstatus))
{
foreach(Array('a','b','c','d','e') as $cbs)
{
if(isset($clbstatus[$cbs])) $npc['clbstatus'.$cbs] = $clbstatus[$cbs];
}
if(isset($clbstatus['clbpara']))
{
$npc['clbpara'] = is_array($npc['clbpara']) ? array_merge($npc['clbpara'],$clbstatus['clbpara']) : $clbstatus['clbpara'];
}
}
//对将要插入数据库的npc数组格式化,现在可以直接在npc配置文件里预设那些后添加的字段了。
$npc=player_format_with_db_structure($npc);
$db->array_insert("{$tablepre}players", $npc);
$summon_ids[] = $db->insert_id();
//获取新生成npc的pid。不知道高并发时会不会出BUG……呃……出BUG了再看看?但是出BUG了我也不会修啊!
$newsname=$typeinfo[$type].' '.$npc['name'];
//$npcwordlist[] = $typeinfo[$type].' '.$npc['name'];
addnews($now, 'addnpc', $newsname);
}
}
if($num > $npc['num']){
/*if($num > $npc['num']){
//if($num > 1){
$newsname=$typeinfo[$type];
addnews($time, 'addnpcs', $newsname,$i);
......@@ -594,9 +619,8 @@ function addnpc($type,$sub,$num,$time = 0) {
// }
//$newsname=$typeinfo[$type].' '.$npc['name'];
//addnews($time, 'addnpc', $newsname);
}
return $sub;
}*/
return $summon_ids;
}
function evonpc($type,$name){
......
......@@ -262,6 +262,26 @@
<td>子类型</td>
<td><input size="20" type="text" name="itmsk6" value="{$npc['itmsk6']}" maxlength="20"></td>
</tr>
<tr>
<td>社团参数A</td>
<td><input size="20" type="text" name="clbstatusa" value="{$npc['clbstatusa']}" maxlength="20"></td>
<td>社团参数B</td>
<td><input size="20" type="text" name="clbstatusb" value="{$npc['clbstatusb']}" maxlength="20"></td>
<td>社团参数C</td>
<td><input size="20" type="text" name="clbstatusc" value="{$npc['clbstatusc']}" maxlength="20"></td>
</tr>
<tr>
<td>社团参数D</td>
<td><input size="20" type="text" name="clbstatusd" value="{$npc['clbstatusd']}" maxlength="20"></td>
<td>社团参数E</td>
<td><input size="20" type="text" name="clbstatuse" value="{$npc['clbstatuse']}" maxlength="20"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>社团参数集</td>
<td><textarea cols="20" rows="4" style="overflow:auto" name="clbpara">{$npc['clbpara']}</textarea></td>
</tr>
</table>
<input type="submit" value="修改NPC数值" onclick="$('command').value = 'submitedit'">
</form>
......
......@@ -270,6 +270,26 @@
<td></td>
<td></td>
</tr>
<tr>
<td>社团参数A</td>
<td><input size="20" type="text" name="clbstatusa" value="{$pc['clbstatusa']}" maxlength="20"></td>
<td>社团参数B</td>
<td><input size="20" type="text" name="clbstatusb" value="{$pc['clbstatusb']}" maxlength="20"></td>
<td>社团参数C</td>
<td><input size="20" type="text" name="clbstatusc" value="{$pc['clbstatusc']}" maxlength="20"></td>
</tr>
<tr>
<td>社团参数D</td>
<td><input size="20" type="text" name="clbstatusd" value="{$pc['clbstatusd']}" maxlength="20"></td>
<td>社团参数E</td>
<td><input size="20" type="text" name="clbstatuse" value="{$pc['clbstatuse']}" maxlength="20"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>社团参数集</td>
<td><textarea cols="20" rows="4" style="overflow:auto" name="clbpara">{$pc['clbpara']}</textarea></td>
</tr>
</table>
<input type="submit" value="修改玩家数值" onclick="$('command').value = 'submitedit'">
</form>
......
<input type="button" class="cmdbutton" name="back" value="返回" onclick="postCmd('gamecmd','command.php');"><br><br>
\ No newline at end of file
<!--{if $gbnum}-->当前奖池:{$gbpool}。<!--{else}-->当前还未开设赌局。<!--{/if}-->当前分成系数:{$nowodds}
<span class="yellow" id="gbinfo">
$gbinfo
</span>
<!--{if $cuser && isset($credits2)}-->
你的{lang credits2}:<span id="credits2" class="yellow">$credits2</span>
<!--{if $gbact == 1}-->
<input type="hidden" name="bet" value="{$gbudata['bid']}">
<!--{else}-->
选择:
<!--{if $cuser && isset($credits2)}-->你的{lang credits2}:<span id="credits2" class="yellow">$credits2</span>
你可以选择一位对象,消耗<span class="yellow">{lang credits2}</span>为ta<span class="yellow">下注</span><span class="yellow">赞助</span>
选择对象:
<select name="bet">
<option value="none">不选择
<!--{loop $alivedata $alive}--><option value="{$alive['pid']}">{$alive['name']}<!--{/loop}-->
</select>
<!--{/if}-->
赌注:<input type="text" name="wager" value="1" size="4" maxlength="6">
<br>
<!--{/if}-->
<!--{if $cuser && isset($credits2)}-->
赞助:
<span id="gbshop_box">
<select id="gbid" name="gbid" style="width:100px" onchange="$('command').value='gbid';postCmd('gamecmd','command.php');this.disabled=true;">
<option value="main">可赞助商品一览</option>
<!--{loop $gshoplist $gshopid $gshopname}-->
<optgroup label="$gshopname">
<!--{loop shoplist($gshopid,1) $idata}-->
<!--{if isset($idata['sid']) && $idata['price']<=$credits2*$credits2_values}-->
<option value="$idata['sid']">$idata['item']/$idata['itmk']/$idata['itme']/$idata['itms']<!--{if $idata['itmsk_words']}-->/$idata['itmsk_words']<!--{/if}--> 【价:$idata['price'],数:$idata['num']】</option>
<!--{/if}-->
<!--{/loop}-->
<!--{/loop}-->
</select>
</span>
数量:<input type="text" name="gbinum" value="1" size="4" maxlength="6">
<input type="button" value="下单" onClick="$('gbmode').value='gsponsor';postCmd('alive','alive.php');">
<br>
<!--{/if}-->
<!--{if $gbnum}-->当前奖池:{$gbpool}。当前分成系数:{$nowodds}。<!--{else}-->当前还未开设赌局。<!--{/if}-->
<!--{if $cuser && isset($credits2)}-->
下注:<input type="text" name="wager" value="1" size="4" maxlength="6">
<input type="button" <!--{if $gbact == 1}-->value="追加"<!--{else}-->value="下注"<!--{/if}--> onClick="$('gbmode').value='gamble';postCmd('alive','alive.php');">
<!--{/if}-->
\ No newline at end of file
<br>
<!--{/if}-->
<span class="yellow" id="gbinfo">
$gbinfo
</span>
\ No newline at end of file
......@@ -3885,7 +3885,7 @@
<td class="b3"><span>2禁刷新2个</span></td></tr>
<tr><td class="b3" height=20px><span>SCP研究设施</span></td>
<td class="b3"><span>浮☆云</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>全地图唯一的野生浮云礼物盒</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新1个</span></td></tr>
......@@ -6428,186 +6428,6 @@
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新10个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条金</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条木</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条水</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条火</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条土</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条城壁</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条主教</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条骑士</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条国王</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条皇后</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条雷</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条风</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条震</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条泽</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条氢</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条氦</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条锂</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条铍</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条硼</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条碳</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条氮</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条氧</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条氟</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条氖</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条钠</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条镁</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条铝</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条硅</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条磷</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>提示纸条铀</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新3个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>《殴系指南》</span></td>
<td class="b3"><span>技能书籍</span></td>
<td class="b3"><span>25/1</span></td>
......@@ -7375,4 +7195,10 @@
<td class="b3"><span>90/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>0禁刷新7个</span></td></tr>
<tr><td class="b3" height=20px><span>全图随机</span></td>
<td class="b3"><span>→【神器任意门】←</span></td>
<td class="b3"><span>特殊</span></td>
<td class="b3"><span>1/1</span></td>
<td class="b3"><span></span></td>
<td class="b3"><span>1禁刷新1个</span></td></tr>
</table></div><br>
......@@ -204,6 +204,30 @@
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>☆法式长棍面包☆</span></td><td class="b3" title="0禁于清水池刷新20个&#13;每禁于清水池刷新10个&#13;0禁于夏之镇刷新20个&#13;0禁于三体星刷新10个&#13;每禁于风祭森林刷新10个&#13;0禁于风祭森林刷新10个&#13;0禁于风祭森林刷新5个&#13;每禁全图随机刷新20个&#13;每禁全图随机刷新20个&#13;" ><span></span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >法式面包棍棒</span></span></td>
<td class="b3"><span><span >钝器</span>/120/25/<span title="攻击对手时,中几率将对手防具的防御力修正为一半来计算伤害。" >冲击</span>+<span title="这把武器的最终伤害将会为随机值。" >混沌伤害</span>+<span title="那么,这个有什么用呢……?" >天然</span></span></td>
</tr>
<tr><td class="b3" height=20px title="0禁于对天使用作战本部刷新5个&#13;0禁全图随机刷新2个&#13;0禁全图随机刷新2个&#13;0禁全图随机刷新2个&#13;" ><span>棍棒</span></td><td class="b3" title="0禁于麦斯克林刷新10个&#13;2禁于麦斯克林刷新8个&#13;" ><span>岩石</span></td><td class="b3" title="每禁于对天使用作战本部刷新10个&#13;1禁于对天使用作战本部刷新10个&#13;2禁于对天使用作战本部刷新10个&#13;3禁于对天使用作战本部刷新10个&#13;0禁起在商店中出售(60元)&#13;打开礼品盒时有概率获得&#13;" ><span></span></td><td class="b3" title="每禁于常磐森林刷新10个&#13;每禁于精灵中心刷新16个&#13;0禁全图随机刷新50个&#13;0禁起在商店中出售(5元)&#13;" ><span>毒药</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >绽花毒藤</span></span></td>
<td class="b3"><span><span >重剑</span>/180/150/<span title="攻击对手时,中几率将对手防具的防御力修正为一半来计算伤害。" >冲击</span>+<span title="攻击对手时,将产生额外的毒属性伤害。也有可能让对手陷入中毒异常状态。" >带毒</span></span></td>
</tr>
<tr><td class="b3" height=20px title="0禁于梦幻馆刷新3个&#13;1禁于梦幻馆刷新3个&#13;2禁于梦幻馆刷新3个&#13;" ><span>向日葵</span></td><td class="b3" title="1禁于梦幻馆刷新5个&#13;0禁全图随机刷新15个&#13;" ><span>月光碎片</span></td><td class="b3" title="0禁于FARGO前基地刷新12个&#13;" ><span>铁链</span></td><td class="b3" title="0禁起在商店中出售(300元)&#13;" ><span>超级重锤</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >太极</span></span></td>
<td class="b3"><span><span >钝器</span>/180/150/<span title="攻击对手时,中几率将对手防具的防御力修正为一半来计算伤害。" >冲击</span>+<span title="攻击对手时,将产生额外的音波属性伤害。也有可能让对手陷入混乱异常状态。" >音波</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span></span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;打开礼品盒时有概率获得&#13;" ><span>红宝石方块</span></td><td class="b3" title="0禁起在商店中出售(9100元)&#13;" ><span>★制御棒★</span></td><td class="b3" title="1禁起在商店中出售(2100元)&#13;" ><span>『延展御柱』</span></td><td class="b3" title="0禁全图随机刷新4个&#13;0禁起在商店中出售(20元)&#13;" ><span>夜雀歌谱</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >晨星链刃</span></span></td>
<td class="b3"><span><span >重剑</span>/827/260/<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span>+<span title="攻击对手时,对其造成无法防御的火焰属性伤害。也有可能让对手陷入烧伤异常状态。" >灼焰</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span></span></td>
</tr>
<tr><td class="b3" height=20px title="0禁于麦斯克林刷新10个&#13;2禁于麦斯克林刷新8个&#13;" ><span>岩石</span></td><td class="b3" title="0禁全图随机刷新20个&#13;" ><span>火把</span></td><td class="b3" title="1禁于FARGO前基地刷新16个&#13;1禁于FARGO前基地刷新4个&#13;0禁全图随机刷新5个&#13;0禁起在商店中出售(1500元)&#13;打开礼品盒时有概率获得&#13;" ><span>★阔剑地雷★</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >阳炎之怒</span></span></td>
<td class="b3"><span><span >钝器</span>/188/30/<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span>+<span title="攻击对手时,将产生额外的火焰属性伤害。也有可能让对手陷入烧伤状态。" >火焰</span></span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>阳炎之怒</span></td><td class="b3" title="0禁全图随机刷新4个&#13;0禁起在商店中出售(20元)&#13;" ><span>雏人形</span></td><td class="b3" title="0禁起在商店中出售(1500元)&#13;" ><span>『祝福宝石』</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >风滚草</span></span></td>
<td class="b3"><span><span >钝器</span>/156/77/<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>风滚草</span></td><td class="b3" title="通过合成获取&#13;" ><span>晨星链刃</span></td><td class="b3" title="通过合成获取&#13;" ><span>太极</span></td><td class="b3" title="1禁起在商店中出售(2500元)&#13;" ><span>海胆链球</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >龙魂破</span></span></td>
<td class="b3"><span><span >重剑</span>/6600/2200/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span>+<span title="攻击对手时,对其造成无法防御的火焰属性伤害。也有可能让对手陷入烧伤异常状态。" >灼焰</span>+<span title="攻击对手时,中几率将对手防具的防御力修正为一半来计算伤害。" >冲击</span></span></td>
</tr>
</table>
<p><span class="yellow">射系武器合成表</span></p>
......@@ -509,11 +533,11 @@
</tr>
<tr><td class="b3" height=20px title="0禁于常磐森林刷新7个&#13;1禁于常磐森林刷新2个&#13;打开礼品盒时有概率获得&#13;" ><span>《小黄的草帽》</span></td><td class="b3" title="0禁于常磐森林刷新7个&#13;1禁于常磐森林刷新2个&#13;打开礼品盒时有概率获得&#13;" ><span>《小黄的钓鱼竿》</span></td><td class="b3" title="0禁于常磐森林刷新7个&#13;1禁于常磐森林刷新2个&#13;打开礼品盒时有概率获得&#13;" ><span>《小黄的行军靴》</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >《小黄的精灵球》</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/233/∞</span></td>
<td class="b3"><span><span >投掷兵器</span>/386/∞</span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>《小黄的精灵球》</span></td><td class="b3" title="0禁起在商店中出售(3800元)&#13;" ><span>《小黄的收服特训》</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >《小黄的超级球》</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/233/∞/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="攻击对手时,将产生额外的冻气属性伤害。也有可能让对手陷入冻结异常状态。" >冻气</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/386/∞/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="攻击对手时,将产生额外的冻气属性伤害。也有可能让对手陷入冻结异常状态。" >冻气</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span></span></td>
</tr>
<tr><td class="b3" height=20px title="0禁于白穗神社刷新10个&#13;" ><span>白色的羽毛</span></td><td class="b3" title="0禁全图随机刷新25个&#13;1禁全图随机刷新15个&#13;打开礼品盒时有概率获得&#13;" ><span>金色方块</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >凤凰之羽</span></span></td>
......@@ -525,19 +549,19 @@
</tr>
<tr><td class="b3" height=20px title="0禁起在商店中出售(3800元)&#13;" ><span>《小黄的收服特训》</span></td><td class="b3" title="通过合成获取&#13;" ><span>《小黄的超级球》</span></td><td class="b3" title="0禁起在商店中出售(5500元)&#13;" ><span>《小黄的常磐之力》</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >《小黄的大师球》</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/386/∞/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/493/∞/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>凤凰之羽</span></td><td class="b3" title="通过合成获取&#13;" ><span>《小黄的超级球》</span></td><td class="b3" title="0禁起在商店中出售(5500元)&#13;" ><span>《小黄的常磐之力》</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >《小黄的大师球》</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/386/∞/<span title="攻击对手时,将产生额外的火焰属性伤害。也有可能让对手陷入烧伤状态。" >火焰</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/493/∞/<span title="攻击对手时,将产生额外的火焰属性伤害。也有可能让对手陷入烧伤状态。" >火焰</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>露琪亚之羽</span></td><td class="b3" title="通过合成获取&#13;" ><span>《小黄的超级球》</span></td><td class="b3" title="0禁起在商店中出售(5500元)&#13;" ><span>《小黄的常磐之力》</span></td><td class="b3" ><span>-</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >《小黄的大师球》</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/386/∞/<span title="攻击对手时,将产生额外的冻气属性伤害。也有可能让对手陷入冻结异常状态。" >冻气</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/493/∞/<span title="攻击对手时,将产生额外的冻气属性伤害。也有可能让对手陷入冻结异常状态。" >冻气</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
</tr>
<tr><td class="b3" height=20px title="通过合成获取&#13;" ><span>凤凰之羽</span></td><td class="b3" title="通过合成获取&#13;" ><span>露琪亚之羽</span></td><td class="b3" title="通过合成获取&#13;" ><span>《小黄的超级球》</span></td><td class="b3" title="0禁起在商店中出售(5500元)&#13;" ><span>《小黄的常磐之力》</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >《小黄的大师球》</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/386/∞/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
<td class="b3"><span><span >投掷兵器</span>/493/∞/<span title="该物品可以使用特定物品进行强化。" >菁英</span>+<span title="降低重击与必杀技的怒气消耗,以及重击概率。" >重击辅助</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
</tr>
</table>
<p><span class="lime">KEY系道具合成表</span></p>
......@@ -580,7 +604,7 @@
<td class="b3"><span><span >【KEY系未来弹】</span></span></td>
<td class="b3"><span><span >钝器</span>/860/5/<span title="那么,这个有什么用呢……?" >天然</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span></span></td>
</tr>
<tr><td class="b3" height=20px title="0禁全图随机刷新10个&#13;" ><span>提示纸条K</span></td><td class="b3" title="0禁全图随机刷新10个&#13;" ><span>提示纸条E</span></td><td class="b3" title="通过合成获取&#13;" ><span>提示纸条Y</span></td><td class="b3" title="0禁全图随机刷新10个&#13;0禁起在商店中出售(1元)&#13;" ><span>提示纸条D</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<tr><td class="b3" height=20px title="0禁全图随机刷新10个&#13;" ><span>提示纸条K</span></td><td class="b3" title="0禁全图随机刷新10个&#13;" ><span>提示纸条E</span></td><td class="b3" title="通过合成获取&#13;" ><span>提示纸条Y</span></td><td class="b3" title="0禁全图随机刷新10个&#13;0禁起在商店中出售(1元)&#13;1禁起在商店中出售(20元)&#13;" ><span>提示纸条D</span></td><td class="b3" ><span>-</span></td><td class="b3"></td>
<td class="b3"><span><span >【KEY系生命弹】</span></span></td>
<td class="b3"><span><span >远程兵器</span>/860/5/<span title="那么,这个有什么用呢……?" >天然</span>+<span title="攻击对手时,将产生额外的爆炸属性伤害。" >爆炸</span>+<span title="根据你的熟练度,做出一定数量的连续攻击。" >连击</span></span></td>
</tr>
......
......@@ -5,11 +5,11 @@
<input type="radio" name="command" id="shop" value="shop"><a onclick=sl('shop'); href="javascript:void(0);" onmouseover="status=' ';return true;">返回列表</a><br><br>
<!--{loop $itemdata $idata}-->
<!--{if $idata['sid']}-->
<a onclick=sl("$idata['sid']"); href="javascript:void(0);" onmouseover="status=' ';return true;"><input type="radio" name="command" id="$idata['sid']" value="$idata['sid']">$idata['item']/$idata['itmk_words']/$idata['itme']/$idata['itms']<!--{if $idata['itmsk_words']}-->/$idata['itmsk_words']<!--{/if}--> 【价:$idata['price'],数:$idata['num']】</a><br>
<a onclick=sl("$idata['sid']"); href="javascript:void(0);" onmouseover="status=' ';return true;"><input type="radio" name="command" id="$idata['sid']" value="$idata['sid']">$idata['item_words']/$idata['itmk_words']/$idata['itme']/$idata['itms']<!--{if $idata['itmsk_words']}-->/$idata['itmsk_words']<!--{/if}--> 【价:$idata['price'],数:$idata['num']】</a><br>
<!--{/if}-->
<!--{/loop}-->
<!--{if $shop==1||$shop==2||$shop==6||$shop==7||$shop==8||$shop==10||$shop==11||$shop==12}-->
请输入购买数量:<input type="text" name="buynum" value="1" size="5" maxlength="5">
请输入购买数量:<input type="number" name="buynum" value="1" min="1" max="1000">
<!--{else}-->
<input type="hidden" name="buynum" value="1">
<!--{/if}-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment