Beispiel #1
0
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;
    }
}
Beispiel #2
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);
}
Beispiel #3
0
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;
}