Commit bad47d4c authored by hisuinohoshi's avatar hisuinohoshi

rev botservice phase 0.33

新增:
- bot基础行为模式(入场、探索、合成);

变化:
- 消灭了大部分功能函数中与玩家数据相关的global;
parent 8e713228
......@@ -34,6 +34,7 @@ gamedata/banlist.php
gamedata/clearlog.php
gamedata/cache/queue_vnmixitem_1.php
gamedata/cache/vnmixitem_1.php
bot/bot_enable.bat
# DTS Cache Files
gamedata/bak/
......
<?php
require './include/common.inc.php';
require './bot/revbotservice.php';
while (true) {
botservice();
sleep($botcds);
}
?>
\ No newline at end of file
@echo off
PATH=%PATH%;C:\wamp64\bin\php\php7.4.0
php -v
set BOT_CD=2
cd ..
:loop
php bot/revbotservice.php
timeout /t %BOT_CD%
goto loop
\ No newline at end of file
#!/bin/bash
BOT_CD=0.5
BOT_CD=2
cd ..
while true; do
php bot/revbotservice.php
......
<?php
if(!defined('IN_GAME')) {
exit('Access Denied');
}
# bot参数一览
/*
0.['clbpara']['botphase'] : bot阶段 用于判定bot总的行动方针
1.['clbpara']['botact'] :包含bot具体的行为参数
2.['clbpara']['botstf']:记录bot获取过的素材
3.['clbpara']['botmix']:记录bot合成过的道具
*/
# bot在不同阶段的行动目标
$bot_action_phase = Array
(
# 0.探索阶段:刚刚入场,目标是寻找合成素材
0 => Array(
'pose' => 3,
'tactic' => 2,
),
# 1.偷反阶段:攒够合成素材,开始刷兵,会主动移动到有声音或有兵死掉的位置
1 => Array(
'pose' => 4,
'tactic' => 3,
),
# 2.强袭阶段:武器效果到达阈值,开始合成广域主动猎杀场上玩家目标
2 => Array(
'pose' => 2, //小开不算开
'tactic' => 2,
),
# 3.躲避阶段:场上存在其他更强的玩家,进入躲避阶段,不停移动躲避敌人,并把身上的钱全部拿来买雷
3 => Array(
'pose' => 4,
'tactic' => 4,
),
);
# bot在阶段0寻找素材时要前往的地图
$bot_moveto_phase = Array
(
1 => 30,
2 => 21,
3 => 16,
4 => 21,
);
# bot会拾取的道具名白名单(注意:商店购买也算在内)
$bot_can_get_itemlist = Array
(
'治疗针','体力回复药','凸眼鱼','针线包','驱云弹','钉','磨刀石','沉默磨刀石','黑磨刀石','『祝福宝石』','『灵魂宝石』',
);
$bot_stfid = Array
(
0 => Array
(
'增幅设备' => 'r0',
'生命探测器' => 'r1',
'广域生命探测器' => 'r2',
'手机' => 'p1',
'笔记本电脑' => 'p2',
'移动PC' => 'p3',
),
1 => Array
(
'原型武器P' => 'c11',
'实验装甲A' => 'c12',
'小棍棒' => 'c13',
'冰沙' => 'c14',
'御神签' => 'c15',
'《哲♂学》' => 'c16',
'☆金属拳套☆ ' => 'c17',
'★RPG-7★' => 'c19',
),
2 => Array
(
'『风魔激光刃』' => 'c21',
'『祝福宝石』' => 'c22',
),
3 => Array
(
'《小黄的草帽》' => 'c31',
'《小黄的钓鱼竿》' => 'c32',
'《小黄的行军靴》' => 'c33',
'《小黄的收服特训》' => 'c34',
'《小黄的常磐之力》' => 'c35',
),
4 => Array
(
'『连射激光』' => 'c41',
'『高性能子机』' => 'c42',
),
);
$bot_mixid = Array
(
'『T-LINK念动冲拳』' => 'm11',
'Azurewrath' => 'm21',
'《小黄的精灵球》' => 'm31',
'《小黄的超级球》' => 'm32',
'《小黄的大师球》' => 'm33',
);
$bot_player_list = Array
(
'type' => 18,
'bid' => 0,
'inf' => '',
'rage' => 0,
'pose'=> 2,
'tactic' => 3,
'killnum' => 0,
'rp' => 0,
'mhp' => 400,
'msp' => 400,
'att' => 120,
'def' => 120,
'lvl' => 0,
'skill' => 40,
'money' => 50,
'art' => '◆焰火',
'artk' => 'A',
'arte' => 1,
'arts' => 1,
'artsk' => 'H',
'itm1' => '治疗针',
'itmk1' => 'HH',
'itme1' => 100,
'itms1' => 60,
'itm2' => '体力回复药',
'itmk2' => 'HS',
'itme2' => 100,
'itms2' => 60,
'itm6' => '银白盒子',
'itmk6' => 'ps',
'itme6' => 1,
'itms6' => 1,
'sub' => array
(
0 => array
(
'name' => '小黄鸡',
'nick' => '参展者',
'icon' => 0,
'gd' => 'm',
'club' => 2,
'pls' => 21,
'wep' => '『寻星勇者』',
'wepk' => 'WK',
'wepe' => 75,
'weps' => 45,
'wepsk' => 'd',
'arb' => '男生校服',
'arbk' => 'DB',
'arbe' => 15,
'arbs' => 5,
),
1 => array
(
'name' => '小黄鸭',
'nick' => '参展者',
'icon' => 0,
'gd' => 'f',
'club' => 4,
'pls' => 21,
'wep' => '『单向火箭炮』',
'wepk' => 'WG',
'wepe' => 90,
'weps' => 188,
'wepsk' => 'do',
'arb' => '女生校服',
'arbk' => 'DB',
'arbe' => 15,
'arbs' => 5,
),
2 => array
(
'name' => '大白鹅',
'nick' => '参展者',
'icon' => 0,
'gd' => 'f',
'club' => 3,
'pls' => 16,
'wep' => '冰冻青蛙',
'wepk' => 'WC',
'wepe' => 90,
'weps' => 198,
'wepsk' => 'i',
'arb' => '女生校服',
'arbk' => 'DB',
'arbe' => 15,
'arbs' => 5,
),
3 => array
(
'name' => '小鲤鱼',
'nick' => '参展者',
'icon' => 0,
'gd' => 'm',
'club' => 1,
'pls' => 30,
'wep' => '电击鞭',
'wepk' => 'WP',
'wepe' => 64,
'weps' => 32,
'wepsk' => 'e',
'arb' => '男生校服',
'arbk' => 'DB',
'arbe' => 15,
'arbs' => 5,
),
),
);
?>
<?php
if(!defined('IN_GAME')) {
exit('Access Denied');
}
include GAME_ROOT.'./bot/revbot.config.php';
# bot初始化
function bot_player_valid($vnums)
{
global $validnum,$alivenum,$now,$db,$tablepre,$gamevars;
global $bot_player_list;
$bot_nums = count($bot_player_list['sub']);
if(!empty($vnums) && !empty($bot_nums))
{
$ids = Array();
for($i=0;$i<$vnums;$i++)
{
$bot = rand(0,$bot_nums-1);
$bots = array_merge($bot_player_list,$bot_player_list['sub'][$bot]);
unset($bots['sub']);
extract($bots);
$validnum++;
$alivenum++;
$endtime = $validtime = $now;
$sNo = $validnum;
$hp = $mhp;
$sp = $msp;
$pls = 0;
$killnum = 0;
$lvl = 0;
$exp = $areanum * 20;
$money = 20;
$rage = 0;
$pose = 3;
$tactic = 2;
$pass = 'bot';
$state = 0;
$bid = 0;
$inf = $teamID = $teamPass = '';
$ndata = update_db_player_structure();
foreach($ndata as $key)
{
if(isset($$key)) $ndata[$key] = $$key;
}
include_once GAME_ROOT.'./include/game/clubslct.func.php';
if(!empty($club)) changeclub($club,$ndata);
$ndata['clbpara']['botphase'] = 0; $ndata['clbpara']['botact']['sitm'] = 0;
$ndata = player_format_with_db_structure($ndata);
if(!empty($ndata)) $db->array_insert("{$tablepre}players", $ndata);
$ids[] = $db->insert_id();
# 初始化头衔tooltip
include_once GAME_ROOT.'./include/game/titles.func.php';
$nickinfo = get_title_desc($nick);
addnews($now,'newpc',$nickinfo.' '.$name,"{$sexinfo[$gd]}{$sNo}号",$ip,$nick);
}
return $ids;
}
}
# bot行为
function bot_acts($id)
{
global $log;
$bdata = fetch_playerdata_by_pid($id);
if($bdata && $bdata['hp'] > 0)
{
# 先检查是否需要使用道具
bot_use_items($bdata);
# 在行动前检查一遍行动策略
bot_pre_act_check($bdata);
# 判定bot是否需要移动:
include_once GAME_ROOT.'./include/game/search.func.php';
if(isset($bdata['clbpara']['botact']['moveto']) && $bdata['clbpara']['botact']['moveto'] != $bdata['pls'])
{
$flag = move($bdata['clbpara']['botact']['moveto'],$bdata);
}
else
{
$flag = search($bdata);
}
unset($bdata['clbpara']['botact']['moveto']);
echo $log;
echo "bot {$bdata['name']} 行动完成。";
player_save($bdata);
return 1;
}
else
{
return 0;
}
}
# bot在行动前检查策略
function bot_pre_act_check(&$pa)
{
global $db,$tablepre;
global $noisepls;
global $bot_moveto_phase,$bot_action_phase;
$plslist = get_safe_plslist();
# -1.存在异常状态,花1点技能点解除下异常状态
if(!empty($pa['inf']) && $pa['skillpoint'])
{
$pa['skillpoint'] --;
$pa['inf'] = '';
$pa['hp'] = $pa['mhp']; $pa['sp'] = $pa['msp'];
}
# 0.探索阶段:刚刚入场,目标是寻找合成素材
if($pa['clbpara']['botphase'] == 0)
{
if(!bot_check_can_mixitem($pa))
{
# 将目标地图设置为寻物所需位置
$bmoveto = $pa['pls'] == $bot_moveto_phase[$pa['club']] ? NULL : $bot_moveto_phase[$pa['club']];
# 能否到达指定寻物位置?
if((isset($bmoveto) && !in_array($bmoveto,$plslist)) || $pa['clbpara']['botact']['stimes'] >= 100)
{
unset($bmoveto);
# 被禁了!那只能黑幕一个了(
if($pa['club'] == 1)
{
$pa['clbpara']['botmix']['c11'] = 1; $pa['clbpara']['botmix']['c12'] = 1;
}
elseif($pa['club'] == 2)
{
$pa['clbpara']['botmix']['c21'] = 1;
}
elseif($pa['club'] == 3)
{
$pa['clbpara']['botmix']['c31'] = 1; $pa['clbpara']['botmix']['c32'] = 1; $pa['clbpara']['botmix']['c33'] = 1;
}
elseif($pa['club'] == 4)
{
$pa['wep'] = '高性能子机'; $pa['wepk'] = 'WG'; $pa['wepe'] = 77; $pa['weps'] = 77; $pa['wepsk'] = 'r';
}
}
else
{
$pa['clbpara']['botact']['stimes']++;
}
}
else
{
unset($pa['clbpara']['botact']['stimes']);
unset($bdata['clbpara']['botact']['moveto']);
$pa['clbpara']['botphase'] = 1;
}
}
# 1.偷反阶段:攒够合成素材,开始刷兵,会主动移动到有声音或有兵死掉的位置
# 2.(没合出广域的)强袭阶段:武器效果到达阈值,开始合成广域主动猎杀场上玩家目标
elseif($pa['clbpara']['botphase'] == 1 || (!isset($pa['clbpara']['botstf']['r2']) && $pa['clbpara']['botphase'] == 2))
{
bot_check_can_mixitem($pa);
# bot优先移动到有声音的位置
if($noisepls && $bdata['pls'] != $noisepls)
{
$bmoveto = $noisepls;
}
# 如果没有 移动到上一个死人的位置
else
{
$cpresult = $db->query("SELECT recv FROM {$tablepre}chat WHERE type = 3 ORDER BY time DESC");
while($spls = $db->fetch_array($cpresult))
{
if(in_array($spls,$plslist))
{
$bmoveto = $spls;
break;
}
}
}
}
# 2.(合出广域的)强袭阶段:武器效果到达阈值,挑选一位比较牛的玩家开始猎杀
elseif($pa['clbpara']['botphase'] == 2)
{
$htresult = $db->query("SELECT pls FROM {$tablepre}chat WHERE type = 0 AND pass != 'bot' ORDER BY lvl DESC");
while($spls = $db->fetch_array($htresult))
{
if(in_array($spls,$plslist))
{
$bmoveto = $spls;
break;
}
}
}
# 3.躲避阶段:场上有触手,使用一些卑鄙招数
else
{
# 有钱买雷先去买雷
if(empty($pa['clbpara']['botact']['gettrap']) && $pa['money'] >= 2500 && (in_array(14,$plslist) || in_array(27,$plslist)))
{
$bmoveto = in_array(14,$plslist) ? 14 : 27;
}
# 买到雷去干坏事
elseif(!empty($pa['clbpara']['botact']['gettrap']))
{
$htresult = $db->query("SELECT pls FROM {$tablepre}chat WHERE type = 0 AND pass != 'bot' ORDER BY wepe DESC");
if($db->num_rows($result)) $bmoveto = $db->fetch_array($result,0);
}
# 买不起雷,那跑路吧
else
{
$bmoveto = $plslist[array_rand($plslist)];
}
}
if(!empty($bmoveto)) $pa['clbpara']['botact']['moveto'] = $bmoveto;
$pa['pose'] = $bot_action_phase[$pa['clbpara']['botphase']]['pose'];
$pa['tactic'] = $bot_action_phase[$pa['clbpara']['botphase']]['tactic'];
return $bmoveto;
}
# bot在行动后修正策略
function bot_end_act_check(&$pa)
{
}
# bot使用道具的优先级
function bot_use_items(&$pa)
{
global $bot_can_get_itemlist,$bot_stfid;
include_once GAME_ROOT.'./include/game/item.func.php';
$equip_list = get_equip_list();
$e1 = get_equip_list(1);
for($i=1;$i<=6;$i++)
{
if(!empty($pa['itms'.$i]))
{
# 检查是否需要回血
if($pa['hp'] < $pa['mhp'] && (strpos($pa['itmk'.$i],'HH')===0 || strpos($pa['itmk'.$i],'HB')===0))
{
do{
itemuse($i,$pa);
}while($pa['hp'] < $pa['mhp'] && !empty($pa['itms'.$i]));
# 补货提示
if($pa['itms'.$i] < 5) $botact['need_buy_ihp'] = 1;
continue;
}
# 检查是否需要回体力(设个定值,防止浪费)
if($pa['sp'] < 50 && (strpos($pa['itmk'.$i],'HS')===0 || strpos($pa['itmk'.$i],'HB')===0))
{
do{
itemuse($i,$pa);
}while($pa['sp'] < 50 && !empty($pa['itms'.$i]));
# 补货提示
if($pa['itms'.$i] < 5) $botact['need_buy_isp'] = 1;
continue;
}
# 检查道具是否为通用素材
if(isset($bot_stfid[0][$pa['itm'.$i]]))
{
echo "将{$pa['itm'.$i]}存入了素材库<br>";
$stf_id = $bot_stfid[0][$pa['itm'.$i]];
$pa['clbpara']['botstf'][$stf_id] += $pa['itms'.$i];
$pa['itm'.$i] = $pa['itmk'.$i] = $pa['itmsk'.$i] = '';
$pa['itms'.$i] = $pa['itme'.$i] = 0;
continue;
}
# 检查道具是否为特定素材
if(isset($bot_stfid[$pa['club']][$pa['itm'.$i]]))
{
echo "将{$pa['itm'.$i]}存入了素材库<br>";
$stf_id = $bot_stfid[$pa['club']][$pa['itm'.$i]];
$pa['clbpara']['botstf'][$stf_id] += $pa['itms'.$i];
$pa['itm'.$i] = $pa['itmk'.$i] = $pa['itmsk'.$i] = '';
$pa['itms'.$i] = $pa['itme'.$i] = 0;
continue;
}
# 棍棒武器检查是否需要打钉
if(strpos($pa['itm'.$i],'钉')!==false)
{
if(strpos($pa['wep'],'棍棒')!==false)
{
do{
itemuse($i,$pa);
}while(!empty($pa['itms'.$i]));
}
else
{
itemdrop('itm'.$i,$pa);
}
continue;
}
# 锐器检查是否需要磨刀
if(strpos($pa['itm'.$i],'磨刀石')!==false)
{
if(strpos($pa['wepk'],'K')!==false)
{
do{
itemuse($i,$pa);
}while(!empty($pa['itms'.$i]));
}
else
{
itemdrop('itm'.$i,$pa);
}
continue;
}
# 给耐久大于10的衣服打针线包
if($pa['arbs'] > 10 && strpos($pa['itm'.$i],'针线包')!==false)
{
do{
itemuse($i,$pa);
}while(!empty($pa['itms'.$i]));
continue;
}
# 礼盒直接开
if(strpos($pa['itmk'.$i],'p')!==false)
{
do{
itemuse($i,$pa);
}while(!empty($pa['itms'.$i]));
continue;
}
# 技能书、攻防药直接吃 300效以下陷阱直接用
if(strpos($pa['itmk'.$i],'M')===0 || strpos($pa['itmk'.$i],'V')===0 || (strpos($pa['itmk'.$i],'T')===0 && $pa['itme'.$i]<=300) )
{
do{
itemuse($i,$pa);
}while(!empty($pa['itms'.$i]));
continue;
}
# 驱云弹
if($pa['itm'.$i] == '驱云弹') itemuse($i,$pa);
# 检查是否需要更换装备
if(strpos($pa['itmk'.$i],'D')===0)
{
if(bot_check_equipitem($pa,$e1[$pa['itmk'.$i]])) itemuse($i,$pa);
itemdrop('itm'.$i,$pa);
continue;
}
# 把所有不在素材库和白名单中的道具扔掉
if(!in_array($pa['itm'.$i],$bot_can_get_itemlist))
{
itemdrop('itm'.$i,$pa);
continue;
}
}
}
return;
}
# 检查bot是否会将道具放入背包内
function bot_check_getitem(&$pa)
{
$e1 = get_equip_list(1);
if(!empty($pa['itms0']))
{
global $bot_can_get_itemlist,$bot_stfid;
# 白名单道具
if(in_array($pa['itm0'],$bot_can_get_itemlist))
{
return 1;
}
# 通用合成素材
if(in_array($pa['itm0'],$bot_stfid[0]))
{
return 1;
}
# 社团限定合成素材
if(in_array($pa['itm0'],$bot_stfid[$pa['club']]))
{
return 1;
}
# 强化药物、技能书、地雷
if(strpos($pa['itmk0'],'M')===0 || strpos($pa['itmk0'],'V')===0 || strpos($pa['itmk0'],'T')===0) return 1;
# 装备
if(strpos($pa['itmk0'],'D')===0 && bot_check_equipitem($pa,$e1[$pa['itmk0']])) return 1;
}
return 0;
}
# 检查bot是否会拾取对应防具(不包括饰品)
function bot_check_equipitem(&$pa,$equip)
{
if(!$pa[$equip.'s'] || $pa['itme0'] > $pa[$equip.'e']) return 1;
return 0;
}
# bot武器升级:先这么搞着吧
function bot_check_can_mixitem(&$pa)
{
global $db,$tableprem,$bot_mixid;
$stf = $pa['clbpara']['botstf'];
$mlst = $pa['clbpara']['botmix'];
$mixflag = 0;
if(empty($stf['r2']) && isset($stf['r0']) && isset($stf['r1']))
{
$pa['clbpara']['botstf']['r2'] = 1;
addnews($now,'itemmix',get_title_desc($nick).' '.$name,'广域生命探测器');
}
if(empty($stf['p3']) && isset($stf['p1']) && isset($stf['p2']))
{
$pa['clbpara']['botstf']['p3'] = 1;
addnews($now,'itemmix',get_title_desc($nick).' '.$name,'移动 PC');
}
if($pa['club'] == 1)
{
if(empty($mlst['m11']) && isset($stf['c11']) && isset($stf['c12']))
{
$pa['wep'] = '『T-LINK念动冲拳』';
$pa['wepk'] = 'WP'; $pa['wepe'] = 240; $pa['weps'] = '∞'; $pa['wepsk'] = 'eN';
$pa['clbpara']['botphase'] = 1;
$mixflag = 1;
}
}
elseif($pa['club'] == 2)
{
if(!$pa['clbpara']['botphase'] && isset($stf['c21']))
{
$pa['clbpara']['botphase'] = 1;
}
if(empty($mlst['m21']) && isset($stf['c21']) && isset($stf['c22']))
{
$pa['wep'] = 'Azurewrath';
$pa['wepk'] = 'WK'; $pa['wepe'] = 9999; $pa['weps'] = '∞'; $pa['wepsk'] = 'rci';
$mixflag = 1;
}
}
elseif($pa['club'] == 3)
{
if(empty($mlst['m31']) && isset($stf['c31']) && isset($stf['c32']) && isset($stf['c33']))
{
$pa['wep'] = '《小黄的精灵球》';
$pa['wepk'] = 'WC'; $pa['wepe'] = 386; $pa['weps'] = '∞'; $pa['wepsk'] = '';
$mixflag = 1;
}
elseif(empty($mlst['m32']) && isset($stf['c34']))
{
$pa['wep'] = '《小黄的超级球》';
$pa['wepk'] = 'WC'; $pa['wepe'] = 386; $pa['weps'] = '∞'; $pa['wepsk'] = 'Zir';
$mixflag = 1;
}
elseif(empty($mlst['m33']) && isset($stf['c35']) && $stf['c34'] >= 2)
{
$pa['wep'] = '《小黄的大师球》'; $pa['money'] -= 9300;
$pa['wepk'] = 'WC'; $pa['wepe'] = 493; $pa['weps'] = '∞'; $pa['wepsk'] = 'Zrd';
$mixflag = 1;
}
}
elseif($pa['club'] == 4)
{
if(!$pa['clbpara']['botphase'] && (isset($stf['c41']) || isset($stf['c42'])))
{
$pa['clbpara']['botphase'] = 1;
}
}
if($mixflag)
{
$pa['clbpara']['botmix'][$bot_mixid[$pa['wep']]] = 1;
addnews($now,'itemmix','参展者 '.$pa['name'],$pa['wep']);
}
return $mixflag;
}
function get_bot_action_cost($pa,$action)
{
$bot_action_cost = Array
(
'search' => 2,
'move' => 2,
'useitem' => 1,
'mixitem' => 1,
'heal' => 1,
);
return $bot_action_cost[$action] ?: 2;
}
?>
<?php
require './include/common.inc.php';
require GAME_ROOT . './include/game.func.php';
require config('combatcfg', $gamecfg);
include './include/common.inc.php';
include GAME_ROOT.'./include/game.func.php';
include GAME_ROOT.'./bot/revbot.func.php';
$botname = '测试用脚本狗';
$botcds = 0.5; //每0.5秒行动一次
$bdata = fetch_playerdata_by_name($botname);
if (!$bdata) {
echo "bot_not_in_game=1\n";
exit();
}
if ($gamestate == 0) {
echo "game_ended=1\n";
exit();
}
# 初始化bot上次行动时间
if (empty($bdata['clbpara']['action_flag']['lastact']))
$bdata['clbpara']['action_flag']['lastact'] = $now;
# 初始化bot可行动次数
$action_t = ($now - $bdata['clbpara']['action_flag']['lastact']) / $botcds;
# 初始化bot逻辑判断
while ($action_t > 0 && $bdata['hp'] > 0) {
player_save($bdata);
$bdata = fetch_playerdata_by_name($bdata['name']);
echo "bot开始行动...<br>";
$bdata['clbpara']['action_flag']['lastact'] = $now;
$action_t--;
unset($bmoveto);
# 判定bot是否需要移动:
# bot优先移动到有声音的位置
if ($noisepls && $bdata['pls'] != $noisepls) {
$bmoveto = $noisepls;
}
# 否则检查是否在同一个位置探索超过20次,超过20次则移动到下个位置
elseif ($bdata['pls'] == 0 || $bdata['clbpara']['action_flag']['sctimes'] > 20 || !empty($bdata['clbpara']['action_flag']['needmove'])) {
$bmoveto = rand(1, 31);
}
# 待补完:直接调用move()
if (isset($bmoveto)) {
$bdata['pls'] = $bmoveto;
unset($bdata['clbpara']['action_flag']['sctimes']);
unset($bdata['clbpara']['action_flag']['needmove']);
}
# 判断是否需要执行探索行为
$bsearch = 1;
# 待补完:直接调用search()
if ($bsearch) {
echo "bot开始探索...<br>";
# bot触发事件(暂不可用)
$bot_event_obbs = -1;
$event_dice = rand(0, 99);
if ($event_dice < $event_obbs) {
include_once GAME_ROOT . './include/game/event.func.php';
$event_flag = event();
//触发了事件,中止探索推进
if ($event_flag)
goto action_end_flag;
}
# bot踩雷(暂不可用)
$bot_trap_obbs = -1;
$trap_dice = diceroll(99);
// 计算陷阱“发现率”
if ($trap_dice < $bot_trap_obbs) {
$trapresult = $db->query("SELECT * FROM {$tablepre}maptrap WHERE pls = {$bdata['pls']} ORDER BY itmk DESC");
$trpnum = $db->num_rows($trapresult);
//看地图上有没有陷阱
if ($trpnum) {
include_once GAME_ROOT . './include/game/itemmain.func.php';
$fstrp = $db->fetch_array($trapresult);
//奇迹雷
$xtrpflag = $fstrp['itmk'] == 'TOc' ? true : false;
//计算 或不计算陷阱“触发率”:
$real_trap_obbs = $xtrpflag ? 100 : calc_real_trap_obbs($bdata, $trpnum);
//echo "realtrapobbs = {$real_trap_obbs}<br>";
if ($trap_dice < $real_trap_obbs) {
if (!$xtrpflag) {
$itemno = rand(0, $trpnum - 1);
$db->data_seek($trapresult, $itemno);
$fstrp = $db->fetch_array($trapresult);
}
$bdata['itm0'] = $fstrp['itm'];
$bdata['itmk0'] = $fstrp['itmk'];
$bdata['itme0'] = $fstrp['itme'];
$bdata['itms0'] = $fstrp['itms'];
$bdata['itmsk0'] = $fstrp['itmsk'];
$tid = $fstrp['tid'];
$db->query("DELETE FROM {$tablepre}maptrap WHERE tid='$tid'");
//itemfind();
goto action_end_flag;
}
}
}
# bot遇敌
$bot_schmode_obbs = 75;
include_once GAME_ROOT . './include/game/attr.func.php';
$mode_dice = rand(0, 99);
if ($mode_dice < $bot_schmode_obbs) {
echo "bot进入遇敌判定...<br>";
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pls={$bdata['pls']} AND pid!={$bdata['pid']}");
if (!$db->num_rows($result)) {
echo 'bot发现<span class="yellow">周围一个人都没有</span>,准备离开。<br>';
$bdata['clbpara']['action_flag']['needmove'] = 1;
goto action_end_flag;
}
$enemynum = $db->num_rows($result);
$enemyarray = range(0, $enemynum - 1);
shuffle($enemyarray);
# 计算bot遇敌率 待整合
//$find_r = get_find_r($weather,$pls,$pose,$tactic,$club,$inf);
$b_find_r = 75;
global $enemy_obbs, $corpse_obbs, $corpseprotect;
$find_obbs = $enemy_obbs + $b_find_r;
# 计算bot是否遇敌
$meetman_flag = 0;
include_once GAME_ROOT . './include/game/revattr.func.php';
foreach ($enemyarray as $enum) {
$db->data_seek($result, $enum);
$edata = $db->fetch_array($result);
if (!$edata['type'] || $gamestate < 50) {
if ($edata['hp'] <= 0) {
//直接略过无效尸体
if ($gamestate >= 40 || ($edata['endtime'] > ($now - $corpseprotect)))
continue;
$ret = false;
foreach (array('money', 'arhs', 'aras', 'arfs', 'arts', 'itms1', 'itms2', 'itms3', 'itms4', 'itms5', 'itms6') as $chkval) {
if ($edata[$chkval]) {
$ret = true;
break;
}
}
if (!$ret)
continue;
//计算尸体发现率
$corpse_dice = rand(0, 99);
if ($corpse_dice < $corpse_obbs) {
$meetman_flag = 1;
break;
}
} else {
//直接略过决斗者
global $artk;
if ((!$edata['type']) && ($artk == 'XX') && (($edata['artk'] != 'XX') || ($edata['art'] != $name)) && ($gamestate < 50))
continue;
if (($artk != 'XX') && ($edata['artk'] == 'XX') && ($gamestate < 50))
continue;
//计算活人发现率
$hide_r = get_hide_r_rev($bdata, $edata);
$enemy_dice = diceroll(99);
//echo "hide_r = {$hide_r} | find_obbs = {$find_obbs} | dice = {$enemy_dice}";
$meetman_flag = $enemy_dice < ($find_obbs - $hide_r) ? 1 : -1;
break;
}
}
}
if ($meetman_flag > 0) {
echo "bot已遇敌!<br>";
if ($edata['hp'] > 0) {
# bot发现发现队友或中立单位(暂无效果)
/*if($teamID&&(!$fog)&&($gamestate<40)&&($teamID == $edata['teamID']))
if($gamestate > 10)
{
if(!empty($gamevars['botplayer']))
{
$bid = $edata['pid'];
$action = 'team'.$edata['pid'];
include_once GAME_ROOT.'./include/game/battle.func.php';
findteam($edata);
return;
}
//发现中立NPC或友军 TODO:把这里条件判断挪到一个函数里
elseif(isset($edata['clbpara']['post']) && $edata['clbpara']['post'] == $pid)
# bot初始化
$ids = bot_player_valid($gamevars['botplayer']);
unset($gamevars['botplayer']);
$gamevars['botid'] = $ids;
save_gameinfo();
echo "所有BOT初始化完成,共计:".(count($ids))."个";
}
elseif(!empty($gamevars['botid']))
{
$bid = $edata['pid'];
$action = 'neut'.$edata['pid'];
include_once GAME_ROOT.'./include/game/revbattle.func.php';
findneut($edata,1);
return;
}*/
# bot 发现敌人
include_once GAME_ROOT . './include/game/revbattle.func.php';
include_once GAME_ROOT . './include/game/revcombat.func.php';
//刷新敌人时效性状态
if (!empty($edata['clbpara']['lasttimes']))
$edata = check_skilllasttimes($edata);
//计算先攻概率
$active_r = get_active_r_rev($bdata, $edata);
$active_dice = diceroll(99);
//进入战斗
//先制
if ($active_dice < $active_r) {
$action = 'enemy' . $edata['pid'];
//findenemy_rev($edata);
rev_combat_prepare($bdata, $edata, 1);
}
//挨打
else {
rev_combat_prepare($edata, $bdata, 0);
}
echo $log;
//战斗后刷新bdata数据
$bdata = fetch_playerdata_by_name($bdata['name']);
} else {
# bot发现尸体(暂无操作)
echo "bot发现了{$edata['name']}的尸体。<br>";
//$bdata['action'] = 'corpse'.$edata['pid'];
//include_once GAME_ROOT.'./include/game/battle.func.php';
//findcorpse($edata);
}
} elseif ($meetman_flag < 0) {
echo "bot没有发现敌人,因为敌人隐藏起来了。<br>";
} else {
echo 'bot发现<span class="yellow">周围一个人都没有</span>,准备移动到下一张地图。<br>';
$bdata['clbpara']['action_flag']['needmove'] = 1;
}
goto action_end_flag;
} else {
# bot发现道具判定(暂无)
echo "bot发现了道具...<br>";
//echo "进入道具判定<br>";
/*$find_r = get_find_r($weather,$pls,$pose,$tactic,$club,$inf);
$find_obbs = $item_obbs + $find_r;
$item_dice = rand(0,99);
if($item_dice < $find_obbs) {
$result = $db->query("SELECT * FROM {$tablepre}mapitem WHERE pls = '$pls'");
$itemnum = $db->num_rows($result);
if($itemnum <= 0){
$log .= '<span class="yellow">周围找不到任何物品。</span><br>';
$mode = 'command';
return;
}
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$itm0=$mi['itm'];
$itmk0=$mi['itmk'];
$itme0=$mi['itme'];
$itms0=$mi['itms'];
$itmsk0=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
if($itms0){
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemfind();
return;
} else {
$log .= "但是什么都没有发现。可能是因为道具有天然呆属性。<br>";
foreach($gamevars['botid'] as $botid)
{
$flag = bot_acts($botid);
if($flag == 0)
{
unset($gamevars['botid'][array_search($botid,$gamevars['botid'])]);
save_gameinfo();
if(empty($gamevars['botid'])) break;
}
} else {
$log .= "但是什么都没有发现。<br>";
}*/
sleep(1);
}
goto action_end_flag;
echo "所有BOT行动完成";
}
action_end_flag:
player_save($bdata);
$bdata = fetch_playerdata_by_name($bdata['name']);
}
player_save($bdata);
$bdata = fetch_playerdata_by_name($bdata['name']);
?>
......@@ -85,6 +85,7 @@ $typeinfo = Array(
13=>'循环使者',
14=>'数据碎片',
15=>'抹杀使徒',
18=>'参战者', //bot用
19=>'参战者', //真红暮·蓝凝用
20=>'英雄',
21=>'武神',
......@@ -113,6 +114,7 @@ $killmsginfo = Array(
12=>'你要反省的事情还有很多。',
14=>'死吧。',
15=>'………………RIP.',
18=>'你弱爆了!',
19=>'我赢了。',
89=>'系统弹出,正在计算补正值……',
90=>'你弱爆了!',
......@@ -216,7 +218,8 @@ $lwinfo = Array(
'守卫者 静流' => '………………………………?!',
),
15 => '………………………………抹杀任务中止,脱出。',
20 => '這就是善有善報嗎?',
18 => '怎么会这样呢?',
20 => '怎么会这样呢?',
21 => Array(
'虚子' => '你做完后,你的心理得到什么样的满足感,你自己清楚!',
'水月' => '……',
......
......@@ -110,6 +110,8 @@ if(CURSCRIPT !== 'chat'){
//addnews($starttime,'newgame',$gamenum);
addnews($starttime,'newgame',$gamenum);
systemputchat($starttime,'newgame');
//是否部署BOT -> 数量;
$gamevars['botplayer'] = 1;
$ginfochange = true;
}
}
......
......@@ -568,25 +568,25 @@ function fetch_playerdata_by_name($n)
global $db,$tablepre;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE name = '$n' AND type = 0");
if(!$db->num_rows($result)) return NULL;
$pdata = $db->fetch_array($result);
if(!empty($pdata['clbpara'])) $pdata['clbpara'] = get_clbpara($pdata['clbpara']);
$data = $db->fetch_array($result);
if(!empty($data['clbpara'])) $data['clbpara'] = get_clbpara($data['clbpara']);
//套装效果刷新
include_once GAME_ROOT.'./include/game/itemmain.func.php';
reload_set_items($pdata);
return $pdata;
return $data;
}
//通过pid抓取指定玩家/NPC数据
function fetch_playerdata_by_pid($pid)
{
global $db,$tablepre;
$result = $db->query("SELECT pid FROM {$tablepre}players WHERE pid = '$pid'");
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid = '$pid'");
if(!$db->num_rows($result)) return NULL;
$pdata = $db->fetch_array($result);
if(!empty($pdata['clbpara'])) $pdata['clbpara'] = get_clbpara($pdata['clbpara']);
$data = $db->fetch_array($result);
if(!empty($data['clbpara'])) $data['clbpara'] = get_clbpara($data['clbpara']);
//套装效果刷新
include_once GAME_ROOT.'./include/game/itemmain.func.php';
reload_set_items($pdata);
return $pdata;
reload_set_items($data);
return $data;
}
//用于将指定player数据存回数据库
function player_save($data){
......@@ -604,6 +604,15 @@ function player_save($data){
return;
}
//获取安全地图范围
function get_safe_plslist($mode=1)
{
global $areanum,$arealist,$hack,$deepzones;
$r = $hack ? array_slice($arealist,$areanum+1) : $arealist;
if($mode) $r = array_diff($r, $deepzones);
return $r;
}
function w_save($id){
global $db,$tablepre,$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,$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,$w_rp,$w_action,$w_achievement,$w_skillpoint;
......
......@@ -7,8 +7,19 @@ if (! defined ( 'IN_GAME' )) {
include_once GAME_ROOT.'./include/game/titles.func.php';
include_once GAME_ROOT.'./include/game/clubslct.func.php';
function itemuse($itmn) {
global $mode, $log, $nosta, $pid, $name, $state, $now,$nick,$achievement,$club,$clbpara,$pdata;
function itemuse($itmn,&$data=NULL) {
//global $mode, $log, $nosta, $pid, $name, $state, $now,$nick,$achievement,$club,$clbpara,$pdata;
global $url,$cmd,$mode,$db,$tablepre,$log,$nosta,$noarb,$gamevars,$corpseprotect,$now,$gamecfg;
global $exdmginf,$ex_inf,$cskills,$elements_info,$sparkle,$event_bgm;
global $upexp,$baseexp,$elec_cap;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$nickinfo = get_title_desc($nick);
......@@ -18,7 +29,7 @@ function itemuse($itmn) {
return;
}
global ${'itm' . $itmn}, ${'itmk' . $itmn}, ${'itme' . $itmn}, ${'itms' . $itmn}, ${'itmsk' . $itmn};
////global ${'itm' . $itmn}, ${'itmk' . $itmn}, ${'itme' . $itmn}, ${'itms' . $itmn}, ${'itmsk' . $itmn};
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
......@@ -63,8 +74,8 @@ function itemuse($itmn) {
$eqp = 'art';
$noeqp = '';
}
global ${$eqp}, ${$eqp.'k'}, ${$eqp.'e'}, ${$eqp.'s'}, ${$eqp.'sk'};
global $artk;
//global ${$eqp}, ${$eqp.'k'}, ${$eqp.'e'}, ${$eqp.'s'}, ${$eqp.'sk'};
//global $artk;
if((($artk=='XX')||($artk=='XY'))&&($eqp == 'art')){
$log .= '你的饰品不能替换!<br>';
$mode = 'command';
......@@ -72,7 +83,7 @@ function itemuse($itmn) {
}
//PORT
if(strpos($itmsk,'^')!==false){
global $itmnumlimit;
//global $itmnumlimit;
$itmnumlimit = $itme>=$itms ? $itms : $itme;
}
if (($noeqp && strpos ( ${$eqp.'k'}, $noeqp ) === 0) || ! ${$eqp.'s'}) {
......@@ -116,7 +127,7 @@ function itemuse($itmn) {
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">${$eqp}</span>。<br>";
}
} elseif (strpos ( $itmk, 'HS' ) === 0) {
global $sp, $msp,$club;
//global $sp, $msp,$club;
if ($sp < $msp) {
$oldsp = $sp;
if($club == 16){
......@@ -142,7 +153,7 @@ function itemuse($itmn) {
$log .= '你的体力不需要恢复。<br>';
}
} elseif (strpos ( $itmk, 'HH' ) === 0) {
global $hp, $mhp,$club;
//global $hp, $mhp,$club;
if ($hp < $mhp) {
$oldhp = $hp;
if($club == 16){
......@@ -167,7 +178,7 @@ function itemuse($itmn) {
$log .= '你的生命不需要恢复。<br>';
}
}elseif (strpos ( $itmk, 'HM' ) === 0) {
global $mss,$ss;
//global $mss,$ss;
$mss+=$itme;
$ss+=$itme;
$log .= "你使用了<span class=\"red\">$itm</span>,增加了<span class=\"yellow\">$itme</span>点歌魂。<br>";
......@@ -180,7 +191,7 @@ function itemuse($itmn) {
}
}
}elseif (strpos ( $itmk, 'HT' ) === 0) {
global $ss, $mss;
//global $ss, $mss;
$ssup=$itme;
if ($ss < $mss) {
$oldss = $ss;
......@@ -201,7 +212,7 @@ function itemuse($itmn) {
$log .= '你的歌魂不需要恢复。<br>';
}
} elseif (strpos ( $itmk, 'HB' ) === 0) {
global $hp, $mhp, $sp, $msp,$club;
//global $hp, $mhp, $sp, $msp,$club;
if (($hp < $mhp) || ($sp < $msp)) {
if($club == 16){
$bpup = round($itme*2.5);
......@@ -231,7 +242,7 @@ function itemuse($itmn) {
$log .= '你的生命和体力都不需要恢复。<br>';
}
} elseif (strpos ( $itmk, 'P' ) === 0) {
global $lvl, $db, $tablepre, $now, $hp, $inf, $bid;
//global $lvl, $db, $tablepre, $now, $hp, $inf, $bid;
if (strpos ( $itmk, '2' ) === 2) {
$damage = round ( $itme * 2 );
} elseif (strpos ( $itmk, '1' ) === 2) {
......@@ -294,7 +305,7 @@ function itemuse($itmn) {
}
} elseif (strpos ( $itmk, 'T' ) === 0) {
global $pls, $exp, $upexp, $wd, $club,$lvl,$db,$tablepre;
//global $pls, $exp, $upexp, $wd, $club,$lvl,$db,$tablepre;
$trapk = str_replace('TN','TO',$itmk);
//$mapfile = GAME_ROOT . "./gamedata/mapitem/{$pls}mapitem.php";
//$itemdata = "$itm,TO,$itme,1,$pid,\n";
......@@ -321,7 +332,7 @@ function itemuse($itmn) {
}
}
} elseif (strpos ( $itmk, 'GB' ) === 0) {
global $wep, $wepk, $weps, $wepsk;
//global $wep, $wepk, $weps, $wepsk;
if ((strpos ( $wepk, 'WG' ) !== 0)&&(strpos ( $wepk, 'WJ' ) !== 0)) {
$log .= "<span class=\"red\">你没有装备枪械,不能使用子弹。</span><br>";
$mode = 'command';
......@@ -408,7 +419,7 @@ function itemuse($itmn) {
$log .= $itm . '没有电了,请先充电。<br>';
}
} elseif (strpos ( $itmk, 'C' ) === 0) {
global $inf, $exdmginf,$ex_inf;
//global $inf, $exdmginf,$ex_inf;
$ck=substr($itmk,1,1);
if($ck == 'a'){
$flag=false;
......@@ -514,7 +525,7 @@ function itemuse($itmn) {
$log .= "你阅读了<span class=\"red\">$itm</span>。<br>";
$dice = rand ( - 10, 10 );
if (strpos ( $itmk, 'VV' ) === 0) {
global $wp, $wk, $wg, $wc, $wd, $wf;
//global $wp, $wk, $wg, $wc, $wd, $wf;
$ws_sum = $wp + $wk + $wg + $wc + $wd + $wf;
if ($ws_sum < $skill_minimum * 5) {
$vefct = $itme;
......@@ -536,7 +547,7 @@ function itemuse($itmn) {
$wf += $vefct; //$itme;
$wsname = "全系熟练度";
} elseif (strpos ( $itmk, 'VP' ) === 0) {
global $wp;
//global $wp;
if ($wp < $skill_minimum) {
$vefct = $itme;
} elseif ($wp < $skill_limit) {
......@@ -552,7 +563,7 @@ function itemuse($itmn) {
$wp += $vefct; //$itme;
$wsname = "斗殴熟练度";
} elseif (strpos ( $itmk, 'VK' ) === 0) {
global $wk;
//global $wk;
if ($wk < $skill_minimum) {
$vefct = $itme;
} elseif ($wk < $skill_limit) {
......@@ -568,7 +579,7 @@ function itemuse($itmn) {
$wk += $vefct; //$itme;
$wsname = "斩刺熟练度";
} elseif (strpos ( $itmk, 'VG' ) === 0) {
global $wg;
//global $wg;
if ($wg < $skill_minimum) {
$vefct = $itme;
} elseif ($wg < $skill_limit) {
......@@ -584,7 +595,7 @@ function itemuse($itmn) {
$wg += $vefct; //$itme;
$wsname = "射击熟练度";
} elseif (strpos ( $itmk, 'VC' ) === 0) {
global $wc;
//global $wc;
if ($wc < $skill_minimum) {
$vefct = $itme;
} elseif ($wc < $skill_limit) {
......@@ -600,7 +611,7 @@ function itemuse($itmn) {
$wc += $vefct; //$itme;
$wsname = "投掷熟练度";
} elseif (strpos ( $itmk, 'VD' ) === 0) {
global $wd;
//global $wd;
if ($wd < $skill_minimum) {
$vefct = $itme;
} elseif ($wd < $skill_limit) {
......@@ -616,7 +627,7 @@ function itemuse($itmn) {
$wd += $vefct; //$itme;
$wsname = "引爆熟练度";
} elseif (strpos ( $itmk, 'VF' ) === 0) {
global $wf;
//global $wf;
if ($wf < $skill_minimum) {
$vefct = $itme;
} elseif ($wf < $skill_limit) {
......@@ -632,7 +643,7 @@ function itemuse($itmn) {
$wf += $vefct; //$itme;
$wsname = "灵击熟练度";
} elseif (strpos ( $itmk, 'VS' ) === 0) {
global $cskills,$clbpara;
//global $cskills,$clbpara;
if(!empty($itmsk) && isset($cskills[$itmsk]))
{
......@@ -675,7 +686,7 @@ function itemuse($itmn) {
$log .= "你服用了<span class=\"red\">$itm</span>。<br>";
if (strpos ( $itmk, 'MA' ) === 0) {
global $att;
//global $att;
$att_min = 200;
$att_limit = 500;
$dice = rand ( - 5, 5 );
......@@ -694,7 +705,7 @@ function itemuse($itmn) {
$att += $mefct;
$mdname = "基础攻击力";
} elseif (strpos ( $itmk, 'MD' ) === 0) {
global $def;
//global $def;
$def_min = 200;
$def_limit = 500;
$dice = rand ( - 5, 5 );
......@@ -713,25 +724,25 @@ function itemuse($itmn) {
$def += $mefct;
$mdname = "基础防御力";
} elseif (strpos ( $itmk, 'ME' ) === 0) {
global $exp, $upexp, $baseexp;
//global $exp, $upexp, $baseexp;
$lvlup_objective = $itme / 10;
$mefct = round ( $baseexp * 2 * $lvlup_objective + rand ( 0, 5 ) );
$exp += $mefct;
$mdname = "经验值";
} elseif (strpos ( $itmk, 'MS' ) === 0) {
global $sp, $msp;
//global $sp, $msp;
$mefct = $itme;
$sp += $mefct;
$msp += $mefct;
$mdname = "体力上限";
} elseif (strpos ( $itmk, 'MH' ) === 0) {
global $hp, $mhp;
//global $hp, $mhp;
$mefct = $itme;
$hp += $mefct;
$mhp += $mefct;
$mdname = "生命上限";
} elseif (strpos ( $itmk, 'MV' ) === 0) {
global $wp, $wk, $wg, $wc, $wd, $wf;
//global $wp, $wk, $wg, $wc, $wd, $wf;
$skill_minimum = 100;
$skill_limit = 300;
$dice = rand ( - 10, 10 );
......@@ -767,7 +778,7 @@ function itemuse($itmn) {
if (strpos ( $itmk, 'ME' ) === 0) {
if ($exp >= $upexp) {
global $lvl;
//global $lvl;
//include_once GAME_ROOT . './include/state.func.php';
//lvlup ( $lvl, $exp, 1 );
include_once GAME_ROOT . './include/game/revcombat.func.php';
......@@ -799,7 +810,7 @@ function itemuse($itmn) {
$log .= "使用了<span class=\"red\">$itm</span>。<br>";
include_once GAME_ROOT . './include/game/item2.func.php';
newradar ( $itmsk );
global $club;
//global $club;
if($club == 7){
$e_dice = rand(0,1);
if($e_dice == 1){
......@@ -821,10 +832,10 @@ function itemuse($itmn) {
}
} elseif (strpos ( $itmk, 'B' ) === 0) {
$flag = false;
global $elec_cap;
//global $elec_cap;
$bat_kind = substr($itmk,1,1);
for($i = 1; $i <= 6; $i ++) {
global ${'itm' . $i}, ${'itmk' . $i}, ${'itme' . $i}, ${'itms' . $i};
//global ${'itm' . $i}, ${'itmk' . $i}, ${'itme' . $i}, ${'itms' . $i};
if (${'itmk' . $i} == 'E'.$bat_kind && ${'itms' . $i}) {
if(${'itme' . $i} >= $elec_cap){
$log .= "包裹{$i}里的<span class=\"yellow\">${'itm'.$i}</span>已经充满电了。<br>";
......@@ -879,9 +890,9 @@ function itemuse($itmn) {
list($in,$ik,$ie,$is,$isk) = explode(',',$itemflag[$rand]);
}
}elseif(strpos( $itmk, 'p0' ) === 0){//新福袋·VOL1
global $statuse; // 用这个数值记录打开福袋的次数,目前只有VOL1所以只需要判断非0状况,以后如果加入更多的福袋则需要修改。
global $db,$tablepre;
global $clbpara;
//global $statuse; // 用这个数值记录打开福袋的次数,目前只有VOL1所以只需要判断非0状况,以后如果加入更多的福袋则需要修改。
//global $db,$tablepre;
//global $clbpara;
/* if($statuse){
$log.="似乎你本轮已经打开过福袋,因此不能再打开更多的福袋!<br>";
$db->query("INSERT INTO {$tablepre}shopitem (kind,num,price,area,item,itmk,itme,itms,itmsk) VALUES ('17','1','20','0','$itm','$itmk','$itme','$itms','$itmsk')");
......@@ -934,7 +945,7 @@ function itemuse($itmn) {
$rand = rand(0,count($plist)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist[$rand]);
}
global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
addnews($now,'present',$name,$itm,$in);
$itms--;
......@@ -944,14 +955,14 @@ function itemuse($itmn) {
$itme = $itms = 0;
}
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget();
itemget($data);
} elseif(strpos ( $itmk, 'ygo' ) === 0){
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$file1 = config('box',$gamecfg);
$plist1 = openfile($file1);
$rand1 = rand(0,count($plist1)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]);
global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
addnews($now,'present',$nickinfo.' '.$name,$itm,$in);
$itms1--;
......@@ -961,14 +972,14 @@ function itemuse($itmn) {
$itme = $itms = 0;
}
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget();
itemget($data);
} elseif(strpos ( $itmk, 'fy' ) === 0){
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$file1 = config('fy',$gamecfg);
$plist1 = openfile($file1);
$rand1 = rand(0,count($plist1)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]);
global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
addnews($now,'present',$nickinfo.' '.$name,$itm,$in);
$itms1--;
......@@ -978,9 +989,9 @@ function itemuse($itmn) {
$itme = $itms = 0;
}
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget();
itemget($data);
}elseif ($itmk=='U') {
global $db, $tablepre,$pls;
//global $db, $tablepre,$pls;
$trapresult = $db->query("SELECT * FROM {$tablepre}maptrap WHERE pls = '$pls' AND itme>='$itme'");
$trpnum = $db->num_rows($trapresult);
$itms--;
......@@ -1005,7 +1016,7 @@ function itemuse($itmn) {
//功能需要修改,改为选择道具使用YE类型道具可充电
$flag = false;
for($i = 1; $i <= 6; $i ++) {
global ${'itm' . $i}, ${'itme' . $i};
//global ${'itm' . $i}, ${'itme' . $i};
if (${'itm' . $i} == '移动PC') {
${'itme' . $i} += $itme;
$itms --;
......@@ -1018,7 +1029,7 @@ function itemuse($itmn) {
$log .= '你没有需要充电的物品。<br>';
}
} elseif ($itm == '群青多面体') {
global $plsinfo,$nosta,$db,$tablepre;
//global $plsinfo,$nosta,$db,$tablepre;
$result = $db->query("SELECT pid,name,pls FROM {$tablepre}players WHERE type = 14 && hp > 0");
$ndata = array();
while($nd = $db->fetch_array($result)){
......@@ -1040,12 +1051,12 @@ function itemuse($itmn) {
return;
} elseif ($itm == '残响兵器') {
global $cmd;
//global $cmd;
foreach(Array('wep','arb','arh','ara','arf','art') as $val) {
global ${$val},${$val.'k'}, ${$val.'e'}, ${$val.'s'},${$val.'sk'};
//global ${$val},${$val.'k'}, ${$val.'e'}, ${$val.'s'},${$val.'sk'};
}
for($i = 1; $i <= 6; $i ++) {
global ${'itmk' . $i},${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i},${'itmsk' . $i};
//global ${'itmk' . $i},${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i},${'itmsk' . $i};
}
include template('nametag');
......@@ -1054,12 +1065,12 @@ function itemuse($itmn) {
ob_clean();
return;
} elseif ($itm == '超臆想时空') {
global $cmd;
//global $cmd;
foreach(Array('wep','arb','arh','ara','arf','art') as $val) {
global ${$val},${$val.'k'}, ${$val.'e'}, ${$val.'s'},${$val.'sk'};
//global ${$val},${$val.'k'}, ${$val.'e'}, ${$val.'s'},${$val.'sk'};
}
for($i = 1; $i <= 6; $i ++) {
global ${'itmk' . $i},${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i},${'itmsk' . $i};
//global ${'itmk' . $i},${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i},${'itmsk' . $i};
}
include template('supernametag');
......@@ -1068,9 +1079,9 @@ function itemuse($itmn) {
ob_clean();
return;
} elseif ($itm == '毒药') {
global $cmd;
//global $cmd;
for($i = 1; $i <= 6; $i ++) {
global ${'itmk' . $i},${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i};
//global ${'itmk' . $i},${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i};
}
include template('poison');
......@@ -1078,7 +1089,7 @@ function itemuse($itmn) {
ob_clean();
return;
} elseif (strpos ( $itm, '磨刀石' ) !== false) {
global $wep, $wepk, $wepe, $weps, $wepsk;
//global $wep, $wepk, $wepe, $weps, $wepsk;
if (strpos ( $wepk, 'K' ) == 1 && strpos ( $wepsk, 'Z' ) === false) {
if (strpos($wepsk,'j')!==false){
$log.='多重武器不能改造。<br>';
......@@ -1109,7 +1120,7 @@ function itemuse($itmn) {
$log .= '你没装备锐器,不能使用磨刀石。<br>';
}
} elseif (preg_match ( "/钉$/", $itm ) || preg_match ( "/钉\[/", $itm )) {
global $wep, $wepk, $wepe, $weps, $wepsk;
//global $wep, $wepk, $wepe, $weps, $wepsk;
if (( strpos ( $wep, '棍棒' ) !== false) && ($wepk == 'WP')) {
if (strpos($wepsk,'j')!==false){
$log.='多重武器不能改造。<br>';
......@@ -1138,7 +1149,7 @@ function itemuse($itmn) {
$log .= '你没装备棍棒,不能安装钉子。<br>';
}
} elseif ($itm == '针线包') {
global $arb, $arbk, $arbe, $arbs, $arbsk, $noarb;
//global $arb, $arbk, $arbe, $arbs, $arbsk, $noarb;
if (($arb == $noarb) || ! $arb) {
$log .= '你没有装备防具,不能使用针线包。<br>';
} elseif(strpos($arbsk,'^')!==false){
......@@ -1151,7 +1162,7 @@ function itemuse($itmn) {
$itms --;
}
} elseif ($itm == '消音器') {
global $wep, $wepk, $wepe, $weps, $wepsk;
//global $wep, $wepk, $wepe, $weps, $wepsk;
if (strpos ( $wepk, 'WG' ) !== 0) {
$log .= '你没有装备枪械,不能使用消音器。<br>';
} elseif (strpos ( $wepsk, 'S' ) === false) {
......@@ -1164,7 +1175,7 @@ function itemuse($itmn) {
} elseif ($itm == '探测器电池') {
$flag = false;
for($i = 1; $i <= 6; $i ++) {
global ${'itmk' . $i}, ${'itme' . $i}, ${'itm' . $i};
//global ${'itmk' . $i}, ${'itme' . $i}, ${'itm' . $i};
if (${'itmk' . $i} == 'R') {
//if((strpos(${'itm'.$i}, '雷达') !== false)&&(strpos(${'itm'.$i}, '电池') === false)) {
${'itme' . $i} += $itme;
......@@ -1183,7 +1194,7 @@ function itemuse($itmn) {
divining ();
$itms --;
} elseif ($itm == '凸眼鱼') {
global $db, $tablepre, $name,$now,$corpseprotect;
//global $db, $tablepre, $name,$now,$corpseprotect;
$tm = $now - $corpseprotect;//尸体保护
$db->query ( "UPDATE {$tablepre}players SET weps='0',arbs='0',arhs='0',aras='0',arfs='0',arts='0',itms0='0',itms1='0',itms2='0',itms3='0',itms4='0',itms5='0',itms6='0',money='0' WHERE hp <= 0 AND endtime <= $tm" );
$cnum = $db->affected_rows ();
......@@ -1192,7 +1203,7 @@ function itemuse($itmn) {
$itms --; $isk = $cnum;
} elseif ($itm == '天候棒') {
global $weather, $wthinfo, $name;
//global $weather, $wthinfo, $name;
$weather = rand ( 10, 13 );
include_once GAME_ROOT . './include/system.func.php';
save_gameinfo ();
......@@ -1200,7 +1211,7 @@ function itemuse($itmn) {
$log .= "你转动了几下天候棒。<br>天气突然转变成了<span class=\"red b\">$wthinfo[$weather]</span>!<br>";
$itms --;
} elseif ($itm == '天然呆四面的奖赏') {
global $wep, $wepk, $wepe, $weps, $wepsk;
//global $wep, $wepk, $wepe, $weps, $wepsk;
if (! $weps || ! $wepe) {
$log .= '请先装备武器。<br>';
return;
......@@ -1226,10 +1237,10 @@ function itemuse($itmn) {
$log.="那么…… 给你点补偿吧,请务必收下。”<br></span>";
$itm=""; $itmk=""; $itme=0; $itms=0; $itmsk="";
$dice2=rand(0,99);
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$itm0='四面亲手制作的■DeathNote■'; $itmk0='Y'; $itme0=1; $itms0=1; $itmsk0='z';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget();
itemget($data);
}
else if ($dice<90)
{
......@@ -1248,7 +1259,7 @@ function itemuse($itmn) {
$itm=""; $itmk=""; $itme=0; $itms=0; $itmsk="";
}
} elseif ($itm == '武器师安雅的奖赏') {
global $wep, $wepk, $wepe, $weps, $wepsk, $wp, $wk, $wg, $wc, $wd, $wf;
//global $wep, $wepk, $wepe, $weps, $wepsk, $wp, $wk, $wg, $wc, $wd, $wf;
if (! $weps || ! $wepe) {
$log .= '请先装备武器。<br>';
return;
......@@ -1285,17 +1296,17 @@ function itemuse($itmn) {
$log .= '你翻开了■DeathNote■<br>';
return;
} elseif ($itm == '游戏解除钥匙') {
global $url;
//global $url;
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
gameover ( $now, 'end3', $name );
}elseif ($itm == '『C.H.A.O.S』') {
global $ss,$rp,$killnum,$att,$def,$log;
//global $ss,$rp,$killnum,$att,$def,$log;
$flag=false;
$log.="一阵强光刺得你睁不开眼。<br>强光逐渐凝成了光球,你揉揉眼睛,发现包裹里的东西全都不翼而飞了。<br>";
for ($i=1;$i<=6;$i++){
global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
//global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
$itm = & ${'itm'.$i};
$itmk = & ${'itmk'.$i};
$itme = & ${'itme'.$i};
......@@ -1308,7 +1319,7 @@ function itemuse($itmn) {
$itms = 0;
$itmsk = '';
}
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$karma=$rp*$killnum-$def+$att;
$f1=false;
//『G.A.M.E.O.V.E.R』itmk:Y itme:1 itms:1 itmsk:zxZ
......@@ -1319,7 +1330,7 @@ function itemuse($itmn) {
$itms0=1;
$itmsk0='z';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget();
itemget($data);
$f1=true;
}
if ($karma<=2000){
......@@ -1329,7 +1340,7 @@ function itemuse($itmn) {
$itms0=1;
$itmsk0='x';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget();
itemget($data);
$f1=true;
}
if ($flag==true){
......@@ -1339,7 +1350,7 @@ function itemuse($itmn) {
$itms0=1;
$itmsk0='Z';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget();
itemget($data);
$f1=true;
}
if ($f1==false){
......@@ -1348,10 +1359,10 @@ function itemuse($itmn) {
$itme0=1;
$itms0=1;
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget();
itemget($data);
}
}elseif ($itm == '『G.A.M.E.O.V.E.R』') {
global $url;
//global $url;
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
......@@ -1369,14 +1380,14 @@ function itemuse($itmn) {
$log .= "你使用了<span class=\"yellow\">{$itm}</span>,不过什么反应也没有。<br><span class=\"evergreen\">“表演的时机还没到呢,请再忍耐一下吧。”</span>——林无月<br>";
}
} elseif ($itm == '奇怪的按钮') {
global $bid;
//global $bid;
$button_dice = rand ( 1, 10 );
if ($button_dice < 5) {
$log .= "你按下了<span class=\"yellow\">$itm</span>,不过好像什么都没有发生!";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($button_dice < 8) {
global $url;
//global $url;
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
......@@ -1389,7 +1400,7 @@ function itemuse($itmn) {
death ( 'button', '', 0, $itm );
}
} elseif ($itm == '装有H173的注射器') {
global $wp, $wk, $wg, $wc, $wd, $wf, $club, $bid, $att, $def;
//global $wp, $wk, $wg, $wc, $wd, $wf, $club, $bid, $att, $def;
$log .= '你考虑了一会,<br>把袖子卷了起来,给自己注射了H173。<br>';
$deathdice = rand ( 0, 4096 );
if ($deathdice == 4096 || $club == 15) {
......@@ -1407,7 +1418,7 @@ function itemuse($itmn) {
death ( 'suiside', '', 0, $itm );
}
} elseif (strpos($itm, '溶剂SCP-294')===0) {
global $wp, $wk, $wg, $wc, $wd, $wf, $club, $att, $def, $hp, $mhp, $sp, $msp, $rp;
//global $wp, $wk, $wg, $wc, $wd, $wf, $club, $att, $def, $hp, $mhp, $sp, $msp, $rp;
if($itm == '溶剂SCP-294_PT_Poini_Kune'){
$log .= '你考虑了一会,一扬手喝下了杯中中冒着紫色幽光的液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>';
if ($mhp > 573){
......@@ -1464,7 +1475,7 @@ function itemuse($itmn) {
$log .= '你的生命上限和防御力减少了<span class="yellow">'.$down.'</span>点,而你的体力上限和攻击力提升了<span class="yellow">'.$up.'</span>点!<br>';
} elseif ($itm == '溶剂SCP-294_PT_ErulTron') {
$log .= '你考虑了一会,<br>一扬手喝下了杯中中冒着粉红光辉的液体。<br>你感到你整个人貌似变得更普通了点。<br>';
global $lvl, $exp;
//global $lvl, $exp;
$lvl = $exp = 0;
$att = round($att * 0.8);
$def = round($def * 0.8);
......@@ -1501,7 +1512,7 @@ function itemuse($itmn) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '破灭之诗') {
global $hack,$rp,$clbpara,$gamevars;
//global $hack,$rp,$clbpara,$gamevars;
$rp = 0;
$clbpara['dialogue'] = 'thiphase';
$clbpara['console'] = 1;
......@@ -1599,7 +1610,7 @@ function itemuse($itmn) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '✦种火定点移位装置✦') {
global $db, $tablepre, $pls;
//global $db, $tablepre, $pls;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE type = 92"); //SELECT 全部种火NPC
$fsdata = $db->fetch_array($result);//获取以上结果
//$fspid = $fsdata['pid'];
......@@ -1657,7 +1668,7 @@ function itemuse($itmn) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '✦种火聚集装置✦') {
global $db, $tablepre, $pls;
//global $db, $tablepre, $pls;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE type = 92"); //SELECT 全部种火NPC
$fsdata = $db->fetch_array($result);//获取以上结果
//聚集种火
......@@ -1671,7 +1682,7 @@ function itemuse($itmn) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '✦呼唤种火✦') {
global $db, $tablepre, $pls;
//global $db, $tablepre, $pls;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE type = 92"); //SELECT 全部种火NPC
$fsdata = $db->fetch_array($result);//获取以上结果
//聚集种火
......@@ -1690,7 +1701,7 @@ function itemuse($itmn) {
// $itme = $itms = 0;
} elseif($itm == '莱卡召唤器') {
// include_once GAME_ROOT . './include/system.func.php';
// global $db,$tablepre;
// //global $db,$tablepre;
// $result = $db->query("SELECT pid FROM {$tablepre}players WHERE type = 13");
// $num = $db->num_rows($result);
// if($num){
......@@ -1757,7 +1768,7 @@ function itemuse($itmn) {
$itme = $itms = 0;
} elseif ($itm == '【我想要领略真正的红杀之力】') {
//文案
global $db, $tablepre, $pls;
//global $db, $tablepre, $pls;
include_once GAME_ROOT . './include/system.func.php';
$log .= '你拿起了这个球状物体,重重地向天空抛去!<br>地图上空出现了红杀组织的龙虎徽标!<br>';
addnpc(19,0,1);
......@@ -1769,7 +1780,7 @@ function itemuse($itmn) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itmk =='ZA'){
global $plsinfo,$db,$tablepre;
//global $plsinfo,$db,$tablepre;
if($itm =='→【单兵撤退按钮】←'){
$log .= "你按下了这个按钮。<br>但似乎什么都没有发生。<br>按钮就这样消失了。<br>在你觉得你买到了假冒伪劣产品时,你听到了来自红暮的广播。<br>";
//销毁物品
......@@ -1838,7 +1849,7 @@ function itemuse($itmn) {
$log .= "<br>看起来,在脱出幻境之前,你需要玩一把寻宝游戏了……";
}
} elseif ($itm == '【E.S.C.A.P.E】'){
global $db, $tablepre;
//global $db, $tablepre;
//这实际上是个死法,但是会给成就,称号,并加积分与胜场。
include_once GAME_ROOT . './include/state.func.php';
//成就检查该物品本身的使用,逻辑不写在这里。
......@@ -1850,7 +1861,7 @@ function itemuse($itmn) {
} elseif ($itmk =='ZB'){ //社团卡
if($club)
{
global $db,$tablepre;
//global $db,$tablepre;
$log .="你已经是有身份的人了!不能再使用称号卡。<br>";
$db->query("INSERT INTO {$tablepre}shopitem (kind,num,price,area,item,itmk,itme,itms,itmsk) VALUES ('18','1','20','0','$itm','$itmk','$itme','$itms','$itmsk')");
$log .="<span class='yellow'>$itm</span>像是有生命一般从你的手上脱离,飞回了商店!";
......@@ -1858,7 +1869,7 @@ function itemuse($itmn) {
}
//处理不能成为合法社团的情况
elseif ($itme == 15){ //L5状态
global $wp, $wk, $wg, $wc, $wd, $wf, $club, $bid, $att, $def;
//global $wp, $wk, $wg, $wc, $wd, $wf, $club, $bid, $att, $def;
$log .="【DEBUG】进入L5状态<br>";
$log .= '你突然感觉到一种不可思议的力量贯通全身!<br>';
$wp = $wk = $wg = $wc = $wd = $wf = 8010;
......@@ -1870,7 +1881,7 @@ function itemuse($itmn) {
$log .="但是什么都没有发生!";
}
elseif ($itme == 20){ // 元素大师特殊处理
global $elements_info,$sparkle;
//global $elements_info,$sparkle;
//规则怪谈类型文案
$log.="你拿起<span class='yellow'>$itm</span>左右端详着……<br>
然后,它突然就在你的眼前消失了!<br>
......@@ -1895,7 +1906,7 @@ function itemuse($itmn) {
changeclub(20,$pdata);
//获取初始元素与第一条配方
$dice = rand(0,5);
global ${'element'.$dice},$clbpara;
//global ${'element'.$dice},$clbpara;
${'element'.$dice} += 200+$dice;
//初始化元素合成缓存文件
include_once GAME_ROOT.'./include/game/elementmix.func.php';
......@@ -1915,7 +1926,7 @@ function itemuse($itmn) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '随机数之神的庇佑'){
global $wp, $wk, $wg, $wc, $wd, $wf, $club, $bid, $att, $def;
//global $wp, $wk, $wg, $wc, $wd, $wf, $club, $bid, $att, $def;
$log.="你将<span class='yellow'>$itm</span>捧在手心……<br>
突然,从天上传来一个慵懒的声音:<br>
<span class=\"blueseed\">“现在还没到我的上班时间呢!”<br>
......@@ -1932,14 +1943,14 @@ function itemuse($itmn) {
} elseif ($itm == '事件BGM替换器'){
// 这是一个触发事件BGM的案例,只要输入$clbpara['event_bgmbook'] = Array('事件曲集名'); 即可将当前曲集替换为特殊事件BGM
// 特殊事件曲集'event_bgmbook'的优先级高于地图曲集'pls_bgmbook',前者存在时后者不会生效
global $clbpara,$event_bgm;
//global $clbpara,$event_bgm;
//include_once config('audio',$gamecfg);
$log.="【DEBUG】你目前的播放列表被替换为了{$event_bgm['test'][0]}!<br>特殊的事件曲集不会被其他曲集覆盖,除非你使用下面的道具。<br>";
$clbpara['event_bgmbook'] = $event_bgm['test'];
} elseif ($itm == '事件BGM还原器'){
// 这是一个取消事件BGM的案例,只要unset($clbpara['event_bgmbook']);就可以将当前曲集替换为地图曲集或默认曲集;
// 如果你想播放另一个事件曲集,也可以$clbpara['event_bgmbook'] = Array('另一个事件曲集名');
global $clbpara;
//global $clbpara;
$log.="【DEBUG】你目前的播放列表还原为了默认播放列表!<br>";
unset($clbpara['event_bgmbook']);
} elseif ($itm == '成就重置装置'){
......@@ -1947,11 +1958,11 @@ function itemuse($itmn) {
include_once GAME_ROOT.'./include/game/achievement.func.php';
reset_achievement_rev($itmsk,$name);
} elseif ($itm == '测试用元素口袋'){
global $elements_info;
//global $elements_info;
$log.="【DEBUG】你不知道从哪里摸出来一大堆元素!<br>";
foreach($elements_info as $e_key=>$e_info)
{
global ${'element'.$e_key};
//global ${'element'.$e_key};
${'element'.$e_key} += 100000;
$log.="获得了100000份".$elements_info[$e_key]."!<br>";
}
......@@ -1961,7 +1972,7 @@ function itemuse($itmn) {
} elseif ($itm == '测试用元素大师社团卡'){
//-----------------------//
//这是一张测试用卡 冴冴可以挑一些用得上的放在使用社团卡后执行的事件里
global $elements_info,$sparkle;
//global $elements_info,$sparkle;
//未选择社团情况下才可以用社团卡
if($club)
{
......@@ -1993,7 +2004,7 @@ function itemuse($itmn) {
changeclub(20,$pdata);
//获取初始元素与第一条配方
$dice = rand(0,5);
global ${'element'.$dice};
//global ${'element'.$dice};
${'element'.$dice} += 200+$dice;
//初始化元素合成缓存文件
include_once GAME_ROOT.'./include/game/elementmix.func.php';
......@@ -2043,10 +2054,10 @@ function itemuse($itmn) {
} elseif ($itm == '提示纸条U') {
$log .= '你读着纸条上的内容:<br>“纸条啥的……”<br>“希望这张纸条不会成为你的遗书。”<br>“总之祝你好运。”<br>';
} elseif ($itm == '人品探测器') {
global $rp;
//global $rp;
$log .= '你读着纸条上的内容:<br>“你的RP值为'.$rp.'。”<br>“总之祝你好运。”<br>';
} elseif ($itm == '仪水镜') {
global $rp;
//global $rp;
$log .= '水面上映出了你自己的脸,你仔细端详着……<br>';
if ($rp < 40){
$log .= '你的脸看起来十分白皙。<br>';
......@@ -2064,7 +2075,7 @@ function itemuse($itmn) {
$log .= '你的脸从水镜中消失了。<br>';
}
} elseif ($itm == '风祭河水'){
global $rp, $wp, $wk, $wg, $wc, $wd, $wf;
//global $rp, $wp, $wk, $wg, $wc, $wd, $wf;
$slv_dice = rand ( 1, 20 );
if ($slv_dice < 8) {
$log .= "你一口干掉了<span class=\"yellow\">$itm</span>,不过好像什么都没有发生!";
......@@ -2089,12 +2100,12 @@ function itemuse($itmn) {
death ( 'salv', '', 0, $itm );
}
} elseif ($itm == '『灵魂宝石』' || $itm == '『祝福宝石』') {
global $cmd;
//global $cmd;
$cmd = '<input type="hidden" name="mode" value="item"><input type="hidden" name="usemode" value="qianghua"><input type="hidden" name="itmp" value="' . $itmn . '">你想强化哪一件装备?<br><input type="radio" name="command" id="menu" value="menu" checked><a onclick=sl("menu"); href="javascript:void(0);" >返回</a><br><br><br>';
for($i = 1; $i <= 6; $i ++) {
global ${'itmsk' . $i};
//global ${'itmsk' . $i};
if ((strpos ( ${'itmsk' . $i}, 'Z' ) !== false) && (strpos ( ${'itm' . $i}, '宝石』' ) === false)) {
global ${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i};
//global ${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i};
$cmd .= '<input type="radio" name="command" id="itm' . $i . '" value="itm' . $i . '"><a onclick=sl("itm' . $i . '"); href="javascript:void(0);" >' . "${'itm'.$i}/${'itme'.$i}/${'itms'.$i}" . '</a><br>';
$flag = true;
}
......@@ -2110,7 +2121,7 @@ function itemuse($itmn) {
$flag = false;
for($i = 1; $i <= 6; $i ++) {
global ${'itm' . $i}, ${'itmk' . $i},${'itms' . $i},${'itme' . $i},$wk;
//global ${'itm' . $i}, ${'itmk' . $i},${'itms' . $i},${'itme' . $i},$wk;
foreach(Array('香蕉','苹果','西瓜') as $fruit){
if ( strpos ( ${'itm' . $i} , $fruit ) !== false && strpos ( ${'itm' . $i} , '皮' ) === false && strpos ( ${'itm' . $i} , '■' ) === false && (strpos ( ${'itmk' . $i} , 'H' ) === 0 || strpos ( ${'itmk' . $i} , 'P' ) === 0 )) {
......@@ -2145,7 +2156,7 @@ function itemuse($itmn) {
}
}
} elseif(strpos($itm,'RP回复设备')!==false){
global $rp;
//global $rp;
$rp = 0;
$log .= "你使用了<span class=\"yellow\">$itm</span>。你的RP归零了。<br>";
} else {
......@@ -2160,7 +2171,7 @@ function itemuse($itmn) {
$log.= $emix_slip[array_rand($emix_slip)];
//除商店纸条外:提供一条元素特征(TODO)、或一条固定配方、或一条随机属性组合
$log .= "<br><span class='yellow'>附:见面有缘,再送你一条提示吧:<br>“将带有";
global $itemspkinfo;
//global $itemspkinfo;
include_once GAME_ROOT.'./include/game/elementmix.func.php';
if(!preg_match('/(A|B|C|D)/',$itm))
{
......
......@@ -123,11 +123,16 @@ function calc_trap_reuse_rate($pa,$playerflag=0,$selflag=0)
}
function trap(){
function trap(&$data=NULL){
global $log,$cmd,$mode,$iteminfo;
global $now,$db,$tablepre;
if(!isset($data))
{
global $pdata;
global $log,$cmd,$mode,$iteminfo,$itm0,$itmk0,$itme0,$itms0,$itmsk0,$nick;
global $name,$now,$hp,$db,$tablepre,$bid,$lvl,$pid,$type,$tactic,$club,$skills,$rp;
global $wepsk,$arbsk,$arhsk,$arask,$arfsk,$artsk,$achievement;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$playerflag = $itmsk0 ? true : false;
$selflag = $itmsk0 == $pid ? true : false;
......@@ -144,7 +149,7 @@ function trap(){
}
// 计算陷阱回避率
$escrate = calc_trap_escape_rate($pdata,$playerflag,$selflag);
$escrate = calc_trap_escape_rate($data,$playerflag,$selflag);
//echo '回避率 = '.$escrate.'%';
if($dice >= $escrate)
......@@ -170,7 +175,7 @@ function trap(){
$damage = $tactic == 2 ? round($damage * 0.75) : $damage;
//好人卡特别活动
global $itm1,$itmk1,$itms1,$itm2,$itmk2,$itms2,$itm3,$itmk3,$itms3,$itm4,$itmk4,$itms4,$itm5,$itmk5,$itms5;
//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'){
......@@ -180,9 +185,9 @@ function trap(){
}
# 检查陷阱是否被迎击
$damage = check_trap_def_event($pdata,$damage,$playerflag,$selflag);
$damage = check_trap_def_event($data,$damage,$playerflag,$selflag);
# 「天佑」技能判定
if($damage && $itmk0 != 'TOc' && !check_skill_unlock('buff_godbless',$pdata))
if($damage && $itmk0 != 'TOc' && !check_skill_unlock('buff_godbless',$data))
{
$damage = 0;
$log .= "<span class=\"yellow\">「天佑」使你免疫了陷阱伤害!</span><br>";
......@@ -214,17 +219,17 @@ function trap(){
include_once GAME_ROOT.'./include/game/revcombat.func.php';
$wdata['wep_name'] = $itm0;
// 陷阱有主 走击杀判定
$last = pre_kill_events($wdata,$pdata,0,'trap');
$last = pre_kill_events($wdata,$data,0,'trap');
// 检查是否复活
$revival_flag = revive_process($wdata,$pdata,$active);
$revival_flag = revive_process($wdata,$data,$active);
// 没有复活 走完击杀流程
if(!$revival_flag) final_kill_events($wdata,$pdata,0,$last);
if(!$revival_flag) final_kill_events($wdata,$data,0,$last);
player_save($wdata);
}
else
{
include_once GAME_ROOT.'./include/state.func.php';
$killmsg = death('trap',$trname,$trtype,$itm0);
$killmsg = death('trap',$trname,$trtype,$itm0,$data);
$log .= "你被{$trperfix}陷阱杀死了!";
if($killmsg && !$selflag){
$log .= "<span class=\"yellow\">{$trname}对你说:“{$killmsg}”</span><br>";
......@@ -240,12 +245,12 @@ function trap(){
else
{
# 「天佑」技能判定
if(!check_skill_unlock('c6_godbless',$pdata) && check_skill_unlock('buff_godbless',$pdata))
if(!check_skill_unlock('c6_godbless',$data) && check_skill_unlock('buff_godbless',$data))
{
$actmhp = get_skillvars('c6_godbless','actmhp');
if($damage >= $pdata['mhp']*($actmhp/100))
if($damage >= $data['mhp']*($actmhp/100))
{
getclubskill('buff_godbless',$pdata['clbpara']);
getclubskill('buff_godbless',$data['clbpara']);
$log .= "<span class=\"yellow\">你的技能「天佑」被触发,暂时进入了无敌状态!</span><br>";
}
}
......@@ -281,9 +286,9 @@ function trap(){
}
}
$log .= "糟糕,你触发了{$trperfix}陷阱<span class=\"yellow\">$itm0</span>!";
if(!empty($pdata['minedetect']))
if(!empty($data['minedetect']))
{
unset($pdata['minedetect']);
unset($data['minedetect']);
$log .= "<br>不过,身上装备着的自动迎击系统启动了!<span class=\"yellow\">在迎击功能的保护下你毫发无伤。</span><br>";
}
else
......@@ -314,13 +319,13 @@ function trap(){
}
# 计算陷阱重复利用率
$fdrate = calc_trap_reuse_rate($pdata,$playerflag,$selflag);
$fdrate = calc_trap_reuse_rate($data,$playerflag,$selflag);
if($dice < $fdrate)
{
if(!empty($pdata['minedetect']))
if(!empty($data['minedetect']))
{
unset($pdata['minedetect']);
unset($data['minedetect']);
$log .= "在探雷装备的辅助下,你发现了{$trperfix}陷阱<span class=\"yellow\">$itm0</span>并且拆除了它。陷阱看上去还可以重复使用。<br>";
}
else
......@@ -333,9 +338,9 @@ function trap(){
}
else
{
if(isset($pdata['minedetect']))
if(isset($data['minedetect']))
{
unset($pdata['minedetect']);
unset($data['minedetect']);
$log .= "在探雷装备的辅助下,你发现了{$trperfix}陷阱<span class=\"yellow\">$itm0</span>并且拆除了它。不过陷阱好像被你搞坏了。<br>";
}
else
......@@ -350,16 +355,25 @@ function trap(){
}
}
function itemfind() {
global $mode,$log,$itm0,$itmk0,$itms0,$itmsk0;
global $club;
function itemfind(&$data=NULL) {
//global $mode,$log,$itm0,$itmk0,$itms0,$itmsk0;
//global $club;
global $mode,$log;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
if(!$itm0||!$itmk0||!$itms0){
$log .= '获取物品信息错误!';
$mode = 'command';
return;
}
if(strpos($itmk0,'TO')===0) {
trap();
trap($data);
}else{
if(CURSCRIPT == 'botservice')
{
......@@ -374,8 +388,15 @@ function itemfind() {
}
function itemget() {
global $log,$nosta,$mode,$itm0,$itmk0,$itme0,$itms0,$itmsk0,$cmd;
function itemget(&$data=NULL)
{
global $log,$nosta,$mode,$cmd;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$log .= "获得了物品<span class=\"yellow\">$itm0</span>。<br>";
//PORT
if(strpos($itmsk0,'^')!==false){
......@@ -387,7 +408,7 @@ function itemget() {
}
}
if(preg_match('/^(WC|WD|WF|Y|B|C|TN|GB|M|V)/',$itmk0) && $itms0 !== $nosta){
global $wep,$wepk,$wepe,$weps,$wepsk;
//global $wep,$wepk,$wepe,$weps,$wepsk;
if($wep == $itm0 && $wepk == $itmk0 && $wepe == $itme0 && $wepsk == $itmsk0){
$weps += $itms0;
$log .= "与装备着的武器<span class=\"yellow\">$wep</span>合并了。";
......@@ -397,7 +418,7 @@ function itemget() {
return;
}else{
for($i = 1;$i <= 6;$i++){
global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
//global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
if((${'itms'.$i})&&($itm0 == ${'itm'.$i})&&($itmk0 == ${'itmk'.$i})&&($itme0 == ${'itme'.$i})&&($itmsk0 == ${'itmsk'.$i})){
${'itms'.$i} += $itms0;
$log .= "与包裹里的<span class=\"yellow\">$itm0</span>合并了。";
......@@ -417,36 +438,37 @@ function itemget() {
}
}
if(isset($sameitem[0])){
if (CURSCRIPT != 'botservice')
if ($data['pass'] == 'bot')
{
include template('itemmerge0');
$cmd = ob_get_contents();
ob_clean();
include_once GAME_ROOT.'./bot/revbot.func.php';
if(bot_check_getitem($data)) itemadd($data);
else itemdrop($data);
}
else
{
echo "mode=itemmerge0\n";
echo "itemmergechoicenum={$scnt}\n";
for ($i=0; $i<$scnt; $i++)
echo "itemmergechoice{$i}={$sameitem[$i]}\n";
include template('itemmerge0');
$cmd = ob_get_contents();
ob_clean();
}
// $cmd .= '<input type="hidden" name="mode" value="itemmain"><input type="hidden" name="command" value="itemmerge"><input type="hidden" name="merge1" value="0"><br>是否将 <span class="yellow">'.$itm0.'</span> 与以下物品合并?<br><input type="radio" name="merge2" id="itmn" value="n" checked><a onclick=sl("itmn"); href="javascript:void(0);" >不合并</a><br><br>';
// foreach($sameitem as $n) {
// $cmd .= '<input type="radio" name="merge2" id="itm'.$n.'" value="'.$n.'"><a onclick=sl("itm'.$n.'"); href="javascript:void(0);">'."${'itm'.$n}/${'itme'.$n}/${'itms'.$n}".'</a><br>';
// }
return;
}
}
itemadd();
itemadd($data);
return;
}
function itemdrop($item) {
global $db,$log,$mode,$pls,$tablepre;
function itemdrop($item,&$data=NULL) {
global $db,$tablepre,$log,$mode;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
if(strpos($item,'itm')===false)
{
......@@ -470,9 +492,11 @@ function itemdrop($item) {
$itms = & ${'ar'.$itmn.'s'};
$itmsk = & ${'ar'.$itmn.'sk'};
} else*/if(strpos($item,'itm') === 0) {
} else*/
if(strpos($item,'itm') === 0) {
$itmn = substr($item,3,1);
global ${'itm'.$itmn},${'itmk'.$itmn},${'itme'.$itmn},${'itms'.$itmn},${'itmsk'.$itmn};
//global ${'itm'.$itmn},${'itmk'.$itmn},${'itme'.$itmn},${'itms'.$itmn},${'itmsk'.$itmn};
$itm = & ${'itm'.$itmn};
$itmk = & ${'itmk'.$itmn};
$itme = & ${'itme'.$itmn};
......@@ -483,13 +507,13 @@ function itemdrop($item) {
if(strpos($itmsk,'^')!==false){
$dflag=true;
for($i=1;$i<=6;$i++){
global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
//global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
if(strpos(${'itmsk'.$i},'^')!==false && ${'itms'.$i} && ${'itme'.$i}){
$dflag=false;
break;
}
}
global $arbsk,$arbs,$arbe;
//global $arbsk,$arbs,$arbe;
if(strpos($arbsk,'^')!==false && $arbs && $arbe){
$dflag=false;
}
......@@ -587,15 +611,24 @@ function itemoff($item){
return;
}
function itemadd(){
global $log,$mode,$cmd,$itm0,$itmk0,$itme0,$itms0,$itmsk0;
function itemadd(&$data=NULL)
{
global $log,$mode,$cmd;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
if(!$itms0){
$log .= '你没有捡取物品。<br>';
$mode = 'command';
return;
}
for($i = 1;$i <= 6;$i++){
global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
//global ${'itm'.$i},${'itmk'.$i},${'itme'.$i},${'itms'.$i},${'itmsk'.$i};
if(!${'itms'.$i}){
$log .= "将<span class=\"yellow\">$itm0</span>放入包裹。<br>";
${'itm'.$i} = $itm0;
......@@ -1107,9 +1140,18 @@ function itemmove($from,$to){
}
function itembuy($item,$shop,$bnum=1) {
global $log,$name,$mode,$now,$money,$areanum,$areaadd,$itm0,$itmk0,$itme0,$itms0,$itmsk0,$pls,$shops,$club;
function itembuy($item,$shop,$bnum=1,&$data=NULL)
{
global $log,$mode,$now,$areanum,$areaadd,$shops;
global $db,$tablepre;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$result=$db->query("SELECT * FROM {$tablepre}shopitem WHERE sid = '$item'");
$iteminfo = $db->fetch_array($result);
$price = $club == 11 ? round($iteminfo['price']*0.75) : $iteminfo['price'];
......@@ -1177,7 +1219,7 @@ function itembuy($item,$shop,$bnum=1) {
$itms0 = $iteminfo['itms']*$bnum;
$itmsk0 = $iteminfo['itmsk'];
itemget();
itemget($data);
return;
}
......@@ -1185,10 +1227,20 @@ function itembuy($item,$shop,$bnum=1) {
function getcorpse($item){
function getcorpse($item,&$data=NULL)
{
global $db,$tablepre,$log,$mode,$now;
global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$money,$pls,$action,$rp,$name;
global $club,$allow_destory_corpse,$no_destory_corpse_type,$rpup_destory_corpse;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$money,$pls,$action,$rp,$name;
//global $club,$allow_destory_corpse,$no_destory_corpse_type,$rpup_destory_corpse;
global $allow_destory_corpse,$no_destory_corpse_type,$rpup_destory_corpse;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$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>';
......@@ -1264,7 +1316,7 @@ function getcorpse($item){
if($item == 'loot_depot')
{
global $name,$type;
//global $name,$type;
include_once GAME_ROOT.'./include/game/depot.func.php';
loot_depot($name,$type,$edata['name'],$edata['type']);
$action = '';
......@@ -1315,7 +1367,7 @@ function getcorpse($item){
if(!$itms0||!$itmk0||$itmk0=='WN'||$itmk0=='DN') {
$log .= '该物品不存在!';
} else {
itemget();
itemget($data);
}
$action = '';
$mode = 'command';
......@@ -1387,6 +1439,9 @@ function weapon_loss(&$pa,$hurtvalue,$force_imp=0,$check_sk=0)
{
global $log,$wepimprate,$nosta;
//小开不算开 以后再做弹药相关吧
if($pa['pass'] == 'bot' && ($pa['wep_kind'] == 'G' || $pa['wep_kind'] == 'J')) $hurtvalue = 0;
if($hurtvalue && $pa['wep_kind'] != 'N')
{
$wep_loss_flag = 0;
......
......@@ -48,7 +48,7 @@
}
# NPC释放战斗技 暂时先重复写一遍,之后合并到一个函数里
if(!$active && $pa['type'] && !empty($pa['clbpara']['skill']))
if($pa['type'] && !empty($pa['clbpara']['skill']))
{
# 打乱并遍历pa技能队列 寻找可用战斗技
$npc_skill = $pa['clbpara']['skill'];
......
......@@ -412,24 +412,22 @@
//pa是玩家/主视角NPC的情况下 把edata($w_*)发给$pd 把sdata($s_*) 发给$pa
init_battle_rev($pa,$pd,1);
player_save($pa); player_save($pd);
$edata = $pd; if(!$pa['type']) $sname = $pa['name'];
$edata = $pd; if(!$pa['type']) $sdata = $pa;
}
else
{
//pd是玩家/主视角NPC的情况下 把edata($w_*)发给$pa 把sdata($s_*) 发给$pd
init_battle_rev($pd,$pa,1);
player_save($pa); player_save($pd);
$edata = $pa; if(!$pd['type']) $sname = $pd['name'];
$edata = $pa; if(!$pd['type']) $sdata = $pd;
}
$main = 'battle_rev';
if(isset($sname))
if(isset($sdata) && $sdata['pass'] != 'bot')
{
$pdata = fetch_playerdata_by_name($sname);
$pdata = fetch_playerdata_by_name($sdata['name']);
extract($pdata,EXTR_REFS);
}
# 根据玩家身上的标记($action) 判断接下来要跳转的页面
if(substr($action,0,6)=='corpse')
{
......@@ -456,6 +454,7 @@
$cmd = ob_get_contents();
ob_clean();
}
}
return;
}
......
......@@ -4,9 +4,19 @@ if(!defined('IN_GAME')) {
exit('Access Denied');
}
function move($moveto = 99) {
global $lvl,$log,$pls,$pgroup,$plsinfo,$hplsinfo,$inf,$hp,$mhp,$sp,$def,$club,$arealist,$areanum,$hack,$areainfo,$gamestate,$pose,$weather;
global $gamestate,$gamecfg,$pdata;
function move($moveto = 99,&$data=NULL) {
//global $lvl,$log,$pls,$pgroup,$plsinfo,$hplsinfo,$inf,$hp,$mhp,$sp,$def,$club,$arealist,$areanum,$hack,$areainfo,$gamestate,$pose,$weather;
//global $gamestate,$gamecfg,$pdata;
global $log,$weather,$plsinfo,$hplsinfo,$arealist,$areanum,$hack,$areainfo,$gamestate,$gamecfg;
global $inf_move_sp,$infwords,$inf_move_hp;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$plsnum = sizeof($plsinfo);
......@@ -45,7 +55,7 @@ function move($moveto = 99) {
//足部受伤,20;足球社,12;冻伤,30;正常,15;去gamecfg里改吧
$movesp = 15;
if ($inf) {
global $inf_move_sp;
foreach ($inf_move_sp as $inf_ky => $sp_down) {
if(strpos($inf,$inf_ky)!==false){$movesp+=$sp_down;}
}
......@@ -88,7 +98,7 @@ function move($moveto = 99) {
$log .= "被<span class=\"blue\">冰雹</span>击中,生命减少了<span class=\"red\">$damage</span>点!<br>";
if($hp <= 0 ) {
include_once GAME_ROOT.'./include/state.func.php';
death('hsmove');
death('hsmove','',0,'',$data);
return;
// } else {
// $pls = $moveto;
......@@ -161,7 +171,6 @@ function move($moveto = 99) {
if($inf){
global $infwords,$inf_move_hp;
foreach ($inf_move_hp as $inf_ky => $o_dmg) {
if(strpos($inf,$inf_ky)!==false){
$damage = round($mhp * $o_dmg) + rand(0,15);
......@@ -169,7 +178,7 @@ function move($moveto = 99) {
$log .= "{$infwords[$inf_ky]}减少了<span class=\"red\">$damage</span>点生命!<br>";
if($hp <= 0 ){
include_once GAME_ROOT.'./include/state.func.php';
death($inf_ky.'move');
death($inf_ky.'move','',0,'',$data);
return;
}
}
......@@ -187,15 +196,24 @@ function move($moveto = 99) {
if($pose==3){$enemyrate -= 20;}
elseif($pose==4){$enemyrate += 10;}*/
include_once GAME_ROOT.'./include/game/revattr.func.php';
$enemyrate = calc_meetman_rate($pdata);
$enemyrate = calc_meetman_rate($data);
//echo "enemyrate = {$enemyrate}%";
discover($enemyrate);
discover($enemyrate,$data);
return;
}
function search(){
global $pdata,$lvl,$log,$pls,$pgroup,$arealist,$areanum,$hack,$plsinfo,$hplsinfo,$club,$sp,$gamestate,$pose,$weather,$hp,$mhp,$def,$inf;
function search(&$data=NULL){
//global $pdata,$lvl,$log,$pls,$pgroup,$arealist,$areanum,$hack,$plsinfo,$hplsinfo,$club,$sp,$gamestate,$pose,$weather,$hp,$mhp,$def,$inf;
global $log,$weather,$arealist,$areanum,$hack,$plsinfo,$hplsinfo,$gamestate;
global $inf_search_sp,$infwords,$inf_search_hp;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
if(!isset($plsinfo[$pls]) && isset($hplsinfo[$pgroup]))
{
......@@ -214,7 +232,6 @@ function search(){
//腕部受伤,20;冻伤:30;侦探社,12;正常,15;改到gamecfg
$schsp =15;
if ($inf) {
global $inf_search_sp;
foreach ($inf_search_sp as $inf_ky => $sp_down) {
if(strpos($inf,$inf_ky)!==false){$schsp+=$sp_down;}
}
......@@ -255,7 +272,7 @@ function search(){
$log .= "被<span class=\"blue\">冰雹</span>击中,生命减少了<span class=\"red\">$damage</span>点!<br>";
if($hp <= 0 ) {
include_once GAME_ROOT.'./include/state.func.php';
death('hsmove');
death('hsmove','',0,'',$data);
return;
// } else {
// $pls = $moveto;
......@@ -323,7 +340,6 @@ function search(){
$sp -= $schsp;
$log .= "消耗<span class=\"yellow\">{$schsp}</span>点体力,你搜索着周围的一切。。。<br>";
if($inf){
global $infwords,$inf_search_hp;
foreach ($inf_search_hp as $inf_ky => $o_dmg) {
if(strpos($inf,$inf_ky)!==false){
$damage = round($mhp * $o_dmg) + rand(0,10);
......@@ -331,7 +347,7 @@ function search(){
$log .= "{$infwords[$inf_ky]}减少了<span class=\"red\">$damage</span>点生命!<br>";
if($hp <= 0 ){
include_once GAME_ROOT.'./include/state.func.php';
death($inf_ky.'move');
death($inf_ky.'move','',0,'',$data);
return;
}
}
......@@ -364,18 +380,32 @@ function search(){
if($pose==3){$enemyrate -= 20;}
elseif($pose==4){$enemyrate += 10;}*/
include_once GAME_ROOT.'./include/game/revattr.func.php';
$enemyrate = calc_meetman_rate($pdata);
$enemyrate = calc_meetman_rate($data);
//echo "enemyrate = {$enemyrate}%";
discover($enemyrate);
discover($enemyrate,$data);
return;
}
function discover($schmode = 0) {
function discover($schmode = 0,&$data=NULL)
{
//global $pdata;
//global $art,$pls,$now,$log,$mode,$command,$cmd,$event_obbs,$weather,$pls,$club,$pose,$tactic,$inf,$item_obbs,$enemy_obbs,$trap_min_obbs,$trap_max_obbs,$bid,$db,$tablepre,$gamestate,$corpseprotect,$action,$skills,$rp,$aidata;
//global $clbpara,$gamecfg;
global $now,$log,$mode,$command,$cmd;
global $db,$tablepre,$gamestate,$aidata,$pls_bgm;
global $event_obbs,$item_obbs,$enemy_obbs,$trap_min_obbs,$trap_max_obbs,$corpseprotect;
if(!isset($data))
{
global $pdata;
global $art,$pls,$now,$log,$mode,$command,$cmd,$event_obbs,$weather,$pls,$club,$pose,$tactic,$inf,$item_obbs,$enemy_obbs,$trap_min_obbs,$trap_max_obbs,$bid,$db,$tablepre,$gamestate,$corpseprotect,$action,$skills,$rp,$aidata;
global $clbpara,$gamecfg;
$data = &$pdata;
}
extract($data,EXTR_REFS);
$event_dice = rand(0,99);
if($data['pass'] == 'bot') $event_obbs = -1;
if(($event_dice < $event_obbs)||(($art!="Untainted Glory")&&($pls==34)&&($gamestate != 50))){
//echo "进入事件判定<br>";
include_once GAME_ROOT.'./include/game/event.func.php';
......@@ -389,7 +419,6 @@ function discover($schmode = 0) {
}
# 判定移动、探索、事件后的BGM变化
global $pls_bgm;
if(array_key_exists($pls,$pls_bgm))
{
$clbpara['pls_bgmbook'] = $pls_bgm[$pls];
......@@ -425,7 +454,7 @@ function discover($schmode = 0) {
//奇迹雷
$xtrpflag = $fstrp['itmk'] == 'TOc' ? true : false;
//计算 或不计算陷阱“触发率”:
$real_trap_obbs = $xtrpflag ? 100 : calc_real_trap_obbs($pdata,$trpnum);
$real_trap_obbs = $xtrpflag ? 100 : calc_real_trap_obbs($data,$trpnum);
//echo "realtrapobbs = {$real_trap_obbs}<br>";
if($trap_dice < $real_trap_obbs)
{
......@@ -435,7 +464,7 @@ function discover($schmode = 0) {
$db->data_seek($trapresult,$itemno);
$fstrp = $db->fetch_array($trapresult);
}
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$itm0=$fstrp['itm'];
$itmk0=$fstrp['itmk'];
$itme0=$fstrp['itme'];
......@@ -443,7 +472,7 @@ function discover($schmode = 0) {
$itmsk0=$fstrp['itmsk'];
$tid = $fstrp['tid'];
$db->query("DELETE FROM {$tablepre}maptrap WHERE tid='$tid'");
itemfind();
itemfind($data);
return;
}
/*if($xtrpflag){
......@@ -496,8 +525,9 @@ function discover($schmode = 0) {
if($mode_dice < $schmode)
{
//echo "进入遇敌判定<br>";
global $pid,$corpse_obbs,$teamID,$fog,$bid,$gamestate;
global $clbstatusa,$clbstatusb,$clbstatusc,$clbstatusd,$clbstatuse;
//global $pid,$corpse_obbs,$teamID,$fog,$bid,$gamestate;
//global $clbstatusa,$clbstatusb,$clbstatusc,$clbstatusd,$clbstatuse;
global $fog,$gamestate;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pls='$pls' AND pid!='$pid'");
if(!$db->num_rows($result)){
......@@ -548,14 +578,14 @@ function discover($schmode = 0) {
else
{
//直接略过决斗者
global $artk;
//global $artk;
if ((!$edata['type'])&&($artk=='XX')&&(($edata['artk']!='XX')||($edata['art']!=$name))&&($gamestate<50)) continue;
if (($artk!='XX')&&($edata['artk']=='XX')&&($gamestate<50)) continue;
//计算活人发现率
//$hide_r = get_hide_r($weather,$pls,$edata['pose'],$edata['tactic'],$edata['club'],$edata['inf']);
//include_once GAME_ROOT.'./include/game/clubskills.func.php';
//$hide_r *= get_clubskill_bonus_hide($edata['club'],$edata['skills']);
$hide_r = get_hide_r_rev($pdata,$edata);
$hide_r = get_hide_r_rev($data,$edata);
$enemy_dice = diceroll(99);
//echo "hide_r = {$hide_r} | find_obbs = {$find_obbs} | dice = {$enemy_dice}";
$meetman_flag = $enemy_dice<($find_obbs - $hide_r) ? 1 : -1;
......@@ -596,35 +626,41 @@ function discover($schmode = 0) {
//if ($active_r>96) $active_r=96;
//include_once GAME_ROOT.'./include/game/dice.func.php';
include_once GAME_ROOT.'./include/game/revbattle.func.php';
include_once GAME_ROOT.'./include/game/revcombat.func.php';
//刷新敌人时效性状态
if(!empty($edata['clbpara']['lasttimes'])) $edata = check_skilllasttimes($edata);
//计算先攻概率
$active_r = get_active_r_rev($pdata,$edata);
$active_r = get_active_r_rev($data,$edata);
$bid = $edata['pid'];
$active_dice = diceroll(99);
//先制
if($active_dice < $active_r)
{
$action = 'enemy'.$edata['pid'];
#include_once GAME_ROOT.'./include/game/battle.func.php';
#findenemy($edata);
if($data['pass'] != 'bot')
{
findenemy_rev($edata);
}
else
{
echo "进入战斗!<br>";
rev_combat_prepare($data,$edata,1,'',0);
}
return;
}
//挨打
else
{
if (CURSCRIPT == 'botservice')
if($data['pass'] != 'bot')
{
echo "passive_battle=1\n";
echo "passive_w_name={$edata['name']}\n";
echo "passive_w_type={$edata['type']}\n";
echo "passive_w_sNo={$edata['sNo']}\n";
rev_combat_prepare($edata,$data,0);
}
else
{
rev_combat_prepare($edata,$data,0,'',0);
}
#include_once GAME_ROOT.'./include/game/combat.func.php';
#combat(0);
include_once GAME_ROOT.'./include/game/revcombat.func.php';
rev_combat_prepare($edata,$pdata,0);
return;
}
}
......@@ -664,7 +700,7 @@ function discover($schmode = 0) {
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$itm0=$mi['itm'];
$itmk0=$mi['itmk'];
$itme0=$mi['itme'];
......@@ -675,8 +711,15 @@ function discover($schmode = 0) {
if($itms0){
include_once GAME_ROOT.'./include/game/itemmain.func.php';
if($data['pass'] == 'bot')
{
itemget($data);
}
else
{
itemfind();
return;
}
} else {
$log .= "但是什么都没有发现。可能是因为道具有天然呆属性。<br>";
}
......
......@@ -6,10 +6,20 @@ if(!defined('IN_GAME')) {
# TODO: NO GLOBAL
# resources_1.php
function get_equip_list()
function get_equip_list($mode=0)
{
//装备列表
$equip_list = Array('wep','arb','arh','ara','arf','art');
$equip_list2 = Array
(
'W' => 'wep',
'DB' => 'arb',
'DH' => 'arh',
'DA' => 'ara',
'DF' => 'arf',
'A' => 'art',
);
if($mode) return $equip_list2;
return $equip_list;
}
......
......@@ -4,9 +4,19 @@ if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
function death($death, $kname = '', $ktype = 0, $annex = '') {
global $now, $db, $tablepre, $alivenum, $deathnum, $name, $state, $deathtime, $type, $lvl, $bid, $killmsginfo, $typeinfo, $hp, $mhp, $wp, $wk, $wg, $wc, $wd, $wf, $sp, $msp, $club, $pls , $nick;
global $weather;
function death($death, $kname = '', $ktype = 0, $annex = '',&$data=NULL)
{
//global $name, $state, $deathtime, $type, $lvl, $bid, $hp, $mhp, $wp, $wk, $wg, $wc, $wd, $wf, $sp, $msp, $club, $pls , $nick;
global $now, $db, $tablepre, $alivenum, $deathnum, $killmsginfo, $typeinfo, $weather;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
if (! $death) {
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment