新问题【登录器】
如图控制台输出这个 players.Players.ToString(),服务器信息输出了info.ToString(),显示出了,但是玩家信息没有显示,显示的是,,应该没问题呀。 是个List 你自己看代码 201724 发表于 2020-3-7 15:19是个List 你自己看代码
我现在获取到了。不过Score不对劲 我的未来不是梦 发表于 2020-3-7 18:03
我现在获取到了。不过Score不对劲
自己研究格式吧 都忘光了。 我的未来不是梦 发表于 2020-3-7 18:03
我现在获取到了。不过Score不对劲
应该是数据类型不对,你把 public PlayerResponse GetPlayers() 的代码发出来呢 k1nader 发表于 2020-3-10 17:01
应该是数据类型不对,你把的代码发出来呢
public PlayerResponse GetPlayers()
{
try
{
var req = Constants.A2S_PLAYER_CHALLENGE_REQUEST;
request(req);
var response = fetchResponse();
var byteReader = response.GetByteReader();
// byte[] response = fetchResponse();
//IByteReader byteReader = response.GetByteReader();
if (!byteReader.GetByte().Equals(0x41))
{
response = fetchResponse();
byteReader = response.GetByteReader();
//header = byteReader.GetByte();
if (!byteReader.GetByte().Equals(0x41))
throw new ArgumentException("Response was no challenge response.");
}
req = byteReader.GetByte();
req = byteReader.GetByte();
req = byteReader.GetByte();
req = byteReader.GetByte();
request(req);
response = fetchResponse();
byteReader = response.GetByteReader();
byte header = byteReader.GetByte();
if (!header.Equals(0x44))
throw new ArgumentException("Response was no player response.");
PlayerResponse playerResponse = new PlayerResponse() { Header = header, Players = new List<Player>() };
int playercount = byteReader.GetByte();
for (int i = 1; i <= playercount; i++)
{
playerResponse.Players.Add(new Player()
{
Index = byteReader.GetByte(),
Name = byteReader.GetString(),
Score = byteReader.GetLong(),
Duration = TimeSpan.FromSeconds(byteReader.GetFloat())
});
}
//IF more bytes == THE SHIP
if (byteReader.Remaining > 0)
{
playerResponse.IsTheShip = true;
for (int i = 0; i < playercount; i++)
{
playerResponse.Players.Deaths = byteReader.GetLong();
playerResponse.Players.Money = byteReader.GetLong();
}
}
return playerResponse;
}
catch (Exception ex)
{
throw new SourceQueryException("Could not gather Players", ex);
}
} 我的未来不是梦 发表于 2020-3-11 01:11
public uint GetLong()
{
if (Remaining < 4)
throw new ArgumentOutOfRangeException("Not Enough bytes left to read");
uint longValue = BitConverter.ToUInt32(Response, Iterator);
Iterator += 4;
return longValue;
}
发现是 Okolni 这个人写的问题了。。 long 是有符号整型,他给搞成 无符号了
Score = byteReader.GetLong()
改成
Score = byteReader.GetInt() 都奔着人家的东东出现了!
页:
[1]