コード例 #1
0
        public static int GetJingJiChangeHighPrioritySkill(int eOccupation, EMagicSwordTowardType eMagicSwordType)
        {
            switch (eOccupation)
            {
            case 0:
                return(-1);

            case 1:
                return(-1);

            case 2:
                return(-1);

            case 3:
                switch (eMagicSwordType)
                {
                case EMagicSwordTowardType.EMST_Strength:
                    return(-1);

                case EMagicSwordTowardType.EMST_Intelligence:
                    return(-1);
                }
                break;

            case 5:
                return(JingJiChangConstants.SummonerSkillFirst);
            }
            return(-1);
        }
コード例 #2
0
        public static int[] getJingJiChangeFiveCombatSkillList(int eOccupation, EMagicSwordTowardType eMagicSwordType)
        {
            switch (eOccupation)
            {
            case 0:
                return(JingJiChangConstants.ZhanShiFiveCombotSkillList);

            case 1:
                return(JingJiChangConstants.FaShiFiveCombotSkillList);

            case 2:
                return(JingJiChangConstants.GongJianShouFiveCombotSkillList);

            case 3:
                switch (eMagicSwordType)
                {
                case EMagicSwordTowardType.EMST_Strength:
                    return(JingJiChangConstants.StrMagicSwordFiveCombotSkillList);

                case EMagicSwordTowardType.EMST_Intelligence:
                    return(JingJiChangConstants.IntMagicSwordFiveCombotSkillList);
                }
                break;

            case 5:
                return(JingJiChangConstants.SummonerFiveCombotSkillList);
            }
            return(null);
        }
コード例 #3
0
        public bool InitMagicSwordInfo(GameClient client, EMagicSwordTowardType eType)
        {
            bool result;

            if (!this.IsVersionSystemOpenOfMagicSword())
            {
                result = false;
            }
            else if (null == client)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("client不存在,初始化魔剑士信息", new object[0]), null, true);
                result = false;
            }
            else if (Global.AutoUpChangeLifeAndLevel(client, MagicSwordData.InitChangeLifeCount, MagicSwordData.InitLevel))
            {
                this.AutoMaigcSwordFirstAddPoint(client, eType);
                this.AutoGiveMagicSwordGoods(client);
                this.AutoGiveMagicSwordDefaultSkillHotKey(client, eType);
                GlobalEventSource.getInstance().fireEvent(new PlayerLevelupEventObject(client));
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }
コード例 #4
0
        public void AutoGiveMagicSwordDefaultSkillHotKey(GameClient client, EMagicSwordTowardType eType)
        {
            if (null != client)
            {
                string skillStr;
                switch (eType)
                {
                case EMagicSwordTowardType.EMST_Strength:
                    skillStr = string.Format("0@{0}|0@{1}|0@{2}|0@{3}", new object[]
                    {
                        10004,
                        10000,
                        10006,
                        10001
                    });
                    break;

                case EMagicSwordTowardType.EMST_Intelligence:
                    skillStr = string.Format("0@{0}|0@{1}|0@{2}|0@{3}", new object[]
                    {
                        10104,
                        10100,
                        10106,
                        10101
                    });
                    break;

                default:
                    return;
                }
                string cmdStr = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, 0, skillStr);
                client.ClientData.MainQuickBarKeys = skillStr;
                GameManager.DBCmdMgr.AddDBCmd(10010, cmdStr, null, client.ServerId);
            }
        }
コード例 #5
0
        public bool IsCanAward2MagicSword(GameClient client, int nGoodsID)
        {
            int  nOcc = Global.CalcOriginalOccupationID(client);
            bool result;

            if (!this.IsMagicSword(nOcc))
            {
                result = false;
            }
            else
            {
                SystemXmlItem systemGoods = null;
                if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(nGoodsID, out systemGoods))
                {
                    result = false;
                }
                else if (Global.GetMainOccupationByGoodsID(nGoodsID) == -1)
                {
                    result = true;
                }
                else
                {
                    EMagicSwordTowardType eEMSType = this.GetMagicSwordTowardType(client);
                    int nStrength     = systemGoods.GetIntValue("Strength", -1);
                    int nIntelligence = systemGoods.GetIntValue("Intelligence", -1);
                    EMagicSwordTowardType eEMSGoodType = EMagicSwordTowardType.EMST_Intelligence;
                    if (nStrength >= nIntelligence)
                    {
                        eEMSGoodType = EMagicSwordTowardType.EMST_Strength;
                    }
                    result = (eEMSType == eEMSGoodType);
                }
            }
            return(result);
        }
