示例#1
0
 public static void SendMsg2Client(PlayerInstance player, CSCommon.Data.Message msg)
 {
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     pkg.SetSinglePkg();
     Wuxia.H_RpcRoot.smInstance.RPC_ReceiveMsg(pkg, msg);
     pkg.DoCommandPlanes2Client(player.Planes2GateConnect, player.ClientLinkId);
 }
示例#2
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);
        }
示例#3
0
        public void RPC_OperateAddSocial(ulong roleId, string otherName, byte type, byte operate, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var role = this.GetRole(roleId);

            if (role == null)
            {
                Log.Log.Social.Print("role is null , {0}", roleId);
                pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.NoRole);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var other = this.GetRole(otherName);

            if (other == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.NoOther);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (roleId == other.RoleData.RoleId)
            {
                pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.RoleIsOther);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            CSCommon.eSocialType sType = _GetSocialTypeFromMsg((CSCommon.eMessageType)type);
            if (sType == CSCommon.eSocialType.None)
            {
                pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.TypeError); //类型错误
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.SocialManager.IsSocial(other.RoleData.RoleId, sType))
            {
                pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.IsSocial);  //已经是这种关系
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if ((CSCommon.eOperateAsk)operate == CSCommon.eOperateAsk.Accept)
            {
                role.SocialManager.AddSocial(other.RoleData.RoleId, (CSCommon.eSocialType)type);
                role.SocialManager.AddSocial(other.RoleData.RoleId, CSCommon.eSocialType.Friend);
                other.SocialManager.AddSocial(role.RoleData.RoleId, (CSCommon.eSocialType)type);
                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, CSCommon.eMessageType.Couple_Accept, role.RoleData.Name, other.RoleData.RoleId);
                msg.ShowInfo = string.Format("玩家{0}同意与你成为{1}关系", role.RoleData.Name, _GetStrSocial(sType));
                SendMessageToOther(other, msg);
            }
            else
            {
                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, CSCommon.eMessageType.Couple_Refuse, role.RoleData.Name, other.RoleData.RoleId);
                msg.ShowInfo = string.Format("玩家{0}拒绝与你成为{1}关系", role.RoleData.Name, _GetStrSocial(sType));
                SendMessageToOther(other, msg);
            }
            pkg.Write((sbyte)CSCommon.eRet_OperateAddSocial.Succeed);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#4
0
 public CSCommon.Data.Message CreateMessage(CSCommon.eMessageFrom from, CSCommon.eMessageType type, string sender, ulong targetId)
 {
     CSCommon.Data.Message msg = new CSCommon.Data.Message();
     msg.MessageId   = ServerFrame.Util.GenerateObjID(ServerFrame.GameObjectType.Message);
     msg.MessageType = (byte)type;
     msg.MessageFrom = (byte)from;
     msg.OwnerId     = targetId;
     msg.Sender      = sender;
     return(msg);
 }
示例#5
0
        public void RPC_SendPlayerMsg(ulong id, CSCommon.Data.Message msg)
        {
            var player = Planes.PlanesServerDataManager.Instance.FindPlayerInstance(id);

            if (player == null)
            {
                Log.Log.Guild.Print("RPC_SendPlayerMsg player is null");
                return;
            }
            Planes.PlayerInstance.SendMsg2Client(player, msg);
        }
示例#6
0
 public void SendMessageToOther(UserRole other, CSCommon.Data.Message msg)
 {
     if (other.PlanesConnect != null)
     {
         RPC.PackageWriter pkg = new RPC.PackageWriter();
         H_RPCRoot.smInstance.HGet_PlanesServer(pkg).RPC_SendPlayerMsg(pkg, other.RoleData.RoleId, msg);
         pkg.DoCommand(other.PlanesConnect, RPC.CommandTargetType.DefaultType);
     }
     else
     {
         DB_CreateMessage(msg);
     }
 }
