Example #1
0
        public byte[] AchieveSerialize()
        {
            RPC.DataWriter dw    = new RPC.DataWriter();
            int            count = 0;

            foreach (var i in AchieveDict.Values)
            {
                foreach (var ave in i)
                {
                    if (ave.data.targetNum > 0)
                    {
                        count++;
                    }
                }
            }
            dw.Write(count);
            foreach (var i in AchieveDict.Values)
            {
                foreach (var ave in i)
                {
                    dw.Write(ave.data.id);
                    dw.Write(ave.data.targetNum);
                    dw.Write(ave.data.getReward);
                }
            }
            return(dw.Trim());
        }
Example #2
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);
                }
            };
        }
Example #3
0
        public byte[] SerializeArms()
        {
            RPC.DataWriter dw = new RPC.DataWriter();
            dw.Write((byte)HoldPoints.Count);
            foreach (var i in HoldPoints)
            {
                dw.Write(i.ArmsCount);
                dw.Write((byte)i.Camp);
            }
            dw.Write((byte)Defender.Length);
            foreach (var i in Defender)
            {
                dw.Write(i);
            }

            dw.Write((byte)AdvanceArms.Length);
            foreach (var i in AdvanceArms)
            {
                dw.Write(i);
            }

            if (dw.Length >= 255)
            {
                Log.Log.Common.Error("City 序列化数据最大不能超过255!");
            }

            return(dw.Trim());
        }
Example #4
0
        public RPC.DataWriter GetPlanesServers()
        {
            RPC.DataWriter d = new RPC.DataWriter();

            Byte count = (Byte)mPlanesServers.Count;

            d.Write(count);
            foreach (var s in mPlanesServers)
            {
                if (s.Value.Id == 0)
                {
                    Log.Log.Server.Print("GetPlanesServers时有的PlanesSever的Id不合法");
                    RPC.PackageWriter pkg = new RPC.PackageWriter();
                    H_RPCRoot.smInstance.HGet_PlanesServer(pkg).GetPlanesServerId(pkg);
                    pkg.WaitDoCommand(s.Value.Connect, RPC.CommandTargetType.DefaultType, new System.Diagnostics.StackTrace(1, true)).OnFarCallFinished = delegate(RPC.PackageProxy _io, bool bTimeOut)
                    {
                        _io.Read(out s.Value.Id);
                    };
                }
                d.Write(s.Value.Id);
                d.Write(s.Value.Ip);
                d.Write(s.Value.Port);
            }

            return(d);
        }
Example #5
0
 public void Serialize(RPC.DataWriter dw)
 {
     for (var i = eElemType.Gold; i < eElemType.MAX; i++)
     {
         dw.Write(GetDef(i));
     }
     dw.Write(AllDefRate);
     dw.Write(MaxHPRate);
     dw.Write(MaxHP);
     dw.Write(MaxMP);
     dw.Write(Atk);
     dw.Write(Crit);
     dw.Write(CritRate);
     dw.Write(CritDef);
     dw.Write(CritDefRate);
     dw.Write(DeadlyHit);
     dw.Write(DeadlyHitRate);
     dw.Write(Hit);
     dw.Write(Dodge);
     dw.Write(UpHurtRate);
     dw.Write(DownHurtRate);
     dw.Write(UnusualDefRate);
     dw.Write(Block);
     dw.Write(BlockRate);
     dw.Write(HPRecover);
     dw.Write(MPRecover);
     dw.Write(UpExpRate);
     dw.Write(Speed);
     dw.Write(DamageReflect);
 }
Example #6
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);
 }
Example #7
0
        public bool OnComValueChanged(string name, RPC.DataWriter value)
        {
            var pkg = new RPC.PackageWriter();

            H_RPCRoot.smInstance.HGet_ComServer(pkg).HGet_UserRoleManager(pkg).RPC_UpdateRoleComValue(pkg, this.Id, name, value);
            pkg.DoCommand(IPlanesServer.Instance.ComConnect, RPC.CommandTargetType.DefaultType);
            return(true);
        }
Example #8
0
 public byte[] Serialize()
 {
     RPC.DataWriter dw = new RPC.DataWriter();
     value.Serialize(dw);
     dw.Write(WeapFacdeid);
     RPC.IAutoSaveAndLoad.DaraWriteList <CSCommon.Data.SkillData>(skills, dw, false);
     return(dw.Trim());
 }
Example #9
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);
        }
Example #10
0
        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);
        }
Example #11
0
 public byte[] CopySerialize()
 {
     RPC.DataWriter dw = new RPC.DataWriter();
     dw.Write(CopyList.Count);
     foreach (var i in CopyList)
     {
         dw.Write(i);
     }
     return(dw.Trim());
 }
Example #12
0
 public RPC.DataWriter GetGateServers()
 {
     RPC.DataWriter d      = new RPC.DataWriter();
     System.Byte    nCount = (Byte)mGateServers.Count;
     d.Write(nCount);
     foreach (var l in mGateServers)
     {
         d.Write(l.Value.Ip);
         d.Write(l.Value.Port);
     }
     return(d);
 }