コード例 #6
0
ファイル: AttackState.cs プロジェクト: songxiaopeng/mu_server
        public AttackState(GameClient player, Robot owner, FinishStateMachine FSM)
        {
            this.owner            = owner;
            this.FSM              = FSM;
            this.target           = player;
            this.owner.LockObject = player.GetObjectID();
            EMagicSwordTowardType eMagicSwordType = GameManager.MagicSwordMgr.GetMagicSwordTypeByWeapon(owner.getRoleDataMini().Occupation, owner.getRoleDataMini().GoodsDataList, null);

            this.fiveComboSkillList = JingJiChangConstants.getJingJiChangeFiveCombatSkillList(owner.getRoleDataMini().Occupation, eMagicSwordType);
        }
コード例 #7
0
        public AttackState(GameClient player, Robot owner, FinishStateMachine FSM)
        {
            this.owner            = owner;
            this.FSM              = FSM;
            this.target           = player;
            this.owner.LockObject = player.GetObjectID();
            //fiveComboSkillList = owner.MonsterInfo.ToOccupation == 0 ? JingJiChangConstants.ZhanShiFiveCombotSkillList : owner.MonsterInfo.ToOccupation == 1 ? JingJiChangConstants.FaShiFiveCombotSkillList : JingJiChangConstants.GongJianShouFiveCombotSkillList;

            // 魔剑士分支类型
            EMagicSwordTowardType eMagicSwordType = GameManager.MagicSwordMgr.GetMagicSwordTypeByWeapon(owner.getRoleDataMini().Occupation, owner.getRoleDataMini().GoodsDataList);

            // 竞技场5连击技能列表,魔剑士需根据武器 判断 分支 [XSea 2015/5/19]
            fiveComboSkillList = JingJiChangConstants.getJingJiChangeFiveCombatSkillList(owner.getRoleDataMini().Occupation, eMagicSwordType);
        }
コード例 #8
0
        public static int[] GetJingJiChangeSkillList(GameClient client, int eOccupation, EMagicSwordTowardType eMagicSwordType)
        {
            List <int> ret = new List <int>();

            switch (eOccupation)
            {
            case 0:
                ret.AddRange(JingJiChangConstants.ZhanShiSkillList);
                break;

            case 1:
                ret.AddRange(JingJiChangConstants.FaShiSkillList);
                break;

            case 2:
                ret.AddRange(JingJiChangConstants.GongJianShouSkillList);
                break;

            case 3:
                switch (eMagicSwordType)
                {
                case EMagicSwordTowardType.EMST_Strength:
                    ret.AddRange(JingJiChangConstants.StrMagicSwordSkillList);
                    break;

                case EMagicSwordTowardType.EMST_Intelligence:
                    ret.AddRange(JingJiChangConstants.IntMagicSwordSkillList);
                    break;
                }
                break;

            case 5:
                ret.AddRange(JingJiChangConstants.SummonerSkillList);
                break;
            }
            ret.AddRange(ZuoQiManager.getInstance().GetZuoQiSkillList(client));
            return(ret.ToArray());
        }
