Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
phpdts
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nemo Ma
phpdts
Commits
704ed5b1
Commit
704ed5b1
authored
Jan 21, 2023
by
Nemo Ma
Committed by
GitHub
Jan 21, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8 from hikawiier/waaagh
update & fix
parents
24e95ca6
d5bdd4f2
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1770 additions
and
147 deletions
+1770
-147
chat.php
chat.php
+2
-0
command.php
command.php
+20
-2
gamedata/cache/elementmix_1.php
gamedata/cache/elementmix_1.php
+30
-16
gamedata/cache/npc_1.php
gamedata/cache/npc_1.php
+5
-5
gamedata/sql/players.sql
gamedata/sql/players.sql
+1
-2
include/game.func.php
include/game.func.php
+146
-16
include/game/elementmix.func.php
include/game/elementmix.func.php
+104
-92
include/game/item.func.php
include/game/item.func.php
+22
-9
include/game/revcombat.func.php
include/game/revcombat.func.php
+1066
-0
include/global.func.php
include/global.func.php
+87
-0
include/state.func.php
include/state.func.php
+2
-1
templates/default/battle.htm
templates/default/battle.htm
+4
-4
templates/default/revbattle.htm
templates/default/revbattle.htm
+278
-0
templates/default/revbattleresult.htm
templates/default/revbattleresult.htm
+3
-0
No files found.
chat.php
View file @
704ed5b1
...
...
@@ -10,6 +10,8 @@ if(!$cuser || !defined('IN_GAME')) {
}
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
)
{
$result
=
$db
->
query
(
"SELECT groupid FROM
{
$tablepre
}
users WHERE username='
$cuser
'"
);
$groupid
=
$db
->
result
(
$result
);
...
...
command.php
View file @
704ed5b1
...
...
@@ -98,7 +98,7 @@ if($hp > 0){
$mode
=
'command'
;
}
else
{
//进入指令判断
if
(
$mode
!==
'combat'
&&
$mode
!==
'corpse'
&&
strpos
(
$action
,
'pacorpse'
)
===
false
&&
$mode
!==
'senditem'
){
if
(
$mode
!==
'combat'
&&
$mode
!==
'
revcombat'
&&
$mode
!==
'
corpse'
&&
strpos
(
$action
,
'pacorpse'
)
===
false
&&
$mode
!==
'senditem'
){
$action
=
''
;
}
if
(
$command
==
'menu'
)
{
...
...
@@ -308,7 +308,7 @@ if($hp > 0){
{
global
$
{
'element'
.
$e_key
};
$m_e_key
=
$e_key
+
1
;
//这样就不用污染原本的js了
$
{
'emitm'
.
$e_key
.
'_num'
}
=
round
(
$
{
'emitm'
.
$e_key
.
'_num'
});
if
(
isset
(
$
{
'emitm'
.
$e_key
.
'_num'
}))
$
{
'emitm'
.
$e_key
.
'_num'
}
=
round
(
$
{
'emitm'
.
$e_key
.
'_num'
});
if
(
$
{
'mitm'
.
$m_e_key
}
>=
0
&&
$
{
'element'
.
$e_key
}
&&
$
{
'emitm'
.
$e_key
.
'_num'
}
>
0
&&
$
{
'emitm'
.
$e_key
.
'_num'
}
<=
$
{
'element'
.
$e_key
})
{
//打入参与合成的元素编号与数量
...
...
@@ -405,6 +405,24 @@ if($hp > 0){
}
elseif
(
$mode
==
'combat'
)
{
include_once
GAME_ROOT
.
'./include/game/combat.func.php'
;
combat
(
1
,
$command
);
}
elseif
(
$mode
==
'revcombat'
){
//NPC vs NPC:
if
(
$command
==
'enter'
&&
(
strpos
(
$action
,
'corpse'
)
===
0
||
strpos
(
$action
,
'pacorpse'
)
===
0
))
{
$cid
=
strpos
(
$action
,
'corpse'
)
===
0
?
str_replace
(
'corpse'
,
''
,
$action
)
:
str_replace
(
'pacorpse'
,
''
,
$action
);
if
(
$cid
)
{
global
$db
,
$tablepre
;
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
players WHERE pid='
$cid
' AND hp=0"
);
if
(
$db
->
num_rows
(
$result
)
>
0
)
{
$edata
=
$db
->
fetch_array
(
$result
);
extract
(
$edata
,
EXTR_PREFIX_ALL
,
'w'
);
include_once
GAME_ROOT
.
'./include/game/battle.func.php'
;
findcorpse
(
$edata
);
}
}
}
}
elseif
(
$mode
==
'rest'
)
{
include_once
GAME_ROOT
.
'./include/state.func.php'
;
rest
(
$command
);
...
...
gamedata/cache/elementmix_1.php
View file @
704ed5b1
...
...
@@ -48,6 +48,8 @@
'十字发卡'
=>
'r_4-1'
,
//分解琉璃血 获得随机配方_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
=>
110
),
//昼闪闪+100
...
...
@@ -57,6 +59,8 @@
'树叶'
=>
Array
(
3
=>
88
),
//郁萌萌+88
'毒药'
=>
Array
(
5
=>
21
),
//夜静静+21
'电池'
=>
Array
(
0
=>
15
,
4
=>
17
),
//亮晶晶+15、昼闪闪+17
'手机'
=>
Array
(
0
=>
20
,),
'笔记本电脑'
=>
Array
(
4
=>
20
,),
'バカ⑨制冰块'
=>
Array
(
2
=>
19
,
5
=>
21
),
//冷冰冰+19、夜静静+21
);
//拆解【特定道具】(关键词匹配,顺序越靠前优先级越高) 固定会获得的元素、数量
...
...
@@ -196,6 +200,8 @@
(
//子弹杯里伏特加加冰 兑小可可乐
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份
Array
(
'stuff'
=>
Array
(
0
=>
1
,
1
=>
1
,
2
=>
1
,
3
=>
1
,
4
=>
1
,
5
=>
1
,),
'result'
=>
Array
(
'Untainted Glory'
,
'A'
,
1
,
1
,
'Z'
),),
//仪水镜:投入全种类元素各7份
...
...
@@ -235,6 +241,8 @@
Array
(
'stuff'
=>
Array
(
'HH'
,
'HS'
),
'result'
=>
'HB'
,
'obbs'
=>
77
,),
//回命+回体=命体回复
Array
(
'stuff'
=>
Array
(
'HH'
,
'WF'
),
'result'
=>
'HM'
,
'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%概率)
//我认为这里应该有一个配方 可以合出有毒补给或者地雷(
);
...
...
@@ -242,21 +250,21 @@
$submix_list
=
array
(
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
(
'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('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('w','i'),'result'=>'d','obbs'=>Array('default'=>30,'WD'=>98,'WDG'=>75,'WDF'=>75),), //音+冻=爆炸
//冴冴来发挥奇思妙想吧
);
//随机的次要特征组合配方 注意:指定属性(sk_*)一定要放到最前面
//可能会生成重复配方,但是也无所谓~
$random_submix_list
=
Array
(
//连击:随机1个价值在
10以上,1个价值在
20以上,1个价值在30以上的次要特征
Array
(
'stuff'
=>
Array
(
0
=>
'v_
10'
,
1
=>
'v_20'
,
2
=>
'v_30'
),
'result'
=>
'r'
,
'obbs'
=>
50
),
//连击:随机1个价值在20以上,1个价值在30以上的次要特征
Array
(
'stuff'
=>
Array
(
0
=>
'v_
20'
,
1
=>
'v_30'
),
'result'
=>
'r'
,
'obbs'
=>
33
),
//冲击:随机1个价值在20以上特征+1个随机“攻击”标签特征
Array
(
'stuff'
=>
Array
(
0
=>
'tags_W'
,
1
=>
'v_20'
),
'result'
=>
'N'
,
'obbs'
=>
50
),
//贯穿:重击辅助+随机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个随机“防御”标签特征
Array
(
'stuff'
=>
Array
(
0
=>
'v_30'
,
1
=>
'tags_D'
,
2
=>
'tags_D'
),
'result'
=>
'a'
,
'obbs'
=>
50
),
//全系防御:随机2个价值在30以上的次要特征+1个随机“防御”标签特征
...
...
@@ -268,7 +276,7 @@
//合成过程中随机产生的东西
$emix_tips_arr
=
Array
(
'天然'
,
'喜悦'
,
'灵感'
,
'奇迹'
,
'爱'
,
'期待'
,
'愤怒'
,
'悲伤'
,
'乐子'
,
'苦闷'
,
'既视感'
,
'疯狂'
,
'幸运'
,
'RP'
,
'罪业'
);
//括在名字外围的符号
$emix_name_brackets_arr
=
Array
(
'☆+☆'
,
'★+★'
,
'〖+〗'
,
'【+】'
,
'『+』'
,
'「+」'
,
'
《+》'
,
'○+○'
,
'●+●
'
);
$emix_name_brackets_arr
=
Array
(
'☆+☆'
,
'★+★'
,
'〖+〗'
,
'【+】'
,
'『+』'
,
'「+」'
,
'
✦+✦'
,
'☾+☽'
,
'☼+☼
'
);
//修饰前缀,由主元素决定,有多个主元素时随机抽取。主元素组合成功时再抽取通用前缀。
$emix_name_prefix_arr
=
Array
(
...
...
@@ -283,13 +291,13 @@
//元词缀,随便挑一个非主元素的
$emix_name_meta_arr
=
Array
(
0
=>
Array
(
'乱序之'
,
'宝石纹'
,
'镭射型'
,
'镜面纹'
,
'藏书'
,
'晶化'
,
'化合型'
,
'糖浆'
,
'石纹'
,
'杂糅'
,
'透明纹'
),
//'亮晶晶'
1
=>
Array
(
'燃素之'
,
'篝火之'
,
'黄昏之'
,
'晌午'
,
'凤凰
型'
,
'猩红之'
,
'暖石'
,
'强袭型'
,
'破坏型'
,
'苹果制'
,
'血纹
'
),
//'暖洋洋'
0
=>
Array
(
'乱序之'
,
'宝石纹'
,
'镭射型'
,
'镜面纹'
,
'藏书'
,
'晶化'
,
'化合型'
,
'糖浆'
,
'石纹'
,
'杂糅'
,
'透明纹'
,
'印花'
,
'蕾丝缀'
,
'简约'
),
//'亮晶晶'
1
=>
Array
(
'燃素之'
,
'篝火之'
,
'黄昏之'
,
'晌午'
,
'凤凰
'
,
'猩红'
,
'暖石'
,
'强袭型'
,
'破坏型'
,
'苹果'
,
'血纹'
,
'酒红
'
),
//'暖洋洋'
2
=>
Array
(
'迅捷化'
,
'鱼纹'
,
'操弄之'
,
'碎心'
,
'旁观之'
,
'路人之'
,
'狡黠之'
,
'凛风之'
,
'北极星'
,
'雾之'
,
'魔咒'
,
'激流之'
),
//'冷冰冰'
3
=>
Array
(
'生命之'
,
'蔷薇纹'
,
'根须'
,
'咖啡'
,
'妖精'
,
'吱吱乱叫之'
,
'生姜'
,
'拿铁'
,
'叶形纹'
,
'风化'
,
'仿制'
,
'纺锤状'
),
//'郁萌萌'
4
=>
Array
(
'启示之'
,
'神之'
,
'王国制'
,
'旭日之'
,
'英雄之'
,
'荣光之'
,
'灯笼状'
,
'萤火之'
,
'
神父之'
,
'麻将'
,
'骑士之
'
),
//'昼闪闪'
5
=>
Array
(
'怪异化'
,
'黑洞之'
,
'视界之'
,
'牧人羊
型'
,
'往事之'
,
'循环之'
,
'吊诡之'
,
'小鬼之'
,
'刻奇之'
,
'五芒星'
,
'爬行
'
),
//'夜静静'
6
=>
Array
(
'空白
之'
,
'留声型'
,
'映像型'
,
'回响型'
,
'气动型'
,
'姐妹之'
,
'差分机'
,
'飞艇型'
,
'纸制'
,
'彩玻璃制
'
,
'以太制'
,
'黄铜制'
,
'贤者之'
),
//拓展1
4
=>
Array
(
'启示之'
,
'神之'
,
'王国制'
,
'旭日之'
,
'英雄之'
,
'荣光之'
,
'灯笼状'
,
'萤火之'
,
'
教条'
,
'麻将'
,
'骑士之'
,
'亮片
'
),
//'昼闪闪'
5
=>
Array
(
'怪异化'
,
'黑洞之'
,
'视界之'
,
'牧人羊
'
,
'往事之'
,
'循环之'
,
'吊诡之'
,
'小鬼之'
,
'刻奇之'
,
'五芒星'
,
'爬行者
'
),
//'夜静静'
6
=>
Array
(
'空白
'
,
'留声型'
,
'映像型'
,
'回响型'
,
'气动型'
,
'双生之'
,
'差分机'
,
'飞艇型'
,
'纸之'
,
'琉璃
'
,
'以太制'
,
'黄铜制'
,
'贤者之'
),
//拓展1
);
//词尾
$emix_name_tail_arr
=
Array
...
...
@@ -302,10 +310,13 @@
'WD'
=>
Array
(
'炸弹'
,
'地雷'
,
'打击'
,
'此面向敌'
,
'贝蒂'
,
'绳'
,
'陷坑'
,
'抽卡游戏'
,
'短视频'
,
'胜负欲'
,
'这是什么?摸一下'
),
//'爆炸物'
'WF'
=>
Array
(
'符'
,
'手环'
,
'节杖'
,
'触'
,
'法书'
,
'纸人'
,
'信徒'
,
'精神性'
,
'理论'
,
'天赋'
,
'秘录'
,
'蟑螂'
),
//'灵武'
//TODO:复合武器
'D'
=>
Array
(
'物'
,
'加护'
,
'轨迹'
,
'尾巴'
,
'鱼鳞'
,
'灯笼裤'
,
'胖次'
,
'朋友'
,
'匣子'
,
'投影'
,
'力场盾'
,
'假说'
,
'抑制器'
,
'弹药包'
),
//不分类防具
//TODO:身体、手部、头部、足部防具
'H'
=>
Array
(
'糊糊'
,
'杏仁豆腐'
,
'烤鱼面包'
,
'章鱼须'
,
'乌鸡肉'
,
'生海带'
,
'幸运饼干'
,
'长芽土豆'
,
'眼泪'
,
'趣味'
),
//补给
'0'
=>
Array
(
'怪东西'
,
'???'
,
'竟然是它'
,
'■■■'
,
'数据削除'
),
//泛用性词尾
'D'
=>
Array
(
'物'
),
//不分类防具
'DB'
=>
Array
(
'甲'
,
'衣'
,
'装'
,
'翼'
,
'西装'
,
'洋装'
,
'裙'
,
'死库水'
,
'灯笼裤'
,
'胖次'
,
'纸箱'
,
'弹药包'
,
'战甲B'
),
'DH'
=>
Array
(
'盔'
,
'镜'
,
'帽'
,
'风帽'
,
'缎带'
,
'发卡'
,
'护目镜'
,
'投影'
,
'假说'
,
'抑制器'
,
'检测装置'
,
'战甲H'
),
'DA'
=>
Array
(
'盾'
,
'掌'
,
'手套'
,
'朋友'
,
'匣子'
,
'鱼鳞'
,
'力场盾'
,
'鱼竿'
,
'手表'
,
'手环'
,
'镣铐'
,
'命数'
,
'战甲A'
),
'DF'
=>
Array
(
'鞋'
,
'靴'
,
'爪'
,
'加护'
,
'轨迹'
,
'脚步'
,
'飞毯'
,
'马靴'
,
'草鞋'
,
'触手'
,
'尾巴'
,
'滑板'
,
'战甲F'
),
'H'
=>
Array
(
'秘药'
,
'罐头'
,
'糊糊'
,
'杏仁豆腐'
,
'烤鱼面包'
,
'章鱼须'
,
'乌鸡肉'
,
'生海带'
,
'幸运饼干'
,
'长芽土豆'
,
'眼泪'
,
'趣味'
),
//补给
'0'
=>
Array
(
'怪东西'
,
'???'
,
'竟然是它'
,
'■■■'
,
'数据削除'
),
//BUG词尾:没有找到类别的情况下会变成这个
);
/********研究模式配置********/
...
...
@@ -331,5 +342,8 @@
4
=>
'“如果实在不知道该合成什么的话,不妨试试把每种元素都丢1份进去看看。”<br>“说实话我也不知道会发生什么,所以出了事不要怨我啊!”<br>'
,
5
=>
'“据说元素们在变化成具体形状时会发出奇怪的动静……说不定是在用元素语骂人呢?”<br>'
,
6
=>
'“据说要将元素的‘次要特征’附着在物品上时,会产生某种奇特的发酵物的味道。”<br>“其实元素合成的原理和腌咸菜也差不多吧?”<br>'
,
7
=>
'“有种有趣的说法是:‘在数字1-10里,7是最孤独的——因为只有它既不能成为因子、也不能被整除。’”<br>“如果你很闲的话,应该还能找到很多这样的规律。”<br>“或者你也可以试试把每种元素都丢进去7份看看?”<br>'
,
8
=>
'“你有没有试着分解过‘手机’和‘笔记本电脑’?”<br>“虽然不知道为什么这些东西上也会有元素。但寄宿在其上的元素数量与种类似乎是固定的。如果把这些固定的元素重新组合起来的话……?”<br>'
,
9
=>
'“你有没有试过把带有‘生命恢复’与‘体力恢复’特征的元素组合起来?”<br>“嘛,就算没试过,你应该一眼就能看出来会发生什么了。但是如果把它们分别与更有‘攻击性’的元素组合起来的话……?”<br>'
,
);
?>
gamedata/cache/npc_1.php
View file @
704ed5b1
...
...
@@ -2277,27 +2277,27 @@ $npcinfo = array
'lvl'
=>
50
,
'skill'
=>
300
,
'money'
=>
800
,
'arb'
=>
'
<span class="spitem2">巫师袍子</span>
'
,
'arb'
=>
'
巫师袍子
'
,
'arbk'
=>
'DB'
,
'arbe'
=>
1800
,
'arbs'
=>
300
,
'arbsk'
=>
'A'
,
'arh'
=>
'
<span class="spitem2">巫师兜帽</span>
'
,
'arh'
=>
'
巫师兜帽
'
,
'arhk'
=>
'DH'
,
'arhe'
=>
1200
,
'arhs'
=>
300
,
'arhsk'
=>
'DF'
,
'arf'
=>
'
<span class="spitem2">巫师便鞋</span>
'
,
'arf'
=>
'
巫师便鞋
'
,
'arfk'
=>
'DF'
,
'arfe'
=>
1700
,
'arfs'
=>
300
,
'arfsk'
=>
'a'
,
'ara'
=>
'
<span class="spitem2">巫师手套</span>
'
,
'ara'
=>
'
巫师手套
'
,
'arak'
=>
'DA'
,
'arae'
=>
1900
,
'aras'
=>
300
,
'arask'
=>
'H'
,
'art'
=>
'
<span class="spitem2">巫师之力</span>
'
,
'art'
=>
'
巫师之力
'
,
'artk'
=>
'AA'
,
'arte'
=>
1
,
'arts'
=>
33
,
...
...
gamedata/sql/players.sql
View file @
704ed5b1
...
...
@@ -141,8 +141,7 @@ CREATE TABLE bra_players (
gempower
char
(
5
)
not
null
default
'0'
,
gemexp
smallint
unsigned
NOT
NULL
default
'0'
,
gemlvl
tinyint
unsigned
NOT
NULL
default
'0'
,
typls
tinyint
unsigned
NOT
NULL
default
'0'
,
tyowner
varchar
(
30
)
NOT
NULL
default
''
,
clbpara
text
NOT
NULL
,
statusa
int
(
10
)
NOT
NULL
default
'0'
,
statusb
int
(
10
)
NOT
NULL
default
'0'
,
statusc
int
(
10
)
NOT
NULL
default
'0'
,
...
...
include/game.func.php
View file @
704ed5b1
...
...
@@ -4,6 +4,52 @@ if(!defined('IN_GAME')) {
exit
(
'Access Denied'
);
}
//格式化储存player表 可能也是四面的遗产
function
update_db_player_structure
(
$type
=
0
)
{
global
$db
,
$tablepre
,
$checkstr
;
$db_player_structure
=
$db_player_structure_types
=
$tpldata
=
Array
();
$dps_need_update
=
0
;
//判定是否需要更新玩家字段
$dps_file
=
GAME_ROOT
.
'./gamedata/bak/db_player_structure.config.php'
;
$sql_file
=
GAME_ROOT
.
'./gamedata/sql/players.sql'
;
if
(
!
file_exists
(
$dps_file
)
||
filemtime
(
$sql_file
)
>
filemtime
(
$dps_file
)){
$dps_need_update
=
1
;
}
if
(
$dps_need_update
){
//如果要更新,直接新建一个表,不需要依赖已有的players表
$sql
=
file_get_contents
(
$sql_file
);
$sql
=
str_replace
(
"
\r
"
,
"
\n
"
,
str_replace
(
' bra_'
,
' '
.
$tablepre
.
'tmp_'
,
$sql
));
$db
->
queries
(
$sql
);
$result
=
$db
->
query
(
"DESCRIBE
{
$tablepre
}
tmp_players"
);
while
(
$sttdata
=
$db
->
fetch_array
(
$result
))
{
global
$
{
$sttdata
[
'Field'
]};
$db_player_structure
[]
=
$sttdata
[
'Field'
];
$db_player_structure_types
[
$sttdata
[
'Field'
]]
=
$sttdata
[
'Type'
];
//array_push($db_player_structure,$pdata['Field']);
}
$dps_cont
=
str_replace
(
'?>'
,
''
,
str_replace
(
'<?'
,
'<?php'
,
$checkstr
));
$dps_cont
.=
'$db_player_structure = '
.
var_export
(
$db_player_structure
,
1
)
.
";
\r\n
"
.
'$db_player_structure_types = '
.
var_export
(
$db_player_structure_types
,
1
)
.
";
\r\n
?>"
;
writeover
(
$dps_file
,
$dps_cont
);
chmod
(
$dps_file
,
0777
);
}
else
{
//若不需要更新,则直接读文件就好
include
$dps_file
;
}
return
$type
?
$db_player_structure_types
:
$db_player_structure
;
}
//返回一个只有数据库合法字段键名的pdata数组
function
player_format_with_db_structure
(
$data
){
$ndata
=
Array
();
$db_player_structure
=
update_db_player_structure
();
foreach
(
$db_player_structure
as
$key
){
if
(
isset
(
$data
[
$key
]))
{
$ndata
[
$key
]
=
$data
[
$key
];
}
}
return
$ndata
;
}
//将sk转为数组格式 只会转换登记过的属性
function
get_itmsk_array
(
$sk_value
)
{
...
...
@@ -35,7 +81,8 @@ function get_itmsk_strlen($sk_value,$max_length=5)
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_tooltip
,
$itemkinfo_tooltip
,
$itemspkinfo_tooltip
;
...
...
@@ -50,9 +97,24 @@ function parse_itm_desc($n,$t)
break
;
//处理属性
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
][
'class'
]))
$p2
=
"class=
\"
"
.
$itemspkinfo_tooltip
[
$n
][
'class'
]
.
"
\"
"
;
$n
=
$itemspkinfo
[
$n
];
}
break
;
//处理名字
case
$t
==
'm'
:
...
...
@@ -122,6 +184,13 @@ function init_profile(){
$
{
$sk_value
.
'_words'
}
=
''
;
//取我数组斧来
$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
)
{
if
(
!
empty
(
$
{
$sk_value
.
'_words'
}))
...
...
@@ -133,6 +202,7 @@ function init_profile(){
$
{
$sk_value
.
'_words'
}
=
parse_itm_desc
(
$sk
,
'sk'
);
}
}
}
}
else
{
$
{
$sk_value
.
'_words'
}
=
$nospk
;
}
...
...
@@ -233,7 +303,9 @@ function init_profile(){
}
function
init_battle
(
$ismeet
=
0
){
global
$wep
,
$wepk
;
global
$w_type
,
$w_name
,
$w_gd
,
$w_sNo
,
$w_icon
,
$w_lvl
,
$w_rage
,
$w_hp
,
$w_sp
,
$w_mhp
,
$w_msp
,
$w_wep
,
$w_wepk
,
$w_wepe
,
$w_sNoinfo
,
$w_iconImg
,
$w_hpstate
,
$w_spstate
,
$w_ragestate
,
$w_wepestate
,
$w_isdead
,
$hpinfo
,
$spinfo
,
$rageinfo
,
$wepeinfo
,
$fog
,
$typeinfo
,
$sexinfo
,
$infinfo
,
$w_exp
,
$w_upexp
,
$baseexp
,
$w_pose
,
$w_tactic
,
$w_inf
,
$w_infdata
;
global
$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
;
$w_upexp
=
round
((
$w_lvl
*
$baseexp
)
+
((
$w_lvl
+
1
)
*
$baseexp
));
if
(
CURSCRIPT
==
'botservice'
)
...
...
@@ -249,7 +321,6 @@ function init_battle($ismeet = 0){
$w_ragestate
=
"<span class=
\"
red
\"
>
$rageinfo[3]
</span>"
;
$w_isdead
=
true
;
if
(
CURSCRIPT
==
'botservice'
)
echo
"w_dead=1
\n
"
;
}
else
{
if
(
$w_hp
<
$w_mhp
*
0.2
)
{
$w_hpstate
=
"<span class=
\"
red
\"
>
$hpinfo[2]
</span>"
;
...
...
@@ -277,6 +348,38 @@ function init_battle($ismeet = 0){
}
}
if
(
$n_hp
<=
0
)
{
global
$n_hpstate
,
$n_spstate
,
$n_ragestate
,
$n_isdead
;
$n_hpstate
=
"<span class=
\"
red
\"
>
$hpinfo[3]
</span>"
;
$n_spstate
=
"<span class=
\"
red
\"
>
$spinfo[3]
</span>"
;
$n_ragestate
=
"<span class=
\"
red
\"
>
$rageinfo[3]
</span>"
;
$n_isdead
=
true
;
}
elseif
(
isset
(
$n_hp
))
{
global
$n_hpstate
,
$n_spstate
,
$n_ragestate
;
if
(
$n_hp
<
$n_mhp
*
0.2
)
{
$n_hpstate
=
"<span class=
\"
red
\"
>
$hpinfo[2]
</span>"
;
}
elseif
(
$n_hp
<
$n_mhp
*
0.5
)
{
$n_hpstate
=
"<span class=
\"
yellow
\"
>
$hpinfo[1]
</span>"
;
}
else
{
$n_hpstate
=
"<span class=
\"
clan
\"
>
$hpinfo[0]
</span>"
;
}
if
(
$n_sp
<
$n_msp
*
0.2
)
{
$n_spstate
=
"
$spinfo[2]
"
;
}
elseif
(
$n_sp
<
$n_msp
*
0.5
)
{
$n_spstate
=
"
$spinfo[1]
"
;
}
else
{
$n_spstate
=
"
$spinfo[0]
"
;
}
if
(
$n_rage
>=
100
)
{
$n_ragestate
=
"<span class=
\"
red
\"
>
$rageinfo[2]
</span>"
;
}
elseif
(
$n_rage
>=
30
)
{
$n_ragestate
=
"<span class=
\"
yellow
\"
>
$rageinfo[1]
</span>"
;
}
else
{
$n_ragestate
=
"
$rageinfo[0]
"
;
}
}
if
(
$w_wepe
>=
400
)
{
$w_wepestate
=
"
$wepeinfo[3]
"
;
if
(
CURSCRIPT
==
'botservice'
)
echo
"w_wepestate=3
\n
"
;
...
...
@@ -291,7 +394,21 @@ function init_battle($ismeet = 0){
if
(
CURSCRIPT
==
'botservice'
)
echo
"w_wepestate=0
\n
"
;
}
//在战斗界面中加载敌我双方武器tooltip
global
$wep_words
,
$wepk_words
,
$w_wep_words
,
$w_wepk_words
;
$wep_words
=
parse_itm_desc
(
$wep
,
'm'
);
$wepk_words
=
parse_itm_desc
(
$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
))
{
global
$n_wep_words
,
$n_wepk_words
,
$n_iconImg
;
$n_iconImg
=
$n_type
?
'n_'
.
$n_icon
.
'.gif'
:
$n_gd
.
'_'
.
$n_icon
.
'.gif'
;
$n_wep_words
=
parse_itm_desc
(
$n_wep
,
'm'
);
$n_wepk_words
=
parse_itm_desc
(
$n_wepk
,
'k'
);
}
$w_sNoinfo
=
"
$typeinfo[$w_type]({$sexinfo[$w_gd]
}
{
$w_sNo
}
号)"
;
$w_i
=
$w_type
>
0
?
'n'
:
$w_gd
;
$w_iconImg
=
$w_i
.
'_'
.
$w_icon
.
'.gif'
;
...
...
@@ -329,6 +446,9 @@ function init_battle($ismeet = 0){
$w_infdata
=
''
;
}
}
else
{
//雾天显示???
$w_wep_words
=
'???'
;
$w_wepk_words
=
'???'
;
$w_sNoinfo
=
'???'
;
$w_iconImg
=
'question.gif'
;
$w_name
=
'???'
;
...
...
@@ -384,8 +504,19 @@ function player_save($data){
global
$db
,
$tablepre
;
if
(
isset
(
$data
[
'pid'
])){
$pid
=
$data
[
'pid'
];
unset
(
$data
[
'pid'
]);
$db
->
array_update
(
"
{
$tablepre
}
players"
,
$data
,
"pid='
$pid
'"
);
$ndata
=
player_format_with_db_structure
(
$data
);
unset
(
$data
);
$db
->
array_update
(
"
{
$tablepre
}
players"
,
$ndata
,
"pid='
$pid
'"
);
}
return
;
}
function
player_load
(
$data
)
{
$ndata
=
player_format_with_db_structure
(
$data
);
foreach
(
$ndata
as
$key
=>
$value
)
{
global
$$key
;
$$key
=
$value
;
}
return
;
}
...
...
@@ -411,5 +542,4 @@ function w_save2(&$data){
}
?>
include/game/elementmix.func.php
View file @
704ed5b1
...
...
@@ -3,9 +3,9 @@
if
(
!
defined
(
'IN_GAME'
))
{
exit
(
'Access Denied'
);
}
//zai jian le suoyoude global
global
$gamecfg
,
$elements_info
;
//这个$gamecfg到底是在哪定义的……
require_once
'./include/game/dice.func.php'
;
include_once
config
(
'elementmix'
,
$gamecfg
);
/********界面交互部分********/
...
...
@@ -26,20 +26,23 @@
}
$log
.=
"<br>"
;
}
//显示元素标签
……卧槽怎么会这样
//显示元素标签
function
print_elements_tags
(
$e_key
)
{
global
$temp_etags
,
$iteminfo
,
$itemspkinfo
;
$tinfo
=
"已了解的特征:"
;
foreach
(
$temp_etags
[
$e_key
]
as
$tk
=>
$tarr
)
{
foreach
(
$tarr
as
$tm
)
$tinfo
.=
$tk
==
'dom'
?
"[主]"
.
$iteminfo
[
$tm
]
.
" "
:
"[次]"
.
$iteminfo
[
$tm
]
.
" "
;
if
(
is_array
(
$tarr
))
{
foreach
(
$tarr
as
$tm
)
$tinfo
.=
$tk
==
'dom'
?
"[主]"
.
$iteminfo
[
$tm
]
.
" "
:
"[次]"
.
$itemspkinfo
[
$tm
]
.
" "
;
}
}
return
$tinfo
;
}
/********拆解元素部分********/
//过滤掉不能拆解的道具(数组) 不能分解返回1 能分解返回0
function
split_to_elements_filter
(
$i
)
{
...
...
@@ -72,11 +75,12 @@
if
(
$edata
)
{
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
))
{
$log
.=
"无法从
{
$edata
[
'name'
]
}
身上提炼元素……为什么呢?<br><br>"
;
$mode
=
'command'
;
return
;
}
//成功从尸体中提炼元素
...
...
@@ -122,6 +126,7 @@
//计算从尸体的装备上能获得的元素种类与数量
$ev_arr
=
get_evalues_by_iarr
(
$corpse_itm_arr
);
//增加对应的元素
$total_addev
=
0
;
foreach
(
$elements_info
as
$e_key
=>
$e_info
)
{
global
$
{
'element'
.
$e_key
};
...
...
@@ -135,14 +140,26 @@
$edata
[
'element'
.
$e_key
]
=
0
;
}
$
{
'element'
.
$e_key
}
+=
$add_ev
;
$total_addev
+=
$add_ev
;
$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
);
//你们也一块去吧!
unset
(
$ev_arr
);
unset
(
$corpse_itm_arr
);
//炼人油败人品
$ep_dice
=
rand
(
0
,
100
);
//$ep_dice = diceroll($total_addev);
$ep_dice
=
rand
(
0
,
$total_addev
);
if
(
$ep_dice
>
70
)
{
$rp
+=
$ep_dice
;
...
...
@@ -150,6 +167,7 @@
}
$log
.=
"<br>"
;
}
$mode
=
'command'
;
return
;
}
...
...
@@ -160,11 +178,12 @@
if
(
isset
(
$iid
))
{
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
};
if
(
!
$
{
'itms'
.
$iid
})
{
$log
.=
"道具来源非法。<br>"
;
$mode
=
'command'
;
return
;
}
//打包
...
...
@@ -183,21 +202,36 @@
$log
.=
"<span class='grey'>"
.
$
{
'itm'
.
$iid
}
.
"化作点点荧光四散开来……</span><br>"
;
//计算能获得的元素种类与数量
$i_arr
=
get_evalues_by_iarr
(
$i_arr
);
//销毁道具
$
{
'itm'
.
$iid
}
=
$
{
'itmk'
.
$iid
}
=
$
{
'itmsk'
.
$iid
}
=
''
;
$
{
'itme'
.
$iid
}
=
$
{
'itms'
.
$iid
}
=
0
;
//增加对应的元素
$total_addev
=
0
;
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
};
$
{
'element'
.
$e_key
}
+=
$ev
;
$total_addev
+=
$ev
;
$log
.=
"获得了
{
$ev
}
份
{
$elements_info
[
$e_key
]
}
!<br>"
;
}
//销毁道具
$
{
'itm'
.
$iid
}
=
$
{
'itmk'
.
$iid
}
=
$
{
'itmsk'
.
$iid
}
=
''
;
$
{
'itme'
.
$iid
}
=
$
{
'itms'
.
$iid
}
=
0
;
//一起一起
}
unset
(
$i_arr
);
//捡垃圾涨功德
$ep_dice
=
rand
(
0
,
100
);
if
(
$ep_dice
>
70
)
//$ep_dice = diceroll($total_addev);
$ep_dice
=
rand
(
0
,
$total_addev
);
if
(
$ep_dice
>
0
)
{
$rp
=
$rp
-
$ep_dice
;
//rp可以为负吗?
...
...
@@ -218,14 +252,15 @@
$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
();
$flip_etags_arr
=
openfile_decode
(
$cache_file
);
//$cache_arr = openfile_decode($cache_file);
include_once
$cache_file
;
//开始计算元素价值
foreach
(
$iarr
as
$i
=>
$t
)
{
//最优先:检查拆解特定道具(全名匹配)时的事件
if
(
$split_itm_fix
[
$t
[
'itm'
]]
)
if
(
isset
(
$split_itm_fix
[
$t
[
'itm'
]])
)
{
unset
(
$ekey
);
unset
(
$ev
);
//处理秘钥道具
...
...
@@ -237,14 +272,14 @@
//返回随机素材
if
(
$e_list
[
1
]
==
'r'
)
{
$ekey
=
array_rand
(
$
flip_etags
_arr
[
'random_emix_list'
][
$e_list
[
0
]][
'stuff'
]);
$ev
=
$
flip_etags
_arr
[
'random_emix_list'
][
$e_list
[
0
]][
'stuff'
][
$ekey
];
$ekey
=
array_rand
(
$
cache
_arr
[
'random_emix_list'
][
$e_list
[
0
]][
'stuff'
]);
$ev
=
$
cache
_arr
[
'random_emix_list'
][
$e_list
[
0
]][
'stuff'
][
$ekey
];
}
//返回指定位置素材 遍历配方 找到它的家
else
{
$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
])
{
...
...
@@ -260,6 +295,13 @@
//润!
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
)
{
$ev_arr
[
$ekey
]
+=
$ev
;
...
...
@@ -300,7 +342,7 @@
//通过道具类别获取价值修正
$k_t
=
$t
[
'itmk'
];
if
(
$split_itmk_r
[
$k_t
]
)
if
(
isset
(
$split_itmk_r
[
$k_t
])
)
{
//存在对应修正 优先获取
$k_ev_r
=
$split_itmk_r
[
$k_t
];
...
...
@@ -310,7 +352,7 @@
//不存在对应修正 先尝试过滤类别
$k_t
=
filter_itemkind
(
$k_t
);
//没有对应修正关系则返回默认类别的分解系数
$k_ev_r
=
$split_itmk_r
[
$k_t
]
?
$split_itmk_r
[
$k_t
]
:
$split_default_itmk_r
;
$k_ev_r
=
isset
(
$split_itmk_r
[
$k_t
])
?
$split_itmk_r
[
$k_t
]
:
$split_default_itmk_r
;
}
//应用价值修正
$base_ev
=
ceil
(
$base_ev
*
$k_ev_r
);
...
...
@@ -318,17 +360,17 @@
//通过道具类别关联元素
$k_t
=
$t
[
'itmk'
];
$k_ekey
=
''
;
if
(
$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
{
//不存在对应元素 先尝试过滤类别
$k_t
=
filter_itemkind
(
$k_t
);
//还是没有对应元素 返回随机一种元素
$k_ekey
=
$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>";
...
...
@@ -342,7 +384,7 @@
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
))
{
$add_ev
=
0
;
...
...
@@ -393,11 +435,9 @@
//自定义效/耐比的阈值:2%~98%
$eitme_r
=
isset
(
$eitme_r
)
?
min
(
98
,
max
(
2
,
$eitme_r
))
:
rand
(
2
,
98
);
$eitme_r
/=
100
;
//echo '【DEBUG】初始化阶段,道具效果系数:'.$eitme_r.'<br>';
//自定义最大效果的阈值:1%~100%
$eitme_max_r
=
isset
(
$eitme_max_r
)
?
min
(
100
,
max
(
1
,
$eitme_max_r
))
:
100
;
$eitme_max_r
/=
100
;
//echo '【DEBUG】初始化阶段,道具效果上限系数:'.$eitme_max_r.'<br>';
//对参与合成的元素按投入数量降序排序,筛出投入数量最多的元素作为主元素
arsort
(
$emlist
);
$log
.=
"从口袋中抓出了:<br>"
;
...
...
@@ -427,7 +467,7 @@
$log
.=
"。<br>你紧张地搓了搓手。<br>合成开始了。<br>"
;
//检查是否存在固定合成
(其实放最顶层也行 放这里只是为了输出上面一段log)
//检查是否存在固定合成
$emix_fix
=
check_in_emix_list
(
$emlist
);
if
(
$emix_fix
)
{
...
...
@@ -444,6 +484,7 @@
$log
.=
"<span class='grey'>…加入了一点
{
$emix_tips_arr
[
array_rand
(
$emix_tips_arr
)]
}
…</span><br>"
;
//掷骰:
//$emix_dice = diceroll(100);
$emix_dice
=
rand
(
1
,
100
);
switch
(
$emix_dice
)
{
...
...
@@ -497,10 +538,16 @@
$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_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
;
$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
,
'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>"
;
//生成道具属性:
...
...
@@ -545,14 +592,13 @@
$emix_itm_prefix
=
array_rand
(
$emix_name_prefix_arr
[
$dom_ekey
]);
$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
=
$emix_name_meta_arr
[
$meta_emlist_id
][
$emix_itm_meta
];
//根据生成的类别获取尾巴词组
$tmp_kind
=
$emix_itmk
;
//过滤掉道具的子类别
$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
(
is_array
(
$tmp_kind
))
...
...
@@ -616,7 +662,6 @@
$max_enum
=
get_emix_itme_max
();
//通过自定义上限系数修正
$max_enum
*=
$emr
;
//echo '【DEBUG】获取实际上限阶段,修正系数:'.$emr.'理论上限:'.$max_enum.'<br>';
//判断投入数量有没有超过理论上限
$max_cost
=
min
(
round
(
$max_enum
),
$total_enum
);
return
$max_cost
;
...
...
@@ -631,7 +676,6 @@
{
if
(
!
array_diff
(
$emlist
,
$elist
[
'stuff'
])
&&
count
(
$emlist
)
==
count
(
$elist
[
'stuff'
]))
{
//echo "【DEBUG】检测到了固定合成{$elist['result'][0]}<br>";
return
$elist
[
'result'
];
}
}
...
...
@@ -641,7 +685,6 @@
{
if
(
!
array_diff
(
$emlist
,
$relist
[
'stuff'
])
&&
count
(
$emlist
)
==
count
(
$relist
[
'stuff'
]))
{
//echo "【DEBUG】检测到了固定随机合成{$relist['result'][0]}<br>";
return
$r_emix_list
[
$rid
][
'result'
];
}
}
...
...
@@ -681,7 +724,8 @@
//直接抄合成匹配逻辑了 有一种野性的美
if
(
!
array_diff
(
$dom_tags
,
$minfo
[
'stuff'
])
&&
!
array_diff
(
$minfo
[
'stuff'
],
$dom_tags
)
&&
count
(
$dom_tags
)
==
count
(
$minfo
[
'stuff'
]))
{
if
(
$minfo
[
'obbs'
]
&&
(
rand
(
1
,
100
)
-
$obbs_fix
)
>
$minfo
[
'obbs'
])
continue
;
//配方为概率合成 掷骰判定没通过 跳过
//if($minfo['obbs'] && (diceroll(100)-$obbs_fix)>$minfo['obbs']) continue;
if
(
$minfo
[
'obbs'
]
&&
(
rand
(
0
,
100
)
-
$obbs_fix
)
>
$minfo
[
'obbs'
])
continue
;
//配方为概率合成 掷骰判定没通过 跳过
$emix_itmk
=
$minfo
[
'result'
];
$mixflag
=
true
;
break
;
...
...
@@ -704,7 +748,6 @@
global
$elements_info
,
$temp_etags
;
global
$split_default_itmsk_fix
,
$split_itmsk_fix
;
//可惜没有诅咒属性了……
$subtags
=
Array
();
//获取元素所有的次要特征
$e_sub_tags
=
$temp_etags
[
$ekey
][
'sub'
];
...
...
@@ -762,8 +805,7 @@
$submix_list
=
array_merge_recursive
(
$r_submix_list
,
$submix_list
);
foreach
(
$submix_list
as
$minfo
)
{
//属性组合就不要求数量一一对应了 先到先得
//逻辑:匹配素材数量>=要求素材数量 感觉有点问题 但又好像没有问题 暂时就这么搞!<-傻了吧 没做重复属性判断
//属性组合逻辑:匹配素材数量>=要求素材数量 && 不能重复生成属性
if
(
count
(
array_intersect
(
$sub_tags
,
$minfo
[
'stuff'
]))
>=
count
(
$minfo
[
'stuff'
])
&&
!
in_array
(
$minfo
[
'result'
],
$sk_value
))
{
//配方为概率合成 掷骰判定
...
...
@@ -778,7 +820,8 @@
{
$obbs
=
$minfo
[
'obbs'
];
}
if
(
rand
(
1
,
100
)
>
$minfo
[
'obbs'
])
continue
;
//if(diceroll(100)>$minfo['obbs']) continue;
if
(
rand
(
0
,
100
)
>
$minfo
[
'obbs'
])
continue
;
}
//配对成功!消除素材特征
foreach
(
$minfo
[
'stuff'
]
as
$m_sub_tags
)
...
...
@@ -797,13 +840,12 @@
$kind
=
substr
(
$kind
,
0
,
1
);
//只用道具类别的首字母判断……这个叫什么?大类!
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
)
...
...
@@ -893,16 +935,16 @@
{
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
();
$cache_file
=
openfile_decode
(
$cache_file
)
;
include_once
$cache_file
;
//用已生成的随机配方替换模板配方
if
(
$type
==
0
)
{
$list
=
$random_emix_list
;
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
...
...
@@ -910,24 +952,23 @@
$list
=
$random_submix_list
;
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
;
}
//生成元素合成相关的临时配置文件 只在有人用了对应社团卡时执行一次
//如果不想用这个的话 也可以直接调用对应的数组生成模块
//研究模式随机生成的一些东西也会以这种方式储存
//生成元素合成相关的临时配置文件,只在有人用了对应社团卡时执行一次
//现在直接用更优雅的方式生成php格式文件,可以直接include进来。
function
create_emix_cache_file
()
{
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
))
{
//检查本局游戏是不是已经生成过配置文件了
$check
=
openfile_decode
(
$file
)
;
if
(
$c
heck
[
'gamenum'
]
==
$gamenum
)
include_once
$file
;
if
(
$c
ache_arr
[
'gamenum'
]
==
$gamenum
)
{
return
;
$log
.=
"【DEBUG】如果你看到这条信息,请转告管理员:“调试完记得把注释去掉!”<br>"
;
...
...
@@ -945,7 +986,10 @@
//加入本局游戏编号
$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>";
return
;
}
...
...
@@ -996,8 +1040,6 @@
return
$tmp_arr
;
}
//数组化itmsk 可能是四面的遗产 //和还原itmsk为字符串一起挪到game.func.php里了
//过滤杂项道具类别(可以作为一个通用型函数) //我好傻
function
filter_itemkind
(
$kind
,
$check_dualwep
=
0
)
{
...
...
@@ -1011,7 +1053,7 @@
$kind
=
Array
(
$w1
,
$w2
);
return
$kind
;
}
//过滤道具类别
foreach
(
$iteminfo
as
$info_key
=>
$info_value
)
{
if
(
strpos
(
$kind
,
$info_key
)
===
0
)
...
...
@@ -1022,34 +1064,4 @@
}
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
include/game/item.func.php
View file @
704ed5b1
...
...
@@ -1815,7 +1815,7 @@ function itemuse($itmn) {
$club
=
20
;
//获取初始元素与第一条配方
$dice
=
rand
(
0
,
5
);
global
$
{
'element'
.
$dice
};
global
$
{
'element'
.
$dice
}
,
$clbpara
;
$
{
'element'
.
$dice
}
+=
200
+
$dice
;
//初始化元素合成缓存文件
include_once
GAME_ROOT
.
'./include/game/elementmix.func.php'
;
...
...
@@ -1904,6 +1904,15 @@ function itemuse($itmn) {
$itm
=
$itmk
=
$itmsk
=
''
;
$itme
=
$itms
=
0
;
//-----------------------//
}
elseif
(
$itm
==
'电子蛐蛐测试装置'
)
{
//这是一个测试用道具 设置好$nid(先手者pid)和$eid(挨打者pid)后可以看这两个人打架 把其中一个设置成自己的pid就可以亲自下场 //自己下场现在有BUG
//$nid:先手攻击者的pid;$eid:挨打者的pid
//如果$nid打死了$eid的话,尸体会由你来摸,这不是BUG,是一个暂时缺少条件判断的特性。
global
$pid
;
$nid
=
$pid
;
$eid
=
2
;
include_once
GAME_ROOT
.
'./include/game/revcombat.func.php'
;
rev_combat_prepare
(
$nid
,
$eid
);
return
;
}
elseif
(
$itm
==
'提示纸条A'
)
{
$log
.=
'你读着纸条上的内容:<br>“执行官其实都是幻影,那个红暮的身上应该有召唤幻影的玩意。”<br>“用那个东西然后打倒幻影的话能用游戏解除钥匙出去吧。”<br>'
;
}
elseif
(
$itm
==
'提示纸条B'
)
{
...
...
@@ -2061,19 +2070,23 @@ function itemuse($itmn) {
include_once
config
(
'elementmix'
,
$gamecfg
);
$log
.=
$emix_slip
[
array_rand
(
$emix_slip
)];
//除商店纸条外:提供一条元素特征(TODO)、或一条固定配方、或一条随机属性组合
if
(
!
preg_match
(
'/(A|B|C|D)/'
,
$itm
))
{
$log
.=
"“附:见面有缘,再送你一条提示吧:”<br>"
;
/*** TODO:把这一块封装进一个函数里 ***/
$log
.=
"<span class='yellow'>“将带有"
;
$log
.=
"<br><span class='yellow'>附:见面有缘,再送你一条提示吧:<br>“将带有"
;
global
$itemspkinfo
;
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
);
foreach
(
$s_list
[
$s_id
][
'stuff'
]
as
$skey
)
$log
.=
"【
$itemspkinfo[$skey]
】"
;
$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>"
;
$itms
--
;
...
...
include/game/revcombat.func.php
0 → 100644
View file @
704ed5b1
<?php
if
(
!
defined
(
'IN_GAME'
))
{
exit
(
'Access Denied'
);
}
include_once
GAME_ROOT
.
'./include/game/clubskills.func.php'
;
include_once
GAME_ROOT
.
'./include/game/combat.func.php'
;
include_once
GAME_ROOT
.
'./include/game/attr.func.php'
;
/*这个文件里的函数是供npc与npc战斗使用的。
但是只要提供了正确的pa和pd当然也可以给玩家使用。 //哈哈!不行!玩家数据存不回去!傻了吧! //搞定了! //没搞定啊!!不能100%保证不出怪问题,所以还是不要给玩家使用
本质上就是一套整理过的原版战斗函数。*/
//战斗准备流程:通过传入的战斗双方ID初始化
function
rev_combat_prepare
(
$nid
,
$eid
)
{
global
$db
,
$tablepre
,
$log
,
$mode
,
$main
,
$cmd
,
$battle_title
;
global
$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
;
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
;
//初始化进攻方数据
if
(
$nid
)
{
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
players WHERE pid='
$nid
' AND hp>0"
);
if
(
$db
->
num_rows
(
$result
)
>
0
)
{
$ndata
=
$db
->
fetch_array
(
$result
);
extract
(
$ndata
,
EXTR_PREFIX_ALL
,
'n'
);
}
}
//初始化防守方数据
if
(
$eid
)
{
$result
=
$db
->
query
(
"SELECT * FROM
{
$tablepre
}
players WHERE pid='
$eid
' AND hp>0"
);
if
(
$db
->
num_rows
(
$result
)
>
0
)
{
$edata
=
$db
->
fetch_array
(
$result
);
extract
(
$edata
,
EXTR_PREFIX_ALL
,
'w'
);
}
}
if
(
$ndata
&&
$edata
&&
$nid
!=
$eid
)
{
init_battle
(
1
);
$main
=
'revbattle'
;
//进入战斗流程
rev_combat
(
$ndata
,
$edata
,
1
);
include
template
(
'revbattleresult'
);
$cmd
=
ob_get_contents
();
ob_clean
();
}
else
{
$log
.=
"初始化战斗对象失败,可能是攻方/守方已死,或传入的NPCID非法。<br>"
;
}
return
;
}
//战斗流程:pa(攻方)pd(守方)active(1=玩家为pa;0=玩家为pd)
function
rev_combat
(
&
$pa
,
&
$pd
,
$active
,
$wep_kind
=
''
)
{
global
$log
,
$mode
,
$main
,
$cmd
,
$action
,
$db
,
$tablepre
,
$now
,
$nosta
,
$hdamage
,
$hplayer
;
global
$infinfo
,
$plsinfo
,
$battle_title
,
$message
;
$battle_title
=
'战斗发生'
;
if
(
!
$wep_kind
)
{
$w1
=
substr
(
$pa
[
'wepk'
],
1
,
1
);
$w2
=
substr
(
$pa
[
'wepk'
],
2
,
1
);
if
(((
$w1
==
'G'
)
||
(
$w1
==
'J'
))
&&
(
$pa
[
'weps'
]
==
$nosta
))
$wep_kind
=
$w2
?
$w2
:
'P'
;
else
$wep_kind
=
$w1
;
}
elseif
(
strpos
(
$pa
[
'wepk'
],
$wep_kind
)
===
false
&&
$wep_kind
!=
'back'
)
{
$wep_kind
=
substr
(
$pa
[
'wepk'
],
1
,
1
);
}
$pa
[
'wep_kind'
]
=
$wep_kind
;
//战斗发起者是玩家时才会判断的一些事件
if
(
!
$pa
[
'type'
]
&&
$active
)
{
if
(
$pa
[
'pls'
]
!=
$pd
[
'pls'
])
{
$log
.=
"<span class=
\"
yellow
\"
>"
.
$pd
[
'name'
]
.
"</span>已经离开了<span class=
\"
yellow
\"
>
{
$plsinfo
[
$pa
[
'pls'
]]
}
</span>。<br>"
;
$action
=
''
;
$mode
=
'command'
;
return
;
}
if
(
$pd
[
'hp'
]
<=
0
)
{
$log
.=
"<span class=
\"
red
\"
>"
.
$pd
[
'name'
]
.
"</span>已经死亡,不能被攻击。<br>"
;
return
;
}
if
(
$message
)
{
$log
.=
"<span class=
\"
lime
\"
>你对
{
$pd
[
'name'
]
}
大喊:
{
$message
}
</span><br>"
;
if
(
!
$pd
[
'type'
])
{
$w_log
=
"<span class=
\"
lime
\"
>
{
$name
}
对你大喊:
{
$message
}
</span><br>"
;
logsave
(
$pd
[
'pid'
],
$now
,
$w_log
,
'c'
);
}
}
}
if
(
$active
)
{
$log
.=
"你向<span class=
\"
red
\"
>
{
$pd
[
'name'
]
}
</span>发起了攻击!<br>"
;
}
else
{
$log
.=
"<span class=
\"
red
\"
>
{
$pa
[
'name'
]
}
</span>突然向你袭来!<br>"
;
}
//战斗发起者是NPC时进行的判断
if
(
$pa
[
'type'
])
{
//$log .= npc_chat ($pa['type'],$pa['name'],'attack');
//npc_changewep(); TODO
}
//打击流程
$att_dmg
=
rev_attack
(
$pa
,
$pd
,
$active
);
//暴毙流程
if
(
$pa
[
'ggflag'
])
{
unset
(
$pa
[
'ggflag'
]);
return
;
}
//打击效果结算
if
(
isset
(
$att_dmg
))
{
//扣血
$pd
[
'hp'
]
=
max
(
0
,
$pd
[
'hp'
]
-
$att_dmg
);
//判断是否触发击杀或复活
$att_result
=
rev_combat_result
(
$pa
,
$pd
,
$active
);
}
//判断是否进入反击流程 把!$att_result去掉可以实现复活后反击 很酷吧!
if
((
$pd
[
'hp'
]
>
0
)
&&
(
$pd
[
'pose'
]
!=
5
)
&&
(
$pd
[
'tactic'
]
!=
4
)
&&
!
$att_result
)
{
global
$rangeinfo
;
$w_w1
=
substr
(
$pd
[
'wepk'
],
1
,
1
);
$w_w2
=
substr
(
$pd
[
'wepk'
],
2
,
1
);
if
(((
$w_w1
==
'G'
)
||
(
$w_w1
==
'J'
))
&&
(
$pd
[
'weps'
]
==
$nosta
))
{
$pd
[
'wep_kind'
]
=
$w_w2
?
$w_w2
:
'P'
;
}
else
{
$pd
[
'wep_kind'
]
=
$w_w1
;
}
//echo "【DEBUG】{$pd['name']}的攻击方式是{$pd['wep_kind']}<br>";
$d_wep_temp
=
$pd
[
'wep'
];
if
(
$rangeinfo
[
$pa
[
'wep_kind'
]]
<=
$rangeinfo
[
$pd
[
'wep_kind'
]]
&&
$rangeinfo
[
$pa
[
'wep_kind'
]]
!==
0
)
{
$counter
=
get_counter
(
$pd
[
'wep_kind'
],
$pd
[
'tactic'
],
$pd
[
'club'
],
$pd
[
'inf'
]);
$counter
*=
rev_get_clubskill_bonus_counter
(
$pd
[
'club'
],
$pd
[
'skills'
],
$pd
,
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
);
$counter_dice
=
rand
(
0
,
99
);
if
(
$counter_dice
<
$counter
)
{
$log
.=
"<span class=
\"
red
\"
>
{
$pd
[
'name'
]
}
的反击!</span><br>"
;
$log
.=
npc_chat
(
$pd
[
'type'
],
$pd
[
'name'
],
'defend'
);
//反击打击实行
$def_dmg
=
rev_attack
(
$pd
,
$pa
,
1
);
}
else
{
$log
.=
npc_chat
(
$pd
[
'type'
],
$pd
[
'name'
],
'escape'
);
$log
.=
"<span class=
\"
red
\"
>
{
$pd
[
'name'
]
}
处于无法反击的状态,逃跑了!</span><br>"
;
}
}
else
{
$log
.=
npc_chat
(
$pd
[
'type'
],
$pd
[
'name'
],
'cannot'
);
$log
.=
"<span class=
\"
red
\"
>
{
$pd
[
'name'
]
}
攻击范围不足,不能反击,逃跑了!</span><br>"
;
}
}
elseif
(
$pd
[
'hp'
]
>
0
&&
!
$att_result
)
{
$log
.=
"<span class=
\"
red
\"
>
{
$pd
[
'name'
]
}
逃跑了!</span><br>"
;
}
//反击效果结算
if
(
isset
(
$def_dmg
))
{
//扣血
$pa
[
'hp'
]
=
max
(
0
,
$pa
[
'hp'
]
-
$def_dmg
);
//判断是否触发击杀或复活
$def_result
=
rev_combat_result
(
$pd
,
$pa
,
1
-
$active
);
}
//检查是否更新最高伤害情报
$att_dmg
=
$att_dmg
?
$att_dmg
:
0
;
$def_dmg
=
$def_dmg
?
$def_dmg
:
0
;
if
((
$att_dmg
>
$hdamage
)
&&
(
$att_dmg
>=
$def_dmg
)
&&
(
!
$pa
[
'type'
]))
{
$hdamage
=
$att_dmg
;
$hplayer
=
$pa
[
'name'
];
save_combatinfo
();
}
elseif
((
$def_dmg
>
$hdamage
)
&&
(
!
$pd
[
'type'
]))
{
$hdamage
=
$def_dmg
;
$hplayer
=
$pd
[
'name'
];
save_combatinfo
();
}
//如果战斗中出现了死人 更新action标记
if
(
$active
)
{
if
(
$pd
[
'hp'
]
<=
0
&&
$pa
[
'hp'
]
>
0
)
{
$pa
[
'action'
]
=
'corpse'
.
$pd
[
'pid'
];
}
if
(
$pa
[
'hp'
]
<=
0
&&
$pd
[
'hp'
]
>
0
&&
$pd
[
'action'
]
==
''
&&
$pd
[
'type'
]
==
0
)
{
$pd
[
'action'
]
=
'pacorpse'
.
$pa
[
'pid'
];
}
}
else
{
if
(
$pd
[
'hp'
]
<=
0
&&
$pa
[
'hp'
]
>
0
&&
$pa
[
'action'
]
==
''
&&
$pa
[
'type'
]
==
0
)
{
$pa
[
'action'
]
=
'pacorpse'
.
$pd
[
'pid'
];
}
if
(
$pa
[
'hp'
]
<=
0
&&
$pd
[
'hp'
]
>
0
)
{
$pd
[
'action'
]
=
'corpse'
.
$pa
[
'pid'
];
}
}
$log
=
str_replace
(
'你'
,
$pa
[
'name'
],
$log
);
//偷懒做法 如果NPC的台词里有“你”出现的话 会变得很怪23333
//保存两个人的状态
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
$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
;
extract
(
$pa
,
EXTR_PREFIX_ALL
,
'n'
);
extract
(
$pd
,
EXTR_PREFIX_ALL
,
'w'
);
$main
=
'revbattle'
;
init_battle
(
1
);
//条件TODO:由玩家控制的,或者与玩家处于盟友状态的NPC完成了击杀,给玩家传一个摸尸体标记,这样玩家点了确定之后就可以去摸尸体了
global
$action
;
$action
=
$pa
[
'action'
];
//毁尸灭迹
unset
(
$pa
);
unset
(
$pd
);
return
;
}
//打击流程:pa(打击方);pd(被打方);active(1=pa主动攻击;0=pa发起反击)
function
rev_attack
(
&
$pa
,
&
$pd
,
$active
=
1
)
{
//通用
global
$now
,
$nosta
,
$log
,
$infobbs
,
$infinfo
,
$attinfo
,
$skillinfo
,
$wepimprate
,
$specialrate
;
global
$db
,
$tablepre
;
//枪托攻击标识
$is_wpg
=
false
;
//武器效果值修正
$watt
=-
1
;
if
(((
strpos
(
$pa
[
'wepk'
],
'G'
)
==
1
)
||
(
strpos
(
$pa
[
'wepk'
],
'J'
)
==
1
))
&&
(
$pa
[
'weps'
]
==
$nosta
))
{
if
((
$pa
[
'wep_kind'
]
==
'G'
)
||
(
$pa
[
'wep_kind'
]
==
'P'
)
||
(
$pa
[
'wep_kind'
]
==
'J'
))
{
$pa
[
'wep_kind'
]
=
'P'
;
$is_wpg
=
true
;
$watt
=
round
(
$pa
[
'wepe'
]
/
5
);
}
else
{
$watt
=
$pa
[
'wepe'
];
}
}
$log
.=
"
{
$pa
[
'name'
]
}
使用
{
$pa
[
'wep'
]
}
<span class=
\"
yellow
\"
>
{
$attinfo
[
$pa
[
'wep_kind'
]]
}
</span>
{
$pd
[
'name'
]
}
!<br>"
;
$pa
[
'att_key'
]
=
getatkkey
(
$pa
[
'wepsk'
],
$pa
[
'arhsk'
],
$pa
[
'arbsk'
],
$pa
[
'arask'
],
$pa
[
'arfsk'
],
$pa
[
'artsk'
],
$pa
[
'artk'
],
$is_wpg
);
$pd
[
'def_key'
]
=
getdefkey
(
$pd
[
'wepsk'
],
$pd
[
'arhsk'
],
$pd
[
'arbsk'
],
$pd
[
'arask'
],
$pd
[
'arfsk'
],
$pd
[
'artsk'
],
$pd
[
'artk'
]
);
//三抽标识
$mdr
=
$skdr
=
$sldr
=
false
;
if
(
strpos
(
$pa
[
'att_key'
]
.
$pd
[
'def_key'
],
'-'
)
!==
false
){
$mdr
=
true
;}
//精抽
if
(
strpos
(
$pa
[
'att_key'
]
.
$pd
[
'def_key'
],
'*'
)
!==
false
){
$sldr
=
true
;}
//魂抽
if
(
strpos
(
$pa
[
'att_key'
]
.
$pd
[
'def_key'
],
'+'
)
!==
false
){
$skdr
=
true
;}
//技抽
if
(
$mdr
||
$sldr
||
$skdr
){
list
(
$wsk
,
$hsk
,
$bsk
,
$ask
,
$fsk
,
$tsk
,
$tk
)
=
Array
(
$pa
[
'wepsk'
],
$pa
[
'arhsk'
],
$pa
[
'arbsk'
],
$pa
[
'arask'
],
$pa
[
'arfsk'
],
$pa
[
'artsk'
],
$pa
[
'artk'
]);
list
(
$wwsk
,
$whsk
,
$wbsk
,
$wask
,
$wfsk
,
$wtsk
,
$wtk
)
=
Array
(
$pd
[
'wepsk'
],
$pd
[
'arhsk'
],
$pd
[
'arbsk'
],
$pd
[
'arask'
],
$pd
[
'arfsk'
],
$pd
[
'artsk'
],
$pd
[
'artk'
]);
if
(
$mdr
){
$log
.=
"<span class=
\"
yellow
\"
>精神抽取使双方的防具属性全部失效!</span><br>"
;
$hsk
=
$bsk
=
$ask
=
$fsk
=
$whsk
=
$wbsk
=
$wask
=
$wfsk
=
''
;
}
if
(
$sldr
){
$log
.=
"<span class=
\"
yellow
\"
>灵魂抽取使双方的武器和饰物属性全部失效!</span><br>"
;
$wsk
=
$tsk
=
$tk
=
$wwsk
=
$wtsk
=
$wtk
=
''
;
}
if
(
$skdr
){
$log
.=
"<span class=
\"
yellow
\"
>技能抽取使双方的武器熟练度在战斗中大幅下降!</span><br>"
;
}
$pa
[
'att_key'
]
=
getatkkey
(
$wsk
,
$hsk
,
$bsk
,
$ask
,
$fsk
,
$tsk
,
$tk
,
$is_wpg
);
$pd
[
'def_key'
]
=
getdefkey
(
$wwsk
,
$whsk
,
$wbsk
,
$wask
,
$wfsk
,
$wtsk
,
$wtk
);
}
//echo "【DEBUG】pa_att_key={$pa['att_key']},pd_def_key={$pd['def_key']}<br>";
//直死 NPC打NPC 无效果
//真红暮护盾/特效
if
((
$pd
[
'type'
]
==
19
)
&&
(
$pd
[
'name'
]
==
"红暮"
)
&&
(
substr
(
$pa
[
'wepk'
],
0
,
2
)
!=
$pd
[
'wepk'
]))
{
$log
.=
"<span class=
\"
red
\"
>红暮身上的武器投射出了防护罩,轻松挡下了
{
$pa
[
'name'
]
}
的攻击!</span><br>"
;
return
0
;
}
//数据护盾 NPC打NPC
if
(
$pd
[
'artk'
]
==
"AA"
)
{
//主动攻击判定
if
(
$pd
[
'type'
]
!=
0
)
{
//pd是NPC
if
(
$pd
[
'arte'
]
<
100
)
{
$log
.=
"<span class=
\"
red
\"
>对手身上的数据护盾投射出了防护罩,轻松挡下了
{
$pa
[
'name'
]
}
的攻击!</span><br>"
;
$pd
[
'arte'
]
=
$pd
[
'arte'
]
+
$pd
[
'arts'
];
if
(
$pd
[
'arte'
]
>
100
){
$pd
[
'arte'
]
=
100
;}
return
0
;
}
else
{
$log
.=
"<span class=
\"
red
\"
>对手身上的数据护盾失效了!</span><br>"
;
}
}
}
//迷你蜂 - NPC打NPC TODO
//电子狐 - NPC打NPC TODO
//熟练度修正
//$add_skill = &$pa[$skillinfo[$pa['wep_kind']]];
//提醒自己一下:$skillinfo[$pa['wep_kind']]返回的是'wp','wk'...这种熟练名字段,对应熟练度值是$pa[$skillinfo[$pa['wep_kind']]]
if
(
$pa
[
'club'
]
==
18
){
$pa
[
'wep_skill'
]
=
round
(
$pa
[
$skillinfo
[
$pa
[
'wep_kind'
]]]
*
0.7
+
(
$pa
[
'wp'
]
+
$pa
[
'wk'
]
+
$pa
[
'wc'
]
+
$pa
[
'wg'
]
+
$pa
[
'wd'
]
+
$pa
[
'wf'
])
*
0.3
);
}
else
{
$pa
[
'wep_skill'
]
=
$pa
[
$skillinfo
[
$pa
[
'wep_kind'
]]];
}
//三抽修正
if
(
$skdr
)
{
$pa
[
'wep_skill'
]
=
sqrt
(
$pa
[
'wep_skill'
]);
}
//空手武器效果值修正
if
(
$watt
==-
1
)
{
if
(
$pa
[
'wep_kind'
]
==
'N'
)
{
$watt
=
round
(
$pa
[
'wep_skill'
]
*
2
/
3
);
}
else
{
$watt
=
$pa
[
'wepe'
]
*
2
;
}
}
//echo "【DEBUG】pa_wep_kind={$pa['wep_kind']},pa_wep_skill={$pa['wep_skill']},pa_skills={$pa['skills']}<br>";
$hitrate
=
get_hitrate
(
$pa
[
'wep_kind'
],
$pa
[
'wep_skill'
],
$pa
[
'club'
],
$pa
[
'inf'
]
);
//echo "【DEBUG】hitrate={$hitrate}<br>";
$hitrate
*=
rev_get_clubskill_bonus_hitrate
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pd
[
'skills'
],
$pd
);
//echo "【DEBUG】修正后hitrate={$hitrate}<br>";
$damage_p
=
get_damage_p
(
$pa
[
'rage'
],
$pa
[
'att_key'
],
0
,
$pa
[
'name'
]
,
$pa
[
'club'
],
$message
);
//echo "【DEBUG】damage_p={$damage_p}<br>";
//……咕咕?
$clb_bonus_imfrate
=
rev_get_clubskill_bonus_imfrate
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pd
[
'skills'
],
$pd
);
$clb_bonus_imftime
=
rev_get_clubskill_bonus_imftime
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pd
[
'skills'
],
$pd
);
$clb_bonus_imprate
=
rev_get_clubskill_bonus_imprate
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pd
[
'skills'
],
$pd
);
$clb_bonus_hitrate
=
rev_get_clubskill_bonus_hitrate
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pd
[
'skills'
],
$pd
);
$hit_time
=
get_hit_time
(
$pa
[
'att_key'
],
$pa
[
'wep_skill'
],
$hitrate
,
$pa
[
'wep_kind'
],
$pa
[
'weps'
],
$infobbs
[
$pa
[
'wep_kind'
]]
*
$clb_bonus_imfrate
,
$clb_bonus_imftime
,
$wepimprate
[
$pa
[
'wep_kind'
]]
*
$clb_bonus_imprate
,
$is_wpg
,
$clb_bonus_hitrate
);
//echo "【DEBUG】看上面是输出的hit_time数组".print_r($hit_time)."<br>";
if
(
$hit_time
[
1
]
>
0
)
{
if
(
strpos
(
$pa
[
'att_key'
],
'R'
)
!==
false
)
{
//随机伤害无视一切伤害计算
$maxdmg
=
$pd
[
'mhp'
]
>
$pa
[
'wepe'
]
?
$pa
[
'wepe'
]
:
$pd
[
'mhp'
];
$damage
=
rand
(
1
,
$maxdmg
);
$log
.=
"武器随机造成了<span class=
\"
red
\"
>
$damage
</span>点伤害!<br>"
;
}
else
{
$gender_dmg_p
=
check_gender
(
$pa
[
'name'
],
$pd
[
'name'
],
$pa
[
'gd'
],
$pd
[
'gd'
],
$pa
[
'att_key'
]);
if
(
$gender_dmg_p
==
0
)
{
$damage
=
1
;
}
else
{
$attack
=
$pa
[
'att'
]
+
$watt
;
$defend
=
checkdef
(
$pd
[
'def'
]
,
$pd
[
'arbe'
]
+
$pd
[
'arhe'
]
+
$pd
[
'arae'
]
+
$pd
[
'arfe'
]
,
$pa
[
'att_key'
],
1
);
$damage
=
rev_get_original_dmg
(
$pa
,
$pd
,
$attack
,
$defend
,
$pa
[
'wep_skill'
]
,
$pa
[
'wep_kind'
]
);
//echo "【DEBUG】rev_get_original_dmg={$damage}<br>";
if
(
$pa
[
'wep_kind'
]
==
'F'
)
{
if
(
$sldr
)
{
$log
.=
"<span class=
\"
red
\"
>由于灵魂抽取的作用,灵系武器伤害大幅降低了!</span><br>"
;
}
else
{
$damage
=
round
((
$pa
[
'wepe'
]
+
$damage
)
*
rev_get_WF_p
(
$pa
,
$pa
[
'club'
],
$pa
[
'wepe'
]));
//echo "【DEBUG】rev_get_WF_p修正后damage={$damage}<br>";
}
}
if
(
$pa
[
'wep_kind'
]
==
'J'
)
{
$adddamage
=
$pd
[
'mhp'
]
/
3
;
if
(
$adddamage
>
20000
)
{
$adddamage
=
10000
;}
$damage
+=
round
(
$pa
[
'wepe'
]
*
2
/
3
+
$adddamage
);
}
checkarb
(
$damage
,
$pa
[
'wep_kind'
],
$pa
[
'att_key'
],
$pd
[
'def_key'
]
,
1
);
$damage
*=
$damage_p
;
$damage
=
$damage
>
1
?
round
(
$damage
)
:
1
;
$damage
*=
$gender_dmg_p
;
}
if
(
$pd
[
'wepk'
]
==
'WJ'
)
{
$log
.=
"<span class=
\"
red
\"
>由于
{
$pd
[
'name'
]
}
手中的武器过于笨重,受到的伤害大增!真是大快人心啊!</span><br>"
;
$damage
+=
round
(
$damage
*
0.5
);
}
// 书中虫 TODO
if
(
$hit_time
[
1
]
>
1
)
{
$d_temp
=
$damage
;
if
(
$hit_time
[
1
]
==
2
)
{
$dmg_p
=
2
;
}
elseif
(
$hit_time
[
1
]
==
3
)
{
$dmg_p
=
2.8
;
}
else
{
$dmg_p
=
2.8
+
0.6
*
(
$hit_time
[
1
]
-
3
);
}
//$dmg_p = $hit_time[1] - ($hit_time[1]-1)*0.2;
$damage
=
round
(
$damage
*
$dmg_p
);
$log
.=
"造成
{
$d_temp
}
×
{
$dmg_p
}
=<span class=
\"
red
\"
>
$damage
</span>点伤害!<br>"
;
}
else
{
$log
.=
"造成<span class=
\"
red
\"
>
$damage
</span>点伤害!<br>"
;
}
$pdamage
=
$damage
;
$damage
+=
rev_get_ex_dmg
(
$pa
,
$pd
,
0
,
$pa
[
'club'
],
$pd
[
'inf'
],
$pa
[
'att_key'
],
$pa
[
'wep_kind'
],
$pa
[
'wepe'
],
$pa
[
'wep_skill'
],
$pd
[
'def_key'
]
);
$damage
=
checkdmgdef
(
$damage
,
$pa
[
'att_key'
],
$pd
[
'def_key'
],
1
);
$bonus_dmg
=
get_clubskill_bonus_dmg_rate
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pd
[
'club'
],
$pd
[
'skills'
])
*
100
;
if
(
$bonus_dmg
<
100
)
{
$log
.=
"<span class=
\"
yellow
\"
>由于技能效果的作用,伤害下降至"
.
$bonus_dmg
.
"%!</span><br>"
;
$damage
=
round
(
$damage
*
$bonus_dmg
/
100
);
}
$rpdmg
=
get_clubskill_bonus_dmg_val
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
[
'rp'
],
$pd
[
'rp'
]);
if
(
$rpdmg
>
0
)
{
$log
.=
"<span class=
\"
yellow
\"
>由于技能的影响,对方受到了<span class=
\"
red
\"
>
$rpdmg
</span>点额外伤害。</span><br>"
;
$damage
+=
$rpdmg
;
}
if
(
$pdamage
!=
$damage
){
$log
.=
"<span class=
\"
yellow
\"
>造成的总伤害:<span class=
\"
red
\"
>
$damage
</span>。</span><br>"
;
}
}
checkdmg
(
$pa
[
'name'
],
$pd
[
'name'
],
$damage
);
if
(
!
$pa
[
'type'
])
get_dmg_punish
(
$pa
[
'name'
],
$damage
,
$pa
[
'hp'
],
$pa
[
'att_key'
]
);
//npc不受反噬伤害
rev_get_inf
(
$pd
,
$hit_time
[
2
],
$pa
[
'wep_kind'
]);
check_KP_wep
(
$pa
[
'name'
],
$hit_time
[
3
],
$pa
[
'wep'
],
$pa
[
'wepk'
],
$pa
[
'wepe'
],
$pa
[
'weps'
],
$pa
[
'wepsk'
]
);
$is_player_flag
=
$pa
[
'type'
]
?
0
:
1
;
exprgup
(
$pa
[
'lvl'
],
$pd
[
'lvl'
],
$pa
[
'exp'
],
$is_player_flag
,
$pd
[
'rage'
]
);
}
else
{
$damage
=
0
;
$log
.=
"但是没有击中!<br>"
;
}
//真蓝凝伏计
if
((
$pd
[
'type'
]
==
19
)
&&
(
$pd
[
'name'
]
==
'蓝凝'
))
{
$ttr
=
"♪臻蓝之愿♪"
;
$ttr2
=
"♫钴蓝之灵♫"
;
$ttr3
=
"❀矢车菊的回忆❀"
;
if
(
rand
(
1
,
100
)
<
5
)
$pa
[
'rp'
]
=
rand
(
1
,
33
);
$le
=
rand
(
1
,
200
)
+
$pa
[
'mhp'
]
-
100
;
if
(
$le
>
1001
)
$le
=
1001
;
$w_pid
=
$pd
[
'pid'
];
$n_rp
=
$pa
[
'rp'
];
$db
->
query
(
"INSERT INTO
{
$tablepre
}
maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('
$ttr
', 'TO', '
$le
', '1', '
$w_pid
', '
$n_rp
')"
);
$le
=
rand
(
1
,
200
)
+
$damage
-
100
;
if
(
$le
>
2000
)
$le
=
2000
;
$db
->
query
(
"INSERT INTO
{
$tablepre
}
maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('
$ttr2
', 'TO', '
$le
', '1', '
$w_pid
', '
$n_rp
')"
);
$le
=
rand
(
1
,
$pa
[
'hp'
]);
$db
->
query
(
"INSERT INTO
{
$tablepre
}
maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('
$ttr3
', 'TO', '
$le
', '1', '
$w_pid
', '
$n_rp
')"
);
$log
.=
"从蓝凝的身边飞出了数个光球,散布在了战场上!<br>"
;
}
//echo "【DEBUG】武器耐久为:{$pa['weps']}<br>";
check_GCDF_wep
(
$pa
[
'name'
],
$hit_time
[
0
],
$pa
[
'wep'
],
$pa
[
'wep_kind'
],
$pa
[
'wepk'
],
$pa
[
'wepe'
],
$pa
[
'weps'
],
$pa
[
'wepsk'
]
);
//echo "【DEBUG】武器耐久变更为:{$pa['weps']}<br>";
addnoise
(
$pa
[
'wep_kind'
],
$pa
[
'wepsk'
],
$now
,
$pa
[
'pls'
],
$pa
[
'pid'
],
$pd
[
'pid'
],
$pa
[
'wep_kind'
]
);
if
(
$pa
[
'club'
]
==
10
)
{
//就这样了 不用引用了
$pa
[
$skillinfo
[
$pa
[
'wep_kind'
]]]
+=
2
;
}
else
{
$pa
[
$skillinfo
[
$pa
[
'wep_kind'
]]]
+=
1
;
}
if
(
$pd
[
'hp'
]
<=
$damage
)
{
foreach
(
Array
(
'wep'
,
'arb'
,
'arh'
,
'ara'
,
'arf'
,
'art'
)
as
$a
)
{
if
(
strpos
(
$pd
[
$a
.
'sk'
],
'v'
)
!==
false
)
{
$log
.=
"伴随着对方的死亡,对方的<span class=
\"
yellow
\"
>
{
$pd
[
$a
]
}
</span>也化作灰烬消散了。<br>"
;
$pd
[
$a
]
=
$pd
[
$a
.
'k'
]
=
$pd
[
$a
.
'sk'
];
$pd
[
$a
.
'e'
]
=
$pd
[
$a
.
's'
];
}
}
for
(
$i
=
0
;
$i
<=
6
;
$i
++
)
{
if
(
strpos
(
$pd
[
'itm'
.
$i
.
'sk'
],
'v'
)
!==
false
)
{
$log
.=
"伴随着对方的死亡,对方的<span class=
\"
yellow
\"
>
{
$pd
[
'itm'
.
$i
]
}
</span>也化作灰烬消散了。<br>"
;
$pd
[
'itm'
.
$i
]
=
$pd
[
'itm'
.
$i
.
'k'
]
=
$pd
[
'itm'
.
$i
.
'sk'
];
$pd
[
'itm'
.
$i
.
'e'
]
=
$pd
[
'itm'
.
$i
.
's'
];
}
}
}
return
$damage
;
}
//战斗结算流程:pa(杀人方);pd(被杀方);active(1=pa视角;0=pd视角)
function
rev_combat_result
(
&
$pa
,
&
$pd
,
$active
)
{
global
$log
;
if
(
$pd
[
'hp'
]
<=
0
)
{
//复活判定
if
(
$pd
[
'club'
]
==
99
)
{
//NPC进化
if
(
$pd
[
'type'
])
{
$log
.=
npc_chat
(
$pd
[
'type'
],
$pd
[
'name'
],
'death'
);
include_once
GAME_ROOT
.
'./include/system.func.php'
;
$npcdata
=
evonpc
(
$pd
[
'type'
],
$pd
[
'name'
]);
$log
.=
'<span class="yellow">'
.
$pd
[
'name'
]
.
'却没死去,反而爆发出真正的实力!</span><br>'
;
if
(
$npcdata
){
addnews
(
$now
,
'evonpc'
,
$pd
[
'name'
],
$npcdata
[
'name'
],
$pa
[
'name'
]);
foreach
(
$npcdata
as
$key
=>
$val
)
{
$pd
[
$key
]
=
$val
;
}
}
}
//决死结界复活
else
{
$killmsg
=
rev_kill
(
$pa
,
$pd
,
$pa
[
'wep_kind'
],
$pa
[
'wep'
]);
if
(
$active
)
$log
.=
'<span class="yellow">'
.
$pd
[
'name'
]
.
'由于其及时按了BOMB键而原地满血复活了!</span><br>'
;
else
$log
.=
'<span class="yellow">由于你及时按了BOMB键,你原地满血复活了!</span><br>'
;
}
return
1
;
}
elseif
(
$pd
[
'hp'
]
<=
0
)
{
$pd
[
'bid'
]
=
$pa
[
'pid'
];
$pd
[
'hp'
]
=
0
;
if
(
!
$pd
[
'type'
])
$pa
[
'killnum'
]
++
;
$killmsg
=
rev_kill
(
$pa
,
$pd
,
$pa
[
'wep_kind'
],
$pa
[
'wep'
]);
$log
.=
npc_chat
(
$pd
[
'type'
],
$pd
[
'name'
],
'death'
);
if
(
$active
)
{
$log
.=
"<span class=
\"
red
\"
>
{
$pd
[
'name'
]
}
被你杀死了!</span><br>"
;
if
(
$killmsg
)
$log
.=
"<span class=
\"
yellow
\"
>你对
{
$pd
[
'name'
]
}
说:“
{
$killmsg
}
”</span><br>"
;
}
else
{
$log
.=
"<span class=
\"
red
\"
>你被
{
$pa
[
'name'
]
}
杀死了!</span><br>"
;
if
(
$killmsg
)
$log
.=
"<span class=
\"
yellow
\"
>
{
$pd
[
'name'
]
}
对你说:“
{
$killmsg
}
”</span><br>"
;
}
//杀人rp结算
if
(
!
$pd
[
'type'
])
{
if
(
$pd
[
'rp'
]
<
80
){
$rpup
=
80
;
}
else
{
$rpup
=
$pd
[
'rp'
];}
}
else
{
$rpup
=
20
;}
//晶莹剔透修正
if
(
$pa
[
'club'
]
==
19
)
{
$rpdec
=
30
;
$rpdec
+=
get_clubskill_rp_dec
(
$pa
[
'club'
],
$pa
[
'skills'
]);
$pa
[
'rp'
]
+=
round
(
$rpup
*
(
100
-
$rpdec
)
/
100
);
}
else
{
$pa
[
'rp'
]
+=
$rpup
;
}
return
1
;
}
}
return
0
;
}
//pa、pd格式的社团技能-命中率系数修正
//这个函数能帮你找回10年前的记忆
function
rev_get_clubskill_bonus_hitrate
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
)
{
//命中率系数
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$r
=
1
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
3
&&
$pa
[
'wep_kind'
]
==
"K"
)
//见敌必斩称号
{
$r
*=
(
1
+
$clskl
[
3
][
$
{
'a'
.
$i
}][
1
]
/
100
);
}
if
(
$alearn
[
'learn'
.
$i
]
==
5
&&
(
$pa
[
'wep_kind'
]
==
"G"
||
$pa
[
'wep_kind'
]
==
"J"
))
//狙击鹰眼称号
{
$r
*=
(
1
+
$clskl
[
5
][
$
{
'a'
.
$i
}][
1
]
/
100
);
}
if
(
$blearn
[
'learn'
.
$i
]
==
12
)
//宛如疾风称号
{
$r
*=
(
1
-
$clskl
[
12
][
$
{
'b'
.
$i
}][
1
]
/
100
);
}
}
return
$r
;
}
//时代变得很快,我们还没有跟上时代
function
rev_get_clubskill_bonus_imfrate
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
)
{
//防具损坏率系数
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$r
=
1
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
6
&&
(
$pa
[
'wep_kind'
]
==
"G"
||
$pa
[
'wep_kind'
]
==
"J"
))
//狙击鹰眼称号
{
$r
*=
(
1
+
$clskl
[
6
][
$
{
'a'
.
$i
}][
1
]
/
100
);
}
}
return
$r
;
}
//也可能我们只是想活在过去
function
rev_get_clubskill_bonus_imftime
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
)
{
//防具损坏效果系数
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$r
=
1
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
6
&&
(
$pa
[
'wep_kind'
]
==
"G"
||
$pa
[
'wep_kind'
]
==
"J"
))
//狙击鹰眼称号
{
$r
+=
$clskl
[
6
][
$
{
'a'
.
$i
}][
2
];
}
}
return
$r
;
}
//还是过去拽住了我们的腿不让我们向前走
function
rev_get_clubskill_bonus_imprate
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
)
{
//武器损坏率系数
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$r
=
1
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
4
&&
$pa
[
'wep_kind'
]
==
"K"
)
//见敌必斩称号
{
$r
*=
(
1
-
$clskl
[
4
][
$
{
'a'
.
$i
}][
1
]
/
100
);
}
}
return
$r
;
}
//用引用的方式修改一个变量,很像人和过去藕断丝连的关系。你以为你已经把过去的自己消化干净了,但ta仍会在某个毫无预兆的夜晚,出现在你的面前,让你辗转反侧、难以入眠。
function
rev_get_clubskill_bonus
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
,
&
$att
,
&
$def
)
{
//攻击防御力加成
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$att
=
0
;
$def
=
0
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$blearn
[
'learn'
.
$i
]
==
1
&&
$pd
[
'wep_kind'
]
==
"P"
)
//铁拳无敌称号
{
$dup
=
$clskl
[
1
][
$
{
'b'
.
$i
}][
1
]
/
100
*
$pd
[
'wepe'
];
if
(
$dup
>
2000
)
$dup
=
2000
;
$def
+=
$dup
;
}
}
}
//复杂的东西是怎么变得复杂的:可能是因为我们把它想得太简单。当一个问题出现时,我们总以为ta会是最后一个出现的问题。
function
rev_get_clubskill_bonus_p
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
,
&
$att
,
&
$def
)
{
//攻击防御加成系数
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$att
=
1
;
$def
=
1
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
2
&&
$pa
[
'wep_kind'
]
==
"P"
)
//铁拳无敌称号
{
$att
*=
(
1
+
$clskl
[
2
][
$
{
'a'
.
$i
}][
1
]
/
100
);
if
(
rand
(
0
,
99
)
<
$clskl
[
2
][
$
{
'a'
.
$i
}][
2
])
$def
*=
(
1
-
$clskl
[
2
][
$
{
'a'
.
$i
}][
3
]
/
100
);
}
if
(
$alearn
[
'learn'
.
$i
]
==
8
&&
$pa
[
'wep_kind'
]
==
"C"
)
//灌篮高手称号
{
$att
*=
(
1
+
$clskl
[
8
][
$
{
'a'
.
$i
}][
1
]
/
100
);
}
if
(
$alearn
[
'learn'
.
$i
]
==
6
&&
(
$pa
[
'wep_kind'
]
==
"G"
||
$pa
[
'wep_kind'
]
==
"J"
))
//狙击鹰眼称号
{
if
(
rand
(
0
,
99
)
<
$clskl
[
6
][
$
{
'a'
.
$i
}][
3
])
$att
*=
(
1
+
$clskl
[
6
][
$
{
'a'
.
$i
}][
4
]
/
100
);
}
}
}
//反而是我们以为很复杂的人,其实意外的更容易看懂。
function
rev_get_clubskill_bonus_fluc
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
)
{
//伤害浮动值
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$r
=
0
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
8
&&
$
{
$prefix1
.
'wepk'
}
==
"WC"
)
//灌篮高手称号
{
$r
+=
$clskl
[
8
][
$
{
'a'
.
$i
}][
2
];
}
}
return
$r
;
}
function
rev_get_clubskill_bonus_counter
(
$aclub
,
$askl
,
$pa
,
$bclub
,
$bskl
,
$pd
)
{
//反击率加成
getskills2
(
$clskl
);
getlearnt
(
$alearn
,
$aclub
,
$askl
);
getlearnt
(
$blearn
,
$bclub
,
$bskl
);
$a1
=
((
int
)(
$askl
/
10
))
%
10
;
$a2
=
$askl
%
10
;
$b1
=
((
int
)(
$bskl
/
10
))
%
10
;
$b2
=
$bskl
%
10
;
$r
=
1
;
for
(
$i
=
1
;
$i
<=
2
;
$i
++
)
{
if
(
$alearn
[
'learn'
.
$i
]
==
7
&&
$pa
[
'wep_kind'
]
==
'C'
)
//灌篮高手称号
{
$r
*=
(
1
+
$clskl
[
7
][
$
{
'a'
.
$i
}][
1
]
/
100
);
}
if
(
$alearn
[
'learn'
.
$i
]
==
11
)
//宛如疾风称号
{
$r
*=
(
1
+
$clskl
[
11
][
$
{
'a'
.
$i
}][
3
]
/
100
);
}
if
(
$blearn
[
'learn'
.
$i
]
==
13
&&
$pd
[
'wep_kind'
]
==
'F'
)
//超能力者称号
{
$r
*=
(
1
-
$clskl
[
13
][
$
{
'b'
.
$i
}][
2
]
/
100
);
}
}
return
$r
;
}
//pa、pd格式的原始伤害计算
//其实想翻新一个函数,不一定需要看得懂它本身——也许只要看懂当时写它的人。
function
rev_get_original_dmg
(
$pa
,
$pd
,
$att
,
$def
,
$ws
,
$wp_kind
,
$active
=
1
)
{
global
$skill_dmg
,
$dmg_fluc
,
$weather
,
$pls
;
include_once
GAME_ROOT
.
'./include/game/clubskills.func.php'
;
rev_get_clubskill_bonus
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pa
[
'skills'
],
$pd
,
$att1
,
$def1
);
$att
+=
$att1
;
$def
+=
$def1
;
$attack_p
=
get_attack_p
(
$weather
,
$pls
,
$pa
[
'pose'
],
$pa
[
'tactic'
],
$pa
[
'club'
],
$pa
[
'inf'
],
$active
);
$att_pow
=
$att
*
$attack_p
;
$defend_p
=
get_defend_p
(
$weather
,
$pls
,
$pd
[
'pose'
],
$pd
[
'tactic'
],
$pd
[
'club'
],
$pd
[
'inf'
],
1
-
$active
);
$def_pow
=
$def
*
$defend_p
;
rev_get_clubskill_bonus_p
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pa
[
'skills'
],
$pd
,
$attfac
,
$deffac
);
$att_pow
*=
$attfac
;
$def_pow
*=
$deffac
;
if
(
$def_pow
<=
0
){
$def_pow
=
0.01
;}
$damage
=
(
$att_pow
/
$def_pow
)
*
$ws
*
$skill_dmg
[
$wp_kind
];
$dfluc
=
$dmg_fluc
[
$wp_kind
];
$dfluc
+=
rev_get_clubskill_bonus_fluc
(
$pa
[
'club'
],
$pa
[
'skills'
],
$pa
,
$pd
[
'club'
],
$pa
[
'skills'
],
$pd
);
$dmg_factor
=
(
100
+
rand
(
-
$dfluc
,
$dfluc
))
/
100
;
$damage
=
round
(
$damage
*
$dmg_factor
*
rand
(
4
,
10
)
/
10
);
return
$damage
;
}
function
rev_get_WF_p
(
$pa
,
$clb
,
$we
)
{
global
$log
;
if
(
$pa
[
'type'
])
{
//你要找的是不是:NPC作弊
$factor
=
0.5
;
}
else
{
$we
=
$we
>
0
?
$we
:
1
;
if
(
$clb
==
9
)
{
include_once
GAME_ROOT
.
'./include/game/clubskills.func.php'
;
$spd0
=
round
(
0.2
*
get_clubskill_bonus_spd
(
$clb
,
$pa
[
'skills'
])
*
$we
);
}
else
{
$spd0
=
round
(
0.25
*
$we
);
}
if
(
$spd0
>=
$pa
[
'sp'
])
{
$spd
=
$pa
[
'sp'
]
-
1
;
}
else
{
$spd
=
$spd0
;
}
$factor
=
0.5
+
$spd
/
$spd0
/
2
;
$f
=
round
(
100
*
$factor
);
$log
.=
"你消耗
{
$spd
}
点体力,发挥了灵力武器
{
$f
}
%的威力!"
;
$pa
[
'sp'
]
-=
$spd
;
}
return
$factor
;
}
function
rev_get_ex_dmg
(
$pa
,
$pd
,
$sd
,
$clb
,
&
$inf
,
$ky
,
$wk
,
$we
,
$ws
,
$dky
)
{
if
(
$ky
)
{
global
$log
,
$exdmgname
,
$exdmginf
,
$ex_attack
,
$specialrate
,
$now
;
global
$ex_dmg_def
,
$ex_base_dmg
,
$ex_max_dmg
,
$ex_wep_dmg
,
$ex_skill_dmg
,
$ex_dmg_fluc
,
$ex_inf
,
$ex_inf_r
,
$ex_max_inf_r
,
$ex_skill_inf_r
,
$ex_inf_punish
,
$ex_good_wep
,
$ex_good_club
;
$ex_final_dmg
=
0
;
$exinv
=
false
;
$ex_list
=
array
();
foreach
(
$ex_attack
as
$ex_dmg_sign
)
{
if
(
strpos
(
$ky
,
$ex_dmg_sign
)
!==
false
){
$ex_list
[]
=
$ex_dmg_sign
;
}
}
if
(
strpos
(
$dky
,
'b'
)
!==
false
&&
!
empty
(
$ex_list
)){
$dice
=
rand
(
0
,
99
);
if
(
$dice
<
$specialrate
[
'b'
])
{
//几率4%
$ex_final_dmg
=
1
;
$exnum
=
0
;
foreach
(
$ex_attack
as
$ex_dmg_sign
)
{
if
(
strpos
(
$ky
,
$ex_dmg_sign
)
!==
false
)
{
$exnum
++
;
}
}
$log
.=
"<span class=
\"
red
\"
>属性攻击的力量完全被防具吸收了!</span>只造成了<span class=
\"
red
\"
>
{
$exnum
}
</span>点伤害!<br>"
;
$exinv
=
true
;
}
else
{
$log
.=
"纳尼?防具使属性攻击无效化的属性竟然失效了!<br>"
;
}
}
if
(
!
$exinv
){
foreach
(
$ex_list
as
$ex_dmg_sign
)
{
$dmgnm
=
$exdmgname
[
$ex_dmg_sign
];
$def
=
$ex_dmg_def
[
$ex_dmg_sign
];
$bdmg
=
$ex_base_dmg
[
$ex_dmg_sign
];
$mdmg
=
$ex_max_dmg
[
$ex_dmg_sign
];
$wdmg
=
$ex_wep_dmg
[
$ex_dmg_sign
];
$sdmg
=
$ex_skill_dmg
[
$ex_dmg_sign
];
$fluc
=
$ex_dmg_fluc
[
$ex_dmg_sign
];
if
(
in_array
(
$ex_dmg_sign
,
array_keys
(
$ex_inf
)))
{
$dmginf
=
$exdmginf
[
$ex_inf
[
$ex_dmg_sign
]];
$ex_inf_sign
=
$ex_inf
[
$ex_dmg_sign
];
$infr
=
$ex_inf_r
[
$ex_inf_sign
];
$minfr
=
$ex_max_inf_r
[
$ex_inf_sign
];
$sinfr
=
$ex_skill_inf_r
[
$ex_inf_sign
];
$punish
=
$ex_inf_punish
[
$ex_dmg_sign
];
$e_htr
=
$ex_good_club
[
$ex_inf_sign
]
==
$clb
?
20
:
0
;
}
else
{
$ex_inf_sign
=
''
;
$punish
=
1
;
$e_htr
=
0
;
}
$wk_dmg_p
=
$ex_good_wep
[
$ex_dmg_sign
]
==
$wk
?
2
:
1
;
$e_dmg
=
$bdmg
+
$we
/
$wdmg
+
$ws
/
$sdmg
;
if
((
$mdmg
>
0
)
&&
(
$wk
!=
'H'
)){
$e_dmg
=
round
(
$wk_dmg_p
*
$mdmg
*
(
$e_dmg
/
(
$e_dmg
+
$mdmg
/
2
))
*
rand
(
100
-
$fluc
,
100
+
$fluc
)
/
100
);
}
else
{
$e_dmg
=
round
(
$wk_dmg_p
*
$e_dmg
*
rand
(
100
-
$fluc
,
100
+
$fluc
)
/
100
);
}
$ex_def_dice
=
rand
(
0
,
99
);
if
(
strpos
(
$dky
,
$def
)
===
false
||
$ex_def_dice
>
90
)
{
if
(
strpos
(
$dky
,
$def
)
!==
false
){
$log
.=
"属性防御装备没能发挥应有的作用!"
;
}
if
(
$ex_inf_sign
&&
strpos
(
$inf
,
$ex_inf_sign
)
!==
false
&&
$punish
>
1
)
{
$log
.=
"由于
{
$pd
[
'name'
]
}
已经
{
$dmginf
}
,
{
$dmgnm
}
伤害倍增!"
;
$e_dmg
*=
$punish
;
}
elseif
(
$ex_inf_sign
&&
strpos
(
$inf
,
$ex_inf_sign
)
!==
false
&&
$punish
<
1
)
{
$log
.=
"由于
{
$pd
[
'name'
]
}
已经
{
$dmginf
}
,
{
$dmgnm
}
伤害减少!"
;
$e_dmg
*=
$punish
;
}
else
{
$e_htr
+=
$infr
+
$ws
*
$sinfr
;
$e_htr
=
$e_htr
>
$minfr
?
$minfr
:
$e_htr
;
}
$e_dmg
=
round
(
$e_dmg
);
$log
.=
"
{
$dmgnm
}
造成了<span class=
\"
red
\"
>
{
$e_dmg
}
</span>点额外伤害!<br>"
;
if
(
!
empty
(
$ex_inf_sign
)
&&
(
strpos
(
$inf
,
$ex_inf_sign
)
===
false
))
{
$dice
=
rand
(
0
,
99
);
if
(
$dice
<
$e_htr
)
{
$inf
.=
$ex_inf_sign
;
if
(
$sd
==
0
)
{
$pd
[
'combat_inf'
]
.=
$ex_inf_sign
;
}
$log
.=
"并造成
{
$pd
[
'name'
]
}{
$dmginf
}
了!<br>"
;
addnews
(
$now
,
'inf'
,
$pa
[
'name'
],
$pd
[
'name'
],
$ex_inf_sign
);
}
}
}
else
{
$e_dmg
=
round
(
$e_dmg
/
2
);
$log
.=
"
{
$dmgnm
}
被防御效果抵消了!造成了<span class=
\"
red
\"
>
{
$e_dmg
}
</span>点额外伤害!<br>"
;
}
$ex_final_dmg
+=
$e_dmg
;
}
}
return
$ex_final_dmg
;
}
else
{
return
0
;
}
}
function
rev_get_inf
(
$pd
,
$ht
,
$wp_kind
)
{
if
(
$ht
>
0
)
{
global
$infatt
,
$log
;
$infatt_dice
=
rand
(
1
,
4
);
if
((
$infatt_dice
==
1
)
&&
(
strpos
(
$infatt
[
$wp_kind
],
'b'
)
!==
false
))
{
$inf_att
=
'b'
;
}
elseif
((
$infatt_dice
==
2
)
&&
(
strpos
(
$infatt
[
$wp_kind
],
'h'
)
!==
false
))
{
$inf_att
=
'h'
;
}
elseif
((
$infatt_dice
==
3
)
&&
(
strpos
(
$infatt
[
$wp_kind
],
'a'
)
!==
false
))
{
$inf_att
=
'a'
;
}
elseif
((
$infatt_dice
==
4
)
&&
(
strpos
(
$infatt
[
$wp_kind
],
'f'
)
!==
false
))
{
$inf_att
=
'f'
;
}
if
(
$inf_att
)
{
if
(
$pd
[
'ar'
.
$inf_att
.
's'
])
{
$pd
[
'ar'
.
$inf_att
.
's'
]
-=
$ht
;
$log
.=
"
{
$pd
[
'name'
]
}
的
{
$pd
[
'ar'
.
$inf_att
]
}
的耐久度下降了
{
$ht
}
!<br>"
;
if
(
$pd
[
'ar'
.
$inf_att
.
's'
]
<=
0
)
{
$log
.=
"
{
$nm
}
的<span class=
\"
red
\"
>
{
$pd
[
'ar'
.
$inf_att
.
's'
]
}
</span>受损过重,无法再装备了!<br>"
;
$pd
[
'ar'
.
$inf_att
]
=
$pd
[
'ar'
.
$inf_att
.
'k'
]
=
$pd
[
'ar'
.
$inf_att
.
'sk'
]
=
''
;
$pd
[
'ar'
.
$inf_att
.
'e'
]
=
$pd
[
'ar'
.
$inf_att
.
's'
]
=
0
;
}
}
else
{
global
$infinfo
;
if
(
strpos
(
$pd
[
'inf'
],
$inf_att
)
===
false
)
{
$pd
[
'inf'
]
.=
$inf_att
;
$pd
[
'combat_inf'
]
.=
$inf_att
;
$log
.=
"
{
$pd
[
'name'
]
}
的<span class=
\"
red
\"
>
$infinfo[$inf_att]
</span>部受伤了!<br>"
;
}
}
}
}
return
;
}
function
rev_kill
(
&
$pa
,
&
$pd
,
$death
,
$annex
=
''
)
{
global
$now
,
$db
,
$tablepre
,
$alivenum
,
$deathnum
,
$typeinfo
,
$lwinfo
;
//echo "【DEBUG】检测到{$pa['name']}使用{$death}击杀了{$pd['name']},凶器是{$annex}。<br>";
//登记玩家狠话
$killmsg
=
''
;
if
(
!
$pa
[
'type'
])
{
$pname
=
$pa
[
'name'
];
$result
=
$db
->
query
(
"SELECT killmsg FROM
{
$tablepre
}
users WHERE username = '
$pname
'"
);
$killmsg
=
$db
->
result
(
$result
,
0
);
}
//登记死法
if
(
$death
==
'N'
)
{
$pd
[
'state'
]
=
20
;
}
elseif
(
$death
==
'P'
)
{
$pd
[
'state'
]
=
21
;
}
elseif
(
$death
==
'K'
)
{
$pd
[
'state'
]
=
22
;
}
elseif
(
$death
==
'G'
)
{
$pd
[
'state'
]
=
23
;
}
elseif
(
$death
==
'J'
)
{
$pd
[
'state'
]
=
23
;
}
elseif
(
$death
==
'C'
)
{
$pd
[
'state'
]
=
24
;
}
elseif
(
$death
==
'D'
)
{
$pd
[
'state'
]
=
25
;
}
elseif
(
$death
==
'F'
)
{
$pd
[
'state'
]
=
29
;
}
elseif
(
$death
==
'dn'
)
{
$pd
[
'state'
]
=
28
;
}
else
{
$pd
[
'state'
]
=
10
;
}
//死者是玩家 更新幸存者数
if
(
!
$pd
[
'type'
])
$alivenum
--
;
$deathnum
++
;
//发遗言
$dtype
=
$pd
[
'type'
];
$dname
=
$pd
[
'name'
];
$dpls
=
$pd
[
'pls'
];
if
(
$dtype
==
15
)
{
//静流AI
global
$gamevars
;
$gamevars
[
'sanmadead'
]
=
1
;
save_gameinfo
();
}
//死者是?
$lwname
=
$typeinfo
[
$dtype
]
.
' '
.
$dname
;
//遗言是?
if
(
$dtype
)
{
$lastword
=
is_array
(
$lwinfo
[
$dtype
])
?
$lwinfo
[
$dtype
][
$dname
]
:
$lwinfo
[
$dtype
];
}
else
{
$result
=
$db
->
query
(
"SELECT lastword FROM
{
$tablepre
}
users WHERE username ='
$dname
'"
);
$lastword
=
$db
->
result
(
$result
,
0
);
}
$db
->
query
(
"INSERT INTO
{
$tablepre
}
chat (type,`time`,send,recv,msg) VALUES ('3','
$now
','
$lwname
','
$dpls
','
$lastword
')"
);
//发news
$kname
=
$pa
[
'type'
]
?
$pa
[
'name'
]
:
$pa
[
'nick'
]
.
' '
.
$pa
[
'name'
];
addnews
(
$now
,
'death'
.
$pd
[
'state'
],
$dname
,
$dtype
,
$kname
,
$annex
,
$lastword
);
//玩家决死结界复活判定
$revivaled
=
false
;
if
(
!
$pd
[
'type'
]
&&
$pd
[
'club'
]
==
99
&&
(
$death
==
"N"
||
$death
==
"P"
||
$death
==
"K"
||
$death
==
"G"
||
$death
==
"C"
||
$death
==
"D"
||
$death
==
"F"
||
$death
==
"J"
||
$death
==
"trap"
))
{
addnews
(
$now
,
'revival'
,
$pd
[
'name'
]);
$pd
[
'hp'
]
=
$pd
[
'mhp'
];
$pd
[
'sp'
]
=
$pd
[
'msp'
];
$pd
[
'club'
]
=
17
;
$pd
[
'state'
]
=
0
;
$alivenum
++
;
}
save_gameinfo
();
return
$killmsg
;
}
?>
\ No newline at end of file
include/global.func.php
View file @
704ed5b1
...
...
@@ -492,4 +492,91 @@ function putmicrotime($t_s,$t_e,$file,$info)
writeover
(
$file
.
'.txt'
,
"
$info
;执行时间:
$mtime
毫秒
\n
"
,
'ab'
);
}
//----------------------------------------
// 字符串处理
//----------------------------------------
function
mgzdecode
(
$data
)
{
return
gzinflate
(
substr
(
$data
,
10
,
-
8
));
}
//数组压缩转化为纯字母数字
function
gencode
(
$para
){
return
base64_encode
(
gzencode
(
json_encode
(
$para
)));
}
//gencode函数的逆运算
function
gdecode
(
$para
,
$assoc
=
false
){
$assoc
=
$assoc
?
true
:
false
;
if
(
!
$para
)
return
array
();
else
return
json_decode
(
mgzdecode
(
base64_decode
(
$para
)),
$assoc
);
}
//字符串中段省略,取头部+尾部1字符
function
middle_abbr
(
$str
,
$len1
,
$len2
=
1
,
$elli
=
'...'
)
{
$str
=
(
string
)
$str
;
$len1
=
(
int
)
$len1
;
$len2
=
(
int
)
$len2
;
return
mb_substr
(
$str
,
0
,
$len1
)
.
$elli
.
mb_substr
(
$str
,
-
$len2
,
$len2
);
}
//mb_strlen()兼容替代函数,直接照抄的网络
if
(
!
function_exists
(
'mb_strlen'
)
)
{
function
mb_strlen
(
$text
,
$encode
=
'UTF-8'
)
{
if
(
$encode
==
'UTF-8'
)
{
return
preg_match_all
(
'%(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)%xs'
,
$text
,
$out
);
}
else
{
return
strlen
(
$text
);
}
}
}
//mb_substr()兼容替代函数,直接照抄的网络
if
(
!
function_exists
(
'mb_substr'
))
{
function
mb_substr
(
$str
,
$start
,
$len
=
''
,
$encoding
=
'UTF-8'
){
$limit
=
strlen
(
$str
);
for
(
$s
=
0
;
$start
>
0
;
--
$start
)
{
// found the real start
if
(
$s
>=
$limit
)
break
;
if
(
$str
[
$s
]
<=
"
\x7F
"
)
++
$s
;
else
{
++
$s
;
// skip length
while
(
$str
[
$s
]
>=
"
\x80
"
&&
$str
[
$s
]
<=
"
\xBF
"
)
++
$s
;
}
}
if
(
$len
==
''
)
return
substr
(
$str
,
$s
);
else
for
(
$e
=
$s
;
$len
>
0
;
--
$len
)
{
//found the real end
if
(
$e
>=
$limit
)
break
;
if
(
$str
[
$e
]
<=
"
\x7F
"
)
++
$e
;
else
{
++
$e
;
//skip length
while
(
$str
[
$e
]
>=
"
\x80
"
&&
$str
[
$e
]
<=
"
\xBF
"
&&
$e
<
$limit
)
++
$e
;
}
}
return
substr
(
$str
,
$s
,
$e
-
$s
);
}
}
?>
include/state.func.php
View file @
704ed5b1
...
...
@@ -91,7 +91,8 @@ function death($death, $kname = '', $ktype = 0, $annex = '') {
$deathtime
=
$now
;
$result
=
$db
->
query
(
"SELECT nick FROM
{
$tablepre
}
players WHERE name = '
$kname
' AND type = '
$type
'"
);
$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);
if
(
$type
==
0
&&
$club
==
99
&&
(
$death
==
"N"
||
$death
==
"P"
||
$death
==
"K"
||
$death
==
"G"
||
$death
==
"C"
||
$death
==
"D"
||
$death
==
"F"
||
$death
==
"J"
||
$death
==
"trap"
))
...
...
templates/default/battle.htm
View file @
704ed5b1
...
...
@@ -201,9 +201,9 @@
<td
class=
"b2"
height=
20px
><span>
{lang wep}{lang effect}
</span></td>
<td
class=
"b3"
><span>
$w_wepestate
</span></td>
<td
class=
"b2"
><span>
{lang wep}{lang kind1}
</span></td>
<td
class=
"b3"
><span>
<!--{if $w_wepk != ''}-->
$
iteminfo[$w_wepk]
<!--{else}-->
???
<!--{/if}-->
</span></td>
<td
class=
"b3"
><span>
<!--{if $w_wepk != ''}-->
$
w_wepk_words
<!--{else}-->
???
<!--{/if}-->
</span></td>
<td
class=
"b2"
><span>
{lang wep}
</span></td>
<td
class=
"b3"
><span>
$w_wep
</span></td>
<td
class=
"b3"
><span>
$w_wep
_words
</span></td>
</tr>
<tr>
<td
class=
"b2"
height=
20px
><span>
{lang tactic}
</span></td>
...
...
@@ -243,9 +243,9 @@
</tr>
<tr>
<td
class=
"b2"
height=
20px
><span>
{lang wep}
</span></td>
<td
class=
"b3"
><span>
$wep
</span></td>
<td
class=
"b3"
><span>
$wep
_words
</span></td>
<td
class=
"b2"
><span>
{lang wep}{lang kind1}
</span></td>
<td
class=
"b3"
><span>
$
iteminfo[$wepk]
</span></td>
<td
class=
"b3"
><span>
$
wepk_words
</span></td>
<td
class=
"b2"
><span>
{lang wep}{lang effect}
</span></td>
<td
class=
"b3"
><span>
$wepe
</span></td>
</tr>
...
...
templates/default/revbattle.htm
0 → 100644
View file @
704ed5b1
<!--{if (CURSCRIPT == 'game' && $w_pls=='0')}-->
<style>
body
{
background-image
:
url("../../img/location/0.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='1')}-->
<style>
body
{
background-image
:
url("../../img/location/1.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='2')}-->
<style>
body
{
background-image
:
url("../../img/location/2.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='3')}-->
<style>
body
{
background-image
:
url("../../img/location/3.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='4')}-->
<style>
body
{
background-image
:
url("../../img/location/4.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='5')}-->
<style>
body
{
background-image
:
url("../../img/location/5.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='6')}-->
<style>
body
{
background-image
:
url("../../img/location/6.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='7')}-->
<style>
body
{
background-image
:
url("../../img/location/7.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='8')}-->
<style>
body
{
background-image
:
url("../../img/location/8.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='9')}-->
<style>
body
{
background-image
:
url("../../img/location/9.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='10')}-->
<style>
body
{
background-image
:
url("../../img/location/10.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='11')}-->
<style>
body
{
background-image
:
url("../../img/location/11.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='12')}-->
<style>
body
{
background-image
:
url("../../img/location/12.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='13')}-->
<style>
body
{
background-image
:
url("../../img/location/13.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='14')}-->
<style>
body
{
background-image
:
url("../../img/location/14.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='15')}-->
<style>
body
{
background-image
:
url("../../img/location/15.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='16')}-->
<style>
body
{
background-image
:
url("../../img/location/16.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='17')}-->
<style>
body
{
background-image
:
url("../../img/location/17.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='18')}-->
<style>
body
{
background-image
:
url("../../img/location/18.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='19')}-->
<style>
body
{
background-image
:
url("../../img/location/19.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='20')}-->
<style>
body
{
background-image
:
url("../../img/location/20.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='21')}-->
<style>
body
{
background-image
:
url("../../img/location/21.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='22')}-->
<style>
body
{
background-image
:
url("../../img/location/22.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='23')}-->
<style>
body
{
background-image
:
url("../../img/location/23.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='24')}-->
<style>
body
{
background-image
:
url("../../img/location/24.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='25')}-->
<style>
body
{
background-image
:
url("../../img/location/25.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='26')}-->
<style>
body
{
background-image
:
url("../../img/location/26.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='27')}-->
<style>
body
{
background-image
:
url("../../img/location/27.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='28')}-->
<style>
body
{
background-image
:
url("../../img/location/28.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='29')}-->
<style>
body
{
background-image
:
url("../../img/location/29.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='30')}-->
<style>
body
{
background-image
:
url("../../img/location/30.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='31')}-->
<style>
body
{
background-image
:
url("../../img/location/31.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='32')}-->
<style>
body
{
background-image
:
url("../../img/location/32.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='33')}-->
<style>
body
{
background-image
:
url("../../img/location/33.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<!--{if (CURSCRIPT == 'game' && $w_pls=='34')}-->
<style>
body
{
background-image
:
url("../../img/location/34.jpg")
;
background-position
:
center
;}
</style>
<!--{/if}-->
<table
border=
"0"
width=
720px
height=
380px
cellspacing=
"0"
cellpadding=
"0"
valign=
"middle"
>
<TR
align=
"center"
>
<TD
valign=
"middle"
class=
"b5"
>
<TABLE
border=
"0"
width=
720px
height=
380px
align=
"center"
cellspacing=
"0"
cellpadding=
"0"
class=
"battle"
>
<tr>
<td>
<table
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
width=
"100%"
>
<tr>
<td>
<table
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
valign=
"top"
width=
"100%"
>
<tr>
<td
class=
"b1"
colspan=
2
height=
20px
><span>
Lv. $w_lvl
</span></td>
<td
class=
"b1"
colspan=
2
><span>
$w_name
</span></td>
<td
class=
"b1"
colspan=
2
><span>
$w_sNoinfo
</span>
<!--{if $club==19}-->
【
<span
class=
"lime"
>
报应点数:
<span
id=
"anum"
>
$w_rp
</span></span>
】
<!--{/if}-->
</td>
<td
class=
"b5"
rowspan=
4
width=
140px
colspan=
1
height=
80px
><IMG
src=
"img/$w_iconImg"
height=
80px
border=
"0"
align=
"middle"
<!
--
{
if
$
w_hp=
=0}--
>
style="filter:Xray()"
<!--{/if}-->
/>
</td>
</tr>
<tr>
<td
class=
"b2"
width=
75px
height=
20px
><span>
{lang rage}
</span></td>
<td
class=
"b3"
width=
90px
><span>
$w_ragestate
</span></td>
<td
class=
"b2"
width=
75px
><span>
{lang sp}
</span></td>
<td
class=
"b3"
width=
90px
><span>
$w_spstate
</span></td>
<td
class=
"b2"
width=
100px
><span>
{lang hp}
</span></td>
<td
class=
"b3"
width=
145px
><span>
$w_hpstate
</span></td>
</tr>
<tr>
<td
class=
"b2"
height=
20px
><span>
{lang wep}{lang effect}
</span></td>
<td
class=
"b3"
><span>
$w_wepestate
</span></td>
<td
class=
"b2"
><span>
{lang wep}{lang kind1}
</span></td>
<td
class=
"b3"
><span>
<!--{if $w_wepk != ''}-->
$w_wepk_words
<!--{else}-->
???
<!--{/if}-->
</span></td>
<td
class=
"b2"
><span>
{lang wep}
</span></td>
<td
class=
"b3"
><span>
$w_wep_words
</span></td>
</tr>
<tr>
<td
class=
"b2"
height=
20px
><span>
{lang tactic}
</span></td>
<td
class=
"b3"
><span>
<!--{if $w_tactic >= 0}-->
$tacinfo[$w_tactic]
<!--{else}-->
???
<!--{/if}-->
</span></td>
<td
class=
"b2"
><span>
{lang pose}
</span></td>
<td
class=
"b3"
><span>
<!--{if $w_pose >= 0}-->
$poseinfo[$w_pose]
<!--{else}-->
???
<!--{/if}-->
</span></td>
<td
class=
"b2"
><span>
{lang inf}
</span></td>
<td
class=
"b3"
><span>
<!--{if $w_infdata}-->
$w_infdata
<!--{else}-->
无
<!--{/if}-->
</span></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</TR>
<tr>
<TD
class=
"b3"
height=
"100%"
>
<span><B><FONT
color=
"#ff0000"
size=
"5"
face=
"黑体"
>
$battle_title
</FONT></B></span>
</TD>
</TR>
<tr>
<td>
<table
border=
"0"
width=
720px
cellspacing=
"0"
cellpadding=
"0"
valign=
"middle"
>
<tr>
<td
class=
"b5"
rowspan=
4
colspan=
1
width=
140px
height=
80px
><IMG
src=
"img/$n_iconImg"
height=
80px
border=
"0"
align=
"middle"
<!
--
{
if
$
hp=
=0}--
>
style="filter:Xray()"
<!--{/if}-->
/>
</td>
<td
class=
"b1"
colspan=
2
height=
20px
><span>
$typeinfo[$n_type]({$sexinfo[$n_gd]}{$n_sNo}号)
</span></td>
<td
class=
"b1"
colspan=
2
><span>
$n_name
</span></td>
<td
class=
"b1"
colspan=
2
><span>
Lv. $n_lvl
</span></td>
</tr>
<tr>
<td
class=
"b2"
width=
100px
height=
20px
><span>
{lang hp}
</span></td>
<td
class=
"b3"
width=
145px
><span>
$n_hpstate
</span></span></td>
<td
class=
"b2"
width=
75px
><span>
{lang sp}
</span></td>
<td
class=
"b3"
width=
90px
><span>
$n_spstate
</span></td>
<td
class=
"b2"
width=
75px
><span>
{lang rage}
</span></td>
<td
class=
"b3"
width=
90px
><span>
$n_ragestate
</span></td>
</tr>
<tr>
<td
class=
"b2"
height=
20px
><span>
{lang wep}
</span></td>
<td
class=
"b3"
><span>
$n_wep_words
</span></td>
<td
class=
"b2"
><span>
{lang wep}{lang kind1}
</span></td>
<td
class=
"b3"
><span>
$n_wepk_words
</span></td>
<td
class=
"b2"
><span>
{lang wep}{lang effect}
</span></td>
<td
class=
"b3"
><span>
$n_wepe
</span></td>
</tr>
<tr>
<td
class=
"b2"
height=
20px
><span>
{lang inf}
</span></td>
<td
class=
"b3"
>
<span>
<!--{if $n_inf}-->
<!--{loop $infinfo $key $val}-->
<!--{if strpos($n_inf,$key)!==false}-->
$val
<!--{/if}-->
<!--{/loop}-->
<!--{else}-->
无
<!--{/if}-->
</span>
</td>
<td
class=
"b2"
><span>
{lang pose}
</span></td>
<td
class=
"b3"
><span>
$poseinfo[$n_pose]
</span></td>
<td
class=
"b2"
><span>
{lang tactic}
</span></td>
<td
class=
"b3"
><span>
$tacinfo[$n_tactic]
</span></td>
</tr>
</table>
</td>
</tr>
</TABLE>
</TD>
</TR>
</table>
templates/default/revbattleresult.htm
0 → 100644
View file @
704ed5b1
<input
type=
"hidden"
name=
"mode"
value=
"revcombat"
>
<input
type=
"hidden"
name=
"command"
value=
"enter"
>
<input
type=
"button"
class=
"cmdbutton"
name=
"submit"
value=
"确定"
onclick=
"postCmd('gamecmd','command.php');this.disabled=true;"
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment