Example #1
0
    /// <summary>
    /// 成员退出
    /// </summary>
    protected void S2C_TeammateOut(Pt _info)
    {
        pt_team_member_leave_d029 msg = _info as pt_team_member_leave_d029;

        if (msg != null)
        {
            int _teammateId = (int)msg.leave_uid;
            if (teammatesDic.ContainsKey(_teammateId))
            {
                string[]       str  = new string[1];
                TeamMenberInfo info = teammatesDic[_teammateId] as TeamMenberInfo;
                str[0] = info.baseInfo.name;
                GameCenter.messageMng.AddClientMsg(96, str);
                teammatesDic.Remove(_teammateId);
                //移除多人准备数据
                //GameCenter.endLessTrialsMng.TeammateOut(_teammateId);
                GameCenter.duplicateMng.TeammateOut(_teammateId);
            }

            if (onTeammateUpdateEvent != null)
            {
                onTeammateUpdateEvent();
            }
            UpdateTeammateColor(_teammateId, false);//修改颜色
        }
    }
Example #2
0
 public void Update(BuffInfo _buff, int _buffID, int _id)
 {
     if (!isAlive)
     {
         return;        //如果怪物已经死亡,拒绝后台的状态通知
     }
     if (_buff == null) //删buff
     {
         if (_id == serverData.serverInstanceID && buffList.ContainsKey(_buffID))
         {
             if (OnBuffUpdate != null)
             {
                 OnBuffUpdate(_buffID, false);
             }
             buffList.Remove(_buffID);
         }
     }
     else//加buff
     {
         if (buffList.ContainsKey(_buff.BuffTypeID))
         {
             if (OnBuffUpdate != null)
             {
                 OnBuffUpdate(_buff.BuffTypeID, false);
                 buffList.Remove(_buff.BuffTypeID);
             }
         }
         buffList[_buff.BuffTypeID] = _buff;
         if (OnBuffUpdate != null)
         {
             OnBuffUpdate(_buff.BuffTypeID, true);
         }
     }
 }
Example #3
0
    protected void OnDeleteObj(ObjectType _type, int _instanceID)
    {
        switch (_type)
        {
        case ObjectType.Player:
            break;

        case ObjectType.MOB:
            if (mobPointDic.ContainsKey(_instanceID))
            {
                Destroy(mobPointDic[_instanceID] as GameObject);
                mobPointDic.Remove(_instanceID);
            }
            break;

        case ObjectType.NPC:
            if (npcPointDic.ContainsKey(_instanceID))
            {
                Destroy(npcPointDic[_instanceID] as GameObject);
                npcPointDic.Remove(_instanceID);
            }
            break;

        case ObjectType.FlyPoint:
            break;

        default:
            break;
        }
    }
Example #4
0
 /// <summary>
 /// 创建链式特效(唯一) by吴江
 /// </summary>
 /// <param name="_tarA"></param>
 /// <param name="_tarB"></param>
 /// <param name="_effectName"></param>
 public void CastLineEffect(Actor _tarA, Actor _tarB, string _effectName, float _speed = 1.0f)
 {
     if (lineEffectDic.ContainsKey(_effectName))
     {
         Destroy(lineEffectDic[_effectName] as GameObject);
         lineEffectDic.Remove(_effectName);
     }
     if (_tarA == null || _tarB == null)
     {
         return;
     }
     AssetMng.GetEffectInstance(_effectName, (x) =>
     {
         lineEffectDic[_effectName] = x;
         LightningEmitter le        = x.GetComponent <LightningEmitter>();
         if (le != null)
         {
             le.Target1   = _tarA.HitPoint;
             le.Target2   = _tarB.HitPoint;
             le.animSpeed = _speed;
         }
     });
 }