コード例 #9
0
ファイル: AttackState.cs プロジェクト: songxiaopeng/mu_server
 private void selectSkill(out bool isFiveCombo)
 {
     this.skillId = -1;
     isFiveCombo  = false;
     if (null != this.owner.MonsterInfo.SkillIDs)
     {
         int nNextSkillID = Global.GetNextSkillID(this.prevSkillID);
         if (nNextSkillID > 0)
         {
             this.skillId     = nNextSkillID;
             this.prevSkillID = nNextSkillID;
         }
         else
         {
             int index = Global.GetRandomNumber(0, this.owner.MonsterInfo.SkillIDs.Length);
             for (int i = index; i < this.owner.MonsterInfo.SkillIDs.Length; i++)
             {
                 if (this.owner.MyMagicCoolDownMgr.SkillCoolDown(this.owner.MonsterInfo.SkillIDs[i]))
                 {
                     if (this.SkillNeedMagicVOk(this.owner.MonsterInfo.SkillIDs[i]))
                     {
                         this.skillId = this.owner.MonsterInfo.SkillIDs[i];
                         break;
                     }
                 }
             }
             if (this.skillId == -1)
             {
                 for (int i = index - 1; i >= 0; i--)
                 {
                     if (this.owner.MyMagicCoolDownMgr.SkillCoolDown(this.owner.MonsterInfo.SkillIDs[i]))
                     {
                         if (this.SkillNeedMagicVOk(this.owner.MonsterInfo.SkillIDs[i]))
                         {
                             this.skillId = this.owner.MonsterInfo.SkillIDs[i];
                         }
                     }
                 }
             }
             if (!this.isTryHighPrioritySkill)
             {
                 EMagicSwordTowardType eMagicSwordType = GameManager.MagicSwordMgr.GetMagicSwordTypeByWeapon(this.owner.getRoleDataMini().Occupation, this.owner.getRoleDataMini().GoodsDataList, null);
                 int nFirstSkill = JingJiChangConstants.GetJingJiChangeHighPrioritySkill(this.owner.getRoleDataMini().Occupation, eMagicSwordType);
                 if (nFirstSkill != -1)
                 {
                     if (this.owner.MyMagicCoolDownMgr.SkillCoolDown(nFirstSkill) && this.SkillNeedMagicVOk(nFirstSkill))
                     {
                         this.skillId = nFirstSkill;
                     }
                 }
                 this.isTryHighPrioritySkill = true;
             }
             this.prevSkillID = this.skillId;
             for (int i = 0; i < this.fiveComboSkillList.Length; i++)
             {
                 if (this.fiveComboSkillList[i] == this.skillId)
                 {
                     isFiveCombo = true;
                     break;
                 }
             }
         }
     }
 }
コード例 #10
0
 public void AutoMaigcSwordFirstAddPoint(GameClient client, EMagicSwordTowardType eType)
 {
     if (null == client)
     {
         LogManager.WriteLog(LogTypes.Error, string.Format("client不存在,服务器无法根据参数表配置第一次给魔剑士加点", new object[0]), null, true);
     }
     else if (this.IsMagicSword(client))
     {
         if (eType == EMagicSwordTowardType.EMST_Strength || eType == EMagicSwordTowardType.EMST_Intelligence)
         {
             int nRoleID = client.ClientData.RoleID;
             try
             {
                 string MagicSwordInitAttrStr;
                 if (eType == EMagicSwordTowardType.EMST_Strength)
                 {
                     MagicSwordInitAttrStr = GameManager.systemParamsList.GetParamValueByName("LiMJS");
                 }
                 else
                 {
                     MagicSwordInitAttrStr = GameManager.systemParamsList.GetParamValueByName("ZhiMJS");
                 }
                 string[] MagicSwordInitAttrArr = MagicSwordInitAttrStr.Split(new char[]
                 {
                     ','
                 });
                 if (MagicSwordInitAttrArr.Length != 4)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士读取初始加点失败,无法创建魔剑士, RoleID={0}", nRoleID), null, true);
                 }
                 else
                 {
                     int nPoint = 0;
                     for (int i = 0; i < MagicSwordInitAttrArr.Length; i++)
                     {
                         nPoint += int.Parse(MagicSwordInitAttrArr[i]);
                     }
                     int nTotal        = Global.GetRoleParamsInt32FromDB(client, "TotalPropPoint");
                     int nStrength     = Global.GetRoleParamsInt32FromDB(client, "PropStrength");
                     int nIntelligence = Global.GetRoleParamsInt32FromDB(client, "PropIntelligence");
                     int nDexterity    = Global.GetRoleParamsInt32FromDB(client, "PropDexterity");
                     int nConstitution = Global.GetRoleParamsInt32FromDB(client, "PropConstitution");
                     int nRemainPoint  = nTotal - nStrength - nIntelligence - nDexterity - nConstitution;
                     if (nRemainPoint < nPoint)
                     {
                         LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始加点不足,无法创建魔剑士, RoleID={0}", nRoleID), null, true);
                     }
                     else
                     {
                         client.ClientData.PropStrength += int.Parse(MagicSwordInitAttrArr[0]);
                         Global.SaveRoleParamsInt32ValueToDB(client, "PropStrength", client.ClientData.PropStrength, true);
                         client.ClientData.PropIntelligence += int.Parse(MagicSwordInitAttrArr[1]);
                         Global.SaveRoleParamsInt32ValueToDB(client, "PropIntelligence", client.ClientData.PropIntelligence, true);
                         client.ClientData.PropDexterity += int.Parse(MagicSwordInitAttrArr[2]);
                         Global.SaveRoleParamsInt32ValueToDB(client, "PropDexterity", client.ClientData.PropDexterity, true);
                         client.ClientData.PropConstitution += int.Parse(MagicSwordInitAttrArr[3]);
                         Global.SaveRoleParamsInt32ValueToDB(client, "PropConstitution", client.ClientData.PropConstitution, true);
                         client.ClientData.LifeV  = (int)RoleAlgorithm.GetMaxLifeV(client);
                         client.ClientData.MagicV = (int)RoleAlgorithm.GetMaxMagicV(client);
                         if (client.ClientData.CurrentLifeV > client.ClientData.LifeV)
                         {
                             client.ClientData.CurrentLifeV = client.ClientData.LifeV;
                         }
                         if (client.ClientData.CurrentMagicV > client.ClientData.MagicV)
                         {
                             client.ClientData.CurrentMagicV = client.ClientData.MagicV;
                         }
                         GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);
                         GameManager.ClientMgr.NotifySelfLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);
                     }
                 }
             }
             catch (Exception ex)
             {
                 DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false);
             }
         }
     }
 }
