Esempio n. 1
0
        public void Handle(RoomUser user, Team team, RoomItem iItem)
        {
            InteractorGenericSwitch.DoAnimation(item);
            Queue <RoomItem> toRemove = new Queue <RoomItem>();

            foreach (var _item in items)
            {
                if (room.GetRoomItemHandler().GetItem(_item.Id) == null)
                {
                    toRemove.Enqueue(_item);
                    continue;
                }

                /*if(_item.Coordinate == item.Coordinate)
                 * {
                 *  continue;
                 * }*/

                handler.RequestStackHandleEffects(_item.Coordinate, null, user, Team.none);
            }

            while (toRemove.Count > 0)
            {
                RoomItem itemToRemove = toRemove.Dequeue();
                if (items.Contains(itemToRemove))
                {
                    items.Remove(itemToRemove);
                }
            }
        }
Esempio n. 2
0
        public void Handle(RoomUser user, Team team, RoomItem iItem)
        {
            InteractorGenericSwitch.DoAnimation(item);
            Queue <RoomItem> toRemove = new Queue <RoomItem>();

            foreach (var _item in items)
            {
                if (room.GetRoomItemHandler().GetItem(_item.Id) == null)
                {
                    toRemove.Enqueue(_item);
                    continue;
                }

                HandleMovement(_item);
            }

            while (toRemove.Count > 0)
            {
                RoomItem itemToRemove = toRemove.Dequeue();
                if (items.Contains(itemToRemove))
                {
                    items.Remove(itemToRemove);
                }
            }
        }
Esempio n. 3
0
        private bool ToggleItems(RoomUser user)
        {
            if (disposed)
            {
                return(false);
            }

            InteractorGenericSwitch.DoAnimation(item);
            var itemTriggered = false;

            foreach (var i in items)
            {
                if (i == null)
                {
                    continue;
                }

                if (user != null && user.GetClient() != null)
                {
                    i.Interactor.OnTrigger(user.GetClient(), i, 3, true);
                }
                else
                {
                    i.Interactor.OnTrigger(null, i, 3, true);
                }
                itemTriggered = true;
            }
            return(itemTriggered);
        }
Esempio n. 4
0
        private bool HandleItems()
        {
            InteractorGenericSwitch.DoAnimation(item);
            var itemHandled           = false;
            Queue <RoomItem> toRemove = new Queue <RoomItem>();

            foreach (var _item in items)
            {
                if (room != null && room.GetRoomItemHandler() != null && room.GetRoomItemHandler().GetItem(_item.Id) == null)
                {
                    toRemove.Enqueue(_item);
                    continue;
                }
                if (HandleMovement(_item))
                {
                    itemHandled = true;
                }
            }

            while (toRemove.Count > 0)
            {
                RoomItem itemToRemove = toRemove.Dequeue();
                if (items.Contains(itemToRemove))
                {
                    items.Remove(itemToRemove);
                }
            }
            return(itemHandled);
        }
Esempio n. 5
0
 public void Handle(RoomUser user, Team team, RoomItem item)
 {
     if (team == staticTeam && maxCountPerGame > currentGameCount)
     {
         InteractorGenericSwitch.DoAnimation(itemID);
         currentGameCount++;
         gameManager.AddPointsToTeam(team, scoreToGive, user);
     }
 }
Esempio n. 6
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);

            if (user != null && !user.IsBot && user.GetClient() != null)
            {
                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect((int)staticTeam + 39);
                user.team = staticTeam;
            }
        }
Esempio n. 7
0
        private void roomUserManager_OnUserEnter(object sender, EventArgs e)
        {
            var user = (RoomUser)sender;

            if ((!user.IsBot && isOneUser && !string.IsNullOrEmpty(userName) && user.GetUsername() == userName) || !isOneUser)
            {
                InteractorGenericSwitch.DoAnimation(item);
                handler.RequestStackHandle(item, null, user, user.team);
            }
        }
Esempio n. 8
0
        public bool OnCycle()
        {
            cycleCount++;

            if (cycleCount > (cyclesRequired - 0.5))
            {
                handler.RequestStackHandle(item, null, null, Team.none);
                InteractorGenericSwitch.DoAnimation(item);
                cycleCount = 0;
            }
            return(true);
        }
