搜索
查看: 6924|回复: 7

新问题【登录器】

[复制链接]
发表于 2020-3-7 00:21:37 | 显示全部楼层 |阅读模式 来自 中国–重庆–重庆
如图  控制台输出这个    players.Players.ToString(),服务器信息输出了info.ToString(),显示出了,但是玩家信息没有显示,显示的是,,应该没问题呀。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
发表于 2020-3-7 15:19:29 | 显示全部楼层 来自 中国–内蒙古–呼伦贝尔
是个List 你自己看代码
回复

使用道具 举报

 楼主| 发表于 2020-3-7 18:03:31 | 显示全部楼层 来自 中国–重庆–重庆
201724 发表于 2020-3-7 15:19
是个List 你自己看代码

我现在获取到了。不过Score不对劲

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

发表于 2020-3-7 20:11:08 | 显示全部楼层 来自 中国–内蒙古–呼伦贝尔
我的未来不是梦 发表于 2020-3-7 18:03
我现在获取到了。不过Score不对劲

自己研究格式吧 都忘光了。
回复

使用道具 举报

发表于 2020-3-10 17:01:30 | 显示全部楼层 来自 中国–四川–成都
我的未来不是梦 发表于 2020-3-7 18:03
我现在获取到了。不过Score不对劲

应该是数据类型不对,你把
  1. public PlayerResponse GetPlayers()
复制代码
的代码发出来呢
回复

使用道具 举报

 楼主| 发表于 2020-3-11 01:11:05 | 显示全部楼层 来自 中国–重庆–重庆
k1nader 发表于 2020-3-10 17:01
应该是数据类型不对,你把  的代码发出来呢
  1. public PlayerResponse GetPlayers()
  2.         {
  3.             try
  4.             {
  5.                 var req = Constants.A2S_PLAYER_CHALLENGE_REQUEST;

  6.                 request(req);
  7.                 var response = fetchResponse();
  8.                 var byteReader = response.GetByteReader();
  9.                 // byte[] response = fetchResponse();
  10.                 //IByteReader byteReader = response.GetByteReader();
  11.                 if (!byteReader.GetByte().Equals(0x41))
  12.                 {
  13.                     response = fetchResponse();
  14.                     byteReader = response.GetByteReader();
  15.                     //header = byteReader.GetByte();
  16.                     if (!byteReader.GetByte().Equals(0x41))
  17.                         throw new ArgumentException("Response was no challenge response.");
  18.                 }
  19.                 req[5] = byteReader.GetByte();
  20.                 req[6] = byteReader.GetByte();
  21.                 req[7] = byteReader.GetByte();
  22.                 req[8] = byteReader.GetByte();
  23.                 request(req);                        
  24.                 response = fetchResponse();
  25.                 byteReader = response.GetByteReader();
  26.                 byte header = byteReader.GetByte();
  27.                 if (!header.Equals(0x44))
  28.                     throw new ArgumentException("Response was no player response.");

  29.                 PlayerResponse playerResponse = new PlayerResponse() { Header = header, Players = new List<Player>() };
  30.                 int playercount = byteReader.GetByte();
  31.                 for (int i = 1; i <= playercount; i++)
  32.                 {
  33.                     playerResponse.Players.Add(new Player()
  34.                     {
  35.                         Index = byteReader.GetByte(),
  36.                         Name = byteReader.GetString(),
  37.                         Score = byteReader.GetLong(),
  38.                         Duration = TimeSpan.FromSeconds(byteReader.GetFloat())
  39.                     });
  40.                 }

  41.                 //IF more bytes == THE SHIP
  42.                 if (byteReader.Remaining > 0)
  43.                 {
  44.                     playerResponse.IsTheShip = true;
  45.                     for (int i = 0; i < playercount; i++)
  46.                     {
  47.                         playerResponse.Players[i].Deaths = byteReader.GetLong();
  48.                         playerResponse.Players[i].Money = byteReader.GetLong();
  49.                     }
  50.                 }

  51.                 return playerResponse;
  52.             }
  53.             catch (Exception ex)
  54.             {
  55.                 throw new SourceQueryException("Could not gather Players", ex);
  56.             }
  57.         }
复制代码
回复

使用道具 举报

发表于 2020-3-11 02:39:51 | 显示全部楼层 来自 中国–四川–成都

  1. public uint GetLong()
  2. {
  3.         if (Remaining < 4)
  4.                 throw new ArgumentOutOfRangeException("Not Enough bytes left to read");

  5.         uint longValue = BitConverter.ToUInt32(Response, Iterator);
  6.         Iterator += 4;

  7.         return longValue;
  8. }
复制代码


发现是 Okolni 这个人写的问题了。。 long 是有符号整型,他给搞成 无符号了

  1. Score = byteReader.GetLong()
  2. 改成
  3. Score = byteReader.GetInt()
复制代码
回复

使用道具 举报

发表于 2020-3-11 14:39:07 | 显示全部楼层 来自 中国–河南–南阳
都奔着人家的东东出现了!
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表