public NpcInfo DelayAddNpc(Data_Unit unit) { NpcInfo npc = NewNpcInfo(); npc.SceneContext = m_SceneContext; npc.LoadData(unit); m_DelayAdd.Add(npc); return(npc); }
public void LoadData(Data_Unit unit) { SetUnitId(unit.m_Id); SetCampId(unit.m_CampId); GetAiStateInfo().AiLogic = unit.m_AiLogic; for (int i = 0; i < Data_Unit.c_MaxAiParamNum; ++i) { GetAiStateInfo().AiParam[i] = unit.m_AiParam[i]; } GetMovementStateInfo().SetPosition(unit.m_Pos); GetMovementStateInfo().SetFaceDir(unit.m_RotAngle); LoadData(unit.m_LinkId); }
private void OnLoadFinish() { LogSystem.Debug("SceneResource.OnLoadFinish"); m_IsWaitSceneLoad = false; if (null != m_SceneDropOut) { //LogSystem.Debug("{0} {1} {2}", m_SceneDropOut.m_GoldSum, m_SceneDropOut.m_GoldMin, m_SceneDropOut.m_GoldMax); } foreach (int id in m_DropMoneyData.Keys) { //LogSystem.Debug("id = {0}, monew = {1}", id, m_DropMoneyData[id]); } Data_Unit unit = m_SceneStaticData.ExtractData(DataMap_Type.DT_Unit, GlobalVariables.GetUnitIdByCampId(NetworkSystem.Instance.CampId)) as Data_Unit; if (null != unit) { GfxSystem.SendMessage("GfxGameRoot", "CameraLookatImmediately", new float[] { unit.m_Pos.X, unit.m_Pos.Y, unit.m_Pos.Z }); } }
/** * @brief 克隆函数 * * @return */ public object Clone() { Data_Unit data = new Data_Unit(); data.m_Id = m_Id; data.m_LinkId = m_LinkId; data.m_CampId = m_CampId; data.m_Pos = new Vector3(m_Pos.X, m_Pos.Y, m_Pos.Z); data.m_RotAngle = m_RotAngle; data.m_IsEnable = m_IsEnable; data.m_AiLogic = m_AiLogic; for (int i = 0; i < c_MaxAiParamNum; ++i) { data.m_AiParam[i] = m_AiParam[i]; } return(data); }
public NpcInfo AddNpc(int id, Data_Unit unit) { NpcInfo npc = NewNpcInfo(id); npc.SceneContext = m_SceneContext; npc.LoadData(unit); npc.IsBorning = true; npc.SetAIEnable(false); npc.SetStateFlag(Operate_Type.OT_AddBit, CharacterState_Type.CST_Invincible); npc.BornTime = TimeUtility.GetServerMilliseconds(); m_Npcs.AddLast(npc.GetId(), npc); if (null != m_SceneContext && null != m_SceneContext.SpatialSystem) { m_SceneContext.SpatialSystem.AddObj(npc.SpaceObject); } if (null != m_SceneContext && null != m_SceneContext.SightManager) { m_SceneContext.SightManager.AddObject(npc); } return(npc); }
internal void Init(int resId) { m_SceneResId = resId; LoadSceneData(resId); WorldSystem.Instance.SceneContext.SceneResId = resId; WorldSystem.Instance.SceneContext.IsRunWithRoomServer = (IsPvp || IsMultiPve); m_IsWaitSceneLoad = true; m_IsWaitRoomServerConnect = true; m_IsNoticeException = false; m_IsSuccessEnter = false; Data_Unit unit = m_SceneStaticData.ExtractData(DataMap_Type.DT_Unit, GlobalVariables.GetUnitIdByCampId(NetworkSystem.Instance.CampId)) as Data_Unit; if (null != unit) { m_CameraLookAtX = unit.m_Pos.X; m_CameraLookAtY = unit.m_Pos.Y; m_CameraLookAtZ = unit.m_Pos.Z; } CalculateDropOut(); LogicSystem.LogFromLogic("SceneResource.Init {0}", resId); }
private void SummonPartner(int key_code, int what) { RoleInfo roleself = LobbyClient.Instance.CurrentRole; if (null == roleself) { return; } UserInfo playerself = WorldSystem.Instance.GetPlayerSelf(); if (null == playerself) { return; } /// if ((int)Keyboard.Event.Up == what) { // summonpartner PartnerInfo partnerInfo = roleself.PartnerStateInfo.GetActivePartner(); if (null != partnerInfo) { Data_Unit data = new Data_Unit(); data.m_Id = -1; data.m_LinkId = partnerInfo.LinkId; data.m_CampId = playerself.GetCampId(); data.m_Pos = playerself.GetMovementStateInfo().GetPosition3D(); data.m_RotAngle = 0; data.m_AiLogic = partnerInfo.GetAiLogic(); data.m_AiParam[0] = ""; data.m_AiParam[1] = ""; data.m_AiParam[2] = partnerInfo.GetAiParam().ToString(); data.m_IsEnable = true; NpcInfo npc = WorldSystem.Instance.NpcManager.AddNpc(data); if (null != npc) { AppendAttributeConfig aac = AppendAttributeConfigProvider.Instance.GetDataById(partnerInfo.GetAppendAttrConfigId()); float inheritAttackAttrPercent = partnerInfo.GetInheritAttackAttrPercent(); float inheritDefenceAttrPercent = partnerInfo.GetInheritDefenceAttrPercent(); if (null != aac) { // attack npc.GetBaseProperty().SetAttackBase(Operate_Type.OT_Absolute, (int)(playerself.GetActualProperty().AttackBase *inheritAttackAttrPercent)); npc.GetBaseProperty().SetFireDamage(Operate_Type.OT_Absolute, playerself.GetActualProperty().FireDamage *inheritAttackAttrPercent); npc.GetBaseProperty().SetIceDamage(Operate_Type.OT_Absolute, playerself.GetActualProperty().IceDamage *inheritAttackAttrPercent); npc.GetBaseProperty().SetPoisonDamage(Operate_Type.OT_Absolute, playerself.GetActualProperty().PoisonDamage *inheritAttackAttrPercent); // defence npc.GetBaseProperty().SetHpMax(Operate_Type.OT_Absolute, (int)(playerself.GetActualProperty().HpMax *inheritDefenceAttrPercent)); npc.GetBaseProperty().SetEnergyMax(Operate_Type.OT_Absolute, (int)(playerself.GetActualProperty().EnergyMax *inheritDefenceAttrPercent)); npc.GetBaseProperty().SetADefenceBase(Operate_Type.OT_Absolute, (int)(playerself.GetActualProperty().ADefenceBase *inheritDefenceAttrPercent)); npc.GetBaseProperty().SetMDefenceBase(Operate_Type.OT_Absolute, (int)(playerself.GetActualProperty().MDefenceBase *inheritDefenceAttrPercent)); npc.GetBaseProperty().SetFireERD(Operate_Type.OT_Absolute, playerself.GetActualProperty().FireERD *inheritDefenceAttrPercent); npc.GetBaseProperty().SetIceERD(Operate_Type.OT_Absolute, playerself.GetActualProperty().IceERD *inheritDefenceAttrPercent); npc.GetBaseProperty().SetPoisonERD(Operate_Type.OT_Absolute, playerself.GetActualProperty().PoisonERD *inheritDefenceAttrPercent); // reset hp & energy npc.SetHp(Operate_Type.OT_Absolute, npc.GetActualProperty().HpMax); npc.SetEnergy(Operate_Type.OT_Absolute, npc.GetActualProperty().EnergyMax); } npc.SetAIEnable(true); npc.GetSkillStateInfo().RemoveAllSkill(); npc.BornTime = TimeUtility.GetServerMilliseconds(); List <int> skillList = partnerInfo.GetSkillList(); if (null != skillList) { for (int i = 0; i < skillList.Count; ++i) { SkillInfo skillInfo = new SkillInfo(skillList[i]); npc.GetSkillStateInfo().AddSkill(skillInfo); } } npc.SkillController = new SwordManSkillController(npc, GfxModule.Skill.GfxSkillSystem.Instance); npc.OwnerId = playerself.GetId(); playerself.PartnerId = npc.GetId(); EntityManager.Instance.CreateNpcView(npc.GetId()); if (partnerInfo.BornSkill > 0) { SkillInfo skillInfo = new SkillInfo(partnerInfo.BornSkill); npc.GetSkillStateInfo().AddSkill(skillInfo); npc.SkillController.ForceStartSkill(partnerInfo.BornSkill); } CharacterView view = EntityManager.Instance.GetCharacterViewById(npc.GetId()); if (null != view) { GfxSystem.SetLayer(view.Actor, "PhysicObj"); } } } } }
public static NpcInfo SummonNpc(int id, int owner_id, int owner_skillid, int npc_type_id, string modelPrefab, int skillid, int ailogicid, bool followsummonerdead, float x, float y, float z, string aiparamstr, int signforskill, bool isSimulate = false, bool is_start_skill = true) { CharacterInfo charObj = WorldSystem.Instance.GetCharacterById(owner_id); if (charObj == null) { return(null); } Data_Unit data = new Data_Unit(); data.m_Id = -1; data.m_LinkId = npc_type_id; data.m_CampId = charObj.GetCampId(); data.m_IsEnable = true; data.m_Pos = new Vector3(x, y, z); data.m_RotAngle = 0; data.m_AiLogic = ailogicid; if (!string.IsNullOrEmpty(aiparamstr)) { string[] strarry = aiparamstr.Split(new char[] { ',' }, 8); int i = 0; foreach (string str in strarry) { data.m_AiParam[i++] = str; } } NpcInfo npc; if (id <= 0) { npc = WorldSystem.Instance.NpcManager.AddNpc(data); } else { npc = WorldSystem.Instance.NpcManager.AddNpc(id, data); } if (WorldSystem.Instance.IsExpeditionScene() || WorldSystem.Instance.IsMultiPveScene()) { float fightscore = 0; CharacterProperty info = charObj.GetActualProperty(); if (null != info) { CharacterProperty base_info = charObj.GetBaseProperty(); float assit_critical_pow = (null != base_info ? info.CriticalPow - base_info.CriticalPow : info.CriticalPow); float assit_critical_backhit_pow = (null != base_info ? info.CriticalBackHitPow - base_info.CriticalBackHitPow : info.CriticalBackHitPow); float assit_critical_crack_pow = (null != base_info ? info.CriticalCrackPow - base_info.CriticalCrackPow : info.CriticalCrackPow); fightscore = AttributeScoreConfigProvider.Instance.CalcAttributeScore(info.HpMax, info.EnergyMax, info.AttackBase, info.ADefenceBase, info.MDefenceBase, info.Critical, assit_critical_pow, assit_critical_backhit_pow, assit_critical_crack_pow, info.FireDamage, info.IceDamage, info.PoisonDamage, info.FireERD, info.IceERD, info.PoisonERD) + charObj.GetSkillStateInfo().GetSkillAppendScore(); } WorldSystem.Instance.AdditionNpcAttr(npc, Mathf.FloorToInt(fightscore)); } if (!string.IsNullOrEmpty(modelPrefab)) { npc.SetModel(modelPrefab); } npc.FollowSummonerDead = followsummonerdead; SkillInfo skillinfo = new SkillInfo(skillid); npc.GetSkillStateInfo().AddSkill(skillinfo); npc.SkillController = new SwordManSkillController(npc, GfxModule.Skill.GfxSkillSystem.Instance); npc.GetMovementStateInfo().SetPosition(data.m_Pos); npc.SummonOwnerId = charObj.GetId(); npc.SignForSkill = signforskill; EntityManager.Instance.CreateNpcView(npc.GetId()); charObj.GetSkillStateInfo().AddSummonObject(npc); NpcView npcview = EntityManager.Instance.GetNpcViewById(npc.GetId()); CharacterView owner_view = EntityManager.Instance.GetCharacterViewById(charObj.GetId()); npcview.ObjectInfo.SummonOwnerActorId = owner_view.Actor; npcview.ObjectInfo.SummonOwnerSkillId = owner_skillid; npcview.ObjectInfo.SignForSkill = signforskill; npcview.ObjectInfo.IsSimulate = isSimulate; if (ailogicid > 0) { npcview.ObjectInfo.IsSummonWithAI = true; } //LogSystem.Debug("---summon npc: issimulate=" + isSimulate); owner_view.ObjectInfo.Summons.Add(npcview.Actor); if (is_start_skill) { npc.SkillController.ForceStartSkill(skillid); } //LogSystem.Debug("---create summon npc over!"); return(npc); }
private UserInfo CreateArenaTarget(ArenaTargetInfo target) { if (target == null) { return(null); } int image_res_id = target.HeroId; UserInfo image_player = m_UserMgr.AddUser(image_res_id); if (null != image_player) { image_player.SceneContext = m_SceneContext; int campid = NetworkSystem.Instance.CampId == (int)CampIdEnum.Blue ? (int)CampIdEnum.Red : (int)CampIdEnum.Blue; image_player.SetCampId(campid); Data_Unit unit = m_CurScene.StaticData.ExtractData(DataMap_Type.DT_Unit, GlobalVariables.GetUnitIdByCampId(campid)) as Data_Unit; if (null != unit) { image_player.GetAiStateInfo().AiLogic = unit.m_AiLogic; image_player.SetAIEnable(true); image_player.GetMovementStateInfo().SetPosition(unit.m_Pos); image_player.GetMovementStateInfo().SetFaceDir(unit.m_RotAngle); } image_player.SetLevel(target.Level); image_player.SetNickName(target.Nickname); image_player.SkillController = new SwordManSkillController(image_player, GfxModule.Skill.GfxSkillSystem.Instance); if (null != m_SpatialSystem) { m_SpatialSystem.AddObj(image_player.SpaceObject); } /// skills if (null != target.Skills) { image_player.GetSkillStateInfo().RemoveAllSkill(); int skill_ct = target.Skills.Count; for (int i = 0; i < skill_ct; i++) { SkillInfo info = target.Skills[i]; if (null != info) { SkillCategory cur_skill_pos = SkillCategory.kNone; if (info.Postions.Presets[0] == SlotPosition.SP_A) { cur_skill_pos = SkillCategory.kSkillA; } else if (info.Postions.Presets[0] == SlotPosition.SP_B) { cur_skill_pos = SkillCategory.kSkillB; } else if (info.Postions.Presets[0] == SlotPosition.SP_C) { cur_skill_pos = SkillCategory.kSkillC; } else if (info.Postions.Presets[0] == SlotPosition.SP_D) { cur_skill_pos = SkillCategory.kSkillD; } info.Category = cur_skill_pos; image_player.GetSkillStateInfo().AddSkill(info); WorldSystem.Instance.AddSubSkill(image_player, info.SkillId, cur_skill_pos, info.SkillLevel); } } } Data_PlayerConfig playerData = PlayerConfigProvider.Instance.GetPlayerConfigById(image_player.GetLinkId()); if (null != playerData && null != playerData.m_FixedSkillList && playerData.m_FixedSkillList.Count > 0) { foreach (int skill_id in playerData.m_FixedSkillList) { SkillInfo info = new SkillInfo(skill_id, 1); image_player.GetSkillStateInfo().AddSkill(info); } } image_player.ResetSkill(); /// equips if (null != target.Equips) { int equip_ct = target.Equips.Length; for (int i = 0; i < equip_ct; i++) { ItemDataInfo image_equip = target.Equips[i]; if (null != image_equip) { image_player.GetEquipmentStateInfo().ResetEquipmentData(i); image_equip.ItemConfig = ItemConfigProvider.Instance.GetDataById(image_equip.ItemId); if (null != image_equip.ItemConfig) { image_player.GetEquipmentStateInfo().SetEquipmentData(i, image_equip); } } } } /// if (null != target.Legacys) { int legacy_ct = target.Legacys.Length; for (int i = 0; i < legacy_ct; i++) { ItemDataInfo image_legacy = target.Legacys[i]; if (null != image_legacy && image_legacy.IsUnlock) { image_player.GetLegacyStateInfo().ResetLegacyData(i); image_legacy.ItemConfig = ItemConfigProvider.Instance.GetDataById(image_legacy.ItemId); if (null != image_legacy.ItemConfig) { image_player.GetLegacyStateInfo().SetLegacyData(i, image_legacy); } } } image_player.GetLegacyStateInfo().UpdateLegacyComplexAttr(); } foreach (ArenaXSoulInfo x in target.XSoulInfo) { ItemDataInfo item = new ItemDataInfo(); item.ItemId = x.ItemId; item.Level = x.Level; item.Experience = x.Experience; item.UpdateLevelByExperience(); ItemConfig config = ItemConfigProvider.Instance.GetDataById(item.ItemId); if (config == null) { continue; } item.ItemConfig = config; XSoulPartInfo part = new XSoulPartInfo((XSoulPart)config.m_WearParts, item); part.ShowModelLevel = x.ModelLevel; image_player.GetXSoulInfo().SetXSoulPartData((XSoulPart)config.m_WearParts, part); } image_player.SetPartnerInfo(target.ActivePartner); SetArenaCharacterCoefficient(image_player); UserAttrCalculator.Calc(image_player); image_player.SetHp(Operate_Type.OT_Absolute, image_player.GetActualProperty().HpMax); image_player.SetRage(Operate_Type.OT_Absolute, 0); image_player.SetEnergy(Operate_Type.OT_Absolute, image_player.GetActualProperty().EnergyMax); target.CreatedPartners.Clear(); int total_hp = image_player.GetActualProperty().HpMax; //LogSystem.Error("---challenge target hp=" + image_player.GetActualProperty().HpMax); foreach (PartnerInfo partner in target.FightPartners) { NpcInfo partner_npc = CreateParterner(image_player, partner); if (partner_npc != null) { target.CreatedPartners.Add(partner.Id, partner_npc); //LogSystem.Error("---parnter {0} hp={1}", partner.Id, partner_npc.GetBaseProperty().HpMax); total_hp += partner_npc.GetBaseProperty().HpMax; } } //LogSystem.Error("-----challenge target total hp=" + total_hp); EntityManager.Instance.CreateUserView(image_player.GetId()); UserView image_view = EntityManager.Instance.GetUserViewById(image_player.GetId()); image_view.UpdateEquipment(); image_view.UpdateXSoulEquip(); } SyncGfxUserInfo(image_player.GetId()); return(image_player); }