function post_hack_events($itmn = 0) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'logger')); $itm =& ${'itm' . $itmn}; $itmk =& ${'itmk' . $itmn}; $itme =& ${'itme' . $itmn}; $itms =& ${'itms' . $itmn}; $itmsk =& ${'itmsk' . $itmn}; $hack_dice2 = rand(0, 99); if ($hack_dice2 < 5) { $log .= '由于你的不当操作,禁区系统防火墙锁定了你的电脑并远程引爆了它。幸好你本人的位置并没有被发现。<br>'; $itm = $itmk = $itmsk = ''; $itme = $itms = 0; } elseif ($hack_dice2 < 8) { $log .= "<span class=\"evergreen\">“小心隔墙有耳哦。”</span>——林无月<br>"; $log .= '你擅自入侵禁区控制系统,被控制系统远程消灭!<br>'; $state = 14; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = ''; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); } }
function battle_wrapper(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } battle_prepare($pa, $pd, $active); battle($pa, $pd, $active); battle_finish($pa, $pd, $active); //写回数据库 eval(import_module('sys', 'logger', 'player', 'metman')); if ($active) { if ($pd['hp'] <= 0 && $pa['hp'] > 0) { $pa['action'] = 'corpse' . $pd['pid']; } if ($pa['hp'] <= 0 && $pd['hp'] > 0 && $pd['action'] == '' && $pd['type'] == 0) { $pd['action'] = 'pacorpse' . $pa['pid']; } } else { if ($pd['hp'] <= 0 && $pa['hp'] > 0 && $pa['action'] == '' && $pa['type'] == 0) { $pa['action'] = 'pacorpse' . $pd['pid']; } if ($pa['hp'] <= 0 && $pd['hp'] > 0) { $pd['action'] = 'corpse' . $pa['pid']; } } if ($active) { $edata = $pd; \player\player_save($pa); \player\player_save($pd); \metman\metman_load_playerdata($pd); if ($pd['type'] == 0) { save_enemy_battlelog($pd); } \player\load_playerdata($pa); } else { $edata = $pa; \player\player_save($pa); \player\player_save($pd); \metman\metman_load_playerdata($pa); if ($pa['type'] == 0) { save_enemy_battlelog($pa); } \player\load_playerdata($pd); } $battle_title = '战斗发生'; $main = MOD_METMAN_MEETMAN; \metman\init_battle(1); if (substr($action, 0, 6) == 'corpse') { \corpse\findcorpse($edata); } else { include template(MOD_BATTLE_BATTLERESULT); $cmd = ob_get_contents(); ob_clean(); $action = ''; } if (defined('MOD_CLUBBASE')) { include template(MOD_CLUBBASE_NPCSKILLPAGE); } }
function itemuse(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player')); if ($theitem['itm'] == "『G.A.M.E.O.V.E.R』") { if (\skillbase\skill_query(323)) { \skillbase\skill_setvalue(323, 'cnt', $now - $starttime); \player\player_save($sdata); } } $chprocess($theitem); }
function itemuse(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player')); if ($theitem['itm'] == "杏仁豆腐的ID卡" && $theitem['itmk'] == "Z" && $gamestate >= 30 && $gamestate < 50) { if (\skillbase\skill_query(322)) { \skillbase\skill_setvalue(322, 'cnt', $now - $starttime); \player\player_save($sdata); } } $chprocess($theitem); }
function itemuse(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player')); if ($theitem['itm'] == "游戏解除钥匙") { if (\skillbase\skill_query(301)) { \skillbase\skill_setvalue(301, 'cnt', 1); \player\player_save($sdata); //gameover的时候是不会多存一次玩家数据的,所以要加这一句卧槽 } } $chprocess($theitem); }
function deal_poison_move_damage($damage) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'logger')); $hp -= $damage; $log .= "<span class=\"purple\">毒发</span>减少了<span class=\"red\">{$damage}</span>点生命!<br>"; if ($hp <= 0) { $state = 12; \player\update_sdata(); $sdata['sourceless'] = 1; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); } }
function getexp($v, &$pa = NULL) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('player')); $flag = 0; if ($pa === NULL) { \player\update_sdata(); $flag = 1; $pa =& $sdata; } checklvlup($v, $pa); if ($flag) { \player\player_save($sdata); \player\load_playerdata($sdata); } }
function gameover($time = 0, $gmode = '', $winname = '') { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys')); if ($gamestate < 10) { return; } if ($gmode == 'end5') { $pw = \player\fetch_playerdata($winname); if (\skillbase\skill_query(306, $pw)) { \skillbase\skill_setvalue(306, 'cnt', 1, $pw); \player\player_save($pw); } } $chprocess($time, $gmode, $winname); }
function gameover($time = 0, $gmode = '', $winname = '') { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys')); if ($gamestate < 10) { return; } if ((!$gmode || $gmode == 'end2' && !$winname) && !in_array($gametype, $teamwin_mode)) { $result = $db->query("SELECT * FROM {$tablepre}players WHERE hp>0 AND type=0"); $alivenum = $db->num_rows($result); if ($alivenum == 1) { $pw = $db->fetch_array($result); $wn = $pw['name']; $pw = \player\fetch_playerdata($wn); if (\skillbase\skill_query(305, $pw)) { \skillbase\skill_setvalue(305, 'cnt', 1, $pw); \player\player_save($pw); } } } $chprocess($time, $gmode, $winname); }
function discover_player() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'logger', 'metman')); $result = $db->query("SELECT pid FROM {$tablepre}players WHERE pls='{$pls}' AND pid!='{$pid}'"); if (!$db->num_rows($result)) { $log .= '<span class="yellow">周围一个人都没有。</span><br>'; $mode = 'command'; return; } $enemynum = $db->num_rows($result); $enemyarray = range(0, $enemynum - 1); shuffle($enemyarray); $hideflag = false; foreach ($enemyarray as $enum) { $db->data_seek($result, $enum); $z = $db->fetch_array($result); $edata = \player\fetch_playerdata_by_pid($z['pid']); if (isset($edata['infochanged']) && $edata['infochanged']) { \player\player_save($edata); } if ($edata['pls'] == $pls) { $z = check_player_discover($edata); if ($z == -1) { //这不是bug,是原版本的奇葩设定,请参见corpse模块注释 \explore\discover('search2'); return; } if ($z) { meetman($edata['pid']); return; } } } if ($hideflag == true) { $log .= '似乎有人隐藏着……<br>'; } else { $log .= '<span class="yellow">周围一个人都没有。</span><br>'; } $mode = 'command'; return; }
function trap_hit() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'map', 'itemmain', 'trap', 'logger')); trap_deal_damage(); if ($hp <= 0) { $log .= "<span class=\"red\">你被{$trperfix}陷阱杀死了!</span>"; $state = 27; \player\update_sdata(); if (!$selflag && $playerflag) { $edata = \player\fetch_playerdata_by_pid($itmsk0); } else { $edata =& $sdata; //无来源或来源是自己 if (!$playerflag) { $sdata['sourceless'] = 1; } //无来源 } $edata['attackwith'] = $itm0; $killmsg = \player\kill($edata, $sdata); if (!$selflag && $playerflag) { \player\player_save($edata); } \player\player_save($sdata); \player\load_playerdata($sdata); if (isset($sdata['sourceless'])) { unset($sdata['sourceless']); } if ($killmsg != '') { $log .= "<span class=\"yellow\">{$trname}对你说:“{$killmsg}”</span><br>"; } } $itm0 = $itmk0 = $itmsk0 = ''; $itme0 = $itms0 = 0; }
function skill_onload_event(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (\skillbase\skill_query(57, $pa) && $pa['hp'] > 0) { $i = \skillbase\skill_getvalue(57, 'l', $pa); $z = \skillbase\skill_getvalue(57, 'p', $pa); eval(import_module('sys', 'player', 'skill56', 'logger')); //判断触发者是否就是雇佣者本身 if ($z == $pid) { $employer = NULL; } else { $employer = \player\fetch_playerdata_by_pid($z); } $infochanged = 0; //收钱判断 $is_hired = (int) \skillbase\skill_getvalue(56, 'h' . $i, $employer); if ($is_hired == 1) { $lastsal = (int) \skillbase\skill_getvalue(56, 'l' . $i, $employer); $ty = (int) \skillbase\skill_getvalue(56, 's' . $i); while ($now - $lastsal >= 60) { $mercsal = $skill56_npc['sub'][$ty]['mercsalary']; if ($employer !== NULL) { $emoney =& $employer['money']; } else { $emoney =& $money; } if ($emoney >= $mercsal) { //收钱成功 $pa['money'] += $mercsal; $emoney -= $mercsal; $lastsal += 60; \skillbase\skill_setvalue(56, 'l' . $i, $lastsal, $employer); $w_log = '你支付了<span class="yellow">' . $mercsal . '</span>元作为佣兵<span class="yellow">' . $skill56_npc['sub'][$ty]['name'] . '</span>的薪水!<br>'; \logger\logsave($z, $lastsal, $w_log, 'b'); $infochanged = 1; $pa['infochanged'] = 1; } else { if ($now - $lastsal >= $merc_leave_timeout) { //强制解雇 $pa['money'] += $emoney; $emoney = 0; $lastsal += $merc_leave_timeout; \skillbase\skill_setvalue(56, 'l' . $i, $lastsal, $employer); \skillbase\skill_setvalue(56, 'h' . $i, 2, $employer); if ($skill56_npc['sub'][$ty]['mercfireaction'] == 1) { $pa['pls'] = 999; } $w_log = '<span class="red">因为你长期拖欠佣兵<span class="yellow">' . $skill56_npc['sub'][$ty]['name'] . '</span>的薪水,佣兵<span class="yellow">' . $skill56_npc['sub'][$ty]['name'] . '</span>与你解除了雇佣合同!</span><br>'; \logger\logsave($z, $lastsal, $w_log, 'b'); $infochanged = 1; $pa['infochanged'] = 1; break; } else { break; } } } } if ($infochanged && $employer !== NULL) { \player\player_save($employer); } } $chprocess($pa); }
} \player\load_playerdata(\player\fetch_playerdata($cuser)); \player\init_playerdata(); \player\init_profile(); $log = ''; //读取聊天信息 $chatdata = getchat(0, $teamID); $hp_backup_temp = $hp; $player_dead_flag_backup_temp = $player_dead_flag; if ($hp <= 0 || $player_dead_flag) { player\pre_act(); player\post_act(); } if ($hp != $hp_backup_temp || $player_dead_flag != $player_dead_flag_backup_temp) { \player\update_sdata(); \player\player_save($sdata); } //var_dump($itm3); if ($hp <= 0) { $dtime = date("Y年m月d日H时i分s秒", $endtime); $kname = ''; if ($bid) { $result = $db->query("SELECT name FROM {$tablepre}players WHERE pid='{$bid}'"); if ($db->num_rows($result)) { $kname = $db->result($result, 0); } } $mode = 'death'; } elseif ($state == 1 || $state == 2 || $state == 3) { $mode = 'rest'; } elseif ($itms0) {
function death_kagari($type) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'map', 'logger')); if ($type == 1) { $log = $log . "从少女的身上延伸出了红色的丝带,<BR>如巨蟒般将你紧紧地捆住。<BR>"; if ($gamestate == 50) { $log = $log . "不过,在你即将被绞碎时,上空射来的奇异光束烧毁了丝带,救了你一命。<BR>少女见状扭头离去了。<br>"; $inf = str_replace('b', '', $inf); $inf .= 'b'; $hp = round($hp / 100); if ($hp <= 0) { $hp = 1; } } else { $state = 36; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = ''; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); return; } } elseif ($type == 2) { $log = $log . "从少女的身上延伸出了红色的丝带,<BR>锋利的丝带朝着你的头部飞来!<BR>"; if ($gamestate == 50) { $log = $log . "不过,在你即将身首异处时,上空射来的奇异光束烧毁了丝带,救了你一命。<BR>少女见状扭头离去了。<br>"; $hp = round($hp / 100); $inf = str_replace('h', '', $inf); $inf .= 'h'; if ($hp <= 0) { $hp = 1; } } else { $state = 37; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = ''; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); return; } } elseif ($type == 3) { $log = $log . "从少女的身上延伸出了红色的丝带,<BR>灼热的丝带朝着你高速飞来!<BR>"; if ($gamestate == 50) { $log = $log . "不过,在喷射着岩浆的丝带即将把你融化时,上空射来的奇异光束烧毁了丝带,救了你一命。<BR>少女见状扭头离去了。<br>"; $hp = round($hp / 100); $inf = str_replace('u', '', $inf); $inf .= 'u'; if ($hp <= 0) { $hp = 1; } } else { $state = 38; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = ''; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); return; } } else { return; } }
function enter_battlefield($xuser, $xpass, $xgender, $xicon, $card = 0) { eval(import_module('sys')); if ($xgender != 'm' && $xgender != 'f') { $xgender = 'm'; } $validnum++; $alivenum++; $name = $xuser; $pass = $xpass; global $gd; $gd = $xgender; $type = 0; $endtime = $now; global $sNo; $sNo = $validnum; global $hp, $mhp, $sp, $msp, $att, $def, $wep, $itm, $icon; $hp = $mhp = $hplimit; $sp = $msp = $splimit; $rand = rand(0, 15); $att = 95 + $rand; $def = 105 - $rand; $pls = 0; $killnum = 0; $lvl = 0; $skillpoint = 0; $exp = $areanum * 20; $money = 20; $rage = 0; $pose = 0; $tactic = 0; $icon = $xicon ? $xicon : rand(1, $iconlimit); $club = 0; $arb = $gd == 'm' ? '男生校服' : '女生校服'; $arbk = 'DB'; $arbe = 5; $arbs = 15; $arbsk = ''; $arh = $ara = $arf = $art = ''; $arhk = $arak = $arfk = $artk = ''; $arhsk = $arask = $arfsk = $artsk = ''; $arhe = $arae = $arfe = $arte = 0; $arhs = $aras = $arfs = $arts = 0; for ($i = 0; $i <= 6; $i++) { $itm[$i] = $itmk[$i] = $itmsk[$i] = ''; $itme[$i] = $itms[$i] = 0; } $itm[1] = '面包'; $itmk[1] = 'HH'; $itme[1] = 100; $itms[1] = 30; $itm[2] = '矿泉水'; $itmk[2] = 'HS'; $itme[2] = 100; $itms[2] = 30; //solo局补给增加,配发探测器 if (in_array($gametype, $elorated_mode)) { $itms[1] = 50; $itms[2] = 50; $itm[5] = '生命探测器'; $itmk[5] = 'ER'; $itme[5] = 5; $itms[5] = 1; } $weplist = openfile(config('stwep', $gamecfg)); do { $index = rand(1, count($weplist) - 1); list($wep, $wepk, $wepe, $weps, $wepsk) = explode(",", $weplist[$index]); } while (!$wepk); $stitemlist = openfile(config('stitem', $gamecfg)); do { $index = rand(1, count($stitemlist) - 1); list($itm[3], $itmk[3], $itme[3], $itms[3], $itmsk[3]) = explode(",", $stitemlist[$index]); } while (!$itmk[3]); do { $index = rand(1, count($stitemlist) - 1); list($itm[4], $itmk[4], $itme[4], $itms[4], $itmsk[4]) = explode(",", $stitemlist[$index]); } while (!$itmk[4] || $itmk[3] == $itmk[4]); if (strpos($wepk, 'WG') === 0) { $itm[3] = '手枪子弹'; $itmk[3] = 'GB'; $itme[3] = 1; $itms[3] = 12; $itmsk[3] = ''; } if ($name == 'Amarillo_NMC') { $msp += 500; $mhp += 500; $hp += 500; $sp += 500; $att += 200; $def += 200; $exp += 3000; $money = 20000; $rage = 255; $pose = 1; $tactic = 3; $itm[1] = '死者苏生'; $itmk[1] = 'HB'; $itme[1] = 2000; $itms[1] = 400; $itmsk[1] = ''; $itm[2] = '移动PC'; $itmk[2] = 'EE'; $itme[2] = 50; $itms[2] = 1; $itm[3] = '超光速快子雷达'; $itmk[3] = 'ER'; $itme[3] = 32; $itms[3] = 1; $itmsk[3] = 2; $itm[4] = '凸眼鱼'; $itmk[4] = 'Y'; $itme[4] = 1; $itms[4] = 30; $itmsk[4] = ''; $itm[5] = '楠叶特制营养剂'; $itmk[5] = 'ME'; $itme[5] = 50; $itms[5] = 12; $itm[6] = '测试道具'; $itmk[6] = 'ME'; $itme[6] = 50; $itms[6] = 12; $wep = '神圣手榴弹'; $wepk = 'WC'; $wepe = 8765; $weps = 876; $wepsk = 'd'; $arb = '守桥人的长袍'; $arbk = 'DB'; $arbe = 3200; $arbs = 100; $arbsk = 'A'; $arh = '千年积木'; $arhk = 'DH'; $arhe = 1600; $arhs = 120; $arhsk = 'c'; $ara = '皇家钻戒'; $arak = 'DA'; $arae = 1600; $aras = 120; $arask = 'a'; $arf = '火弩箭'; $arfk = 'DF'; $arfe = 1600; $arfs = 120; $arfsk = 'M'; $art = '贤者之石'; $artk = 'A'; $arte = 9999; $arts = 999; $artsk = 'H'; $wp = $wk = $wg = $wc = $wd = $wf = 600; } elseif ($name == '霜火协奏曲') { $art = '击败思念的纹章'; $artk = 'A'; $arte = 1; $arts = 1; $artsk = 'zZ'; } elseif ($name == '时期') { $art = '击败鬼畜级思念的纹章'; $artk = 'A'; $arte = 1; $arts = 1; $artsk = 'zZ'; } elseif ($name == '枪毙的某神' || $name == '精灵们的手指舞') { $art = 'TDG地雷的证明'; $artk = 'A'; $arte = 1; $arts = 1; $artsk = 'zZ'; } $state = 0; $bid = 0; $inf = $teamID = $teamPass = ''; /////////////////////////////////////////////////////////////// require config('card', $gamecfg); if ($card == 81) { $arr = array('0'); $r = rand(1, 100); if ($r <= 20) { $arr = $cardindex['S']; } else { if ($r <= 60) { $arr = $cardindex['A']; } else { if ($r <= 80) { $arr = $cardindex['B']; } else { $arr = $cardindex['C']; } } } $c = count($arr) - 1; $card = $arr[rand(0, $c)]; } $cardfix = $cards[$card]; $cardname = $carddesc[$card]['name']; $cardrare = $carddesc[$card]['rare']; /////////////////////////////////////////////////////////////// foreach ($cardfix as $key => $value) { if (substr($key, 0, 3) == "itm") { $tt = substr($key, -1); $ts = substr($key, 0, strlen($key) - 1); ${$ts}[$tt] = $value; } else { ${$key} = $value; } } /////////////////////////////////////////////////////////////// $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,card,cardname,skillpoint) VALUES ('{$name}','{$pass}','{$type}','{$endtime}','{$gd}','{$sNo}','{$icon}','{$club}','{$hp}','{$mhp}','{$sp}','{$msp}','{$att}','{$def}','{$pls}','{$lvl}','{$exp}','{$money}','{$bid}','{$inf}','{$rage}','{$pose}','{$tactic}','{$state}','{$killnum}','{$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}','{$itm['0']}','{$itmk['0']}','{$itme['0']}','{$itms['0']}','{$itm['1']}','{$itmk['1']}','{$itme['1']}','{$itms['1']}','{$itm['2']}','{$itmk['2']}','{$itme['2']}','{$itms['2']}','{$itm['3']}','{$itmk['3']}','{$itme['3']}','{$itms['3']}','{$itm['4']}','{$itmk['4']}','{$itme['4']}','{$itms['4']}','{$itm['5']}','{$itmk['5']}','{$itme['5']}','{$itms['5']}','{$itm['6']}','{$itmk['6']}','{$itme['6']}','{$itms['6']}','{$wepsk}','{$arbsk}','{$arhsk}','{$arask}','{$arfsk}','{$artsk}','{$itmsk['0']}','{$itmsk['1']}','{$itmsk['2']}','{$itmsk['3']}','{$itmsk['4']}','{$itmsk['5']}','{$itmsk['6']}','{$card}','{$cardname}','{$skillpoint}')"); $db->query("UPDATE {$gtablepre}users SET lastgame='{$gamenum}' WHERE username='******'"); /////////////////////////////////////////////////////////////// $pp = \player\fetch_playerdata($name); //为了灵活性,直接处理所有技能,在固定称号的时候记得要写入skills不然进游戏就没技能了 //if (isset($cardfix['club'])){ // \clubbase\club_acquire($cardfix['club'],$pp); //} if (is_array($cardfix['skills'])) { foreach ($cardfix['skills'] as $key => $value) { if (defined('MOD_SKILL' . $key)) { \skillbase\skill_acquire($key, $pp); if ($value > 0) { \skillbase\skill_setvalue($key, 'lvl', $value, $pp); } } } } \player\player_save($pp); /////////////////////////////////////////////////////////////// if ($cardrare == "S") { $rarecolor = "orange"; } else { if ($cardrare == 'A') { $rarecolor = "linen"; } else { if ($cardrare == 'B') { $rarecolor = "brickred"; } else { if ($cardrare == 'C') { $rarecolor = "seagreen"; } } } } if ($udata['groupid'] >= 6 || $cuser == $gamefounder) { addnews($now, 'newgm', "<span class=\"" . $rarecolor . "\">" . $cardname . '</span> ' . $name, "{$sexinfo[$gd]}{$sNo}号", $ip); } else { addnews($now, 'newpc', "<span class=\"" . $rarecolor . "\">" . $cardname . '</span> ' . $name, "{$sexinfo[$gd]}{$sNo}号", $ip); } if ($validnum >= $validlimit && $gamestate == 20) { $gamestate = 30; } //$gamestate = $validnum < $validlimit ? 20 : 30; save_gameinfo(); }
function addnpc($xtype, $xsub, $num, $time = 0, $xpls = 0) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'map', 'logger', 'addnpc', 'lvlctl', 'skillbase')); $time = $time == 0 ? $now : $time; $plsnum = sizeof($plsinfo) - sizeof($hidden_arealist); $npc = array_merge($npcinit, $anpcinfo[$xtype]); //$npcwordlist = Array(); $summon_pid = -1; //禁止NPC随机刷新至以下地区 $deny_add_arr = array(0, 34, 99); if (!$npc) { return; } else { for ($i = 0; $i < $num; $i++) { $npc = array_merge($npc, $npc['sub'][$xsub]); $npc['type'] = $xtype; $npc['endtime'] = $time; $npc['exp'] = round(($npc['lvl'] * 2 + 1) * $baseexp); $npc['sNo'] = $i; $npc['hp'] = $npc['mhp']; $npc['sp'] = $npc['msp']; $spid = uniqid('', true); $npc['pass'] = $spid; if (!isset($npc['state'])) { $npc['state'] = 0; } $npc['wp'] = $npc['wk'] = $npc['wg'] = $npc['wc'] = $npc['wd'] = $npc['wf'] = $npc['skill']; if ($npc['gd'] == 'r') { $npc['gd'] = rand(0, 1) ? 'm' : 'f'; } //之前的写法会导致一旦召唤$num>1数量的NPC,所有NPC都会刷到同一个地方 //因此用$npc['npls']代替$npc['pls'] //不得不说太蠢了,所以希望以后有机会能大改addnpc函数 $npc['npls'] = $xpls ? $xpls : $npc['pls']; if ($npc['pls'] == 99) { $areaarr = array_slice($arealist, $areanum + 1); if (empty($areaarr)) { $npc['npls'] = 0; } else { while (in_array($npc['npls'], $deny_add_arr)) { $npc['npls'] = $areaarr[rand(0, sizeof($areaarr))]; } } } elseif (is_array($npc['pls'])) { $epls = rand(0, sizeof($npc['pls'])); $npc['npls'] = $npc['pls'][$epls]; } $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['npls'] . "','" . $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'] . "')"); $newsname = $typeinfo[$xtype] . ' ' . $npc['name']; //$npcwordlist[] = $typeinfo[$type].' '.$npc['name']; $result = $db->query("SELECT pid FROM {$tablepre}players where pass='******' AND type>0"); if ($db->num_rows($result)) { $zz = $db->fetch_array($result); $summon_pid = $zz['pid']; } else { //出BUG了 $summon_pid = -1; } if (is_array($npc['skills'])) { $qry = "SELECT * FROM {$tablepre}players WHERE type>'0' ORDER BY pid DESC LIMIT 1"; $result = $db->query($qry); $pr = $db->fetch_array($result); $pp = \player\fetch_playerdata_by_pid($pr['pid']); foreach ($npc['skills'] as $key => $value) { if (defined('MOD_SKILL' . $key)) { \skillbase\skill_acquire($key, $pp); if ($value > 0) { \skillbase\skill_setvalue($key, 'lvl', $value, $pp); } } } \player\player_save($pp); } } if ($num > 1) { addnews($now, 'addnpcs', $newsname, $num); } else { addnews($now, 'addnpc', $newsname); } } /* if($num > $npc['num']){ //if($num > 1){ $newsname=$typeinfo[$xtype]; addnews($time, 'addnpcs', $newsname,$i); }else{ // for($i=0;$i< $num;$i++){ // addnews($time, 'addnpc', $npcwordlist[$i]); // } //$newsname=$typeinfo[$type].' '.$npc['name']; //addnews($time, 'addnpc', $newsname); } */ return $summon_pid; }
function player_kill_enemy(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'logger', 'player')); if ($active) { $log .= "<span class=\"yellow\">{$pd['name']}</span><span class=\"red\">被你杀死了!</span><br>"; $pd['battlelog'] .= "<span class=\"red\">你被{$pa['name']}杀死了!</span><br>"; } else { $log .= "<span class=\"red\">你被{$pa['name']}杀死了!</span><br>"; $pa['battlelog'] .= "<span class=\"yellow\">{$pd['name']}</span><span class=\"red\">被你杀死了!</span><br>"; } $pd['state'] = $pd['deathmark']; $kilmsg = \player\kill($pa, $pd); if ($active) { if ($kilmsg != '') { $log .= "<span class=\"yellow\">你对{$pd['name']}说:“{$kilmsg}”</span><br>"; } } else { if ($kilmsg != '') { $log .= "<span class=\"yellow\">{$pa['name']}对你说:“{$kilmsg}”</span><br>"; } } \player\player_save($pa); \player\player_save($pd); if ($active) { \player\load_playerdata($pa); } else { \player\load_playerdata($pd); } }
function senditem() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'map', 'logger', 'player', 'metman', 'input')); $mateid = str_replace('team', '', $action); if (!$mateid || strpos($action, 'team') === false) { $log .= '<span class="yellow">你没有遇到队友,或已经离开现场!</span><br>'; $action = ''; $mode = 'command'; return; } $edata = \player\fetch_playerdata_by_pid($mateid); if (!isset($edata)) { $log .= "对方不存在!<br>"; $action = ''; $mode = 'command'; return; } if ($edata['pls'] != $pls) { $log .= '<span class="yellow">' . $edata['name'] . '</span>已经离开了<span class="yellow">' . $plsinfo[$pls] . '</span>。<br>'; $mode = 'command'; $action = ''; return; } elseif ($edata['hp'] <= 0) { $log .= '<span class="yellow">' . $edata['name'] . '</span>已经死亡,不能接受物品。<br>'; $mode = 'command'; $action = ''; return; } elseif (!$teamID || $edata['teamID'] != $teamID || $pid == $edata['pid']) { $log .= '<span class="yellow">' . $edata['name'] . '</span>并非你的队友,不能接受物品。<br>'; $mode = 'command'; $action = ''; return; } if ($message) { $log .= "<span class=\"lime\">你对{$edata['name']}说:“{$message}”</span><br>"; $x = "<span class=\"lime\">{$name}对你说:“{$message}”</span>"; if (!$edata['type']) { \logger\logsave($edata['pid'], $now, $x, 'c'); } } if ($command != 'back') { $itmn = substr($command, 4); if (!${'itms' . $itmn}) { $log .= '此道具不存在!'; $action = ''; $mode = 'command'; return; } $itm =& ${'itm' . $itmn}; $itmk =& ${'itmk' . $itmn}; $itme =& ${'itme' . $itmn}; $itms =& ${'itms' . $itmn}; $itmsk =& ${'itmsk' . $itmn}; for ($i = 1; $i <= 6; $i++) { if (!$edata['itms' . $i]) { $edata['itm' . $i] = $itm; $edata['itmk' . $i] = $itmk; $edata['itme' . $i] = $itme; $edata['itms' . $i] = $itms; $edata['itmsk' . $i] = $itmsk; $log .= "你将<span class=\"yellow\">" . $edata['itm' . $i] . "</span>送给了<span class=\"yellow\">{$edata['name']}</span>。<br>"; $x = "<span class=\"yellow\">{$name}</span>将<span class=\"yellow\">" . $edata['itm' . $i] . "</span>送给了你。"; if (!$edata['type']) { \logger\logsave($edata['pid'], $now, $x, 't'); } addnews($now, 'senditem', $name, $edata['name'], $itm); \player\player_save($edata); $itm = $itmk = $itmsk = ''; $itme = $itms = 0; $action = ''; return; } } $log .= "<span class=\"yellow\">{$edata['name']}</span> 的包裹已经满了,不能赠送物品。<br>"; } $action = ''; $mode = 'command'; return; }
function attack_finish(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } player_damaged_enemy($pa, $pd, $active); if ($pd['hp'] <= 0) { player_kill_enemy($pa, $pd, $active); \player\player_save($pa); \player\player_save($pd); if ($active) { \player\load_playerdata($pa); } else { \player\load_playerdata($pd); } } unset($pa['physical_dmg_dealt']); }
function itemdepot_load($i) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'logger', 'itemmain', 'itemdepot')); if ($pls != 19) { $log .= "<span class='red'>你所在的位置没有仓库功能,如果存在BUG,请告知管理员。</span><br>"; return; } if ($money < $loaditem_cost) { $log .= "<span class='red'>你身上的钱不足以支付取出道具的保管费……卧槽竟然二次收费,奸商啊!</span><br>"; return; } $idpt = change_itemdepot('decode', $itemdepot); $idpt_num = sizeof($idpt); if (!is_numeric($i) || $i > $max_saveitem_num || $i < 0 || $idpt[$i]['itms'] <= 0 && $idpt[$i]['itms'] !== '∞') { $log .= "<span class='red'>要取出的道具信息错误,请返回重新输入。</span><br>"; return; } $money -= $loaditem_cost; $itm0 = $idpt[$i]['itm']; $itmk0 = $idpt[$i]['itmk']; $itme0 = $idpt[$i]['itme']; $itms0 = $idpt[$i]['itms']; $itmsk0 = $idpt[$i]['itmsk']; unset($idpt[$i]); $log .= "你成功将道具<span class='yellow'>{$itm0}</span>从仓库中取了出来!<br>同时你也不得不支付了保管费<span class='yellow'>{$loaditem_cost}</span>元……你感觉自己的心在滴血。<br>"; addnews($now, 'itemdepot_load', $name, $itm0); \itemmain\itemget(); sort($idpt); $idpt = change_itemdepot('encode', $idpt); $itemdepot = $idpt; \player\player_save(\player\fetch_playerdata_by_pid($pid)); }
function rs_game($xmode = 0) { if (eval(__MAGIC__)) { return $___RET_VALUE; } $chprocess($xmode); eval(import_module('sys', 'map', 'player', 'npc', 'lvlctl', 'skillbase')); if ($xmode & 8) { //echo " - NPC初始化 - "; $db->query("DELETE FROM {$tablepre}players WHERE type>0 "); //$typenum = sizeof($typeinfo); $plsnum = sizeof($plsinfo) - sizeof($hidden_arealist); $npcqry = ''; foreach ($npcinfo as $i => $npcs) { if (!empty($npcs)) { if (sizeof($npcs['sub']) > $npcs['num']) { shuffle($npcs['sub']); } for ($j = 1; $j <= $npcs['num']; $j++) { $npc = array_merge($npcinit, $npcs); //$npc = $npcinfo[$i]; $npc['type'] = $i; $npc['endtime'] = $now; $npc['sNo'] = $j; $subnum = sizeof($npc['sub']); $sub = $j % $subnum; $npc = array_merge($npc, $npc['sub'][$sub]); $npc['hp'] = $npc['mhp']; $npc['sp'] = $npc['msp']; $npc['exp'] = round(2 * $npc['lvl'] * $baseexp); $npc['wp'] = $npc['wk'] = $npc['wg'] = $npc['wc'] = $npc['wd'] = $npc['wf'] = $npc['skill']; if ($npc['gd'] == 'r') { $npc['gd'] = rand(0, 1) ? 'm' : 'f'; } $rpls = rand(1, $plsnum - 1); while ($rpls == 34) { $rpls = rand(1, $plsnum - 1); } if ($npc['pls'] == 99) { $npc['pls'] = $rpls; } elseif (is_array($npc['pls'])) { $epls = rand(0, sizeof($npc['pls'])); $npc['pls'] = $npc['pls'][$epls]; } $npc['state'] = 0; $npcqrylit = "("; $npcqry = "("; foreach ($npc as $key => $value) { if (in_array($key, $db_player_structure)) { $npcqrylit .= $key . ","; $npcqry .= "'" . $npc[$key] . "',"; } } $npcqrylit = substr($npcqrylit, 0, strlen($npcqrylit) - 1) . ")"; $npcqry = substr($npcqry, 0, strlen($npcqry) - 1) . ")"; $qry = "INSERT INTO {$tablepre}players " . $npcqrylit . " VALUES " . $npcqry; $db->query($qry); unset($qry); if (is_array($npc['skills'])) { $qry = "SELECT * FROM {$tablepre}players WHERE type>'0' ORDER BY pid DESC LIMIT 1"; $result = $db->query($qry); $pr = $db->fetch_array($result); $pp = \player\fetch_playerdata_by_pid($pr['pid']); foreach ($npc['skills'] as $key => $value) { if (defined('MOD_SKILL' . $key)) { \skillbase\skill_acquire($key, $pp); if ($value > 0) { \skillbase\skill_setvalue($key, 'lvl', $value, $pp); } } } \player\player_save($pp); } unset($npc); } } } } }
function change_trap($i, $cway) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'itemmain', 'logger', 'remakegun')); if ($pls != 31) { $log .= "<span class='red'>该地区不存在陷阱改造工作台,请重新输入指令。</span><br>"; return; } if (!is_numeric($i) || !$i || $i > 6 || $i < 1 || ${'itmk' . $i} !== 'WD' && $cway == 'dtt' || strpos(${'itmk' . $i}, 'T') === false && $cway == 'ttd') { $log .= "<span class='red'>要改造的陷阱或爆炸物选择错误,请重新输入指令。</span><br>"; return; } if ($cway !== 'dtt' && $cway !== 'ttd') { $log .= "<span class='red'>改造方式选择错误,请重新输入指令。</span><br>"; return; } $citm['itm'] =& ${'itm' . $i}; $citm['itmk'] =& ${'itmk' . $i}; $citm['itme'] =& ${'itme' . $i}; $citm['itms'] =& ${'itms' . $i}; $citm['itmsk'] =& ${'itmsk' . $i}; if (strpos($citm['itm'], '便携式') !== false || strpos($citm['itm'], '埋设式') !== false) { $log .= "<span class='red'>该道具已被改造过,不可重复改造!</span><br>"; return; } $change_succ_obbs = round($wd * 0.35); $log .= "你将要改造的易爆品放在了工作台上,开始小心翼翼的拆解它……<br>"; $log .= "…………<br>"; if ($cway == 'ttd') { if (rand(1, 100) <= $change_succ_obbs) { $log .= "<span class='yellow'>“呼……”</span><br>完成了手中精密的工作,你如释重负般长吁了一口气。<br>这样看来,陷阱的改造工作就<span class='red'>顺利完成</span>了!<br>"; if (strpos($citm['itmk'], 'TNc') !== false) { $itm0 = '便携式' . $citm['itm']; $itmk0 = 'WD'; $itme0 = round(32675 * (rand(85, 135) / 100)); $itms0 = '∞'; $itmsk0 = 'nxd'; } else { $itm0 = '便携式' . $citm['itm']; $itmk0 = 'WD'; $itme0 = round($citm['itme'] * (rand(85, 135) / 100)); $itms0 = $citm['itms']; $itmsk0 = 'd'; } addnews($now, 'ct_succ', $name, $citm['itm'], '陷阱', '爆炸物'); } else { $fail_dmg = strpos($citm['itmk'], 'TNc') !== false ? round(32675 * (rand(55, 95) / 100)) : round($citm['itme'] * (rand(55, 95) / 100)); $log .= "正当你谨慎的拆开道具的外壳时,你听到了“滴”的一声……<br>在下一个瞬间,你就被爆炸带来的巨大冲击力掀翻在地。<br><span class='yellow'>在猛烈的爆炸中,你受到了<span class='red'>{$fail_dmg}</span>点伤害!</span><br>"; if ($hp > $fail_dmg) { $hp -= $fail_dmg; } else { $hp = 0; $state = 98; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = ''; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); } addnews($now, 'ct_fail', $name, $citm['itm'], '陷阱', '爆炸物', $fail_dmg); } \itemmain\itms_reduce($citm, 1); if ($itms0) { \itemmain\itemget(); } } elseif ($cway == 'dtt') { if (rand(1, 100) <= $change_succ_obbs) { $log .= "<span class='yellow'>“呼……”</span><br>完成了手中精密的工作,你如释重负般长吁了一口气。<br>这样看来,爆炸物的改造工作就<span class='red'>顺利完成</span>了!<br>"; $itm0 = '埋设式' . $citm['itm']; $itmk0 = 'TN'; $itme0 = $citm['itms'] > 5 || $citm['itms'] == '∞' ? round($citm['itme'] * 5) : round($citm['itme'] * $citm['itms']); $itms0 = 1; $itmsk0 = ''; addnews($now, 'ct_succ', $name, $citm['itm'], '爆炸物', '陷阱'); } else { $fail_dmg = round($citm['itme'] * (rand(55, 95) / 100)); $log .= "正当你谨慎的拆开道具的外壳时,你听到了“滴”的一声……<br>在下一个瞬间,你就被爆炸带来的巨大冲击力掀翻在地。<br><span class='yellow'>在猛烈的爆炸中,你受到了<span class='red'>{$fail_dmg}</span>点伤害!</span><br>"; if ($hp > $fail_dmg) { $hp -= $fail_dmg; addnews($now, 'ct_fail', $name, $citm['itm'], '爆炸物', '陷阱', $fail_dmg); } else { $hp = 0; $state = 98; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = ''; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); } } \itemmain\itms_reduce($citm, 1); if ($itms0) { \itemmain\itemget(); } } else { return; } }
function getcorpse($item) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'logger')); $corpseid = strpos($action, 'corpse') === 0 ? str_replace('corpse', '', $action) : str_replace('pacorpse', '', $action); if (!$corpseid || strpos($action, 'corpse') === false) { $log .= '<span class="yellow">你没有遇到尸体,或已经离开现场!</span><br>'; $action = ''; $mode = 'command'; return; } $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$corpseid}'"); if (!$db->num_rows($result)) { $log .= '对方不存在!<br>'; $action = ''; $mode = 'command'; return; } //$edata = $db->fetch_array($result); $edata = \player\fetch_playerdata_by_pid($corpseid); if ($edata['hp'] > 0) { $log .= '对方尚未死亡!<br>'; $action = ''; $mode = 'command'; return; } elseif ($edata['pls'] != $pls) { $log .= '对方跟你不在同一个地图!<br>'; $action = ''; $mode = 'command'; return; } if ($item == 'wep') { $itm0 = $edata['wep']; $itmk0 = $edata['wepk']; $itme0 = $edata['wepe']; $itms0 = $edata['weps']; $itmsk0 = $edata['wepsk']; $edata['wep'] = $edata['wepk'] = $edata['wepsk'] = ''; $edata['wepe'] = $edata['weps'] = 0; } elseif (strpos($item, 'ar') === 0) { $itm0 = $edata[$item]; $itmk0 = $edata[$item . 'k']; $itme0 = $edata[$item . 'e']; $itms0 = $edata[$item . 's']; $itmsk0 = $edata[$item . 'sk']; $edata[$item] = $edata[$item . 'k'] = $edata[$item . 'sk'] = ''; $edata[$item . 'e'] = $edata[$item . 's'] = 0; } elseif (strpos($item, 'itm') === 0) { $itmn = substr($item, 3, 1); $itm0 = $edata['itm' . $itmn]; $itmk0 = $edata['itmk' . $itmn]; $itme0 = $edata['itme' . $itmn]; $itms0 = $edata['itms' . $itmn]; $itmsk0 = $edata['itmsk' . $itmn]; $edata['itm' . $itmn] = $edata['itmk' . $itmn] = $edata['itmsk' . $itmn] = ''; $edata['itme' . $itmn] = $edata['itms' . $itmn] = 0; } elseif ($item == 'money') { $money += $edata['money']; $log .= '获得了金钱 <span class="yellow">' . $edata['money'] . '</span>。<br>'; $edata['money'] = 0; \player\player_save($edata); $action = ''; $mode = 'command'; return; } elseif ($item == 'destroy') { $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; $edata['money'] = 0; $edata['state'] = 16; \player\player_save($edata); $log .= '尸体成功销毁!'; $action = ''; $mode = 'command'; return; } else { $mode = 'command'; $action = ''; return; } \player\player_save($edata); if (!$itms0 || !$itmk0 || $itmk0 == 'WN' || $itmk0 == 'DN') { $log .= '该物品不存在!'; } else { \itemmain\itemget(); } $action = ''; $mode = 'command'; return; }
function action435() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('skill435', 'sys', 'map', 'player', 'logger', 'input')); if (!\skillbase\skill_query(435) || !check_unlocked435($sdata)) { $log .= '你没有这个技能。<br>'; return; } $skillpara1 = (int) $skillpara1; $skillpara2 = (int) $skillpara2; $skillpara3 = (int) $skillpara3; if ($skillpara1 == 1) { //雇佣 $x = (int) \skillbase\skill_getvalue(435, 't'); if ($x >= $skill435_lim) { $log .= '发动次数已经达到了上限。<br>'; return; } if ($money < $skill435_need) { $log .= '金钱不足。<br>'; return; } if (in_array($pls, $arealist) && (array_search($pls, $arealist) > $areanum || $hack)) { addnews(0, 'bskill435', $name); $money -= $skill435_need; $x++; \skillbase\skill_setvalue(435, 't', $x); $tot = count($skill435_npc['sub']); $tp = 0; for ($i = 0; $i < $tot; $i++) { $tp += $skill435_npc['sub'][$i]['probability']; } $dice = rand(1, $tp); for ($i = 0; $i < $tot; $i++) { if ($dice <= $skill435_npc['sub'][$i]['probability']) { skill435_summon_npc($i); break; } else { $dice -= $skill435_npc['sub'][$i]['probability']; } } } else { $log .= '不能在禁区招募保安。<br>'; return; } } else { $x = (int) \skillbase\skill_getvalue(435, 't'); if ($skillpara2 < 1 || $skillpara2 > $x) { $log .= '参数错误。<br>'; return; } if ((int) \skillbase\skill_getvalue(435, 'h' . $skillpara2) != 1) { $log .= '该保安已经与你没有雇佣关系。<br>'; return; } $spid = (int) \skillbase\skill_getvalue(435, 'p' . $skillpara2); if ($spid <= 0) { $log .= '出现了一个BUG,请报告管理员。抱歉。<br>'; return; } $employee = \player\fetch_playerdata_by_pid($spid); if ($employee['hp'] <= 0) { $log .= '该保安已经死亡!<br>'; return; } $ty = (int) \skillbase\skill_getvalue(435, 's' . $skillpara2); if ($skillpara1 == 2) { //解雇 $lastsal = (int) \skillbase\skill_getvalue(435, 'l' . $skillpara2); if ($now - $lastsal >= 60) { //这说明该保安工资处于拖欠状态 $employee['money'] += $money; $money = 0; } if ($skill435_npc['sub'][$ty]['mercfireaction'] == 1) { $employee['pls'] = 999; } \skillbase\skill_setvalue(435, 'h' . $skillpara2, 0); $log .= '解雇成功。'; } else { if ($skillpara1 == 3) { //移动 $cost = $skill435_npc['sub'][$ty]['mercsalary'] * 2; if ($money >= $cost) { if ($skillpara3 == $employee['pls']) { $log .= '保安已经在该地点,不需移动。<br>'; return; } if (in_array($skillpara3, $arealist) && (array_search($skillpara3, $arealist) > $areanum || $hack)) { $money -= $cost; $employee['money'] += $cost; $employee['pls'] = $skillpara3; $log .= "消耗了<span class=\"yellow\">{$cost}</span>元,保安<span class=\"yellow\">{$employee['name']}</span>移动到了<span class=\"yellow\">{$plsinfo[$employee['pls']]}</span>。<br>"; } else { $log .= '不能将保安移动到禁区。<br>'; return; } } else { $log .= '金钱不足。'; return; } } else { if ($skillpara1 == 4) { //预付工资 if ($skillpara3 < 0) { $log .= '不能倒贴工资。<br>'; return; } if ($skillpara3 > 20) { $skillpara3 = 20; } //防溢出。。。 $cost = $skill435_npc['sub'][$ty]['mercsalary'] * $skillpara3; if ($money >= $cost) { $lastsal = (int) \skillbase\skill_getvalue(435, 'l' . $skillpara2); $lastsal += $skillpara3 * 60; \skillbase\skill_setvalue(435, 'l' . $skillpara2, $lastsal); $money -= $cost; $employee['money'] += $cost; $log .= "消耗了<span class=\"yellow\">{$cost}</span>元,预付了保安<span class=\"yellow\">{$employee['name']}</span>将来<span class=\"yellow\">{$skillpara3}</span>分钟的工资。<br>"; } else { $log .= '金钱不足。<br>'; return; } } else { $log .= '未知参数。<br>'; return; } } } \player\player_save($employee); } }
function deathnote($itmd = 0, $dnname = '', $dndeath = '', $dngender = 'm', $dnicon = 1, $sfn) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'logger', 'player')); $dn =& ${'itm' . $itmd}; $dnk =& ${'itmk' . $itmd}; $dne =& ${'itme' . $itmd}; $dns =& ${'itms' . $itmd}; $dnsk =& ${'itmsk' . $itmd}; $mode = 'command'; if ($dn != '■DeathNote■') { $log .= '道具使用错误!<br>'; return; } elseif ($dns <= 0) { $dn = $dnk = $dnsk = ''; $dne = $dns = 0; $log .= '道具不存在!<br>'; return; } if (!$dnname) { return; } if ($dnname == $sfn) { $log .= "你不能自杀。<br>"; return; } if (!$dndeath) { $dndeath = '心脏麻痹'; } //echo "name=$dnname,gender = $dngender,icon=$dnicon,"; $result = $db->query("SELECT * FROM {$tablepre}players WHERE name='{$dnname}' AND type = 0"); if (!$db->num_rows($result)) { $log .= "你使用了■DeathNote■,但是什么都没有发生。<br>哪里出错了?<br>"; } else { $edata = \player\fetch_playerdata($dnname); if ($dngender != $edata['gd'] || $dnicon != $edata['icon']) { $log .= "你使用了■DeathNote■,但是什么都没有发生。<br>哪里出错了?<br>"; } else { $log .= "你将<span class=\"yellow b\">{$dnname}</span>的名字写在了■DeathNote■上。<br><span class=\"yellow b\">{$dnname}</span>被你杀死了。"; $edata['state'] = 28; $sdata['attackwith'] = $dndeath; \player\update_sdata(); \player\kill($sdata, $edata); \player\player_save($edata); \player\player_save($sdata); \player\load_playerdata($sdata); $killnum++; } } $dns--; if ($dns <= 0) { $log .= '■DeathNote■突然燃烧起来,转瞬间化成了灰烬。<br>'; $dn = $dnk = $dnsk = ''; $dne = $dns = 0; } return; }
function itemuse(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'itemmain', 'logger')); $itm =& $theitem['itm']; $itmk =& $theitem['itmk']; $itme =& $theitem['itme']; $itms =& $theitem['itms']; $itmsk =& $theitem['itmsk']; if (strpos($itmk, 'P') === 0) { if (strpos($itmk, '2') === 2) { $damage = round($itme * 2); } elseif (strpos($itmk, '1') === 2) { $damage = round($itme * 1.5); } else { $damage = round($itme); } if (defined('MOD_WOUND')) { \wound\get_inf('p'); } $hp -= $damage; $playerflag = 0; if ($itmsk && is_numeric($itmsk)) { $playerflag = 1; } $selflag = 0; if ($playerflag && $itmsk == $pid) { $selflag = 1; } if ($playerflag) { $wdata = \player\fetch_playerdata_by_pid($itmsk); $wprefix = '<span class="yellow">' . $wdata['name'] . '</span>'; if ($selflag) { $wprefix = '你自己'; } $log .= "糟糕,<span class=\"yellow\">{$itm}</span>中被{$wprefix}掺入了毒药!你受到了<span class=\"dmg\">{$damage}</span>点伤害!<br>"; addnews($now, 'poison', $name, $wdata['name'], $itm); if (!$selflag) { send_poison_enemylog($itm, $itmsk); } } else { $log .= "糟糕,<span class=\"yellow\">{$itm}</span>有毒!你受到了<span class=\"dmg\">{$damage}</span>点伤害!<br>"; } if ($hp <= 0) { $state = 26; \player\update_sdata(); if ($playerflag && !$selflag) { $sdata['bid'] = $itmsk; $log .= "你被<span class=\"red\">" . $wdata['name'] . "</span>毒死了!"; } else { if ($playerflag) { $sdata['bid'] = $itmsk; $wdata =& $sdata; $log .= "你被毒死了!"; } else { $wdata =& $sdata; $sdata['sourceless'] = 1; $log .= "你被毒死了!"; } } $wdata['attackwith'] = $itm; $killmsg = \player\kill($wdata, $sdata); if (isset($sdata['sourceless'])) { unset($sdata['sourceless']); } if ($killmsg) { $log .= "<span class=\"yellow\">{$wdata['name']}对你说:“{$killmsg}”</span><br>"; } if ($playerflag && !$selflag) { \player\player_save($wdata); } \player\player_save($sdata); \player\load_playerdata($sdata); } \itemmain\itms_reduce($theitem); return; } if ((strpos($itmk, 'Y') === 0 || strpos($itmk, 'Z') === 0) && $itm == '毒药') { include template(MOD_POISON_POISON); $cmd = ob_get_contents(); ob_clean(); return; } $chprocess($theitem); }
function getcorpse($item) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'logger')); $corpseid = strpos($action, 'corpse') === 0 ? str_replace('corpse', '', $action) : str_replace('pacorpse', '', $action); if (!$corpseid || strpos($action, 'corpse') === false) { $log .= '<span class="yellow">你没有遇到尸体,或已经离开现场!</span><br>'; $action = ''; $mode = 'command'; return; } $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$corpseid}'"); if (!$db->num_rows($result)) { $log .= '对方不存在!<br>'; $action = ''; $mode = 'command'; return; } //$edata = $db->fetch_array($result); $edata = \player\fetch_playerdata_by_pid($corpseid); if ($edata['hp'] > 0) { $log .= '对方尚未死亡!<br>'; $action = ''; $mode = 'command'; return; } elseif ($edata['pls'] != $pls) { $log .= '对方跟你不在同一个地图!<br>'; $action = ''; $mode = 'command'; return; } getcorpse_action($edata, $item); \player\player_save($edata); return; }
function itemuse(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'itemmain', 'logger')); $itm =& $theitem['itm']; $itmk =& $theitem['itmk']; $itme =& $theitem['itme']; $itms =& $theitem['itms']; $itmsk =& $theitem['itmsk']; if (strpos($itmk, 'Y') === 0 || strpos($itmk, 'Z') === 0) { if ($itm == '装有H173的注射器') { $log .= '你考虑了一会,<br>把袖子卷了起来,给自己注射了H173。<br>'; $deathdice = rand(0, 8191); if ($deathdice == 8191 || $club == 15) { $log .= '你突然感觉到一种不可思议的力量贯通全身!<br>'; $wp = $wk = $wg = $wc = $wd = $wf = 3000; $att = $def = 5000; $club = 15; addnews($now, 'suisidefail', $name); $itm = $itmk = $itmsk = ''; $itme = $itms = 0; } else { $state = 31; $log .= '你失去了知觉。<br>'; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = $itm; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); } return; } elseif (strpos($itm, '溶剂SCP-294') === 0) { if (defined('MOD_CLUBBASE')) { \clubbase\club_lost(); } $club = 17; if (defined('MOD_CLUBBASE')) { \clubbase\club_acquire($club); } if ($itm == '溶剂SCP-294_PT_Poini_Kune') { $log .= '你考虑了一会,一扬手喝下了杯中中冒着紫色幽光的液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>'; if ($mhp > 573) { $up = rand(0, $mhp + $msp); } else { $up = rand(0, 573); } if ($club == 17) { $hpdown = $spdown = round($up * 1.5); } elseif ($club == 13) { $hpdown = $up + 200; $spdown = $up; } else { $hpdown = $spdown = $up; } $wp += $up; $wk += $up; $wg += $up; $wc += $up; $wd += $up; $wf += $up; $rp += 500; $mhp = $mhp - $hpdown; $msp = $msp - $spdown; $log .= '你的生命上限减少了<span class="yellow">' . $hpdown . '</span>点,体力上限减少了<span class="yellow">' . $spdown . '</span>点,而你的全系熟练度提升了<span class="yellow">' . $up . '</span>点!<br>'; } elseif ($itm == '溶剂SCP-294_PT_Arnval') { $log .= '你考虑了一会,一扬手喝下了杯中中冒着白色气泡的清澈液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>'; if ($msp > 573) { $up = rand(0, $msp * 1.5); } else { $up = rand(0, 573); } $mhp = $mhp + $up; $def = $def + $up; $down = $club == 17 ? round($up * 1.5) : $up; $rp += 200; $msp = $msp - $down; $att = $att - $down; $log .= '你的体力上限和攻击力减少了<span class="yellow">' . $down . '</span>点,而你的生命上限和防御力提升了<span class="yellow">' . $up . '</span>点!<br>'; } elseif ($itm == '溶剂SCP-294_PT_Strarf') { $log .= '你考虑了一会,一扬手喝下了杯中中冒着灰色气泡的清澈液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>'; if ($mhp > 573) { $up = rand(0, $msp * 1.5); } else { $up = rand(0, 573); } $msp = $msp + $up; $att = $att + $up; $down = $club == 17 ? round($up * 1.5) : $up; $rp += 200; $mhp = $mhp - $down; $def = $def - $down; $log .= '你的生命上限和防御力减少了<span class="yellow">' . $down . '</span>点,而你的体力上限和攻击力提升了<span class="yellow">' . $up . '</span>点!<br>'; } elseif ($itm == '溶剂SCP-294_PT_ErulTron') { $log .= '你考虑了一会,<br>一扬手喝下了杯中中冒着粉红光辉的液体。<br>你感到你整个人貌似变得更普通了点。<br>'; $lvl = $exp = 0; $att = round($att * 0.8); $def = round($def * 0.8); $log .= '<span class="yellow">你的等级和经验值都归0了!但是,你的攻击力和防御力也变得更加普通了。</span><br>'; } if ($att < 0) { $att = 0; } if ($def < 0) { $def = 0; } if ($hp > $mhp) { $hp = $mhp; } if ($sp > $msp) { $sp = $msp; } $deathflag = false; if ($mhp <= 0) { $hp = $mhp = 0; $deathflag = true; } if ($msp <= 0) { $sp = $msp = 0; $deathflag = true; } if ($deathflag) { $log .= '<span class="yellow">看起来你的身体无法承受药剂的能量……<br>果然这一点都不值得……<br></span>'; $state = 34; \player\update_sdata(); $sdata['sourceless'] = 1; $sdata['attackwith'] = $itm; \player\kill($sdata, $sdata); \player\player_save($sdata); \player\load_playerdata($sdata); } else { addnews($now, 'notworthit', $name); } \itemmain\itms_reduce($theitem); return; } } $chprocess($theitem); }