示例#1
0
    // 宠物加载回调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);
                }
            }
        }
    }
示例#2
0
    // 离开触发状态(继承自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);
                    }
                }
            }
        }
    }
示例#3
0
    // 宠物加载回调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;
            }
        }
    }
示例#4
0
    // 激活当前出战的宠物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);
        }
    }