Esempio n. 9
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);

            if (user != null && !user.IsBot && user.GetClient() != null)
            {
                if (user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect == 40 || user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect == 41 || user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect == 42 || user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect == 43)
                {
                    user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
                }
                user.team = Team.none;
            }
        }
Esempio n. 10
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);

            cycles = 0;
            if (delay == 0)
            {
                HandleItems();
            }
            else
            {
                handler.RequestCycle(this);
            }
        }
Esempio n. 11
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);
            if (user != null && !user.IsBot && user.GetClient() != null && user.GetClient().GetHabbo() != null && user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && message.Length > 0)
            {
                int effects = Convert.ToInt16(message);
                if (effects < 0 || effects > 105)
                {
                    effects = 0;
                }

                if (user.CarryItemID == effects)
                {
                    effects = 0;
                }

                user.CarryItem(effects);
            }
        }
Esempio n. 12
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            if (user != null && !user.IsBot && user.GetClient() != null && message.Length > 0)
            {
                string specialMessage = BlackWordsManager.SpecialReplace(message, user);

                var servermsg = new ServerMessage(Outgoing.Whisp);
                servermsg.AppendInt32(user.VirtualId);
                servermsg.AppendString(specialMessage);
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(34); // color
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(-1);

                user.GetClient().SendMessage(servermsg);

                InteractorGenericSwitch.DoAnimation(itemID);
            }
        }
Esempio n. 13
0
        public bool AllowsExecution(RoomUser user)
        {
            InteractorGenericSwitch.DoAnimation(item);

            if (items.Count <= 0)
            {
                return(true);
            }

            OriginalItemLocation location;

            foreach (RoomItem _item in items)
            {
                if (!this.originalItemLocation.ContainsKey(_item.Id))
                {
                    continue;
                }

                location = this.originalItemLocation[_item.Id];

                if (FurniPosition == 1 && !(location.X == _item.GetX && _item.GetY == location.Y && _item.TotalHeight == location.Height))
                {
                    return(false);
                }
                if (FurniDirection == 1 && _item.Rot != location.Rot)
                {
                    return(false);
                }

                if (FurniState == 1 && _item.ExtraData != location.ExtraData)
                {
                    if (string.IsNullOrEmpty(_item.ExtraData) && location.ExtraData == "0")
                    {
                    }
                    else
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Esempio n. 14
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);

            if (user != null && !user.IsBot && user.GetClient() != null && message.Length > 0)
            {
                uint diamantes = Convert.ToUInt32(message.Replace("-", ""));
                if (message.Contains("-"))
                {
                    user.GetClient().GetHabbo().Diamonds -= diamantes;
                    user.GetClient().GetHabbo().UpdateExtraMoneyBalance();
                    user.WhisperComposer("Você acaba de perder " + diamantes + " diamantes ª");
                }
                else
                {
                    user.GetClient().GetHabbo().Diamonds += Convert.ToUInt32(message);
                    user.GetClient().GetHabbo().UpdateExtraMoneyBalance();
                    user.WhisperComposer("Você acaba de ganhar " + diamantes + " diamantes ");
                }
            }
        }
Esempio n. 15
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);

            if (user != null && !user.IsBot && user.GetClient() != null && user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && message.Length > 0)
            {
                int effectid = Convert.ToInt16(message);

                if (effectid < 0 || effectid > 1000)
                {
                    effectid = 0;
                }

                if (effectid == user.CurrentEffect)
                {
                    effectid = 0;
                }

                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(effectid);
            }
        }
Esempio n. 16
0
        public bool OnCycle()
        {
            cycles++;
            if (cycles > delay)
            {
                if (delayedUsers.Count > 0)
                {
                    lock (delayedUsers.SyncRoot)
                    {
                        while (delayedUsers.Count > 0)
                        {
                            var user = (RoomUser)delayedUsers.Dequeue();
                            TeleportUser(user);
                            InteractorGenericSwitch.DoAnimation(itemID);
                        }
                    }
                }
                return(false);
            }

            return(true);
        }