Example #5
0
    public virtual void Equip(EquipSlot _slot, EquipmentInfo _eq)
    {
        if (isMorphing || _eq == null)
        {
            return;
        }
        if (!_eq.HasModel() && !actorInfo.DefaultDictionary.ContainsKey(_eq.Slot))
        {
            return;
        }
        if (!_eq.HasModel())
        {
            if (actorInfo.DefaultDictionary.ContainsKey(_eq.Slot))
            {
                if (_eq.ShowType == ShowType.SKIN)
                {
                    armorList[(int)_eq.Slot] = null;
                    armorDirty = true;
                }
                else if (_eq.ShowType == ShowType.HANGINGPOINT)
                {
                    if (weaponDictionary[_eq.Slot] != null)
                    {
                        Destroy(weaponDictionary[_eq.Slot] as GameObject);
                        weaponDictionary[_eq.Slot] = null;
                        weaponDictionary.Remove(_eq.Slot);
                    }
                }
            }
            return;
        }
        if (!_eq.WillChangeRender)
        {
            return;
        }
        switch (_eq.ShowType)
        {
        case ShowType.HANGINGPOINT:
            EquipWeapon(_eq, _slot, _eq.HasModel() ? _eq.ShortUrl : actorInfo.DefaultDictionary[_eq.Slot].ShortUrl, _eq.ModelName);
            break;

        case ShowType.SKIN:
            EquipArmor(_slot, _eq.HasModel() ? _eq.ShortUrl : actorInfo.DefaultDictionary[_eq.Slot].ShortUrl, _eq.ModelName);
            break;

        default:
            break;
        }
    }
Example #6
0
    void CreateVipLev()
    {
        //UIToggle uiTog = null;
        VipItemUI vipItemUI = null;

        dataList.Remove(0);
        vipList.Clear();
        uiGrid.maxPerLine = dataList.Count;
        foreach (VIPRef data in dataList.Values)
        {
            GameObject go = (GameObject)GameObject.Instantiate(etyVipItem);
            go.transform.parent        = etyVipItem.transform.parent;
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale    = Vector3.one;

            vipItemUI = go.GetComponent <VipItemUI>();
            EventDelegate.Add(go.GetComponent <UIToggle>().onChange, OnVipChange);

            if (vipItemUI != null)
            {
                vipItemUI.RefData = data;
                vipList.Add(vipItemUI);
            }
            go.SetActive(true);
        }
        int dataLev = GameCenter.vipMng.VipData.vLev - 1;

        if (vipList.Count > dataLev)
        {
            vipList[dataLev < 0 ? 0:dataLev].GetComponent <UIToggle>().startsActive = true;           //默认选择当前VIP等级
        }
        else
        {
            if (vipList.Count > 0)
            {
                vipList[0].GetComponent <UIToggle>().startsActive = true;
            }
        }
        if (uiGrid != null)
        {
            uiGrid.repositionNow = true;
        }
    }
Example #7
0
    /// <summary>
    /// 获得成就达到的奖励领取状态
    /// </summary>
    protected void S2C_AchievementRewardState(Pt _msg)
    {
        pt_update_achievement_reward_d767 msg = _msg as pt_update_achievement_reward_d767;

        if (msg != null)
        {
            isGetAchieve = true;
            for (int i = 0; i < msg.achievement_reward.Count; i++)
            {
                achievement_reward data = msg.achievement_reward[i];
                if (achievementTogRed.ContainsKey(data.id) && data.state == 1)
                {
                    achievementTogRed.Remove(data.id);
                }
                AchievementRef achievementRef = ConfigMng.Instance.GetAchievementRef(data.id);
                currentAchievementNum = data.num;
                if (curhaveAchieve.ContainsKey(msg.achievement_reward[i].id))
                {
                    AchievementData info = curhaveAchieve[data.id] as AchievementData;
                    if (info != null)
                    {
                        info.Update(data);
                    }
                    //SetRedPoint();
                }
                else if (data.new_or_old == 1)//新达成成就
                {
                    AchievementData info = new AchievementData(data);
                    curhaveAchieve[info.AchieveId] = info;
                    if (OnGetNewAchievement != null)
                    {
                        OnGetNewAchievement(info);
                    }
                    SetRedPoint();
                }
                else if (data.state == 1)//退出游戏重进已领取的成就
                {
                    AchievementData info = new AchievementData(data);
                    curhaveAchieve[info.AchieveId] = info;
                }
                else if (data.id >= 41 && data.id <= 55)//退出游戏重进,已达成的成就,但是没有领取
                {
                    if (data.num >= 1)
                    {
                        AchievementData info = new AchievementData(data);
                        curhaveAchieve[info.AchieveId] = info;
                    }
                }
                else if (achievementRef != null && achievementRef.judgeNum2 != 0)
                {
                    if (data.num >= achievementRef.judgeNum2)
                    {
                        AchievementData info = new AchievementData(data);
                        curhaveAchieve[info.AchieveId] = info;
                    }
                }
                else if (achievementRef != null && data.num >= achievementRef.judgeNum1)
                {
                    AchievementData info = new AchievementData(data);
                    curhaveAchieve[info.AchieveId] = info;
                }
            }
        }
        if (OnAchievementUpdate != null)
        {
            OnAchievementUpdate();
        }
    }
