Beispiel #1
0
        public void RPC_GemCombine(int id, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            int count             = GemBag.GetItemCount(id);
            int need = CSCommon.ItemCommon.Instance.GemCombineNeedCount;

            if (count < need)
            {
                pkg.Write((sbyte)CSCommon.eRet_GemCombine.LessCount);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var getId  = id + 1;
            var getTpl = CSTable.ItemUtil.GetItem(getId);

            if (getTpl == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_GemCombine.NotCombine);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            int getCount  = count / need;
            int costCount = getCount * need;

            GemBag.RemoveItemCountByTid(id, costCount);
            CreateItemToBag(getId, getCount);
            pkg.Write((sbyte)CSCommon.eRet_GemCombine.Succeed);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #2
0
        public void RPC_OpenExploitBox(RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            if (this.PlayerData.RankData.ExploitBox <= 0)
            {
                pkg.Write((sbyte)-1);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }

            var boxId = CSCommon.RoleCommon.Instance.ExploitBoxId;
            var tpl   = CSTable.ItemUtil.GetItem(boxId) as CSTable.ItemPackageData;

            if (tpl == null)
            {
                return;
            }
            var          dropId = tpl.DropId;
            List <IdNum> items  = new List <IdNum>();
            int          mul    = GetDropItems(dropId, items);

            this.PlayerData.RankData.ExploitBox -= 1;
            pkg.Write((sbyte)1);
            pkg.Write(mul);
            pkg.Write(items.Count);
            foreach (var i in items)
            {
                pkg.Write(i.templateId);
                pkg.Write(i.stackNum);
            }
            pkg.DoReturnPlanes2Client(fwd);
            return;
        }
Beispiel #3
0
        public void RPC_DonateGold(int gold, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            if (_IsMoneyEnough(CSCommon.eCurrenceType.Gold, gold) == false)
            {
                retPkg.Write((sbyte)CSCommon.eRet_DonateGold.LessGold);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }

            RPC.PackageWriter pkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_DonateGold(pkg, PlayerData.RoleDetail.RoleId, gold);
            pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
            {
                if (isTimeOut)
                {
                    return;
                }

                sbyte success;
                _io.Read(out success);
                retPkg.Write(success);
                if (success == (sbyte)CSCommon.eRet_DonateGold.Succeed)
                {
                    int todaycontribute;
                    int contribute;
                    _io.Read(out todaycontribute);
                    _io.Read(out contribute);
                    retPkg.Write(todaycontribute);
                    retPkg.Write(contribute);
                    _ChangeMoney(CSCommon.eCurrenceType.Gold, CSCommon.Data.eMoneyChangeType.GuildContribute, gold);
                }
                retPkg.DoReturnPlanes2Client(fwd);
            };
        }
Beispiel #4
0
        public void RPC_CreateGuild(string GuildName, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            if (!_IsLevelEnough(CSCommon.GuildCommon.Instance.NeedRoleLevel))
            {
                retPkg.Write((sbyte)CSCommon.eRet_CreateGuild.LessLevel);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (!_IsMoneyEnough(CSCommon.GuildCommon.Instance.NeedCurrenceType, CSCommon.GuildCommon.Instance.NeedMoneyNum))
            {
                retPkg.Write((sbyte)CSCommon.eRet_CreateGuild.LessRmb);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }

            RPC.PackageWriter pkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_CreateGuild(pkg, PlayerData.RoleDetail.RoleId, GuildName);
            pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
            {
                if (isTimeOut)
                {
                    return;
                }

                SByte success;
                _io.Read(out success);
                retPkg.Write(success);
                if (success == (sbyte)CSCommon.eRet_CreateGuild.Succeed)
                {
                    _ChangeMoney(CSCommon.GuildCommon.Instance.NeedCurrenceType, CSCommon.Data.eMoneyChangeType.CreateGuild, -CSCommon.GuildCommon.Instance.NeedMoneyNum);
                }
                retPkg.DoReturnPlanes2Client(fwd);
            };
        }
Beispiel #5
0
 public void RPC_OneKeyGetItems(RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_OneKeyGetItems(pkg, PlayerData.RoleDetail.RoleId);
     pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
     {
         if (isTimeOut)
         {
             return;
         }
         RPC.PackageWriter             retPkg = new RPC.PackageWriter();
         List <CSCommon.Data.MailData> mails  = new List <CSCommon.Data.MailData>();
         int count = 0;
         _io.Read(out count);
         for (int i = 0; i < count; i++)
         {
             CSCommon.Data.MailData mail = new CSCommon.Data.MailData();
             _io.Read(mail);
             if (_GetMailItems(mail.StrItems) == false)
             {
                 retPkg.Write((sbyte)-1); //背包空间不足
                 retPkg.DoReturnPlanes2Client(fwd);
                 return;
             }
             _GetMailCurrencies(mail.StrCurrencies);
             //删除邮件
             RPC.PackageWriter delpkg = new RPC.PackageWriter();
             H_RPCRoot.smInstance.HGet_ComServer(delpkg).HGet_UserRoleManager(delpkg).RPC_DelMail(delpkg, mail.MailId);
             delpkg.DoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType);
         }
         retPkg.Write((sbyte)1);
         retPkg.DoReturnPlanes2Client(fwd);
     };
 }
Beispiel #6
0
        public void RPC_TakeOffFashion(ulong itemId, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var item = this.FashionBag.FindItemById(itemId);

            if (item == null || item.ItemData == null)
            {
                pkg.Write((sbyte)-1);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (item.ItemData.WearState == (byte)CSCommon.eBoolState.False)
            {
                pkg.Write((sbyte)-2);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (item.ItemTemplate == null)
            {
                pkg.Write((sbyte)-3);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var tType = (item.ItemTemplate as CSTable.ItemFashionData).FashionType;

            this.FashionBag.TakeOffFashionByType(tType);

            pkg.Write((sbyte)1);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #7
0
        public void RPC_InlayGem(UInt16 pos, int id, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var gem = this.GemBag.FindItemById(id);

            if (gem == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_InlayGem.NoGem);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (gem.ItemTemplate.ItemType != (int)CSCommon.eItemType.Gem)
            {
                pkg.Write((sbyte)CSCommon.eRet_InlayGem.NotGem);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            Item item = Item.DangerousCreateItemById(this, id, 1);

            if (this.EquipGemBag.AddItem2Position(pos, item) == false)
            {
                pkg.Write((sbyte)CSCommon.eRet_InlayGem.NoPos);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            this.GemBag.RemoveItemCountByTid(id, 1);
            pkg.Write((sbyte)CSCommon.eRet_InlayGem.Succeed);
            CalcChangeType(eValueType.Gem);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #8
0
        public void RPC_UseItem(byte bag, int itemId, int count, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            BagBase           opBag  = _GetBagWithType(bag);

            if (opBag == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_UseItem.BagNull);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }
            sbyte result = opBag.UseItem(itemId, count);

            opBag.Merge();
            retPkg.Write(result);

            if (opBag == this.Bag && result == (sbyte)CSCommon.eRet_UseItem.Succeed)
            {
                var endtime = this.Bag.UseItemSucceed(itemId);
                if (endtime == System.DateTime.MinValue)
                {
                    retPkg.Write((sbyte)-1);
                }
                else
                {
                    retPkg.Write((sbyte)1);
                    retPkg.Write(itemId);
                    retPkg.Write(endtime);
                }
            }
            retPkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #9
0
        public void RPC_GetPlayerInfo(ulong id, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            PlayerInstance    player = HostMap.FindPlayer(id);

            if (player == null)
            {
                retPkg.Write((sbyte)(-1));
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }
            retPkg.Write((sbyte)1);
            ////一级属性
            //retPkg.Write(player.FinalPoint.Power);
            //retPkg.Write(player.FinalPoint.Body);
            //retPkg.Write(player.FinalPoint.Dex);
            ////二级属性
            //retPkg.Write(player.mFinalRoleValue.Atk);
            //retPkg.Write(player.mFinalRoleValue.MaxHP);
            //retPkg.Write(player.mFinalRoleValue.MaxMP);
            //retPkg.Write(player.mFinalRoleValue.Hit);
            //retPkg.Write(player.mFinalRoleValue.Dodge);
            //retPkg.Write(player.mFinalRoleValue.Crit);
            //retPkg.Write(player.mFinalRoleValue.CritDef);
            //retPkg.Write(player.mFinalRoleValue.DeadlyHitRate);
            //retPkg.Write(player.mFinalRoleValue.Def[0]);
            //retPkg.Write(player.mFinalRoleValue.Def[1]);
            //retPkg.Write(player.mFinalRoleValue.Def[2]);
            //retPkg.Write(player.mFinalRoleValue.Def[3]);
            //retPkg.Write(player.mFinalRoleValue.Def[4]);
            //retPkg.Write(player.mFinalRoleValue.UpHurtRate);
            //retPkg.Write(player.mFinalRoleValue.DownHurtRate);
            //retPkg.Write(player.mFinalRoleValue.UnusualDefRate);

            retPkg.Write(player.FinalRoleValue.Power);
            retPkg.Write(player.FinalRoleValue.Body);
            retPkg.Write(player.FinalRoleValue.Dex);
            //二级属性
            retPkg.Write(player.FinalRoleValue.Atk);
            retPkg.Write(player.FinalRoleValue.MaxHP);
            retPkg.Write(player.FinalRoleValue.MaxMP);
            retPkg.Write(player.FinalRoleValue.Hit);
            retPkg.Write(player.FinalRoleValue.Dodge);
            retPkg.Write(player.FinalRoleValue.Crit);
            retPkg.Write(player.FinalRoleValue.CritDef);
            retPkg.Write(player.FinalRoleValue.DeadlyHitRate);
            retPkg.Write(player.FinalRoleValue.GetDef(eElemType.Gold));
            retPkg.Write(player.FinalRoleValue.GetDef(eElemType.Wood));
            retPkg.Write(player.FinalRoleValue.GetDef(eElemType.Water));
            retPkg.Write(player.FinalRoleValue.GetDef(eElemType.Fire));
            retPkg.Write(player.FinalRoleValue.GetDef(eElemType.Earth));
            retPkg.Write(player.FinalRoleValue.UpHurtRate);
            retPkg.Write(player.FinalRoleValue.DownHurtRate);
            retPkg.Write(player.FinalRoleValue.UnusualDefRate);
            retPkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #10
0
        public void RPC_SendGift(ulong roleId, int templateId, int count, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var itemtemplate         = CSTable.ItemUtil.GetItem(templateId) as CSTable.ItemGiftData;

            if (itemtemplate == null)
            {
                Log.Log.Social.Print("itemtemplate is null:{0}", templateId);
                retPkg.Write((sbyte)CSCommon.sRet_SendGift.NoGftTpl);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }

            if (itemtemplate.ItemType != (int)CSCommon.eItemType.Gift)
            {
                retPkg.Write((sbyte)CSCommon.sRet_SendGift.NotGiftType);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }

            if (CSCommon.SocialCommon.Instance.GiftList.Contains(templateId) == false)
            {
                retPkg.Write((sbyte)CSCommon.sRet_SendGift.ListNoGift);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }

            if (_IsMoneyEnough((CSCommon.eCurrenceType)itemtemplate.BuyCurrenceType, itemtemplate.PurchasePrice * count) == false)
            {
                retPkg.Write((sbyte)CSCommon.sRet_SendGift.LessMoney);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }
            int index    = CSCommon.SocialCommon.Instance.GiftList.IndexOf(templateId);
            int addvalue = itemtemplate.AddIntimacy * count;

            RPC.PackageWriter pkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_SendGift(pkg, this.PlayerData.RoleDetail.RoleId, roleId, index, count, addvalue);
            pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool bTimeOut)
            {
                RPC.PackageWriter retpkg = new RPC.PackageWriter();
                sbyte             result = -1;
                _io.Read(out result);
                if (result == (sbyte)CSCommon.sRet_SendGift.Succeed)
                {
                    _ChangeMoney((CSCommon.eCurrenceType)itemtemplate.BuyCurrenceType, CSCommon.Data.eMoneyChangeType.SendGift, -count);
                }
                retpkg.Write(result);
                retpkg.DoReturnPlanes2Client(fwd);
            };
        }
Beispiel #11
0
 public void RPC_AddRoleBasePoint(byte type, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter retPkg = new RPC.PackageWriter();
     if (this.PlayerData.RoleDetail.RemainPoint <= 0)
     {
         retPkg.Write((sbyte)-1);
         retPkg.DoReturnPlanes2Client(fwd);
         return;
     }
     retPkg.Write((sbyte)1);
     _AddBasePoint(type);
     this.PlayerData.RoleDetail.RemainPoint--;
     CalcAllValues();
     WriteRoleValueToClient(fwd, retPkg);
     retPkg.DoReturnPlanes2Client(fwd);
 }
Beispiel #12
0
 public void RPC_OpenShop(RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     pkg.Write((byte)CSCommon.eShopType.MaxType);
     for (byte type = (byte)CSCommon.eShopType.HotItem; type < (byte)CSCommon.eShopType.MaxType; type++)
     {
         var list = _GetShopItems((CSCommon.eShopType)type);
         pkg.Write(type);
         byte count = 0;
         if (list != null)
         {
             count = (byte)list.Count;
         }
         pkg.Write(count);
         foreach (var i in list)
         {
             pkg.Write(i.Id);
             pkg.Write((byte)i.Currencey);
             pkg.Write(i.Price);
             pkg.Write(i.Discount);
             int ishot = i.IsHot == true ? 1 : 0;
             pkg.Write((byte)ishot);
             pkg.Write(i.RmbIcon);
         }
     }
     pkg.DoReturnPlanes2Client(fwd);
     return;
 }
Beispiel #13
0
 public void RPC_GetRoleGirdByType(byte itemType, byte page, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_GetRoleGirdByType(pkg, PlayerData.RoleDetail.RoleId, itemType, page);
     pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
     {
         if (isTimeOut)
         {
             return;
         }
         RPC.PackageWriter retPkg = new RPC.PackageWriter();
         retPkg.SetSinglePkg();
         sbyte result;
         _io.Read(out result);
         retPkg.Write(result);
         if (result == (sbyte)1)
         {
             int count = 0;
             _io.Read(out count);
             retPkg.Write(count);
             for (int i = 0; i < count; i++)
             {
                 CSCommon.Data.ConsignGridData data = new CSCommon.Data.ConsignGridData();
                 _io.Read(data);
                 pkg.Write(data);
             }
         }
         retPkg.DoReturnPlanes2Client(fwd);
     };
 }
Beispiel #14
0
 public void RPC_GetMails(RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_GetMails(pkg, PlayerData.RoleDetail.RoleId);
     pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
     {
         if (isTimeOut)
         {
             return;
         }
         RPC.PackageWriter retPkg = new RPC.PackageWriter();
         retPkg.SetSinglePkg();
         List <CSCommon.Data.MailData> mails = new List <CSCommon.Data.MailData>();
         int count = 0;
         _io.Read(out count);
         retPkg.Write(count);
         for (int i = 0; i < count; i++)
         {
             CSCommon.Data.MailData mail = new CSCommon.Data.MailData();
             _io.Read(mail);
             retPkg.Write(mail);
         }
         retPkg.DoReturnPlanes2Client(fwd);
     };
 }
Beispiel #15
0
 public void RPC_GetTeamPlayers(RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_GetTeamPlayers(pkg, PlayerData.RoleDetail.RoleId);
     pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
     {
         if (isTimeOut)
         {
             return;
         }
         RPC.PackageWriter retPkg = new RPC.PackageWriter();
         retPkg.SetSinglePkg();
         sbyte result = _io.ReadSByte();
         retPkg.Write(result);
         if (result == (sbyte)CSCommon.eRet_Team.Succeed)
         {
             byte count = _io.ReadByte();
             retPkg.Write(count);
             for (byte i = 0; i < count; i++)
             {
                 RoleCom data = new RoleCom();
                 _io.Read(data);
                 retPkg.Write(data);
             }
         }
         retPkg.DoReturnPlanes2Client(fwd);
     };
 }
Beispiel #16
0
        public void RPC_GetAchieveReward(int id, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var achieve           = mRecordMgr.GetAchieve(id);

            if (!achieve.IsFinished())
            {
                //未完成
                pkg.Write((sbyte)CSCommon.eRet_GetAchieveReward.NoFinish);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var tpl = CSTable.ItemUtil.GetAchieve(id);

            if (tpl == null)
            {
                //id错误
                pkg.Write((sbyte)CSCommon.eRet_GetAchieveReward.IdError);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }

            if (tpl.atype == (int)CSCommon.eAchieveType.Achieve)
            {
                if (achieve.data.getReward == (byte)CSCommon.eBoolState.True)
                {
                    //已领取
                    pkg.Write((sbyte)CSCommon.eRet_GetAchieveReward.YetGet);
                    pkg.DoReturnPlanes2Client(fwd);
                    return;
                }

                var achievetpl = tpl as CSTable.AchieveTplData;
                GetReward(achievetpl.currencyReward, achievetpl.itemsReward);
            }
            else if (tpl.atype == (int)CSCommon.eAchieveType.AchieveName)
            {
                //启用称号
                mRecordMgr.UseAchieveName(id);
                var achieveNametpl = tpl as CSTable.AchieveNameData;
                this.PlayerData.RoleDetail.AchieveName = achieveNametpl.name;
            }

            achieve.data.getReward = (byte)CSCommon.eBoolState.True;
            pkg.Write((sbyte)CSCommon.eRet_GetAchieveReward.Succeed);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #17
0
        public void RPC_RemoveGem(UInt16 pos, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var gem = this.EquipGemBag.FindItemByPos(pos);

            if (gem == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveGem.NoGem);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (this.GemBag.GetEmptyCount() <= 0)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveGem.BagNoPos);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var itemcom = CSCommon.ItemCommon.Instance;

            if (itemcom == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveGem.NoItemCom);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
//             CSCommon.eCurrenceType type = itemcom.RemoveGemMoneyType;
//             int count = itemcom.RemoveGemMoney;
//             if (_IsMoneyEnough(type, count) == false)
//             {
//                 pkg.Write((sbyte)CSCommon.eRet_RemoveGem.LessMoney);
//                 pkg.DoReturnPlanes2Client(fwd);
//                 return;
//             }

            if (this.GemBag.AutoAddItem(gem) == false)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveGem.AddToBagFailed);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            this.EquipGemBag.RemoveItem(gem);
//            _ChangeMoney(type, CSCommon.Data.eMoneyChangeType.RemoveGem, -count);
            pkg.Write((sbyte)CSCommon.eRet_RemoveGem.Succeed);
            CalcChangeType(eValueType.Gem);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #18
0
        public void RPC_GetMartialInfo(byte type, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var build             = GetBuild((CSCommon.eBuildType)type);

            if (build == null)
            {
                Log.Log.Item.Info("GetMartialOutPut  Failed eBuildType : {0}", type);
                pkg.Write((sbyte)CSCommon.eRet_GetMartialInfo.NoBuild);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (build.Level < 1)
            {
                pkg.Write((sbyte)CSCommon.eRet_GetMartialInfo.NoOpen);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (build.OutPutInfo == null)
            {
                Log.Log.Item.Info("GetMartialOutPut  Failed OutPutInfo is null}");
                pkg.Write((sbyte)CSCommon.eRet_GetMartialInfo.NoOutPut);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            pkg.Write((sbyte)CSCommon.eRet_GetMartialInfo.Succeed);
            pkg.Write(build.Level);
            byte count = (byte)build.OutPutInfo.Count;//几种类型

            pkg.Write(count);
            foreach (var i in build.OutPutInfo)
            {
                byte  index        = (byte)i.Key;                           //类型
                int   num          = i.Value;                               //数量
                var   output       = mBuildOutPutManager.GetBuildOutPut(index);
                byte  total        = output.mOutCount;                      //总次数
                float uprate       = output.GetUpRate(System.DateTime.Now); //加成率
                float remainUpHour = output.mRemainUpHour;
                pkg.Write(index);
                pkg.Write(num);
                pkg.Write(total);
                pkg.Write(uprate);
                pkg.Write(remainUpHour);
            }
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #19
0
 public void RPC_BuyConsignItem(ulong itemId, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_GetConsignItem(pkg, PlayerData.RoleDetail.RoleId, itemId);
     pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
     {
         if (isTimeOut)
         {
             return;
         }
         RPC.PackageWriter retPkg = new RPC.PackageWriter();
         sbyte             result;
         _io.Read(out result);
         if ((CSCommon.eRet_BuyConsignItem)result == CSCommon.eRet_BuyConsignItem.Succeed)
         {
             int price = 0;
             _io.Read(out price);
             if (_IsMoneyEnough(CSCommon.eCurrenceType.Rmb, price) == false)
             {
                 retPkg.Write((sbyte)CSCommon.eRet_BuyConsignItem.LessMoney);
                 retPkg.DoReturnPlanes2Client(fwd);
                 return;
             }
             RPC.PackageWriter rpkg = new RPC.PackageWriter();
             H_RPCRoot.smInstance.HGet_ComServer(rpkg).HGet_UserRoleManager(rpkg).RPC_BuyConsignItem(rpkg, PlayerData.RoleDetail.RoleId, itemId);
             pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io2, bool isTimeOut2)
             {
                 _io2.Read(out result);
                 if ((CSCommon.eRet_BuyConsignItem)result == CSCommon.eRet_BuyConsignItem.Succeed)
                 {
                     _ChangeMoney(CSCommon.eCurrenceType.Rmb, CSCommon.Data.eMoneyChangeType.BuyConsignItem, -price);
                 }
                 retPkg.Write(result);
                 retPkg.DoReturnPlanes2Client(fwd);
                 return;
             };
         }
         else
         {
             retPkg.Write(result);
             retPkg.DoReturnPlanes2Client(fwd);
             return;
         }
     };
 }
Beispiel #20
0
        public void RPC_UpMartialLevel(byte type, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var build             = GetBuild((CSCommon.eBuildType)type);

            if (build == null)
            {
                Log.Log.Item.Info("UpMartialLevel GetBuild Failed eBuildType : {0}", type);
                pkg.Write((sbyte)CSCommon.eRet_UpMartialLevel.NoBuild);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            sbyte result = build.UpLevel();

            CreateOutPutToDict(build.OutPutInfo);
            pkg.Write(result);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #21
0
        public void RPC_TakeOffEquip(ulong equipId, RPC.RPCForwardInfo fwd)
        {
            return;

            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var equip             = this.EquipBag.FindItemById(equipId);

            if (equip == null)
            {
                pkg.Write((sbyte)-1);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            this.EquipBag.RemoveItem(equip);
            this.Bag.AutoAddItem(equip);
            pkg.Write((sbyte)1);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #22
0
        public void RPC_ConsignItem(ulong itemId, int stack, int price, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            if (CSCommon.ItemCommon.Instance == null)
            {
                Log.Log.Item.Print("RPC_ConsignItem,CSCommon.ItemCommon.Instance == null");
                retPkg.Write((sbyte)CSCommon.eRet_ConsignItem.LessTemp);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var rent        = CSCommon.ItemCommon.Instance.Rent;
            int needPayRent = stack * rent;

            if (_IsMoneyEnough(CSCommon.eCurrenceType.Gold, needPayRent) == false)
            {
                retPkg.Write((sbyte)CSCommon.eRet_ConsignItem.LessRent);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var item = this.Bag.FindItemById(itemId);

            if (item.StackNum < stack)
            {
                retPkg.Write((sbyte)CSCommon.eRet_ConsignItem.LessStack);
                retPkg.DoReturnPlanes2Client(fwd);
                return;
            }

            //通知从comserver已寄售背包里面创建寄售的物品
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_ConsignItem(pkg, PlayerData.RoleDetail.RoleId, item.ItemData.ItemTemlateId, stack, price);
            pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool isTimeOut)
            {
                sbyte result;
                _io.Read(out result);
                retPkg.Write(result);
                if (result == (sbyte)CSCommon.eRet_ConsignItem.Succeed)
                {
                    _ChangeMoney(CSCommon.eCurrenceType.Gold, CSCommon.Data.eMoneyChangeType.ConsignItem, -needPayRent);
                    this.Bag.RemoveItemCountById(itemId, stack);
                }
                retPkg.DoReturnPlanes2Client(fwd);
            };
        }
Beispiel #23
0
        public void RPC_SuggestCamp(RPC.RPCForwardInfo fwd)
        {
            byte succeed = 1;
            byte camp    = (byte)eCamp.Jing;

            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            retPkg.Write(succeed);
            retPkg.Write(camp);
            retPkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #24
0
        public void RPC_CastSpell(ulong targetId, int skillId, RPC.RPCForwardInfo fwd)
        {
            eSkillResult ret = eSkillResult.CastFailed;

            this.CastSpell(skillId, targetId, ref ret);
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            retPkg.Write((sbyte)ret);
            retPkg.Write(skillId);
            retPkg.Write(targetId);
            retPkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #25
0
 public void RPC_Visit(byte type, ulong otherId, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_Visit(pkg, type, this.PlayerData.RoleDetail.RoleId, otherId);
     pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, null).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool bTimeOut)
     {
         RPC.PackageWriter retPkg = new RPC.PackageWriter();
         sbyte             result = _io.ReadSByte();
         retPkg.Write(result);
         retPkg.DoReturnPlanes2Client(fwd);
     };
 }
Beispiel #26
0
        public void RPC_WearEquip(int itemId, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var item = this.Bag.FindItemById(itemId);

            if (item == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_WearEquip.NoItem);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var temp = CSTable.ItemUtil.GetItem(item.ItemData.ItemTemlateId);

            if (temp == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_WearEquip.NoTpl);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (temp.ItemType != (int)CSCommon.eItemType.Equip)
            {
                pkg.Write((sbyte)CSCommon.eRet_WearEquip.NotEquip);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var    etemp = temp as CSTable.ItemEquipData;
            UInt16 index = (UInt16)etemp.EquipType;
            var    equip = this.EquipBag[index];

            if (equip != null)
            {
                this.EquipBag.RemoveItem(equip);
                this.Bag.AutoAddItem(equip);
            }
            this.EquipBag.WearEquip(index, item);
            this.Bag.RemoveItem(item);
            CalcChangeType(eValueType.Equip);
            pkg.Write((sbyte)CSCommon.eRet_WearEquip.Succeed);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #27
0
        public void RPC_GetRewardTask(int npcId, int templateId, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var tpl = CSTable.StaticDataManager.TaskTpl[templateId];

            if (null == tpl)
            {
                return;
            }

            if (PlayerData.RoleDetail.MapSourceId != tpl.FinishMapId)
            {
                pkg.Write((sbyte)-1);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (npcId != tpl.FinishNpcId)
            {
                pkg.Write((sbyte)-2);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }

            if (mCurTask.TaskState != CSCommon.eTaskState.Finished)
            {
                pkg.Write((sbyte)-3);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }

            GetReward(tpl.CurrencyReward, tpl.ItemsReward);
            mCurTask.SetTaskState(CSCommon.eTaskState.Rewarded);
            if (mCurTask.UpdateNextTask())
            {
                AcceptTask();
            }
            pkg.Write((sbyte)1);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #28
0
        public void RPC_UpCheats(int skillId, byte costType, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var sk = SkillMgr.GetSkill(skillId);

            if (sk == null)
            {
                pkg.Write((sbyte)eRet_UpSkillLv.NotLearn);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            var sktpl = CSTable.SkillUtil.GetSkillTpl(skillId);

            if (sktpl == null)
            {
                pkg.Write((sbyte)eRet_UpSkillLv.NoSkill);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            //升级
            if (sk.Level >= PlayerData.RoleDetail.RoleLevel)
            {
                pkg.Write((sbyte)eRet_UpSkillLv.LessRoleLv);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            if (sk.Level >= sk.Data.maxLv)
            {
                pkg.Write((sbyte)eRet_UpSkillLv.MaxLv);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            //下级模板
            var sklvtpl = CSTable.SkillUtil.GetSkillLevelTpl(skillId, sk.Level + 1);

            if (sklvtpl == null)
            {
                pkg.Write((sbyte)eRet_UpSkillLv.NoSkillLvTpl);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            sbyte result = UpCheats(sklvtpl, costType);

            if (result != (sbyte)eRet_UpSkillLv.Succeed)
            {
                pkg.Write(result);
                pkg.DoReturnPlanes2Client(fwd);
                return;
            }
            sk.Init(sklvtpl.id, (byte)sklvtpl.level);
            sk.SetOwner(this);
            pkg.Write((sbyte)eRet_UpSkillLv.Succeed);
            pkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #29
0
        public void RPC_FetchBarrack(RPC.RPCForwardInfo fwd)
        {
            byte succeed        = 1;
            int  totalForce     = 50000;
            int  captiveNum     = 50000;
            int  efficiency     = 200;
            int  level          = 1;
            int  forceLevel     = 150;
            int  totalStationed = 100000;
            int  todayStationed = 10000;
            List <CSCommon.Data.CityForceData> cityData = new List <CityForceData>();

            for (int i = 1; i <= 1; ++i)
            {
                CityForceData data = new CityForceData();
                data.CityId     = i;
                data.TotalForce = i * 10000;
                data.MyForceNum = i * 1000;
                cityData.Add(data);
            }
            int stationExp     = 9999;
            int damageExp      = 8888;
            int damageExpTime  = 20;
            int damageItem     = 10;
            int damageItemTime = 5;
            int addForceTime   = 2;

            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            retPkg.Write(succeed);
            retPkg.Write(level);
            retPkg.Write(forceLevel);
            retPkg.Write(totalForce);
            retPkg.Write(captiveNum);
            retPkg.Write(efficiency);
            retPkg.Write(totalStationed);
            retPkg.Write(todayStationed);
            retPkg.Write((UInt16)cityData.Count);
            for (int i = 0; i < cityData.Count; ++i)
            {
                retPkg.Write(cityData[i].CityId);
                retPkg.Write(cityData[i].TotalForce);
                retPkg.Write(cityData[i].MyForceNum);
            }
            retPkg.Write(stationExp);
            retPkg.Write(damageExp);
            retPkg.Write(damageExpTime);
            retPkg.Write(damageItem);
            retPkg.Write(damageItemTime);
            retPkg.Write(addForceTime);
            retPkg.DoReturnPlanes2Client(fwd);
        }
Beispiel #30
0
        public void RPC_GetItemCdInfo(RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            Dictionary <int, ItemCoolDownTime> ItemCdList = CdManager.Instance.mItemCdList;

            retPkg.Write(ItemCdList.Count);
            foreach (var t in ItemCdList.Values)
            {
                retPkg.Write(t.Id);
                retPkg.Write(t.EndTime);
                retPkg.Write(t.Total);
            }
            retPkg.DoReturnPlanes2Client(fwd);
        }