>[danger] 现在掉落物格式跟之前的不一样
可下载 **[[旧版战斗公式转换器,密码:5lb5](https://wwjt.lanzouw.com/b02ka8aef)]** 以便一键转换
但是对于drop内的String类型转换的不是很正确, 转换后请自己检查一下
[TOC]
<br><br><br><br>
# 格式转换
## 装备
<br><br><br>
### 以前的格式
```
掉落包ID:
- 'type=equip;id=侠客木剑;prob=0.2;bind=未绑定;streng=random(1,15);hole=random(1,15)' #这是单项掉落物
```
<br><br><br>
### 现在的完整格式
>[danger] 将旧版的格式拆分成节点
> pr传过来的参数可以查看: [传递参数和类型的常用方法(重要)](%E4%BC%A0%E9%80%92%E7%9A%84%E5%90%84%E9%A1%B9%E5%8F%82%E6%95%B0.md)
```
掉落包ID:
掉落物ID_自己看得懂就行_同层级下不能重复:
type: equip #固定写法,不支持java解译器,就是type后面跟的类型
#-------------------------------------------------------------------------------
#写法1
#注意这里: 如果是常量字符串,就需要用双引号包裹起来,
id: '"侠客木剑"' #这里是支持java解译器的,返回String(字符串)类型
#写法2
# id: 'return "侠客木剑";'
#写法3 ,只有一行代码时,可以这样写
# id: |-
# "侠客木剑"
#写法4
# id: |-
# return "侠客木剑";
#写法5
# id: |-
# String 返回值 = "侠客木剑"; //这是字符串变量的写法
# return 返回值; //也可以返回String类型的变量
#-------------------------------------------------------------------------------
#掉落概率,也支持java解译器,返回boolean(逻辑型)类型
#没有此节点会100%概率掉落
prob: |-
double value = 0.2;//设定基础的掉落概率为 0.2
UMap killer = data.get("killer"); //可以拿到击杀的玩家
if(killer != null){ //这里判定一下玩家是否为null, 如果怪物非玩家击杀(如卡在方块里面死亡的)就不会传入玩家数据
Att att = killer.get("att");//拿到玩家的属性对象
double 掉落概率加成 = att.s("掉落概率加成"); //拿到属性百分比: 掉落概率加成
value = value + 掉落概率加成; //将属性加到基础掉落概率上面
USkill skillapi = killer.get("skillapi");//拿到技能相关数据
int skillLevel = skillapi.level("掉落概率加成技能");//拿到技能等级
value = value + skillLevel*0.05; //这里的作用每级提升5%的掉落概率
}
//这一行是打印在控制台的, 用于调试
//正式环境可以删除掉
System.out.println("最终掉落概率: " + value);
return Math.random() <= value; //计算是否掉落
#是否缓存(有随机属性的不推荐,amount结果>1才会生效) ,不支持java解译器
#不写的话, equip和gem默认false, item默认true
cache: false
#是否启用掉落物保护,不支持java解译器
#不写的话, 默认 true
protect: true
#保护时长, 毫秒,不支持java解译器
#不写或者0的话 会使用pxtools配置的时长
protect-time: 60000
amount: |-
/**
这是注释块,里面的任何内容都不会解析
*/
//数量也支持java解译器,同上方一样可以做属性加成
//如果返回int错误,可以强转成 double
return (double) 1;
#这里写物品生成时的参数
#有哪些参数,可以打开物品大全看最下面一排的物品
#内部所有节点都支持java解译器
args:
#物品的等级
level: "1" #数字可以直接返回
#绑定类型,返回String类型
bind: '"未绑定"' #如果是常量字符串,就需要用双引号包裹起来,也可以返回String类型的变量
#品质类型,返回String类型
quality: |-
//这是新版的RandomWeight方法,需要安装转换器提供的 java.lang.Math 工具类
return Math.RandomWeight(new int[]{2,1,3,4},new String[]{"劣质","稀有","普通","完美"});
//有想法的话也可以根据玩家相关数据进行品质质量加成
#=======以下是 equip 时才会生效的=======
#强化等级
streng: "Math.random(1,15);"
#孔数
hole: "Math.random(1,15);"
#是否鉴定,返回boolean型
appraisal: "true"
#是否绑定于玩家,返回boolean型[4.5.0+]
bind-player: "true"
```
<br><br><br>
## 游戏币等数值战利品
<br><br><br>
### 以前的格式
```
掉落包ID:
- 'type=money;amount=15;prob=0.2'
```
<br><br><br>
### 现在的格式
>[danger] 将旧版的格式拆分成节点
> pr传过来的参数可以查看: [传递参数和类型的常用方法(重要)](%E4%BC%A0%E9%80%92%E7%9A%84%E5%90%84%E9%A1%B9%E5%8F%82%E6%95%B0.md)
```
掉落包ID:
掉落物ID_自己看得懂就行_同层级下不能重复:
#money, point, pxrpgexp写法一样
type: money #固定写法,不支持java解译器,就是type后面跟的类型
#是否分享
share: false
#启用平摊
flat: false
#平摊阈值,超过总伤害(或总血量)的20%即可参与平摊(所有攻击过的都可以进行平摊)
flat-threshold: 0.2
#掉落概率,也支持java解译器,返回boolean(逻辑型)类型
prob: |-
double value = 0.2;//设定基础的掉落概率为 0.2
UMap killer = data.get("killer"); //可以拿到击杀的玩家
if(killer != null){ //这里判定一下玩家是否为null, 如果怪物非玩家击杀(如卡在方块里面死亡的)就不会传入玩家数据
Att att = killer.get("att");//拿到玩家的属性对象
double 掉落概率加成 = att.s("掉落概率加成"); //拿到属性百分比: 掉落概率加成
value = value + 掉落概率加成; //将属性加到基础掉落概率上面
USkill skillapi = killer.get("skillapi");//拿到技能相关数据
int skillLevel = skillapi.level("掉落概率加成技能");//拿到技能等级
value = value + skillLevel*0.05; //这里的作用每级提升5%的掉落概率
}
//这一行是打印在控制台的, 用于调试
//正式环境可以删除掉
System.out.println("最终掉落概率: " + value);
return Math.random() <= value; //计算是否掉落
#数量公式,也支持java解译器,返回double(小数型)类型
amount: "15"
```
<br><br><br>
## 掉落包
<br><br><br>
### 以前的格式
```
掉落包ID:
- 'type=drops;name=掉落包2'
掉落包2:
...
```
<br><br><br>
### 现在的格式
```
掉落包ID:
掉落包掉落哦:
type: drops
name: "掉落包2"
```
<br><br><br>
# 有保底的的掉落概率方法
>[danger] 例如野外BOSS, 多少只必出什么东西
```
prob: |-
//这里假设已经计算好了概率为 0.2;
double value = 0.2;
double 每次掉落所增加的概率 = 0.05;
//这样的话 (1-0.2)/0.05 = 16 次内必出, 出了后, 累加的概率会清空
System.out.println("1. 当前累加的概率为: " + Gradual.getPro("某某BOSS掉落","掉落某某某道具"));
System.out.println("2. 当前累加的总概率: " + (Gradual.getPro("某某BOSS掉落","掉落某某某道具") + value));
//注意这个重启会清空,不可做长期保存的数据(玩家UUID做第一个参数的话 玩家下线也会消失)
boolean ret = Gradual.next("某某BOSS掉落","掉落某某某道具",value,每次掉落所增加的概率);
System.out.println("4. 是否成功掉落: " + ret);
System.out.println("5. 触发后的累加概率: " + Gradual.getPro("某某BOSS掉落","掉落某某某道具"));
return ret;
```
## 效果图片
![](https://img.kancloud.cn/8f/1f/8f1ff4c9dfeee3d0e7b3227169ed3ea8_1525x663.png)
<br><br><br>
# 实测效果图片
![](https://img.kancloud.cn/4e/c5/4ec5ada0e489ce4e87a5a1f694e05dac_1667x786.png)
- 通用配置(使用px之前先看这里)
- 1分钟搭建数据库
- 1分钟搭建Redis环境教程
- 常见问题与报错
- [技能驱动]PxSkilldrive
- 介绍
- config配置
- 所有指令
- 单个技能完整配置
- MythisMobs技能配置
- 自带的技能系统[1.1.4+]
- 打开技能组
- PlaceHolderAPI变量
- 更新日志
- [商会]PxMerchant
- 介绍
- 配置文件
- 更新日志
- [帮派]PxGangs
- 介绍
- 用前必看
- 指令一览
- 职位/权限
- 帮派数据/建筑
- PlaceHolderAPI变量
- 兼容插件
- 更新日志
- [商店]PxShop
- 介绍
- 完整商店配置
- 货币/商品
- 更新日志
- [在线/成就奖励]PxLoginRewards
- 介绍
- 安装使用
- 完整配置
- 要求/奖励
- 更新日志
- [属性]PxRpg
- 介绍
- 安装使用
- 模块文件夹
- 指令
- 属性
- 属性是什么
- 如何创建属性
- 属性组
- 如何利用属性打出伤害(已过时)
- 词条
- 介绍
- 随机词条组列表[4.4.2+]
- 职业
- config[已过时]
- 创建一个职业[已过时]
- 职业[4.3.0+]
- config[4.3.0+]
- 怪物
- 天生属性[4.5.4+]
- 装备
- 装备配置文件
- 让装备获得属性
- 装备变量[已过时]
- 装备类型
- 手持武器[4.5.3+]
- 切换装备[4.5.3+]
- 物品显示模板(lore内容)
- 装备模板的使用
- 物品
- 普通物品
- 消耗品
- 回血道具[旧版]
- 代码回血/回蓝(4.3.0+)
- code代码执行(4.3.0+)
- 介绍
- 例子
- Buff相关
- 传送相关
- 执行3种指令
- 洗炼道具
- 强化类
- 强化道具
- 强化保护券
- 强化券
- 强化转移道具
- 解绑道具
- 宝石相关
- 打孔道具
- 摘除宝石
- 绑定系统
- 绑定类型
- 战斗系统
- 战斗公式变量(已弃用)
- 配置战斗公式[4.3.0+]
- 攻击类型列表
- 自定义伤害类型
- 伤害机制
- 伤害显示
- 掉落
- 掉落类型(已弃用)
- 配置怪物掉落包
- 掉落包[4.3.0+]
- Buff
- 介绍
- buff支持的词条
- 给予buff的方法
- 显示相关
- 萌芽显示
- 龙核相关
- 套装
- 介绍
- 技能[4.5.1+]
- 介绍
- 配置技能
- 技能词条介绍
- 钩子模块[4.5.1+]
- 介绍
- 监听器API
- [自身]Monitor.yml
- [装备容器]Equip Container.yml
- [鉴定]Appraisal.yml
- [绑定]Bind.yml
- [怪物]Mob.yml
- [Buff]Buff.yml
- [分解]Decompose.yml
- [战斗]Fight.yml
- [职业]Occupation.yml
- [玩家]Player Data.yml
- Mythicmobs
- 兼容mm技能(不推荐)
- 如何让MM打出伤害
- MM技能Buff(4.1.1新增)
- MM技能触发Pr伤害(4.2.1+)
- SkillAPI(4.3.0)
- 同步SkillAPI职业
- 战斗公式变量(已弃用)
- 个人变量(已弃用)
- 覆盖技能伤害
- Buff(4.1.1新增)
- 给Mob添加Buff(4.1.1新增)
- 治疗/回蓝组件(4.3.0+)
- PlaceholderAPI变量
- 统计(4.1.0更新)
- [附属]装备经验和升级
- 使用教程
- [附属]物品拓展功能
- 介绍
- [ExtendGui]窗口环境的所有方法
- [ExtendData]拓展数据所有方法
- 类方法
- [工具类]QuickTools
- [拓展数据]ExtendData
- [拓展属性]Attr
- [拓展技能]SkillLv
- 物品生成时添加
- 属性拓展
- 技能拓展[1.0.1+]
- 大量例子
- [福利]提交活动
- 作者发布
- 简单强化
- 界面锁定
- 延迟强化
- 菜单例子
- 吞噬物品永久保存
- 安笙
- 作者介绍
- 词条强化[暂无法使用 等待更新]
- 酒桶
- 作者介绍
- 更新日志
- [附属]萌芽装备容器
- 介绍
- 例子
- 常用工具类
- [数据容器]UMap
- [属性对象]Att
- [对象BUFF]BuffContainer
- [技能对象]USKill
- 接入PxRpg插件(开发者)
- 注册模块入口
- 接入属性
- 模块配置读取
- 接入物品
- 道具生成
- 道具数据获取
- 设置数据并渲染
- 自定义道具组件
- 具有生成参数的组件
- 集成模块介绍
- 更新日志
- 视频预览
- 4.3.0+新版公式教程
- 简介(内含旧版公式转换器)
- 教程(战斗公式篇)(必先学)
- 传递参数和类型的常用方法(重要)
- 单例属性教程(含战斗力变量教程)
- 道具消耗品(含属性加成)
- 装备/宝石/怪物的属性词条
- Buff新版词条(内含属性加成)
- Drop掉落物配置(内含属性掉落加成)
- [副本]PxInstance-Pro
- 介绍
- 世界规则
- 指令详解
- 副本规则(rule)
- 触发器(trigger)
- 触发器参数详解
- 条件(condition)
- 事件(event)
- 副本流程详解
- 根据难度初始化怪物
- 判定通关条件,发放通关奖励
- 副本倒计时/超时处理
- 动态创建倒计时
- 结算奖励
- 副本自带变量
- PlaceholderAPI变量
- 更新日志
- [副本]PxInstace(不再更新)
- 介绍
- 安装使用
- 配置教程
- PlaceholderAPI变量
- 流程配置
- [队伍]PxTeam-Pro
- 介绍
- HUD设置教程
- 变量大全
- 配置文件
- config.yml
- 开发者
- 调用API
- 更新日志
- [任务]BookQuest
- 介绍
- 完整任务配置
- 4种状态显示[4.2.1+]
- 要求/奖励
- 更新日志
- [对话]PxDialogue
- 介绍
- 完整的对话配置
- 一个住酒店的例子
- 更新日志
- [采集]PxCollect
- 介绍
- 作物配置
- 区域生成
- 种植配置
- 条件/事件
- 更新日志
- [技能快捷键]PxQuickSkill
- 介绍
- [仓库]PxWarehouse
- 介绍
- 更新日志
- [拍卖行]PxAuction
- 介绍
- [队伍]PxTeam(不再更新)
- 介绍
- [锻造]PxForging
- 介绍
- 材料/产物
- 完整的锻造配置
- 更新日志
- [邮箱]PxEmail
- 介绍
- PlaceHolderAPI变量
- 编辑邮件模板
- 编辑玩家群
- 编辑系统类型
- 编辑定时邮件
- 权限
- 更新日志
- [MM管理]PxMMSpawner
- 介绍
- 更新日志
- [前置]PxTools(通用部分)
- 介绍
- 掉落物显示[1.12.2+]
- 函数[弃用]
- abs
- ceil
- decimals
- floor
- format
- gradual
- if
- max
- min
- pow
- prd
- random
- randomint
- randomweight
- repeat
- round
- sum
- time
- 要求/奖励(1.9.0+)
- 时间要求(1.9.1+)
- 条件/事件
- 指令
- 事件组
- PlaceholderAPI变量
- 更新日志
- 一些通用的工具类
- 介绍[必看]
- [经济]Vault
- [点券]PlayerPoints
- PxTools相关
- [玩家变量]VarAPI
- [玩家标签]TagAPI
- [玩家计数器]CountAPI
- [时间相关]Date
- [数学函数]Math
- [变量API]PlaceholderAPI
- [自定义冷却]CooldownUtil
- [数字千分化]NumFormat
- [萌芽API]GermAPI
- 消息转发[1.12.3+]