🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[danger] 没看过[教程(战斗公式篇)(必先学)](%E6%95%99%E7%A8%8B.md)的请先看完,此篇幅在其基础上讲 导航: [TOC] <br><br><br> ***** # 完整例子演示 原来的公式: ``` 生命: value: "((4*1*4*1/(4*1+2*1*2)*8*2)*1.5*Math.max({level},1))" sign: '0' ``` 利用转换器转换后: ``` 生命: value: |- //<old> ((4*1*4*1/(4*1+2*1*2)*8*2)*1.5*Math.max({level},1)) int level = data.get("level"); // 获取玩家的当前主职业等级 return ((4*1*4*1/(4*1+2*1*2)*8*2)*1.5*Math.max(level,1)); sign: '0' ``` 这里的 `data`跟战斗公式内的 `data` 是一样的,都是 `UMap` 类型 但是不一样的是, 战斗公式里面有2个对象,一个攻击方,一个被攻击方 所以拿到属性对象的方法是: ``` #战斗公式内: UMap a = data.get("attacker"); //这一步是拿到攻击方的数据 Att att = a.get("att"); //拿到攻击方的属性对象 USkill skill = a.get("skillapi"); //拿到攻击方的skillapi技能对象 ``` ``` #职业天生属性内: Att att = data.get("att"); //直接从data拿到属性 USkill skill = data.get("skillapi"); //直接从data拿到skillapi的技能对象 #其他获取方法类似 ``` <br><br><br> ***** # Modules\Occupation\Config.yml也支持了 跟上面一样从`data`里面直接拿属性(att)或技能(skillapi) ![](https://img.kancloud.cn/0a/be/0abe0c1b2416ca5d8dc37d336dd81ec6_462x274.png) 这里就不多赘述了,我是写了个类来调用 同时新增了一个 `other-update` 节点,非主职业时是否刷新该数据,默认刷新最大经验,可做副职业采集等 <br><br><br> ***** # 利用属性做一个战斗力变量 先创建一个属性id为"战斗力" ``` 战斗力: value: |- Att att = data.get("att"); double 攻击 = att.get("攻击"); double 防御 = att.get("防御"); double 吸血smin = att.smin("吸血"); //拿吸血最小百分比 double 吸血smax = att.smax("吸血"); //拿吸血最大百分比 int level = data.get("level"); //拿到当前主职业等级 return 攻击*3+防御*1.5+吸血smin*250+吸血smax*250+level*10; sign: '0' ``` 再利用变量: `%pxrpg_att_min_value_战斗力%` 显示就行了