MoveAvatarEvent Fixo


Eae pessoal, venho trazer o comando de mover rápido, igualzinho do antigo Hebbo, veja o tutorial abaixo.

Substitua seu MoveAvatarEvent.cs por:
using Plus.HabboHotel.Items;
using Plus.HabboHotel.Rooms;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;

namespace Plus.Communication.Packets.Incoming.Rooms.Engine
{
    internal class MoveAvatarEvent : IPacketEvent
    {
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null)
            {
                return;
            }

            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Room Room = Session.GetHabbo().CurrentRoom;
            if (Room == null)
            {
                return;
            }

            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null || !User.CanWalk)
            {
                return;
            }

            int MoveX = Packet.PopInt();
            int MoveY = Packet.PopInt();

            if (User.RidingHorse)
            {
                RoomUser Horse = Room.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID);
                if (Horse != null)
                {
                    Horse.MoveTo(MoveX, MoveY);
                }
            }

            if (User.isLying)
            {
                User.Z += 0.35;
                User.RemoveStatus("lay");
                User.isLying = false;
                User.UpdateNeeded = true;
            }

            if (User.isSitting)
            {
                User.Z += 0.35;
                User.RemoveStatus("sit");
                User.isSitting = false;
                User.UpdateNeeded = true;
            }

            User.MoveTo(MoveX, MoveY);
        }
    }
}


Em seguida, vá para RoomUser.cs e pesquise: public void MoveTo (int pX, int pY, bool pOverride) Substitua a função por isso:
public void MoveTo(int pX, int pY, bool pOverride)
        {
            if (TeleportEnabled)
            {
                UnIdle();
                GetRoom().SendPacket(GetRoom().GetRoomItemHandler().UpdateUserOnRoller(this, new Point(pX, pY), 0, GetRoom().GetGameMap().SqAbsoluteHeight(GoalX, GoalY)));
                if (Status.ContainsKey("sit"))
                {
                    Z -= 0.35;
                }

                UpdateNeeded = true;
                return;
            }

            if ((!GetRoom().GetGameMap().IsValidMovement(pX, pY) && !AllowOverride) || Frozen)
            {
                return;
            }

            UnIdle();
            IsWalking = true;
            GoalX = pX;
            GoalY = pY;
            PathRecalcNeeded = true;
            FreezeInteracting = false;
        }

Vá para GameMap.cs e substitua: public bool SquareHasUsers (int X, int Y)
public bool SquareHasUsers(int X, int Y)
        {
            return _userMap.ContainsKey(new Point(X, Y));
        }

Créditos:
Akushi
Malibu
ArquivosHps

Postar um comentário

2 Comentários

  1. Não entendi a utilidade, por gentileza poderia me ajudar?

    ResponderExcluir
  2. Isso é para andar mais rápido ao pisar no chão.

    ResponderExcluir

Fique a vontade no comentário, estaremos respondendo todas dúvidas por aqui! Aproveite e use nossos emoji's para comentários :)