0%

仙剑奇侠传五代码分析(一) -- 恢复/辅助类物品

物品回血回蓝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
id = player.GetTargetPlayer() -- 获取角色id
player.ChangeHP(arg1, arg2, id, val) -- 回血
player.ChangeMP(arg1, arg2, id, val) -- 回蓝
-- arg1: 恢复类型;1: 按比例恢复 0: 按数值恢复
-- arg2: 恢复范围;1: 全体恢复 0: 单体恢复
-- val: 恢复量

-- WARNING: 不要设置arg1/arg2为01以外的其他值,否则可能会造成未定义行为

-- 例1:
player.ChangeHP(0, 0, id, 300) -- 单体回复300点血

-- 例2:
player.ChangeMP(0, 1, id, 20) -- 全体回复20点蓝

-- 例3:
player.ChangeHP(1, 1, id, -25) -- 全体受到生命上限20%的伤害

-- WARINING: 在伤害型物品中,最好不要对敌人产生减蓝的操作
-- 因为PAL5/PAL5前传不像PAL4一样敌人有蓝,要对敌人产生减蓝可能产生未定义行为
-- 在修改代码时,务必考虑清楚该代码产生的行为是否可以使游戏保持一致性

物品移除状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
id = player.GetTargetPlayer() -- 获取角色id
player.RemoveStat(arg, id, stat) -- 移除状态
-- arg: 恢复范围;1: 全体恢复 0: 单体恢复
-- stat: 状态
-- 0. 冻结; 1. 中毒; 2. 混乱; 3. 脱力; 4. 沉默;
-- 5. 昏睡; 6. 异变; 7. 麻痹; 8. 消极; 9. 污浊。

-- WARNING: 不要设置stat为0-9以外的其他值,否则可能会造成未定义行为

-- 例1:
player.RemoveStat(0, id, 0) -- 单体解除冻结状态

-- 例2:
player.RemoveStat(1, id, 3) -- 全体解除脱力状态

复活

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
id = player.GetTargetPlayer() -- 获取角色id
player.Relive(id) -- 复活

-- WARNING: 使用player的Relive方法时必须恢复一定的血量,否则会造成未知错误
-- 本人没有试过会出现什么错误,但是复活后保持0血量肯定是未定义(非法)状态

-- 例1:
-- 选定角色复活,并保持300点血量
player.Relive(id)
player.ChangeHP(0, 0, id, 300)

-- 例2:
-- 选定角色复活,并恢复所有角色所有生命值
player.Relive(id)
player.ChangeHP(1, 1, id, 100)

回气

1
2
3
4
5
6
7
8
9
10
11
12
13
14
id = player.GetTargetPlayer() -- 获取角色id
player.ChangeDP(arg, id, val) -- 回气

-- arg: 恢复范围;1: 全体恢复 0: 单体恢复
-- val: 恢复量

-- 例1:
player.ChangeDP(0, id, 20) -- 单体恢复20点气

-- 例2:
player.ChangeDP(0, id, -100) -- 单体气清空

-- WARINING: 在伤害型物品中,最好不要对敌人产生减气的操作
-- 因为PAL5/PAL5前传不像PAL4一样敌人有气,要对敌人产生减蓝可能产生未定义行为

永久增加属性

1
2
3
4
5
6
7
8
9
10
11
12
id = player.GetTargetPlayer() -- 获取角色id
player.AddProperty(id, prop, val) -- 增加指定属性

-- prop: 增加的属性种类
-- 1. 力; 2. 体; 3. 速; 4. 术; 5. 运
-- val: 增量

-- 例1:
player.AddProperty(id, 1, 1) -- 增加1点力

-- 例2:
player.AddProperty(id, 1, -5) -- 减少5点力

添加状态

添加基础状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
id = player.GetTargetPlayer() -- 获取角色id
player.AddStat(arg, id, pro, stat, turns) -- 添加状态

-- arg: 使用范围;1: 全体 0: 单体
-- pro: 添加状态成功率
-- stat: 状态
-- 10: 强袭; 11: 坚盾; 12: 神行; 13: 法障
-- turns: 状态保持回合数

-- WARNING: 不要设置turns/pro为负值,否则可能会造成未定义行为

-- 例1:
player.AddStat(0, id, 100, 10, 5) -- 单体施加强袭状态5回合

-- 例2:
player.AddStat(0, id, 50, 10, 1) -- 单体施加强袭状态1回合,50%失手

添加屏类状态

1
2
3
4
5
6
7
8
9
10
id = player.GetTargetPlayer() -- 获取角色id
player.AddStat(arg, id, pro, stat, turns) -- 添加状态

-- arg: 使用范围;1: 全体 0: 单体
-- pro: 添加状态成功率
-- stat: 状态
-- 14: 火屏; 15: 水屏; 16: 雷屏; 17: 土屏; 18: 风屏
-- turns: 状态保持回合数

-- 使用方法同上

添加高级状态

1
2
3
4
5
6
7
8
9
10
id = player.GetTargetPlayer() -- 获取角色id
player.AddStat(arg, id, pro, stat, turns) -- 添加状态

-- arg: 使用范围;1: 全体 0: 单体
-- pro: 添加状态成功率
-- stat: 状态
-- 28: 隐形; 36: 武爆; 37: 魔免
-- turns: 状态保持回合数

-- 使用方法同上
Buy me a coffee.