我需要给玩家添加一个主动或被动技能如何实现?
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-05-07 14:05:38 |
👁️ 阅读: 12
给玩家添加技能可以通过服务端脚本接口实现,主要分为添加普通技能和气功技能两类。
## 添加普通技能
使用 `addskill` 接口。
- **语法**:`addskill(actor, skillid, level)`
- **参数**:
- `actor`:玩家对象ID(必填)
- `skillid`:要添加的技能ID(必填)
- `level`:技能等级(必填)
- **示例代码**:
```lua
addskill(actor, 56, 1)
```
## 添加气功技能
气功属于被动技能,可以通过脚本添加。
- **添加单个气功**:使用 `addqigong` 接口。
- **语法**:`addqigong(actor, qiId, level)`
- **参数**:玩家对象、气功ID、等级。
- **删除单个气功**:使用 `delqigong` 接口。
- **语法**:`delqigong(actor, qiId)`
- **删除全部气功**:使用 `clearqigong` 接口。
- **语法**:`clearqigong(actor)`
- **获取所有气功信息**:使用 `getallqigong` 接口。
- **语法**:`getallqigong(actor, type)`
- **参数**:`type` 为空或1获取总等级;2获取学习等级;3获取脚本加的等级;4获取装备加的等级。
## 配置被动技能(气功或通用被动)
被动技能的效果和触发逻辑可以通过配置 `SkillQiGong` 表(气功主表)和 `Passive.xls` 被动表来实现。
- **SkillQiGong表**:定义气功技能的基本属性,如ID、名称、最大学习等级、所属页签等。
- **Passive.xls表**:可以配置气功之外的被动触发条件与效果,支持按条件挂载被动。
- 判断条件包括:技能ID、技能等级、变量、属性值等。
- 当技能、属性或变量变化时,可调用对应方法检查和同步挂载被动:
- `PassiveManager:onSkillChanged(actor, skillId)`
- `PassiveManager:onAttrChanged(actor, abilId)`
- `PassiveManager:onVarChanged(actor, varName)`
## 自定义被动效果模板
如果需要更复杂的被动效果,可以在 `CustomPassiveTemplate.lua` 中编写自定义模板函数。策划在气功表或被动表内填写模板名、参数和触发事件,即可在事件发生时执行对应的函数逻辑。
模板分为两类:
1. **静态属性模板**:在角色登录、重载或刷新属性时执行,用于计算长期生效的属性加成(如攻击百分比、暴击率)。
2. **事件型模板**:在特定事件(如受到攻击、释放技能)发生时瞬间执行效果(如触发吸血、提高怒气)。
## 注意事项
- 添加技能和气功均为服务端操作,需在服务端脚本中调用。
- 被动技能的触发概率、内置CD、触发事件(如攻击前、受击、治疗等)以及具体效果参数(Param1~Param5)均在气功表或被动表中配置。
- 对于气功升级操作,服务端提供了 `clientupqigongbefore` 等触发函数,可在升级前进行条件判断或拦截。
← 返回问答库