コード例 #11
0
        public EMagicSwordTowardType GetMagicSwordTypeByWeapon(int nOccu, List <GoodsData> list, GameClient client = null)
        {
            EMagicSwordTowardType result;

            lock (list)
            {
                EMagicSwordTowardType eType = EMagicSwordTowardType.EMST_Strength;
                if (!this.IsMagicSword(nOccu))
                {
                    result = EMagicSwordTowardType.EMST_Not;
                }
                else if (list == null || list.Count <= 0)
                {
                    result = eType;
                }
                else
                {
                    SystemXmlItem    systemGoods = null;
                    List <GoodsData> WeaponList  = new List <GoodsData>();
                    List <GoodsData> BaseWeap    = new List <GoodsData>();
                    List <GoodsData> RebornWeap  = new List <GoodsData>();
                    GoodsData        goodsData;
                    for (int i = 0; i < list.Count; i++)
                    {
                        goodsData = list[i];
                        if (null != goodsData)
                        {
                            int GoodId = goodsData.GoodsID;
                            if (RebornEquip.IsRebornEquipShengQi(GoodId) || RebornEquip.IsRebornEquipShengWu(GoodId))
                            {
                                RebornWeap.Add(goodsData);
                            }
                            else
                            {
                                BaseWeap.Add(goodsData);
                            }
                        }
                    }
                    if (client == null)
                    {
                        if (BaseWeap == null || BaseWeap.Count <= 0)
                        {
                            return(eType);
                        }
                        goodsData = RebornEquip.GetMagicWeaponGoods(BaseWeap, true);
                    }
                    else
                    {
                        SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode);
                        if (sceneType != SceneUIClasses.ChongShengMap)
                        {
                            if (client.ClientData.RebornShowEquip == 0)
                            {
                                goodsData = RebornEquip.GetMagicWeaponGoods(BaseWeap, true);
                            }
                            else
                            {
                                if (client.ClientData.PropStrength >= client.ClientData.PropIntelligence)
                                {
                                    return(EMagicSwordTowardType.EMST_Strength);
                                }
                                return(EMagicSwordTowardType.EMST_Intelligence);
                            }
                        }
                        else
                        {
                            if (client.ClientData.PropStrength >= client.ClientData.PropIntelligence)
                            {
                                return(EMagicSwordTowardType.EMST_Strength);
                            }
                            return(EMagicSwordTowardType.EMST_Intelligence);
                        }
                    }
                    if (null == goodsData)
                    {
                        result = eType;
                    }
                    else if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(goodsData.GoodsID, out systemGoods))
                    {
                        result = eType;
                    }
                    else
                    {
                        int nStrength     = systemGoods.GetIntValue("Strength", -1);
                        int nIntelligence = systemGoods.GetIntValue("Intelligence", -1);
                        eType  = ((nStrength >= nIntelligence) ? EMagicSwordTowardType.EMST_Strength : EMagicSwordTowardType.EMST_Intelligence);
                        result = eType;
                    }
                }
            }
            return(result);
        }