Example #13
0
 public void SayToWorld(UserRole role, sbyte channel, string msg, RPC.DataWriter data)
 {
     foreach (var i in Roles)
     {
         if (i.Value.PlanesConnect != null)
         {
             RPC.PackageWriter retPkg = new RPC.PackageWriter();
             H_RPCRoot.smInstance.HGet_PlanesServer(retPkg).RPC_DSTalkMsg(retPkg, i.Value.RoleData.PlanesId, role.RoleData.Name, channel, i.Value.RoleData.RoleId, msg, data);
             retPkg.DoCommand(i.Value.PlanesConnect, RPC.CommandTargetType.DefaultType);
         }
     }
 }
Example #14
0
        public RPC.DataWriter GetComServer()
        {
            RPC.DataWriter d = new RPC.DataWriter();
            if (mComServer == null)
            {
                return(d);
            }
            d.Write(mComServer.IpAddress);
            d.Write(mComServer.Port);

            return(d);
        }
Example #15
0
        public RPC.DataWriter GetAllActivePlanesInfo()
        {
            RPC.DataWriter result = new RPC.DataWriter();
            UInt16         count  = (UInt16)mPlanes.Count;

            result.Write(count);
            foreach (var i in mPlanes)
            {
                result.Write(i.Value.PlanesId);
                result.Write(i.Value.PlanesName);
            }
            return(result);
        }
Example #16
0
        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);
            }
        }
Example #17
0
        public void SendTeamInfoToPlayers(Team team)
        {
            RPC.DataWriter dw    = new RPC.DataWriter();
            List <RoleCom> infos = team.GetPlayerInfos();

            RPC.IAutoSaveAndLoad.DaraWriteList <RoleCom>(infos, dw, false);
            foreach (var i in team.GetPlayers())
            {
                RPC.PackageWriter pkg = new RPC.PackageWriter();
                H_RPCRoot.smInstance.HGet_PlanesServer(pkg).RPC_SendPlayerTeamInfo(pkg, i.RoleData.RoleId, dw);
                pkg.DoCommand(i.PlanesConnect, RPC.CommandTargetType.DefaultType);
            }
        }
Example #18
0
        public static void DaraWriteList <T>(List <T> list, RPC.DataWriter pkg, bool bToClient)
            where T : RPC.IAutoSaveAndLoad
        {
            UInt16 count = (UInt16)list.Count;

            pkg.Write(count);
            foreach (var i in list)
            {
                RPC.DataWriter idr = new RPC.DataWriter();
                i.DataWrite(idr, bToClient);
                pkg.Write(idr);
            }
        }
Example #19
0
        public RPC.DataWriter GetLogServer()
        {
            RPC.DataWriter d = new RPC.DataWriter();
            if (mLogServer == null)
            {
                d.Write((sbyte)(-1));
                return(d);
            }
            d.Write((sbyte)(1));
            d.Write(mLogServer.IpAddress);
            d.Write(mLogServer.Port);

            return(d);
        }
Example #20
0
        public override bool OnValueChanged(string name, RPC.DataWriter value)
        {
            if (true == base.OnValueChanged(name, value))
            {
                return(true);
            }

            //这些数据只需要告诉玩家自己,不需要告诉别的客户端
            var pkg = new RPC.PackageWriter();

            Wuxia.H_RpcRoot.smInstance.RPC_UpdateRoleValue(pkg, name, value);
            pkg.DoCommandPlanes2Client(this.Planes2GateConnect, this.ClientLinkId);
            return(true);
        }
Example #21
0
        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);
        }
Example #22
0
        public virtual void UpdateAttr()
        {
            if (mUpdateAttrList.Count == 0)
            {
                return;
            }

            if (CurHP > FinalRoleValue.MaxHP)
            {
                CurHP = FinalRoleValue.MaxHP;
                OnAttrChanged(eSkillAttrIndex.HP);
            }
            if (CurMP > FinalRoleValue.MaxMP)
            {
                CurMP = FinalRoleValue.MaxMP;
                OnAttrChanged(eSkillAttrIndex.MP);
            }
            List <AttrStruct> attrs = new List <AttrStruct>();

            foreach (var idx in mUpdateAttrList)
            {
                if (!IsBroadCastAttr(idx))
                {
                    continue;
                }

                AttrStruct attr = new AttrStruct();
                if (!GetAttrStruct(ref attr, idx))
                {
                    continue;
                }

                attrs.Add(attr);
            }
            mUpdateAttrList.Clear();
            if (attrs.Count == 0)
            {
                return;
            }

            RPC.PackageWriter pkg = new RPC.PackageWriter();
            RPC.DataWriter    dw  = new RPC.DataWriter();
            RPC.IAutoSaveAndLoad.DaraWriteList <AttrStruct>(attrs, dw, true);
            Wuxia.H_RpcRoot.smInstance.HIndex(pkg, this.Id).RPC_UpdateRoleAttr(pkg, dw);
            HostMap.SendPkg2Clients(null, GetPosition(), pkg);
        }
