Skip to content

gswxy/AchievementLevelUp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AchievementLevelUp Script

概述

本脚本用于 AzerothCore 服务端,提供了一个根据玩家成就数量变化进行等级提升的机制。脚本包括配置项、概率计算、日志记录和事件处理等功能。

功能描述

配置项

  • CHECK_INTERVAL: 检查玩家成就数量变化的间隔时间,单位为毫秒,默认值为60000(即1分钟)。
  • MIN_LEVEL: 允许参与成就升级的最低等级,默认为10。
  • MAX_LEVEL: 允许参与成就升级的最高等级,默认为79。
  • 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。日志格式如下:

[时间戳] PlayerID: 玩家ID, CurrentLevel: 当前等级, NewLevel: 新等级, Probability: 升级概率

事件处理

  • OnPlayerLogin: 玩家登录时注册检查事件,并初始化玩家的成就数量和累加概率。
  • OnPlayerLogout: 玩家登出时移除相关事件,并清除玩家数据。

使用说明

将脚本放置于服务器的 lua_scripts 目录下,并确保脚本路径正确。玩家登录后,脚本将开始根据成就数量变化自动检查和更新玩家等级。

About

适用于Azerothcore,可以实现玩家在获得成就时候按概率获得升级奖励。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages