private static IEnumerator SSChangeExdataCoroutine(Coroutine co, ulong id, Dict_int_int_Data changes) { var logicAgent = TeamServer.Instance.LogicAgent; var msg = logicAgent.SSChangeExdata(id, changes); yield return(msg.SendAndWaitUntilDone(co)); }
public void FinalLogic() { if (ChickenManager.mDbData == null) { return; } Dictionary <int, Dict_int_int_Data> title = new Dictionary <int, Dict_int_int_Data>(); var tb = Table.GetNameTitle(9000); if (tb != null) { Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add(0, tmp); } if (ChickenManager.mDbData.Count > 0) { var id = ChickenManager.mDbData[0].Guid; ChangeNameTitle(id, title[0]); } FinalActivity(); ChickenManager.mDbData.Clear(); Save(); }
public void FinalActivity() { if (ChickenManager.mDbData == null) { return; } for (int i = 0; i < ChickenManager.mDbData.Count; i++) { var tbReward = GetCheckenReward(ChickenManager.mDbData[i].Rank); if (tbReward != null) { var tbMail = Table.GetMail(97); if (tbMail == null) { return; } var reward = new Dictionary <int, int>(); for (int j = 0; j < tbReward.RankItemID.Length && j < tbReward.RankItemCount.Length; j++) { if (tbReward.RankItemID[j] > 0 && tbReward.RankItemCount[j] > 0) { reward.Add(tbReward.RankItemID[j], tbReward.RankItemCount[j]); } } string content = string.Format(tbMail.Text, i); var items = new Dict_int_int_Data(); items.Data.AddRange(reward); CoroutineFactory.NewCoroutine(SendMailCoroutine, ChickenManager.mDbData[i].Guid, tbMail.Title, content, items).MoveNext(); } } }
//存储 private IEnumerator NotifyServerAvgLevelCo(Coroutine coroutine, Dictionary <int, int> data) { var dic = new Dict_int_int_Data(); dic.Data.AddRange(data); var toLogic = RankServer.Instance.SceneAgent.MotifyServerAvgLevel(dic); yield return(toLogic.SendAndWaitUntilDone(coroutine)); }
private IEnumerator SendMailCoroutine(Coroutine co, ulong id, string title, string content, Dict_int_int_Data items) { var msg = ActivityServer.Instance.LogicAgent.SendMailToCharacter(id, title, content, items, 0); yield return(msg.SendAndWaitUntilDone(co)); }
public void SyncExdataList(Dict_int_int_Data diff) { { // foreach(var i in diff.Data) var __enumerator3 = (diff.Data).GetEnumerator(); while (__enumerator3.MoveNext()) { var i = __enumerator3.Current; { PlayerDataManager.Instance.SetExData(i.Key, i.Value); } } } }
private IEnumerator PetIslandReduceTili(Coroutine co, ulong playerObjId, int exdataId, int num) { if (exdataId != (int)eExdataDefine.e630) { Logger.Error("PetIslandReduceTili ExData table error not 630"); yield break; } var refreshTili = 0; if (!TiliDic.TryGetValue(playerObjId, out refreshTili)) { yield break; } var oldvalue = refreshTili; refreshTili -= num; if (refreshTili <= 0) { // 设置剔出状态 准备剔出 if (StateDic.ContainsKey(playerObjId)) { if (StateDic[playerObjId].state != 0) { StateDic[playerObjId].state = 0; StateDic[playerObjId].time = DateTime.Now.AddSeconds(10); } } } refreshTili = Math.Max(refreshTili, 0); TiliDic[playerObjId] = refreshTili; var data = new Dict_int_int_Data(); if (refreshTili <= 0) { data.Data.Add((int)eExdataDefine.e630, refreshTili - oldvalue); } else { data.Data.Add((int)eExdataDefine.e630, -num); } var msg1 = SceneServer.Instance.LogicAgent.SSChangeExdata(playerObjId, data); yield return(msg1.SendAndWaitUntilDone(co)); }
private void AddKillOrDeadRecord(ulong characterId, bool kill) { KillRecord record = null; if (!DictKillRecord.TryGetValue(characterId, out record)) { record = new KillRecord(); DictKillRecord.Add(characterId, record); } var oldval = record.ContinuesKill; var character = FindCharacter(characterId); if (kill) { if (oldval >= 0) { oldval++; } else { oldval = 1; } record.ContinuesKill = oldval; record.TotalKill++; ObjPlayer me = character as ObjPlayer; if (me != null) { var dict = new Dict_int_int_Data(); record.KillNum++; dict.Data.Add((int)eExdataDefine.e770, 1); me.SendExDataChange(dict); } } else { if (oldval >= 0) { oldval = -1; } else { oldval--; } } record.ContinuesKill = oldval; }
public void OnAllOk(FightQueue _this, QueueResultBase result) { // 战场开始,所有人的战场计数+1 var changes = new Dict_int_int_Data(); changes.Data.Add((int)eExdataDefine.e530, 1); foreach (var list in result.mTeamList) { foreach (var character in list) { foreach (var data in character.mDatas) { Utility.SSChangeExdata(data.Id, changes); } } } }
public void FinalActivity(GeneralActivity _this) { List <KeyValuePair <ulong, int> > tmpList = new List <KeyValuePair <ulong, int> >(); foreach (var v in _this.mDbData.ID2Score) { tmpList.Add(v); } tmpList.Sort((a, b) => { return(a.Value - b.Value); }); for (int i = 0; i < tmpList.Count; i++) { var tbArenaReward = GetArenaReward(i); if (tbArenaReward != null) { var tbMail = Table.GetMail(97); var reward = new Dictionary <int, int>(); if (tbArenaReward.DayMoney > 0) { reward.Add((int)eResourcesType.GoldRes, tbArenaReward.DayMoney); } if (tbArenaReward.DayDiamond > 0) { reward.Add((int)eResourcesType.DiamondBind, tbArenaReward.DayDiamond); } var index = 0; foreach (var v in tbArenaReward.DayItemID) { if (i > 0 && tbArenaReward.DayItemCount[index] > 0) { reward.Add(v, tbArenaReward.DayItemCount[index]); } index++; } string content = string.Format(tbMail.Text, i); var items = new Dict_int_int_Data(); items.Data.AddRange(reward); CoroutineFactory.NewCoroutine(SendMailCoroutine, tmpList[i].Key, tbMail.Title, content, items).MoveNext(); } } _this.mDbData.ID2Score.Clear(); _this.bDirty = true; }
private void OnPlayerGetExp(ObjPlayer player, JPlayer jp, int exp) { var tb = Table.GetCheckenLv(jp.lv); if (tb == null) { return; } jp.exp += exp; Dict_int_int_Data data = new Dict_int_int_Data(); if (tb.NeedExp <= jp.exp) { var tbnew = Table.GetCheckenLv(jp.lv + 1); if (tbnew == null)//达到最大等级 { jp.exp = tb.NeedExp; } else { //删除旧的buff var tbold = Table.GetCheckenLv(jp.lv); if (tbold != null) {//buff player.DeleteBuff(tbold.BaseBuff, eCleanBuffType.Clear); } jp.exp -= tb.NeedExp; jp.lv++; player.AddBuff(tbnew.BaseBuff, 1, player); var ids = RandBuffList(tb.BuffGroup, 3); foreach (var id in ids) { int lv = 0; jp.buf.TryGetValue(id, out lv); data.Data.Add(id, lv + 1); } } } player.Proxy.CK_NotifyClientLevelup(player.mObjId, jp.lv, jp.exp, data); }
private IEnumerator ChangePlayedTimeCoroutine(Coroutine co, ObjPlayer player) { var enterTime = PlayerEnterTimes[player.ObjId]; PlayerEnterTimes.Remove(player.ObjId); var playedTimeSec = (int)(DateTime.Now - enterTime).TotalSeconds; var data = new Dict_int_int_Data(); if (Math.Abs(mMaxTimeOneDaySec - playedTimeSec) < 10) { data.Data.Add((int)eExdataDefine.e428, mMaxTimeOneDaySec); } else { data.Data.Add((int)eExdataDefine.e428, playedTimeSec); } var msg = SceneServer.Instance.LogicAgent.SSChangeExdata(player.ObjId, data); yield return(msg.SendAndWaitUntilDone(co)); }
public void CK_NotifyClientLevelup(ulong id, int lv, int exp, Dict_int_int_Data buff) { if (buff.Data != null && buff.Data.Count > 0) { OnCheckenSkillUpEvent e = new OnCheckenSkillUpEvent(lv, exp, buff.Data); EventDispatcher.Instance.DispatchEvent(e); } if (ObjManager.Instance == null) { return; } ObjManager.Instance.MyPlayer.UpdateChickenExp(lv, exp); /** foreach (var item in ObjManager.Instance.ObjPool) * { * if (item.Value != null && item.Value.GetObjId() == id) * { * Debug.Log(id.ToString() + "-------------" + lv + "========" + exp); * (item.Value as ObjCharacter).UpdateChickenExp(lv, exp); * break; * } * }**/ }
public override void NetDirtyHandle() { var count = mNetDirtyList.Count; if (count < 1) { return; } //if (mCharacter.Proxy == null) return; if (count == 1) { foreach (var i in mNetDirtyList) { mCharacter.Proxy.SyncExdata(i.Key, i.Value); } } else { var diffData = new Dict_int_int_Data(); diffData.Data.AddRange(mNetDirtyList); mCharacter.Proxy.SyncExdataList(diffData); } mNetDirtyList.Clear(); }
public static void SendMail(ulong id, string title, string content, Dict_int_int_Data items) { mImpl.SendMail(id, title, content, items); }
private IEnumerator ChangeNameTitleCoroutine(Coroutine co, ulong characterId, Dict_int_int_Data change) { var msg = ActivityServer.Instance.LogicAgent.SSSetFlag(characterId, change); yield return(msg.SendAndWaitUntilDone(co)); }
public void NotifyReward(Dict_int_int_Data items) { }
public override void OnPlayerPickItem(ObjPlayer player, ObjDropItem item) { if (player.mIsDead) { return; } if (item.TableDrop.Type != 300) { return; } var tbChecken = Table.GetChecken(item.TableDrop.Exdata[0]); if (tbChecken == null) { return; } var p = _playerList.Find(r => r.objId == player.ObjId); if (p == null) { return; } //播放特效 player.Proxy.NotifyPlayEffect(700); //添加经验 OnPlayerGetExp(player, p, tbChecken.ExData1); int idx = _playerList.FindIndex(r => r.objId == player.ObjId); //添加吃鸡的积分 if (_playerList[idx] != null) { _playerList[idx].point += tbChecken.ExData2; } //添加Buff player.AddBuff(tbChecken.BuffId, 1, player); //添加道具 Dict_int_int_Data data = new Dict_int_int_Data(); for (int i = 0; i < tbChecken.ItemID.Length && i < tbChecken.Num.Length; i++) { if (tbChecken.ItemID[i] > 0 && tbChecken.Num[i] > 0) { data.Data.Add(tbChecken.ItemID[i], tbChecken.Num[i]); } } for (int i = 0; i < dropBuffList.Count; i++) { if (item.ObjId == dropBuffList[i].ObjId) { dropBuffList.RemoveAt(i); break; } } for (int i = 0; i < dropChickenList.Count; i++) { if (item.ObjId == dropChickenList[i].ObjId) { dropChickenList.RemoveAt(i); break; } } CoroutineFactory.NewCoroutine(GiveItemList, player, data).MoveNext(); }
private void ChangeNameTitle(ulong characterId, Dict_int_int_Data change) { CoroutineFactory.NewCoroutine(ChangeNameTitleCoroutine, characterId, change).MoveNext(); }
//战斗结束 public void BattleOver(AllianceWar _this, int occupantId) { _this.SetStatus((int)eAllianceWarState.WaitBid); var allianceManager = ServerAllianceManager.GetAllianceByServer(_this.ServerId); var dbData = allianceManager.GetServerData(_this.ServerId); var oldOccupant = dbData.Occupant; dbData.Challengers.Clear(); dbData.LastBattleTime = DateTime.Now.ToBinary(); allianceManager.SetFlag(_this.ServerId); PlayerLog.WriteLog((ulong)LogType.AllianceWar, "BattleOver(), ServerId = {0}, occupantId = {1}, old occupantId = {2}", _this.ServerId, occupantId, dbData.Occupant); //如果城主没变就返回 if (dbData.Occupant == occupantId) { return; } dbData.Occupant = occupantId; var alliance = ServerAllianceManager.GetAllianceById(occupantId); if (alliance != null) { //通知全服,城主变了 var data = new AllianceWarOccupantData(); data.OccupantId = occupantId; data.OccupantName = alliance.Name; TeamServer.Instance.TeamAgent.NotifyAllianceWarOccupantData((uint)_this.ServerId, data); //修改玩家的称号 var change0 = new Dict_int_int_Data(); var tbTitle = Table.GetNameTitle(5000); change0.Data.Add(tbTitle.FlagId, 1); var change1 = new Dict_int_int_Data(); tbTitle = Table.GetNameTitle(5001); change1.Data.Add(tbTitle.FlagId, 1); var dad = alliance.Dad; foreach (var id in alliance.mDBData.Members) { var m = dad.GetCharacterData(id); if (m == null) { continue; } if (m.Ladder == (int)eAllianceLadder.Chairman) { ChangeNameTitle(id, change0); } else { ChangeNameTitle(id, change1); } } } //修改玩家的称号 alliance = ServerAllianceManager.GetAllianceById(oldOccupant); if (alliance != null) { var change = new Dict_int_int_Data(); var tbTitle = Table.GetNameTitle(5000); change.Data.Add(tbTitle.FlagId, 0); tbTitle = Table.GetNameTitle(5001); change.Data.Add(tbTitle.FlagId, 0); foreach (var id in alliance.mDBData.Members) { ChangeNameTitle(id, change); } } //通知logic,本服的王城占领者变了 NotifyAllianceWarInfo(_this, occupantId); Init(_this); }
private IEnumerator GiveItemList(Coroutine coroutine, ObjPlayer character, Dict_int_int_Data item) { var result = SceneServer.Instance.LogicAgent.GiveItemList(character.ObjId, item, (int)eCreateItemType.CheckenPick); yield return(result.SendAndWaitUntilDone(coroutine)); }
public static void SSChangeExdata(ulong id, Dict_int_int_Data changes) { mImpl.SSChangeExdata(id, changes); }
public void FinalLogic(LodeManager _this) { #region 给排行前的玩家添加称号 //给排行前的玩家添加称号 do { List <DBAllianceTaskList> l = new List <DBAllianceTaskList>(); List <int> lName = new List <int>(); foreach (var v in _this.mDbData.ActivityInfo.AllianceTaskList) { lName.Add(v.Key); } for (int i = 0; i < lName.Count; i++) { l.Add(_this.mDbData.ActivityInfo.AllianceTaskList[lName[i]]); } l.Sort((a, b) => { if (b.Flags > a.Flags) { return(1); } if (b.Flags < a.Flags) { return(-1); } return(b.Score - a.Score); }); if (l.Count == 0) { break; } var al = l[0]; var alliance = ServerAllianceManager.GetAllianceById(al.Id); if (alliance == null) { break; } { Dictionary <int, Dict_int_int_Data> title = new Dictionary <int, Dict_int_int_Data>(); { var tb = Table.GetNameTitle(8000); if (tb == null) { break; } Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add((int)eAllianceLadder.Chairman, tmp); } { var tb = Table.GetNameTitle(8001); if (tb == null) { break; } Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add((int)eAllianceLadder.ViceChairman, tmp); } { var tb = Table.GetNameTitle(8002); if (tb == null) { break; } Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add((int)eAllianceLadder.Elder, tmp); } { var tb = Table.GetNameTitle(8003); if (tb == null) { break; } Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add((int)eAllianceLadder.Member, tmp); } var dad = alliance.Dad; foreach (var id in alliance.mDBData.Members) { var m = dad.GetCharacterData(id); if (m == null) { continue; } if (title.ContainsKey(m.Ladder) == true) { ChangeNameTitle(id, title[m.Ladder]); } } } } while (false); #endregion #region 给排行前的工会中的玩家添加称号 //给排行前的工会中的玩家添加称号 { Dictionary <int, Dict_int_int_Data> title = new Dictionary <int, Dict_int_int_Data>(); { var tb = Table.GetNameTitle(9000); if (tb != null) { Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add(0, tmp); } } { var tb = Table.GetNameTitle(9001); if (tb != null) { Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add(1, tmp); } } { var tb = Table.GetNameTitle(9002); if (tb != null) { Dict_int_int_Data tmp = new Dict_int_int_Data(); tmp.Data.Add(tb.FlagId, 1); title.Add(2, tmp); } } for (int i = 0; i < 3 && i < _this.mDbData.ActivityInfo.PlayerTaskList.Count; i++) { var id = _this.mDbData.ActivityInfo.PlayerTaskList[i].guid; if (title.ContainsKey(i) == true) { ChangeNameTitle(id, title[i]); } } } #endregion }
public void SendMail(ulong id, string title, string content, Dict_int_int_Data items) { CoroutineFactory.NewCoroutine(SendMailCoroutine, id, title, content, items).MoveNext(); }
public void SSChangeExdata(ulong id, Dict_int_int_Data changes) { CoroutineFactory.NewCoroutine(SSChangeExdataCoroutine, id, changes).MoveNext(); }
//触发掉落 public void MonsterKill(ObjNPC npc, ulong killer) { var tbNpc = Table.GetNpcBase(npc.TypeId); if (tbNpc == null) { Logger.Error("MonsterKill Type={0}", npc.TypeId); return; } var scene = npc.Scene; var GiveExp = new Dictionary <ObjCharacter, int>(); var playerList = npc.GetExpList(GiveExp); if (playerList == null) { return; } if (playerList.Count < 1) { return; } //分经验 foreach (var i in GiveExp) { var player = i.Key as ObjPlayer; if (player != null) { var giveExp = 0; if (tbNpc.IsDynamicExp == 1) { var refExp = i.Key.Attr._ExpRef; if (tbNpc.ExpMultiple > 2) { refExp = (tbNpc.ExpMultiple + i.Key.Attr._ExpRef - 10000); } giveExp = (int) (tbNpc.DynamicExpRatio / 10000.0f * Table.GetLevelData(player.GetLevel()).DynamicExp *refExp / 10000); } else { if (tbNpc.ExpMultiple < 2) { giveExp = i.Value * i.Key.Attr._ExpRef / 10000; } else { giveExp = (int)(1.0 * i.Value * (tbNpc.ExpMultiple + i.Key.Attr._ExpRef - 10000) / 10000); } } var addCount = AutoActivityManager.GetActivity(1020); if (addCount > 1) { if (tbNpc.Id >= 210000 && tbNpc.Id <= 213104) { giveExp = giveExp * addCount; } } giveExp = (int)(giveExp * player.GetAdditionExp()); float fExp = player.Attr.ExpAdd / 10000.0f; giveExp = (int)(giveExp * fExp); if (player.Scene != null) { player.Scene.OnPlayerPickUp(player.ObjId, (int)eResourcesType.ExpRes, giveExp); } CoroutineFactory.NewCoroutine(MonsterKillMessageToLogic, i.Key.ObjId, npc.TypeId, giveExp, scene.TypeId).MoveNext(); //攻击装备耐久相关 player.TryDelAttackEquipDurable(); } } var dropId = tbNpc.DropId; if (scene.SpecialDrop != -1 && tbNpc.Spare != -1) { var tbSU = Table.GetSkillUpgrading(tbNpc.Spare); dropId = tbSU.GetSkillUpgradingValue(scene.SpecialDrop); } if (dropId == -1) { return; } var Droplist = new Dictionary <int, int>(); //特殊掉落 { List <int> list; if (Drop.SpecialDropForNewCharacter.TryGetValue(tbNpc.Id, out list)) { var id = list[0]; var character = CharacterManager.Instance.GetCharacterControllerFromMemroy(killer); if (character != null) { var ex = character.mDbData.SpecialDrop; if (!BitFlag.GetLow(ex, id)) { Droplist.Clear(); var dropid = list[character.TypeId + 1]; DropMother(dropid, Droplist); if (Droplist.Count > 0) { ex = BitFlag.LongSetFlag(ex, id); character.mDbData.SpecialDrop = ex; character.MarkDbDirty(); } foreach (var i in Droplist) { scene.CreateDropItem(tbNpc.BelongType, new List <ulong> { character.ObjId }, 0, i.Key, i.Value, npc.GetPosition()); } Droplist.Clear(); } } } } //节日掉落 { var dropIds = tbNpc.SpecialDrops; var yunyingIds = tbNpc.YunYingIds; for (int i = 0; i < yunyingIds.Count; i++) { var tbOperationActivity = Table.GetOperationActivity(yunyingIds[i]); if (null == tbOperationActivity) { continue; } if (!(System.DateTime.Now >= System.DateTime.Parse(tbOperationActivity.openTime) && System.DateTime.Now <= System.DateTime.Parse(tbOperationActivity.closeTime))) { continue; } if (i >= dropIds.Count) { continue; } Droplist.Clear(); DropMother(dropIds[i], Droplist); var character = CharacterManager.Instance.GetCharacterControllerFromMemroy(killer); if (character != null) { foreach (var dropitem in Droplist) { scene.CreateDropItem(tbNpc.BelongType, new List <ulong> { character.ObjId }, 0, dropitem.Key, dropitem.Value, npc.GetPosition()); //Logger.Warn("holidaydrop: [{0},{1}]", dropitem.Key, dropitem.Value); } Droplist.Clear(); } } } //分掉落物品 switch (tbNpc.BelongType) { case 0: //队内自由拾取 { DropMother(dropId, Droplist); var ownerList = new List <ulong>(); foreach (var character in playerList) { if (character != null && tbNpc.LimitFlag > 0) { if (character.GetObjType() == ObjType.PLAYER) { var p = character as ObjPlayer; if (p != null) { Dict_int_int_Data data = new Dict_int_int_Data(); data.Data.Add(tbNpc.LimitFlag, 1); p.SendExDataChange(data); } } } ownerList.Add(character.ObjId); } foreach (var i in Droplist) { scene.CreateDropItem(tbNpc.BelongType, ownerList, playerList[0].GetTeamId(), i.Key, i.Value, npc.GetPosition()); } } break; case 1: //队内伤害拾取 { DropMother(dropId, Droplist); var ownerList = new List <ulong>(); if (playerList[0].GetTeamId() == 0) { ownerList.Add(playerList[0].ObjId); var p = playerList[0] as ObjPlayer; if (p != null) { Dict_int_int_Data data = new Dict_int_int_Data(); data.Data.Add(tbNpc.LimitFlag, 1); p.SendExDataChange(data); } } else { var maxHatre = 0; ObjCharacter maxCharacter = null; foreach (var character in playerList) { var nh = npc.GetNowHatre(character); if (nh > maxHatre) { maxHatre = nh; maxCharacter = character; } } //ObjCharacter maxCharacter = npc.GetMaxHatreByTeam(playerList[0].GetTeamId()); if (maxCharacter == null) { ownerList.Add(playerList[0].ObjId); maxCharacter = playerList[0]; } else { ownerList.Add(maxCharacter.ObjId); } if (maxCharacter.GetObjType() == ObjType.PLAYER) { var p = maxCharacter as ObjPlayer; if (p != null) { Dict_int_int_Data data = new Dict_int_int_Data(); data.Data.Add(tbNpc.LimitFlag, 1); p.SendExDataChange(data); } } } foreach (var i in Droplist) { scene.CreateDropItem(tbNpc.BelongType, ownerList, playerList[0].GetTeamId(), i.Key, i.Value, npc.GetPosition()); } } break; case 2: //队内分别拾取 { foreach (var character in playerList) { if (npc.Scene == null || character.Scene == null) { continue; } if (npc.Scene.Guid != character.Scene.Guid) { continue; } Droplist.Clear(); DropMother(dropId, Droplist); foreach (var i in Droplist) { scene.CreateDropItem(tbNpc.BelongType, new List <ulong> { character.ObjId }, 0, i.Key, i.Value, npc.GetPosition()); } if (character.GetObjType() == ObjType.PLAYER) { var p = character as ObjPlayer; if (p != null) { Dict_int_int_Data data = new Dict_int_int_Data(); data.Data.Add(tbNpc.LimitFlag, 1); p.SendExDataChange(data); } } } } break; case 3: //所有人分别拾取 { var Hatres = npc.GetAllHatre(); foreach (var hatre in Hatres) { if (!(hatre.Key is ObjPlayer)) { continue; } if (npc.Scene == null || hatre.Key.Scene == null) { continue; } if (npc.Scene.Guid != hatre.Key.Scene.Guid) { continue; } Droplist.Clear(); DropMother(dropId, Droplist); foreach (var i in Droplist) { scene.CreateDropItem(tbNpc.BelongType, new List <ulong> { hatre.Key.ObjId }, 0, i.Key, i.Value, npc.GetPosition()); } if (hatre.Key.GetObjType() == ObjType.PLAYER) { var p = hatre.Key as ObjPlayer; if (p != null) { Dict_int_int_Data data = new Dict_int_int_Data(); data.Data.Add(tbNpc.LimitFlag, 1); p.SendExDataChange(data); } } } } break; case 4: //所有人自由拾取 { Droplist.Clear(); DropMother(dropId, Droplist); var addCount = AutoActivityManager.GetActivity(1010); if (addCount > 1) { if (npc.TableNpc.Id >= 65000 && npc.TableNpc.Id < 65005) { for (var i = 1; i < addCount; i++) { DropMother(dropId, Droplist); } } } foreach (var i in Droplist) { scene.CreateDropItem(tbNpc.BelongType, new List <ulong>(), 0, i.Key, i.Value, npc.GetPosition()); } } break; } }