Esempio n. 1
0
 public System.Object RPCGetMethordExecuter(int limitLevel, Iocp.NetConnection connect, int Index, RPCObject obj, PackageProxy pkg, RPCForwardInfo fwd)
 {
     if (mMethods[Index] == null)
     {
         System.Diagnostics.Debug.WriteLine("RPCGetMethordExecuter Indexer Over Ranged:" + Index);
         return(null);
     }
     if (limitLevel < mMethods[Index].LimitLevel)
     {
         //此处应该记录有人越权调用函数
         RPCPlanesServerSpecialRoot cb = RPCNetworkMgr.Instance.mPlanesServerSpecialRoot;
         if (cb == null)
         {
             Log.Log.Common.Print("发现有超越权限的函数调用({0})", mMethods[Index].mMethodName);
             System.Diagnostics.Debug.WriteLine("发现有超越权限的函数调用({0})", mMethods[Index].mMethodName);
         }
         else
         {
             System.String str = cb.GetPlayerInfoString(fwd);
             Log.Log.Common.Print("发现有超越权限的函数调用({0}:{1})", mMethods[Index].mMethodName, str);
             System.Diagnostics.Debug.WriteLine("发现有超越权限的函数调用({0}:{1})", mMethods[Index].mMethodName, str);
         }
         return(null);
     }
     return(mMethods[Index].Execute(connect, obj, pkg, fwd));
 }
Esempio n. 2
0
        public void RPC_CreateTeam(ulong roleId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.NoRole);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.TeamHeaderId != 0)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.RoleHasTeam);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (_CreateTeam(roleId) == false)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.NewTeamError);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (_AddTeam(role, roleId) == false)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.OverTeamCount);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            pkg.Write((sbyte)CSCommon.eRet_Team.Succeed);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 3
