游戏脚本核心数据结构说明书
一、概述
本文档详细定义了游戏脚本开发中所使用的核心数据结构,包括类、枚举等,涵盖了游戏中角色、物品、地图、技能、触发器等关键模块的属性和关联关系。适用于游戏脚本开发人员、维护人员以及相关测试人员,作为脚本编写、功能扩展和问题排查的参考依据。
二、核心类定义
2.1 基础配置类
2.1.1 lualib 系统配置类
| 属性名 |
类型 |
说明 |
| MaxPets |
intege |
最大宠物数量 |
| Time |
integer |
系统经过时间 |
| RunInterval |
integer |
角色基础跑步间隔 |
| WalkInterval |
integer |
角色基础移动间隔 |
| AttackInterval |
integer |
角色基础攻击间隔 |
| SpeedInterval |
integer |
角色基础施法间隔 |
| SystemNPC |
MapObject |
系统 NPC 对象 |
| ItemNPC |
MapObject |
物品 NPC 对象 |
| SkillNPC |
MapObject |
技能 NPC 对象 |
| QuestNPC |
MapObject |
任务 NPC 对象 |
2.2 容器与引用类
2.2.1 Ref 引用类
空类,用于对象引用管理,可根据实际需求扩展属性。
2.2.2 Include 包含类
空类,用于模块包含关系定义,可根据实际需求扩展属性。
2.2.3 Point 坐标类
空类,用于表示游戏内的坐标点,可扩展 X、Y 等坐标属性。
2.2.4 MapObjects 地图对象集合
| 属性名 |
类型 |
说明 |
| Count |
intege |
地图对象的数量 |
2.2.5 EntityObjects 实体对象集合
| 属性名 |
类型 |
说明 |
| Count |
integer |
实体对象的数量 |
2.2.6 UserItems 用户物品集合
空类,用于存储用户拥有的物品列表,可通过索引访问具体的 UserItem 对象。
2.2.7 HeroInfos 英雄信息集合
| 属性名 |
类型 |
说明 |
| list |
HeroInfo[] |
英雄信息数组 |
| Count |
integer |
英雄的数量 |
2.3 角色相关类
2.3.1 HeroInfo 英雄对象信息类
| 属性名 |
类型 |
说明 |
| ObjectID |
integer |
英雄对象唯一 ID |
| Name |
string |
英雄名称 |
| Level |
integer |
英雄等级 |
| IClass |
integer |
英雄职业编码 |
| IGender |
integer |
英雄性别编码 |
| CurrentHero |
boolean |
是否为当前使用的英雄 |
2.3.2 GuildObject 行会对象类
| 属性名 |
类型 |
说明 |
| Name |
string |
工会名称 |
| Gold |
integer |
工会金币数量 |
| Lv |
integer |
工会等级 |
| Exp |
integer |
工会经验值 |
2.3.3 MapObject 地图对象基类
| 属性名 |
类型 |
说明 |
| ObjectID |
intege |
对象唯一 ID |
| Name |
string |
对象名称 |
| CurrentMap |
Map |
当前所在地图 |
| RaceType |
integer |
种族类型编码 |
| CurrentLocation |
Point |
当前坐标 |
| Dir |
integer |
当前朝向 |
| OperateTime |
integer |
操作时间间隔 |
| Blocking |
boolean |
是否为阻挡物 |
2.3.4 NPCObject NPC 对象类
继承自 MapObject,扩展属性如下:
| 属性名 |
类型 |
说明 |
| HasQuest |
boolean |
是否存在任务 |
| CanDoQuest |
boolean |
是否可接任务 |
| CanFishQuest |
boolean |
是否存在钓鱼任务 |
2.3.5 EntityObject 实体对象类
继承自 MapObject,涵盖玩家、怪物、英雄等可交互实体,属性如下:
| 属性名 |
类型 |
说明 |
| HP |
integer |
当前血量 |
| MaxHP |
integer |
最大血量 |
| PercentHealth |
integer |
当前血量百分比(不含 %) |
| MP |
integer |
当前蓝量 |
| MaxMP |
integer |
最大蓝量 |
| Exp |
integer |
当前经验值 |
| MaxExp |
integer |
升级所需最大经验值 |
| Level |
integer |
等级 |
| Gold |
integer |
金币数量 |
| PKPoints |
integer |
PK 点数 |
| Gender |
integer |
性别(0 = 男性,1 = 女性) |
| GetDC |
integer |
攻击随机值(含幸运算法) |
| GetMC |
integer |
魔法随机值(含幸运算法) |
| GetSC |
integer |
道术随机值(含幸运算法) |
| GetMAC |
integer |
魔抗随机值(不含幸运算法) |
| GetAC |
integer |
防御随机值(不含幸运算法) |
| IsPlayer |
boolean |
是否为玩家 |
| AsPlayer |
PlayerObject |
转换为玩家对象 |
| IsHero |
boolean |
是否为英雄 |
| AsHero |
HeroObject |
转换为英雄对象 |
| IsMonster |
boolean |
是否为野怪 |
| AsMonster |
MonsterObject |
转换为野怪对象 |
| IsHuman |
boolean |
是否为人型(玩家 / 英雄) |
| AsHuman |
HumanObject |
转换为人型对象 |
| Dead |
boolean |
是否死亡 |
| CanRegen |
boolean |
是否可自动恢复属性 |
| CanMove |
boolean |
是否可传送 |
| CanAttack |
boolean |
是否可攻击 |
| CanWalk |
boolean |
是否可走动 |
| CanRun |
boolean |
是否可跑动 |
| InTrapRock |
boolean |
是否处于陷阱中 |
| HasMaster |
boolean |
是否有主人 |
| MasterUid |
integer |
主人唯一 ID |
| CanTame |
boolean |
是否可被驯服(仅怪物有效) |
2.3.6 PlayerObject 玩家对象类
继承自 EntityObject,扩展属性如下:
| 属性名 |
类型 |
说明 |
| Class |
integer |
职业编码(对应枚举的整数形式) |
| MirClass |
MirClass |
职业枚举 |
| BagSize |
integer |
当前背包容量 |
| StorageSize |
integer |
当前仓库容量 |
2.3.7 MonsterObject 野怪对象类
继承自 EntityObject,无额外扩展属性,可根据实际需求补充。
2.3.8 HeroObject 英雄实体类
继承自 EntityObject,无额外扩展属性,可根据实际需求补充。
2.3.9 HumanObject 人型对象类
继承自 EntityObject,无额外扩展属性,可根据实际需求补充。
2.3.10 EntityCopy 实体属性快照类
| 属性名 |
类型 |
说明 |
| GetDC |
integer |
攻击随机值(含幸运算法) |
| GetMC |
integer |
魔法随机值(含幸运算法) |
| GetSC |
integer |
道术随机值(含幸运算法) |
| GetMAC |
integer |
魔抗随机值(不含幸运算法) |
| GetAC |
integer |
防御随机值(不含幸运算法) |
| PK |
integer |
PK 点数 |
| Level |
integer |
等级 |
| HP |
integer |
当前血量 |
| MaxHP |
integer |
最大血量 |
| MP |
integer |
当前蓝量 |
| MaxMP |
integer |
最大蓝量 |
2.4 技能与伤害相关类
2.4.1 BaseData 基础数据类
| 属性名 |
类型 |
说明 |
| Source |
DamageSource |
伤害来源类型 |
| TargetID |
integer |
锁定目标 ID(可修改) |
| Name |
string |
技能名称 |
| KeyName |
string |
技能索引标识 |
| Value |
integer |
伤害值 / 治疗值 |
| IsCritical |
boolean |
是否暴击 |
| DamageWeapon |
boolean |
是否损伤武器耐久 |
| DelayTime |
integer |
实际技能延迟时间(可修改) |
| DelayBase |
integer |
基础技能延迟时间(不可修改) |
| RigidityTime |
integer |
实际技能后摇时间(可修改) |
| RigidityBase |
integer |
基础技能后摇时间(不可修改) |
| EntityCopy |
EntityCopy |
施法人属性快照 |
| ID |
integer |
技能 ID |
| Level |
integer |
技能等级 |
| Radius |
integer |
技能作用范围 |
| Point |
Point |
技能起始坐标 |
| Termination |
boolean |
是否中断技能(中断后不执行后续操作) |
| MomentDash |
boolean |
野蛮冲撞是否使用瞬移 |
| this |
integer |
属性访问器标识 |
2.4.2 SkillData 技能数据类
| 属性名 |
类型 |
说明 |
| Source DamageSource |
伤害来源类型(固定为技能) |
|
| TargetID |
integer |
锁定目标 ID(仅读) |
| Name |
string |
技能名称 |
| KeyName |
string |
技能索引标识 |
| BaseData |
BaseData |
初始技能基础数据 |
| Value |
integer |
伤害值 / 治疗值 |
| IsCritical |
boolean |
是否暴击 |
| DamageWeapon |
boolean |
是否损伤武器耐久 |
| EntityCopy |
EntityCopy |
施法人属性快照 |
| ID |
integer |
技能 ID |
| Level |
integer |
技能等级 |
| Radius |
integer |
技能作用范围 |
| Termination |
boolean |
是否中断技能 |
| MomentDash |
boolean |
野蛮冲撞是否使用瞬移 |
| this |
integer |
属性访问器标识 |
注:MPower 和 Power 的计算方式为 Random (Base, Bonus+Base),即从基础值到基础值加额外值的范围内随机取值。
2.4.3 BuffData Buff 数据类
| 属性名 |
类型 |
说明 |
| Source DamageSource |
伤害来源类型(固定为 Buff) |
|
| ValueBase |
integer |
基础数值(用于计算匹配) |
| Value |
integer |
实际数值(增减 HP 等) |
| Buff |
Buff |
对应的 Buff 对象 |
| IsCritical |
boolean |
是否暴击 |
| this |
integer |
属性访问器标识 |
2.4.4 DamageData 伤害数据类
| 属性名 |
类型 |
说明 |
| Source |
DamageSource |
伤害来源类型(固定为脚本) |
| ValueBase |
integer |
基础数值(用于计算匹配) |
| Value |
integer |
实际伤害值(增减 HP) |
| IsCritical |
boolean |
是否暴击 |
| this |
integer |
属性访问器标识 |
2.5 物品相关类
2.5.1 ItemObject 物品基类
空类,作为所有物品对象的父类,可根据实际需求扩展属性。
2.5.2 UserItem 用户物品类
| 属性名 |
类型 |
说明 |
| ObjectID |
integer |
物品唯一 ID |
| Name |
string |
物品名称 |
| Count |
integer |
当前物品数量 |
| MaxCount |
integer |
最大可堆叠数量 |
| Bind |
BindMode |
物品绑定模式 |
| ItemWhere |
ItemWhereType |
物品所在位置类型 |
| ItemWhereIndex |
integer |
物品所在位置下标 |
| HasDura |
boolean |
是否具有耐久度 |
| CurrentDura |
integer |
当前耐久度 |
| MaxDura |
integer |
最大耐久度 |
| Weight |
integer |
物品总重量(含堆叠) |
| AddedStats |
Stats |
额外极品属性(可能为空) |
| ExpireStart |
boolean |
是否已开始计时(无超时 / 未装备的超时装备为 false) |
| ExpireTime |
integer |
剩余超时时间(毫秒,-1 表示无超时) |
| Equip |
integer[] |
装备属性数组(可能为空) |
| Info |
ItemInfo |
物品基础信息 |
2.5.3 ItemInfo 物品基础信息类
| 属性名 |
类型 |
说明 |
| ID |
integer |
物品表唯一 ID |
| KeyName |
string |
物品表索引标识 |
| Name |
string |
物品名称 |
| NameColor |
string |
名称显示颜色 |
| Type |
integer |
物品类型编码(对应物品类型表) |
| Class |
ItemTypeClass |
物品分类枚举 |
| Shape |
integer |
物品形状(如护身符、毒药等专用) |
| Weight |
integer |
单个物品重量 |
| Sets |
string[] |
所属套装 ID 集合 |
| Buffs |
string[] |
自带 Buff 标识集合 |
| ITags |
integer[] |
标签编码集合 |
| Material |
integer |
物品素材表索引 |
| StackSize |
integer |
最大堆叠数量 |
| Price |
integer |
基础售价(金币) |
| Bind |
BindMode |
默认绑定模式 |
| Stats |
Stats |
基础属性 |
| ToolTip |
string |
物品描述文本 |
| Durability |
integer |
最大耐久度 |
| InfoType |
InfoType |
物品详细类型 |
| ItemMaterial |
ItemMaterial |
物品素材信息 |
2.5.4 InfoType 物品类型详情类
| 属性名 |
类型 |
说明 |
| ID |
integer |
类型唯一 ID |
| Name |
string |
类型名称 |
| Group |
string |
类型分类分组 |
| DamageDura |
integer |
受击时的耐久消耗 |
| AttackDura |
integer |
攻击时的耐久消耗 |
| Equip |
integer[] |
装备属性数组(可能为空) |
2.5.5 ItemMaterial 物品素材类
| 属性名 |
类型 |
说明 |
| ID |
integer |
素材唯一 ID |
| Name |
string |
素材名称 |
| BagLookFileName |
string |
背包显示图片文件名 |
| BagLookID |
integer |
背包显示图片 ID |
| BagAnyEffect |
boolean |
背包是否仅使用动态图 |
| BagEffectLookStartID |
integer |
背包动态图起始 ID |
| BagEffectNumber |
integer |
背包动态图总张数 |
| BagEffectJumpNumber |
integer |
背包动态图跳过张数 |
| BagEffectSpeed |
integer |
背包动态图播放速度 |
| BagEffectBlend |
boolean |
背包动态图是否启用混合模式 |
| BagEffectFileName |
string |
背包动态图文件名 |
| InnerLookFileName |
string |
内观显示图片文件名 |
| InnerLookID |
integer |
内观显示图片 ID |
| InnerAnyEffect |
boolean |
内观是否仅使用动态图 |
| InnerEffectLookStartID |
integer |
内观动态图起始 ID |
| InnerEffectNumber |
integer |
内观动态图总张数 |
| InnerEffectSpeed |
integer |
内观动态图播放速度 |
| InnerEffectBlend |
boolean |
内观动态图是否启用混合模式 |
| InnerEffectFileName |
string |
内观动态图文件名 |
| ShowFileName |
string |
外观显示文件名称 |
| UseSound |
string |
使用时的音效文件 |
| HitSound |
string |
命中时的音效文件 |
| AttackSound |
string |
攻击时的音效文件 |
2.6 地图类
2.6.1 Map 地图类
| 属性名 |
类型 |
说明 |
| ID |
integer |
地图唯一下标(用于唯一性判断) |
| KeyName |
string |
地图唯一标识 ID |
| Title |
string |
地图名称 |
| Width |
integer |
地图宽度 |
| Height |
integer |
地图高度 |
| NoTeleport |
boolean |
是否禁止传送 |
| NoReincarnation |
boolean |
是否禁止复活 |
三、枚举定义
3.1 DamageSource 伤害来源枚举
| 枚举值 |
说明 |
附加信息 |
| System = 0 |
系统伤害 |
- |
| Skill = 1 |
技能伤害 |
附带技能参数 |
| Buff = 2 |
Buff 伤害 |
附带 Buff 参数 |
| Script = 3 |
脚本伤害 |
- |
3.2 TriggerType 触发器枚举
| 枚举值 |
说明 |
触发参数 |
返回值 |
|
| Login = 0 |
登录触发 |
(player) |
- |
|
| LoginOut = 1 |
登出前触发 |
(player) |
- |
|
| Die = 2 |
死亡触发 |
(player, Attacker) |
- |
|
| MonsterDieDropItem = 3 |
怪物死亡掉落物品触发 |
(monster, userItem) |
boolean(确认是否掉落) |
|
| Walk = 4 |
走动触发 |
(self) |
- |
|
| Run = 5 |
跑动触发 |
(self) |
- |
|
| Pushed = 6 |
被推动触发 |
(self, target, distance) |
- |
|
| Dying = 7 |
临死触发 |
(player, target, IData) |
- |
|
作者:yilin01 创建时间:2024-12-25 11:32
最后编辑:yilin01 更新时间:2025-12-08 16:49