/// <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);//修改颜色 } }
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); } } }
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; } }
/// <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; } }); }
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; } }
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; } }
/// <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(); } }
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; } } } }
/// <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(); } }