0
        public void RPC_GetRoleGirdByType(ulong roleId, byte itemType, byte page, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                pkg.Write((sbyte)-1);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            pkg.Write((sbyte)1);
            byte   pageNum = 5;
            int    start   = (page - 1) * pageNum;
            string strSQL  = "select * from ConsignGirdData where Type = " + itemType.ToString() + "limit start,pageNum";
            List <CSCommon.Data.ConsignGridData> datas = SelectGird(strSQL);
            int count = datas.Count;

            pkg.Write(count);
            for (int i = 0; i < count; i++)
            {
                pkg.Write(datas[i]);
            }
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 4
0
        public void RPC_LeaveGuild(ulong roleId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_LeaveGuild.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildId == 0 || role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_LeaveGuild.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost == (byte)CSCommon.eGuildPost.BangZhu)
            {
                retPkg.Write((sbyte)CSCommon.eRet_LeaveGuild.RoleIsBangZhu);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            retPkg.Write((sbyte)CSCommon.eRet_LeaveGuild.Succeed);
            LeaveGuild(role);
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 5
0
        public void RPC_DonateGold(ulong roleId, int gold, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_DonateGold.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_DonateGold.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            role.GuildInstance.GuildData.GuildGold += (ulong)gold;

            int contribute = (int)gold;//贡献换算公式未定

            AddRoleGuildContribute(role, contribute);
            retPkg.Write((sbyte)CSCommon.eRet_DonateGold.Succeed);
            retPkg.Write(role.RoleData.TodayGuildContribute);
            retPkg.Write(role.RoleData.GuildContribute);
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 6
0
        public UInt16 RegPlanesServer(ulong id, Iocp.NetConnection connect)
        {
            if (id == 0)
            {
                Log.Log.Server.Print("RegPlanesServer id is Empty");
            }

            ServerInfo si = connect.m_BindData as ServerInfo;

            si.Id = id;
            Iocp.TcpConnect tcpConnect = connect as Iocp.TcpConnect;
            si.Ip                   = tcpConnect.IpAddress;
            si.LinkNumber           = 0;
            mPlanesServers[connect] = si;

            Log.Log.Server.Print("Planes服务器{0}注册,{1}:{2}", si.Id, si.Ip, si.Port);

            foreach (var i in mGateServers)
            {
                //i.Value.Connect
                RPC.PackageWriter pkg = new RPC.PackageWriter();
                H_RPCRoot.smInstance.HGet_GateServer(pkg).NewPlanesServerStarted(pkg);
                pkg.DoCommand(i.Value.Connect, RPC.CommandTargetType.DefaultType);
            }
            return(si.Port);
        }
Esempio n. 7
0
        public void RPC_BuyConsignItem(ulong roleId, ulong itemId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_BuyConsignItem.NoRole);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var gird = GetGird(itemId);

            if (gird == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_BuyConsignItem.NoItem);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            string items = GetStr(gird.TemplateId, gird.StackNum);

            CreateMailAndSend(roleId, CSCommon.eMailFromType.BuyConsignSucceed, "", items);
            DB_DelGird(gird);
            pkg.Write((sbyte)CSCommon.eRet_BuyConsignItem.Succeed);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 8
0
        ServerInfo AllocServerPort(string ip, Iocp.NetConnection connect)
        {
            lock (this)
            {
                foreach (var i in mServerPorts)
                {
                    if (i.Connect == connect)
                    {
                        return(i);
                    }
                }

                foreach (var i in mServerPorts)
                {
                    if (i.Connect == null)
                    {
                        i.Ip         = ip;
                        i.Connect    = connect;
                        i.LinkNumber = 0;
                        return(i);
                    }
                }
                return(null);
            }
        }
Esempio n. 9
0
        public void RPC_RandRoleName(Byte sex, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg  = new RPC.PackageWriter();
            string            name = _RandRoleName(sex);

            pkg.Write(name);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 10
0
        public void RPC_GetOffPlayerData(ulong roleId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var getRole           = GetRoleRand();

            pkg.Write(getRole.RoleData);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 11
0
        public RPC.DataWriter RegPlanesServer(string ip, UInt16 port, ulong id, Iocp.NetConnection connect)
        {
            ServerFrame.NetEndPoint nep = new ServerFrame.NetEndPoint(ip, port);
            nep.Id      = id;
            nep.Connect = connect;

            PlanesServerInfo oldnep;

            if (mPlanesServers.TryGetValue(connect, out oldnep) == true)
            {
                mPlanesServers[connect].EndPoint = nep;
            }
            else
            {
                oldnep          = new PlanesServerInfo();
                oldnep.EndPoint = nep;
                mPlanesServers.Add(connect, oldnep);
            }

            Log.Log.Server.Print("yzb id = {0}", id);


            RPC.DataWriter lret = new RPC.DataWriter();

            //启动该planesserver对应的世界地图和国战地图
            AllMapManager.Instance.StartupWorldMap((int)id);

            //位面信息
            int count = this.PlanesMgr.Planes.Count;

            lret.Write(count);
            Log.Log.Server.Print("count = {0}", count);
            foreach (var i in this.PlanesMgr.Planes)
            {
                lret.Write(i.Value.PlanesId);
                lret.Write(i.Value.PlanesName);
            }

            count = 0;
            //将要启动的地图id返回给PlanesServer
            if (CSCommon.Data.CDbConfig.m_PlanesConfig.ContainsKey((int)id))
            {
                count = CSCommon.Data.CDbConfig.m_PlanesConfig[(int)id].ListMap.Count;
                lret.Write(count);
                Log.Log.Server.Print("map count = {0}", count);
                foreach (CSCommon.Data.CAreaMap lAreaMap in CSCommon.Data.CDbConfig.m_PlanesConfig[(int)id].ListMap)
                {
                    lret.Write(lAreaMap.Area);
                    lret.Write(lAreaMap.Map);
                }
            }
            else
            {
                lret.Write(count);
                Log.Log.Server.Print("map count 0 = {0}", count);
            }
            return(lret);
        }
Esempio n. 12
0
        public void RPC_InviteToGuild(ulong roleId, string tarName, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var targetRole = GetRole(tarName);

            if (targetRole == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.NoTargetRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.GuildInstance != null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.TargetRoleHasGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            if (role.RoleData.GuildPost <= (byte)CSCommon.eGuildPost.JingYing)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.RoleNoPower);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.PlanesConnect == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.TargetRoleNotInPlay);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance.GuildData.MemberNum >= CSCommon.GuildCommon.Instance.GuildLvUpList[role.GuildInstance.GuildData.Level - 1].MaxMemberNum)
            {
                retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.OverMaxNum);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            retPkg.Write((sbyte)CSCommon.eRet_InviteToGuild.Succeed);
            CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_Invite, role.RoleData.Name, targetRole.RoleData.RoleId);
            msg.ShowInfo = string.Format("玩家{0}邀请您加入{1}帮会", role.RoleData.Name, role.GuildInstance.GuildData.GuildName);
            SendMessageToOther(targetRole, msg);

            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 13
0
        public void SetGateLinkNumber(Iocp.NetConnection connect, int num)
        {
            ServerInfo serverInfo;

            if (mGateServers.TryGetValue(connect, out serverInfo) == true)
            {
                serverInfo.LinkNumber = num;
            }
        }
Esempio n. 14
0
        public void UpdatePlanesServerPlayerNumber(int num, Iocp.NetConnection connect)
        {
            PlanesServerInfo info;

            if (PlanesServers.TryGetValue(connect, out info))
            {
                info.PlayerNumber = num;
            }
        }
Esempio n. 15
0
        public void RPC_GetTopAndFriend(ulong roleId, ushort planesId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            TopList.Clear();
            FriendList.Clear();
            var role = this.GetRole(roleId);

            if (role == null)
            {
                Log.Log.Server.Print("RPC_GetTopAndFriend role is null , {0}", roleId);
                pkg.Write((sbyte)-1);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            pkg.Write((sbyte)1);
            InitVisitTimes(role);
            pkg.Write(role.RoleData.WorldVisitCount);
            pkg.Write(role.RoleData.FriendVisitCount);
            pkg.Write(role.RoleData.BuyVisitCount);
            pkg.Write(role.RoleData.ByVisitCount);
            List <RankData> rds = _GetFightTopPlayer(planesId);

            pkg.Write((byte)rds.Count);
            foreach (var i in rds)
            {
                pkg.Write(i.RoleId);
                pkg.Write(i.RoleName);
                if (role.VisitTopList.Contains(i.RoleId))
                {
                    pkg.Write((byte)CSCommon.eBoolState.True);
                }
                else
                {
                    pkg.Write((byte)CSCommon.eBoolState.False);
                }
                TopList.Add(i.RoleId);
            }
            UpdateSocialInfoList(CSCommon.eSocialType.Friend, role);
            pkg.Write((byte)role.mSocialInfoList.Count);
            foreach (var j in role.mSocialInfoList.Values)
            {
                pkg.Write(j.id);
                pkg.Write(j.name);
                if (role.VisitFriendList.Contains(j.id))
                {
                    pkg.Write((byte)CSCommon.eBoolState.True);
                }
                else
                {
                    pkg.Write((byte)CSCommon.eBoolState.False);
                }
                FriendList.Add(j.id);
            }
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 16
0
        public UInt16 RegPathFindServer(string ListenIp, ulong id, Iocp.NetConnection connect)
        {
            ServerInfo si = connect.m_BindData as ServerInfo;

            si.Id         = id;
            si.Ip         = ListenIp;
            si.LinkNumber = 0;

            PathFindServers[connect] = si;
            return(si.Port);
        }
Esempio n. 17
0
        public void SYS_ReloadSellerTemplate(UInt16 item, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
//             CSCommon.Data.Item.ItemSellerTemplateManager.Instance.LoadItem(item);
//
//             RPC.PackageWriter pkg = new RPC.PackageWriter();
//             H_RPCRoot.smInstance.HGet_PlanesServer(pkg).SYS_ReloadSellerTemplate(pkg, item);
//             foreach (var i in PlanesServers)
//             {
//                 pkg.DoCommand(i.Value.EndPoint.Connect, RPC.CommandTargetType.DefaultType);
//             }
        }
Esempio n. 18
0
 public void RPC_OneKeyDelMails(ulong roleId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     if (DB_DelMails(roleId) == false)
     {
         pkg.Write((sbyte)-1);
         pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
         return;
     }
     pkg.Write((sbyte)1);
     pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
 }
Esempio n. 19
0
        public UInt16 RegGateServer(string ipAddress, ulong id, Iocp.NetConnection connect)
        {
            ServerInfo si = connect.m_BindData as ServerInfo;

            si.Id                 = id;
            si.Ip                 = ipAddress;
            si.LinkNumber         = 0;
            mGateServers[connect] = si;

            Log.Log.Server.Print("Gate服务器{0}注册,{1}:{2}", si.Id, si.Ip, si.Port);
            return(si.Port);
        }
Esempio n. 20
0
        public void RPC_GetGuilds(ulong roleId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            retPkg.SetSinglePkg();
            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_GetGuilds.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildId == 0)//没有帮会,返回帮会列表信息
            {
                retPkg.Write((sbyte)CSCommon.eRet_GetGuilds.ReturnGuilds);
                List <CSCommon.Data.GuildCom> guilds = new List <CSCommon.Data.GuildCom>();
                foreach (var guild in GuildManager.Instance.Guilds)
                {
                    if (guild.Value.GuildData.PlanesId == role.RoleData.PlanesId && guild.Value.GuildData.Camp == role.RoleData.Camp)
                    {
                        guilds.Add(guild.Value.GuildData);
                    }
                }

                int count = guilds.Count;
                retPkg.Write(count);
                foreach (var i in guilds)
                {
                    retPkg.Write(i);
                }
            }
            else //有帮会,返回帮会成员信息
            {
                if (role.GuildInstance == null)
                {
                    Log.Log.Guild.Print("role.GuildInstance is null {0}", role.RoleData.GuildId);
                    retPkg.Write((sbyte)CSCommon.eRet_GetGuilds.NoGuild);
                    retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                    return;
                }
                else
                {
                    retPkg.Write((sbyte)CSCommon.eRet_GetGuilds.ReturnGuildMembers);
                    retPkg.Write(role.GuildInstance.GuildData);
                    retPkg.Write(role.GuildInstance.Members.Count);
                    foreach (var member in role.GuildInstance.Members)
                    {
                        retPkg.Write(member.Value.RoleData);
                    }
                }
            }
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 21
0
        public void RPC_OperateTeamAsk(ulong roleId, string otherName, byte operate, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.NoRole);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.TeamHeaderId != roleId)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.RoleIsNotHeader);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var other = GetRole(otherName);

            if (other == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_Team.NoOther);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (operate == (byte)CSCommon.eOperateAsk.Refuse)
            {
                var msg = CreateMessage(CSCommon.eMessageFrom.Team, CSCommon.eMessageType.Team_AskRefuse, role.RoleData.Name, other.RoleData.RoleId);
                msg.ShowInfo = string.Format("{0}拒绝了你的申请", role.RoleData.Name);
                SendMessageToOther(other, msg);
            }
            else if (operate == (byte)CSCommon.eOperateAsk.Accept)
            {
                if (other.TeamHeaderId != 0)
                {
                    pkg.Write((sbyte)CSCommon.eRet_Team.OtherHasTeam);
                    pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                    return;
                }

                if (_AddTeam(other, roleId) == false)
                {
                    pkg.Write((sbyte)CSCommon.eRet_Team.OverTeamCount);
                    pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                    return;
                }
                var msg = CreateMessage(CSCommon.eMessageFrom.Team, CSCommon.eMessageType.Team_AskAgree, role.RoleData.Name, other.RoleData.RoleId);
                msg.ShowInfo = string.Format("{0}同意了你的申请", role.RoleData.Name);
                SendMessageToOther(other, msg);
            }
            pkg.Write((sbyte)CSCommon.eRet_Team.Succeed);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 22
0
        public void RPC_OneKeyGetItems(ulong roleId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter             pkg   = new RPC.PackageWriter();
            List <CSCommon.Data.MailData> mails = GetMailsWithItems(roleId);

            pkg.Write(mails.Count);
            for (int i = 0; i < mails.Count; i++)
            {
                pkg.Write(mails[i]);
            }
            mails.Clear();
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 23
0
        public RPCWaitHandle WaitDoClient2PlanesPlayer(Iocp.NetConnection conn, float timeOut)
        {
            PkgType = PackageType.PKGT_C2P_Player_SendAndWait;
            if (RPCManager == null)
            {
                RPCManager = RPCNetworkMgr.Instance;
            }
            RPCWaitHandle handle = RPCManager.NewWaitHandleTimeOut(null, timeOut);

            SerialId = handle.CallID;
            SendBuffer(conn);
            return(handle);
        }
Esempio n. 24
0
        public void RPC_KickedOutGuild(ulong roleId, ulong targetId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();

            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var targetRole = GetRole(targetId);

            if (targetRole == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.NoTargetRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.TargetRoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost <= (byte)CSCommon.eGuildPost.JingYing)
            {
                retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.RoleNoPower);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost <= targetRole.RoleData.GuildPost)
            {
                retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.RolePostLowTarget);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            LeaveGuild(targetRole);
            //邮件形式
            CreateMailAndSend(targetId, CSCommon.eMailFromType.KickedOutGuild, role.GuildInstance.GuildData.GuildName);

            retPkg.Write((sbyte)CSCommon.eRet_KickedOutGuild.Succeed);
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
Esempio n. 25
0
 public void RPC_GetMailItems(ulong mailId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter      pkg  = new RPC.PackageWriter();
     CSCommon.Data.MailData mail = DB_GetMail(mailId);
     if (mail == null)
     {
         pkg.Write((sbyte)-1);
         pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
         return;
     }
     pkg.Write((sbyte)1);
     pkg.Write(mail);
     pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
 }
Esempio n. 26
0
        public void DoReturnCommand(Iocp.NetConnection conn, CommandTargetType target)
        {
            switch (target)
            {
            case CommandTargetType.DefaultType:
                PkgType = PackageType.PKGT_Return;
                break;

            case CommandTargetType.Planes:
                PkgType = PackageType.PKGT_C2P_Return;
                break;
            }
            SendBuffer(conn);
        }
Esempio n. 27
0
 public SByte RegLogServer(string ListenIp, UInt16 ListenPort, ulong id, Iocp.NetConnection connect)
 {
     if (mLogServer != null)
     {
         Iocp.TcpConnect conn = mLogServer.Connect as Iocp.TcpConnect;
         if (conn != null)
         {//Log服务器是唯一的,起来一个就要把另外一个踢下线
             conn.Disconnect();
         }
     }
     mLogServer         = new ServerFrame.NetEndPoint(ListenIp, ListenPort);
     mLogServer.Connect = connect;
     mLogServer.Id      = id;
     return(1);
 }
Esempio n. 28
0
 public void RPC_OpenMail(ulong mailId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter      pkg  = new RPC.PackageWriter();
     CSCommon.Data.MailData mail = DB_GetMail(mailId);
     if (mail == null)
     {
         pkg.Write((sbyte)-1);
         pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
         return;
     }
     mail.State = (byte)CSCommon.eMailState.Opened;
     DB_UpdateMail(mail);
     pkg.Write((sbyte)1);
     pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
 }
Esempio n. 29
0
 public void GetPlanesInfo(ushort planesId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
 {
     RPC.PackageWriter        retPkg = new RPC.PackageWriter();
     CSCommon.Data.PlanesData data;
     if (false == this.PlanesMgr.Planes.TryGetValue(planesId, out data))
     {
         retPkg.Write((SByte)(-1));
         retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
         return;
     }
     retPkg.Write((SByte)(1));
     retPkg.Write(data);
     retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
     return;
 }
Esempio n. 30
0
        public UInt16 RegComServer(string ListenIp, ulong id, Iocp.NetConnection connect)
        {
            ServerInfo si = connect.m_BindData as ServerInfo;

            si.Id         = id;
            si.Ip         = ListenIp;
            si.LinkNumber = 0;

            mComServer         = new ServerFrame.NetEndPoint(ListenIp, si.Port);
            mComServer.Connect = connect;
            mComServer.Id      = id;

            Log.Log.Server.Print("Com服务器{0}注册,{1}:{2}", id, ListenIp, si.Port);
            return(si.Port);
        }