Example #23
0
 //送给玩家的数据,以后需要采用RLE压缩,所以DataWrite和DataRead要特殊处理,一定要注意,服务器客户端的对应
 public override void DataWrite(RPC.DataWriter pkg, bool bToClient)
 {
     mRoleDetail.DataWrite(pkg, bToClient);
     DaraWriteList <ItemData>(mBagItems, pkg, bToClient);
     DaraWriteList <ItemData>(mEquipedItems, pkg, bToClient);
     DaraWriteList <ItemData>(mEquipGemItems, pkg, bToClient);
     DaraWriteList <ItemData>(mGemItems, pkg, bToClient);
     DaraWriteList <ItemData>(mFashionItems, pkg, bToClient);
     mTaskData.DataWrite(pkg, bToClient);
     DaraWriteList <SkillData>(mSkillDatas, pkg, bToClient);
     mMartialData.DataWrite(pkg, bToClient);
     if (!bToClient)
     {
         mAchieveData.DataWrite(pkg, bToClient);
         mRankData.DataWrite(pkg, bToClient);
     }
 }
Example #24
0
 public bool SayToCamp(UserRole role, sbyte channel, string msg, RPC.DataWriter data)
 {
     if (role.RoleData.Camp == (byte)CSCommon.eCamp.None)
     {
         return(false);
     }
     foreach (var i in Roles)
     {
         if (i.Value.PlanesConnect != null && i.Value.RoleData.Camp == role.RoleData.Camp)
         {
             RPC.PackageWriter retPkg = new RPC.PackageWriter();
             H_RPCRoot.smInstance.HGet_PlanesServer(retPkg).RPC_DSTalkMsg(retPkg, i.Value.RoleData.PlanesId, role.RoleData.Name, channel, i.Value.RoleData.RoleId, msg, data);
             retPkg.DoCommand(i.Value.PlanesConnect, RPC.CommandTargetType.DefaultType);
         }
     }
     return(true);
 }
Example #25
0
 public virtual bool OnValueChanged(string name, RPC.DataWriter value)
 {
     switch (name)
     {
     case "RoleHp":
     case "RoleMaxHp":
     case "RoleLevel":                        //这些都是玩家要看到的
         if (!HostMap.IsNullMap)
         {
             RoleActor ignore = name == "RoleHp" && null != CurrImpact && CurrImpact is AttackImpact ? CurrImpact.Owner : null;
             var       pkg    = new RPC.PackageWriter();
             Wuxia.H_RpcRoot.smInstance.HIndex(pkg, this.Id).RPC_UpdateRoleValue(pkg, name, value);
             HostMap.SendPkg2Clients(ignore, GetPosition(), pkg);
         }
         return(true);
     }
     return(false);
 }
Example #26
0
        //保存数据库调用
        public void VisitDataSerialize()
        {
            RPC.DataWriter dw    = new RPC.DataWriter();
            byte           count = (byte)VisitTopList.Count;

            dw.Write(count);
            foreach (var i in VisitTopList)
            {
                dw.Write(i);
            }
            count = (byte)VisitFriendList.Count;
            dw.Write(count);
            foreach (var i in VisitFriendList)
            {
                dw.Write(i);
            }
            RoleData.VisitPlayers = dw.Trim();
        }
Example #27
0
        //保存数据库调用
        public void MartialSerialize()
        {
            ClearTimeHandlers();
            RPC.DataWriter dw        = new RPC.DataWriter();
            byte           itemCount = (byte)mOutDict.Count;

            dw.Write(itemCount);
            foreach (var i in mOutDict.Values)
            {
                dw.Write(i.mType);
                dw.Write(i.mStartTime);
                dw.Write(i.mOutCount);
                dw.Write(i.mUpOutIndex);
                dw.Write(i.mUpStartTime);
                dw.Write(i.mOutPutTotalNum);
            }
            mRole.PlayerData.MartialData.OutPutInfo = dw.Trim();
        }
Example #28
0
        public RPC.DataWriter GetRoleDetailData(ulong accountID)
        {
            RPC.DataWriter dw = new RPC.DataWriter();

            var acInfo = mPlayerManager.FindPlayerData(accountID);

            if (acInfo != null)
            {
                dw.Write((SByte)1);
                dw.Write(acInfo.RoleDetail, false);
            }
            else
            {
                dw.Write((SByte)(-1));
            }

            return(dw);
        }
Example #29
0
        public RPC.DataWriter GetAccountInfoData(ulong accountID)
        {
            RPC.DataWriter dw = new RPC.DataWriter();

            var account = mPlayerManager.FindAccountInfo(accountID);

            if (account != null)
            {
                dw.Write((SByte)1);
                dw.Write(account, false);
            }
            else
            {
                dw.Write((SByte)(-1));
            }

            return(dw);
        }
Example #30
0
        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;
            }
        }