Esempio n. 17
0
        private void targetItem_OnUserWalksOnFurni(object sender, UserWalksOnArgs e)
        {
            RoomItem onItem = (RoomItem)sender;

            if (onItem.GetBaseItem().IsSeat)
            {
                if (onItem.TotalHeight - onItem.GetBaseItem().Height != e.user.Z)
                {
                    return;
                }
            }
            else
            {
                if (onItem.TotalHeight != e.user.Z)
                {
                    return;
                }
            }

            handler.RequestStackHandle(item, (RoomItem)sender, e.user, e.user.team);
            InteractorGenericSwitch.DoAnimation(item);
        }
Esempio n. 18
0
 public bool OnCycle()
 {
     cycleCount++;
     if (cycleCount > (cyclesRequired - 0.5))
     {
         if (delayedUsers.Count > 0)
         {
             lock (delayedUsers.SyncRoot)
             {
                 while (delayedUsers.Count > 0)
                 {
                     var user = (RoomUser)delayedUsers.Dequeue();
                     normalWalk(user);
                     cycleCount = 0;
                     InteractorGenericSwitch.DoAnimation(item);
                 }
             }
         }
         return(false);
     }
     return(true);
 }
Esempio n. 19
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            InteractorGenericSwitch.DoAnimation(itemID);

            if (user == null || user.IsBot || user.GetClient() == null || disposed || user.GetClient().GetHabbo() == null || user.GetClient().GetHabbo().Rank >= 3)
            {
                return;
            }

            var servermsg = new ServerMessage(Outgoing.Whisp);

            servermsg.AppendInt32(user.VirtualId);
            if (user.HabboId == itemID.GetRoom().RoomData.OwnerId)
            {
                servermsg.AppendString("Wired kick exception: Room owner");
            }
            else
            {
                servermsg.AppendString(message);
            }
            servermsg.AppendInt32(0);
            servermsg.AppendInt32(0); // color
            servermsg.AppendInt32(0);
            servermsg.AppendInt32(-1);
            user.GetClient().SendMessage(servermsg);

            if (user.HabboId == itemID.GetRoom().RoomData.OwnerId)
            {
                return;
            }

            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(4);

            lock (delayedUsers.SyncRoot)
            {
                delayedUsers.Enqueue(user);
            }
            handler.RequestCycle(this);
        }
Esempio n. 20
0
 private void gameManager_OnGameEnd(object sender, EventArgs e)
 {
     handler.RequestStackHandle(item, null, null, Team.none);
     InteractorGenericSwitch.DoAnimation(item);
 }
Esempio n. 21
0
 private void targetItem_OnUserWalksOffFurni(object sender, UserWalksOnArgs e)
 {
     handler.RequestStackHandle(item, (RoomItem)sender, e.user, e.user.team);
     InteractorGenericSwitch.DoAnimation(item);
 }
