LUA功能:成就升级
一、概述 本脚本用于 AzerothCore 服务端,由GSWXY/耳语海岸开发。提供了一个根据玩家成就数量变化进行等级提升的机制。脚本包括配置项、概率计算、日志记录和事件处理等功能。 二、功能描述 (一)配置项 (二)基础概率 (三)概率…
GSWXY
Archivist & Author

一、概述
本脚本用于 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会员直接解锁
Conversation