function check_itmsk($nm, &$pa = NULL) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('player', 'logger')); if ($pa == NULL) { foreach ($battle_equip_list as $itm) { foreach (\itemmain\get_itmsk_array(${$itm . 'sk'}) as $key) { if ($key == $nm) { return 1; } } } return 0; } else { foreach ($battle_equip_list as $itm) { foreach (\itemmain\get_itmsk_array($pa[$itm . 'sk']) as $key) { if ($key == $nm) { return 1; } } } return 0; } }
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) { //现在所有的礼物盒类道具都应该使用类别'p',依靠属性来判断究竟是什么礼物盒 //每个属性对应的文件名 $p_arr = array('^999^' => 'present', '^998^' => 'ygobox', '^997^' => 'fybox', '^996^' => 'ugabox', '^995^' => 'ugcbox'); //这样写的问题就是,礼盒的属性里不能再有其他内容了,否则就会爆炸,保险起见加一个判定 $pi_flag = false; foreach (array_keys($p_arr) as $p_sk) { $isk = \itemmain\get_itmsk_array($itmsk); if (in_array($p_sk, $isk) && sizeof($isk) == 1) { $pi_flag = true; } } if (!$pi_flag) { $log .= "这个盒子看起来已经坏掉了,还是扔了吧。<br>"; return; } $p_path = '/config/' . $p_arr[$isk[0]] . '.config.php'; $log .= "你打开了<span class=\"yellow\">{$itm}</span>。<br>"; $file = __DIR__ . $p_path; $plist = openfile($file); $rand = rand(0, count($plist) - 1); list($in, $ik, $ie, $is, $isk) = explode(',', $plist[$rand]); $itm0 = $in; $itmk0 = $ik; $itme0 = $ie; $itms0 = $is; $itmsk0 = $isk; addnews($now, 'present', $name, $itm, $in); \itemmain\itms_reduce($theitem); \itemmain\itemget(); return; } /*elseif(strpos ( $itmk, 'ygo' ) === 0){ $log.="你打开了<span class=\"yellow\">$itm</span>。<br>"; $file = __DIR__.'/config/ygobox.config.php'; $plist1 = openfile($file); $rand1 = rand(0,count($plist1)-1); list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]); $itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk; addnews($now,'present',$name,$itm,$in); \itemmain\itms_reduce($theitem); \itemmain\itemget(); return; } elseif(strpos ( $itmk, 'fy' ) === 0){ $log.="你打开了<span class=\"yellow\">$itm</span>。<br>"; $file = __DIR__.'/config/fybox.config.php'; $plist1 = openfile($file); $rand1 = rand(0,count($plist1)-1); list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]); $itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk; addnews($now,'present',$name,$itm,$in); \itemmain\itms_reduce($theitem); \itemmain\itemget(); return; } elseif(strpos ( $itmk, 'GA' ) === 0){ $log.="你打开了<span class=\"yellow\">$itm</span>。<br>"; $file = __DIR__.'/config/ugabox.config.php'; $plist1 = openfile($file); $rand1 = rand(0,count($plist1)-1); list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]); $itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk; addnews($now,'present',$name,$itm,$in); \itemmain\itms_reduce($theitem); \itemmain\itemget(); return; } elseif(strpos ( $itmk, 'GC' ) === 0){ $log.="你打开了<span class=\"yellow\">$itm</span>。<br>"; $file = __DIR__.'/config/ugcbox.config.php'; $plist1 = openfile($file); $rand1 = rand(0,count($plist1)-1); list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]); $itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk; addnews($now,'present',$name,$itm,$in); \itemmain\itms_reduce($theitem); \itemmain\itemget(); return; }*/ $chprocess($theitem); }
function remake_gun($r_way, $i) { if (eval(__MAGIC__)) { return $___RET_VALUE; } eval(import_module('sys', 'player', 'itemmain', 'logger', 'remakegun', 'input')); if ($r_way !== 'r_local' && $r_way !== 'r_item') { $log .= "<span class='red'>改造方式选择错误,请重新输入指令。</span><br>"; return; } if ($r_way == 'r_local' && $pls != 28) { $log .= "<span class='red'>该地区不存在改造工作台,请重新输入指令。</span><br>"; return; } if (!is_numeric($i) || !$i || $i > 6 || $i < 0 || ${'itmk' . $i} !== 'RG' || ${'itms' . $i} <= 0) { $log .= "<span class='red'>要使用的枪械配件选择错误,请重新输入指令。{$i}</span><br>"; return; } if ($wepk !== 'WG' && $wepk !== 'WJ' && $wepk !== 'WDG' && $wepk !== 'WGK') { $log .= "<span class='red'>你所装备的武器不是远程武器或重型枪械,无法对其进行改造!</span><br>"; return; } $r_itm =& ${'itm' . $i}; $r_itmk =& ${'itmk' . $i}; $r_itme =& ${'itme' . $i}; $r_itms =& ${'itms' . $i}; $r_itmsk =& ${'itmsk' . $i}; //读取枪械部件和武器上的属性及属性数量 $rg_sk = \itemmain\get_itmsk_array($r_itmsk); $wep_sk = \itemmain\get_itmsk_array($wepsk); $rg_sk_num = sizeof($rg_sk); $wep_sk_num = sizeof($wep_sk); //计算可安装的属性,分别计算部件的非重复属性和武器自带属性的稀有度之合。重复的属性会按照其稀有度折算成效果 if ($rg_sk_num && $wep_sk_num) { //枪械部件和武器都有属性的情况下,才可能出现属性重复 $merge_sk = array_intersect($rg_sk, $wep_sk); $merge_flag = false; if (sizeof($merge_sk) > 0) { $merge_flag = true; $merge_effect = 0; } } if ($rg_sk_num) { //枪械部件有属性的情况下,才需要计算稀有度和属性重复 $rg_sk_rarity = 0; foreach ($rg_sk as $rg_skey => $rg_skinfo) { if (in_array($rg_skinfo, $merge_sk) && $merge_flag) { $merge_effect += in_array($rg_skinfo, array_keys($sk_rarity)) ? $sk_rarity[$rg_skinfo] : 1; unset($rg_sk[$rg_skey]); } else { $rg_sk_rarity += in_array($rg_skinfo, array_keys($sk_rarity)) ? $sk_rarity[$rg_skinfo] : 1; } } if ($rg_sk_rarity <= 25) { $rg_sk_rarity *= 0.75; } elseif ($rg_sk_rarity > 25 && $rg_sk_rarity <= 40) { $rg_sk_rarity *= 0.8; } elseif ($rg_sk_rarity > 40 && $rg_sk_rarity <= 55) { $rg_sk_rarity *= 0.85; } elseif ($rg_sk_rarity > 55 && $rg_sk_rarity <= 70) { $rg_sk_rarity *= 0.9; } else { $rg_sk_rarity *= 1; } } if ($wep_sk_num) { //武器有属性的情况下,才需要计算武器属性稀有度 $wep_sk_rarity = 0; foreach ($wep_sk as $wep_skey => $wep_skinfo) { $wep_sk_rarity += in_array($wep_skinfo, array_keys($sk_rarity)) ? $sk_rarity[$wep_skinfo] : 1; } if ($wep_sk_rarity <= 25) { $wep_sk_rarity *= 0.85; } elseif ($wep_sk_rarity > 25 && $wep_sk_rarity <= 40) { $wep_sk_rarity *= 0.8; } elseif ($wep_sk_rarity > 40 && $wep_sk_rarity <= 55) { $wep_sk_rarity *= 0.75; } elseif ($wep_sk_rarity > 55 && $wep_sk_rarity <= 70) { $wep_sk_rarity *= 0.7; } else { $wep_sk_rarity *= 0.6; } } //计算安装的成功率 $changesucc_obbs_max = $r_way == 'r_local' ? 99 : 75; //成功率上限 $base_changesucc_obbs = 0; if ($wg <= 100) { $base_changesucc_obbs = $wg * 0.28; } elseif ($wg > 100 && $wg <= 200) { $base_changesucc_obbs = 28 + ($wg - 100) * 0.22; } elseif ($wg > 200 && $wg <= 300) { $base_changesucc_obbs = 50 + ($wg - 200) * 0.18; } elseif ($wg > 300 && $wg <= 400) { $base_changesucc_obbs = 68 + ($wg - 300) * 0.14; } else { $base_changesucc_obbs = 82 + ($wg - 400) * 0.1; } $base_changesucc_obbs = min($changesucc_obbs_max, $base_changesucc_obbs); $r_effect_obbs = ($r_itme + $merge_effect) / 25; //受部件效果影响的成功率 $r_skrarity_obbs = $rg_sk_rarity; //受部件非重复属性稀有度影响的成功率 $wep_skrarity_obbs = $wep_sk_rarity; //受武器属性稀有度影响的成功率 $final_changesucc_obbs = ceil($base_changesucc_obbs - $r_effect_obbs - $r_skrarity_obbs - $wep_skrarity_obbs); $final_changesucc_obbs = max(1, $final_changesucc_obbs); $remake_info = array('r_local' => '工具改造', 'r_item' => '手动改造'); $log .= "你确定要使用<span class='yellow'>【{$r_itm}】</span>对武器<span class='yellow'>【{$wep}】</span>进行<span class='yellow'>{$remake_info[$r_way]}</span>吗?<br>这样做的成功率为"; if ($final_changesucc_obbs <= 25) { $log .= "<span class='red'>{$final_changesucc_obbs}%</span>!<br>"; } elseif ($final_changesucc_obbs > 25 && $final_changesucc_obbs <= 50) { $log .= "<span class='yellow'>{$final_changesucc_obbs}%</span>!<br>"; } elseif ($final_changesucc_obbs > 50 && $final_changesucc_obbs <= 75) { $log .= "<span class='clan'>{$final_changesucc_obbs}%</span>!<br>"; } else { $log .= "<span class='lime'>{$final_changesucc_obbs}%</span>!<br>"; } ob_clean(); include template(MOD_REMAKEGUN_LP_REMAKEGUN_CONFIRM); $cmd = ob_get_contents(); ob_clean(); return; }