示例#7
0
        public void RPC_RemoveSocial(ulong roleId, ulong otherId, byte type, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var role = this.GetRole(roleId);

            if (role == null)
            {
                Log.Log.Social.Print("role is null , {0}", roleId);
                pkg.Write((sbyte)CSCommon.eRet_RemoveSocial.NoRole);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var other = this.GetRole(otherId);

            if (other == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveSocial.NoOther);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            if (role.SocialManager.IsSocial(otherId, (CSCommon.eSocialType)type) == false)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveSocial.NotSocial);  //不是这种关系
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.SocialManager.RemoveSocial(otherId, (CSCommon.eSocialType)type) == false)
            {
                pkg.Write((sbyte)CSCommon.eRet_RemoveSocial.RemoveError);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (type == (byte)CSCommon.eSocialType.Friend && role.SocialManager.IsCouple(otherId))
            {
                //删除双方亲人关系
                role.SocialManager.RemoveCouple(otherId);
                other.SocialManager.RemoveCouple(roleId);
                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, CSCommon.eMessageType.Couple_Remove, role.RoleData.Name, other.RoleData.RoleId);
                msg.ShowInfo = string.Format("玩家{0}与你成为解除亲人关系", role.RoleData.Name);
                SendMessageToOther(other, msg);
            }
            pkg.Write((sbyte)CSCommon.eRet_RemoveSocial.Succeed);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#8
0
 public void RPC_SendPlayerMsg(RPC.PackageWriter pkg, System.UInt64 id, CSCommon.Data.Message msg)
 {
     pkg.Write(id);
     pkg.Write(msg);
     pkg.SetMethod(14);
 }
示例#9
0
        public void RPC_TransferGuildBangZhu(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_TransferGuildBangZhu.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var targetRole = GetRole(targetId);

            if (targetRole == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_TransferGuildBangZhu.NoTargetRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_TransferGuildBangZhu.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_TransferGuildBangZhu.TargetRoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost != (byte)CSCommon.eGuildPost.BangZhu)
            {
                retPkg.Write((sbyte)CSCommon.eRet_TransferGuildBangZhu.RoleIsNotBangZhu);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance.GuildData.GuildId != targetRole.GuildInstance.GuildData.GuildId)
            {
                retPkg.Write((sbyte)CSCommon.eRet_TransferGuildBangZhu.DifferentGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            role.RoleData.GuildPost       = (byte)CSCommon.eGuildPost.BangZhong;
            targetRole.RoleData.GuildPost = (byte)CSCommon.eGuildPost.BangZhu;
            role.GuildInstance.GuildData.PresidentName = targetRole.RoleData.Name;
            DB_SaveGuildCom(role.GuildInstance.GuildData);

            retPkg.Write((sbyte)CSCommon.eRet_TransferGuildBangZhu.Succeed);
            foreach (var i in role.GuildInstance.Members)
            {
                var member = GetRole(i.Key);

                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_TransferBangZhu, role.RoleData.Name, i.Key);
                msg.ShowInfo = string.Format("{0}已将帮主职位转让给了{1},请大家紧密团结在以{2}为新帮主的周围,共同创建美好明天!", role.RoleData.Name, targetRole.RoleData.Name, targetRole.RoleData.Name);
                SendMessageToOther(member, msg);
            }
            role.GuildInstance.UpdateMember(role);
            targetRole.GuildInstance.UpdateMember(targetRole);
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#10
0
        public void RPC_OperateInvite(ulong roleId, ulong targetId, byte operate, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

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

            if (targetRole == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateInvite.NoTargetRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance != null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateInvite.RoleHasGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateInvite.TargetRoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (operate == (byte)CSCommon.eOperateAsk.Refuse)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateInvite.Succeed);
                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_RefuseInvite, role.RoleData.Name, targetId);
                msg.ShowInfo = string.Format("玩家{0}拒绝了你的邀请", role.RoleData.Name);
                SendMessageToOther(targetRole, msg);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            else
            {
                if (targetRole.GuildInstance.GuildData.MemberNum >= CSCommon.GuildCommon.Instance.GuildLvUpList[targetRole.GuildInstance.GuildData.Level - 1].MaxMemberNum)
                {
                    retPkg.Write((sbyte)CSCommon.eRet_OperateInvite.OverMaxNum);
                    retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                    return;
                }
                retPkg.Write((sbyte)CSCommon.eRet_OperateInvite.Succeed);
                role.RoleData.GuildId   = targetRole.GuildInstance.GuildData.GuildId;
                role.RoleData.GuildPost = (byte)CSCommon.eGuildPost.BangZhong;
                role.GuildInstance      = targetRole.GuildInstance;
                role.GuildInstance.Members.Add(roleId, role);
                role.GuildInstance.GuildData.MemberNum = role.GuildInstance.Members.Count;

                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_AcceptInvite, role.RoleData.Name, targetId);
                msg.ShowInfo = string.Format("玩家{0}同意了你的邀请", role.RoleData.Name);
                SendMessageToOther(targetRole, msg);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
            }
        }
