public List <NPCInfo> GetTransmitList() { List <NPCInfo> list = new List <NPCInfo>(); for (int i = 0; i < allNpcList.Count; i++) { var npc = allNpcList[i]; NpcDataBase db = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)npc.npcID); if (db != null) { if (db.dwType == (int)GameCmd.enumNpcType.NPC_TYPE_TRANSFER) { list.Add(npc); } } } return(list); }
void ShowFlashColor(IEntity defender) { Profiler.BeginSample("ShowFlashColor"); INPC npc = defender as INPC; if (npc != null) { int baseID = npc.GetProp((int)EntityProp.BaseID); NpcDataBase npcDb = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)baseID); if (npcDb != null) { uint monsterType = npcDb.dwMonsterType; if (monsterType == 0) { return; } List <uint> configList = SkillSystem.GetColorList(monsterType); if (configList != null) { if (configList.Count > 0) { uint show = configList[0]; if (show == 1) { if (configList.Count != 6) { // Log.Error("全局配置FlashColor 长度错误 ,检查配置"); } else { FlashColor fc = new FlashColor(); fc.color = new Color(configList[2] * 1.0f / 255, configList[3] * 1.0f / 255, configList[4] * 1.0f / 255, configList[5] * 1.0f / 255); fc.fLift = configList[1] * 1.0f / 1000; defender.SendMessage(EntityMessage.EntityCommand_FlashColor, fc); // Log.Error("flash color " + defender.GetName()); } } } } } } Profiler.EndSample(); }
void onClickHuntingGrid(HuntingDataBase huntDa) { HuntingDataBase data = huntDa; MonsterID = data.ID; DataManager.Manager <HuntingManager>().MonsterID = MonsterID; if (boss_dic.Count > 0 && boss_dic.ContainsKey(MonsterID)) { NpcDataBase monster = GameTableManager.Instance.GetTableItem <NpcDataBase>(boss_dic[MonsterID].boss_npc_id); if (monster != null) { m_label_BossName.text = monster.strName; MapDataBase map = GameTableManager.Instance.GetTableItem <MapDataBase>(data.mapID); m_label_mapLabel.text = map.strName; } } ShowModel(data); onClick_DropBtn_Btn(data); m_label_LieHunNum.text = data.HuntingScore.ToString(); }
void ShowModel(uint mstID) { NpcDataBase npcData = GameTableManager.Instance.GetTableItem <NpcDataBase>(mstID); if (npcData != null) { uint modelID = npcData.dwViewModelSet; // 使用观察模型 if (m_RTObj != null) { m_RTObj.Release(); m_RTObj = null; } m_RTObj = DataManager.Manager <RenderTextureManager>().CreateRenderTextureObj((int)modelID, 800); if (m_RTObj == null) { return; } ModeDiplayDataBase modelDisp = GameTableManager.Instance.GetTableItem <ModeDiplayDataBase>(modelID); if (modelDisp == null) { Engine.Utility.Log.Error("BOSS模型ID为{0}的模型展示数据为空", modelID); return; } m_RTObj.SetDisplayCamera(modelDisp.pos800, modelDisp.rotate800, modelDisp.Modelrotation); m_RTObj.PlayModelAni(Client.EntityAction.Stand); UIRenderTexture rt = m__Model.GetComponent <UIRenderTexture>(); if (null == rt) { rt = m__Model.gameObject.AddComponent <UIRenderTexture>(); } if (null != rt) { rt.SetDepth(3); rt.Initialize(m_RTObj, m_RTObj.YAngle, new UnityEngine.Vector2(800, 800)); } } }
public override void SetGridData(object data) { base.SetGridData(data); if (null == data) { return; } this.huntingdata = data as HuntingDataBase; MonsterID = huntingdata.ID; level.text = huntingdata.level.ToString(); if (null != icon) { UIManager.GetTextureAsyn(huntingdata.icon, ref m_iconCASD, () => { if (null != icon) { icon.mainTexture = null; } }, icon); } //刷新时间 uint boss_index = huntingdata.ID; if (boss_dic.Count > 0) { string msg = ""; TextManager tMgr = DataManager.Manager <TextManager>(); if (boss_dic.ContainsKey(boss_index)) { BossRefreshInfo info = boss_dic[boss_index]; if (info.boss_state == (uint)BossState.BossState_Live) { msg = tMgr.GetLocalText(LocalTextType.HuntingBoss_YiShuaXin); } //击杀中 else if (info.boss_state == (uint)BossState.BossState_Attacted) { msg = tMgr.GetLocalText(LocalTextType.HuntingBoss_GongJiZhong); } else if (info.boss_state == (uint)BossState.BossState_Die) { DateTime dt = SetTime(info.remaintime); msg = tMgr.GetLocalFormatText(LocalTextType.HuntingBoss_ShuaXinShiJian, string.Format("{0:d2}", dt.Hour) + ":" + string.Format("{0:d2}", dt.Minute)); } else if (info.boss_state == (uint)BossState.BossState_Rest) { msg = tMgr.GetLocalText(LocalTextType.HuntingBoss_YiXiuXi); } NpcDataBase monster = GameTableManager.Instance.GetTableItem <NpcDataBase>(info.boss_npc_id); if (monster != null) { name.text = monster.strName; } else { Engine.Utility.Log.Error("NPC表格中找不到ID为{0}的怪物,请确认表格或者重新打表", info.boss_npc_id); } m_lab_bossState.text = msg; } } }
void InitTargetChangeUI() { IEntity ie = Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl().GetCurTarget(); if (ie == null) { m_trans_target.gameObject.SetActive(false); } else { m_trans_target.gameObject.SetActive(true); IEntity entity = ie; string name = entity.GetName(); string lvstr = entity.GetProp((int)CreatureProp.Level).ToString(); m_label_MonsterLevel_Label.text = lvstr; bool showPackage = false; //怪 if (entity.GetEntityType() == EntityType.EntityType_NPC) { INPC npc = entity as INPC; NpcDataBase ndb = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)npc.GetProp((int)EntityProp.BaseID)); if (ndb == null) { return; } showPackage = npc.IsBoss(); if (ndb.dwMonsterType == 1) { InitTargetUIInMonster(); m_widget_player.gameObject.SetActive(false); m_widget_monster.gameObject.SetActive(true); m_lableTargetLevel.text = entity.GetProp((int)CreatureProp.Level).ToString(); } else { InitTargetUI(); string iconName = UIManager.GetIconName(ndb.npcIcon, npc.IsPet()); UIManager.GetTextureAsyn(iconName, ref m_curTargetIconAsynSeed, () => { if (null != m_spriteTargetIcon) { m_spriteTargetIcon.mainTexture = null; } }, m_spriteTargetIcon, false); m_widget_player.gameObject.SetActive(true); m_widget_monster.gameObject.SetActive(false); } } // 玩家 else { InitTargetUI(); m_widget_player.gameObject.SetActive(true); m_widget_monster.gameObject.SetActive(false); IPlayer player = entity as IPlayer; if (player != null) { int job = player.GetProp((int)PlayerProp.Job); int sex = player.GetProp((int)PlayerProp.Sex); SelectRoleDataBase sdb = table.SelectRoleDataBase.Where((GameCmd.enumProfession)job, (GameCmd.enmCharSex)sex); if (sdb != null) { UIManager.GetTextureAsyn(sdb.strprofessionIcon, ref m_curTargetIconAsynSeed, () => { if (null != m_spriteTargetIcon) { m_spriteTargetIcon.mainTexture = null; } }, m_spriteTargetIcon, false); } m_transHateList.gameObject.SetActive(false); } } m_toggle_packageState.gameObject.SetActive(showPackage); m_lableTargetName.text = name; UpdateTargetHp(entity); } }
//StringBuilder targetName = new StringBuilder(20); private void OnTargetChange(object param) { stTargetChange tc = (stTargetChange)param; if (tc.target == null) { m_trans_target.gameObject.SetActive(false); } else { IEntity entity = tc.target; string name = entity.GetName(); string lvstr = entity.GetProp((int)CreatureProp.Level).ToString(); m_label_MonsterLevel_Label.text = lvstr; bool showPackeage = false; if (entity.GetEntityType() == EntityType.EntityType_NPC) { INPC npc = entity as INPC; showPackeage = npc.IsBoss(); NpcDataBase ndb = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)npc.GetProp((int)EntityProp.BaseID)); if (ndb != null) { if (ndb.dwMonsterType == 1) { InitTargetUIInMonster(); m_widget_player.gameObject.SetActive(false); m_widget_monster.gameObject.SetActive(true); m_lableTargetLevel.text = entity.GetProp((int)CreatureProp.Level).ToString(); } else { InitTargetUI(); string iconName = UIManager.GetIconName(ndb.npcIcon, npc.IsPet()); UIManager.GetTextureAsyn(iconName, ref m_curTargetIconAsynSeed, () => { if (null != m_spriteTargetIcon) { m_spriteTargetIcon.mainTexture = null; } }, m_spriteTargetIcon, false); m_widget_player.gameObject.SetActive(true); m_widget_monster.gameObject.SetActive(false); } } if (npc.IsMonster() == false) { bool bVisit = true; if (npc.IsSummon() || npc.IsPet()) { bVisit = false; } CopyTypeTable ct = DataManager.Manager <ComBatCopyDataManager>().GetCurCopyType(); if (ct != CopyTypeTable.Arena) { if (bVisit) { Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl().VisiteNPC(npc.GetUID()); } } } else { //请 if (m_nLastNpcId != entity.GetUID()) { BShowEnemyList = false; m_transHateList.gameObject.SetActive(false); } } m_nLastNpcId = entity.GetUID(); if (m_nLastNpcId != 0) { stRefreshNPCBelongParam npcbelongdata = NpcAscription.Instance.GetNpcBelongByNpcID(m_nLastNpcId); UpdateTargetStatus(npcbelongdata.npcid, npcbelongdata.teamid, npcbelongdata.ownerid, npcbelongdata.clanid, npcbelongdata.ownerName); } } else { InitTargetUI(); m_widget_player.gameObject.SetActive(true); m_widget_monster.gameObject.SetActive(false); IPlayer player = entity as IPlayer; if (player != null) { int job = player.GetProp((int)PlayerProp.Job); int sex = player.GetProp((int)PlayerProp.Sex); SelectRoleDataBase sdb = table.SelectRoleDataBase.Where((GameCmd.enumProfession)job, (GameCmd.enmCharSex)sex); if (sdb != null) { UIManager.GetTextureAsyn(sdb.strprofessionIcon, ref m_curTargetIconAsynSeed, () => { if (null != m_spriteTargetIcon) { m_spriteTargetIcon.mainTexture = null; } }, m_spriteTargetIcon, false); } m_transHateList.gameObject.SetActive(false); //目标选择 OnSetSelectTargetGrid(player.GetID()); } } m_toggle_packageState.gameObject.SetActive(showPackeage); m_lableTargetName.text = name; //m_lableTargetLevel.text = entity.GetProp((int)CreatureProp.Level).ToString(); UpdateTargetHp(entity); BuffManager.TargetBuffList.Clear(); if (entity != null) { List <Client.stAddBuff> lstBuff; IBuffPart part = entity.GetPart(EntityPart.Buff) as IBuffPart; if (part != null) { part.GetBuffList(out lstBuff); for (int i = 0; i < lstBuff.Count; ++i) { stAddBuff buff = lstBuff[i]; table.BuffDataBase db = GameTableManager.Instance.GetTableItem <table.BuffDataBase>(buff.buffid); if (db != null) { if (db.dwShield == 1) {//不显示的直接跳过 continue; } } BuffManager.TargetBuffList.Add(lstBuff[i]); } } else { Engine.Utility.Log.Error("获取{0}Buff部件失败!", entity.GetName()); } } m_trans_target.gameObject.SetActive(true); RefreshBuffIcon(m_trans_TargetBUffContainer, BuffManager.TargetBuffList); } }
private void SendPlayDefenerAniMessage(IEntity defender, string aniName) { CreatureState state = defender.GetCurState(); ShowFlashColor(defender); if (state != CreatureState.Dead) { bool bRide = (bool)defender.SendMessage(EntityMessage.EntityCommond_IsRide, null); if (bRide) { return; } SkillState skillState = GetTargetSkillState(defender); if (skillState != SkillState.Attack && skillState != SkillState.Prepare) { if (defender.GetCurState() == CreatureState.Contrl) { return; } if (state != CreatureState.Move) { Client.IControllerSystem cs = m_ClientGlobal.GetControllerSystem(); if (cs != null) { Client.ICombatRobot robot = cs.GetCombatRobot(); if (robot.Status == CombatRobotStatus.RUNNING) { if (SkillSystem.GetClientGlobal().IsMainPlayer(defender.GetID())) {//自动挂机 不播受击 return; } } } INPC npc = defender as INPC; if (npc != null) { int baseID = npc.GetProp((int)EntityProp.BaseID); NpcDataBase ndb = GameTableManager.Instance.GetTableItem <NpcDataBase>((uint)baseID); if (ndb != null) { if (ndb.dwMonsterType == 3) { return; } } } //defender.SendMessage( EntityMessage.EntityCommand_StopMove , defender.GetPos() ); //移动不播放受击动作 PlayAni anim_param = new PlayAni(); anim_param.strAcionName = aniName; anim_param.fSpeed = 1; anim_param.nStartFrame = 0; anim_param.nLoop = 1; anim_param.fBlendTime = 0.2f; anim_param.aniCallback = OnHitCallback; anim_param.callbackParam = defender; // if (SkillSystem.GetClientGlobal().IsMainPlayer(m_Master.GetID())) // { // Engine.Utility.Log.Info("技能 播放受击动作 {0} {1}", anim_param.strAcionName, state); // } defender.SendMessage(EntityMessage.EntityCommand_PlayAni, anim_param); } else { if (SkillSystem.GetClientGlobal().IsMainPlayer(m_Master.GetID())) { //Engine.Utility.Log.Info("移动不播放受击动作"); } } } else { // Engine.Utility.Log.Error(string.Format("{0}技能状态错误不能播放受击动作 状态:{1}", defender.GetName(), GetTargetSkillState(defender))); } } }