Esempio n. 22
0
        internal static void HandleSave(GameClient Session, uint itemID, Room room, ClientMessage clientMessage)
        {
            if (room == null || room.GetRoomItemHandler() == null)
            {
                return;
            }

            var item = room.GetRoomItemHandler().GetItem(itemID);

            if (item == null)
            {
                return;
            }

            if (item.wiredHandler != null)
            {
                item.wiredHandler.Dispose();
                item.wiredHandler = null;
            }

            InteractorGenericSwitch.DoAnimation(item);

            var type = item.GetBaseItem().InteractionType;

            switch (type)
            {
                #region Causantes
            case InteractionType.triggeronusersay:
            {
                var junk        = clientMessage.PopWiredInt32();
                var isOnlyOwner = (clientMessage.PopWiredInt32() == 1);
                var message     = clientMessage.PopFixedString();

                IWiredTrigger handler = new UserSays(item, room.GetWiredHandler(), isOnlyOwner, message, room);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggerwalkonfurni:
            {
                var junk    = clientMessage.PopWiredInt32();
                var message = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);

                IWiredTrigger handler = new WalksOnFurni(item, room.GetWiredHandler(), items);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggerwalkofffurni:
            {
                var junk    = clientMessage.PopWiredInt32();
                var message = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);

                IWiredTrigger handler = new WalksOffFurni(item, room.GetWiredHandler(), items);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggergameend:
            {
                IWiredTrigger handler = new GameEnds(item, room.GetWiredHandler(), room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggergamestart:
            {
                IWiredTrigger handler = new GameStarts(item, room.GetWiredHandler(), room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggertimer:
            {
                var junk   = clientMessage.PopWiredInt32();
                var cycles = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new Timer(item, room.GetWiredHandler(), cycles, room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.triggerrepeater:
            {
                var junk       = clientMessage.PopWiredInt32();
                var cycleTimes = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new Repeater(room.GetWiredHandler(), item, cycleTimes);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.triggerroomenter:
            {
                var junk  = clientMessage.PopWiredInt32();
                var users = clientMessage.PopFixedString();

                IWiredTrigger handler = new EntersRoom(item, room.GetWiredHandler(), room.GetRoomUserManager(), !string.IsNullOrEmpty(users), users);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggerscoreachieved:
            {
                var junk  = clientMessage.PopWiredInt32();
                var score = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new ScoreAchieved(item, room.GetWiredHandler(), score, room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.triggerstatechanged:
            {
                var junk  = clientMessage.PopWiredInt32();
                var junk3 = clientMessage.PopWiredBoolean();
                var junk2 = clientMessage.PopWiredBoolean();

                int furniAmount;
                var items = GetItems(clientMessage, room, out furniAmount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new StateChanged(room.GetWiredHandler(), item, items);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.triggercollision:
            {
                IWiredTrigger handler = new Collision(item, room.GetWiredHandler(), room.GetRoomUserManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.triggerlongperiodic:
            {
                var junk       = clientMessage.PopWiredInt32();
                var cycleTimes = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new LongRepeater(room.GetWiredHandler(), item, cycleTimes);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.triggerbotreachedavtr:
            {
                var junk    = clientMessage.PopWiredInt32();
                var botname = clientMessage.PopFixedString();

                IWiredTrigger handler = new BotAlcanzaUsuario(item, room.GetWiredHandler(), room.GetRoomUserManager(), botname);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.triggerbotreachedstf:
            {
                var junk    = clientMessage.PopWiredInt32();
                var botname = clientMessage.PopFixedString();

                int furniAmount;
                var items = GetItems(clientMessage, room, out furniAmount);

                IWiredTrigger handler = new BotAlcanzaFurni(item, room.GetWiredHandler(), room.GetRoomUserManager(), items, botname);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }
                #endregion

                #region Efectos
            case InteractionType.actiongivescore:
            {
                var junk   = clientMessage.PopWiredInt32();
                var points = clientMessage.PopWiredInt32();
                var games  = clientMessage.PopWiredInt32();

                IWiredTrigger action = new GiveScore(games, points, room.GetGameManager(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.actionposreset:
            {
                var junk = clientMessage.PopWiredInt32();

                var state     = clientMessage.PopWiredInt32();
                var direction = clientMessage.PopWiredInt32();
                var position  = clientMessage.PopWiredInt32();

                var junk3 = clientMessage.PopFixedString();

                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new PositionReset(items, delay, state + "," + direction + "," + position, new Dictionary <uint, OriginalItemLocation>(), room.GetRoomItemHandler(), room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.actionresettimer:
            {
                var junk  = clientMessage.PopWiredInt32();
                var junk3 = clientMessage.PopWiredBoolean();
                var junk2 = clientMessage.PopWiredBoolean();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new TimerReset(room, room.GetWiredHandler(), delay, item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.actionshowmessage:
            {
                var junk    = clientMessage.PopWiredInt32();
                var message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString());

                if (BlackWordsManager.Check(message, BlackWordType.Hotel, Session, "<WiredMensaje>"))
                {
                    message = "Mensaje bloqueado por el filtro bobba.";
                }

                IWiredTrigger action = new ShowMessage(message, room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionhandiitemcustom:
            {
                var  junk    = clientMessage.PopWiredInt32();
                var  message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString());
                int  valorInteiro;
                bool inteiroCustom = int.TryParse(message, out valorInteiro);

                if (inteiroCustom)
                {
                    IWiredTrigger action = new HandiCustom(message, room.GetWiredHandler(), item);
                    HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                }
                else
                {
                    RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                    usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números.");
                }
                break;
            }

            case InteractionType.actioneffectcustom:
            {
                var  junk    = clientMessage.PopWiredInt32();
                var  message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString());
                int  valorInteiro;
                bool inteiroCustom = int.TryParse(message, out valorInteiro);

                if (inteiroCustom)
                {
                    IWiredTrigger action = new EffectCustom(message, room.GetWiredHandler(), item);
                    HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                }
                else
                {
                    RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                    usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números.");
                }
                break;
            }

            case InteractionType.actiondiamantescustom:
            {
                var  junk    = clientMessage.PopWiredInt32();
                var  message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString());
                int  valorInteiro;
                bool inteiroCustom = int.TryParse(message, out valorInteiro);

                if (inteiroCustom)
                {
                    IWiredTrigger action = new DiamantesCustom(message, room.GetWiredHandler(), item);
                    HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                    break;
                }
                else
                {
                    RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                    usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números e hífen (-).");
                }
                break;
            }

            case InteractionType.actiondancecustom:
            {
                var  junk    = clientMessage.PopWiredInt32();
                var  message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString());
                int  valorInteiro;
                bool inteiroCustom = int.TryParse(message, out valorInteiro);

                if (inteiroCustom)
                {
                    IWiredTrigger action = new DanceCustom(message, room.GetWiredHandler(), item);
                    HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                }
                else
                {
                    RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                    usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números.");
                }
                break;
            }

            case InteractionType.actionfastwalk:
            {
                var junk       = clientMessage.PopWiredInt32();
                var cycleTimes = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new FastWalkCustom(room.GetWiredHandler(), item, cycleTimes);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.actionfreezecustom:
            {
                var junk       = clientMessage.PopWiredInt32();
                var cycleTimes = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new FreezeCustom(room.GetWiredHandler(), item, cycleTimes);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.actionteleportto:
            {
                var junk  = clientMessage.PopWiredInt32();
                var junk2 = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new TeleportToItem(room.GetGameMap(), room.GetWiredHandler(), items, delay, item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actiontogglestate:
            {
                var junk    = clientMessage.PopWiredInt32();
                var message = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new ToggleItemState(room.GetWiredHandler(), items, delay, item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionmoverotate:
            {
                var junk     = clientMessage.PopWiredInt32();
                var movement = (MovementState)clientMessage.PopWiredInt32();
                var rotation = (RotationState)clientMessage.PopWiredInt32();

                var junk3 = clientMessage.PopWiredBoolean();
                var junk2 = clientMessage.PopWiredBoolean();
                var items = GetItems(clientMessage, room, out int furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new MoveRotate(movement, rotation, items, delay, room, room.GetWiredHandler(), item);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actiongivereward:
            {
                if (!Session.GetHabbo().HasFuse("fuse_wired_rewards"))
                {
                    Session.SendNotif("No tienes permitido usar este Wired.");
                    break;
                }

                var junk      = clientMessage.PopWiredInt32();
                var often     = clientMessage.PopWiredInt32();
                var unique    = clientMessage.PopWiredInt32();
                var limite    = clientMessage.PopWiredInt32();
                var nInt      = clientMessage.PopWiredInt32();
                var extrainfo = clientMessage.PopFixedString();

                #region Posible Bug?
                if (extrainfo.Contains(";"))
                {
                    foreach (var s in extrainfo.Split(';'))
                    {
                        if (s.StartsWith("1"))
                        {
                            string value = s.Split(',')[1];
                            if (!value.StartsWith("diamonds:") && !value.StartsWith("alert:"))
                            {
                                try { int.Parse(value); }
                                catch { Session.SendNotif("Has intentado poner un item inválido. Recuerda que debes poner el item_id."); return; }
                            }
                        }
                    }
                }
                else
                {
                    if (extrainfo.StartsWith("1"))
                    {
                        string value = extrainfo.Split(',')[1];
                        if (!value.StartsWith("diamonds:") && !value.StartsWith("alert:"))
                        {
                            try { int.Parse(value); }
                            catch { Session.SendNotif("Has intentado poner un item inválido. Recuerda que debes poner el item_id."); return; }
                        }
                    }
                }
                #endregion

                OtanixEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, "", "WiredReward", "Wired Id: " + item.Id + ", RoomId: " + item.RoomId + ".");

                IWiredTrigger action = new GiveReward(extrainfo, limite, often, unique, nInt, item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionchase:
            {
                var junk  = clientMessage.PopWiredInt32();
                var junk2 = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new Chase(items, delay, room, room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionkickuser:
            {
                var junk    = clientMessage.PopWiredInt32();
                var message = clientMessage.PopFixedString();

                IWiredTrigger action = new KickUser(message, room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionescape:
            {
                var junk  = clientMessage.PopWiredInt32();
                var junk2 = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new Escape(items, delay, room, room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionjointoteam:
            {
                var junk   = clientMessage.PopWiredInt32();
                var teamid = (Team)clientMessage.PopWiredInt32();

                IWiredTrigger action = new JoinToTeam(room.GetWiredHandler(), item, teamid);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionleaveteam:
            {
                IWiredTrigger action = new LeaveTeam(room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actiongiveteamscore:
            {
                var junk   = clientMessage.PopWiredInt32();
                var points = clientMessage.PopWiredInt32();
                var games  = clientMessage.PopWiredInt32();
                var teamid = (Team)clientMessage.PopWiredInt32();

                IWiredTrigger action = new GiveTeamScore(games, points, teamid, room.GetGameManager(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);

                break;
            }

            case InteractionType.actioncallstacks:
            {
                var junk  = clientMessage.PopWiredInt32();
                var junk2 = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new CallStacks(items, room, room.GetWiredHandler(), item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionmovetodir:
            {
                var junk     = clientMessage.PopWiredInt32();
                var movement = (MovementDirection)clientMessage.PopWiredInt32();
                var rotation = (WhenMovementBlock)clientMessage.PopWiredInt32();

                var junk3 = clientMessage.PopWiredBoolean();
                var junk2 = clientMessage.PopWiredBoolean();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger handler = new MoveToDir(items, movement, rotation, room, room.GetWiredHandler(), item);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbotmove:
            {
                var junk    = clientMessage.PopWiredInt32();
                var botName = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new BotMove(item.Id, room, room.GetWiredHandler(), botName, items, delay);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbotwhisper:
            {
                var    junk          = clientMessage.PopWiredInt32();
                bool   talkorwhisper = clientMessage.PopWiredInt32() == 1;
                string message       = clientMessage.PopFixedString();
                int    furniCount;
                var    items = GetItems(clientMessage, room, out furniCount);

                IWiredTrigger action = new BotTalkToUser(item.Id, room, room.GetWiredHandler(), message, talkorwhisper);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbotteleport:
            {
                var junk    = clientMessage.PopWiredInt32();
                var botName = clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new BotTeleport(item.Id, room, room.GetWiredHandler(), botName, items, delay);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbotclothes:
            {
                int    junk    = clientMessage.PopWiredInt32();
                string message = clientMessage.PopFixedString();
                int    furniCount;
                var    items = GetItems(clientMessage, room, out furniCount);
                var    delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new BotChangeLook(item.Id, room, room.GetWiredHandler(), message, delay);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbottalk:
            {
                var    junk        = clientMessage.PopWiredInt32();
                bool   talkorshout = clientMessage.PopWiredInt32() == 1;
                string message     = clientMessage.PopFixedString();
                int    furniCount;
                var    items = GetItems(clientMessage, room, out furniCount);
                var    delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new BotTalkToAll(item.Id, room, room.GetWiredHandler(), message, talkorshout, delay);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbothanditem:
            {
                var    junk     = clientMessage.PopWiredInt32();
                int    handitem = clientMessage.PopWiredInt32();
                string botname  = clientMessage.PopFixedString();
                int    furniCount;
                var    items = GetItems(clientMessage, room, out furniCount);
                var    delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new BotGiveHandItem(item.Id, room, room.GetWiredHandler(), botname, handitem, delay);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionbotfollowavt:
            {
                var    junk         = clientMessage.PopWiredInt32();
                bool   followorstop = clientMessage.PopWiredInt32() == 1;
                string botname      = clientMessage.PopFixedString();
                int    furniCount;
                var    items = GetItems(clientMessage, room, out furniCount);
                var    delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new BotFollowUser(item.Id, room, room.GetWiredHandler(), botname, followorstop, delay);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionmutetriggerer:
            {
                var    junk      = clientMessage.PopWiredInt32();
                uint   mutetimer = clientMessage.PopWiredUInt();
                string botname   = clientMessage.PopFixedString();
                int    furniCount;
                var    items = GetItems(clientMessage, room, out furniCount);
                var    delay = clientMessage.PopWiredUInt();

                IWiredTrigger action = new MuteTriggerer(room.GetWiredHandler(), botname, mutetimer, delay, item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }

            case InteractionType.actionmovetofurni:
            {
                var junk      = clientMessage.PopWiredInt32();
                int direction = clientMessage.PopWiredInt32();
                int length    = clientMessage.PopWiredInt32();
                clientMessage.PopFixedString();
                int furniCount;
                var items = GetItems(clientMessage, room, out furniCount);
                var delay = clientMessage.PopWiredInt32();

                IWiredTrigger action = new MoveToFurni(room.GetWiredHandler(), items, length, direction, delay, item);
                HandleTriggerSave(action, room.GetWiredHandler(), room, item);
                break;
            }
                #endregion
            }
            Session.SendMessage(new ServerMessage(Outgoing.SaveWired));
        }
Esempio n. 23
0
        public void Handle(RoomUser user, Team team, RoomItem item)
        {
            try
            {
                /*
                 * // 0: Lo sentimos. Los premios disponibles son limitados y ya han sido todos repartidos.
                 * // 1: Ya has obtenido este premio. Cada usuari@ sólo puede ganar el mismo premio una vez.
                 * // 2: Hoy ya has sido premiada, prueba suerte mañana!
                 * // 3: Ya has sido premiad@ durante la última hora. Prueba de nuevo dentro de una hora.
                 * // 4: No ha habido suerte esta vez. Prueba de nuevo para hacerte con el premio.
                 * // 5: Ya has reunido todos los premios que podías obtener.
                 * // 6: Has recibido un premio. Mira en Mis Cosas o en Mis Efectos para ver qué es.
                 * // 7: Acabas de recibir una Placa. Mira en Mis Cosas.
                 */

                InteractorGenericSwitch.DoAnimation(item);

                if (user != null && !user.IsBot && user.GetClient() != null && isCorrectInt(user))
                {
                    var data = ExtraInfo;
                    foreach (var Datas in data.Split(';'))
                    {
                        var isbadge    = int.Parse(Datas.Split(',')[0]);
                        var code       = Datas.Split(',')[1];
                        var percentage = int.Parse(Datas.Split(',')[2]);

                        if (Amount > 0 || AllUsers == 1)
                        {
                            if (isbadge == 0) // placa
                            {
                                #region BadgeCode
                                if (AllUsers == 1) // no porcentaje:
                                {
                                    if (user.GetClient().GetHabbo().GetBadgeComponent().HasBadge(code))
                                    {
                                        var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                        Message.AppendInt32(1);
                                        user.GetClient().SendMessage(Message);
                                    }
                                    else
                                    {
                                        user.GetClient().GetHabbo().GetBadgeComponent().GiveBadge(code);

                                        var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                        Message.AppendInt32(7);
                                        user.GetClient().SendMessage(Message);
                                    }
                                }
                                else
                                {
                                    var randomnumber = new Random().Next(0, 100);
                                    if (randomnumber <= percentage) // premiado
                                    {
                                        if (user.GetClient().GetHabbo().GetBadgeComponent().HasBadge(code))
                                        {
                                            var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                            Message.AppendInt32(1);
                                            user.GetClient().SendMessage(Message);
                                        }
                                        else
                                        {
                                            user.GetClient().GetHabbo().GetBadgeComponent().GiveBadge(code);

                                            var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                            Message.AppendInt32(7);
                                            user.GetClient().SendMessage(Message);
                                        }
                                    }
                                    else
                                    {
                                        var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                        Message.AppendInt32(4);
                                        user.GetClient().SendMessage(Message);
                                    }
                                }
                                #endregion
                            }
                            else // item && Effect
                            {
                                #region Item Or Effect
                                if (AllUsers == 1) // no porcentaje:
                                {
                                    if (code.StartsWith("diamonds:"))
                                    {
                                        int amount = int.Parse(code.Substring(9));
                                        user.GetClient().GetHabbo().GiveUserDiamonds(amount);
                                        user.GetClient().SendNotif("Acaba de receber " + amount + " diamantes.");
                                    }
                                    else if (code.StartsWith("alert:"))
                                    {
                                        string message = code.Substring(6);
                                        user.GetClient().SendNotif(message);
                                    }
                                    else
                                    {
                                        var Item = OtanixEnvironment.GetGame().GetItemManager().GetItem(uint.Parse(code));
                                        if (Item != null)
                                        {
                                            if (Item.Type == 'e') // is effect
                                            {
                                                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().AddEffect(Item.SpriteId, 3600);
                                            }
                                            else
                                            {
                                                user.GetClient().GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, "", true, false, false, Item.Name, user.GetClient().GetHabbo().Id, 0);
                                                user.GetClient().GetHabbo().GetInventoryComponent().UpdateItems(false);
                                            }
                                            var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                            Message.AppendInt32(6);
                                            user.GetClient().SendMessage(Message);
                                        }
                                    }
                                }
                                else
                                {
                                    var randomnumber = new Random().Next(0, 100);
                                    if (randomnumber <= percentage) // premiado
                                    {
                                        if (code.StartsWith("diamonds:"))
                                        {
                                            int amount = int.Parse(code.Substring(9));
                                            user.GetClient().GetHabbo().GiveUserDiamonds(amount);
                                            user.GetClient().SendNotif("Acaba de reciber " + amount + " diamantes.");
                                        }
                                        else if (code.StartsWith("alert:"))
                                        {
                                            string message = code.Substring(6);
                                            user.GetClient().SendNotif(message);
                                        }
                                        else
                                        {
                                            var Item = OtanixEnvironment.GetGame().GetItemManager().GetItem(uint.Parse(code));
                                            if (Item != null)
                                            {
                                                if (Item.Type == 'e') // is effect
                                                {
                                                    user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().AddEffect(Item.SpriteId, 3600);
                                                }
                                                else
                                                {
                                                    user.GetClient().GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, "", true, false, false, Item.Name, user.GetClient().GetHabbo().Id, 0);
                                                    user.GetClient().GetHabbo().GetInventoryComponent().UpdateItems(false);
                                                }
                                                var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                                Message.AppendInt32(6);
                                                user.GetClient().SendMessage(Message);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        var Message = new ServerMessage(Outgoing.NoRewardRoom);
                                        Message.AppendInt32(4);
                                        user.GetClient().SendMessage(Message);
                                    }
                                }
                                #endregion
                            }

                            if (Amount > 0)
                            {
                                Amount--;

                                /*using (var dbClient = HabboEnvironment.GetDatabaseManager().getQueryreactor())
                                 * {
                                 *  var newGenerate = ExtraInfo.ToString() + ";" + Amount + "," + Type + "," + AllUsers + ";false";
                                 *  dbClient.setQuery("REPLACE INTO items_wired (item_id, wired_data) VALUES (@id, @nG)");
                                 *  dbClient.addParameter("id", (int)item.Id);
                                 *  dbClient.addParameter("nG", newGenerate);
                                 *  dbClient.runQuery();
                                 * }*/
                            }
                        }
                        else
                        {
                            var Message = new ServerMessage(Outgoing.NoRewardRoom);
                            Message.AppendInt32(0);
                            user.GetClient().SendMessage(Message);
                        }
                    }
                }
            }
            catch
            {
            }
        }
Esempio n. 24
0
 private void onTrigger(ItemTriggeredArgs e)
 {
     handler.RequestStackHandle(item, e.TriggeringItem, e.TriggeringUser, Team.none);
     InteractorGenericSwitch.DoAnimation(item);
 }