我认为每一个服务器端NPC对象,可以具有以下三类属性:
1. 身体方面的特性,我是用一个vdb速查表来描述:
名称
行动类型(水栖/陆栖/空栖/空陆双栖/水陆双栖)
动物的陆地行走模式,用作客户端在动物行走时调整其身体姿态用.
对象的载具类型
对象的脚步声类型
对象的脚印类型
对象脚印的尺寸比例
动物的天敌ID(在魔兽里面有没有看到狼吃鸡?)
2. 行为处理方面的特性,我是用一个类似C++的类描述文本来定义:
;------------------------------------------------------------ 类定义:
1. 身体方面的特性,我是用一个vdb速查表来描述:
名称
行动类型(水栖/陆栖/空栖/空陆双栖/水陆双栖)
动物的陆地行走模式,用作客户端在动物行走时调整其身体姿态用.
对象的载具类型
对象的脚步声类型
对象的脚印类型
对象脚印的尺寸比例
动物的天敌ID(在魔兽里面有没有看到狼吃鸡?)
2. 行为处理方面的特性,我是用一个类似C++的类描述文本来定义:
;------------------------------------------------------------ 类定义:
; 可使用/打开/拾取的物体类
class
{
id = 1000
name = "UsableObject"
class
{
id = 1000
name = "UsableObject"
mUse = "@use"
mIsCanUsing = "@IsCanUsing"
}
mIsCanUsing = "@IsCanUsing"
}
;------------------------------------------
; 原地停留的敌对NPC
class
{
id = 1001
name = "StayingNPC"
OnlyCreature = TRUE
class
{
id = 1001
name = "StayingNPC"
OnlyCreature = TRUE
svAttach = 100
svDefense = 100
svHealth = 100
svMagic = 100
svCampToPlayer = ENEMY
svDefense = 100
svHealth = 100
svMagic = 100
svCampToPlayer = ENEMY
dvItemSlot1 = 0 ; 物品ID为0表示无物品
dvItemSlot2 = 0
dvItemSlot3 = 0
dvItemSlot4 = 0
dvItemSlot5 = 0
dvItemSlot6 = 0
dvItemSlot2 = 0
dvItemSlot3 = 0
dvItemSlot4 = 0
dvItemSlot5 = 0
dvItemSlot6 = 0
dvSkillSlot1 = 0 ; 技能ID为0表示无技能
dvSkillSlot2 = 0
dvSkillSlot3 = 0
dvSkillSlot4 = 0
dvSkillSlot5 = 0
dvSkillSlot6 = 0
dvSkillSlot2 = 0
dvSkillSlot3 = 0
dvSkillSlot4 = 0
dvSkillSlot5 = 0
dvSkillSlot6 = 0
smIdle
{
manager = "@sm_stay"
}
{
manager = "@sm_stay"
}
smFighting
{
manager = "@sm_fight"
}
{
manager = "@sm_fight"
}
smOutOfControl
{
manager = "@sm_OutOfControl"
}
{
manager = "@sm_OutOfControl"
}
mDeadLost = "@DeadLost"
mIsEnterFighting = "@IsEnterFighting"
}
mIsEnterFighting = "@IsEnterFighting"
}
;------------------------------------------
; 四处游荡的敌对NPC
class
{
id = 1002
name = "WanderingNPC"
BaseClass = "StayingNPC" ; 从该类继承其它成员
3. 其它散乱没有共性的行动方面的特性,如:
NPC等级
NPC精英等级
经过以上分类处理后,可以很轻松地实现相关的designer附加和服务器端处理程序.
class
{
id = 1002
name = "WanderingNPC"
BaseClass = "StayingNPC" ; 从该类继承其它成员
smIdle
{
manager = "@sm_wander"
}
}
{
manager = "@sm_wander"
}
}
;------------------------------------------
; 按路线巡逻的敌对NPC
class
{
id = 1003
name = "PatrollingNPC"
BaseClass = "StayingNPC" ; 从该类继承其它成员
class
{
id = 1003
name = "PatrollingNPC"
BaseClass = "StayingNPC" ; 从该类继承其它成员
smIdle
{
manager = "@sm_patrol"
}
}
{
manager = "@sm_patrol"
}
}
3. 其它散乱没有共性的行动方面的特性,如:
NPC等级
NPC精英等级
经过以上分类处理后,可以很轻松地实现相关的designer附加和服务器端处理程序.