示例#1
0
function trap()
{
    global $log, $cmd, $mode, $iteminfo, $itm0, $itmk0, $itme0, $itms0, $itmsk0, $nick;
    global $name, $now, $hp, $db, $tablepre, $bid, $lvl, $pid, $type, $tactic, $club, $skills;
    global $wepsk, $arbsk, $arhsk, $arask, $arfsk, $artsk, $achievement;
    $playerflag = $itmsk0 ? true : false;
    $selflag = $itmsk0 == $pid ? true : false;
    $dice = rand(0, 99);
    $escrate = $club == 5 ? 25 + $lvl / 3 : 8 + $lvl / 3;
    $escrate = $club == 6 ? $escrate + 15 : $escrate;
    $escrate = $tactic == 4 ? $escrate + 20 : $escrate;
    $escrate = $selflag ? $escrate + 50 : $escrate;
    //自己设置的陷阱容易躲避
    //echo '回避率:'.$escrate.'%';
    $def_key = $wepsk . $arbsk . $arhsk . $arask . $arfsk . $artsk;
    if (strpos($def_key, 'M') !== false) {
        $minedetect = true;
        if ($club == 7) {
            //电脑社使用探雷器效率增加
            $escrate += 45;
        } else {
            $escrate += 35;
        }
    }
    include_once GAME_ROOT . './include/game/clubskills.func.php';
    $escrate *= get_clubskill_bonus_escrate($club, $skills);
    $escrate = $escrate >= 90 ? 90 : $escrate;
    //最大回避率
    $escrate = $itmk0 == 'TOc' ? -1 : $escrate;
    //必中陷阱
    //$log .= "回避率: $escrate<br>";
    if ($playerflag && !$selflag) {
        $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$itmsk0}'");
        $wdata = $db->fetch_array($result);
        $trname = $wdata['name'];
        $trtype = $wdata['type'];
        $trperfix = '<span class="yellow">' . $trname . '</span>设置的';
    } elseif ($selflag) {
        $trname = $name;
        $trtype = 0;
        $trperfix = '你自己设置的';
    } else {
        $trname = $trtype = $trperfix = '';
    }
    if ($dice >= $escrate) {
        $bid = $itmsk0;
        if ($itmk0 == 'TOc') {
            //奇迹陷阱
            $damage = $hp;
            $goodmancard = 0;
        } else {
            $damage = round(rand(0, $itme0 / 2) + $itme0 / 2);
            $damage = $tactic == 2 ? round($damage * 0.75) : $damage;
            //好人卡特别活动
            global $itm1, $itmk1, $itms1, $itm2, $itmk2, $itms2, $itm3, $itmk3, $itms3, $itm4, $itmk4, $itms4, $itm5, $itmk5, $itms5;
            $goodmancard = 0;
            for ($i = 1; $i <= 5; $i++) {
                if (${'itms' . $i} && ${'itm' . $i} == '好人卡' && ${'itmk' . $i} == 'Y') {
                    $goodmancard += ${'itms' . $i};
                }
            }
        }
        if (strpos($def_key, 'm') !== false && $itmk0 != 'TOc') {
            //迎击
            $dice = rand(0, 99);
            $hitrate = $club == 7 ? 60 : 40;
            //电脑社使用探雷器效率增加
            if ($dice > $hitrate) {
                $damage = 0;
            }
        }
        if ($damage) {
            $hp -= $damage;
            $tmp_club = $club;
            if ($playerflag) {
                addnews($now, 'trap', $nick . ' ' . $name, $trname, $itm0);
            }
            $log .= "糟糕,你触发了{$trperfix}陷阱<span class=\"yellow\">{$itm0}</span>!受到<span class=\"dmg\">{$damage}</span>点伤害!<br>";
            if ($goodmancard) {
                $gm = ceil($goodmancard * rand(80, 120) / 100);
                $log .= "在你身上的<span class=\"yellow\">好人卡</span>的作用下,你受到的伤害增加了<span class=\"red\">{$gm}</span>点!<br>";
                $hp -= $gm;
            }
            $trapkill = false;
            if ($hp <= 0) {
                include_once GAME_ROOT . './include/state.func.php';
                $killmsg = death('trap', $trname, $trtype, $itm0);
                $log .= "你被{$trperfix}陷阱杀死了!";
                $trapkill = true;
                //检查成就
                include_once GAME_ROOT . './include/game/achievement.func.php';
                //check_trap_death_achievement($name,$trname,$selflag,$itm0,$itme0);
                if ($killmsg && !$selflag) {
                    $log .= "<span class=\"yellow\">{$trname}对你说:“{$killmsg}”</span><br>";
                }
                if ($tmp_club == 99) {
                    $log .= "<span class=\"lime\">但由于你及时按下了BOMB键,你原地满血复活了!</span><br>";
                }
            } else {
                //检查成就
                include_once GAME_ROOT . './include/game/achievement.func.php';
                //check_trap_survive_achievement($achievement,$selflag,$itm0,$itme0);
            }
            if ($playerflag && !$selflag && $trapkill) {
                $w_log = "<span class=\"red\">{$name}触发了你设置的陷阱{$itm0}并被杀死了!</span>";
                if ($tmp_club == 99) {
                    $w_log .= "<span class=\"lime\">但由于{$name}及时按下了BOMB键,{$name}原地满血复活了!</span>";
                }
                $w_log .= "<br>";
                logsave($itmsk0, $now, $w_log, 'b');
            } elseif ($playerflag && !$selflag) {
                $w_log = "<span class=\"yellow\">{$name}触发了你设置的陷阱{$itm0}!</span><br>";
                logsave($itmsk0, $now, $w_log, 'b');
            }
        } else {
            if ($playerflag) {
                addnews($now, 'trapdef', $nick . ' ' . $name, $trname, $itm0);
                if (!$selflag) {
                    $w_log = "<span class=\"yellow\">{$name}触发了你设置的陷阱{$itm0},但是没有受到任何伤害!</span><br>";
                    logsave($itmsk0, $now, $w_log, 'b');
                }
            }
            $log .= "糟糕,你触发了{$trperfix}陷阱<span class=\"yellow\">{$itm0}</span>!<br>不过,身上装备着的自动迎击系统启动了!<span class=\"yellow\">在迎击功能的保护下你毫发无伤。</span><br>";
            //检查成就
            include_once GAME_ROOT . './include/game/achievement.func.php';
            //check_trap_fail_achievement($achievement,$selflag,$itm0,$itme0);
        }
        $itm0 = $itmk0 = $itmsk0 = '';
        $itme0 = $itms0 = 0;
        return;
    } else {
        //检查成就
        include_once GAME_ROOT . './include/game/achievement.func.php';
        //check_trap_miss_achievement($achievement,$selflag,$itm0,$itme0);
        if ($playerflag && !$selflag) {
            addnews($now, 'trapmiss', $nick . ' ' . $name, $trname, $itm0);
            $w_log = "<span class=\"yellow\">{$name}回避了你设置的陷阱{$itm0}!</span><br>";
            logsave($itmsk0, $now, $w_log, 'b');
        }
        $dice = rand(0, 99);
        $fdrate = $club == 5 ? 40 + $lvl / 3 : 5 + $lvl / 3;
        $fdrate = $selflag ? $fdrate + 50 : $fdrate;
        include_once GAME_ROOT . './include/game/clubskills.func.php';
        $fdrate *= get_clubskill_bonus_reuse($club, $skills);
        if ($dice < $fdrate) {
            if ($minedetect) {
                $log .= "在探雷装备的辅助下,你发现了{$trperfix}陷阱<span class=\"yellow\">{$itm0}</span>并且拆除了它。陷阱看上去还可以重复使用。<br>";
            } else {
                $log .= "你发现了{$trperfix}陷阱<span class=\"yellow\">{$itm0}</span>,不过你并没有触发它。陷阱看上去还可以重复使用。<br>";
            }
            $itmsk0 = '';
            $itmk0 = str_replace('TO', 'TN', $itmk0);
            $mode = 'itemfind';
            return;
        } else {
            if ($minedetect) {
                $log .= "在探雷装备的辅助下,你发现了{$trperfix}陷阱<span class=\"yellow\">{$itm0}</span>并且拆除了它。不过陷阱好像被你搞坏了。<br>";
            } else {
                $log .= "你触发了{$trperfix}陷阱<span class=\"yellow\">{$itm0}</span>,不过你成功地回避了陷阱。<br>";
            }
            $itm0 = $itmk0 = $itmsk0 = '';
            $itme0 = $itms0 = 0;
            $mode = 'command';
            return;
        }
    }
}
示例#2
0
function lvlup(&$lvl, &$exp, $isplayer = 1)
{
    global $baseexp;
    $up_exp_temp = round((2 * $lvl + 1) * $baseexp);
    if ($exp >= $up_exp_temp && $lvl < 255) {
        if ($isplayer) {
            $perfix = '';
        } else {
            $perfix = 'w_';
        }
        global ${$perfix . 'name'}, ${$perfix . 'hp'}, ${$perfix . 'mhp'}, ${$perfix . 'sp'}, ${$perfix . 'msp'}, ${$perfix . 'att'}, ${$perfix . 'def'}, ${$perfix . 'upexp'}, ${$perfix . 'club'}, ${$perfix . 'type'}, ${$perfix . 'skillpoint'};
        global ${$perfix . 'wp'}, ${$perfix . 'wk'}, ${$perfix . 'wc'}, ${$perfix . 'wg'}, ${$perfix . 'wd'}, ${$perfix . 'wf'};
        $sklanginfo = array('wp' => '殴熟', 'wk' => '斩熟', 'wg' => '射熟', 'wc' => '投熟', 'wd' => '爆熟', 'wf' => '灵熟', 'all' => '全系熟练度');
        $sknlist = array(1 => 'wp', 2 => 'wk', 3 => 'wc', 4 => 'wg', 5 => 'wd', 9 => 'wf', 16 => 'all');
        $skname = $sknlist[${$perfix . 'club'}];
        //升级判断
        $lvup = 1 + floor(($exp - $up_exp_temp) / $baseexp / 2);
        $lvup = $lvup > 255 - $lvl ? 255 - $lvl : $lvup;
        $lvuphp = $lvupatt = $lvupdef = $lvupskill = $lvupsp = $lvupspref = 0;
        for ($i = 0; $i < $lvup; $i += 1) {
            if (${$perfix . 'club'} == 13) {
                $lvuphp += rand(14, 18);
            } else {
                $lvuphp += rand(8, 10);
            }
            $lvupsp += rand(4, 6);
            if (${$perfix . 'club'} == 14) {
                $lvupatt += rand(4, 6);
                $lvupdef += rand(5, 8);
            } else {
                $lvupatt += rand(2, 4);
                $lvupdef += rand(3, 5);
            }
            if ($skname == 'all') {
                $lvupskill += rand(2, 4);
            } elseif ($skname == 'wd' || $skname == 'wf') {
                $lvupskill += rand(3, 5);
            } elseif ($skname) {
                $lvupskill += rand(4, 6);
            }
            $lvupspref += round(${$perfix . 'msp'} * 0.1);
        }
        $lvl += $lvup;
        $up_exp_temp = round((2 * $lvl + 1) * $baseexp);
        if ($lvl >= 255) {
            $lvl = 255;
            $exp = $up_exp_temp;
        }
        ${$perfix . 'upexp'} = $up_exp_temp;
        ${$perfix . 'hp'} += $lvuphp;
        ${$perfix . 'mhp'} += $lvuphp;
        ${$perfix . 'sp'} += $lvupsp;
        ${$perfix . 'msp'} += $lvupsp;
        ${$perfix . 'att'} += $lvupatt;
        ${$perfix . 'def'} += $lvupdef;
        ${$perfix . 'skillpoint'} += $lvup;
        if ($skname == 'all') {
            ${$perfix . 'wp'} += $lvupskill;
            ${$perfix . 'wk'} += $lvupskill;
            ${$perfix . 'wg'} += $lvupskill;
            ${$perfix . 'wc'} += $lvupskill;
            ${$perfix . 'wd'} += $lvupskill;
            ${$perfix . 'wf'} += $lvupskill;
        } elseif ($skname) {
            ${$perfix . $skname} += $lvupskill;
        }
        if (${$perfix . 'sp'} + $lvupspref >= ${$perfix . 'msp'}) {
            $lvupspref = ${$perfix . 'msp'} - ${$perfix . 'sp'};
        }
        ${$perfix . 'sp'} += $lvupspref;
        if ($skname) {
            $sklog = ",{$sklanginfo[$skname]}+{$lvupskill}";
        }
        if ($isplayer) {
            global $log;
            $log .= "<span class=\"yellow\">你升了{$lvup}级!生命上限+{$lvuphp},体力上限+{$lvupsp},攻击+{$lvupatt},防御+{$lvupdef}{$sklog},体力恢复了{$lvupspref},获得了{$lvup}点技能点!</span><br>";
        } elseif (!$w_type) {
            global $w_pid, $now;
            $w_log = "<span class=\"yellow\">你升了{$lvup}级!生命上限+{$lvuphp},体力上限+{$lvupsp},攻击+{$lvupatt},防御+{$lvupdef}{$sklog},体力恢复了{$lvupspref},获得了{$lvup}点技能点!</span><br>";
            logsave($w_pid, $now, $w_log, 's');
        }
    } elseif ($lvl >= 255) {
        $lvl = 255;
        $exp = $up_exp_temp;
    }
    return;
}
示例#3
0
function senditem()
{
    global $db, $tablepre, $log, $mode, $main, $command, $cmd, $battle_title, $pls, $plsinfo, $message, $now, $name, $w_log, $teamID, $gamestate, $action;
    $mateid = str_replace('team', '', $action);
    if (!$mateid || strpos($action, 'team') === false) {
        $log .= '<span class="yellow">你没有遇到队友,或已经离开现场!</span><br>';
        $action = '';
        $mode = 'command';
        return;
    }
    if ($gamestate >= 40) {
        $log .= '<span class="yellow">连斗阶段无法赠送物品!</span><br>';
        $action = '';
        $mode = 'command';
        return;
    }
    $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$mateid}'");
    if (!$db->num_rows($result)) {
        $log .= "对方不存在!<br>";
        $action = '';
        $mode = 'command';
        return;
    }
    $edata = $db->fetch_array($result);
    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) {
        $log .= '<span class="yellow">' . $edata['name'] . '</span>并非你的队友,不能接受物品。<br>';
        $mode = 'command';
        $action = '';
        return;
    }
    if ($message) {
        //		foreach ( Array('<','>',';',',') as $value ) {
        //			if(strpos($message,$value)!==false){
        //				$message = str_replace ( $value, '', $message );
        //			}
        //		}
        $log .= "<span class=\"lime\">你对{$edata['name']}说:“{$message}”</span><br>";
        $w_log = "<span class=\"lime\">{$name}对你说:“{$message}”</span><br>";
        if (!$edata['type']) {
            logsave($edata['pid'], $now, $w_log, 'c');
        }
    }
    if ($command != 'back') {
        $itmn = substr($command, 3);
        global ${'itm' . $itmn}, ${'itmk' . $itmn}, ${'itme' . $itmn}, ${'itms' . $itmn}, ${'itmsk' . $itmn};
        if (!${'itms' . $itmn}) {
            $log .= '此道具不存在!';
            $action = '';
            $mode = 'command';
            return;
        }
        $itm =& ${'itm' . $itmn};
        $itmk =& ${'itmk' . $itmn};
        $itme =& ${'itme' . $itmn};
        $itms =& ${'itms' . $itmn};
        $itmsk =& ${'itmsk' . $itmn};
        global $w_pid, $w_name, $w_pass, $w_type, $w_endtime, $w_gd, $w_sNo, $w_icon, $w_club, $w_hp, $w_mhp, $w_sp, $w_msp, $w_att, $w_def, $w_pls, $w_lvl, $w_exp, $w_money, $w_bid, $w_inf, $w_rage, $w_pose, $w_tactic, $w_killnum, $w_state, $w_wp, $w_wk, $w_wg, $w_wc, $w_wd, $w_wf, $w_teamID, $w_teamPass, $w_wep, $w_wepk, $w_wepe, $w_weps, $w_arb, $w_arbk, $w_arbe, $w_arbs, $w_arh, $w_arhk, $w_arhe, $w_arhs, $w_ara, $w_arak, $w_arae, $w_aras, $w_arf, $w_arfk, $w_arfe, $w_arfs, $w_art, $w_artk, $w_arte, $w_arts, $w_itm0, $w_itmk0, $w_itme0, $w_itms0, $w_itm1, $w_itmk1, $w_itme1, $w_itms1, $w_itm2, $w_itmk2, $w_itme2, $w_itms2, $w_itm3, $w_itmk3, $w_itme3, $w_itms3, $w_itm4, $w_itmk4, $w_itme4, $w_itms4, $w_itm5, $w_itmk5, $w_itme5, $w_itms5, $w_itm6, $w_itmk6, $w_itme6, $w_itms6, $w_wepsk, $w_arbsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_itmsk0, $w_itmsk1, $w_itmsk2, $w_itmsk3, $w_itmsk4, $w_itmsk5, $w_itmsk6, $nick;
        extract($edata, EXTR_PREFIX_ALL, 'w');
        for ($i = 1; $i <= 6; $i++) {
            if (!${'w_itms' . $i}) {
                ${'w_itm' . $i} = $itm;
                ${'w_itmk' . $i} = $itmk;
                ${'w_itme' . $i} = $itme;
                ${'w_itms' . $i} = $itms;
                ${'w_itmsk' . $i} = $itmsk;
                $log .= "你将<span class=\"yellow\">{${'w_itm' . $i}}</span>送给了<span class=\"yellow\">{$w_name}</span>。<br>";
                $w_log = "<span class=\"yellow\">{$name}</span>将<span class=\"yellow\">{${'w_itm' . $i}}</span>送给了你。";
                if (!$w_type) {
                    logsave($w_pid, $now, $w_log, 't');
                }
                addnews($now, 'senditem', $nick . ' ' . $name, $w_name, $itm);
                w_save($w_pid);
                $itm = $itmk = $itmsk = '';
                $itme = $itms = 0;
                $action = '';
                return;
            }
        }
        $log .= "<span class=\"yellow\">{$w_name}</span> 的包裹已经满了,不能赠送物品。<br>";
    }
    $action = '';
    $mode = 'command';
    return;
}
示例#4
0
function combat($active = 1, $wep_kind = '')
{
    global $log, $mode, $main, $cmd, $battle_title, $db, $tablepre, $pls, $message, $now, $w_log, $nosta, $hdamage, $hplayer;
    global $pid, $name, $club, $inf, $lvl, $exp, $killnum, $bid, $tactic, $pose, $hp, $mhp;
    global $wep, $wepk, $wepe, $weps, $wepsk;
    global $edata, $w_pid, $w_name, $w_pass, $w_type, $w_endtime, $w_deathtime, $w_gd, $w_sNo, $w_icon, $w_club, $w_hp, $w_mhp, $w_sp, $w_msp, $w_att, $w_def, $w_pls, $w_lvl, $w_exp, $w_money, $w_bid, $w_inf, $w_rage, $w_pose, $w_tactic, $w_killnum, $w_state, $w_wp, $w_wk, $w_wg, $w_wc, $w_wd, $w_wf, $w_teamID, $w_teamPass;
    global $w_wep, $w_wepk, $w_wepe, $w_weps, $w_arb, $w_arbk, $w_arbe, $w_arbs, $w_arh, $w_arhk, $w_arhe, $w_arhs, $w_ara, $w_arak, $w_arae, $w_aras, $w_arf, $w_arfk, $w_arfe, $w_arfs, $w_art, $w_artk, $w_arte, $w_arts, $w_itm0, $w_itmk0, $w_itme0, $w_itms0, $w_itm1, $w_itmk1, $w_itme1, $w_itms1, $w_itm2, $w_itmk2, $w_itme2, $w_itms2, $w_itm3, $w_itmk3, $w_itme3, $w_itms3, $w_itm4, $w_itmk4, $w_itme4, $w_itms4, $w_itm5, $w_itmk5, $w_itme5, $w_itms5, $w_itm6, $w_itmk6, $w_itme6, $w_itms6, $w_wepsk, $w_arbsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_itmsk0, $w_itmsk1, $w_itmsk2, $w_itmsk3, $w_itmsk4, $w_itmsk5, $w_itmsk6;
    global $infinfo, $w_combat_inf;
    global $rp, $w_rp, $action, $w_action, $achievement, $w_achievement, $skills, $w_skills, $skillpoint, $w_skillpoint;
    $battle_title = '战斗发生';
    if (!$wep_kind) {
        $w1 = substr($wepk, 1, 1);
        $w2 = substr($wepk, 2, 1);
        if (($w1 == 'G' || $w1 == 'J') && $weps == $nosta) {
            $wep_kind = $w2 ? $w2 : 'P';
        } else {
            $wep_kind = $w1;
        }
    } elseif (strpos($wepk, $wep_kind) === false && $wep_kind != 'back') {
        $wep_kind = substr($wepk, 1, 1);
    }
    $wep_temp = $wep;
    include_once GAME_ROOT . './include/game/clubskills.func.php';
    if ($active) {
        if ($wep_kind == 'back') {
            $log .= "你逃跑了。";
            $action = '';
            $mode = 'command';
            return;
        }
        $enemyid = $active ? str_replace('enemy', '', $action) : $bid;
        if (!$enemyid || strpos($action, 'enemy') === false) {
            $log .= "<span class=\"yellow\">你没有遇到敌人,或已经离开战场!</span><br>";
            $action = '';
            $mode = 'command';
            return;
        }
        $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$enemyid}'");
        if (!$db->num_rows($result)) {
            $log .= "对方不存在!<br>";
            $action = '';
            $mode = 'command';
            return;
        }
        $edata = $db->fetch_array($result);
        if ($edata['pls'] != $pls) {
            $log .= "<span class=\"yellow\">" . $edata['name'] . "</span>已经离开了<span class=\"yellow\">{$plsinfo[$pls]}</span>。<br>";
            $action = '';
            $mode = 'command';
            return;
        } elseif ($edata['hp'] <= 0) {
            global $corpseprotect, $gamestate;
            $log .= "<span class=\"red\">" . $edata['name'] . "</span>已经死亡,不能被攻击。<br>";
            if ($edata['endtime'] < $now - $corpseprotect && $gamestate < 40) {
                $action = 'corpse' . $edata['pid'];
                include_once GAME_ROOT . './include/game/battle.func.php';
                findcorpse($edata);
            }
            //$action = '';
            return;
        }
        if ($message) {
            //			foreach ( Array('<','>',';',',') as $value ) {
            //				if(strpos($message,$value)!==false){
            //					$message = str_replace ( $value, '', $message );
            //				}
            //			}
            $log .= "<span class=\"lime\">你对{$edata['name']}大喊:{$message}</span><br>";
            if (!$edata['type']) {
                $w_log = "<span class=\"lime\">{$name}对你大喊:{$message}</span><br>";
                logsave($edata['pid'], $now, $w_log, 'c');
            }
        }
        extract($edata, EXTR_PREFIX_ALL, 'w');
        init_battle(1);
        include_once GAME_ROOT . './include/game/attr.func.php';
        $log .= "你向<span class=\"red\">{$w_name}</span>发起了攻击!<br>";
        $att_dmg = attack($wep_kind, 1);
        global $ggflag;
        if ($ggflag) {
            return;
        }
        $w_hp -= $att_dmg;
        if ($w_hp > 0 && $w_tactic != 4 && $w_pose != 5) {
            global $rangeinfo;
            $w_w1 = substr($w_wepk, 1, 1);
            $w_w2 = substr($w_wepk, 2, 1);
            if (($w_w1 == 'G' || $w_w1 == 'J') && $w_weps == $nosta) {
                $w_wep_kind = $w_w2 ? $w_w2 : 'P';
            } else {
                $w_wep_kind = $w_w1;
            }
            //if (($rangeinfo [$wep_kind] == $rangeinfo [$w_wep_kind]) || ($rangeinfo [$w_wep_kind] == 'M')) {
            if ($rangeinfo[$wep_kind] <= $rangeinfo[$w_wep_kind] && $rangeinfo[$wep_kind] !== 0) {
                $counter = get_counter($w_wep_kind, $w_tactic, $w_club, $w_inf);
                $counter *= get_clubskill_bonus_counter($w_club, $w_skills, 'w_', $club, $skills, '');
                $counter_dice = rand(0, 99);
                if ($counter_dice < $counter) {
                    $log .= "<span class=\"red\">{$w_name}的反击!</span><br>";
                    $log .= npc_chat($w_type, $w_name, 'defend');
                    $def_dmg = defend($w_wep_kind);
                } else {
                    $log .= npc_chat($w_type, $w_name, 'escape');
                    $log .= "<span class=\"red\">{$w_name}处于无法反击的状态,逃跑了!</span><br>";
                }
            } else {
                $log .= npc_chat($w_type, $w_name, 'cannot');
                $log .= "<span class=\"red\">{$w_name}攻击范围不足,不能反击,逃跑了!</span><br>";
            }
        } elseif ($w_hp > 0) {
            $log .= "<span class=\"red\">{$w_name}逃跑了!</span><br>";
        }
    } else {
        $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$bid}'");
        $edata = $db->fetch_array($result);
        extract($edata, EXTR_PREFIX_ALL, 'w');
        init_battle(1);
        include_once GAME_ROOT . './include/game/attr.func.php';
        $log .= "<span class=\"red\">{$w_name}</span>突然向你袭来!<br>";
        $log .= npc_chat($w_type, $w_name, 'attack');
        npc_changewep();
        $w_w1 = substr($w_wepk, 1, 1);
        $w_w2 = substr($w_wepk, 2, 1);
        if (($w_w1 == 'G' || $w_w1 == 'J') && $w_weps == $nosta) {
            $w_wep_kind = $w_w2 ? $w_w2 : 'P';
        } else {
            $w_wep_kind = $w_w1;
        }
        $def_dmg = defend($w_wep_kind, 1);
        if ($hp > 0 && $tactic != 4 && $pose != 5) {
            global $rangeinfo;
            if ($rangeinfo[$wep_kind] >= $rangeinfo[$w_wep_kind] && $rangeinfo[$w_wep_kind] !== 0) {
                $counter = get_counter($wep_kind, $tactic, $club, $inf);
                $counter *= get_clubskill_bonus_counter($club, $skills, '', $w_club, $w_skills, 'w_');
                $counter_dice = rand(0, 99);
                if ($counter_dice < $counter) {
                    $log .= "<span class=\"red\">你的反击!</span><br>";
                    $wep_kind = substr($wepk, 1, 1);
                    $att_dmg = attack($wep_kind);
                    $w_hp -= $att_dmg;
                } else {
                    $log .= "<span class=\"red\">你处于无法反击的状态,逃跑了!</span><br>";
                }
            } else {
                $log .= "<span class=\"red\">你攻击范围不足,不能反击,逃跑了!</span><br>";
            }
        } elseif ($hp > 0) {
            $log .= "<span class=\"red\">你逃跑了!</span><br>";
        }
    }
    if ($hp == 0 && !$w_action) {
        $w_action = 'pacorpse' . $pid;
    }
    w_save($w_pid);
    $att_dmg = $att_dmg ? $att_dmg : 0;
    $def_dmg = $def_dmg ? $def_dmg : 0;
    if (!$w_type) {
        $w_inf_log = '';
        if ($w_combat_inf) {
            global $exdmginf;
            foreach ($exdmginf as $inf_ky => $w_inf_words) {
                if (strpos($w_combat_inf, $inf_ky) !== false) {
                    $w_inf_log .= "敌人的攻击造成你{$w_inf_words}了!<br>";
                }
            }
        }
        if ($active) {
            $w_log = "手持<span class=\"red\">{$wep_temp}</span>的<span class=\"yellow\">{$name}</span>向你袭击!<br>你受到其<span class=\"yellow\">{$att_dmg}</span>点攻击,对其做出了<span class=\"yellow\">{$def_dmg}</span>点反击。<br>{$w_inf_log}";
        } else {
            $w_log = "你发现了手持<span class=\"red\">{$wep_temp}</span>的<span class=\"yellow\">{$name}</span>并且先发制人!<br>你对其做出<span class=\"yellow\">{$def_dmg}</span>点攻击,受到其<span class=\"yellow\">{$att_dmg}</span>点反击。<br>{$w_inf_log}";
        }
        if ($hp == 0) {
            $w_log .= "<span class=\"yellow\">{$name}</span><span class=\"red\">被你杀死了!</span><br>";
            //include_once GAME_ROOT.'./include/game/achievement.func.php';
            //check_battle_achievement($w_achievement,$w_type,$name);
        }
        logsave($w_pid, $now, $w_log, 'b');
    }
    if ($att_dmg > $hdamage && $att_dmg >= $def_dmg) {
        $hdamage = $att_dmg;
        $hplayer = $name;
        save_combatinfo();
    } elseif ($def_dmg > $hdamage && !$w_type) {
        $hdamage = $def_dmg;
        $hplayer = $w_name;
        save_combatinfo();
    }
    //$bid = $w_pid;
    if ($w_hp <= 0 && $w_club != 99) {
        $w_bid = $pid;
        $w_hp = 0;
        if ($w_type == 0) {
            $killnum++;
        }
        include_once GAME_ROOT . './include/state.func.php';
        $killmsg = kill($wep_kind, $w_name, $w_type, $w_pid, $wep_temp);
        $log .= npc_chat($w_type, $w_name, 'death');
        include_once GAME_ROOT . './include/game/achievement.func.php';
        check_battle_achievement($name, $w_type, $w_name, $wep_temp);
        $log .= "<span class=\"red\">{$w_name}被你杀死了!</span><br>";
        //$rp = $rp + 20 ;
        if (!$w_type) {
            $rpup = $w_rp;
        } else {
            $rpup = 20;
        }
        if ($club == 19) {
            $rpdec = 30;
            $rpdec += get_clubskill_rp_dec($club, $skills);
            $rp += round($rpup * (100 - $rpdec) / 100);
        } else {
            $rp += $rpup;
        }
        if ($killmsg) {
            $log .= "<span class=\"yellow\">你对{$w_name}说:“{$killmsg}”</span><br>";
        }
        include_once GAME_ROOT . './include/game/battle.func.php';
        $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$w_pid}'");
        $cdata = $db->fetch_array($result);
        $action = 'corpse' . $edata['pid'];
        findcorpse($cdata);
        return;
    } else {
        if ($w_hp <= 0) {
            //有第二阶段
            if ($w_type) {
                $log .= npc_chat($w_type, $w_name, 'death');
                include_once GAME_ROOT . './include/system.func.php';
                $npcdata = evonpc($w_type, $w_name);
                $log .= '<span class="yellow">' . $w_name . '却没死去,反而爆发出真正的实力!</span><br>';
                if ($npcdata) {
                    addnews($now, 'evonpc', $w_name, $npcdata['name'], $name);
                    foreach ($npcdata as $key => $val) {
                        ${'w_' . $key} = $val;
                    }
                }
            } else {
                include_once GAME_ROOT . './include/state.func.php';
                $killmsg = kill($wep_kind, $w_name, $w_type, $w_pid, $wep_temp);
                $log .= '<span class="yellow">' . $w_name . '由于其及时按了BOMB键而原地满血复活了!</span><br>';
            }
        }
        $main = 'battle';
        init_battle(1);
        if (CURSCRIPT !== 'botservice') {
            include template('battleresult');
            //$cmd = '<br><br><input type="hidden" name="mode" value="command"><input type="radio" name="command" id="back" value="back" checked><a onclick=sl("back"); href="javascript:void(0);" >确定</a><br>';
            $cmd = ob_get_contents();
            ob_clean();
            //$bid = $hp <= 0 ? $bid : 0;
        }
        $action = '';
        return;
    }
}
示例#5
0
function senditem()
{
    global $tablepre, $log, $mode, $main, $command, $cmd, $battle_title, $pls, $wid, $plsinfo, $message, $db, $now, $name, $w_log;
    $result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='{$wid}'");
    if (!$db->num_rows($result)) {
        $log .= "对方不存在!<br>";
        $mode = 'command';
        return;
    }
    $edata = $db->fetch_array($result);
    if ($edata['pls'] != $pls) {
        $log .= "<span class=\"yellow\">" . $edata['name'] . "</span> 已经离开了 <span class=\"yellow\">{$plsinfo[$pls]}</span> 。<br>";
        $mode = 'command';
        return;
    } elseif ($edata['hp'] <= 0) {
        $log .= "<span class=\"yellow\">" . $edata['name'] . "</span> 已经死亡,不能接受物品。<br>";
        $mode = 'command';
        return;
    }
    if ($message) {
        $log .= "<span class=\"lime\">你对 " . $edata['name'] . " 说:{$message}</span><br>";
        $w_log = "<span class=\"lime\">{$name} 对你说:{$message}</span>";
        if (!$edata['type']) {
            logsave($edata['pid'], $now, $w_log);
        }
    }
    if ($command != 'back') {
        $itmn = substr($command, 3);
        global ${'itm' . $itmn}, ${'itmk' . $itmn}, ${'itme' . $itmn}, ${'itms' . $itmn}, ${'itmsk' . $itmn};
        if (!${'itms' . $itmn}) {
            $log .= '此道具不存在!';
            $mode = 'command';
            return;
        }
        $itm =& ${'itm' . $itmn};
        $itmk =& ${'itmk' . $itmn};
        $itme =& ${'itme' . $itmn};
        $itms =& ${'itms' . $itmn};
        $itmsk =& ${'itmsk' . $itmn};
        global $w_pid, $w_name, $w_pass, $w_type, $w_endtime, $w_gd, $w_sNo, $w_icon, $w_club, $w_hp, $w_mhp, $w_sp, $w_msp, $w_att, $w_def, $w_pls, $w_lvl, $w_exp, $w_money, $w_bid, $w_inf, $w_rage, $w_pose, $w_tactic, $w_killnum, $w_state, $w_wp, $w_wk, $w_wg, $w_wc, $w_wd, $w_teamID, $w_teamPass, $w_wep, $w_wepk, $w_wepe, $w_weps, $w_arb, $w_arbk, $w_arbe, $w_arbs, $w_arh, $w_arhk, $w_arhe, $w_arhs, $w_ara, $w_arak, $w_arae, $w_aras, $w_arf, $w_arfk, $w_arfe, $w_arfs, $w_art, $w_artk, $w_arte, $w_arts, $w_itm0, $w_itmk0, $w_itme0, $w_itms0, $w_itm1, $w_itmk1, $w_itme1, $w_itms1, $w_itm2, $w_itmk2, $w_itme2, $w_itms2, $w_itm3, $w_itmk3, $w_itme3, $w_itms3, $w_itm4, $w_itmk4, $w_itme4, $w_itms4, $w_itm5, $w_itmk5, $w_itme5, $w_itms5, $w_wepsk, $w_arbsk, $w_arhsk, $w_arask, $w_arfsk, $w_artsk, $w_itmsk0, $w_itmsk1, $w_itmsk2, $w_itmsk3, $w_itmsk4, $w_itmsk5;
        extract($edata, EXTR_PREFIX_ALL, 'w');
        for ($i = 1; $i < 6; $i++) {
            if (!${'w_itms' . $i}) {
                ${'w_itm' . $i} = $itm;
                ${'w_itmk' . $i} = $itmk;
                ${'w_itme' . $i} = $itme;
                ${'w_itms' . $i} = $itms;
                ${'w_itmsk' . $i} = $itmsk;
                $log .= "你将 <span class=\"yellow\">{${'w_itm' . $i}}</span> 送给了 <span class=\"yellow\">{$w_name}</span> 。<br>";
                $w_log = "<span class=\"yellow\">{$name}</span> 将 <span class=\"yellow\">{${'w_itm' . $i}}</span> 送给了你。";
                if (!$w_type) {
                    logsave($w_pid, $now, $w_log);
                }
                addnews($now, 'senditem', $name, $w_name, $itm);
                w_save($w_pid);
                $itm = $itmk = $itmsk = '';
                $itme = $itms = 0;
                return;
            }
        }
        $log .= "<span class=\"yellow\">{$w_name}</span> 的包裹已经满了,不能赠送物品。<br>";
    }
    $mode = 'command';
    return;
}