/* 文件名:AiCharacterObjectClass.nut 路径:User/GameClass/ObjectClass/AiCharacterObjectClass.nut 创建日期:2024-05-14 10:05 文件用途:APC */ class AICharacter extends Character { //职业 Job = null; //APC编号 Id = null; function Init(Idx) { Id = Idx; Info = sq_DeepCopy(ScriptData.GetAICharacter(Idx)); //因为Info会被重新赋值 这里copy一下 下面读取属性要用 local ScriptInfo = sq_DeepCopy(Info); Job = ScriptInfo["minimum info"][1]; //根据脚本穿上装备 ReloadEquipment(); //根据职业构造基础角色 注意这一步会直接重新赋值Info base.Init(Job); //加载脚本属性 Attribute.Init(ScriptInfo.Attributes, this); } //重载装备 function ReloadEquipment() { // Util.PrintTable(Info); for (local i = 0; i< Info["equipment"].len(); i += 3) { local EquiId = Info["equipment"][i]; local EquiInfo = ScriptData.GetEquipment(EquiId); if (EquiInfo.type.path == "skin avatar") skin = Info["equipment"][i]; else if (EquiInfo.type.path == "weapon") weapon = Info["equipment"][i]; else if (EquiInfo.type.path == "cap avatar") cap = Info["equipment"][i]; else if (EquiInfo.type.path == "hair avatar") hair = Info["equipment"][i]; else if (EquiInfo.type.path == "coat avatar") coat = Info["equipment"][i]; else if (EquiInfo.type.path == "pants avatar") pants = Info["equipment"][i]; else if (EquiInfo.type.path == "shoes avatar") shoes = Info["equipment"][i]; } } function OnAddchild(Parent) { if (getroottable().AiCharacterObjectFunction.rawin("AiCharacterObject_Create_" + Id)) getroottable().AiCharacterObjectFunction["AiCharacterObject_Create_" + Id](this, Parent); base.OnAddchild(Parent); } function OnRemove(Parent) { if (getroottable().AiCharacterObjectFunction.rawin("AiCharacterObject_Destroy_" + Id)) getroottable().AiCharacterObjectFunction["AiCharacterObject_Destroy_" + Id](this, Parent); base.OnRemove(Parent); } //被调用 function OnUpdate(dt) { //如果有APC的Proc脚本则调用 if (getroottable().AiCharacterObjectFunction.rawin("AiCharacterObject_Proc_" + Id)) getroottable().AiCharacterObjectFunction["AiCharacterObject_Proc_" + Id](this, dt); //属性更新 if (Attribute) Attribute.Proc(this, dt); base.OnUpdate(dt); } }