示例#11
0
        public void RPC_SetGuildPost(ulong roleId, ulong targetId, byte post, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

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

            if (targetRole == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.NoTargetRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.TargetRoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance.GuildData.GuildId != targetRole.GuildInstance.GuildData.GuildId)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.DifferentGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost <= (byte)CSCommon.eGuildPost.JingYing)//没有权限
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.RoleNoPower);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost <= targetRole.RoleData.GuildPost)//级别低于对方
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.RolePostLowTarget);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost <= post)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.RolePostLowSet);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.RoleData.GuildPost == post)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.TargetPostEqualSet);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            CSCommon.eMessageType msgType = CSCommon.eMessageType.Guild_SetBangZhong;
            byte maxnum = 0;

            if (post == (byte)CSCommon.eGuildPost.ZhangLao)
            {
                maxnum  = CSCommon.GuildCommon.Instance.MaxZhangLao;
                msgType = CSCommon.eMessageType.Guild_SetZhangLao;
            }
            else if (post == (byte)CSCommon.eGuildPost.TangZhu)
            {
                maxnum  = CSCommon.GuildCommon.Instance.MaxTangZhu;
                msgType = CSCommon.eMessageType.Guild_SetTangZhu;
            }
            else if (post == (byte)CSCommon.eGuildPost.JingYing)
            {
                maxnum  = CSCommon.GuildCommon.Instance.MaxJingYing;
                msgType = CSCommon.eMessageType.Guild_SetJingYing;
            }
            byte num = role.GuildInstance.GetNumByPost(post);

            if (num >= maxnum)
            {
                retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.OverMaxNum);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            retPkg.Write((sbyte)CSCommon.eRet_SetGuildPost.Succeed);

            targetRole.RoleData.GuildPost = post;
            CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Guild, msgType, role.RoleData.Name, targetId);
            msg.ShowInfo = string.Format("你的帮会职位被改为{0}", GetPostStr(post));
            SendMessageToOther(targetRole, msg);
            targetRole.GuildInstance.UpdateMember(targetRole);
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#12
0
        public void RPC_OperateGuildAsk(ulong roleId, ulong messageId, byte operate, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.RoleNoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.RoleData.GuildPost <= (byte)CSCommon.eGuildPost.JingYing)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.RoleNoPower);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            CSCommon.Data.Message msg = null;
            role.GuildInstance.Messages.TryGetValue(messageId, out msg);
            if (msg == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.YetOperate);//已审批
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var targetRole = GetRole(msg.Sender);

            if (targetRole == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.NoTargetRole);
                role.GuildInstance.Messages.Remove(messageId);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (targetRole.GuildInstance != null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.TargetRoleHasGuild);//已加入其他帮会
                role.GuildInstance.Messages.Remove(messageId);
                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_OperateGuildAsk.OverMaxNum);
                role.GuildInstance.Messages.Remove(messageId);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            retPkg.Write((sbyte)CSCommon.eRet_OperateGuildAsk.Succeed);
            role.GuildInstance.Messages.Remove(messageId);

            CSCommon.Data.Message operatemsg = null;
            if (operate == (byte)CSCommon.eOperateAsk.Accept)
            {
                role.GuildInstance.Members.Add(targetRole.RoleData.RoleId, targetRole);
                role.GuildInstance.GuildData.MemberNum = role.GuildInstance.Members.Count;
                targetRole.RoleData.GuildId            = role.GuildInstance.GuildData.GuildId;
                targetRole.RoleData.GuildPost          = (byte)CSCommon.eGuildPost.BangZhong;
                targetRole.GuildInstance = role.GuildInstance;
                operatemsg   = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_AcceptAsk, role.RoleData.Name, targetRole.RoleData.RoleId);
                msg.ShowInfo = string.Format("申请被接受");
            }
            else
            {
                operatemsg   = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_RefuseAsk, role.RoleData.Name, targetRole.RoleData.RoleId);
                msg.ShowInfo = string.Format("申请被拒绝");
            }
            if (targetRole.PlanesConnect != null)
            {
                RPC.PackageWriter pkg = new RPC.PackageWriter();
                H_RPCRoot.smInstance.HGet_PlanesServer(pkg).RPC_SendPlayerMsg(pkg, targetRole.RoleData.RoleId, operatemsg);
                pkg.DoCommand(targetRole.PlanesConnect, RPC.CommandTargetType.DefaultType);
            }
            else
            {
                DB_CreateMessage(operatemsg);
            }
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#13
0
        public void RPC_AskToGuild(ulong roleId, ulong guildId, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            var role = GetRole(roleId);

            if (role == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_AskToGuild.NoRole);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var guild = GuildManager.Instance.GetGuild(guildId);

            if (guild == null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_AskToGuild.NoGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.GuildInstance != null)
            {
                retPkg.Write((sbyte)CSCommon.eRet_AskToGuild.RoleHasGuild);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            int count = guild.GuildData.MemberNum;

            if (CSCommon.GuildCommon.Instance.GuildLvUpList.Count < guild.GuildData.Level)
            {
                retPkg.Write((sbyte)CSCommon.eRet_AskToGuild.OverMaxNum);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (count >= (int)CSCommon.GuildCommon.Instance.GuildLvUpList[guild.GuildData.Level - 1].MaxMemberNum)
            {
                retPkg.Write((sbyte)CSCommon.eRet_AskToGuild.OverMaxNum);
                retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            //生成消息
            CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Guild, CSCommon.eMessageType.Guild_Ask, role.RoleData.Name, guildId);
            msg.ShowInfo = string.Format("玩家{0}申请加入帮会", role.RoleData.Name);
            //发送消息
            bool isSend = false;

            foreach (var i in guild.Members)
            {
                var member = GetRole(i.Key);
                if (member.RoleData.GuildPost > (byte)CSCommon.eGuildPost.JingYing)
                {
                    if (member.PlanesConnect != null)
                    {
                        isSend = true;
                        RPC.PackageWriter pkg = new RPC.PackageWriter();
                        H_RPCRoot.smInstance.HGet_PlanesServer(pkg).RPC_SendPlayerMsg(pkg, i.Key, msg);
                        pkg.DoCommand(member.PlanesConnect, RPC.CommandTargetType.DefaultType);
                    }
                }
            }
            if (isSend)
            {
                guild.Messages.Add(msg.MessageId, msg);
            }
            //申请成功
            retPkg.Write((sbyte)CSCommon.eRet_AskToGuild.Succeed);
            retPkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#14
0
 public void RPC_ReceiveMsg(RPC.PackageWriter pkg, CSCommon.Data.Message msg)
 {
     pkg.Write(msg);
     pkg.SetMethod(15);
 }
示例#15
0
        public void RPC_AddSocial(ulong roleId, string otherName, byte type, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            pkg.SetSinglePkg();
            var role = this.GetRole(roleId);

            if (role == null)
            {
                Log.Log.Social.Print("role is null , {0}", roleId);
                pkg.Write((sbyte)CSCommon.eRet_AddSocial.NoRole);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            var other = this.GetRole(otherName);

            if (other == null)
            {
                pkg.Write((sbyte)CSCommon.eRet_AddSocial.NoOther);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (roleId == other.RoleData.RoleId)
            {
                pkg.Write((sbyte)CSCommon.eRet_AddSocial.RoleIsOther);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.SocialManager.IsSocial(other.RoleData.RoleId, (CSCommon.eSocialType)type))
            {
                pkg.Write((sbyte)CSCommon.eRet_AddSocial.IsSocial);  //已经是这种关系
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }
            if (role.SocialManager.IsCoupleType((CSCommon.eSocialType)type))
            {
                if (false == role.SocialManager.IsSocial(other.RoleData.RoleId, CSCommon.eSocialType.Friend))
                {
                    pkg.Write((sbyte)CSCommon.eRet_AddSocial.NotFriend);//不是好友
                    pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                    return;
                }
                //发送邀请
                CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, _GetSocialMsgType((CSCommon.eSocialType)type), role.RoleData.Name, other.RoleData.RoleId);
                msg.ShowInfo = string.Format("玩家{0}请求与你成为{1}关系", role.RoleData.Name, _GetStrSocial((CSCommon.eSocialType)type));
                SendMessageToOther(other, msg);
                pkg.Write((sbyte)CSCommon.eRet_AddSocial.AskSucceed);
            }
            else
            {
                CSCommon.Data.SocialData sd = role.SocialManager.AddSocial(other.RoleData.RoleId, (CSCommon.eSocialType)type);
                if (sd == null)
                {
                    pkg.Write((sbyte)CSCommon.eRet_AddSocial.IsSocial);   //已经是这种关系
                    pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                    return;
                }
                var info = CreateSocialRoleInfo(sd, other);
                pkg.Write((sbyte)CSCommon.eRet_AddSocial.AddSucceed);
                pkg.Write(info);
                pkg.Write(sd);

                if ((CSCommon.eSocialType)type == CSCommon.eSocialType.Friend)
                {
                    //发送消息
                    CSCommon.Data.Message msg = CreateMessage(CSCommon.eMessageFrom.Social, _GetSocialMsgType((CSCommon.eSocialType)type), role.RoleData.Name, other.RoleData.RoleId);
                    msg.ShowInfo = string.Format("玩家{0}把你加为好友", role.RoleData.Name);
                    SendMessageToOther(other, msg);
                }
            }
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
示例#16
0
        // 生成代码
        private void button4_Click(object sender, EventArgs e)
        {
            bool bIsClient = this.textBox_Callee.Text == Config.Instance.CurProjectConfig.ClientCallee;

            if (System.IO.File.Exists(this.textBox_Callee.Text))
            {
                System.IO.StreamWriter sw = new System.IO.StreamWriter(this.textBox_Callee.Text);
                if (sw != null)
                {
                    if (bIsClient)
                    {
                        sw.Write(this.textBoxCallee.Text.Replace("SlimDX", "UnityEngine"));
                    }
                    else
                    {
                        sw.Write(this.textBoxCallee.Text);
                    }
                    sw.Close();
                }
            }

            if (System.IO.File.Exists(this.textBox_Caller.Text))
            {
                System.IO.StreamWriter sw = new System.IO.StreamWriter(this.textBox_Caller.Text);
                if (sw != null)
                {
                    if (bIsClient)
                    {
                        sw.Write(this.textBoxCaller.Text.Replace("SlimDX", "UnityEngine"));
                    }
                    else
                    {
                        sw.Write(this.textBoxCaller.Text);
                    }
                    sw.Close();
                }
            }

            if (bIsClient)
            {
                if (System.IO.File.Exists(Config.Instance.CurProjectConfig.ServCppCaller))
                {
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(Config.Instance.CurProjectConfig.ServCppCaller);
                    if (sw != null)
                    {
                        sw.Write(this.textBoxCaller.Text.Replace("UnityEngine", "SlimDX"));
                        sw.Close();
                    }
                }
            }
            else
            {
                if (System.IO.File.Exists(Config.Instance.CurProjectConfig.ClientServCaller))
                {
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(Config.Instance.CurProjectConfig.ClientServCaller);
                    if (sw != null)
                    {
                        sw.Write(ServCallerToClient.Replace("SlimDX", "UnityEngine"));
                        sw.Close();
                    }
                }
            }

            //====================== 客户端同步服务器的类结构 ======================

            string outStruct = "";

            //GetCppStructureDefine只发送基础属性 byte[] x = new byte[3], list<int> y = new list<int>();类似属性都将不发送
            outStruct += new CSCommon.Data.RoleInfo().GetCppStructureDefine();
            outStruct += new CSCommon.Data.NPCData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.RoleDetail().GetCppStructureDefine();
            outStruct += new CSCommon.Data.RoleSyncInfo().GetCppStructureDefine();
            outStruct += new CSCommon.Data.ItemData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.SocialData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.SocialRoleInfo().GetCppStructureDefine();
            outStruct += new CSCommon.Data.GiftData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.TaskData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.MailData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.GuildCom().GetCppStructureDefine();
            outStruct += new CSCommon.Data.RoleCom().GetCppStructureDefine();
            outStruct += new CSCommon.Data.Message().GetCppStructureDefine();
            outStruct += new CSCommon.Data.SkillData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.MartialData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.AchieveData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.AttrStruct().GetCppStructureDefine();
            outStruct += new CSCommon.Data.CityForceData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.EfficiencyData().GetCppStructureDefine();
            outStruct += new CSCommon.Data.CampForceData().GetCppStructureDefine();
            //===================================================================

            if (System.IO.File.Exists(Config.Instance.CurProjectConfig.ClientHeader))
            {
                System.IO.StreamWriter sw = new System.IO.StreamWriter(Config.Instance.CurProjectConfig.ClientHeader);
                if (sw != null)
                {
                    sw.Write(outStruct);
                    sw.Close();
                }
            }
        }