コード例 #1
0
        public void RPC_Whisper(string targetName, string msg, RPC.DataReader hyperlink, RPC.RPCForwardInfo fwd)
        {
            sbyte success = 0;

            RPC.DataWriter data = new RPC.DataWriter();
            if (hyperlink != null)
            {
                hyperlink.Read(out success);
                data.Write(success);
                if (success == (sbyte)1)//物品
                {
                    CSCommon.Data.ItemData item = new CSCommon.Data.ItemData();
                    hyperlink.Read(item, true);
                    data.Write(item, true);
                }
            }
            msg = CheckMaskWord(msg);
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_SayToRole(pkg, this.Id, targetName, msg, data);
            pkg.WaitDoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType, new System.Diagnostics.StackTrace(1, true)).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool bTimeOut)
            {
                sbyte result = -1;
                _io.Read(out result);
                if (result < 0)
                {
                    SendTalkMsg2Client(this, (sbyte)CSCommon.eSayChannel.WhisperChannel, "", "无效发送对象", new RPC.DataWriter());
                }
                else
                {
                    SendTalkMsg2Client(this, (sbyte)CSCommon.eSayChannel.WhisperChannel, this.RoleName, msg, data);
                }
            };
        }
コード例 #2
0
ファイル: WorldManager.cs プロジェクト: 372285834/GServer
        public void DeserializeArms(byte[] buffer)
        {
            HoldPoints.Clear();

            RPC.DataReader dr    = new RPC.DataReader(buffer, 0, buffer.Length, buffer.Length);
            var            count = dr.ReadByte();

            for (int i = 0; i < count; i++)
            {
                var hold = new HoldPoint();
                HoldPoints.Add(hold);
                hold.ArmsCount = dr.ReadUInt32();
                hold.Camp      = (CSCommon.eCamp)dr.ReadByte();
            }
            count = dr.ReadByte();
            for (int i = 0; i < count; i++)
            {
                var val = dr.ReadUInt64();
                if (i < Defender.Length)
                {
                    Defender[i] = val;
                }
            }
            count = dr.ReadByte();
            for (int i = 0; i < count; i++)
            {
                var val = dr.ReadUInt32();
                if (i < AdvanceArms.Length)
                {
                    AdvanceArms[i] = val;
                }
            }
        }
コード例 #3
0
        public void RPC_UpdateRoleComValue(ulong roleId, string name, RPC.DataReader value)
        {
            var role = GetRole(roleId);

            if (role == null)
            {
                return;
            }
            switch (name)
            {
            case "RoleLevel":
            {
                role.RoleData.Level = value.ReadUInt16();
            }
            break;

            case "Camp":
            {
                role.RoleData.Camp = value.ReadByte();
            }
            break;

            case "Profession":
            {
                role.RoleData.Profession = value.ReadByte();
            }
            break;

            case "PlanesId":
            {
                role.RoleData.PlanesId = value.ReadUInt16();
            }
            break;
            }
        }
コード例 #4
0
ファイル: RoleValue.cs プロジェクト: 372285834/GServer
 public void Deserizle(RPC.DataReader dr)
 {
     for (var i = eElemType.Gold; i < eElemType.MAX; i++)
     {
         SetSecondAttrBase(eValueType.Image, CommonUtil.ElemTypeTranslate(i), (int)dr.ReadSingle());
     }
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.Def_All, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.MaxHPRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.MaxHP, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.MaxMP, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.Atk, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.Crit, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.CritRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.CritDef, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.CritDefRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.DeadlyHit, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.DeadlyHitRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.Hit, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.Dodge, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.UpHurt, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.DownHurt, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.UnusualDefRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.Block, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.BlockRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.HPRecover, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.MPRecover, dr.ReadInt32());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.UpExpRate, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.MoveSpeed, (int)dr.ReadSingle());
     SetSecondAttrBase(eValueType.Image, eSkillAttrIndex.DamageReflect, (int)dr.ReadSingle());
 }
コード例 #5
0
 public void RPC_Say(sbyte channel, string msg, RPC.DataReader hyperlink, RPC.RPCForwardInfo fwd)
 {
     msg = CheckMaskWord(msg);
     RPC.DataWriter data = new RPC.DataWriter();
     data.Write(hyperlink.mHandle);
     RPC.PackageWriter pkg = new RPC.PackageWriter();
     SayToComServer(channel, msg, data);
 }
