コード例 #1
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 2)
            {
                GameClient target = Skylight.GetGame().GetGameClientManager().GetGameClientByUsername(args[1]);
                if (target != null)
                {
                    RoomUnit     me    = session.GetHabbo().GetRoomSession().GetRoomUser();
                    RoomUnitUser other = target.GetHabbo().GetRoomSession().GetRoomUser();
                    if (target.GetHabbo().GetRoomSession().IsInRoom&& target.GetHabbo().GetRoomSession().CurrentRoomID == session.GetHabbo().GetRoomSession().CurrentRoomID)
                    {
                        bool doit = true;
                        if ((me.X + 1 != other.X || me.Y != other.Y) && (me.X - 1 != other.X || me.Y != other.Y) && (me.Y + 1 != other.Y || me.X != other.X))
                        {
                            bool skip = false;
                            if (me.X - 1 == other.X)
                            {
                                if (me.Y == other.Y)
                                {
                                    skip = true;
                                }
                            }

                            if (!skip)
                            {
                                doit = me.X == other.X || me.Y == other.Y;
                            }
                        }

                        if (doit)
                        {
                            me.Speak("*RKO'S " + other.Session.GetHabbo().Username + " OUT OF NO WHERE*", true);
                            other.Speak("Ouch", true);
                            if (!other.HasStatus("lay") && !other.HasStatus("sit"))
                            {
                                if (other.BodyRotation == 0 || other.BodyRotation == 2 || other.BodyRotation == 4 || other.BodyRotation == 6)
                                {
                                    other.AddStatus("sit", TextUtilies.DoubleWithDotDecimal((other.Z + 1) / 2 - other.Z * 0.5));
                                }
                            }
                        }

                        return(true);
                    }
                }
            }

            return(false);
        }
コード例 #2
0
        public virtual void Handle(GameClient session, ClientMessage message)
        {
            Room room;

            if ((room = session?.GetHabbo()?.GetRoomSession()?.GetRoom()) != null)
            {
                RoomUnitUser user = room.RoomUserManager.GetUserByVirtualID(this.VirtualID);
                if (user != null)
                {
                    RoomAllowTradeType tradeSettings = room.RoomData.AllowTrade;
                    if (tradeSettings == RoomAllowTradeType.ALLOWED || (tradeSettings == RoomAllowTradeType.OWNER_ONLY && room.HaveOwnerRights(session)) || (tradeSettings == RoomAllowTradeType.CATEGORY && (Skylight.GetGame().GetNavigatorManager().GetFlatCat(session.GetHabbo().GetRoomSession().GetRoom().RoomData.Category)?.CanTrade ?? false)))
                    {
                        if (session.GetHabbo().GetUserSettings().AcceptTrading)
                        {
                            if (!session.GetHabbo().GetRoomSession().GetRoomUser().HasStatus("trd"))
                            {
                                if (!user.HasStatus("trd"))
                                {
                                    if (user.Session.GetHabbo().GetUserSettings().AcceptTrading)
                                    {
                                        room.StartTrade(session.GetHabbo().GetRoomSession().GetRoomUser(), user);
                                    }
                                    else
                                    {
                                        session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TargetCannotTrade));
                                    }
                                }
                                else
                                {
                                    session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TargetTrading));
                                }
                            }
                            else
                            {
                                session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TradeOpen));
                            }
                        }
                        else
                        {
                            session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.YourTradingDisabled));
                        }
                    }
                    else
                    {
                        session.SendMessage(new TradeStartErrorComposerHandler(TradeStartErrorCode.TradingNotAllowInRoom));
                    }
                }
            }
        }