🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[danger] 拓展的属性在物品内,玩家本体内都可以使用 <br><br><br> # 装备/宝石使用方法 > 可以利用[[工具类]QuickTools](%E7%B1%BB%E6%96%B9%E6%B3%95/QuickTools.md)创建一个 [[拓展属性]Attr](%E7%B1%BB%E6%96%B9%E6%B3%95/Attr.md) 创建一个属性ID为 '攻击' 的属性, 最小值为 100, 最大值为 150 下面方法都可以 ``` Attr att = QuickTools.createAttr("攻击",100.0,150.0); ``` ``` Attr att = QuickTools.createAttr().setId("攻击").setMin(100.0).setMax(150.0); ``` <br> 可以在[物品生成时添加](%E7%89%A9%E5%93%81%E7%94%9F%E6%88%90%E6%97%B6%E6%B7%BB%E5%8A%A0.md) <br> 也可以在[简单强化](%E5%A4%A7%E9%87%8F%E4%BE%8B%E5%AD%90/%E4%BD%9C%E8%80%85%E5%8F%91%E5%B8%83/%E7%AE%80%E5%8D%95%E5%BC%BA%E5%8C%96.md)里面给物品添加 <br> # 或者任意能调用到装备/宝石的地方: ``` #只要能拿到装备/宝石的地方 ItemObject inter = 从某处拿到的对象; ExtendData extend = inter.getData("extend"); //就可以拿到其拓展数据,固定写法 Attr att = QuickTools.createAttr("攻击",100.0,150.0); extend.set("类型1","类型2",att); //直接设置进去完事了 //如果是GUI操作的话, 还需要 inter.render(); //重新渲染一下物品排版 ``` <br> 找到你这个装备/宝石对应的[模板](../%E7%89%A9%E5%93%81%E6%98%BE%E7%A4%BA%E6%A8%A1%E6%9D%BF/%E8%A3%85%E5%A4%87%E6%A8%A1%E6%9D%BF%E7%9A%84%E4%BD%BF%E7%94%A8.md) >[danger] 使用了拓展数据要显示的话,推荐使用新版java模板模式,目前也必须使用java模板显示QAQ 这里用[装备模板](../%E7%89%A9%E5%93%81%E6%98%BE%E7%A4%BA%E6%A8%A1%E6%9D%BF/%E8%A3%85%E5%A4%87%E6%A8%A1%E6%9D%BF%E7%9A%84%E4%BD%BF%E7%94%A8.md)做为例子 ## 把这一段直接复制进去: ``` static void 你自己定义的方法名(List list, ItemObject inter) { ExtendData extend = inter.getData("extend"); //固定写法 //用之前需要判断一下是否存在,因为不是所有装备都可能有上面创建的属性 if(!extend.has("类型1","类型2")) { //没有的话就直接返回不显示在装备上 //又或者你可以添加一个空行或者默认的文本 //list.add(""); //list.add("&b未有铭刻属性"); return; } Attr 属性 = extend.get("类型1","类型2"); boolean 百分比 = 属性.isPercentage();//声明逻辑型变量 并赋值为 这个属性是否是百分比 //这里是声明字符串类型的变量 变量名为 格式化 ,同名的变量只能声明一次,可以多次调用 //注释Tip里面的内容就以 QuickTools.createAttr("攻击",100.0,150.0) 为例 String 格式化 = "&b铭刻属性: &f" + 属性.getId() + ": "; //[Tip]此时变量内容为 "&b铭刻属性: &f攻击: " if(百分比){ 格式化 = 格式化 + (属性.getMin()*100); //组合字符串时有数学运算,用括号括起来 //格式化 = 格式化 + (int)(属性.getMin()*100); //不需要小数可以这样写 }else{ 格式化 = 格式化 + 属性.getMin(); //[Tip]此时变量内容为 "&b铭刻属性: &f攻击: 100.0" //格式化 = 格式化 + (int)属性.getMin(); //不需要小数可以这样写 //[Tip]此时变量内容为 "&b铭刻属性: &f攻击: 100" } //判断最小值是不是 小于 最大值 if(属性.getMin() < 属性.getMax()){ if(百分比){ 格式化 = 格式化 + (属性.getMax()*100); //组合字符串时有数学运算,用括号括起来 //格式化 = 格式化 + (int)(属性.getMax()*100); //不需要小数可以这样写 }else{ 格式化 = 格式化 + 属性.getMax(); //[Tip]此时变量内容为 "&b铭刻属性: &f攻击: 100.0-150.0" //格式化 = 格式化 + (int)属性.getMax(); //不需要小数可以这样写 //[Tip]此时变量内容为 "&b铭刻属性: &f攻击: 100-150" } } if(百分比){ 格式化 = 格式化 + "%"; //[Tip]如果是百分比的话 此时变量内容为 "&b铭刻属性: &f攻击: 10000-15000%" } list.add(格式化);//再将格式化后的字符串添加到即将要显示的模板列表,就完成了 } ``` <br><br><br> ## 之后在这一块添加: ``` static List equipLore(UMap data) { List list = new ArrayList(); ItemObject inter = data.get("inter"); //绑定类型的显示名称 addBind(list, inter); //归属者 addAuthor(list, inter); //门派 addOcc(list, inter); //等级 addLevel(list, inter); //部位 addType(list, inter); //品质 addQuality(list, inter); //售价和评分 addSell(list, inter); 你自己定义的方法名(list,inter); // <============= 放到这就显示在评分 和 基础词条的中间了 //要怎么排版可以自己随意, 也可以不显示某些内容 ,直接加//注释掉就或删掉 //如: //addSell(list, inter); 模板就不会显示 售价和评分了 //基础词条 addBasicEntry(list, inter); //随机词条 addRandomEntry(list, inter); //宝石孔数以及宝石 addGems(list, inter); //装备描述 addIntroduce(list, inter); return list; } ```