示例#1
0
        private void HandleNearbyActorsQuery(SubPacket subPacket)
        {
            PositionsInBoundsPacket posInBoundsPacket = new PositionsInBoundsPacket(subPacket.data);

            client.Character.SetCharacterCameraBounds(posInBoundsPacket.XMin, posInBoundsPacket.XMax, posInBoundsPacket.YMin, posInBoundsPacket.YMax);
            bool             foundNearby      = false;
            List <SubPacket> nearbyCharacters = new List <SubPacket>();
            var connectedPlayers = WorldServer.mConnectedPlayerList.Values.ToList();

            foreach (var connectedPlayer in connectedPlayers)
            {
                if ((connectedPlayer.CharacterId != client.Character.CharacterId) && connectedPlayer.XPos > client.Character.BoundsXMin &&
                    connectedPlayer.XPos < client.Character.BoundsXMax && connectedPlayer.YPos > client.Character.BoundsYMin &&
                    connectedPlayer.YPos < client.Character.BoundsYMax)
                {
                    foundNearby = true;
                    PositionPacket packet = new PositionPacket(connectedPlayer.XPos, connectedPlayer.YPos, true, connectedPlayer.CharacterId);
                    SubPacket      sp     = new SubPacket(GamePacketOpCode.NearbyActorsQuery, 0, connectedPlayer.CharacterId, packet.GetBytes(), SubPacketTypes.GamePacket);
                    nearbyCharacters.Add(sp);
                }
            }
            if (foundNearby)
            {
                client.QueuePacket(BasePacket.CreatePacket(nearbyCharacters, true, false));
                client.FlushQueuedSendPackets();
            }
        }
示例#2
0
    private void QueryForNearybyActors()
    {
        PositionsInBoundsPacket packet = new PositionsInBoundsPacket(cameraBounds.min.x, cameraBounds.max.x, cameraBounds.min.y, cameraBounds.max.y);
        //Debug.Log(cameraBounds.min.x + "," + cameraBounds.min.y + "," + cameraBounds.max.x + "," + cameraBounds.max.y);
        SubPacket sp = new SubPacket(GamePacketOpCode.NearbyActorsQuery, Data.CHARACTER_ID, 0, packet.GetBytes(), SubPacketTypes.GamePacket);

        connection.Send(BasePacket.CreatePacket(sp, PacketProcessor.isAuthenticated, false));
    }