bool SpecialDialog(Obj_NPC obj) { if (obj && (obj.BaseAttr.RoleBaseID == GlobeVar.MARRY_NPCID || obj.BaseAttr.RoleBaseID == GlobeVar.DIVORCE_NPCID || obj.BaseAttr.RoleBaseID == GlobeVar.PARADE_NPCID) ) { MarryRootLogic.ShowMarryDialogUI(obj.BaseAttr.RoleBaseID); return(true); } //如果开关关闭,奖励NPC就按照普通NPC一样对话 if (obj && obj.BaseAttr.RoleBaseID == GlobeVar.AWARD_NPCID) { if (!GameManager.gameManager.PlayerDataPool.IsServerFlagOpen(SERVER_FLAGS_ENUM.FLAG_CYFANS)) { return(false); } } //显示带选项的对话框(可选) if (obj.DefaultDialogID != -1) { Tab_NpcDialog _npcDialogInfo = TableManager.GetNpcDialogByID(obj.DefaultDialogID, 0); if (_npcDialogInfo != null && _npcDialogInfo.OptionDialogId != -1) { OptionDialogLogic.ShowOptionDialogUI(obj.DefaultDialogID); return(true); } else { //LogModule.ErrorLog("Can not find npcDialogInfo: {0} or OptionDialogId == -1", obj.DefaultDialogID); } } return(false); }
public static void CreateModelNpcObj(int nCharModelID, Obj_Init_Data initData, DelAsycModelOver delAsycStroyModel) { if (initData == null) { LogModule.ErrorLog("CreateModelNpcObj called but initData == null is null!"); } //NPC创建的时候统一用RoleBase中的ID,而不用Obj_Init_Data结构中的CharModelID Tab_CharModel charModel = TableManager.GetCharModelByID(nCharModelID, 0); if (null == charModel) { return; } GameObject npc = ResourceManager.InstantiateResource("Prefab/Model/NPCRoot", initData.m_ServerID.ToString()) as GameObject; //GameObject npc = CreateGameObjectByResource(initData); if (null != npc) { //加载逻辑体,同时异步加载渲染体 Obj_NPC objNPC = (Obj_NPC)npc.GetComponent <Obj_NPC>(); if (!objNPC) { objNPC = (Obj_NPC)npc.AddComponent <Obj_NPC>(); } if (objNPC && objNPC.Init(initData)) { objNPC.CanLogic = true; Singleton <ObjManager> .Instance.AddPoolObj(objNPC.ServerID.ToString(), objNPC); } LoadModelToRoot(nCharModelID, EResourceType.CharacterModel, LoadModelComplete, npc, charModel, null); Singleton <ObjManager> .Instance.CachedNpc(npc.name, npc, objNPC.IsNeedBecameVisible()); } }
void init() { m_MissionBoadTime = 0; this.gameObject.GetComponent <UISprite>().spriteName = ""; m_curBillBoard = this.gameObject.transform.parent.gameObject.GetComponent <BillBoard>(); if (m_curBillBoard && m_curBillBoard.BindObj != null) { m_MissionNpc = m_curBillBoard.BindObj.GetComponent <Obj_NPC>(); } }
void OpenNianShouCopyScene() { Obj_NPC TargetNpc = Singleton <DialogCore> .GetInstance().CareNPC; if (TargetNpc != null) { CG_OPEN_NIANSHOUCOPYSCENE packet = (CG_OPEN_NIANSHOUCOPYSCENE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_OPEN_NIANSHOUCOPYSCENE); packet.SetVillaintype(1); packet.SetObjid(TargetNpc.ServerID); packet.SendPacket(); } }
bool IsGuildBossNpc(Obj_Character targetObj) { if (targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { Obj_NPC rNpc = targetObj as Obj_NPC; if (rNpc != null) { return(rNpc.IsGuildActivityBoss); } } return(false); }
/// <summary> /// 获取最近的NPC并接近和他对话 /// </summary> private void getNPC() { Obj_NPC TargetNpc = null; List <Obj_NPC> npcList = new List <Obj_NPC>(); float minDistance = float.PositiveInfinity; Vector3 mainPlayerPos; mainPlayerPos = Singleton <ObjManager> .GetInstance().MainPlayer.Position; foreach (string strName in Singleton <ObjManager> .GetInstance().ObjPools.Keys) {//遍历场景中的npc Obj_Character objChar = Singleton <ObjManager> .GetInstance().ObjPools[strName] as Obj_Character; if (null == objChar) { continue; } TargetNpc = objChar as Obj_NPC; if (TargetNpc == null) { continue; } if (Reputation.IsFriend(TargetNpc)) {//如果是友好NPC则添加进npc列表 npcList.Add(TargetNpc); } } for (int i = 0; i < npcList.Count; i++) {//比较距离,得到最近的那个npc float curDistance = Vector3.Distance(mainPlayerPos, npcList[i].Position); if (curDistance < minDistance) { minDistance = curDistance; TargetNpc = npcList[i]; } } if (TargetNpc == null) { return; } if (null != Singleton <ObjManager> .GetInstance().MainPlayer) { Singleton <ObjManager> .GetInstance().MainPlayer.SelectTarget = TargetNpc; Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(TargetNpc.gameObject); } }
// 寻路找怪处理 void FindEnamyTick() { if (m_bNotEnamyNpcFlag != 0) { return; } //如果有目标名字则寻找该目标,进行交互 if (m_Path.AutoSearchTargetName != "") { Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInSceneByName(m_Path.AutoSearchTargetName); if (obj && obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { Obj_NPC objNpc = obj as Obj_NPC; //根据目标NPC的势力确认是对话还是攻击 if (Reputation.IsEnemy(objNpc) || Reputation.IsNeutral(objNpc)) { Singleton <ObjManager> .GetInstance().MainPlayer.StopMove(); m_Path.AutoSearchPosCache.Clear(); m_Path.ResetPath(); IsAutoSearching = false; m_EndPointCache.Clean(); //如果是地方NPC,则开始攻击 Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(objNpc.gameObject); Singleton <ObjManager> .GetInstance().MainPlayer.OnEnterCombat(objNpc.GetComponent <Obj_Character>()); m_bNotEnamyNpcFlag = 1; // 杀怪任务寻路结束,如果没在自动战斗状态,则进入自动战斗 Obj_MainPlayer mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer; if (null != mainPlayer && !mainPlayer.GetAutoCombatState() && Singleton <ObjManager> .Instance.MainPlayer.IsOpenCabalAuto) { mainPlayer.EnterAutoCombat(); GameManager.gameManager.MissionManager.MissionAutoCombat = true; } } else { m_bNotEnamyNpcFlag = 2; return; } } } }
void OnRecoverOk() { Obj_NPC TargetNpc = Singleton <DialogCore> .GetInstance().CareNPC; if (TargetNpc == null) { return; } if (Singleton <ObjManager> .Instance.MainPlayer) { CG_ASK_RECOVER Pack = (CG_ASK_RECOVER)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_RECOVER); Pack.ObjID = TargetNpc.ServerID; Pack.SendPacket(); } }
////////////////////////////////////////////////////////////////////////// //对话相关接口 ////////////////////////////////////////////////////////////////////////// // 弹出最近对话框 --寻路完响应 public void AutoDialog(int nMissionID) { Tab_MissionBase MissionBase = TableManager.GetMissionBaseByID(nMissionID, 0); if (MissionBase == null) { LogModule.ErrorLog("Can not find missionBase {0}", nMissionID); return; } Obj_NPC TargetNpc = null; foreach (string strName in Singleton <ObjManager> .GetInstance().ObjPools.Keys) { Obj_Character objChar = Singleton <ObjManager> .GetInstance().ObjPools[strName] as Obj_Character; if (null == objChar) { return; } if (objChar.BaseAttr.RoleBaseID == MissionBase.AcceptDataID || objChar.BaseAttr.RoleBaseID == MissionBase.CompleteDataID) { TargetNpc = objChar as Obj_NPC; break; } } if (TargetNpc == null) { LogModule.ErrorLog("Can not find TargetNPC of ID: {0} or {1}", MissionBase.AcceptDataID, MissionBase.CompleteDataID); return; } if (null != Singleton <ObjManager> .GetInstance().MainPlayer) { Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(TargetNpc.gameObject); } if (!TargetNpc.IsHaveMission(nMissionID)) { LogModule.ErrorLog("Do not have mission {0}", nMissionID); return; } Show(TargetNpc); }
void SwitchHpInfo(Obj_Character obj) { if (obj == null) { return; } bool bNormal = true; if (obj.ObjType == GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { Obj_NPC npcObj = obj as Obj_NPC; if (null != npcObj) { if (npcObj.NpcType == GameDefine_Globe.NPC_TYPE.BOSS) { bNormal = false; } } } if (bNormal) { m_NormalHPInfo.SetActive(true); m_BossHPInfo.SetActive(false); m_HpInfo.m_TargetHPSprite = m_NormalHPSprite; m_HpInfo.m_TargetHPBakSprite = m_NormalHPBakSprite; m_HpInfo.m_TargetHPText = m_NormalHPText; m_HpInfo.m_TargetHpCount = m_NormalHpCount; m_HpInfo.m_TargetHPotherSprite = null; m_HpInfo.m_TargetHpCount.gameObject.SetActive(true); } else { m_NormalHPInfo.SetActive(false); m_BossHPInfo.SetActive(true); m_HpInfo.m_TargetHPSprite = m_BossHPSprite; m_HpInfo.m_TargetHPBakSprite = m_BossHPBakSprite; m_HpInfo.m_TargetHPText = m_BossHPText; m_HpInfo.m_TargetHpCount = m_BossHpCount; m_HpInfo.m_TargetHPotherSprite = m_BossHPOtherSprite; m_HpInfo.m_TargetHpCount.gameObject.SetActive(false); } }
void ShowMissionUI(string missionContent, bool defaultDialog) { m_bIsDefaultDialog = defaultDialog; if (m_bIsDefaultDialog) { UIManager.HideAllUIExceptStory(); } //LogModule.ErrorLog("________________________________ " + missionContent); m_StoryDialogBottomLabel.text = missionContent; Obj_NPC TargetNpc = Singleton <DialogCore> .GetInstance().CareNPC; if (TargetNpc == null) { return; } if (TargetNpc.ModelID < 0) { return; } Tab_RoleBaseAttr roleBase = TableManager.GetRoleBaseAttrByID(TargetNpc.BaseAttr.RoleBaseID, 0); if (roleBase == null) { return; } Tab_CharModel charModel = TableManager.GetCharModelByID(TargetNpc.ModelID, 0); if (null == charModel) { return; } if (m_SpeakerName && m_StoryDialogBottomRole) { m_SpeakerName.text = roleBase.Name; m_StoryDialogBottomRole.mainTexture = ResourceManager.LoadResource("Texture/MissionRole/" + charModel.NPCSpriteName, typeof(Texture)) as Texture; } #if BOBJOYSTICK // RefreshJoyGUI(MissionUIType.TYPE_NONE); #endif }
void UpdateNPCInfo() { Obj_NPC TargetNpc = Singleton <DialogCore> .GetInstance().CareNPC; if (TargetNpc != null) { if (TargetNpc.ModelID >= 0) { Tab_RoleBaseAttr roleBase = TableManager.GetRoleBaseAttrByID(TargetNpc.BaseAttr.RoleBaseID, 0); if (roleBase != null) { Tab_CharModel charModel = TableManager.GetCharModelByID(TargetNpc.ModelID, 0); if (charModel != null && m_NPCHead && m_NPCName) { m_NPCName.text = roleBase.Name; Texture curTexture = ResourceManager.LoadResource("Texture/MissionRole/" + charModel.NPCSpriteName, typeof(Texture)) as Texture; if (null != curTexture) { m_NPCHead.gameObject.SetActive(true); m_NPCHead.mainTexture = curTexture; } else { m_NPCHead.gameObject.SetActive(false); } } } } if (m_curOptionDialogId != -1) { Tab_NpcOptionDialog _npcOptionInfo = TableManager.GetNpcOptionDialogByID(m_curOptionDialogId, 0); if (_npcOptionInfo != null) { m_NPCTalk.text = StrDictionary.GetClientString_WithNameSex(_npcOptionInfo.CenterText); } //RESET AWARD TEXT FOR TW if (m_curOptionDialogId == AWARD_DIALOGID && PlatformHelper.IsChannelTW()) { m_NPCTalk.text = StrDictionary.GetClientDictionaryString("#{5248}"); } } } }
//自动寻路结束 void Finish() { //如果有结束后的回调事件则回调 if (null != m_Path.FinishCallBackEvent && Games.GlobeDefine.GameDefine_Globe.EVENT_DEFINE.EVENT_INVALID != m_Path.FinishCallBackEvent.EventID) { Singleton <EventSystem> .GetInstance().PushEvent(m_Path.FinishCallBackEvent); } //如果有目标名字则寻找该目标,进行交互 if (m_Path.AutoSearchTargetName != "") { Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInSceneByName(m_Path.AutoSearchTargetName); if (obj && obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { Obj_NPC objNpc = obj as Obj_NPC; //根据目标NPC的势力确认是对话还是攻击 Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(objNpc.gameObject); if (Reputation.IsEnemy(objNpc) || Reputation.IsNeutral(objNpc)) { //如果是地方NPC,则开始攻击 Singleton <ObjManager> .GetInstance().MainPlayer.OnEnterCombat(objNpc.GetComponent <Obj_Character>()); } else { //如果是友方NPC,则开始对话 Singleton <DialogCore> .GetInstance().Show(objNpc); objNpc.FaceTo(Singleton <ObjManager> .GetInstance().MainPlayer.ObjTransform.position); } } } m_EndPointCache.Clean(); m_Path.ResetPath(); IsAutoSearching = false; if (SceneMapLogic.Instance() != null) { SceneMapLogic.Instance().StopPlayClickEffect(); } }
//开始对话窗口,根绝参数来确定有无关心NPC //对外只提供这一个接口,之后确定是显示对白还是显示任务 public void Show(Obj_NPC objNpc) { m_CareNPC = objNpc; if (m_CareNPC == null) { return; } GCGame.Utils.NpcTalk(objNpc.BaseAttr.RoleBaseID); if (false == IsInDialogArea()) { return; } // 弹出已完成任务 if (true == PopCompletedMission()) { return; } // 弹出可接任务 if (true == PopCanAcceptedMission()) { return; } if (true == SpecialDialog(m_CareNPC)) { return; } // 公会活动-捉迷藏 特殊对话 if (true == GuildHideAndSeekDialog()) { return; } // 与NPC对话 ShowText(m_CareNPC.DefaultDialogID); }
void UpdateNPCInfo() { Obj_NPC TargetNpc = Singleton <DialogCore> .GetInstance().CareNPC; if (TargetNpc != null) { if (TargetNpc.ModelID >= 0) { Tab_RoleBaseAttr roleBase = TableManager.GetRoleBaseAttrByID(TargetNpc.BaseAttr.RoleBaseID, 0); if (roleBase != null) { Tab_CharModel charModel = TableManager.GetCharModelByID(TargetNpc.ModelID, 0); if (charModel != null && m_NPCHead && m_NPCName) { m_NPCName.text = roleBase.Name; Texture curTexture = ResourceManager.LoadResource("Texture/MissionRole/" + charModel.NPCSpriteName, typeof(Texture)) as Texture; if (null != curTexture) { m_NPCHead.gameObject.SetActive(true); m_NPCHead.mainTexture = curTexture; } else { m_NPCHead.gameObject.SetActive(false); } } } } Tab_NpcDialog DialogLine = TableManager.GetNpcDialogByID(TargetNpc.DefaultDialogID, 0); if (DialogLine != null) { if (m_NPCTalk) { m_NPCTalk.text = StrDictionary.GetClientString_WithNameSex(DialogLine.Dialog); } } } }
public uint Execute(PacketDistributed ipacket) { GC_DAMAGEBOARD_INFO packet = (GC_DAMAGEBOARD_INFO )ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //enter your logic int objID = packet.ObjId; Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(objID); if (_objChar == null) { return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); } int nType = packet.Type; int nValue = packet.Value; //冒伤害板数字 int nShowTimes = -1; float fShowInter = 0.0f; if (packet.HasShowtimes && packet.HasShowinter) { nShowTimes = packet.Showtimes; fShowInter = packet.Showinter / 1000.0f; } //需要多次冒泡的特殊处理 if (nShowTimes > 0) { MultiShowDamageBoard _damageBoardInfo = new MultiShowDamageBoard(); _damageBoardInfo.CleanUp(); _damageBoardInfo.ShowTimes = nShowTimes; _damageBoardInfo.ShowInter = fShowInter; _damageBoardInfo.DamageType = (Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE)(nType); _damageBoardInfo.ShowValue = nValue / nShowTimes; _objChar.MultiShowDamageInfo.Add(_damageBoardInfo); _objChar.UpdateShowMultiShowDamageBoard(); } else //不需要分多次冒泡的 { if (_objChar.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { _objChar.OnAnimationIsHit(); if (_objChar.NpcEdgeGlow != null) { _objChar.NpcEdgeGlow.UpdateRimPow_NPC(); Obj_NPC objNPC = _objChar as Obj_NPC; if (objNPC.NpcType == GameDefine_Globe.NPC_TYPE.BOSS) { if (objNPC.NpcEdgeGlow != null) { // objNPC.NpcEdgeGlow.UpdateOutLine(); objNPC.NpcEdgeGlow.UpdateRimPower(); } } } //打击音效放在这里,暂时声音可能会有多份,并没有间隔 if (packet.HasAddanimstate && packet.Addanimstate > 0) { _objChar.PlaySoundAtPos(_objChar.ObjType, packet.Addanimstate, _objChar.Position); } } _objChar.ShowDamageBoard((Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE)(nType), nValue); } //连击点的模拟显示 if (packet.Type == (int)Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.TARGET_HPDOWN_PLAYER || packet.Type == (int)Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.PLAYER_ATTACK_CRITICAL) { Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer; if (_mainPlayer) { bool bIsCritical = (packet.Type == (int)Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.PLAYER_ATTACK_CRITICAL ? true : false); int incHitPoint = 1; _mainPlayer.ChangeHit(incHitPoint, bIsCritical); } } //伤害带来的附加音效 Demo没有这些职业,先去掉 /*if (packet.HasAddanimstate) * { * if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYSHAOLIN) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 4, _objChar.Position); //attack1_gun * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYTIANSHAN) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 2, _objChar.Position); //attack1_dao * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYDALI) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 0, _objChar.Position); //attack_jian * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYXIAOYAO) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 3, _objChar.Position); //attack1_fu * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYGAIBANG) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 167, _objChar.Position); //attack2_gun * } * } */ return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
/// <summary> /// 切换目标 /// </summary> /// <param name="targetObj">目标obj</param> public void ChangeTarget(Obj_Character targetObj) { if (!m_bFold) { ShowTargetFrame(); } if (targetObj == null || targetObj.BaseAttr == null) { LogModule.ErrorLog("ChangeTarget called but targetObj targetObj == null || targetObj.BaseAttr == null"); return; } SwitchHpInfo(targetObj); m_hasTarget = true; bool isSameTarget = false; if (null == targetObj) { return; } if (m_TargetServerID == targetObj.ServerID) { isSameTarget = true; } else { m_TargetLevelText.text = "Lv 0"; ClearHpShow(); m_TargetMPSprite.fillAmount = 0; m_TargetMPBakSprite.fillAmount = 0; m_nLastMp = 0; } m_TargetServerID = targetObj.ServerID; if (targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER || targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER || targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER) { Obj_OtherPlayer otherPlayer = targetObj as Obj_OtherPlayer; if (null != otherPlayer) { m_TargetGuid = otherPlayer.GUID; if (!string.IsNullOrEmpty(otherPlayer.BaseAttr.RoleName)) { char firstChar = otherPlayer.BaseAttr.RoleName[0]; string szNameResult = ""; if (firstChar == '#' && 0 == StrDictionary.GetServerDictionaryFormatString(otherPlayer.BaseAttr.RoleName, ref szNameResult)) { otherPlayer.BaseAttr.RoleName = szNameResult; } } m_strTargetName = otherPlayer.BaseAttr.RoleName; } } else { m_TargetGuid = GlobeVar.INVALID_GUID; m_strTargetName = ""; } if (GameManager.gameManager.RunningScene == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_FB_CABALINTRO) { if (targetObj.BaseAttr.RoleBaseID == 1080) { m_TargetLevelText.text = string.Format("Lv {0}", 100); } else if (targetObj.BaseAttr.RoleBaseID == 1079) { m_TargetLevelText.text = string.Format("Lv {0}", 90); } else { // 玩家 m_TargetLevelText.text = string.Format("Lv {0}", 100); } } else { m_TargetLevelText.text = string.Format("Lv {0}", targetObj.BaseAttr.Level); } SetTargetName(targetObj); bool isWorldBoss = (targetObj.BaseAttr.RoleBaseID == 847); if (isWorldBoss == true || IsGuildBossNpc(targetObj) == true) { //m_TargetHPText.text = "???" + "/" + "???"; float perCent = (float)targetObj.BaseAttr.HP / (float)targetObj.BaseAttr.MaxHP * 100; if (m_HpInfo.m_TargetHPText != null) { m_HpInfo.m_TargetHPText.text = perCent.ToString("0.000") + "%"; } } else { if (m_HpInfo.m_TargetHPText != null) { m_HpInfo.m_TargetHPText.text = Utils.ConvertLargeNumToString(targetObj.BaseAttr.HP) + "/" + Utils.ConvertLargeNumToString(targetObj.BaseAttr.MaxHP); } } int hpCount = 1; if (targetObj.BaseAttr.CachedRoleBase != null) { hpCount = targetObj.BaseAttr.CachedRoleBase.HpCount; } Obj_NPC npcObj = targetObj as Obj_NPC; m_isNpc = false; if (null != npcObj) { if (npcObj.NpcType == GameDefine_Globe.NPC_TYPE.BOSS) { m_isNpc = true; UpdateBossHpShow(targetObj.BaseAttr.HP, targetObj.BaseAttr.MaxHP, hpCount); } } UpdateHpShow(targetObj.BaseAttr.HP, targetObj.BaseAttr.MaxHP, hpCount); // 蓝条范围 0.345~1 //玩家才显示蓝条 if (targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER || targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER || targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER) { Obj_OtherPlayer _Player = targetObj as Obj_OtherPlayer; if (_Player) { m_isNeedShowMp = true; m_TargetMPSprite.gameObject.SetActive(true); m_TargetMPText.gameObject.SetActive(true); // m_TargetMPSprite.spriteName = "MagicBar"; // m_TargetMPSprite.MakePixelPerfect(); // m_TargetMPBakSprite.spriteName = "MagicBar1"; // m_TargetMPBakSprite.MakePixelPerfect(); if (targetObj.BaseAttr.MaxMP > 0) { m_TargetMPSprite.fillAmount = (float)targetObj.BaseAttr.MP / (float)targetObj.BaseAttr.MaxMP; } else { m_TargetMPSprite.fillAmount = 0; } m_TargetMPText.text = Utils.ConvertLargeNumToString(targetObj.BaseAttr.MP) + "/" + Utils.ConvertLargeNumToString(targetObj.BaseAttr.MaxMP); if (m_TargetMPSprite.fillAmount <= 0) { m_TargetMPSprite.fillAmount = 0; m_TargetMPBakSprite.fillAmount = 0; m_fMPBakSpeed = 0.003f; } else if (m_TargetMPBakSprite.fillAmount - m_TargetMPSprite.fillAmount > 0) { m_fMPBakSpeed = (m_TargetMPBakSprite.fillAmount - m_TargetMPSprite.fillAmount) * Time.deltaTime; } else if (m_TargetMPBakSprite.fillAmount - m_TargetMPSprite.fillAmount < 0) { m_TargetMPBakSprite.fillAmount = m_TargetMPSprite.fillAmount; } if (isSameTarget && m_nLastMp <= targetObj.BaseAttr.MP) { m_TargetMPBakSprite.fillAmount = m_TargetMPSprite.fillAmount; } } } else { m_isNeedShowMp = false; m_TargetMPSprite.gameObject.SetActive(false); m_TargetMPText.gameObject.SetActive(false); m_TargetMPBakSprite.gameObject.SetActive(false); } //if (m_TargetHeadSprite != null) //{ // m_TargetHeadSprite.spriteName = targetObj.BaseAttr.HeadPic; // m_TargetHeadSprite.MakePixelPerfect(); //} //else //{ //LogModule.WarningLog("TargetFrameRoot prefab m_TargetHeadSprite is null"); //} m_nLastMp = targetObj.BaseAttr.MP; //if (targetObj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) //{ // Obj_NPC targetNPC = targetObj as Obj_NPC; // if (null == targetNPC) // { // return; // } // if (targetNPC.BelongObjID != GlobeVar.INVALID_ID && targetNPC.BelongTeamID == GlobeVar.INVALID_ID) // { // if (Singleton<ObjManager>.Instance.MainPlayer != null && // Singleton<ObjManager>.Instance.MainPlayer.ServerID == targetNPC.BelongObjID) // { // m_BelongSprite.SetActive(true); // } // else // { // m_BelongSprite.SetActive(false); // } // } // else if (targetNPC.BelongObjID == GlobeVar.INVALID_ID && targetNPC.BelongTeamID != GlobeVar.INVALID_ID) // { // if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID == targetNPC.BelongTeamID) // { // m_BelongSprite.SetActive(true); // } // else // { // m_BelongSprite.SetActive(false); // } // } //} }
void UpdateMissionBoard() { m_MissionBoadTime += Time.deltaTime; if (m_MissionBoadTime < 1) // 一秒刷新一次 { return; } m_MissionBoadTime = 0; // 无NPC if (m_MissionNpc == null) { if (null != gameObject.transform.parent) { BillBoard billBaoard = gameObject.transform.parent.gameObject.GetComponent <BillBoard>(); if (billBaoard) { if (billBaoard.BindObj != null) { m_MissionNpc = billBaoard.BindObj.GetComponent <Obj_NPC>(); } } } if (m_MissionNpc == null) { return; } } // 显示顺序是已完成,可接,可交, MissionBoardState boardState = GameManager.gameManager.MissionManager.GetMissionBoardState(m_MissionNpc); bool bAccept = GameManager.gameManager.MissionManager.IsHaveMissionAccepted(m_MissionNpc); if (boardState == MissionBoardState.MISSION_COMPLETED) { this.gameObject.GetComponent <UISprite>().spriteName = m_MissionCompletedSprit; gameObject.SetActive(true); } else if (bAccept) { this.gameObject.GetComponent <UISprite>().spriteName = m_MissionCanAcceptedSprit; gameObject.SetActive(true); } else if (boardState == MissionBoardState.MISSION_CANCOMPLETED) { this.gameObject.GetComponent <UISprite>().spriteName = m_MissionCanCompletedSprit; gameObject.SetActive(true); } else { this.gameObject.GetComponent <UISprite>().spriteName = ""; //gameObject.SetActive(false); } // 已有接受的任务 // bool bRet = false; // switch (boardState) // { // case MissionBoardState.MISSION_ACCEPTED: // { // //this.gameObject.GetComponent<UISprite>().spriteName = m_MissionAcceptedSprit; // //bRet = true; // } // break; // case MissionBoardState.MISSION_CANCOMPLETED: // { // this.gameObject.GetComponent<UISprite>().spriteName = m_MissionCanCompletedSprit; // bRet = true; // } // break; // case MissionBoardState.MISSION_COMPLETED: // { // this.gameObject.GetComponent<UISprite>().spriteName = m_MissionCompletedSprit; // bRet = true; // } // break; // default: // break; // } // if (bRet == true) // { // gameObject.SetActive(true); // return; // } // // // 有任务可接 // if (GameManager.gameManager.MissionManager.IsHaveMissionAccepted(m_MissionNpc)) // { // this.gameObject.GetComponent<UISprite>().spriteName = m_MissionCanAcceptedSprit; // gameObject.SetActive(true); // return; // } // // // 没有就清空 // this.gameObject.GetComponent<UISprite>().spriteName = ""; }
public void Show(int nDialogID) { m_CareNPC = null; m_nDialogID = nDialogID; }
/// <summary> /// 显示对话框 /// </summary> /// <param name='bMission'> /// 是否是任务 /// </param> /// <param name='nDialogId'> /// 任务ID/对白ID /// </param> public static void ShowMissionDialogUI(int nMissionID) { Tab_MissionBase table = TableManager.GetMissionBaseByID(nMissionID, 0); if (table != null) { // NPC 距离判断 Obj_NPC TargetNpc = Singleton <DialogCore> .GetInstance().CareNPC; if (TargetNpc == null) { // LogModule.ErrorLog("Can not find DialogCore's CareNPC"); return; } if (!TargetNpc.IsHaveMission(nMissionID)) { LogModule.ErrorLog("NPC {0} do not have mission {1}", TargetNpc.name, nMissionID); return; } // 是否已接取 bool isHaveMission = GameManager.gameManager.MissionManager.IsHaveMission(nMissionID); MissionState misState = (MissionState)GameManager.gameManager.MissionManager.GetMissionState(nMissionID); if (isHaveMission && misState != MissionState.Mission_Failed) { if (MissionState.Mission_Completed == misState) { if (table.CompleteDataID == TargetNpc.BaseAttr.RoleBaseID) { ShowMissionDialogUI(nMissionID, MissionInfoController.MissionUIType.TYPE_COMPLETE); } else { // cunyi LogModule.ErrorLog("Mission {0} completeDataID {1} dos not match with targetNPC's roleBaseID {2}", nMissionID, table.CompleteDataID, TargetNpc.BaseAttr.RoleBaseID); } } else { // cunyi LogModule.ErrorLog("Mission {0} 's state {1} is not complete", nMissionID, misState); } } else { bool isCanAcceptMission = GameManager.gameManager.MissionManager.CanAcceptMission(nMissionID); if (isCanAcceptMission) { if (table.AcceptDataID == TargetNpc.BaseAttr.RoleBaseID) { ShowMissionDialogUI(nMissionID, MissionInfoController.MissionUIType.TYPE_ACCETP); } else { // cunyi LogModule.ErrorLog("Mission {0} acceptDataID {1} dos not match with targetNPC's roleBaseID {2}", nMissionID, table.AcceptDataID, TargetNpc.BaseAttr.RoleBaseID); } } else { // cunyi LogModule.ErrorLog("Can not accept mission {0}", nMissionID); } } } else { LogModule.ErrorLog("Can not find missionID {0} in Tab_MissionBase", nMissionID); } }
public uint Execute(PacketDistributed ipacket) { GC_SYNSELTRAGET_ATTR packet = (GC_SYNSELTRAGET_ATTR )ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //enter your logic Obj_MainPlayer MainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer; if (MainPlayer == null) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } if (MainPlayer.SelectTarget == null) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //血量 if (packet.HasCurHp) { MainPlayer.SelectTarget.BaseAttr.HP = packet.CurHp; } if (packet.HasMaxHP) { MainPlayer.SelectTarget.BaseAttr.MaxHP = packet.MaxHP; } //只显示玩家的蓝 if (MainPlayer.SelectTarget.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER || MainPlayer.SelectTarget.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER || MainPlayer.SelectTarget.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER) { //法力 if (packet.HasCurMp) { MainPlayer.SelectTarget.BaseAttr.MP = packet.CurMp; } if (packet.HasMaxMP) { MainPlayer.SelectTarget.BaseAttr.MaxMP = packet.MaxMP; } } //等级 if (packet.HasCurLev) { MainPlayer.SelectTarget.BaseAttr.Level = packet.CurLev; } //名字 if (packet.HasName) { MainPlayer.SelectTarget.BaseAttr.RoleName = packet.Name; } // 当前归属 if (MainPlayer.SelectTarget.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { Obj_NPC targetNPC = MainPlayer.SelectTarget as Obj_NPC; if (packet.HasBelongTeamID) { targetNPC.BelongTeamID = packet.BelongTeamID; } if (packet.HasBelongObjID) { targetNPC.BelongObjID = packet.BelongObjID; } } //更新头像信息 if (TargetFrameLogic.Instance() != null) { TargetFrameLogic.Instance().ChangeTarget(MainPlayer.SelectTarget); TargetFrameLogic.Instance().ShowTargetDebuffLogo(packet.DeBuffIDList); } return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
private static void showNPCDialog(Obj_NPC npc) { Singleton <DialogCore> .GetInstance().Show(npc); }
private static void LoadModelComplete(LoadedObjData data, LoadCompleteCallBackParameter parameter) { GameObject resObj = data.LoadedObj as GameObject; object param1 = parameter.Parameter1; object param2 = parameter.Parameter2; object param3 = parameter.Parameter3; if (null == param1 || null == param2) { return; } GameObject rootObj = param1 as GameObject; if (null == rootObj) { return; } Tab_CharModel charModelTab = param2 as Tab_CharModel; Obj baseObj = rootObj.GetComponent <Obj>(); if (baseObj == null) { return; } GameObject charModel = Object.Instantiate(resObj) as GameObject; if (null == charModel || charModelTab == null) { return; } else { charModel.name = "Model"; } if (false == ReloadModel(rootObj, charModel)) { return; } if (rootObj.GetComponent <Obj_NPC>()) { if (rootObj.GetComponent <Obj_NPC>().isVisible) { rootObj.GetComponent <Obj_NPC>().BecameVisible(); } } string lastUrl = baseObj.MainModelUrl; baseObj.SetMainModelUrl(data.Url); ResourcesManager.Instance.AddCachedRef(data.Url, EResourceType.CharacterModel, baseObj.ObjType); baseObj.InitEffect(); //特异化处理 switch (baseObj.ObjType) { case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_CLIENT: { Obj_Client curCharacter = baseObj as Obj_Client; if (curCharacter == null) { LogModule.ErrorLog("charObj {0} loaded error!", rootObj.name); break; } curCharacter.BaseAttr.RoleName = charModelTab.Name; curCharacter.AnimationFilePath = charModelTab.AnimPath; curCharacter.OnModelInitOk(); DelAsycModelOver delOverFunction = param3 as DelAsycModelOver; if (null != delOverFunction) { delOverFunction(curCharacter, null); } break; } case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC: { //由于InitAnimation中用到了Model,所以放在模型加载结束后初始化 Obj_NPC objNPC = baseObj as Obj_NPC; if (objNPC == null) { LogModule.ErrorLog("charObj {0} loaded error!", rootObj.name); break; } if (MobileHardwareInfo.Instance.HardwareLevel == Games.GlobeDefine.GameDefine_Globe.HardwardLevel.LEVEL_HIGH) { UpdateEdgeGlow edgeGlow = charModel.GetComponent <UpdateEdgeGlow>(); if (edgeGlow == null) { edgeGlow = charModel.AddComponent <UpdateEdgeGlow>(); } objNPC.NpcEdgeGlow = edgeGlow; if (objNPC.NpcType == GameDefine_Globe.NPC_TYPE.BOSS) { if (objNPC.NpcEdgeGlow != null) { // objNPC.NpcEdgeGlow.SetBossOutLineWidth(GlobeVar.BOSS_OUTLINE_WIDTH); //add 用Cabal/Light Probes Rim Alpha Test 代替原来的Cabal/EdgeGlow shader. } } } if (MobileHardwareInfo.Instance.HardwareLevel == Games.GlobeDefine.GameDefine_Globe.HardwardLevel.LEVEL_LOW) { Transform trans = objNPC.transform.FindChild("shadow"); if (trans != null) { trans.gameObject.SetActive(false); } } objNPC.OnModelInitOk(); break; } case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER: { Obj_OtherPlayer objOtherPlayer = baseObj as Obj_OtherPlayer; if (null == objOtherPlayer) { return; } bool value = (bool)param3; if (null != objOtherPlayer) { if (!value) { objOtherPlayer.NormalGameObject = charModel; } else { objOtherPlayer.ChangeGameObject = charModel; Utils.SetActive(objOtherPlayer.ChangeGameObject, true); objOtherPlayer.m_lastMainObjUrl = lastUrl; } } objOtherPlayer.RealoadPlayerWeaponVisual(); objOtherPlayer.RealoadPlayerFlyWingModel(); //由于InitAnimation中用到了Model,所以放在模型加载结束后初始化 objOtherPlayer.UpdateCombatValue(); objOtherPlayer.OnModelInitOk(); objOtherPlayer.UpdateBelleShow(); //objOtherPlayer.RideOrUnMount(objOtherPlayer.MountID); break; } case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER: { Obj_ZombieUser zombieUser = baseObj as Obj_ZombieUser; if (null == zombieUser) { return; } zombieUser.RealoadPlayerWeaponVisual(); zombieUser.OnModelInitOk(); break; } case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_FELLOW: { //由于InitAnimation中用到了Model,所以放在模型加载结束后初始化 Obj_Fellow objFellow = baseObj as Obj_Fellow; if (null != objFellow) { objFellow.SetVisible(objFellow.IsVisibleChar()); } break; } case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER: { Obj_MainPlayer main = baseObj as Obj_MainPlayer; bool value = (bool)param3; if (null != main) { if (!value) { main.NormalGameObject = charModel; } else { main.ChangeGameObject = charModel; Utils.SetActive(main.ChangeGameObject, false); main.m_lastMainObjUrl = lastUrl; } ObjManager.AddOutLineMaterial(charModel); main.RealoadPlayerWeaponVisual(); main.UpdateCombatValue(); main.OnModelInitOk(); main.UpdateBelleShow(); //main.RideOrUnMount(main.MountID); } Singleton <ObjManager> .Instance.m_bBeginAsycCreateMainPlayer = false; SetPlayerShader(charModel); CameraManager.Instance.ResetCameraCullingMash(); if (!value) { GameManager.gameManager.FlyWingMananger.ReLoadFlyWing(); } main.IsNoMove = false; break; } case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_YANHUA: case Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_SNARE: { //并没有特殊处理 break; } } }