| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 文件名:AiCharacterObjectClass.nut | 
					
						
							|  |  |  | 路径:User/GameClass/ObjectClass/AiCharacterObjectClass.nut | 
					
						
							|  |  |  | 创建日期:2024-05-14	10:05 | 
					
						
							|  |  |  | 文件用途:APC | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2024-12-13 20:48:00 +08:00
										 |  |  | class GameObject.AICharacter extends GameObject.Character { | 
					
						
							| 
									
										
										
										
											2024-12-11 15:08:57 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //职业 | 
					
						
							|  |  |  |     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); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |