73 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
/*
 | 
						|
文件名:AiCharacterObjectClass.nut
 | 
						|
路径:User/GameClass/ObjectClass/AiCharacterObjectClass.nut
 | 
						|
创建日期:2024-05-14	10:05
 | 
						|
文件用途:APC
 | 
						|
*/
 | 
						|
class GameObject.AICharacter extends GameObject.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);
 | 
						|
    }
 | 
						|
} |