Example #8
0
    protected void S2C_AbilityResult(Pt _info)
    {
        if (GameCenter.sceneMng == null || !GameCenter.sceneMng.EnterSucceed)
        {
            return;
        }
        pt_scene_skill_effect_c006 pt = _info as pt_scene_skill_effect_c006;

        if (pt != null)
        {
            //Debug.Log("effectSort:"+(AbilityResultCAUSEType)pt.effect_sort+",targetID:"+pt.target_id+",ObjectType:"+(ObjectType)pt.obj_sort);
            SmartActor     user           = null;
            ObjectType     type           = (ObjectType)pt.obj_sort;
            MainPlayerInfo mainPlayerInfo = GameCenter.mainPlayerMng.MainPlayerInfo;
            switch (type)
            {
            case ObjectType.Player:
                if ((int)pt.oid == mainPlayerInfo.ServerInstanceID)
                {
                    user = GameCenter.curMainPlayer;
                }
                else
                {
                    user = GameCenter.curGameStage.GetOtherPlayer((int)pt.oid) as SmartActor;
                }
                break;

            case ObjectType.MOB:
                user = GameCenter.curGameStage.GetMOB((int)pt.oid) as SmartActor;
                break;

            case ObjectType.Entourage:
                user = GameCenter.curGameStage.GetEntourage((int)pt.oid) as EntourageBase;
                break;

            default:
                break;
            }


            for (int i = 0; i < pt.effect_list.Count; i++)
            {
                st.net.NetBase.skill_effect ef = pt.effect_list[i];
                ActorInfo info = null;
                type = (ObjectType)ef.target_sort;
                //if (user == GameCenter.curMainPlayer)
                //{
                //    if ((AttackResultType)ef.atk_sort != AttackResultType.ATT_SORT_DODGE)
                //    {
                //        if (OnContinuCountUpdate != null)
                //        {
                //            OnContinuCountUpdate(Time.time);
                //        }
                //    }
                //}
                switch (type)
                {
                case ObjectType.Player:
                    if (ef.target_id == mainPlayerInfo.ServerInstanceID)
                    {
                        mainPlayerInfo.Update(ef);
                        if ((DefResultType)ef.def_sort != DefResultType.DEF_SORT_ADDMP && (DefResultType)ef.def_sort != DefResultType.DEF_SORT_TREAT) //如果是非增益后果
                        {
                            if (OnMainPlayerBeHit != null && user != null)                                                                            //主角被打的事件
                            {
                                OnMainPlayerBeHit(user);
                            }
                            OtherPlayer other = user as OtherPlayer;
                            if (other != null && mainPlayerInfo.CurSceneType == SceneType.SCUFFLEFIELD)
                            {
                                if (!abilityResultUserDic.ContainsKey(other.id) || Time.time - abilityResultUserDic[other.id] > 5f)                                       //被玩家攻击提示,5秒不重复
                                {
                                    abilityResultUserDic[other.id] = Time.time;
                                    GameCenter.messageMng.AddClientMsg((mainPlayerInfo.KillingValue > 1000 || mainPlayerInfo.IsCounterAttack)?434:433, new string[1] {
                                        other.ActorName
                                    });
                                    if (OnMainPlayerBeAttack != null)
                                    {
                                        OnMainPlayerBeAttack(other);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        info = GameCenter.sceneMng.GetOPCInfo((int)ef.target_id) as OtherPlayerInfo;
                        if (info != null)
                        {
                            info.Update(ef);
                        }
                    }
                    break;

                case ObjectType.MOB:
                    info = GameCenter.sceneMng.GetMobInfo((int)ef.target_id) as MonsterInfo;
                    if (info != null)
                    {
                        info.Update(ef);
                    }
                    break;

                case ObjectType.Entourage:
                    if (GameCenter.mercenaryMng.curMercernaryInfo != null && ef.target_id == GameCenter.mercenaryMng.curMercernaryInfo.ServerInstanceID)
                    {
                        GameCenter.mercenaryMng.curMercernaryInfo.Update(ef);
                    }
                    else
                    {
                        info = GameCenter.sceneMng.GetEntourageInfo((int)ef.target_id) as MercenaryInfo;
                        if (info != null)
                        {
                            info.Update(ef);
                        }
                    }
                    break;
                }
            }


            AbilityInstance instance = null;

            if ((int)pt.oid == GameCenter.curMainPlayer.id || (GameCenter.curMainEntourage != null && (int)pt.oid == GameCenter.curMainEntourage.id))
            {
                if (waitServerConfirmAbilityDic.ContainsKey(pt.seq))
                {
                    instance = waitServerConfirmAbilityDic[pt.seq] as AbilityInstance;
                    if (instance != null)
                    {
                        instance.AbilityResult(pt);
                        instance.OnTringEnd -= OnAbilityInstanceTringEnd;
                        waitServerConfirmAbilityDic.Remove(pt.seq);
                    }
                }
                else
                {
                    if (pt.seq != 0)
                    {
                        GameSys.LogError("找不到等待技能 " + pt.seq);
                    }
                    else
                    {
                        if (user != null)
                        {
                            if (pt.skill == 0)
                            {
                                Debug.LogError(user.name + "使用技能ID为0的技能");
                            }
                            else
                            {
                                instance = new AbilityInstance(pt, user);
                            }
                        }
                    }
                }
            }
            else
            {
                bool useSkill = (pt.effect_sort == 2);
                if (user != null)
                {
                    if (user.curTryUseAbility != null && user.curTryUseAbility.AbilityID == pt.skill && user.curTryUseAbility.RuneID == pt.rune &&
                        user.curTryUseAbility.Level == pt.lev && user.curTryUseAbility.NeedPrepare && !user.curTryUseAbility.HasServerConfirm)
                    {
                        instance = user.curTryUseAbility;
                    }
                    else
                    {
                        instance = new AbilityInstance(pt, user);
                        if ((ObjectType)pt.obj_sort == ObjectType.Player)                       //这里的判断不能用type
                        {
                            //技能动作完成了才继续放技能,否则其他大风车技能会瞬移  by邓成
                            //这种处理同时导致了,法师动作比特效慢,因为一个技能放完,实际还在isCasting
                            if (useSkill)
                            {
                                user.UseAbility(instance);
                            }
                        }
                        else
                        {
                            if (useSkill)                           //怪物也需要加这个,否则SkillReportID出现两次
                            {
                                user.UseAbility(instance);
                            }
                        }
                    }
                }
                else
                {
                    instance = new AbilityInstance(pt, null);
                }
                instance.AbilityResult(pt);
            }
            if (instance != null && user != null)
            {
                switch (instance.CurClientShowType)
                {
                case ClientShowType.Lightingskill:
                    user.fxCtrl.CastLightingShake(instance);
                    break;
                }
            }
        }
    }
Example #9
0
    /// <summary>
    /// 接收好友链表
    /// </summary>
    protected void S2C_GetFriendsList(Pt pt)
    {
        pt_friend_relation_list_d705 msg = pt as pt_friend_relation_list_d705;

        if (msg != null)
        {
            //for (int j = 0; j < msg.relation_list.Count; j++)
            //{
            //    Debug.Log("d705    add_or_remove:  " + msg.add_or_remove + "   , type : " + msg.relation_list[j].type + "   ,  uid : " + msg.relation_list[j].uid + "   , name : " + msg.relation_list[j].name + "   ,lev : " + msg.relation_list[j].lev + "  " + ConfigMng.Instance.GetLevelDes(msg.relation_list[j].lev));
            //}
            if (isAddInAdvice && msg.add_or_remove == 1)//将好友推送中的人添加到好友列表,删除好友推送中的人
            {
                for (int i = 0, max = msg.relation_list.Count; i < max; i++)
                {
                    if (friendsDic.ContainsKey(msg.relation_list[i].uid))
                    {
                        friendsDic.Remove(msg.relation_list[i].uid);
                    }
                }
            }
            else if (msg.add_or_remove == 1)//添加
            {
                if (msg.relation_list.Count > 0)
                {
                    int type = msg.relation_list[0].type;

                    if (!allFriendDic.ContainsKey(type))
                    {
                        allFriendDic[type] = new FDictionary();
                    }
                    for (int i = 0, max = msg.relation_list.Count; i < max; i++)
                    {
                        FriendsInfo info = new FriendsInfo(msg.relation_list[i]);
                        if (!allFriendDic[type].ContainsKey(msg.relation_list[i].uid))
                        {
                            allFriendDic[type][msg.relation_list[i].uid] = info;
                        }
                    }
                }
                for (int i = 0, max = msg.relation_list.Count; i < max; i++)
                {
                    if (!friendsDic.ContainsKey(msg.relation_list[i].uid))
                    {
                        friendsDic[msg.relation_list[i].uid] = new FriendsInfo(msg.relation_list[i]);
                    }
                }
            }
            else if (msg.add_or_remove == 2)//移除
            {
                if (msg.relation_list.Count > 0)
                {
                    int type = msg.relation_list[0].type;

                    if (allFriendDic.ContainsKey(type))
                    {
                        for (int i = 0, max = msg.relation_list.Count; i < max; i++)
                        {
                            if (allFriendDic[type].ContainsKey(msg.relation_list[i].uid))
                            {
                                allFriendDic[type].Remove(msg.relation_list[i].uid);
                            }
                        }
                    }
                }

                for (int i = 0, max = msg.relation_list.Count; i < max; i++)
                {
                    if (friendsDic.ContainsKey(msg.relation_list[i].uid))
                    {
                        friendsDic.Remove(msg.relation_list[i].uid);
                    }
                }
            }
            else//链表
            {
                curFriend = null;
                friendsDic.Clear();
                for (int i = 0, max = msg.relation_list.Count; i < max; i++)
                {
                    relation_list data = msg.relation_list[i];
                    if (!friendsDic.ContainsKey(data.uid))
                    {
                        friendsDic[data.uid] = new FriendsInfo(data);
                    }
                    else
                    {
                        FriendsInfo info = friendsDic[data.uid] as FriendsInfo;
                        info.Updata(data);
                    }
                }
                if (msg.relation_list.Count > 0)
                {
                    FDictionary dic = new FDictionary();
                    foreach (FriendsInfo info in friendsDic.Values)
                    {
                        dic[info.configId] = info;
                    }
                    if (!allFriendDic.ContainsKey(msg.relation_list[0].type))
                    {
                        allFriendDic[msg.relation_list[0].type] = dic;
                    }
                }
            }
        }
        if (msg.relation_list.Count > 0 && msg.relation_list[0].type == 4)
        {
            if (OnEnemyDicUpdata != null)
            {
                OnEnemyDicUpdata();
            }
        }
        if (OnFriendsDicUpdata != null)
        {
            OnFriendsDicUpdata();
        }
    }