function set_stun_period($t, &$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys')); if ($gamestate >= 50) { $t = round($t / 3); } //死斗眩晕时间变为1/3 $flag = 1; $ct = floor(getmicrotime() * 1000); $e = 0; if (\skillbase\skill_query(602, $pa)) { $e = (int) \skillbase\skill_getvalue(602, 'end', $pa); if ($ct >= $e) { $flag = 0; } } else { $flag = 0; } if ($flag == 0) { \skillbase\skill_acquire(602, $pa); \skillbase\skill_setvalue(602, 'start', $ct, $pa); } if ($ct + $t > $e) { $e = $ct + $t; } \skillbase\skill_setvalue(602, 'end', $e, $pa); $pa['new_stun_flag'] = 1; }
function get_alone_card_skill(&$pa = NULL) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('player', 'clubbase', 'cardbase')); $cid = $pa == NULL || $pa['pid'] == $ppid ? $card : $pa['card']; if (is_array($cards[$card]['skills'])) { $card_array = $cards[$cid]; } else { return; } foreach ($card_array['skills'] as $sk => $sklvl) { $flag = 0; if ($card_array['club']) { foreach (array_keys($clublist) as $clubnum) { if (in_array($sk, $clublist[$clubnum]['skills'])) { $flag = 1; } } } if (defined('MOD_SKILL' . $sk) && !$flag) { if ($pa == NULL || $pa['pid'] == $ppid) { \skillbase\skill_acquire($sk); \skillbase\skill_setvalue($sk, 'lvl', $sklvl); } else { \skillbase\skill_acquire($sk, $pa); \skillbase\skill_setvalue($sk, 'lvl', $sklvl, $pa); } } } }
function upgrade227() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('player', 'logger', 'input')); $skillpara1 = (int) $skillpara1; if (!\skillbase\skill_query(227) || !check_unlocked227($sdata)) { $log .= '你没有这个技能。<br>'; return; } if (!\sklearn_util\sklearn_basecheck($skillpara1) || !sklearn_checker227('is_learnable', $skillpara1)) { $log .= '你不可以学习这个技能!<br>'; return; } if (!sklearn_checker227('now_learnable', $skillpara1)) { $log .= '现在尚没有足够资源学习这个技能!<br>'; return; } if (\skillbase\skill_query($skillpara1)) { $log .= '你已经拥有这个技能了!<br>'; return; } if ((int) \skillbase\skill_getvalue(227, 'l') != 0) { $log .= '你已经学习过一个技能了!<br>'; return; } \skillbase\skill_setvalue(227, 'l', $skillpara1); \skillbase\skill_acquire($skillpara1); $log .= '学习成功。<br>'; }
function upgrade43() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('player', 'logger')); if (!\skillbase\skill_query(43) || !check_unlocked43($sdata)) { $log .= '你没有这个技能。<br>'; return; } eval(import_module('input')); $val = (int) $skillpara1; if ($val != 1 && $val != 2) { $log .= '参数不合法。<br>'; return; } if ($val == 1) { if (!\skillbase\skill_query(41)) { \skillbase\skill_acquire(41); } \skill41\unlock41($sdata); } else { if (!\skillbase\skill_query(42)) { \skillbase\skill_acquire(42); } \skill42\unlock42($sdata); } \skillbase\skill_lost(43); $log .= '选择成功。<br>'; }
function skill_onload_event(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (!\skillbase\skill_query(300, $pa)) { \skillbase\skill_acquire(300, $pa); } $chprocess($pa); }
function skill_onload_event(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (strpos($pa['inf'], 'p') !== false) { \skillbase\skill_acquire(5, $pa); } $chprocess($pa); }
function skill_onload_event(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys')); if ($gametype == 15 && !\skillbase\skill_query(313, $pa)) { \skillbase\skill_acquire(313, $pa); } $chprocess($pa); }
function skill_onload_event(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys')); if (!in_array($gametype, $ach_ignore_mode) && !\skillbase\skill_query(306, $pa)) { \skillbase\skill_acquire(306, $pa); } $chprocess($pa); }
function club_acquire($clubid, &$pa = NULL) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('clubbase')); if ($pa == NULL) { eval(import_module('player')); $club = $clubid; } else { $pa['club'] = $clubid; } foreach ($clublist[$clubid]['skills'] as $key) { if (defined('MOD_SKILL' . $key)) { \skillbase\skill_acquire($key, $pa); } } }
function kill(&$pa, &$pd) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if ($pa['type'] == 0 && \skillbase\skill_query(433, $pd) && $pa['user_commanded'] == 1) { eval(import_module('sys', 'logger')); $log .= '<span class="yellow">敌人的技能「断肠」使你失去了所有称号技能!</span>'; $arr = \skillbase\get_acquired_skill_array($pa); foreach ($arr as $key) { if (defined('MOD_SKILL' . $key . '_INFO') && strpos(constant('MOD_SKILL' . $key . '_INFO'), 'club;') !== false && strpos(constant('MOD_SKILL' . $key . '_INFO'), 'hidden;') === false) { \skillbase\skill_lost($key, $pa); } } \skillbase\skill_acquire(433, $pa); } $chprocess($pa, $pd); }
function itemuse_uhf(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'itemmain', 'logger', 'skillbase', 'skill2900')); $itm =& $theitem['itm']; $itmk =& $theitem['itmk']; $itme =& $theitem['itme']; $itms =& $theitem['itms']; $itmsk =& $theitem['itmsk']; if (strpos($itm, '测试用补给') !== false) { $log .= "你使用了测试用特效补给来获得BUFF。<br>"; $lasttime = 15; $starttime = $now; \skillbase\skill_acquire(2900); \skillbase\skill_setvalue(2900, 'start', $starttime); \skillbase\skill_setvalue(2900, 'end', $starttime + $lasttime); \skillbase\skill_setvalue(2900, 'add_buff_effect', 200); \skillbase\skill_setvalue(2900, 'del_buff_effect', 200); } }
function strike_finish(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if (\skillbase\skill_query(221, $pa)) { eval(import_module('logger', 'skill221', 'skill600', 'sys')); $var_221 = get_skill221_lasttime($pa, $pd, $active); if (!\skillbase\skill_query(600, $pd)) { \skillbase\skill_acquire(600, $pd); $var_221_2 = $now; } else { $var_221_2 = \skillbase\skill_getvalue(600, 'end', $pd); if ($var_221_2 < $now) { $var_221_2 = $now; } } \skillbase\skill_setvalue(600, 'start', $var_221_2, $pd); \skillbase\skill_setvalue(600, 'end', $var_221_2 + $var_221, $pd); } $chprocess($pa, $pd, $active); }
function player_kill_enemy(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } $chprocess($pa, $pd, $active); eval(import_module('logger', 'skillbase')); if (\skillbase\skill_query(21, $pd)) { $npcdata = evonpc($pd['type'], $pd['name']); $log .= '<span class="yellow">' . $pd['name'] . '却没死去,反而爆发出真正的实力!</span><br>'; if ($npcdata) { addnews($now, 'evonpc', $pd['name'], $npcdata['name'], $pa['name']); foreach ($npcdata as $key => $val) { $pd[$key] = $val; } \skillbase\skill_lost(21, $pd); //进化时失去所有专有技能 foreach (\skillbase\get_acquired_skill_array($pd) as $key) { if (defined('MOD_SKILL' . $key . '_INFO') && strpos(constant('MOD_SKILL' . $key . '_INFO'), 'club;') !== false && strpos(constant('MOD_SKILL' . $key . '_INFO'), 'unique;') !== false) { \skillbase\skill_lost($key, $pd); } } //然后获得新的专有技能 if (is_array($npcdata['skills'])) { $npcdata['skills']['460'] = '0'; foreach ($npcdata['skills'] as $key => $value) { if (defined('MOD_SKILL' . $key)) { \skillbase\skill_acquire($key, $pd); if ($value > 0) { \skillbase\skill_setvalue($key, 'lvl', $value, $pd); } } } } $pd['npc_evolved'] = 1; } } }
function upgrade242() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('player', 'clubbase', 'skill242', 'logger', 'input')); if (!\skillbase\skill_query(242) || !check_unlocked242($sdata)) { $log .= '你没有这个技能。<br>'; return; } $remcnt = $lvl - (int) \skillbase\skill_getvalue(242, 'c'); if ($remcnt <= 0) { $log .= '你现在不能改变技能。<br>'; return; } $can_list = array(); foreach ($clublist as $nowclub => $arr) { if ($nowclub != $club) { foreach ($arr['skills'] as $skillid) { if (\sklearn_util\sklearn_basecheck($skillid) && !in_array($skillid, $sk242_cannot_list)) { array_push($can_list, $skillid); } } } } $sk = $can_list[rand(0, count($can_list) - 1)]; $ori_sk = (int) \skillbase\skill_getvalue(242, 'i'); if ($ori_sk) { \skillbase\skill_lost($ori_sk); } \skillbase\skill_acquire($sk); \skillbase\skill_setvalue(242, 'i', $sk); $z = (int) \skillbase\skill_getvalue(242, 'c'); $z++; \skillbase\skill_setvalue(242, 'c', $z); $log .= "改变成功。<br>"; }
function get_inf($hurtposition, &$pa = NULL) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('wound')); $flag = 1; if ($pa == NULL) { eval(import_module('player')); if (strpos($inf, $hurtposition) !== false) { $flag = 0; } $inf = str_replace($hurtposition, '', $inf); $inf .= $hurtposition; } else { if (strpos($pa['inf'], $hurtposition) !== false) { $flag = 0; } $pa['inf'] = str_replace($hurtposition, '', $pa['inf']); $pa['inf'] .= $hurtposition; } \skillbase\skill_acquire($infskillinfo[$hurtposition], $pa); return $flag; }
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 upgrade72() { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('skill72', 'player', 'logger', 'input')); $skillpara1 = (int) $skillpara1; if (!\skillbase\skill_query(72) || !check_unlocked72($sdata)) { $log .= '你没有这个技能。<br>'; return; } if (!\sklearn_util\sklearn_basecheck($skillpara1) || !sklearn_checker72('is_learnable', $skillpara1)) { $log .= '你不可以学习这个技能!<br>'; return; } if (!sklearn_checker72('now_learnable', $skillpara1)) { $log .= '现在尚没有足够资源学习这个技能!<br>'; return; } if (\skillbase\skill_query($skillpara1)) { $log .= '你已经拥有这个技能了!<br>'; return; } $x = (int) \skillbase\skill_getvalue(72, 't'); $x++; \skillbase\skill_setvalue(72, 't', $x); $val = constant('MOD_SKILL' . $skillpara1 . '_INFO'); if (strpos($val, 'battle;') !== false) { $x = (int) \skillbase\skill_getvalue(72, 'b'); $x++; \skillbase\skill_setvalue(72, 'b', $x); } $skillpoint -= $skill72_skpoint_need[$skillpara1]; \skillbase\skill_acquire($skillpara1); $log .= '学习成功。<br>'; }
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 post_enterbattlefield_events(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys')); if ($gametype == 2) { \skillbase\skill_acquire(475, $pa); \skillbase\skill_acquire(235, $pa); \skillbase\skill_setvalue(235, 'lvl', '1', $pa); $pa['itm6'] = '任务指令书B'; $pa['itmk6'] = 'Y'; $pa['itme6'] = '1'; $pa['itms6'] = '1'; $pa['itmsk6'] = ''; } return $chprocess($pa); }
function itemuse(&$theitem) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'weapon', 'itemmain', 'logger')); $itm =& $theitem['itm']; $itmk =& $theitem['itmk']; $itme =& $theitem['itme']; $itms =& $theitem['itms']; $itmsk =& $theitem['itmsk']; if (strpos($itmk, 'V') === 0) { //特殊的技能书类型VS,效果是获得技能编号为itmsk的技能 if (strpos($itmk, 'VS') === 0) { eval(import_module('clubbase')); $sk_kind = (int) $itmsk; if ($sk_kind < 1) { $sk_kind = 1; } if (defined('MOD_SKILL' . $sk_kind) && $clubskillname[$sk_kind] != '') { if (\skillbase\skill_query($sk_kind)) { $log .= "你翻开了<span class=\"red\">{$itm}</span>,发现这本书就是昨天刚刚看过的那本。你随手把书放回了包里。<br>"; } else { $log .= "你读完了<span class=\"red\">{$itm}</span>,感觉受益匪浅。你获得了技能「<span class=\"yellow\">" . $clubskillname[$sk_kind] . "</span>」,请前往技能界面查看。<br>"; \skillbase\skill_acquire($sk_kind); \itemmain\itms_reduce($theitem); } } else { $log .= "技能书参数错误,这应该是一个BUG,请联系管理员。<br>"; } return; } //下面是普通的技能书处理(效果是加某个系的熟练) $skill_minimum = 100; $skill_limit = 300; $log .= "你阅读了<span class=\"red\">{$itm}</span>。<br>"; $dice = rand(-5, 5); if (strpos($itmk, 'VV') === 0) { $skcnt = 0; $ws_sum = 0; foreach (array_unique(array_values($skillinfo)) as $key) { $skcnt++; $ws_sum += ${$key}; } if ($ws_sum < $skill_minimum * $skcnt) { $vefct = $itme; } elseif ($ws_sum < $skill_limit * $skcnt) { $vefct = round($itme * (1 - ($ws_sum - $skill_minimum * $skcnt) / ($skill_limit * $skcnt - $skill_minimum * $skcnt))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } foreach (array_unique(array_values($skillinfo)) as $key) { ${$key} += $vefct; } $wsname = "全系熟练度"; } elseif (strpos($itmk, 'VP') === 0) { if ($wp < $skill_minimum) { $vefct = $itme; } elseif ($wp < $skill_limit) { $vefct = round($itme * (1 - ($wp - $skill_minimum) / ($skill_limit - $skill_minimum))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } $wp += $vefct; //$itme; $wsname = "斗殴熟练度"; } elseif (strpos($itmk, 'VK') === 0) { if ($wk < $skill_minimum) { $vefct = $itme; } elseif ($wk < $skill_limit) { $vefct = round($itme * (1 - ($wk - $skill_minimum) / ($skill_limit - $skill_minimum))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } $wk += $vefct; //$itme; $wsname = "斩刺熟练度"; } elseif (strpos($itmk, 'VG') === 0) { if ($wg < $skill_minimum) { $vefct = $itme; } elseif ($wg < $skill_limit) { $vefct = round($itme * (1 - ($wg - $skill_minimum) / ($skill_limit - $skill_minimum))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } $wg += $vefct; //$itme; $wsname = "射击熟练度"; } elseif (strpos($itmk, 'VC') === 0) { if ($wc < $skill_minimum) { $vefct = $itme; } elseif ($wc < $skill_limit) { $vefct = round($itme * (1 - ($wc - $skill_minimum) / ($skill_limit - $skill_minimum))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } $wc += $vefct; //$itme; $wsname = "投掷熟练度"; } elseif (strpos($itmk, 'VD') === 0) { if ($wd < $skill_minimum) { $vefct = $itme; } elseif ($wd < $skill_limit) { $vefct = round($itme * (1 - ($wd - $skill_minimum) / ($skill_limit - $skill_minimum))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } $wd += $vefct; //$itme; $wsname = "引爆熟练度"; } elseif (strpos($itmk, 'VF') === 0) { if ($wf < $skill_minimum) { $vefct = $itme; } elseif ($wf < $skill_limit) { $vefct = round($itme * (1 - ($wf - $skill_minimum) / ($skill_limit - $skill_minimum))); } else { $vefct = 0; } if ($vefct < 5) { if ($vefct < $dice) { $vefct = -$dice; } } $wf += $vefct; //$itme; $wsname = "灵击熟练度"; } if ($vefct > 0) { $log .= "嗯,有所收获。<br>你的{$wsname}提高了<span class=\"yellow\">{$vefct}</span>点!<br>"; } elseif ($vefct == 0) { $log .= "对你来说书里的内容过于简单了。<br>你的熟练度没有任何提升。<br>"; } else { $vefct = -$vefct; $log .= "对你来说书里的内容过于简单了。<br>而且由于盲目相信书上的知识,你反而被编写者的纰漏所误导了!<br>你的{$wsname}下降了<span class=\"red\">{$vefct}</span>点!<br>"; } \itemmain\itms_reduce($theitem); return; } $chprocess($theitem); }
function skill435_summon_npc($nkind) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('skill435', 'map', 'sys', 'player', 'logger', 'input')); $log .= '你召唤出了保安<span class="yellow">' . $skill435_npc['sub'][$nkind]['name'] . '</span>来保护你!<br>'; $x = (int) \skillbase\skill_getvalue(435, 't'); $spid = \addnpc\addnpc(25, $nkind, 1); if ($spid == -1) { $log .= '出现了一个BUG,请联系管理员。抱歉。<br>'; return; } //设置位置 $db->query("UPDATE {$tablepre}players SET pls='{$pls}' WHERE pid='{$spid}'"); \skillbase\skill_setvalue(435, 'p' . $x, $spid); \skillbase\skill_setvalue(435, 'l' . $x, $now); \skillbase\skill_setvalue(435, 's' . $x, $nkind); \skillbase\skill_setvalue(435, 'h' . $x, 1); //保安技能skill436(收工资) $pdata = \player\fetch_playerdata_by_pid($spid); \skillbase\skill_acquire(436, $pdata); \skill436\skill436_set_hpid($pid, $pdata); \skill436\skill436_set_label($x, $pdata); \player\player_save($pdata); }
function strike_finish(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if ($pa['bskill'] == 237) { eval(import_module('logger', 'skill601', 'sys')); if (!\skillbase\skill_query(601, $pd)) { \skillbase\skill_acquire(601, $pd); $var_237 = $now; } else { $var_237 = \skillbase\skill_getvalue(601, 'end', $pd); if ($var_237 < $now) { $var_237 = $now; } } \skillbase\skill_setvalue(601, 'start', $var_237, $pd); \skillbase\skill_setvalue(601, 'end', $var_237 + 40, $pd); } $chprocess($pa, $pd, $active); }
function strike_finish(&$pa, &$pd, $active) { if (eval(__MAGIC__)) { return $___RET_VALUE; } if ($pa['bskill'] != 440) { return $chprocess($pa, $pd, $active); } eval(import_module('logger', 'skill440', 'skill600', 'sys')); $var_440 = 40; if (!\skillbase\skill_query(600, $pd)) { \skillbase\skill_acquire(600, $pd); $var_440_2 = $now; } else { $var_440_2 = \skillbase\skill_getvalue(600, 'end', $pd); if ($var_440_2 < $now) { $var_440_2 = $now; } } \skillbase\skill_setvalue(600, 'start', $var_440_2, $pd); \skillbase\skill_setvalue(600, 'end', $var_440_2 + $var_440, $pd); if (strpos($pd['inf'], 'u') === false) { $pd['inf'] .= 'u'; } if (strpos($pd['inf'], 'p') === false) { $pd['inf'] .= 'p'; } if ($active) { $log .= '<span class="red">敌人已经大难临头了!</span><br>'; } else { $log .= "<span class=\"red\">你已经大难临头了!</span><br>"; } $chprocess($pa, $pd, $active); }
function skill42_temp_acquire41(&$pa) { if (eval(__MAGIC__)) { return $___RET_VALUE; } $pa['skill42_flag1'] = 1; if (!\skillbase\skill_query(41, $pa)) { //原先没有神速 \skillbase\skill_acquire(41, $pa); \skill41\unlock41($pa); $pa['skill42_flag2'] = 1; } else { $stat = \skill41\check_unlocked41($pa); if ($stat) { $pa['skill42_flag2'] = 3; } else { \skill41\unlock41($pa); $pa['skill42_flag2'] = 2; } } }