private void ProfileByType(Session session, Packet packet) { var reply = new Packet(packet); string type; uint id; try { type = packet.GetString().ToLowerInvariant(); id = packet.GetUInt32(); } catch (Exception) { ReplyError(session, packet, Error.Unexpected); return; } if (type == "city") { ICity city; locker.Lock(id, out city).Do(() => { if (city == null) { ReplyError(session, reply, Error.PlayerNotFound); return; } PacketHelper.AddPlayerProfileToPacket(city.Owner, reply); session.Write(reply); }); return; } if (type == "stronghold") { IStronghold stronghold; locker.Lock(id, out stronghold).Do(() => { if (stronghold == null || stronghold.StrongholdState == StrongholdState.Inactive) { ReplyError(session, reply, Error.ObjectNotFound); return; } PacketHelper.AddStrongholdProfileToPacket(session, stronghold, reply); session.Write(reply); }); return; } ReplyError(session, packet, Error.Unexpected); }
private void ViewProfile(Session session, Packet packet) { var reply = new Packet(packet); uint playerId; string playerName = string.Empty; try { playerId = packet.GetUInt32(); if (playerId == 0) { playerName = packet.GetString(); } } catch (Exception) { ReplyError(session, packet, Error.Unexpected); return; } if (playerId == 0) { if (!world.FindPlayerId(playerName, out playerId)) { ReplyError(session, packet, Error.PlayerNotFound); return; } } IPlayer player; locker.Lock(playerId, out player).Do(() => { if (player == null) { ReplyError(session, reply, Error.PlayerNotFound); return; } PacketHelper.AddPlayerProfileToPacket(player, reply); session.Write(reply); }); }