一、概述
本脚本用于 AzerothCore 服务端,由GSWXY/耳语海岸开发。提供了一个根据玩家成就数量变化进行等级提升的机制。脚本包括配置项、概率计算、日志记录和事件处理等功能。
二、功能描述
(一)配置项
- CHECK_INTERVAL:检查玩家成就数量变化的间隔时间,单位为毫秒,默认值为60000(即1分钟)。
- MIN_LEVEL:允许参与成就升级的最低等级,默认为10。
- MAX_LEVEL:允许参与成就升级的最高等级,默认为80。
- MAX_ACCUMULATED_PROBABILITY:累加概率的最大值,默认值为1。
(二)基础概率
- baseProbability: 基础概率,默认值为0.3。
(三)概率计算公式
- 衰减系数:
k
的计算公式如下:
k = math.log(10) / (MAX_LEVEL - MIN_LEVEL)
- 升级概率:使用指数衰减函数计算升级概率:
probability = baseProbability * math.exp(-k * (level - MIN_LEVEL))
其中:
baseProbability
是基础概率。level
是玩家当前的等级。k
是衰减系数。
(四)例子
假设 MIN_LEVEL = 10
,MAX_LEVEL = 79
,baseProbability = 0.3
。如果玩家当前等级为20,衰减系数 k
计算如下:
k = math.log(10) / (79 - 10) ≈ 0.0332
则玩家的升级概率为:
probability = 0.3 * math.exp(-0.0332 * (20 - 10)) ≈ 0.215
(五)累加概率机制
玩家在多次检查中未升级的情况下,系统会累积其概率。例如:
- 初始累加概率为0
- 第一次检查后概率为0.215,未升级
- 累加概率为0.215
- 第二次检查时,总概率为
0.215 + 0.215 = 0.43
如果总概率超过 MAX_ACCUMULATED_PROBABILITY
,则限制在最大值:
totalProbability = min(totalProbability, 1)
三、日志记录
当玩家升级时,系统将记录相关信息到日志文件 AchievementLevelUp.log
,如果是Linux系统,请保证所有文件的777权限。日志格式如下:
[时间戳] PlayerID: 玩家ID, CurrentLevel: 当前等级, NewLevel: 新等级, Probability: 升级概率
四、事件处理
- OnPlayerLogin: 玩家登录时注册检查事件,并初始化玩家的成就数量和累加概率。
- OnPlayerLogout: 玩家登出时移除相关事件,并清除玩家数据。
五、使用说明
将脚本放置于服务器的 lua_scripts
目录下,并确保脚本路径正确。玩家登录后,脚本将开始根据成就数量变化自动检查和更新玩家等级。
六、代码下载
隐藏内容,解锁需要先评论本文
评论后刷新解锁 VIP直接解锁
-=||=-收藏赞 (10)
第一次检查后概率为0.215,未升级,可以理解为五个成就 能生一级啊?
只是举例,你等级越来越高,基础概率越低
很专业!!!
小号福利越来越好了
真的很专业!
大家升级记得要控制下 成就欲望啊 前期能控制成就 就控制下 后期升级升不动了 再集中成就哈~~~
重新建号是不是更好?
感谢楼主无私分享