コード例 #6
0
ファイル: Role_Chat.cs プロジェクト: 372285834/GServer
        public void RPC_SayToRole(ulong roleId, string tarName, string msg, RPC.DataReader hyperlink, Iocp.NetConnection connect, RPC.RPCForwardInfo fwd)
        {
            sbyte success = 0;

            RPC.DataWriter data = new RPC.DataWriter();
            if (hyperlink != null)
            {
                hyperlink.Read(out success);
                data.Write(success);
                if (success == (sbyte)1)//物品
                {
                    CSCommon.Data.ItemData item = new CSCommon.Data.ItemData();
                    hyperlink.Read(item, true);
                    data.Write(item, true);
                }
            }
            RPC.PackageWriter pkg = new RPC.PackageWriter();
            var tarRole           = GetRole(tarName);

            if (tarRole == null)
            {
                pkg.Write((sbyte)-1);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            if (tarRole.PlanesConnect == null)
            {
                pkg.Write((sbyte)-2);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            var role = GetRole(roleId);

            if (role == null)
            {
                Log.Log.Common.Print("RPC_SayToRole role is null,{0}", roleId);
                pkg.Write((sbyte)-3);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            if (tarRole.RoleData.RoleId == roleId)
            {
                pkg.Write((sbyte)-4);
                pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
                return;
            }

            RPC.PackageWriter retPkg = new RPC.PackageWriter();
            H_RPCRoot.smInstance.HGet_PlanesServer(retPkg).RPC_DSTalkMsg(retPkg, tarRole.RoleData.PlanesId, role.RoleData.Name,
                                                                         (sbyte)CSCommon.eSayChannel.WhisperChannel, tarRole.RoleData.RoleId, msg, data);
            retPkg.DoCommand(tarRole.PlanesConnect, RPC.CommandTargetType.DefaultType);

            pkg.Write((sbyte)1);
            pkg.DoReturnCommand2(connect, fwd.ReturnSerialId);
        }
コード例 #7
0
ファイル: Player_Data.cs プロジェクト: 372285834/GServer
        public void Deserizle(CSCommon.Data.RoleCom rc)
        {
            var buffer = rc.FinalValue;

            if (buffer == null || buffer.Length <= 0)
            {
                return;
            }
            RPC.DataReader dr = new RPC.DataReader(buffer, 0, buffer.Length, buffer.Length);
            value.Deserizle(dr);
            WeapFacdeid = dr.ReadInt32();
            RPC.IAutoSaveAndLoad.DaraReadList <CSCommon.Data.SkillData>(skills, dr, false);
        }
コード例 #8
0
 public override void DataRead(RPC.DataReader pkg, bool bToClient)
 {
     mRoleDetail.DataRead(pkg, bToClient);
     DaraReadList <ItemData>(mBagItems, pkg, bToClient);
     DaraReadList <ItemData>(mEquipedItems, pkg, bToClient);
     DaraReadList <ItemData>(mEquipGemItems, pkg, bToClient);
     DaraReadList <ItemData>(mGemItems, pkg, bToClient);
     DaraReadList <ItemData>(mFashionItems, pkg, bToClient);
     mTaskData.DataRead(pkg, bToClient);
     mAchieveData.DataRead(pkg, bToClient);
     DaraReadList <SkillData>(mSkillDatas, pkg, bToClient);
     mMartialData.DataRead(pkg, bToClient);
     mRankData.DataRead(pkg, bToClient);
 }
コード例 #9
0
ファイル: IAutoSaveAndLoad.cs プロジェクト: 372285834/GServer
        public static void DaraReadList <T>(List <T> list, RPC.DataReader pkg, bool bToClient)
            where T : RPC.IAutoSaveAndLoad, new()
        {
            UInt16 count;

            pkg.Read(out count);
            list.Clear();
            for (int i = 0; i < count; i++)
            {
                RPC.DataReader idr;
                pkg.Read(out idr);
                T iv = new T();
                iv.DataRead(idr, bToClient);
                list.Add(iv);
            }
        }
コード例 #10
0
ファイル: RecordManager.cs プロジェクト: 372285834/GServer
        public void CopyUnSerialize(byte[] buffer)
        {
            CopyList.Clear();
            if (buffer == null || buffer.Length <= 0)
            {
                return;
            }
            RPC.DataReader dr    = new RPC.DataReader(buffer, 0, buffer.Length, buffer.Length);
            int            count = dr.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                int id = dr.ReadInt32();
                CopyList.Add(id);
            }
        }
コード例 #11
0
ファイル: IPlanesServer.cs プロジェクト: 372285834/GServer
        public void RPC_SendPlayerTeamInfo(ulong id, RPC.DataReader dr)
        {
            var player = Planes.PlanesServerDataManager.Instance.FindPlayerInstance(id);

            if (player == null)
            {
                Log.Log.Common.Print("RPC_SendPlayerTeamInfo player is null");
                return;
            }
            List <CSCommon.Data.RoleCom> infos = new List <CSCommon.Data.RoleCom>();

            RPC.IAutoSaveAndLoad.DaraReadList <CSCommon.Data.RoleCom>(infos, dr, false);

            RPC.DataWriter dw = new RPC.DataWriter();
            RPC.IAutoSaveAndLoad.DaraWriteList <CSCommon.Data.RoleCom>(infos, dw, true);
            Planes.PlayerInstance.SendTeam2Client(player, dw);
        }
コード例 #12
0
ファイル: RecordManager.cs プロジェクト: 372285834/GServer
        public void AchieveUnSerialize(byte[] buffer)
        {
            AcceptAchieveDict.Clear();
            if (buffer == null || buffer.Length <= 0)
            {
                return;
            }
            RPC.DataReader dr    = new RPC.DataReader(buffer, 0, buffer.Length, buffer.Length);
            int            count = dr.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                AcceptAchieveData data = new AcceptAchieveData();
                data.id                    = dr.ReadInt32();
                data.targetNum             = dr.ReadInt32();
                data.getReward             = dr.ReadByte();
                AcceptAchieveDict[data.id] = data;
            }
        }
コード例 #13
0
ファイル: Role_Chat.cs プロジェクト: 372285834/GServer
        public void RPC_Say(ulong roleId, sbyte channel, string msg, RPC.DataReader hyperlink, RPC.RPCForwardInfo fwd)
        {
            RPC.DataWriter data = new RPC.DataWriter();
            var            link = hyperlink.ReadDataReader();

            data.Write(link.mHandle);
            var role = GetRole(roleId);

            if (role == null)
            {
                return;
            }

            switch ((CSCommon.eSayChannel)channel)
            {
            case CSCommon.eSayChannel.WorldChannel:
            case CSCommon.eSayChannel.SystemChannel:
                SayToWorld(role, channel, msg, data);
                break;

            case CSCommon.eSayChannel.CampChannel:
                if (!SayToCamp(role, channel, msg, data))
                {
                    SayError(role, channel, "未加入国家", new RPC.DataWriter());
                }
                break;

            case CSCommon.eSayChannel.GuildChannel:
                if (!SayToGuild(role, channel, msg, data))
                {
                    SayError(role, channel, "未加入帮派", new RPC.DataWriter());
                }
                break;

            case CSCommon.eSayChannel.TeamChannel:
                if (!SayToTeam(role, channel, msg, data))
                {
                    SayError(role, channel, "未加入队伍", new RPC.DataWriter());
                }
                break;
            }
        }
コード例 #14
0
        //--------------------------------------数据存取---------------------------------------------------------

        //初始化数据库数据
        public void MartialUnSerialize(PlayerInstance role, byte[] buffer)
        {
            mRole = role;
            if (buffer == null || buffer.Length <= 0)
            {
                return;
            }
            RPC.DataReader dr    = new RPC.DataReader(buffer, 0, buffer.Length, buffer.Length);
            byte           count = dr.ReadByte();

            for (byte i = 0; i < count; i++)
            {
                byte        type   = dr.ReadByte();
                BuildOutPut output = new BuildOutPut(type);
                output.mStartTime      = dr.ReadDateTime();
                output.mOutCount       = dr.ReadByte();
                output.mUpOutIndex     = dr.ReadSByte();
                output.mUpStartTime    = dr.ReadDateTime();
                output.mOutPutTotalNum = dr.ReadInt32();
                AddOutPut(output, false);
            }
            InitOutData();
        }
コード例 #15
0
ファイル: Role_Rank.cs プロジェクト: 372285834/GServer
        public void RPC_UpdateRankDataValue(ulong roleId, string name, RPC.DataReader value)
        {
            RankData rank = GetRank(roleId);

            if (rank == null)
            {
                return;
            }
            switch (name)
            {
            case "RoleLevel":
                rank.Level = value.ReadUInt16();
                break;

            case "Fighting":
                rank.Fighting = value.ReadInt32();
                break;

            case "Exploit":
                rank.Exploit = value.ReadInt32();
                break;

            case "ExploitBox":
                rank.ExploitBox = value.ReadByte();
                break;

            case "KillEnemy":
                rank.KillEnemy = value.ReadInt32();
                break;

            case "Challenge":
                rank.Challenge = value.ReadInt32();
                break;
            }
            UPdateRankData(rank);
        }
コード例 #16
0
        //初始化数据库数据
        public void VisitDataUnSerialize()
        {
            byte[] buffer = RoleData.VisitPlayers;
            VisitTopList.Clear();
            VisitFriendList.Clear();
            if (buffer == null || buffer.Length <= 0)
            {
                return;
            }
            RPC.DataReader dr    = new RPC.DataReader(buffer, 0, buffer.Length, buffer.Length);
            byte           count = dr.ReadByte();

            for (byte i = 0; i < count; i++)
            {
                ulong id = dr.ReadUInt64();
                VisitTopList.Add(id);
            }
            count = dr.ReadByte();
            for (byte i = 0; i < count; i++)
            {
                ulong id = dr.ReadUInt64();
                VisitFriendList.Add(id);
            }
        }
コード例 #17
0
ファイル: IPlanesServer.cs プロジェクト: 372285834/GServer
        public void RPC_DSTalkMsg(ulong planesId, string sender, sbyte channel, ulong targetId, string msg, RPC.DataReader hyperlink)
        {
            RPC.DataWriter data = new RPC.DataWriter();
            var            link = hyperlink.ReadDataReader();

            data.Write(link.mHandle);
            var player = Planes.PlanesServerDataManager.Instance.FindPlayerInstance(targetId);

            if (null != player)
            {
                Planes.PlayerInstance.SendTalkMsg2Client(player, channel, sender, msg, data);
            }
        }