支持动态加载、卸载以及版本升级的数据迁移。其中通过Module注册的回调卸载时自动清理
name
当前模块名字, string类型migrations
升级迁移列表, 数组类型, 每项元素需要有version
,name
,value
三个属性version
版本号 number类型name
名称 string类型value
sql或者具体方法 string或function类型
-
ModuleBase:regCallback(eventNameOrCallbackKeyOrFn, fn)
注册回调-
参数
eventNameOrCallbackKeyOrFn
- 可以传入NL.Reg*对应的事件名称,如NL.RegLoginEvent 传入
LoginEvent
- 自定义的名称用于非全局回调(如NPC创建回调)
- 匿名回调(如NPC创建回调)
- 可以传入NL.Reg*对应的事件名称,如NL.RegLoginEvent 传入
-
参数
fn
- 回调函数,如果eventNameOrCallbackKeyOrFn是匿名回调,fn可以传nil
-
返回值
eventNameOrCallbackKeyOrFn
,lastIx
,fnIndex
eventNameOrCallbackKeyOrFn
函数的全局Key,用于传入NL.Reg*lastIx
当前模块下的注册序列fnIndex
全局注册序列
-
-
ModuleBase:unRegCallback(eventNameOrCallbackKey, fnOrFnIndex)
反注册回调-
参数
eventNameOrCallbackKey
- 可以传入NL.Reg*对应的事件名称,如NL.RegLoginEvent 传入
LoginEvent
- 自定义的名称用于非全局回调(如NPC创建回调)
- 可以传入NL.Reg*对应的事件名称,如NL.RegLoginEvent 传入
-
参数
fnOrFnIndex
- 可入传入注册用的回调函数
- 也可以fnIndex 全局注册序列
-
-
ModuleBase:onLoad()
模块注册钩子,由具体实现模块实现 -
ModuleBase:onUnload()
模块卸载钩子,由具体实现模块实现 -
ModuleBase:logInfo(msg, ...)
打印日志 -
ModuleBase:logDebug(msg, ...)
打印日志 -
ModuleBase:logWarn(msg, ...)
打印日志 -
ModuleBase:logError(msg, ...)
打印日志 -
ModuleBase:log(level, msg, ...)
打印日志 -
ModuleBase:addMigration(version, name, sqlOrFunction)
创建一个新迁移
具体模块加载在ModuleConfig.lua
加载Modules
下的Module,Module的作用域相互独立,除非手动指定全局变量,否则不会影响其他Module,如需访问其他Module可通过getModule获取
loadModule('admin') --加载admin模块
加载Module
目录下的普通lua, 普通lua都会在一个公共的作用域下执行。除非手动指定为全局变量,否则只会影响普通lua,module不能访问相关变量/方法
useModule('Welcome') --加载Welcome
获取对应的Module
卸载Module
重新加载Module
- admin 模块动态管理等
- ng 内挂相关
- shop 东门商店NPC配置
- warp 村落传送
- warp2 练级点传送
- welcome 示例模块
- itemPowerUp.lua 装备强化
- manaPool 血魔池
- bag 背包切换
- autoRegister 自动注册
- petExt/charExt/itemExt 公共扩展模块
- petLottery 宠物抽奖
- petRebirth 宠物转生
- autoUnlock 自动解锁崩端导致的卡号
- AI扩展
- BattleEx.lua 战斗相关扩展
- Char.lua 人物相关扩展
- DamageHook.lua 伤害修改补丁
- Data.lua Data相关
- Item.lua 物品相关
- LowCpuUsage.lua 减低cpu使用补丁
- Protocol.lua 封包拦截相关
- Recipe.lua 配方相关
- DummyChar.lua 假人相关
- NL.lua 扩展事件相关
- NLG_ShowWindowTalked_Patch.lua NLG.ShowWindowTalked 长度补丁
- Addresses.lua 基础地址
- Field.lua Field相关
NL.RegEnemyCommandEvent
怪物行动事件NL.RegCharaDeletedEvent
角色删除事件NL.RegResetCharaBattleStateEvent
角色战斗结束事件NL.RegBattleDamageEvent
原来的RegDamageCalculateEventNL.RegDamageCalculateEvent
补丁后的战斗伤害事件NL.RegBattleHealCalculateEvent
战斗治疗事件NL.RegDeleteDummyEvent
假人删除事件NL.RegItemExpansionEvent
用于物品说明处理NLG.FindUser
查找在线用户Map.GetDungeonExpireTime
获取迷宫剩余时间Map.GetDungeonExpireAt
获取迷宫过期时间Char.GetCharPointer
获取角色PtrChar.GetWeapon
获取武器Char.GiveItem
添加物品,支持静默模式Char.DelItem
删除物品,支持静默模式Char.DelItemBySlot
删除指定位置的物品Char.UnsetWalkPostEvent
移除事件Char.UnsetWalkPreEvent
移除事件Char.UnsetPostOverEvent
移除事件Char.UnsetLoopEvent
移除事件Char.UnsetTalkedEvent
移除事件Char.UnsetWindowTalkedEvent
移除事件Char.UnsetItemPutEvent
移除事件Char.UnsetWatchEvent
移除事件Char.MoveArray
角色连续移动Char.JoinParty
加入队伍Char.LeaveParty
离开队伍Char.MoveItem
移动物品Char.IsValidCharPtr
Char.IsValidCharIndex
Char.GetDataByPtr
根据Ptr获取数据Char.IsDummy
是否是假人Char.CreateDummy
创建假人Char.DelDummy
删除假人Char.CalcConsumeFp
用于获取技能所需要的fpChar.SetPetDepartureState
设置宠物战斗状态Char.SetPetDepartureStateAll
设置宠物战斗状态Char.TradeItem
直接交易物品Char.TradePet
直接交易宠物Char.GetEmptyItemSlot
获取空物品栏Char.GetEmptyPetSlot
获取空宠物栏Battle.UnsetWinEvent
移除事件Battle.UnsetPVPWinEvent
移除事件Battle.GetNextBattle
获取下一场连战IdBattle.SetNextBattle
设置下一场连战IdBattle.GetTurn
获取当前回合Battle.ActionSelect
选择战斗指令Battle.IsWaitingCommand
判断是否等待指令Data.ItemsetGetIndex
获取ItemsetIndexData.ItemsetGetData
获取Itemset数据Data.GetEncountData
获取Encount数据Data.SetMessage
获取MsgData.GetMessage
修改/新增Msg,动态创建物品时大概会有用Data.EnemyGetDataIndex
获取EnemyDataIndexData.EnemyGetData
获取Enemy数据Data.EnemyBaseGetDataIndex
获取EnemyBaseDataIndexData.EnemyBaseGetData
获取EnemyBase数据Item.GetSlot
获取ItemIndex对应位置Protocol.makeEscapeString
编码字符串Protocol.makeStringFromEscaped
解码字符串Protocol.nrprotoEscapeString
封包编码字符串Protocol.nrprotoUnescapeString
封包解码字符串Protocol.Send
发送自定义封包Protocol.GetCharIndexFromFd
通过fd获取charIndexProtocol.OnRecv
拦截封包Recipe.GiveRecipe
添加配方Recipe.RemoveRecipe
删除配方regGlobalEvent
注册全局事件,代替Delegate,Delegate也是包装这个方法removeGlobalEvent
移除注册事件