// 重载模型回调 public override void OnReloadModle() { base.OnReloadModle(); if (m_bIsBornCreate) { Tab_RoleBaseAttr _roleBaseAttr = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (_roleBaseAttr != null) { //反溶解特效 if (_roleBaseAttr.RampType == 1 || _roleBaseAttr.RampType == 3) { PlayUnDissolve(0.5f, 0.0f); } //死亡特效 if (_roleBaseAttr.BornEffctID != -1) { PlayEffect(_roleBaseAttr.BornEffctID); } } m_bIsBornCreate = false; } //雁门关的BOSS 刷新身上加上一个特效 if (BaseAttr.RoleBaseID == 58) { PlayEffect(170); } ResetEdge(); }
// 立即前往 void ButtonGo() { Tab_MissionDictionary DicTab = TableManager.GetMissionDictionaryByID(GlobeVar.PAOSHANG_MISSIONID_H, 0); if (DicTab == null) { LogModule.ErrorLog("Can not find missionDictionary {0}", GlobeVar.PAOSHANG_MISSIONID_H); return; } // 自动寻路 AutoSearchPoint point = new AutoSearchPoint(DicTab.AccepteNpcSceneID, DicTab.AccepteNpcPosX, DicTab.AccepteNpcPosZ); if (GameManager.gameManager && GameManager.gameManager.AutoSearch) { string sAutoSearchTargetName = string.Empty; Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(DicTab.AcceptNpcDataID, 0); if (null != RoleBase) { sAutoSearchTargetName = RoleBase.Name; } else { LogModule.ErrorLog("Can not find roleBaseAttr {0}", DicTab.AcceptNpcDataID); } GameManager.gameManager.AutoSearch.ProcessAutoSearch(point, sAutoSearchTargetName, false); } }
public override void Start() { base.Start(); if (m_nTargetID == 0) { CameraManager.Instance.LookPos(m_TargetPos, CameraMoveOver, m_fDuration); } if (m_nTargetID < 0) { if (null != Singleton <ObjManager> .GetInstance().MainPlayer) { CameraManager.Instance.LookTarget(Singleton <ObjManager> .GetInstance().MainPlayer, CameraMoveOver, m_fDuration); } else { Finish(); } } if (m_nTargetID > 0) { Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(m_nTargetID, 0); if (null != RoleBase) { Obj_Character targetCharacter = ObjManager.Instance.FindObjCharacterInSceneByName(RoleBase.Name, true, 20); if (null != targetCharacter) { CameraManager.Instance.LookTarget(targetCharacter, CameraMoveOver, m_fDuration); } } } }
public override void Start() { base.Start(); if (m_nTargetID != -1) { // 暂时试试以RoleBaseAttr中的名字来取得Obj Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(m_nTargetID, 0); if (null != RoleBase) { Obj_Character character = ObjManager.Instance.FindObjCharacterInSceneByName(RoleBase.Name, true, 20); if (null != character) { Animation animComp = character.AnimLogic.GetAnimation(); if (null != animComp) { // 有些动作竟然会跳出屏幕,这还怎么玩? animComp.cullingType = AnimationCullingType.AlwaysAnimate; character.AnimLogic.Play(m_nAnimID, AnimFinishCallback); } else { Finish(); } } else { Finish(); } } else { Finish(); } } else { Obj_Character character = Singleton <ObjManager> .GetInstance().MainPlayer; if (null != character) { Animation animComp = character.AnimLogic.GetAnimation(); if (null != animComp) { animComp.cullingType = AnimationCullingType.AlwaysAnimate; character.AnimLogic.Play(m_nAnimID, AnimFinishCallback); m_bIsPlayingMainPlayerAnim = true; } else { Finish(); } } else { Finish(); } } }
void ShowOpponentView() { UIStage = 1; SearchSecond = 0; progress.text = WuLinData.WuLinRounderTip(); if (WuLinData.OppoViewInfo.guid == Games.GlobeDefine.GlobeVar.INVALID_GUID) { string text = ""; if (WuLinData.Rounder == 1) { text = StrDictionary.GetClientDictionaryString("#{4813}"); } else { string roundTips = WuLinData.WuLinRoundTipPrefix(); text = StrDictionary.GetClientDictionaryString("#{4814}", roundTips); } searchTip.text = text; Countdown.text = text; } else { searchTip.text = Utils.GetDicByID(1845); Countdown.text = Utils.GetDicByID(1845); int id = (int)WuLinData.OppoViewInfo.profession; Tab_RoleBaseAttr roleBaseAttr = TableManager.GetRoleBaseAttrByID(id, 0); if (roleBaseAttr != null) { Tab_CharModel charModel = TableManager.GetCharModelByID(roleBaseAttr.CharModelID, 0); if (charModel != null) { HeadIcon.spriteName = charModel.HeadPic; } } // if( id >= 0 && id < CharacterDefine.PROFESSION_DICNUM.Length) { Profession.text = Utils.GetProfessionNameByType(id); //Utils.GetDicByID(CharacterDefine.PROFESSION_DICNUM[id]); } } Name.text = WuLinData.OppoViewInfo.name; CombatNum.text = WuLinData.OppoViewInfo.combat.ToString(); HP.text = WuLinData.OppoViewInfo.hp.ToString(); MP.text = WuLinData.OppoViewInfo.mp.ToString(); Attack.text = WuLinData.OppoViewInfo.atk.ToString(); Defense.text = WuLinData.OppoViewInfo.def.ToString(); Critical.text = WuLinData.OppoViewInfo.cri.ToString(); Speed.text = WuLinData.OppoViewInfo.spd.ToString(); dodge.text = WuLinData.OppoViewInfo.dge.ToString(); }
//获取当前队伍某位置的单位的训练状态 public TroopState GetTroopState(int index) { MarchVo march = playerProxy.marchList [marchIndex]; //临时处理 TroopVo troop = null; if (march.troopList.Count <= index) { if (addTrainList.Count > index - march.troopList.Count) { troop = addTrainList [index - march.troopList.Count]; } } else { troop = march.troopList [index]; } List <Tab_RoleBaseAttr> attrList = TableManager.GetRoleBaseAttrByID(troop.type); Tab_RoleBaseAttr roleAttr = attrList [troop.level - 1]; int totalHP = roleAttr.MaxHP * 18; if (troop.health < totalHP) { for (int i = 0; i < playerProxy.city.trainList.Count; i++) { if (playerProxy.city.trainList[i].queueIndex == troop.queueIndex) { if (playerProxy.city.trainList[i].troopType <= 0) { break; } //类型为0说明没有训练了 时间到了等于训练结束了 System.DateTime dt1 = System.Convert.ToDateTime("1970-1-1 00:00:00"); long now = System.DateTime.Now.ToFileTimeUtc() - dt1.ToFileTimeUtc(); float a = now / 10000000; int aa = Mathf.FloorToInt(a); //等于0也算是空闲 if (playerProxy.city.trainList[i].troopType >= 0) { if (playerProxy.city.trainList[i].endTime <= aa) { return(TroopState.Training); //训练中 } } } } return(TroopState.NeedTrain); } return(TroopState.TrainFull); }
/// <summary> /// 后期可以 看情况 跟OtherPlayer的创建 合并 /// </summary> /// <param name="initData"></param> public static void CreateZombieUser(Obj_Init_Data initData) { if (null == initData) { return; } //mwh 根据RoleBase的ID获得路径 Tab_RoleBaseAttr roleBaseAttr = TableManager.GetRoleBaseAttrByID(initData.m_RoleBaseID, 0); if (null == roleBaseAttr) { return; } initData.m_CharModelID = roleBaseAttr.CharModelID; GameObject otherPlayer = ResourceManager.InstantiateResource("Prefab/Model/OtherPlayerRoot", initData.m_ServerID.ToString()) as GameObject; if (null != otherPlayer) { Obj_ZombieUser objZombiePlayer = otherPlayer.AddComponent <Obj_ZombieUser>(); if (null != objZombiePlayer && objZombiePlayer.Init(initData)) { objZombiePlayer.CanLogic = true; } Tab_ItemVisual tabItemVisual = TableManager.GetItemVisualByID(objZombiePlayer.ModelVisualID, 0); if (tabItemVisual == null) { tabItemVisual = TableManager.GetItemVisualByID(GlobeVar.DEFAULT_VISUAL_ID, 0); if (tabItemVisual == null) { return; } } int nCharmodelID = objZombiePlayer.GetCharModelID(tabItemVisual, objZombiePlayer.Profession); Tab_CharModel charModel = TableManager.GetCharModelByID(nCharmodelID, 0); if (charModel == null) { return; } Singleton <ObjManager> .Instance.AddPoolObj(objZombiePlayer.ServerID.ToString(), objZombiePlayer); LoadModelToRoot(nCharmodelID, EResourceType.CharacterModel, LoadModelComplete, otherPlayer, charModel, null); } }
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}"); } } } }
public override bool OnDie() { if (IsDie()) { return(false); } base.OnDie(); if (m_NameBoard) { m_NameBoard.color = CharacterDefine.NPC_COLOR_DIE; } #if UNITY_ANDROID if (NavAgent != null) { NavAgent.enabled = false; } #endif //死亡特效 Tab_RoleBaseAttr _roleBaseAttr = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (_roleBaseAttr != null) { //溶解特效 if (_roleBaseAttr.RampType == 2 || _roleBaseAttr.RampType == 3) { float fSpeed = 1.0f / (_roleBaseAttr.CorpseTime / 1000.0f - 0.5f); PlayDissolve(fSpeed, 0.5f); } //死亡特效 if (_roleBaseAttr.DieEffectID != -1) { PlayEffect(_roleBaseAttr.DieEffectID); } } StartCoroutine("DelaySceond"); return(true); }
/// <summary> /// NPC复活后,重新值下溶解相关值 /// </summary> public void PlayUnDissolve() { if (BaseAttr == null) { return; } m_bIsPlayDissolve = false; m_bIsPlayUnDissolve = false; Tab_RoleBaseAttr _roleBaseAttr = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (_roleBaseAttr != null) { //溶解特效 if (_roleBaseAttr.RampType == 2 || _roleBaseAttr.RampType == 3) { ShowDissolveNPC(); } _roleBaseAttr = null; } }
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 void SetSquadInfor(CObjInfor tObjInfor) { mID = tObjInfor.id; mSquadCamp = (SquadCamp)tObjInfor.camp; mUnitCount = tObjInfor.unitcount; mHP = tObjInfor.hp; mHPMax = tObjInfor.maxhp; mSquadAttack = tObjInfor.attack; mSquadDefence = tObjInfor.defence; mSp = tObjInfor.sp; mlevel = tObjInfor.level; mBornPosionX = tObjInfor.posx; mBornPosionZ = tObjInfor.posz; mSquadTemplateID = tObjInfor.unitDataId; mBornPosionIndex = tObjInfor.arrangeindex; Tab_RoleBaseAttr tRoleBaseAttr = TableManager.GetRoleBaseAttrByID(tObjInfor.unitDataId)[0]; mUnitTemplateID = tRoleBaseAttr.UnitDataID; mSkillIDList = tObjInfor.skilldataid; Tab_SkillEx tSkillEx = TableManager.GetSkillExByID(mSkillIDList[0])[0]; SkillTemplateID = tSkillEx.SkillDataID; }
//行走状态处理 void ProcessDeathAnimState() { if (AnimLogic != null && m_Objanimation != null) { //是否在播放动作 if (m_Objanimation.isPlaying && AnimLogic.CurAnimData != null) { //击飞是不播死亡动画 if (AnimLogic.CurAnimData.AnimID != (int)CharacterDefine.CharacterAnimId.Knockback_01 && AnimLogic.CurAnimData.AnimID != (int)CharacterDefine.CharacterAnimId.Knockback_02) { m_AnimLogic.Stop(); m_AnimLogic.Play((int)(CharacterDefine.CharacterAnimId.Die)); } } else { m_AnimLogic.Stop(); m_AnimLogic.Play((int)(CharacterDefine.CharacterAnimId.Die)); } } Tab_RoleBaseAttr roleBaseAttr = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (roleBaseAttr != null) { Tab_CharModel charModel = TableManager.GetCharModelByID(roleBaseAttr.CharModelID, 0); if (charModel != null) { int nDeadSoundCount = charModel.getDeadSoundCount(); int nRandNum = Random.Range(0, nDeadSoundCount - 1); if (charModel.GetDeadSoundbyIndex(nRandNum) >= 0) { PlaySoundAtPos(ObjType, charModel.GetDeadSoundbyIndex(nRandNum), Position); } } } }
public void AddDialogMission() { Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (RoleBase == null) { return; } Tab_NpcDialog DialogLine = TableManager.GetNpcDialogByID(RoleBase.DialogID, 0); if (DialogLine != null) { m_nDefaultDialogID = RoleBase.DialogID; for (int i = 0; i < DialogLine.getMissionIDCount(); ++i) { int nMissionID = DialogLine.GetMissionIDbyIndex(i); if (nMissionID >= 0) { m_listMissionID.Add(nMissionID); } } } }
//待机状态处理 void ProcessIdleAnimState(bool playEffectImmediately = true) { if (ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_MAIN_PLAYER) { // 玩家装备了坐骑 Obj_MainPlayer MainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer; if (MainPlayer.IsDie() == false && MainPlayer.GetEquipMountID() > 0 && MainPlayer.MountObj) { m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.Stand); MainPlayer.MountObj.PlayMountPlayerAnima(CharacterDefine.MountAction.STAND, MainPlayer); } else { if (MainPlayer.InDizzy) { m_AnimLogic.Stop(); m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.DizzyId); return; } if (MainPlayer.InCombat) { m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.AttackStand); } else { m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.Stand); } } } else { if (ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER) { Obj_OtherPlayer OtherPlayer = this as Obj_OtherPlayer; if (OtherPlayer && OtherPlayer.IsDie() == false && OtherPlayer.MountID > 0 && OtherPlayer.MountObj) { m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.Stand); OtherPlayer.MountObj.PlayMountPlayerAnima(CharacterDefine.MountAction.STAND, OtherPlayer); } else { if (OtherPlayer.InDizzy) { m_AnimLogic.Stop(); m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.DizzyId); return; } m_AnimLogic.Play((int)(CharacterDefine.CharacterAnimId.Stand)); } } else { if (this.InDizzy) { m_AnimLogic.Stop(); m_AnimLogic.Play((int)CharacterDefine.CharacterAnimId.DizzyId); return; } //如果是其他Obj,就需要根据DataID区分是否为战斗型的NPC //非战斗NPC默认播放Stand动作 //战斗NPC播放AttackStand动作 Tab_RoleBaseAttr roleBaseTab = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (null != roleBaseTab && roleBaseTab.CombatNPC > 0) { //是战斗NPC,播放AttackStand if (playEffectImmediately) { m_AnimLogic.Play((int)(CharacterDefine.CharacterAnimId.AttackStand)); } } else { m_AnimLogic.Play((int)(CharacterDefine.CharacterAnimId.Stand)); } } } if (ObjEffectController != null) { ObjEffectController.OnIdle(); } }
public uint Execute(PacketDistributed ipacket) { GC_CREATE_PLAYER packet = (GC_CREATE_PLAYER)ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //enter your logic //判断是MainPlayer还是其他Obj PlayerData playerDataPool = GameManager.gameManager.PlayerDataPool; if (playerDataPool.EnterSceneCache.EnterSceneServerID == packet.ServerId && playerDataPool.EnterSceneCache.EnterSceneSceneID == packet.SceneClass) { playerDataPool.MainPlayerBaseAttr.RoleBaseID = packet.DataId; playerDataPool.MainPlayerBaseAttr.RoleName = packet.Name; playerDataPool.MainPlayerBaseAttr.Force = packet.Curforce; playerDataPool.MainPlayerBaseAttr.Die = packet.IsDie == 1 ? true : false; //未存入BaseAttr而保存在Obj类中的时候,需要存入EnterSceneCache,然后在创建完Obj_MainPlayer的时候赋值,之后清空EnterSceneCache playerDataPool.EnterSceneCache.EnterSceneRoleBaseID = packet.DataId; playerDataPool.EnterSceneCache.Guid = packet.Guid; playerDataPool.EnterSceneCache.Profession = packet.CurProfession; playerDataPool.PkModle = packet.PKModle; playerDataPool.m_objMountParam.MountID = packet.MountID; playerDataPool.MainPlayerBaseAttr.MoveSpeed = (int)(packet.MoveSpeed / 100); playerDataPool.StealthLev = packet.StealthLev; if (packet.HasReliveTime) { playerDataPool.ReliveEntryTime = packet.ReliveTime; } //临时代码,将OtherPlayer的ModelID赋值,从RoleBase表中读取 Tab_RoleBaseAttr roleBaseAttr = TableManager.GetRoleBaseAttrByID(packet.DataId, 0); if (null != roleBaseAttr) { playerDataPool.EnterSceneCache.EnterSceneCharModelID = roleBaseAttr.CharModelID; } playerDataPool.EnterSceneCache.ModelVisualID = packet.ModelVisualID; playerDataPool.EnterSceneCache.WeaponDataID = packet.WeaponDataID; playerDataPool.EnterSceneCache.WeaponEffectGem = packet.WeaponEffectGem; if (packet.HasPaoshangState) { playerDataPool.EnterSceneCache.PaoShangState = packet.PaoshangState; } if (packet.HasVipCost) { playerDataPool.VipCost = packet.VipCost; } if (packet.HasCombatValue) { playerDataPool.PoolCombatValue = packet.CombatValue; } if (packet.HasBindparent) { playerDataPool.MainBindParent = packet.Bindparent; } if (packet.HasLightSkillLevel) { playerDataPool.MainPlayerBaseAttr.LightSkillLevel = packet.LightSkillLevel; } playerDataPool.MainBindChildren.Clear(); for (int nindex = 0; nindex < GlobeVar.BIND_CHILDREN_MAX; ++nindex) { if (nindex < packet.bindchildrenCount) { playerDataPool.MainBindChildren.Add(packet.GetBindchildren(nindex)); } else { playerDataPool.MainBindChildren.Add(-1); } } if (GameManager.gameManager.RunningScene == GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterSceneSceneID && GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterSceneServerID != -1 && GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterSceneRoleBaseID != -1) { //创建MainPlayer if ((int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_LOGIN != GameManager.gameManager.RunningScene && (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_FB_CABALINTRO != GameManager.gameManager.RunningScene) { Singleton <ObjManager> .GetInstance().CreateMainPlayer(); } } } else { //如果不是主角则是其他玩家 //其他玩家创建的时候首先判断场景ID if (GameManager.gameManager.RunningScene != packet.SceneClass) { return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); } Obj_Init_Data initData = new Obj_Init_Data(); initData.m_ServerID = packet.ServerId; initData.m_Guid = packet.Guid; initData.m_fX = ((float)packet.PosX) / 100; initData.m_fZ = ((float)packet.PosZ) / 100; initData.m_RoleBaseID = packet.DataId; //LogModule.DebugLog("Player GUID===================" + initData.m_Guid); //临时代码,将OtherPlayer的ModelID赋值,从RoleBase表中读取 Tab_RoleBaseAttr roleBaseAttr = TableManager.GetRoleBaseAttrByID(initData.m_RoleBaseID, 0); if (null != roleBaseAttr) { initData.m_CharModelID = roleBaseAttr.CharModelID; } initData.m_Force = packet.Curforce; initData.m_StrName = packet.Name; initData.m_nProfession = packet.CurProfession; initData.m_strTitleName = packet.Titlename; initData.m_CurTitleID = packet.CurTitleID; initData.m_isInMainPlayerPKList = (packet.IsInPkList == 1 ? true : false); initData.m_IsDie = packet.IsDie == 1 ? true : false; initData.m_MountID = packet.MountID; initData.m_PkModel = packet.PKModle; initData.m_MoveSpeed = ((float)packet.MoveSpeed) / 100; initData.m_fDir = (float)packet.Facedir / 100; initData.m_ModelVisualID = packet.ModelVisualID; initData.m_WeaponDataID = packet.WeaponDataID; initData.m_WeaponEffectGem = packet.WeaponEffectGem; initData.m_StealthLev = packet.StealthLev; initData.m_GuildGuid = packet.GuildGuid; initData.m_bIsWildEnemyForMainPlayer = (packet.IsEnemy2Self == 1); if (packet.HasVipCost) { initData.m_nOtherVipCost = packet.VipCost; } if (packet.HasCombatValue) { initData.m_nOtherCombatValue = packet.CombatValue; } if (packet.HasBindparent) { initData.m_BindParent = packet.Bindparent; } initData.m_BindChildren.Clear(); for (int nindex = 0; nindex < GlobeVar.BIND_CHILDREN_MAX; ++nindex) { if (nindex < packet.bindchildrenCount) { initData.m_BindChildren.Add(packet.GetBindchildren(nindex)); } else { initData.m_BindChildren.Add(-1); } } if (packet.HasPaoshangState) { initData.m_nPaoShangState = packet.PaoshangState; } if (packet.HasFollowState) { initData.m_bIsInTeamFollow = (packet.FollowState == 1 ? true : false); } //稍后添加消息包 initData.m_changeState = packet.ChangeState; initData.m_FlyWingId = packet.FlyWingId; Singleton <ObjManager> .GetInstance().NewCharacterObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER, initData); //魂器 Dictionary <UInt64, Dictionary <int, Belle> > AllOtherPlayerBellDic = BelleData.AllOtherPlayerBelleMap; Dictionary <int, Belle> otherPlayerBelleDic; if (AllOtherPlayerBellDic.TryGetValue(packet.Guid, out otherPlayerBelleDic)) { AllOtherPlayerBellDic.Remove(packet.Guid); } otherPlayerBelleDic = new Dictionary <int, Belle>(); AllOtherPlayerBellDic.Add(packet.Guid, otherPlayerBelleDic); if (packet.BelleIdCount == packet.BelleCloseCount && packet.BelleCloseCount == packet.BelleLevelCount) { for (int i = packet.BelleIdCount - 1; i > -1; --i) { otherPlayerBelleDic.Add(packet.GetBelleId(i), new Belle(packet.GetBelleId(i), packet.GetBelleClose(i), packet.GetBelleLevel(i))); } } } return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
public override void OnBindOpt(Obj_Character obj) { base.OnBindOpt(obj); //婚车特殊摆设 if (BaseAttr.RoleBaseID == GlobeVar.PARADE_BUSID && obj != null) { Transform playermodel = obj.transform.FindChild("Model"); Transform ridepoint = gameObject.transform.FindChild("Model/All/Bip01/Bip01 Pelvis/Bip01 Spine/Ride_Point01"); Transform seatpoint = gameObject.transform.FindChild("Model/All/Bone02/Ride_Point02"); if (playermodel == null || ridepoint == null || seatpoint == null) { return; } if (GetBindChildIndex(obj.ServerID) == 0 && ridepoint.childCount < 1) { obj.gameObject.transform.localPosition = new Vector3(0.0f, 0.78f, -0.47f); GameObject fakeobj = (GameObject)Instantiate(playermodel.gameObject); if (fakeobj != null) { fakeobj.SetActive(true); fakeobj.transform.parent = ridepoint; fakeobj.transform.localPosition = Vector3.zero; fakeobj.transform.localRotation = Quaternion.Euler(90.0f, 0.0f, 0.0f); fakeobj.transform.localScale = Vector3.one; AnimationLogic al = ridepoint.gameObject.AddComponent <AnimationLogic>(); if (al != null) { al.InitState(fakeobj); Tab_RoleBaseAttr role = TableManager.GetRoleBaseAttrByID(obj.BaseAttr.RoleBaseID, 0); if (role != null) { Tab_CharModel mo = TableManager.GetCharModelByID(role.CharModelID, 0); if (mo != null) { al.AnimResFilePath = mo.AnimPath; } } // int animId = -1; //sl/ts/dl/xy //if (obj.BaseAttr.RoleBaseID == 0) // animId = 153; //else if (obj.BaseAttr.RoleBaseID == 1) // animId = 155; //else if (obj.BaseAttr.RoleBaseID == 2) // animId = 159; //else if (obj.BaseAttr.RoleBaseID == 3) // animId = 157; // if (animId > 0) { al.Play(227); } } } return; } if (GetBindChildIndex(obj.ServerID) == 1 && seatpoint.childCount < 1) { obj.gameObject.transform.localPosition = new Vector3(0.0f, 0.47f, -1.83f); GameObject fakeobj = (GameObject)Instantiate(playermodel.gameObject); if (fakeobj != null) { fakeobj.SetActive(true); fakeobj.transform.parent = seatpoint; fakeobj.transform.localPosition = Vector3.zero; fakeobj.transform.localRotation = Quaternion.Euler(90.0f, 0.0f, 0.0f); fakeobj.transform.localScale = Vector3.one; AnimationLogic al = seatpoint.gameObject.AddComponent <AnimationLogic>(); if (al != null) { al.InitState(fakeobj); Tab_RoleBaseAttr role = TableManager.GetRoleBaseAttrByID(obj.BaseAttr.RoleBaseID, 0); if (role != null) { Tab_CharModel mo = TableManager.GetCharModelByID(role.CharModelID, 0); if (mo != null) { al.AnimResFilePath = mo.AnimPath; } } //int animId = -1; ////sl/ts/dl/xy //if (obj.BaseAttr.RoleBaseID == 0) // animId = 146; //else if (obj.BaseAttr.RoleBaseID == 1) // animId = 148; //else if (obj.BaseAttr.RoleBaseID == 2) // animId = 152; //else if (obj.BaseAttr.RoleBaseID == 3) // animId = 150; //if (animId > 0) { al.Play(225); } } } return; } } }
void Start() { m_curSceneID = GameManager.gameManager.RunningScene; //根据加载场景ID获取场景信息 m_curTabScene = TableManager.GetSceneClassByID(m_curSceneID, 0); if (null == m_curTabScene) { LogModule.ErrorLog("current is not defined in table: " + m_curSceneID.ToString()); return; } // 地图名字 m_SceneName.text = m_curTabScene.Name; // 初始化NPC信息 if (m_curNPCListScene != GameManager.gameManager.RunningScene) { m_FriendNPCRecycleList.Clear(); Dictionary <int, List <Tab_SceneNpc> > curTabSceneNPCDic = TableManager.GetSceneNpc(); foreach (KeyValuePair <int, List <Tab_SceneNpc> > curPair in curTabSceneNPCDic) { if (curPair.Value[0] != null && curPair.Value[0].SceneID == GameManager.gameManager.RunningScene) { Tab_RoleBaseAttr curRoleBase = TableManager.GetRoleBaseAttrByID(curPair.Value[0].DataID, 0); if (curRoleBase != null && curRoleBase.Camp == 1) { Tab_NianShouNpcScence nianshounpcTab = TableManager.GetNianShouNpcScenceByID(GameManager.gameManager.RunningScene, 0); if (nianshounpcTab != null) { if (curPair.Value[0].GroupID == VillainData.NianShouGroupID) { if (false == GlobalData.IsNianShouOpen()) { continue; } } } Tab_VillainScene VillainSceneTab = TableManager.GetVillainSceneByID(GameManager.gameManager.RunningScene, 0); if (VillainSceneTab != null) { if (curPair.Value[0].GroupID == VillainData.NormalNpcGroupID || curPair.Value[0].GroupID == VillainData.SuperNpcGroupID) { //规则来来回回改变已经第四版,希望这是今年最终版了 FriendNPCData newVillainData = m_FriendNPCRecycleList.GetNewItem(); newVillainData.m_name = curRoleBase.Name; newVillainData.m_nType = FRIEND_NPC_TYPE.FRIEND_NPC_VILLAIN_GULDE; newVillainData.m_pos = new Vector3(curPair.Value[0].PosX, 0, curPair.Value[0].PosZ); m_FriendNPCRecycleList.Add(newVillainData); continue; } } FriendNPCData newData = m_FriendNPCRecycleList.GetNewItem(); newData.m_name = curRoleBase.Name; newData.m_nType = FRIEND_NPC_TYPE.FRIEND_NPC_NORMAL; newData.m_pos = new Vector3(curPair.Value[0].PosX, 0, curPair.Value[0].PosZ); m_FriendNPCRecycleList.Add(newData); } } } m_curNPCListScene = GameManager.gameManager.RunningScene; } for (int i = 0; i < m_FriendNPCRecycleList.UsingList().Count; i++) { if (m_FriendNPCRecycleList.UsingList()[i] != null) { GameObject newNPCDot = null; if (m_FriendNPCRecycleList.UsingList()[i].m_nType == FRIEND_NPC_TYPE.FRIEND_NPC_VILLAIN_GULDE) { newNPCDot = GameObject.Instantiate(m_ObjMapNpcForVillain) as GameObject; } else if (m_FriendNPCRecycleList.UsingList()[i].m_nType == FRIEND_NPC_TYPE.FRIEND_NPC_NORMAL) { newNPCDot = GameObject.Instantiate(m_ObjMapNpc) as GameObject; } if (null != newNPCDot) { newNPCDot.transform.parent = m_MapRoot; newNPCDot.transform.localScale = Vector3.one; newNPCDot.transform.localPosition = ScenePosToMapPos(m_FriendNPCRecycleList.UsingList()[i].m_pos, m_curTabScene); newNPCDot.SetActive(true); } } } for (int i = 0; i < GlobeVar.MAX_TEAM_MEMBER; i++) { GameObject newNPCDot = GameObject.Instantiate(m_ObjMapDot) as GameObject; if (null != newNPCDot) { newNPCDot.transform.parent = m_MapRoot; newNPCDot.transform.localScale = Vector3.one; // UITexture npcTexture = newNPCDot.GetComponent<UITexture>(); m_ObjMapFriendDotList.Add(newNPCDot.transform); } } if (m_curSceneID == GameDefine_Globe.WORLDBOSS_SCENE_ID && WorldMapWindow.WorldBossOpen == 1) { m_ObjMapBoss.transform.localPosition = ScenePosToMapPos(new Vector3(GameDefine_Globe.WORLDBOSS_X, 0, GameDefine_Globe.WORLDBOSS_Z), m_curTabScene); m_ObjMapBoss.SetActive(true); } ShowSceneInfo(m_curTabScene); if (GameManager.gameManager.ActiveScene.IsCopyScene()) { m_BtnChangeChannel.isEnabled = false; } else { m_BtnChangeChannel.isEnabled = true; } StartCoroutine(UpdateTeamPos()); }
public override void Start() { base.Start(); // 如果是NPC if (m_nTargetID > 0) { Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(m_nTargetID, 0); if (null != RoleBase) { m_TargetCharacter = ObjManager.Instance.FindObjCharacterInSceneByName(RoleBase.Name, true, 20); if (null != m_TargetCharacter) { // 强制停止自动移动 if (m_TargetCharacter.AutoMoveComponent != null) { m_TargetCharacter.AutoMoveComponent.ForceStopMove(); } m_StartPos = m_TargetCharacter.Position; m_fTimer = m_fDuration; // 关掉寻路组件,防止寻路组件强行设置位置导致一些莫名其妙的问题 if (null != m_TargetCharacter.NavAgent) { m_TargetCharacterNavAgentOrigState = m_TargetCharacter.NavAgent.enabled; if (m_TargetCharacterNavAgentOrigState == true) { m_TargetCharacter.NavAgent.enabled = false; } } if (m_fDuration <= 0) { // 只有瞬移的时候这个参数才有意义,否则旋转是算出来的 m_TargetCharacter.Rotation = Quaternion.Euler(0, m_fDir, 0); Finish(); } else { Vector3 dir = m_TargetPos - m_StartPos; dir.y = 0; m_TargetCharacter.ObjTransform.forward = dir; } } else { base.Finish(); } } } // 如果是玩家 else { m_TargetCharacter = Singleton <ObjManager> .GetInstance().MainPlayer; if (null != m_TargetCharacter) { m_StartPos = m_TargetCharacter.Position; m_fTimer = m_fDuration; // 关掉寻路组件,防止寻路组件强行设置位置导致一些莫名其妙的问题 if (null != m_TargetCharacter.NavAgent) { m_TargetCharacterNavAgentOrigState = m_TargetCharacter.NavAgent.enabled; if (m_TargetCharacterNavAgentOrigState == true) { m_TargetCharacter.NavAgent.enabled = false; } } if (m_fDuration <= 0) { // 只有瞬移的时候这个参数才有意义,否则旋转是算出来的 m_TargetCharacter.Rotation = Quaternion.Euler(0, m_fDir, 0); Finish(); } else { Vector3 dir = m_TargetPos - m_StartPos; dir.y = 0; m_TargetCharacter.ObjTransform.forward = dir; } } else { base.Finish(); } } }
public uint Execute(PacketDistributed ipacket) { GC_CREATE_NPC packet = (GC_CREATE_NPC )ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //判断ServerID是否合法 if (packet.ServerId < 0) { return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); } //安全措施,如果发现ServerID已经存在,则先移除掉 if (Singleton <ObjManager> .GetInstance().IsObjExist(packet.ServerId)) { Singleton <ObjManager> .GetInstance().RemoveObj(packet.ServerId); } // boss Effect if (GameManager.gameManager.ActiveScene.IsStoryCopyScene()) { Tab_RoleBaseAttr tabRoleBaseAttr = TableManager.GetRoleBaseAttrByID(packet.DataId, 0); if (tabRoleBaseAttr != null) { if (tabRoleBaseAttr.NpcType == (int)GameDefine_Globe.NPC_TYPE.BOSS) { if (BackCamerControll.Instance() != null) { BackCamerControll.Instance().PlaySceneEffect(611); } } } } Obj_Init_Data initData = new Obj_Init_Data(); // initData.CleanUp(); initData.m_ServerID = packet.ServerId; initData.m_fX = ((float)packet.PosX) / 100; initData.m_fZ = ((float)packet.PosZ) / 100; initData.m_RoleBaseID = packet.DataId; initData.m_Force = packet.Curforce; initData.m_StrName = packet.Name; initData.m_IsDie = packet.IsDie == 1 ? true : false; initData.m_MoveSpeed = ((float)packet.Movespeed) / 100; initData.m_fDir = (float)packet.Facedir / 100; initData.m_StealthLev = packet.StealthLeve; initData.m_bNpcBornCreate = (packet.IsBorn == 1 ? true : false); if (packet.HasModelVisualID) { initData.m_ModelVisualID = packet.ModelVisualID; } if (packet.HasWeaponDataID) { initData.m_WeaponDataID = packet.WeaponDataID; } if (packet.HasProfession) { initData.m_nProfession = packet.Profession; } if (packet.HasBindparent) { initData.m_BindParent = packet.Bindparent; } initData.m_BindChildren.Clear(); for (int nindex = 0; nindex < GlobeVar.BIND_CHILDREN_MAX; ++nindex) { if (nindex < packet.bindchildrenCount) { initData.m_BindChildren.Add(packet.GetBindchildren(nindex)); } else { initData.m_BindChildren.Add(-1); } } initData.m_SceneNpcId = packet.SceneNpcId; Singleton <ObjManager> .GetInstance().NewCharacterObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC, initData); return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
public override bool Init(Obj_Init_Data initData) { if (null == m_ObjTransform) { m_ObjTransform = transform; } m_ObjTransform.position = ActiveScene.GetTerrainPosition(new Vector3(initData.m_fX, 0, initData.m_fZ)); BaseAttr.RoleBaseID = initData.m_RoleBaseID; BaseAttr.MoveSpeed = initData.m_MoveSpeed; Tab_RoleBaseAttr roleBaseTab = TableManager.GetRoleBaseAttrByID(BaseAttr.RoleBaseID, 0); if (roleBaseTab != null) { m_NpcType = (Games.GlobeDefine.GameDefine_Globe.NPC_TYPE)roleBaseTab.NpcType; //初始化CharModelID,并读取部分客户端信息 ModelID = roleBaseTab.CharModelID; Tab_CharModel charModel = TableManager.GetCharModelByID(ModelID, 0); if (null != charModel) { BaseAttr.HeadPic = charModel.HeadPic; //设置动作路径 AnimationFilePath = charModel.AnimPath; //设置名字版高度 DeltaHeight = charModel.HeadInfoHeight; transform.localScale = Vector3.one; } } //服务器发过来的信息 this.ServerID = initData.m_ServerID; this.BornPosX = initData.m_fX; this.BornPosY = gameObject.transform.position.y; this.BornPosZ = initData.m_fZ; BaseAttr.RoleName = initData.m_StrName; BaseAttr.Force = initData.m_Force; BaseAttr.Die = initData.m_IsDie; m_ObjTransform.rotation = Utils.DirServerToClient(initData.m_fDir); StealthLev = initData.m_StealthLev; m_bIsBornCreate = initData.m_bNpcBornCreate; OptStealthLevChange(); // NPC挂任务 AddDialogMission(); //组件在初始化数据后进行 //初始化寻路代理 InitNavAgent(); //初始化动画,需要在AnimationFilePath被赋值后进行 AnimLogic = gameObject.GetComponent <AnimationLogic>(); if (AnimLogic == null) { AnimLogic = gameObject.AddComponent <AnimationLogic>(); } //初始化特效 ObjEffectController = gameObject.GetComponent <CharacterEffectBehaviourController>(); if (ObjEffectController == null) { ObjEffectController = gameObject.AddComponent <CharacterEffectBehaviourController>(); } //初始化AutoMove功能模块 if (gameObject.GetComponent <AutoMove>() == null) { gameObject.AddComponent <AutoMove>(); } if (IsDie()) { OnCorpse(); } else { if (Objanimation != null) { Objanimation.Stop(); } CurObjAnimState = Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_NORMOR; } //创新跟玩家一样的模型 m_ModelVisualID = initData.m_ModelVisualID; m_nProfession = initData.m_nProfession; m_WeaponDataID = initData.m_WeaponDataID; m_WeaponEffectGem = initData.m_WeaponDataID; if (initData.m_ModelVisualID != GlobeVar.INVALID_ID && initData.m_nProfession != -1) { ReloadPlayerModelVisual(initData.m_ModelVisualID, initData.m_nProfession); } //初始化名字版 //InitNameBoard(); if (!m_IsNameBoard) { InitNameBoard(); } else { if (m_MissionBoard != null) { //m_MissionBoard.SetActive(true); ShowNameBoard(); } } m_mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer; // 帮会活动NPC判断 m_bIsGuildActivityBoss = IsGuildBoss(); m_SceneNpcId = initData.m_SceneNpcId; return(base.Init(initData)); }
/// <summary> /// 设置对话UI信息 /// </summary> /// <param name="bTopUI">是否为顶部UI</param> /// <param name="strRolePicName">角色头像图片名</param> /// <param name="strDialog">对话内容</param> void ShowStoryUI(bool bTopUI, string strRolePicName, string strDialog, int nDataID) { //InitAniDialog(strDialog, bTopUI); // 暂时不手动设置altas if (bTopUI) { m_StoryDialogTop.SetActive(true); m_StoryDialogTopRole.spriteName = strRolePicName; // 对话内容交由动态显示设置 // 又让改回去了 m_StoryDialogTopLabel.text = strDialog; } else { // m_StoryDialogBottom.SetActive(true); // 对话内容交由动态显示设置 // 又让改回去了 DialogLabel.text = strDialog; //LogModule.ErrorLog("________________________ " + strDialog); if (-1 == nDataID) { string strSpeakerName = ""; int nProfession = 0; if (Singleton <ObjManager> .GetInstance().MainPlayer != null) { strSpeakerName = Singleton <ObjManager> .GetInstance().MainPlayer.BaseAttr.RoleName; nProfession = Singleton <ObjManager> .GetInstance().MainPlayer.Profession; } else { strSpeakerName = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName; nProfession = GameManager.gameManager.PlayerDataPool.EnterSceneCache.Profession; } SpeakerName.text = strSpeakerName; if (null != m_MainPlayerHalfPic[nProfession]) { //m_StoryDialogBottomRole.spriteName = m_MainPlayerHalfPic[nProfession]; if (m_nDialogType == 0) { RoleHeadIcon.mainTexture = ResourceManager.LoadResource("Texture/MissionRole/" + m_MainPlayerHalfPic[nProfession], typeof(Texture)) as Texture; } else if (m_nDialogType == 1) { m_StoryDialogAsyncRole.spriteName = strRolePicName; } else if (m_nDialogType == 3) { m_StoryDialogAsyncRole.spriteName = strRolePicName; } else if (m_nDialogType == 3) { RoleHeadIcon.mainTexture = ResourceManager.LoadResource("Texture/MissionRole/" + m_MainPlayerHalfPic[nProfession], typeof(Texture)) as Texture; } } } else { Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(nDataID, 0); if (RoleBase != null) { SpeakerName.text = RoleBase.Name; } else { SpeakerName.text = ""; } if (m_nDialogType == 0) { RoleHeadIcon.mainTexture = ResourceManager.LoadResource("Texture/MissionRole/" + strRolePicName, typeof(Texture)) as Texture; } else if (m_nDialogType == 1) { m_StoryDialogAsyncRole.spriteName = strRolePicName; } else if (m_nDialogType == 2) { m_StoryDialogAsyncRole.spriteName = strRolePicName; } else if (m_nDialogType == 3) { RoleHeadIcon.mainTexture = ResourceManager.LoadResource("Texture/MissionRole/" + strRolePicName, typeof(Texture)) as Texture; } //m_StoryDialogBottomRole.spriteName = strRolePicName; } } }