protected bool FillWarPersonInfo(ref WarPersonInfo warPersonInfo, cmd_war_personinfo recordInfo) { warPersonInfo.nHeroId = recordInfo.nHeroID; warPersonInfo.nCamp = recordInfo.nCamp; warPersonInfo.nLevel = recordInfo.nLevel; warPersonInfo.nID = recordInfo.uID; warPersonInfo.nKillNum = recordInfo.nKillNum; warPersonInfo.nIndex = GetAlwaysMyTeamLeftIndex(recordInfo.nIndex, recordInfo.nCamp); warPersonInfo.nDeadNum = recordInfo.nDeadNum; warPersonInfo.nAssists = recordInfo.nAssists; warPersonInfo.nMobaWarMoney = recordInfo.nKillMonsterNum; warPersonInfo.uPDBID = recordInfo.uPDBID; warPersonInfo.playerName = recordInfo.szName; warPersonInfo.bIsHero = recordInfo.isProtag; warPersonInfo.bIsAI = recordInfo.nIsAi > 0; warPersonInfo.nSummerIconID = recordInfo.nSummerIconID; warPersonInfo.sSummerDesc = recordInfo.szSummerDesc; warPersonInfo.nAliveContAssist = recordInfo.nAliveContAssist; warPersonInfo.nSkinID = recordInfo.nSkinID; warPersonInfo.nSex = recordInfo.nSex; warPersonInfo.nPlayerType = recordInfo.nPlayerType; warPersonInfo.nDestroyTower = recordInfo.nDestroyTower; return(true); }
/// 实现相对阵营中 杀敌数 等级 助攻数更新 public void UpdatePlayerInfo(IntPtr recordInfo, int nPtrLen) { IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(recordInfo, nPtrLen); cmd_war_personInfo_count obj = helper.get <cmd_war_personInfo_count>(); for (int i = 0; i < obj.nCount; ++i) { cmd_war_personinfo data = helper.get <cmd_war_personinfo>(); ulong uPdBid = data.uPDBID; if (uPdBid == 0) { continue; } int uCamp = data.nCamp; // 如果找到这个元素就清空重新把元素加入进去 if (recordInfoArry.ContainsKey(uPdBid)) { // 找到的更新 WarPersonInfo tmpRecordInfo = recordInfoArry[uPdBid]; doPersonAliveAssistBrodcast(tmpRecordInfo, data.nAliveContAssist); tmpRecordInfo.nLevel = data.nLevel; tmpRecordInfo.nID = data.uID; tmpRecordInfo.nKillNum = data.nKillNum; tmpRecordInfo.nDeadNum = data.nDeadNum; tmpRecordInfo.nAssists = data.nAssists; tmpRecordInfo.nMobaWarMoney = data.nKillMonsterNum; tmpRecordInfo.bIsHero = data.isProtag; tmpRecordInfo.nAliveContAssist = data.nAliveContAssist; tmpRecordInfo.nDestroyTower = data.nDestroyTower; if (tmpRecordInfo.nSummerIconID <= 0) { tmpRecordInfo.nSummerIconID = data.nSummerIconID; tmpRecordInfo.sSummerDesc = data.szSummerDesc; } recordInfoArry[uPdBid] = tmpRecordInfo; } else { WarPersonInfo warPersonInfo = new WarPersonInfo(); FillWarPersonInfo(ref warPersonInfo, data); recordInfoArry.Add(data.uPDBID, warPersonInfo); } } if (this.IsWarRecordTableVisible == true) { UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_RECORDTABLE_FIGHTING_UPDATERECORDINFO, null); } if (m_bUpdateTeamInfo) { UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_TEAMMATEINFO_UPDATETEAMINFO, null); } UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WAR_UPDATEPLAYERINFO, null); }
private void doPersonAliveAssistBrodcast(WarPersonInfo info, int nUpdateAliveAssist) { if (nUpdateAliveAssist <= 0 || info.nAliveContAssist >= nUpdateAliveAssist) { return; } string sDesc = null; bool bChatShow = false; int nSoundID = 0; int nAssistType = 0; if (nUpdateAliveAssist == 5 || nUpdateAliveAssist == 10) { nSoundID = (int)WarKillSoundType.WKST_SELFCONTINUOUSASSIST + nUpdateAliveAssist / 5 - 1; sDesc = "连续助攻" + nUpdateAliveAssist + "次!"; nAssistType = (int)BroadcastType.EMBT_ALIVEASSIST_2; if (info.nID != EntityFactory.MainHeroID) { return; } } else if ((nUpdateAliveAssist - 15) % 5 == 0) { nSoundID = (int)WarKillSoundType.WKST_SELFGODLIKEASSIST; sDesc = "已完成了神助攻"; nAssistType = (int)BroadcastType.EMBT_ALIVEASSIST_1; bChatShow = true; } else { return; } PlayerAliveAssistData data = new PlayerAliveAssistData(); data.nHeroID = info.nHeroId; data.nPlayerName = info.playerName; data.szDesc = sDesc; data.bChatShow = bChatShow; data.nSoundID = nSoundID; data.nAssistType = nAssistType; data.nAssistCount = nUpdateAliveAssist; data.bSameCamp = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP) == info.nCamp; UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WARBROADCASTMESSAGEMGR_ALIVEASSIST, data); }