耳语海岸
艾泽拉斯避难谷地
Hi,请  登录  或  注册

LUA功能:成就升级

一、概述

本脚本用于 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 = 10MAX_LEVEL = 79baseProbability = 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)
打赏
未经允许不得转载:GSWXY » LUA功能:成就升级

评论 8

评论前必须登录!

立即登录   注册

  1. #1

    第一次检查后概率为0.215,未升级,可以理解为五个成就 能生一级啊?

    云天明4个月前 (08-06)
  2. #2

    很专业!!!

    80b7mze84个月前 (08-07)
  3. #3

    小号福利越来越好了

    劣人3个月前 (08-09)
  4. #4

    真的很专业!

    萌寶3个月前 (08-09)
  5. #5

    大家升级记得要控制下 成就欲望啊 前期能控制成就 就控制下 后期升级升不动了 再集中成就哈~~~

    云天明3个月前 (08-15)
    • 重新建号是不是更好?

      雅梵丶娜3个月前 (08-20)
  6. #6

    感谢楼主无私分享

    4ab0ew1w3个月前 (08-26)

耳语海岸

WLK版本,定位于RP服务器,趣味养老,请注意:本服仅为技术交流和学习使用,欢迎广泛传播,不作为商业用途。

加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