コード例 #1
0
        public NpcInfo DelayAddNpc(Data_Unit unit)
        {
            NpcInfo npc = NewNpcInfo();

            npc.SceneContext = m_SceneContext;
            npc.LoadData(unit);
            m_DelayAdd.Add(npc);
            return(npc);
        }
コード例 #2
0
 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);
 }
コード例 #3
0
        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 });
            }
        }
コード例 #4
0
        /**
         * @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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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");
                        }
                    }
                }
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }