Commit d5bdd4f2 authored by hisuinohoshi's avatar hisuinohoshi

Update & Fix

update:{elementmix.func.php,elementmix_1.php,game.func.php,item.func.php}
fix:{chat.php,state.func.php}
更改了缓存文件的生成方式以节约性能(希望能!);
显示在装备、道具栏界面中的道具属性超过3个时,会被省略为“+...+”的格式,将鼠标悬浮其上可以看到详细属性(不然太丑了!);
为元素大师增加了安雅、移动PC的获取方式,并增加了一点配方;
修复:
现在元素合成不会再让攻击属性生成在防具/道具上;
修复了分解道具后不能立刻治疗异常状态的问题;
修复了没加入游戏却能在游戏里发言的作祟事件。
parent 38923e68
...@@ -10,6 +10,8 @@ if(!$cuser || !defined('IN_GAME')) { ...@@ -10,6 +10,8 @@ if(!$cuser || !defined('IN_GAME')) {
} }
if(($sendmode == 'send')&&$chatmsg) { if(($sendmode == 'send')&&$chatmsg) {
$result = $db->query("SELECT pid FROM {$tablepre}players WHERE name='$cuser' AND type='0'");
if(!$db->num_rows($result)) exit('Not in game.');
if(strpos($chatmsg,'/') === 0) { if(strpos($chatmsg,'/') === 0) {
$result = $db->query("SELECT groupid FROM {$tablepre}users WHERE username='$cuser'"); $result = $db->query("SELECT groupid FROM {$tablepre}users WHERE username='$cuser'");
$groupid = $db->result($result); $groupid = $db->result($result);
......
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
'十字发卡' => 'r_4-1', '十字发卡' => 'r_4-1',
//分解琉璃血 获得随机配方_5 的第 1 条素材 //分解琉璃血 获得随机配方_5 的第 1 条素材
'琉璃血' => 'r_5-1', '琉璃血' => 'r_5-1',
/** 会吐道具的分解 **/
'安雅人体冰雕' => Array('spitm'=>Array('武器师安雅的奖赏','Y','1','1','')),
/*** 道具分解 ***/ /*** 道具分解 ***/
'◆火之碎片' => Array(0=>77,1=>77,2=>77,3=>77,4=>77,5=>77), //全元素+77 '◆火之碎片' => Array(0=>77,1=>77,2=>77,3=>77,4=>77,5=>77), //全元素+77
'白色方块' => Array(0=>110), //昼闪闪+100 '白色方块' => Array(0=>110), //昼闪闪+100
...@@ -57,6 +59,8 @@ ...@@ -57,6 +59,8 @@
'树叶' => Array(3=>88), //郁萌萌+88 '树叶' => Array(3=>88), //郁萌萌+88
'毒药' => Array(5=>21), //夜静静+21 '毒药' => Array(5=>21), //夜静静+21
'电池' => Array(0=>15,4=>17), //亮晶晶+15、昼闪闪+17 '电池' => Array(0=>15,4=>17), //亮晶晶+15、昼闪闪+17
'手机' => Array(0=>20,),
'笔记本电脑' => Array(4=>20,),
'バカ⑨制冰块' => Array(2=>19,5=>21), //冷冰冰+19、夜静静+21 'バカ⑨制冰块' => Array(2=>19,5=>21), //冷冰冰+19、夜静静+21
); );
//拆解【特定道具】(关键词匹配,顺序越靠前优先级越高) 固定会获得的元素、数量 //拆解【特定道具】(关键词匹配,顺序越靠前优先级越高) 固定会获得的元素、数量
...@@ -196,6 +200,8 @@ ...@@ -196,6 +200,8 @@
( (
//子弹杯里伏特加加冰 兑小可可乐 //子弹杯里伏特加加冰 兑小可可乐
Array('stuff'=>Array(1=>58,5=>18),'result'=>Array('大卫·马丁内斯','HB',58,18,'p'),), Array('stuff'=>Array(1=>58,5=>18),'result'=>Array('大卫·马丁内斯','HB',58,18,'p'),),
//移动PC:亮晶晶20、昼闪闪20
Array('stuff'=>Array(0=>20,4=>20),'result'=>Array('移动PC','EE',5,1,'z'),),
//UG:投入全种类元素各1份 //UG:投入全种类元素各1份
Array('stuff'=>Array(0=>1,1=>1,2=>1,3=>1,4=>1,5=>1,),'result'=>Array('Untainted Glory','A',1,1,'Z'),), Array('stuff'=>Array(0=>1,1=>1,2=>1,3=>1,4=>1,5=>1,),'result'=>Array('Untainted Glory','A',1,1,'Z'),),
//仪水镜:投入全种类元素各7份 //仪水镜:投入全种类元素各7份
...@@ -235,6 +241,8 @@ ...@@ -235,6 +241,8 @@
Array('stuff'=>Array('HH','HS'),'result'=>'HB','obbs'=>77,), //回命+回体=命体回复 Array('stuff'=>Array('HH','HS'),'result'=>'HB','obbs'=>77,), //回命+回体=命体回复
Array('stuff'=>Array('HH','WF'),'result'=>'HM','obbs'=>77,), //回命+灵=歌魂增加 Array('stuff'=>Array('HH','WF'),'result'=>'HM','obbs'=>77,), //回命+灵=歌魂增加
Array('stuff'=>Array('HS','WD'),'result'=>'HT','obbs'=>77,), //回体+爆=歌魂恢复 Array('stuff'=>Array('HS','WD'),'result'=>'HT','obbs'=>77,), //回体+爆=歌魂恢复
Array('stuff'=>Array('HH','WG'),'result'=>'MH','obbs'=>15,), //回命+射=生命强化
Array('stuff'=>Array('HS','WC'),'result'=>'MS','obbs'=>60,), //回体+投=体力强化
Array('stuff'=>Array('WG','WG'),'result'=>'WJ','obbs'=>30,), //射+射=重枪(30%概率) Array('stuff'=>Array('WG','WG'),'result'=>'WJ','obbs'=>30,), //射+射=重枪(30%概率)
//我认为这里应该有一个配方 可以合出有毒补给或者地雷( //我认为这里应该有一个配方 可以合出有毒补给或者地雷(
); );
...@@ -242,21 +250,21 @@ ...@@ -242,21 +250,21 @@
$submix_list = array $submix_list = array
( (
Array('stuff'=>Array('x','z'),'result'=>'Z','obbs'=>13), //奇迹+天然=菁英 Array('stuff'=>Array('x','z'),'result'=>'Z','obbs'=>13), //奇迹+天然=菁英
Array('stuff'=>Array('u','i'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //火+冻=爆炸 //Array('stuff'=>Array('u','i'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //火+冻=爆炸
Array('stuff'=>Array('i','e'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //冻+电=爆炸 //Array('stuff'=>Array('i','e'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //冻+电=爆炸
Array('stuff'=>Array('w','i'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //音+冻=爆炸 //Array('stuff'=>Array('w','i'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //音+冻=爆炸
//冴冴来发挥奇思妙想吧 //冴冴来发挥奇思妙想吧
); );
//随机的次要特征组合配方 注意:指定属性(sk_*)一定要放到最前面 //随机的次要特征组合配方 注意:指定属性(sk_*)一定要放到最前面
//可能会生成重复配方,但是也无所谓~ //可能会生成重复配方,但是也无所谓~
$random_submix_list = Array $random_submix_list = Array
( (
//连击:随机1个价值在10以上,1个价值在20以上,1个价值在30以上的次要特征 //连击:随机1个价值在20以上,1个价值在30以上的次要特征
Array('stuff'=>Array(0=>'v_10',1=>'v_20',2=>'v_30'),'result'=>'r','obbs'=>50), Array('stuff'=>Array(0=>'v_20',1=>'v_30'),'result'=>'r','obbs'=>33),
//冲击:随机1个价值在20以上特征+1个随机“攻击”标签特征 //冲击:随机1个价值在20以上特征+1个随机“攻击”标签特征
Array('stuff'=>Array(0=>'tags_W',1=>'v_20'),'result'=>'N','obbs'=>50), Array('stuff'=>Array(0=>'tags_W',1=>'v_20'),'result'=>'N','obbs'=>50),
//贯穿:重击辅助+随机2个价值在30以上的次要特征 //贯穿:重击辅助+随机2个价值在30以上的次要特征
Array('stuff'=>Array(0=>'sk_c',1=>'v_30',2=>'v_30'),'result'=>'n','obbs'=>50), Array('stuff'=>Array(0=>'sk_c',1=>'v_30',2=>'v_30'),'result'=>'n','obbs'=>66),
//属性防御:随机1个价值在30以上+2个随机“防御”标签特征 //属性防御:随机1个价值在30以上+2个随机“防御”标签特征
Array('stuff'=>Array(0=>'v_30',1=>'tags_D',2=>'tags_D'),'result'=>'a','obbs'=>50), Array('stuff'=>Array(0=>'v_30',1=>'tags_D',2=>'tags_D'),'result'=>'a','obbs'=>50),
//全系防御:随机2个价值在30以上的次要特征+1个随机“防御”标签特征 //全系防御:随机2个价值在30以上的次要特征+1个随机“防御”标签特征
...@@ -268,7 +276,7 @@ ...@@ -268,7 +276,7 @@
//合成过程中随机产生的东西 //合成过程中随机产生的东西
$emix_tips_arr = Array('天然','喜悦','灵感','奇迹','爱','期待','愤怒','悲伤','乐子','苦闷','既视感','疯狂','幸运','RP','罪业'); $emix_tips_arr = Array('天然','喜悦','灵感','奇迹','爱','期待','愤怒','悲伤','乐子','苦闷','既视感','疯狂','幸运','RP','罪业');
//括在名字外围的符号 //括在名字外围的符号
$emix_name_brackets_arr = Array('☆+☆','★+★','〖+〗','【+】','『+』','「+」','《+》','○+○','●+●'); $emix_name_brackets_arr = Array('☆+☆','★+★','〖+〗','【+】','『+』','「+」','✦+✦','☾+☽','☼+☼');
//修饰前缀,由主元素决定,有多个主元素时随机抽取。主元素组合成功时再抽取通用前缀。 //修饰前缀,由主元素决定,有多个主元素时随机抽取。主元素组合成功时再抽取通用前缀。
$emix_name_prefix_arr = Array $emix_name_prefix_arr = Array
( (
...@@ -283,13 +291,13 @@ ...@@ -283,13 +291,13 @@
//元词缀,随便挑一个非主元素的 //元词缀,随便挑一个非主元素的
$emix_name_meta_arr = Array $emix_name_meta_arr = Array
( (
0 => Array('乱序之','宝石纹','镭射型','镜面纹','藏书','晶化','化合型','糖浆','石纹','杂糅','透明纹'),//'亮晶晶' 0 => Array('乱序之','宝石纹','镭射型','镜面纹','藏书','晶化','化合型','糖浆','石纹','杂糅','透明纹','印花','蕾丝缀','简约'),//'亮晶晶'
1 => Array('燃素之','篝火之','黄昏之','晌午','凤凰型','猩红之','暖石','强袭型','破坏型','苹果制','血纹'),//'暖洋洋' 1 => Array('燃素之','篝火之','黄昏之','晌午','凤凰','猩红','暖石','强袭型','破坏型','苹果','血纹','酒红'),//'暖洋洋'
2 => Array('迅捷化','鱼纹','操弄之','碎心','旁观之','路人之','狡黠之','凛风之','北极星','雾之','魔咒','激流之'),//'冷冰冰' 2 => Array('迅捷化','鱼纹','操弄之','碎心','旁观之','路人之','狡黠之','凛风之','北极星','雾之','魔咒','激流之'),//'冷冰冰'
3 => Array('生命之','蔷薇纹','根须','咖啡','妖精','吱吱乱叫之','生姜','拿铁','叶形纹','风化','仿制','纺锤状'),//'郁萌萌' 3 => Array('生命之','蔷薇纹','根须','咖啡','妖精','吱吱乱叫之','生姜','拿铁','叶形纹','风化','仿制','纺锤状'),//'郁萌萌'
4 => Array('启示之','神之','王国制','旭日之','英雄之','荣光之','灯笼状','萤火之','神父之','麻将','骑士之'),//'昼闪闪' 4 => Array('启示之','神之','王国制','旭日之','英雄之','荣光之','灯笼状','萤火之','教条','麻将','骑士之','亮片'),//'昼闪闪'
5 => Array('怪异化','黑洞之','视界之','牧人羊型','往事之','循环之','吊诡之','小鬼之','刻奇之','五芒星','爬行'),//'夜静静' 5 => Array('怪异化','黑洞之','视界之','牧人羊','往事之','循环之','吊诡之','小鬼之','刻奇之','五芒星','爬行者'),//'夜静静'
6 => Array('空白之','留声型','映像型','回响型','气动型','姐妹之','差分机','飞艇型','纸制','彩玻璃制','以太制','黄铜制','贤者之'),//拓展1 6 => Array('空白','留声型','映像型','回响型','气动型','双生之','差分机','飞艇型','纸之','琉璃','以太制','黄铜制','贤者之'),//拓展1
); );
//词尾 //词尾
$emix_name_tail_arr = Array $emix_name_tail_arr = Array
...@@ -302,10 +310,13 @@ ...@@ -302,10 +310,13 @@
'WD' => Array('炸弹','地雷','打击','此面向敌','贝蒂','绳','陷坑','抽卡游戏','短视频','胜负欲','这是什么?摸一下'),//'爆炸物' 'WD' => Array('炸弹','地雷','打击','此面向敌','贝蒂','绳','陷坑','抽卡游戏','短视频','胜负欲','这是什么?摸一下'),//'爆炸物'
'WF' => Array('符','手环','节杖','触','法书','纸人','信徒','精神性','理论','天赋','秘录','蟑螂'),//'灵武' 'WF' => Array('符','手环','节杖','触','法书','纸人','信徒','精神性','理论','天赋','秘录','蟑螂'),//'灵武'
//TODO:复合武器 //TODO:复合武器
'D' => Array('物','加护','轨迹','尾巴','鱼鳞','灯笼裤','胖次','朋友','匣子','投影','力场盾','假说','抑制器','弹药包'),//不分类防具 'D' => Array('物'),//不分类防具
//TODO:身体、手部、头部、足部防具 'DB' => Array('甲','衣','装','翼','西装','洋装','裙','死库水','灯笼裤','胖次','纸箱','弹药包','战甲B'),
'H' => Array('糊糊','杏仁豆腐','烤鱼面包','章鱼须','乌鸡肉','生海带','幸运饼干','长芽土豆','眼泪','趣味'),//补给 'DH' => Array('盔','镜','帽','风帽','缎带','发卡','护目镜','投影','假说','抑制器','检测装置','战甲H'),
'0' => Array('怪东西','???','竟然是它','■■■','数据削除'),//泛用性词尾 'DA' => Array('盾','掌','手套','朋友','匣子','鱼鳞','力场盾','鱼竿','手表','手环','镣铐','命数','战甲A'),
'DF' => Array('鞋','靴','爪','加护','轨迹','脚步','飞毯','马靴','草鞋','触手','尾巴','滑板','战甲F'),
'H' => Array('秘药','罐头','糊糊','杏仁豆腐','烤鱼面包','章鱼须','乌鸡肉','生海带','幸运饼干','长芽土豆','眼泪','趣味'),//补给
'0' => Array('怪东西','???','竟然是它','■■■','数据削除'),//BUG词尾:没有找到类别的情况下会变成这个
); );
/********研究模式配置********/ /********研究模式配置********/
...@@ -331,5 +342,8 @@ ...@@ -331,5 +342,8 @@
4 => '“如果实在不知道该合成什么的话,不妨试试把每种元素都丢1份进去看看。”<br>“说实话我也不知道会发生什么,所以出了事不要怨我啊!”<br>', 4 => '“如果实在不知道该合成什么的话,不妨试试把每种元素都丢1份进去看看。”<br>“说实话我也不知道会发生什么,所以出了事不要怨我啊!”<br>',
5 => '“据说元素们在变化成具体形状时会发出奇怪的动静……说不定是在用元素语骂人呢?”<br>', 5 => '“据说元素们在变化成具体形状时会发出奇怪的动静……说不定是在用元素语骂人呢?”<br>',
6 => '“据说要将元素的‘次要特征’附着在物品上时,会产生某种奇特的发酵物的味道。”<br>“其实元素合成的原理和腌咸菜也差不多吧?”<br>', 6 => '“据说要将元素的‘次要特征’附着在物品上时,会产生某种奇特的发酵物的味道。”<br>“其实元素合成的原理和腌咸菜也差不多吧?”<br>',
7 => '“有种有趣的说法是:‘在数字1-10里,7是最孤独的——因为只有它既不能成为因子、也不能被整除。’”<br>“如果你很闲的话,应该还能找到很多这样的规律。”<br>“或者你也可以试试把每种元素都丢进去7份看看?”<br>',
8 => '“你有没有试着分解过‘手机’和‘笔记本电脑’?”<br>“虽然不知道为什么这些东西上也会有元素。但寄宿在其上的元素数量与种类似乎是固定的。如果把这些固定的元素重新组合起来的话……?”<br>',
9 => '“你有没有试过把带有‘生命恢复’与‘体力恢复’特征的元素组合起来?”<br>“嘛,就算没试过,你应该一眼就能看出来会发生什么了。但是如果把它们分别与更有‘攻击性’的元素组合起来的话……?”<br>',
); );
?> ?>
...@@ -81,7 +81,8 @@ function get_itmsk_strlen($sk_value,$max_length=5) ...@@ -81,7 +81,8 @@ function get_itmsk_strlen($sk_value,$max_length=5)
return $ret; return $ret;
} }
//为显示在主界面、尸体发现界面、游戏帮助界面的道具名、道具类、道具属性添加额外描述 //为显示在主界面、尸体发现界面、游戏帮助界面的道具名、道具类、道具属性添加额外描述
function parse_itm_desc($n,$t) //传入$n=道具名/类/属性;$t='m'(使用名称数组)/'k'(类别)/'sk'(属性);$short=1(传入的$n为数组情况下才有效,缩写属性)
function parse_itm_desc($n,$t,$short=0)
{ {
global $iteminfo,$itemspkinfo; global $iteminfo,$itemspkinfo;
global $iteminfo_tooltip,$itemkinfo_tooltip,$itemspkinfo_tooltip; global $iteminfo_tooltip,$itemkinfo_tooltip,$itemspkinfo_tooltip;
...@@ -96,9 +97,24 @@ function parse_itm_desc($n,$t) ...@@ -96,9 +97,24 @@ function parse_itm_desc($n,$t)
break; break;
//处理属性 //处理属性
case $t=='sk': case $t=='sk':
//如果传入的n为数组,且开启缩写模式,则输出一段缩写
if($short && is_array($n))
{
$p1 = "title=\"";
$sk1 = $itemspkinfo[current($n)]; $sk2 = $itemspkinfo[end($n)]; $skn = '';
foreach($n as $sk_value)
{
if(!empty($skn)) $skn .='+'.$itemspkinfo[$sk_value];
else $skn = $itemspkinfo[$sk_value];
}
$p1.=$skn; $n = $sk1.'+...+'.$sk2; $p2 = "\"";
}
else
{
if(isset($itemspkinfo_tooltip[$n]['title'])) $p1 = "title=\"".$itemspkinfo_tooltip[$n]['title']."\""; if(isset($itemspkinfo_tooltip[$n]['title'])) $p1 = "title=\"".$itemspkinfo_tooltip[$n]['title']."\"";
if(isset($itemspkinfo_tooltip[$n]['class'])) $p2 = "class=\"".$itemspkinfo_tooltip[$n]['class']."\""; if(isset($itemspkinfo_tooltip[$n]['class'])) $p2 = "class=\"".$itemspkinfo_tooltip[$n]['class']."\"";
$n = $itemspkinfo[$n]; $n = $itemspkinfo[$n];
}
break; break;
//处理名字 //处理名字
case $t=='m': case $t=='m':
...@@ -168,6 +184,13 @@ function init_profile(){ ...@@ -168,6 +184,13 @@ function init_profile(){
${$sk_value.'_words'} = ''; ${$sk_value.'_words'} = '';
//取我数组斧来 //取我数组斧来
$tmpsk = get_itmsk_array(${$sk_value}); $tmpsk = get_itmsk_array(${$sk_value});
if(count($tmpsk)>3)
{
//在装备、道具栏内的道具超过3个属性时,显示为+...+的缩写……不然属性多起来太丑了!!
${$sk_value.'_words'} = parse_itm_desc($tmpsk,'sk',1);
}
else
{
foreach($tmpsk as $sk) foreach($tmpsk as $sk)
{ {
if(!empty(${$sk_value.'_words'})) if(!empty(${$sk_value.'_words'}))
...@@ -179,6 +202,7 @@ function init_profile(){ ...@@ -179,6 +202,7 @@ function init_profile(){
${$sk_value.'_words'} = parse_itm_desc($sk,'sk'); ${$sk_value.'_words'} = parse_itm_desc($sk,'sk');
} }
} }
}
} else { } else {
${$sk_value.'_words'} =$nospk; ${$sk_value.'_words'} =$nospk;
} }
...@@ -370,12 +394,14 @@ function init_battle($ismeet = 0){ ...@@ -370,12 +394,14 @@ function init_battle($ismeet = 0){
if (CURSCRIPT == 'botservice') echo "w_wepestate=0\n"; if (CURSCRIPT == 'botservice') echo "w_wepestate=0\n";
} }
if(!$fog||$ismeet) {
//在战斗界面中加载敌我双方武器tooltip //在战斗界面中加载敌我双方武器tooltip
global $wep_words,$wepk_words,$w_wep_words,$w_wepk_words; global $wep_words,$wepk_words,$w_wep_words,$w_wepk_words;
$wep_words = parse_itm_desc($wep,'m'); $w_wep_words = parse_itm_desc($w_wep,'m'); $wep_words = parse_itm_desc($wep,'m'); $wepk_words = parse_itm_desc($wepk,'k');
$wepk_words = parse_itm_desc($wepk,'k'); $w_wepk_words = parse_itm_desc($w_wepk,'k'); if(!$fog||$ismeet) {
//初始化第三方信息 如果有的话 //非雾天显示敌人武器情报
$w_wep_words = parse_itm_desc($w_wep,'m');
$w_wepk_words = parse_itm_desc($w_wepk,'k');
//如果有的话 初始化第三方武器情报
if(isset($n_type)) if(isset($n_type))
{ {
global $n_wep_words,$n_wepk_words,$n_iconImg; global $n_wep_words,$n_wepk_words,$n_iconImg;
...@@ -420,6 +446,9 @@ function init_battle($ismeet = 0){ ...@@ -420,6 +446,9 @@ function init_battle($ismeet = 0){
$w_infdata = ''; $w_infdata = '';
} }
} else { } else {
//雾天显示???
$w_wep_words = '???';
$w_wepk_words = '???';
$w_sNoinfo = '???'; $w_sNoinfo = '???';
$w_iconImg = 'question.gif'; $w_iconImg = 'question.gif';
$w_name = '???'; $w_name = '???';
...@@ -481,6 +510,16 @@ function player_save($data){ ...@@ -481,6 +510,16 @@ function player_save($data){
} }
return; return;
} }
function player_load($data)
{
$ndata = player_format_with_db_structure($data);
foreach ($ndata as $key => $value)
{
global $$key;
$$key = $value;
}
return;
}
function w_save($id){ 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; 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;
......
...@@ -75,11 +75,12 @@ ...@@ -75,11 +75,12 @@
if($edata) if($edata)
{ {
global $elements_info,$no_type_to_e_list,$split_corpse_lvl_r,$split_spcorpse_fix,$typeinfo; global $elements_info,$no_type_to_e_list,$split_corpse_lvl_r,$split_spcorpse_fix,$typeinfo;
global $log,$rp; global $log,$rp,$mode;
//过滤不能分解的尸体 //过滤不能分解的尸体
if(in_array($edata['type'],$no_type_to_e_list)) if(in_array($edata['type'],$no_type_to_e_list))
{ {
$log.="无法从{$edata['name']}身上提炼元素……为什么呢?<br><br>"; $log.="无法从{$edata['name']}身上提炼元素……为什么呢?<br><br>";
$mode = 'command';
return; return;
} }
//成功从尸体中提炼元素 //成功从尸体中提炼元素
...@@ -142,6 +143,16 @@ ...@@ -142,6 +143,16 @@
$total_addev += $add_ev; $total_addev += $add_ev;
$log.="获得了{$add_ev}{$e_info}!<br>"; $log.="获得了{$add_ev}{$e_info}!<br>";
} }
//分解的结果有参数合法的特殊道具
if(is_array($ev_arr['spitm']) && count($ev_arr['spitm'])>3)
{
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$log.="但出现在你面前的不是元素,而是<span class='yellow'>{$ev_arr['result'][0]}</span>!<br>……这是什么情况……!?<br>";
$itm0 = $ev_arr['result'][0]; $itmk0 = $ev_arr['result'][1]; $itmsk0 = $ev_arr['result'][4];
$itme0 = $ev_arr['result'][2]; $itms0 = $ev_arr['result'][3];
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget();
}
//销毁尸体 //销毁尸体
destory_corpse($edata); destory_corpse($edata);
//你们也一块去吧! //你们也一块去吧!
...@@ -156,6 +167,7 @@ ...@@ -156,6 +167,7 @@
} }
$log.="<br>"; $log.="<br>";
} }
$mode = 'command';
return; return;
} }
...@@ -166,11 +178,12 @@ ...@@ -166,11 +178,12 @@
if(isset($iid)) if(isset($iid))
{ {
global $elements_info,$itmk_to_e_list; global $elements_info,$itmk_to_e_list;
global $log,$rp; global $log,$rp,$mode;
global ${'itm'.$iid},${'itmk'.$iid},${'itme'.$iid},${'itms'.$iid},${'itmsk'.$iid}; global ${'itm'.$iid},${'itmk'.$iid},${'itme'.$iid},${'itms'.$iid},${'itmsk'.$iid};
if(!${'itms'.$iid}) if(!${'itms'.$iid})
{ {
$log.="道具来源非法。<br>"; $log.="道具来源非法。<br>";
$mode = 'command';
return; return;
} }
//打包 //打包
...@@ -189,19 +202,31 @@ ...@@ -189,19 +202,31 @@
$log.="<span class='grey'>".${'itm'.$iid}."化作点点荧光四散开来……</span><br>"; $log.="<span class='grey'>".${'itm'.$iid}."化作点点荧光四散开来……</span><br>";
//计算能获得的元素种类与数量 //计算能获得的元素种类与数量
$i_arr = get_evalues_by_iarr($i_arr); $i_arr = get_evalues_by_iarr($i_arr);
//销毁道具
${'itm'.$iid} = ${'itmk'.$iid} = ${'itmsk'.$iid} = '';
${'itme'.$iid} = ${'itms'.$iid} = 0;
//增加对应的元素 //增加对应的元素
$total_addev = 0; $total_addev = 0;
foreach($i_arr as $e_key=>$ev) foreach($i_arr as $e_key=>$ev)
{
if(is_array($ev) && count($ev)>3)
{
//分解的结果里有参数合法的道具
global $itm0,$itmk0,$itme0,$itms0,$itmsk0;
$log.="但出现在你面前的不是元素,而是<span class='yellow'>{$ev[0]}</span>!<br>……这是什么情况……!?<br>";
$itm0 = $ev[0]; $itmk0 = $ev[1]; $itmsk0 = $ev[4];
$itme0 = $ev[2]; $itms0 = $ev[3];
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget();
}
else
{ {
global ${'element'.$e_key}; global ${'element'.$e_key};
${'element'.$e_key} += $ev; ${'element'.$e_key} += $ev;
$total_addev += $ev; $total_addev += $ev;
$log.="获得了{$ev}{$elements_info[$e_key]}!<br>"; $log.="获得了{$ev}{$elements_info[$e_key]}!<br>";
} }
//销毁道具 }
${'itm'.$iid} = ${'itmk'.$iid} = ${'itmsk'.$iid} = '';
${'itme'.$iid} = ${'itms'.$iid} = 0;
//一起一起
unset($i_arr); unset($i_arr);
//捡垃圾涨功德 //捡垃圾涨功德
//$ep_dice = diceroll($total_addev); //$ep_dice = diceroll($total_addev);
...@@ -227,9 +252,10 @@ ...@@ -227,9 +252,10 @@
$ev_arr = Array(); $ev_arr = Array();
//获取缓存文件 //获取缓存文件
$cache_file = GAME_ROOT."./gamedata/bak/elementmix.bak"; $cache_file = GAME_ROOT."./gamedata/bak/elementmix.bak.php";
if(!file_exists($cache_file)) create_emix_cache_file(); if(!file_exists($cache_file)) create_emix_cache_file();
$flip_etags_arr = openfile_decode($cache_file); //$cache_arr = openfile_decode($cache_file);
include_once $cache_file;
//开始计算元素价值 //开始计算元素价值
foreach($iarr as $i => $t) foreach($iarr as $i => $t)
{ {
...@@ -246,14 +272,14 @@ ...@@ -246,14 +272,14 @@
//返回随机素材 //返回随机素材
if($e_list[1] == 'r') if($e_list[1] == 'r')
{ {
$ekey = array_rand($flip_etags_arr['random_emix_list'][$e_list[0]]['stuff']); $ekey = array_rand($cache_arr['random_emix_list'][$e_list[0]]['stuff']);
$ev = $flip_etags_arr['random_emix_list'][$e_list[0]]['stuff'][$ekey]; $ev = $cache_arr['random_emix_list'][$e_list[0]]['stuff'][$ekey];
} }
//返回指定位置素材 遍历配方 找到它的家 //返回指定位置素材 遍历配方 找到它的家
else else
{ {
$e_sort = 0; $e_sort = 0;
foreach($flip_etags_arr['random_emix_list'][$e_list[0]]['stuff'] as $stuff_key => $stuff_num) foreach($cache_arr['random_emix_list'][$e_list[0]]['stuff'] as $stuff_key => $stuff_num)
{ {
if($e_sort == $e_list[1]) if($e_sort == $e_list[1])
{ {
...@@ -269,6 +295,13 @@ ...@@ -269,6 +295,13 @@
//润! //润!
continue; continue;
} }
//处理吐出来的道具,一次分解最多只会吐一个道具,后到先得。
elseif(is_array($split_itm_fix[$t['itm']]['spitm']))
{
if(isset($ev_arr['spitm'])) unset($ev_arr['spitm']);
$ev_arr['spitm'] = $split_itm_fix[$t['itm']]['spitm'];
continue;
}
foreach($split_itm_fix[$t['itm']] as $ekey=>$ev) foreach($split_itm_fix[$t['itm']] as $ekey=>$ev)
{ {
$ev_arr[$ekey] += $ev; $ev_arr[$ekey] += $ev;
...@@ -327,17 +360,17 @@ ...@@ -327,17 +360,17 @@
//通过道具类别关联元素 //通过道具类别关联元素
$k_t = $t['itmk']; $k_ekey = ''; $k_t = $t['itmk']; $k_ekey = '';
if(isset($flip_etags_arr['flip_d_tag'][$k_t])) if(isset($cache_arr['flip_d_tag'][$k_t]))
{ {
//存在对应元素 优先获取 //存在对应元素 优先获取
$k_ekey = $flip_etags_arr['flip_d_tag'][$k_t]; $k_ekey = $cache_arr['flip_d_tag'][$k_t];
} }
else else
{ {
//不存在对应元素 先尝试过滤类别 //不存在对应元素 先尝试过滤类别
$k_t = filter_itemkind($k_t); $k_t = filter_itemkind($k_t);
//还是没有对应元素 返回随机一种元素 //还是没有对应元素 返回随机一种元素
$k_ekey = isset($flip_etags_arr['flip_d_tag'][$k_t]) ? $flip_etags_arr['flip_d_tag'][$k_t] : array_rand($elements_info); $k_ekey = isset($cache_arr['flip_d_tag'][$k_t]) ? $cache_arr['flip_d_tag'][$k_t] : array_rand($elements_info);
} }
//echo "【DEBUG】【{$t['itmk']}】{$t['itm']}关联到的元素是【{$elements_info[$k_ekey]}】<br>"; //echo "【DEBUG】【{$t['itmk']}】{$t['itm']}关联到的元素是【{$elements_info[$k_ekey]}】<br>";
...@@ -351,7 +384,7 @@ ...@@ -351,7 +384,7 @@
foreach($t['itmsk'] as $tsk) foreach($t['itmsk'] as $tsk)
{ {
//获取单个属性关联的元素 没有则随机挑选一个元素 //获取单个属性关联的元素 没有则随机挑选一个元素
$ekey = $flip_etags_arr['flip_s_tag'][$tsk] ? $flip_etags_arr['flip_s_tag'][$tsk] : array_rand($elements_info); $ekey = $cache_arr['flip_s_tag'][$tsk] ? $cache_arr['flip_s_tag'][$tsk] : array_rand($elements_info);
if(isset($ekey)) if(isset($ekey))
{ {
$add_ev = 0; $add_ev = 0;
...@@ -402,11 +435,9 @@ ...@@ -402,11 +435,9 @@
//自定义效/耐比的阈值:2%~98% //自定义效/耐比的阈值:2%~98%
$eitme_r = isset($eitme_r) ? min(98,max(2,$eitme_r)) : rand(2,98); $eitme_r = isset($eitme_r) ? min(98,max(2,$eitme_r)) : rand(2,98);
$eitme_r /= 100; $eitme_r /= 100;
//echo '【DEBUG】初始化阶段,道具效果系数:'.$eitme_r.'<br>';
//自定义最大效果的阈值:1%~100% //自定义最大效果的阈值:1%~100%
$eitme_max_r = isset($eitme_max_r) ? min(100,max(1,$eitme_max_r)) : 100; $eitme_max_r = isset($eitme_max_r) ? min(100,max(1,$eitme_max_r)) : 100;
$eitme_max_r /= 100; $eitme_max_r /= 100;
//echo '【DEBUG】初始化阶段,道具效果上限系数:'.$eitme_max_r.'<br>';
//对参与合成的元素按投入数量降序排序,筛出投入数量最多的元素作为主元素 //对参与合成的元素按投入数量降序排序,筛出投入数量最多的元素作为主元素
arsort($emlist); arsort($emlist);
$log.="从口袋中抓出了:<br>"; $log.="从口袋中抓出了:<br>";
...@@ -436,7 +467,7 @@ ...@@ -436,7 +467,7 @@
$log.="。<br>你紧张地搓了搓手。<br>合成开始了。<br>"; $log.="。<br>你紧张地搓了搓手。<br>合成开始了。<br>";
//检查是否存在固定合成(其实放最顶层也行 放这里只是为了输出上面一段log) //检查是否存在固定合成
$emix_fix = check_in_emix_list($emlist); $emix_fix = check_in_emix_list($emlist);
if($emix_fix) if($emix_fix)
{ {
...@@ -507,8 +538,14 @@ ...@@ -507,8 +538,14 @@
$emix_itms_r = 1-$emix_itme_r; $emix_itms_r = 1-$emix_itme_r;
//计算道具效果、耐久 //计算道具效果、耐久
$emix_itme = ($emix_flag==4) ? $cost_enum : ceil($cost_enum*$emix_itme_r*($emix_flag/10 + 1)); //只投入1份元素,至少也会有1点效果、1点耐久。你赚了我亏了好吧! $emix_itme = ($emix_flag==4) ? $cost_enum : ceil($cost_enum*$emix_itme_r*($emix_flag/10 + 1)); //只投入1份元素,至少也会有1点效果、1点耐久。你赚了我亏了好吧!
$emix_itms = ($emix_flag==4) ? '∞' : ceil($cost_enum*$emix_itms_r*($emix_flag/10 + 1)); $emix_itms = ($emix_flag==4) ? '∞' : ceil($cost_enum*$emix_itms_r*($emix_flag/10 + 1));//大成功情况下获得无限耐久
if(strpos($emix_itmk,'D')===0 && $emix_itms=='∞') $emix_itms = $emix_itme; if(strpos($emix_itmk,'D')===0 && $emix_itms=='∞') $emix_itms = $emix_itme; //防具没有这种待遇
//临时的道具效果修正:强化药物道具效果上限
if(strpos($emix_itmk,'M')===0 || strpos($emix_itmk,'HM')===0)
{
$emix_itme = ceil(min(30*($emix_flag/10 + 1),$emix_itme));
$emix_itms = ceil(min(2*($emix_flag/10 + 1),$emix_itms));
}
$log.="<span class='clan'>在那形状愈发明晰的时候,你听到<span class='yellow'>{$cost_enum}</span>份</span>{$elements_info[$dom_ekey]}<span class='clan'>在升腾的雾气中喃喃呓语。</span><br>"; $log.="<span class='clan'>在那形状愈发明晰的时候,你听到<span class='yellow'>{$cost_enum}</span>份</span>{$elements_info[$dom_ekey]}<span class='clan'>在升腾的雾气中喃喃呓语。</span><br>";
$log.="<span class='grey'>…哎呀,不小心混入了一点{$emix_tips_arr[array_rand($emix_tips_arr)]}…</span><br>"; $log.="<span class='grey'>…哎呀,不小心混入了一点{$emix_tips_arr[array_rand($emix_tips_arr)]}…</span><br>";
...@@ -555,14 +592,13 @@ ...@@ -555,14 +592,13 @@
$emix_itm_prefix = array_rand($emix_name_prefix_arr[$dom_ekey]); $emix_itm_prefix = array_rand($emix_name_prefix_arr[$dom_ekey]);
$emix_itm_prefix = $emix_name_prefix_arr[$dom_ekey][$emix_itm_prefix]; $emix_itm_prefix = $emix_name_prefix_arr[$dom_ekey][$emix_itm_prefix];
//随便挑一个元素的元词缀词组 //随便挑一个元素的元词缀词组
$meta_emlist_id =array_rand($emlist); //TODO:大成功、失败事件可以使用拓展1词组 $meta_emlist_id = ($emix_flag==4 || $emix_flag==-2) ? 6 : array_rand($emlist); //大成功、失败事件可以使用拓展1词组
$emix_itm_meta = array_rand($emix_name_meta_arr[$meta_emlist_id]); $emix_itm_meta = array_rand($emix_name_meta_arr[$meta_emlist_id]);
$emix_itm_meta = $emix_name_meta_arr[$meta_emlist_id][$emix_itm_meta]; $emix_itm_meta = $emix_name_meta_arr[$meta_emlist_id][$emix_itm_meta];
//根据生成的类别获取尾巴词组 //根据生成的类别获取尾巴词组
$tmp_kind = $emix_itmk; $tmp_kind = $emix_itmk;
//过滤掉道具的子类别 //过滤掉道具的子类别
$tmp_kind = filter_itemkind($emix_itmk,1); $tmp_kind = filter_itemkind($emix_itmk,1);
if(strpos($tmp_kind,'D')===0) $tmp_kind = 'D'; //TODO:提供了单个部位的防具词组后删掉这一句
if(strpos($tmp_kind,'H')===0) $tmp_kind = 'H'; //TODO:提供了单独的道具类别词组后删掉这一句 if(strpos($tmp_kind,'H')===0) $tmp_kind = 'H'; //TODO:提供了单独的道具类别词组后删掉这一句
//复合武器 //复合武器
if(is_array($tmp_kind)) if(is_array($tmp_kind))
...@@ -626,7 +662,6 @@ ...@@ -626,7 +662,6 @@
$max_enum = get_emix_itme_max(); $max_enum = get_emix_itme_max();
//通过自定义上限系数修正 //通过自定义上限系数修正
$max_enum *= $emr; $max_enum *= $emr;
//echo '【DEBUG】获取实际上限阶段,修正系数:'.$emr.'理论上限:'.$max_enum.'<br>';
//判断投入数量有没有超过理论上限 //判断投入数量有没有超过理论上限
$max_cost = min(round($max_enum),$total_enum); $max_cost = min(round($max_enum),$total_enum);
return $max_cost; return $max_cost;
...@@ -641,7 +676,6 @@ ...@@ -641,7 +676,6 @@
{ {
if(!array_diff($emlist,$elist['stuff']) && count($emlist) == count($elist['stuff'])) if(!array_diff($emlist,$elist['stuff']) && count($emlist) == count($elist['stuff']))
{ {
//echo "【DEBUG】检测到了固定合成{$elist['result'][0]}<br>";
return $elist['result']; return $elist['result'];
} }
} }
...@@ -651,7 +685,6 @@ ...@@ -651,7 +685,6 @@
{ {
if(!array_diff($emlist,$relist['stuff']) && count($emlist) == count($relist['stuff'])) if(!array_diff($emlist,$relist['stuff']) && count($emlist) == count($relist['stuff']))
{ {
//echo "【DEBUG】检测到了固定随机合成{$relist['result'][0]}<br>";
return $r_emix_list[$rid]['result']; return $r_emix_list[$rid]['result'];
} }
} }
...@@ -715,7 +748,6 @@ ...@@ -715,7 +748,6 @@
global $elements_info,$temp_etags; global $elements_info,$temp_etags;
global $split_default_itmsk_fix,$split_itmsk_fix; global $split_default_itmsk_fix,$split_itmsk_fix;
//可惜没有诅咒属性了……
$subtags = Array(); $subtags = Array();
//获取元素所有的次要特征 //获取元素所有的次要特征
$e_sub_tags = $temp_etags[$ekey]['sub']; $e_sub_tags = $temp_etags[$ekey]['sub'];
...@@ -773,8 +805,7 @@ ...@@ -773,8 +805,7 @@
$submix_list = array_merge_recursive($r_submix_list,$submix_list); $submix_list = array_merge_recursive($r_submix_list,$submix_list);
foreach($submix_list as $minfo) foreach($submix_list as $minfo)
{ {
//属性组合就不要求数量一一对应了 先到先得 //属性组合逻辑:匹配素材数量>=要求素材数量 && 不能重复生成属性
//逻辑:匹配素材数量>=要求素材数量 感觉有点问题 但又好像没有问题 暂时就这么搞!<-傻了吧 没做重复属性判断
if(count(array_intersect($sub_tags,$minfo['stuff'])) >= count($minfo['stuff']) && !in_array($minfo['result'],$sk_value)) if(count(array_intersect($sub_tags,$minfo['stuff'])) >= count($minfo['stuff']) && !in_array($minfo['result'],$sk_value))
{ {
//配方为概率合成 掷骰判定 //配方为概率合成 掷骰判定
...@@ -809,13 +840,12 @@ ...@@ -809,13 +840,12 @@
$kind = substr($kind,0,1); //只用道具类别的首字母判断……这个叫什么?大类! $kind = substr($kind,0,1); //只用道具类别的首字母判断……这个叫什么?大类!
foreach($sk_value as $key_sk => $sk) foreach($sk_value as $key_sk => $sk)
{ {
//来点反人类的:TODO:这里有问题
//武器上不会生成“防御性”属性 //武器上不会生成“防御性”属性
if($kind=='W' && array_search($sk,$itmk_to_itmsk_tags['D'])) unset($sk_value[$key_sk]); if($kind=='W' && in_array($sk,$itmk_to_itmsk_tags['D'])) unset($sk_value[$key_sk]);
//防具、道具上不会生成“攻击性”属性 //防具、道具上不会生成“攻击性”属性
if($kind!='W' && array_search($sk,$itmk_to_itmsk_tags['W'])) unset($sk_value[$key_sk]); if($kind!='W' && in_array($sk,$itmk_to_itmsk_tags['W'])) unset($sk_value[$key_sk]);
//补给品只会生成杂项属性 //补给品只会生成杂项属性
if($kind=='H' && !array_search($sk,$itmk_to_itmsk_tags['misc'])) unset($sk_value[$key_sk]); if($kind!='W' && $kind!='D' && !in_array($sk,$itmk_to_itmsk_tags['misc'])) unset($sk_value[$key_sk]);
} }
//从尾部筛出超过生成上限的属性 //从尾部筛出超过生成上限的属性
while(count($sk_value)>$max_sk) while(count($sk_value)>$max_sk)
...@@ -905,16 +935,16 @@ ...@@ -905,16 +935,16 @@
{ {
global $random_emix_list,$random_submix_list; global $random_emix_list,$random_submix_list;
//获取缓存文件 //获取缓存文件
$cache_file = GAME_ROOT."./gamedata/bak/elementmix.bak"; $cache_file = GAME_ROOT."./gamedata/bak/elementmix.bak.php";
if(!file_exists($cache_file)) create_emix_cache_file(); if(!file_exists($cache_file)) create_emix_cache_file();
$cache_file = openfile_decode($cache_file); include_once $cache_file;
//用已生成的随机配方替换模板配方 //用已生成的随机配方替换模板配方
if($type == 0) if($type == 0)
{ {
$list = $random_emix_list; $list = $random_emix_list;
foreach($list as $rkey => $rlist) foreach($list as $rkey => $rlist)
{ {
$list[$rkey]['stuff'] = $cache_file['random_emix_list'][$rkey]['stuff']; $list[$rkey]['stuff'] = $cache_arr['random_emix_list'][$rkey]['stuff'];
} }
} }
else else
...@@ -922,24 +952,23 @@ ...@@ -922,24 +952,23 @@
$list = $random_submix_list; $list = $random_submix_list;
foreach($list as $rkey => $rlist) foreach($list as $rkey => $rlist)
{ {
$list[$rkey]['stuff'] = $cache_file['random_smix_list'][$rkey]['stuff']; $list[$rkey]['stuff'] = $cache_arr['random_smix_list'][$rkey]['stuff'];
} }
} }
return $list; return $list;
} }
//生成元素合成相关的临时配置文件 只在有人用了对应社团卡时执行一次 //生成元素合成相关的临时配置文件,只在有人用了对应社团卡时执行一次
//如果不想用这个的话 也可以直接调用对应的数组生成模块 //现在直接用更优雅的方式生成php格式文件,可以直接include进来。
//研究模式随机生成的一些东西也会以这种方式储存
function create_emix_cache_file() function create_emix_cache_file()
{ {
global $temp_etags,$gamecfg,$gamenum,$log; global $temp_etags,$gamecfg,$gamenum,$log;
$file = GAME_ROOT."./gamedata/bak/elementmix.bak"; $file = GAME_ROOT."./gamedata/bak/elementmix.bak.php";
if(file_exists($file)) if(file_exists($file))
{ {
//检查本局游戏是不是已经生成过配置文件了 //检查本局游戏是不是已经生成过配置文件了
$check = openfile_decode($file); include_once $file;
if($check['gamenum'] == $gamenum) if($cache_arr['gamenum'] == $gamenum)
{ {
return; return;
$log.="【DEBUG】如果你看到这条信息,请转告管理员:“调试完记得把注释去掉!”<br>"; $log.="【DEBUG】如果你看到这条信息,请转告管理员:“调试完记得把注释去掉!”<br>";
...@@ -957,7 +986,10 @@ ...@@ -957,7 +986,10 @@
//加入本局游戏编号 //加入本局游戏编号
$cache_arr['gamenum'] = $gamenum; $cache_arr['gamenum'] = $gamenum;
//写入文件 //写入文件
writeover_encode($file,$cache_arr); global $checkstr;
$cache_str = str_replace('?>','',str_replace('<?','<?php',$checkstr));
$cache_str .= '$cache_arr = ' . var_export($cache_arr,1).";\r\n?>";
writeover($file,$cache_str);
//$log.="【DEBUG】生成了本局游戏对应的临时配置文件。<br>"; //$log.="【DEBUG】生成了本局游戏对应的临时配置文件。<br>";
return; return;
} }
...@@ -1008,8 +1040,6 @@ ...@@ -1008,8 +1040,6 @@
return $tmp_arr; return $tmp_arr;
} }
//数组化itmsk 可能是四面的遗产 //和还原itmsk为字符串一起挪到game.func.php里了
//过滤杂项道具类别(可以作为一个通用型函数) //我好傻 //过滤杂项道具类别(可以作为一个通用型函数) //我好傻
function filter_itemkind($kind,$check_dualwep=0) function filter_itemkind($kind,$check_dualwep=0)
{ {
...@@ -1023,7 +1053,7 @@ ...@@ -1023,7 +1053,7 @@
$kind = Array($w1,$w2); $kind = Array($w1,$w2);
return $kind; return $kind;
} }
//过滤道具类别
foreach($iteminfo as $info_key => $info_value) foreach($iteminfo as $info_key => $info_value)
{ {
if(strpos($kind,$info_key)===0) if(strpos($kind,$info_key)===0)
...@@ -1034,34 +1064,4 @@ ...@@ -1034,34 +1064,4 @@
} }
return $kind; return $kind;
} }
//使用json_encode结构将指定数组写入文件
function writeover_encode($filename,$arr,$method='rb+')
{
if(is_array($arr))
{
$arr = json_encode($arr);
writeover($filename,$arr,$method);
chmod($filename,0777);
return;
}
return;
}
//打开使用json_encode结构保存的文件,返回整个数组,或单独某节
function openfile_decode($filename,$key=NULL)
{
if(file_exists($filename))
{
$data = file_get_contents($filename);
if($data)
{
$data = json_decode($data,true);
if(isset($key)) return $data[$key];
}
return $data;
}
return;
}
?> ?>
\ No newline at end of file
...@@ -1815,7 +1815,7 @@ function itemuse($itmn) { ...@@ -1815,7 +1815,7 @@ function itemuse($itmn) {
$club = 20; $club = 20;
//获取初始元素与第一条配方 //获取初始元素与第一条配方
$dice = rand(0,5); $dice = rand(0,5);
global ${'element'.$dice}; global ${'element'.$dice},$clbpara;
${'element'.$dice} += 200+$dice; ${'element'.$dice} += 200+$dice;
//初始化元素合成缓存文件 //初始化元素合成缓存文件
include_once GAME_ROOT.'./include/game/elementmix.func.php'; include_once GAME_ROOT.'./include/game/elementmix.func.php';
...@@ -1908,7 +1908,8 @@ function itemuse($itmn) { ...@@ -1908,7 +1908,8 @@ function itemuse($itmn) {
//这是一个测试用道具 设置好$nid(先手者pid)和$eid(挨打者pid)后可以看这两个人打架 把其中一个设置成自己的pid就可以亲自下场 //自己下场现在有BUG //这是一个测试用道具 设置好$nid(先手者pid)和$eid(挨打者pid)后可以看这两个人打架 把其中一个设置成自己的pid就可以亲自下场 //自己下场现在有BUG
//$nid:先手攻击者的pid;$eid:挨打者的pid //$nid:先手攻击者的pid;$eid:挨打者的pid
//如果$nid打死了$eid的话,尸体会由你来摸,这不是BUG,是一个暂时缺少条件判断的特性。 //如果$nid打死了$eid的话,尸体会由你来摸,这不是BUG,是一个暂时缺少条件判断的特性。
$nid = 1; $eid = 15; global $pid;
$nid = $pid; $eid = 2;
include_once GAME_ROOT.'./include/game/revcombat.func.php'; include_once GAME_ROOT.'./include/game/revcombat.func.php';
rev_combat_prepare($nid,$eid); rev_combat_prepare($nid,$eid);
return; return;
...@@ -2069,19 +2070,23 @@ function itemuse($itmn) { ...@@ -2069,19 +2070,23 @@ function itemuse($itmn) {
include_once config('elementmix',$gamecfg); include_once config('elementmix',$gamecfg);
$log.= $emix_slip[array_rand($emix_slip)]; $log.= $emix_slip[array_rand($emix_slip)];
//除商店纸条外:提供一条元素特征(TODO)、或一条固定配方、或一条随机属性组合 //除商店纸条外:提供一条元素特征(TODO)、或一条固定配方、或一条随机属性组合
if(!preg_match('/(A|B|C|D)/',$itm)) $log .= "<br><span class='yellow'>附:见面有缘,再送你一条提示吧:<br>“将带有";
{
$log .= "“附:见面有缘,再送你一条提示吧:”<br>";
/*** TODO:把这一块封装进一个函数里 ***/
$log .= "<span class='yellow'>“将带有";
global $itemspkinfo; global $itemspkinfo;
include_once GAME_ROOT.'./include/game/elementmix.func.php'; include_once GAME_ROOT.'./include/game/elementmix.func.php';
if(!preg_match('/(A|B|C|D)/',$itm))
{
//野生纸条:给随机属性组合提示
$s_list = merge_random_emix_list(1); $s_id = array_rand($s_list); $s_list = merge_random_emix_list(1); $s_id = array_rand($s_list);
foreach($s_list[$s_id]['stuff'] as $skey) $log .= "【$itemspkinfo[$skey]】";
$s_result = $itemspkinfo[$random_submix_list[$s_id]['result']]; $s_result = $itemspkinfo[$random_submix_list[$s_id]['result']];
$log .= "特征的元素组合起来,就有机会组合出【{$s_result}】属性。”</span><br>";
/*** TODO:把这一块封装进一个函数里 ***/
} }
else
{
//商店纸条:给固定属性组合提示
$s_list = $submix_list; $s_id = array_rand($s_list);
$s_result = $itemspkinfo[$s_list[$s_id]['result']];
}
foreach($s_list[$s_id]['stuff'] as $skey) $log .= "【$itemspkinfo[$skey]】";
$log .= "特征的元素组合起来,就有机会组合出【{$s_result}】属性。”</span><br>";
//阅后即焚 //阅后即焚
$log .="<br>……说这么多鬼记得住啊!<br>你思考了一下,决定把{$itm}吃进肚子里,以便慢慢消化其中的知识。<br>"; $log .="<br>……说这么多鬼记得住啊!<br>你思考了一下,决定把{$itm}吃进肚子里,以便慢慢消化其中的知识。<br>";
$itms--; $itms--;
......
...@@ -8,10 +8,9 @@ ...@@ -8,10 +8,9 @@
include_once GAME_ROOT.'./include/game/attr.func.php'; include_once GAME_ROOT.'./include/game/attr.func.php';
/*这个文件里的函数是供npc与npc战斗使用的。 /*这个文件里的函数是供npc与npc战斗使用的。
但是只要提供了正确的pa和pd当然也可以给玩家使用。 //哈哈!不行!玩家数据存不回去!傻了吧! //虽然不能直接替换掉原版战斗函数,但是也许能用做这个的思路对原版进行一些优化…… 但是只要提供了正确的pa和pd当然也可以给玩家使用。 //哈哈!不行!玩家数据存不回去!傻了吧! //搞定了! //没搞定啊!!不能100%保证不出怪问题,所以还是不要给玩家使用
本质上就是一套整理过的原版战斗函数。*/ 本质上就是一套整理过的原版战斗函数。*/
//战斗准备流程:通过传入的战斗双方ID初始化 //战斗准备流程:通过传入的战斗双方ID初始化
function rev_combat_prepare($nid,$eid) function rev_combat_prepare($nid,$eid)
{ {
...@@ -174,7 +173,7 @@ ...@@ -174,7 +173,7 @@
$log .= "<span class=\"red\">{$pd['name']}攻击范围不足,不能反击,逃跑了!</span><br>"; $log .= "<span class=\"red\">{$pd['name']}攻击范围不足,不能反击,逃跑了!</span><br>";
} }
} }
elseif($pd['hp']>0) elseif($pd['hp']>0 && !$att_result)
{ {
$log .= "<span class=\"red\">{$pd['name']}逃跑了!</span><br>"; $log .= "<span class=\"red\">{$pd['name']}逃跑了!</span><br>";
} }
...@@ -227,6 +226,8 @@ ...@@ -227,6 +226,8 @@
$log = str_replace('你',$pa['name'],$log); //偷懒做法 如果NPC的台词里有“你”出现的话 会变得很怪23333 $log = str_replace('你',$pa['name'],$log); //偷懒做法 如果NPC的台词里有“你”出现的话 会变得很怪23333
//保存两个人的状态 //保存两个人的状态
player_save($pa);player_save($pd); player_save($pa);player_save($pd);
if(!$pa['type']) player_load($pa);
if(!$pd['type']) player_load($pd);
//刷新界面状态 //刷新界面状态
global $n_iconImg,$n_type,$n_name,$n_gd,$n_sNo,$n_icon,$n_hp,$n_mhp,$n_sp,$n_msp,$n_rage,$n_wep,$n_wepk,$n_wepe,$n_lvl,$n_pose,$n_tactic,$n_inf,$n_wep_words,$n_wepk_words; global $n_iconImg,$n_type,$n_name,$n_gd,$n_sNo,$n_icon,$n_hp,$n_mhp,$n_sp,$n_msp,$n_rage,$n_wep,$n_wepk,$n_wepe,$n_lvl,$n_pose,$n_tactic,$n_inf,$n_wep_words,$n_wepk_words;
global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf; global $w_type,$w_name,$w_gd,$w_sNo,$w_icon,$w_hp,$w_mhp,$w_wep,$w_wepk,$w_wepe,$w_lvl,$w_pose,$w_tactic,$w_inf;
......
...@@ -91,7 +91,8 @@ function death($death, $kname = '', $ktype = 0, $annex = '') { ...@@ -91,7 +91,8 @@ function death($death, $kname = '', $ktype = 0, $annex = '') {
$deathtime = $now; $deathtime = $now;
$result = $db->query("SELECT nick FROM {$tablepre}players WHERE name = '$kname' AND type = '$type'"); $result = $db->query("SELECT nick FROM {$tablepre}players WHERE name = '$kname' AND type = '$type'");
$knick = $db->result($result, 0); $knick = $db->result($result, 0);
addnews ( $now, 'death' . $state, $name, $type, $knick.' '.$kname, $annex, $lastword ); $knname = isset($knick) ? $knick.' '.$kname : $kname;
addnews ( $now, 'death' . $state, $name, $type, $knname, $annex, $lastword );
//$alivenum = $db->result($db->query("SELECT COUNT(*) FROM {$tablepre}players WHERE hp>0 AND type=0"), 0); //$alivenum = $db->result($db->query("SELECT COUNT(*) FROM {$tablepre}players WHERE hp>0 AND type=0"), 0);
if ($type==0 && $club==99 && ($death=="N" || $death=="P" || $death=="K" || $death=="G" || $death=="C" || $death=="D" || $death=="F" || $death=="J" || $death=="trap")) if ($type==0 && $club==99 && ($death=="N" || $death=="P" || $death=="K" || $death=="G" || $death=="C" || $death=="D" || $death=="F" || $death=="J" || $death=="trap"))
......
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