public void CleanUp() { m_PlayerData.Clear(); m_BackPack = new ItemPack(ItemPack.SIZE_BACKPACK, ItemPack.Type.TYPE_BACKPACK); //玩家创建数据缓存 m_CreateMainPlayerCache = new Obj_Init_Data(); }
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()); } }
public uint Execute(PacketDistributed ipacket) { GC_CREATE_FELLOW packet = (GC_CREATE_FELLOW)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); } Obj_Init_Data initData = new Obj_Init_Data(); 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_Guid = packet.Guid; initData.m_OwnerObjId = packet.Ownerobjid; initData.m_MoveSpeed = ((float)packet.Movespeed) / 100; initData.m_fDir = (float)packet.Facedir / 100; initData.m_StealthLev = packet.StealthLev; initData.m_FellowQuality = packet.Quality; 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); } } Singleton <ObjManager> .GetInstance().NewCharacterObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_FELLOW, initData); //enter your logic return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
public override bool Init(Obj_Init_Data initData) { BaseAttr.MoveSpeed = m_fMoveSpeed; //服务器发过来的信息 m_ObjType = Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER; StealthLev = initData.m_StealthLev; OptStealthLevChange(); if (null == transform) { m_ObjTransform = transform; } return(base.Init(initData)); }
/// <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); } }
public override bool Init(Obj_Init_Data initData) { if (base.Init(initData)) { return(false); } ObjEffectController = gameObject.GetComponent <CharacterEffectBehaviourController>(); if (ObjEffectController == null) { ObjEffectController = gameObject.AddComponent <CharacterEffectBehaviourController>(); } AnimLogic = gameObject.GetComponent <AnimationLogic>(); if (AnimLogic == null) { AnimLogic = gameObject.AddComponent <AnimationLogic>(); } return(true); }
//创建伙伴 public static void CreateFellowModel(Obj_Init_Data initData) { if (null == initData) { return; } Tab_CabalFellowAttr fellowAttr = TableManager.GetCabalFellowAttrByID(initData.m_RoleBaseID, 0); if (null == fellowAttr) { return; } //根据ModelId找到CharModel资源 Tab_CharModel charModel = TableManager.GetCharModelByID(fellowAttr.ModelId, 0); if (null == charModel) { return; } GameObject fellow = ResourceManager.InstantiateResource("Prefab/Model/FellowRoot", initData.m_ServerID.ToString()) as GameObject; if (null != fellow) { //加载逻辑体,同时异步加载渲染体 Obj_Fellow objFellow = fellow.AddComponent <Obj_Fellow>(); if (objFellow && objFellow.Init(initData)) { objFellow.CanLogic = true; Singleton <ObjManager> .Instance.AddPoolObj(objFellow.ServerID.ToString(), objFellow); } LoadModelToRoot(fellowAttr.ModelId, EResourceType.CharacterModel, LoadModelComplete, fellow, charModel, null); //ReloadModel(fellow, charModel.ResPath, AsycCreateFellowOver, initData); } }
public uint Execute(PacketDistributed ipacket) { GC_CREATE_ZOMBIEUSER packet = (GC_CREATE_ZOMBIEUSER)ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //安全措施,如果发现ServerID已经存在,则先移除掉 if (Singleton <ObjManager> .GetInstance().IsObjExist(packet.ServerId)) { Singleton <ObjManager> .GetInstance().RemoveObj(packet.ServerId); } 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; if (!string.IsNullOrEmpty(packet.Name)) { char firstChar = packet.Name[0]; string szNameResult = ""; if (firstChar == '#' && 0 == StrDictionary.GetServerDictionaryFormatString(packet.Name, ref szNameResult)) { initData.m_StrName = szNameResult; } else { 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_ModelVisualID = packet.ModelVisualID; initData.m_WeaponDataID = packet.Weaponid; initData.m_WeaponEffectGem = packet.WeaponEffectGem; initData.m_StealthLev = packet.StealthLev; 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); } } Singleton <ObjManager> .GetInstance().NewCharacterObj(Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_ZOMBIE_PLAYER, initData); return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
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 bool Init(Obj_Init_Data initData) { if (null == m_ObjTransform) { m_ObjTransform = gameObject.transform; } m_ObjTransform.position = ActiveScene.GetTerrainPosition(new Vector3(initData.m_fX, 0, initData.m_fZ)); //暂时 写死了 后面再用服务器 m_ObjTransform.Rotate(Vector3.up * 135); //服务器发过来的信息 this.ServerID = initData.m_ServerID; BaseAttr.RoleBaseID = initData.m_RoleBaseID; BaseAttr.RoleName = initData.m_StrName; m_OwnerObjId = initData.m_OwnerObjId; StealthLev = initData.m_StealthLev; m_Quality = initData.m_FellowQuality; OptStealthLevChange(); //防止伙伴追上人物导致动作不流畅 把客户端主角伙伴速度修改为和人物一样 if (IsOwnedByMainPlayer() == true) { Singleton <ObjManager> .GetInstance().MainPlayer.CurFellowObjId = ServerID; Singleton <ObjManager> .GetInstance().MainPlayer.CurFellowObjGuid = initData.m_Guid; BaseAttr.MoveSpeed = Singleton <ObjManager> .GetInstance().MainPlayer.BaseAttr.MoveSpeed; } else { Obj_OtherPlayer otherPlayer = Singleton <ObjManager> .Instance.FindObjInScene(m_OwnerObjId) as Obj_OtherPlayer; if (null != otherPlayer) { otherPlayer.FellowID = ServerID; m_bVisible = otherPlayer.IsVisibleChar(); } BaseAttr.MoveSpeed = initData.m_MoveSpeed; } Tab_CabalFellowAttr fellowAttrTab = TableManager.GetCabalFellowAttrByID(BaseAttr.RoleBaseID, 0); if (fellowAttrTab != null) { //初始化CharModelID,并读取部分客户端信息 ModelID = fellowAttrTab.ModelId; Tab_CharModel charModel = TableManager.GetCharModelByID(ModelID, 0); if (null != charModel) { BaseAttr.HeadPic = charModel.HeadPic; //设置动作路径 AnimationFilePath = charModel.AnimPath; //设置名字版高度 DeltaHeight = charModel.HeadInfoHeight; m_ObjTransform.localScale = new Vector3(charModel.Scale, charModel.Scale, charModel.Scale); m_ObjTransform.localRotation = Utils.DirServerToClient(initData.m_fDir); } } //初始化寻路代理 InitNavAgent(); //初始化AutoMove功能模块 //if (gameObject.GetComponent<AutoMove>() == null) //{ gameObject.AddComponent <AutoMove>(); //} //初始化动画,需要在AnimationFilePath被赋值后进行 if (AnimLogic == null) { AnimLogic = gameObject.AddComponent <AnimationLogic>(); } //初始化特效 if (ObjEffectController == null) { ObjEffectController = gameObject.AddComponent <CharacterEffectBehaviourController>(); } //召出播放特效 if (Singleton <ObjManager> .GetInstance().MainPlayer != null) { if (m_OwnerObjId == Singleton <ObjManager> .GetInstance().MainPlayer.ServerID) { if (GameManager.gameManager.PlayerDataPool.FellowPlayerEffect == true) { //PlayEffect(52); GameManager.gameManager.PlayerDataPool.FellowPlayerEffect = false; } } } if (IsDie()) { OnCorpse(); } else { if (Objanimation != null) { Objanimation.Stop(); } CurObjAnimState = Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_NORMOR; } InitNameBoard(); return(base.Init(initData)); }
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)); }
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); }
/// <summary> /// 创建其他玩家 这里可以优化一下 代码里获取 ModelId 的部分 可能是重复的 等具体功能应用后 替换成obj.ModelId /// </summary> /// <param name="initData"></param> public static void CreateOtherPlayer(Obj_Init_Data initData) { if (null == initData) { return; } GameObject otherPlayer = ResourceManager.InstantiateResource("Prefab/Model/OtherPlayerRoot", initData.m_ServerID.ToString()) as GameObject; if (null != otherPlayer) { //加载逻辑体,同时异步加载渲染体 Obj_OtherPlayer objOtherPlayer = otherPlayer.AddComponent <Obj_OtherPlayer>(); ////////////////////////////////临时代码 写死玩家 装备 其他玩家跟主玩家相同 // // initData.m_ModelVisualID = 18; // initData.m_WeaponDataID = 52188; // initData.m_WeaponEffectGem = 8909; ////////////////////////////////临时代码 写死玩家 装备 if (objOtherPlayer.Init(initData)) { objOtherPlayer.CanLogic = true; } Tab_ItemVisual tabItemVisual = TableManager.GetItemVisualByID(objOtherPlayer.ModelVisualID, 0); if (tabItemVisual == null) { tabItemVisual = TableManager.GetItemVisualByID(GlobeVar.DEFAULT_VISUAL_ID, 0); if (tabItemVisual == null) { return; } } int nCharmodelID = objOtherPlayer.GetCharModelID(tabItemVisual, objOtherPlayer.Profession); //变身的特殊处理 int nChangeModelId = objOtherPlayer.GetCharModelIDByChangeState(objOtherPlayer.Profession, objOtherPlayer.CurChangeState); //如果在变身状态,就用变身状态的模型ID去创建 if (nChangeModelId != GlobeVar.INVALID_ID) { nCharmodelID = nChangeModelId; } Tab_CharModel charModel = TableManager.GetCharModelByID(nCharmodelID, 0); if (charModel == null) { return; } ObjManager cachedManager = Singleton <ObjManager> .Instance; if (cachedManager == null) { return; } cachedManager.AddPoolObj(objOtherPlayer.ServerID.ToString(), objOtherPlayer); if (!cachedManager.CheckOhterPlayerVisibleState(initData, charModel, objOtherPlayer)) { return; } cachedManager.TestOtherPlayerVisible(objOtherPlayer); objOtherPlayer.IsLoadingModel = true; LoadModelToRoot(nCharmodelID, EResourceType.CharacterModel, LoadModelComplete, otherPlayer, charModel, objOtherPlayer.CurChangeState == (int)GameDefine_Globe.ChangeModeState.CHANGE_2 || objOtherPlayer.CurChangeState == (int)GameDefine_Globe.ChangeModeState.CHANGE_1); } }