// 宠物加载回调aa protected void OnLoadPet(ResLoadParams kParam, UnityEngine.Object kObj) { if (kObj == null) { return; } if (m_pvpRival == null) { return; } Hashtable kPetProperty = mActivePet; if (kPetProperty == null) { return; } Vector3 kPlayerPos = m_pvpRival.transform.position; Vector3 kBornPosition = kPlayerPos; float fFollowDistance = ((int)(kPetProperty["FollowDistance"])) / 1000.0f; sdTuiTuLogic.BornPosition(kPlayerPos, fFollowDistance, ref kBornPosition); GameObject kPetObj = GameObject.Instantiate(kObj, kBornPosition, Quaternion.identity) as GameObject; sdGameMonster kActivePet = kPetObj.GetComponent <sdGameMonster>(); if (kActivePet != null) { kActivePet.templateId = (int)kPetProperty["TemplateID"]; kActivePet.bornLive = true; kActivePet.DBID = (ulong)kPetProperty["DBID"]; kActivePet.Master = m_pvpRival; m_pvpRival.Retainer = kActivePet; kActivePet.NotifyKilled += OnPetKilled; kActivePet.ChangeGroupID(GroupIDType.GIT_MonsterA); // 宠物战队Buffaa List <int> kBuffList = GetPetGroupBuff(kActivePet); if (kBuffList != null) { foreach (int iBuffId in kBuffList) { kActivePet.AddBuff(iBuffId, 0, kActivePet); } } } }
// 离开触发状态(继承自sdBehaviourState)aa public override void DoLeaveState() { if (mIsInState != false) { mIsInState = false; if (mExecuteStatus) { MonsterAutoFight kMonsterAutoFight = mBehaviourAdvancedState.MonsterAutoFightComponent; if (kMonsterAutoFight != null) { sdGameMonster kMonster = kMonsterAutoFight.Actor as sdGameMonster; if (kMonster != null) { kMonster.AddBuff(mBuffID, 0, kMonster); } } } } }
// 宠物加载回调aa protected void OnLoadPet(ResLoadParams kParam, UnityEngine.Object kObj) { if (kObj == null) { return; } // 获取宠物属性表aa Hashtable kPetProp = null; if (kParam.info == "pet") { int iActivePetIndex = sdNewPetMgr.Instance.ActivePetIndex; if (iActivePetIndex < 0) { return; } // 检查DBID有效性aa ulong ulDBID = sdNewPetMgr.Instance.GetPetFromTeamByIndex(iActivePetIndex); if (ulDBID == ulong.MaxValue) { return; } // 检查当前激活DBID是否加载的DBIDaa ulong ulLoadDBID = (ulong)kParam.userdata0; if (ulLoadDBID != ulDBID) { return; } kPetProp = sdNewPetMgr.Instance.GetPetPropertyFromDBID(ulDBID); } else { kPetProp = sdNewPetMgr.Instance.FriendPetProperty; } if (kPetProp == null) { return; } // 随机位置aa GameObject kMainPlayer = sdGameLevel.instance.mainChar.gameObject; Vector3 kMainPlayerPos = kMainPlayer.transform.position; Vector3 kBornPosition = kMainPlayerPos; float fFollowDistance = ((int)(kPetProp["FollowDistance"])) / 1000.0f; BornPosition(kMainPlayerPos, fFollowDistance, ref kBornPosition); // 初始化对象aa GameObject kPetObj = GameObject.Instantiate(kObj, kBornPosition, Quaternion.identity) as GameObject; if (kParam.info == "pet") { mActivePet = kPetObj.GetComponent <sdGameMonster>(); if (mActivePet != null) { mActivePet.templateId = (int)kPetProp["TemplateID"]; mActivePet.bornLive = true; mActivePet.DBID = (ulong)kPetProp["DBID"]; mActivePet.Master = sdGameLevel.instance.mainChar; sdGameLevel.instance.mainChar.Retainer = mActivePet; mActivePet.NotifyKilled += OnPetKilled; mPetList.Add(mActivePet); // 宠物战队Buffaa List <int> kBuffList = sdNewPetMgr.Instance.GetPetGroupBuff(mActivePet); if (kBuffList != null) { foreach (int iBuffId in kBuffList) { mActivePet.AddBuff(iBuffId, 0, mActivePet); } } // 主角宠物的光圈aa Transform t = mActivePet.transform.GetChild(0); sdActorInterface.AddHitEffect("Effect/MainChar/FX_UI/$Fx_Go/Fx_Go_Pet_prefab.prefab", t, 1000000.0f, Vector3.zero, true); } } else { mFriendPet = kPetObj.GetComponent <sdGameMonster>(); if (mFriendPet != null) { mFriendPet.templateId = (int)kPetProp["TemplateID"]; mFriendPet.bornLive = true; mFriendPet.DBID = (ulong)kPetProp["DBID"]; mFriendPet.Master = sdGameLevel.instance.mainChar; mFriendPet.NotifyKilled += OnFriendPetKilled; } } }
// 激活当前出战的宠物aa public void CreatePet() { if (mActivePet != null) { DeactivePet(); } int iActivePetIndex = sdNewPetMgr.Instance.ActivePetIndex; if (iActivePetIndex < 0) { return; } ulong ulDBID = sdNewPetMgr.Instance.GetPetFromTeamByIndex(iActivePetIndex); if (ulDBID == ulong.MaxValue) { return; } Hashtable kPetProp = sdNewPetMgr.Instance.GetPetPropertyFromDBID(ulDBID); if (kPetProp == null) { return; } // sdGameMonster kPet = null; foreach (sdGameMonster kMonster in mPetList) { if (kMonster.DBID == ulDBID) { kPet = kMonster; break; } } // 显示激活宠物aa // 1.更新血量aa // 2.设置主从关系aa // 3.随机宠物位置aa // 4.注册死亡回调aa if (kPet != null) { mActivePet = kPet; mActivePet.Master = sdGameLevel.instance.mainChar; sdGameLevel.instance.mainChar.Retainer = mActivePet; GameObject kMainPlayer = sdGameLevel.instance.mainChar.gameObject; Vector3 kMainPlayerPos = kMainPlayer.transform.position; Vector3 kBornPosition = kMainPlayerPos; float fFollowDistance = ((int)(kPetProp["FollowDistance"])) / 1000.0f; BornPosition(kMainPlayerPos, fFollowDistance, ref kBornPosition); mActivePet.gameObject.transform.position = kBornPosition; mActivePet.gameObject.transform.rotation = Quaternion.identity; mActivePet.NotifyKilled += OnPetKilled; mActivePet.SetCurrentHP((int)kPetProp["HP"]); //< mActivePet.AddHP(0); // 宠物战队Buffaa List <int> kBuffList = sdNewPetMgr.Instance.GetPetGroupBuff(mActivePet); if (kBuffList != null) { foreach (int iBuffId in kBuffList) { mActivePet.AddBuff(iBuffId, 0, mActivePet); } } } else { string kPath = kPetProp["Res"] as string; ResLoadParams kParam = new ResLoadParams(); kParam.info = "pet"; kParam.userdata0 = ulDBID; sdResourceMgr.Instance.LoadResource(kPath, OnLoadPet, kParam); } }