public bool Execute(params object[] stuff) { RoomUser roomUser = (RoomUser)stuff[0]; RoomItem roomItem = (RoomItem)stuff[1]; if (roomUser == null || roomItem == null) { return(false); } if (!Items.Contains(roomItem)) { return(false); } _mUsers.Add(roomUser); if (Delay == 0) { WiredHandler.OnEvent(this); OnCycle(); } else { if (_mNext == 0L || _mNext < Yupi.Now()) { _mNext = Yupi.Now() + Delay; } Room.GetWiredHandler().EnqueueCycle(this); } return(true); }
public bool Execute(params object[] stuff) { RoomUser roomUser = (RoomUser)stuff[0]; RoomItem roomItem = (RoomItem)stuff[1]; if (!Items.Contains(roomItem) || roomUser.LastItem != roomItem.Id) { return(false); } if ( roomItem.AffectedTiles.Values.Any( current => (current.X == roomUser.X && current.Y == roomUser.Y) || (roomUser.X == roomItem.X && roomUser.Y == roomItem.Y))) { return(false); } ToWork.Enqueue(roomUser); if (Delay == 0) { OnCycle(); } else { _mNext = Yupi.Now() + Delay; Room.GetWiredHandler().EnqueueCycle(this); } return(true); }
public bool OnCycle() { if (!Items.Any()) { return(true); } long num = Yupi.Now(); if (_mNext < num) { foreach (RoomItem current in Items.Where(current => current != null && Room.GetRoomItemHandler().FloorItems.ContainsKey(current.Id))) { current.Interactor.OnWiredTrigger(current); } } if (_mNext >= num) { return(false); } _mNext = 0L; return(true); }
public bool Execute(params object[] stuff) { RoomUser roomUser = (RoomUser)stuff[0]; RoomItem roomItem = (RoomItem)stuff[1]; int userPosition = roomUser.X; int lastUserPosition = roomUser.CopyX; if (!Items.Contains(roomItem) || (roomUser.LastItem != 0 && roomUser.LastItem == roomItem.Id && userPosition == lastUserPosition)) { return(false); } if (roomItem.GetRoom() == null || roomItem.GetRoom().GetRoomItemHandler() == null || roomItem.GetRoom().GetRoomItemHandler().FloorItems.Values.Any(i => i.X == roomItem.X && i.Y == roomItem.Y && i.Z > roomItem.Z)) { return(false); } ToWork.Enqueue(roomUser); if (Delay == 0) { OnCycle(); } else { _mNext = Yupi.Now() + Delay; Room.GetWiredHandler().EnqueueCycle(this); } return(true); }
public bool OnCycle() { long num = Yupi.Now(); if (_mNext >= num) { return(false); } List <IWiredItem> conditions = Room.GetWiredHandler().GetConditions(this); List <IWiredItem> effects = Room.GetWiredHandler().GetEffects(this); if (conditions.Any()) { foreach (IWiredItem current in conditions.Where(current => current.Execute())) { WiredHandler.OnEvent(current); } } if (effects.Any()) { foreach (IWiredItem current2 in effects.Where(current2 => current2.Execute(null, Type))) { WiredHandler.OnEvent(current2); } } _mNext = Yupi.Now() + Delay; return(false); }
public bool OnCycle() { if (!ToWorkConcurrentQueue.Any()) { return(true); } if (Room?.GetRoomItemHandler() == null || Room?.GetRoomItemHandler()?.FloorItems == null) { return(false); } long num = Yupi.Now(); List <RoomUser> toAdd = new List <RoomUser>(); RoomUser roomUser; while (ToWorkConcurrentQueue.TryDequeue(out roomUser)) { if (roomUser?.GetClient() == null) { continue; } if (_mNext <= num) { if (Teleport(roomUser)) { continue; } return(false); } if (_mNext - num < 500L && roomUser.GetClient()?.GetHabbo()?.GetAvatarEffectsInventoryComponent() != null) { roomUser.GetClient()?.GetHabbo()?.GetAvatarEffectsInventoryComponent()?.ActivateCustomEffect(4); } toAdd?.Add(roomUser); } foreach (RoomUser roomUserToAdd in toAdd.Where(roomUserToAdd => roomUserToAdd != null && !ToWorkConcurrentQueue.Contains(roomUserToAdd))) { ToWorkConcurrentQueue.Enqueue(roomUserToAdd); } toAdd.Clear(); if (_mNext >= num) { return(false); } _mNext = 0L; return(true); }
public LongRepeater(RoomItem item, Room room) { Item = item; Room = room; Delay = 10000; Room.GetWiredHandler().EnqueueCycle(this); if (_mNext == 0L || _mNext < Yupi.Now()) { _mNext = Yupi.Now() + Delay; } }
public bool OnCycle() { long num = Yupi.Now(); if (_mNext >= num) { return(false); } List <IWiredItem> conditions = Room.GetWiredHandler().GetConditions(this); List <IWiredItem> effects = Room.GetWiredHandler().GetEffects(this); foreach (RoomUser current in _mUsers) { if (conditions.Any()) { RoomUser current3 = current; if (current3 == null) { continue; } foreach (IWiredItem current2 in conditions.Where(current2 => current2.Execute(current3))) { WiredHandler.OnEvent(current2); } } if (!effects.Any()) { continue; } RoomUser current1 = current; if (current1 == null) { continue; } foreach (IWiredItem current3 in effects.Where(current3 => current3.Execute(current1, Type))) { WiredHandler.OnEvent(current3); } } WiredHandler.OnEvent(this); _mNext = 0L; return(true); }
public bool Execute(params object[] stuff) { if (_mNext == 0L || _mNext < Yupi.Now()) { _mNext = Yupi.Now() + Delay; } if (!Room.GetWiredHandler().IsCycleQueued(this)) { Room.GetWiredHandler().EnqueueCycle(this); } return(true); }
public bool Execute(params object[] stuff) { if (!Items.Any()) { return(false); } if (_mNext == 0L || _mNext < Yupi.Now()) { _mNext = Yupi.Now() + Delay; } Room.GetWiredHandler().EnqueueCycle(this); return(true); }
public bool OnCycle() { long num = Yupi.Now(); if (num <= _mNext) { return(false); } lock (ToWork.SyncRoot) { while (ToWork.Count > 0) { RoomUser roomUser = (RoomUser)ToWork.Dequeue(); List <IWiredItem> conditions = Room.GetWiredHandler().GetConditions(this); List <IWiredItem> effects = Room.GetWiredHandler().GetEffects(this); if (conditions.Any()) { foreach (IWiredItem current in conditions) { if (!current.Execute(roomUser)) { return(false); } WiredHandler.OnEvent(current); } } if (!effects.Any()) { continue; } foreach (IWiredItem current2 in effects.Where(current2 => current2.Execute(roomUser, Type))) { WiredHandler.OnEvent(current2); } } } _mNext = 0L; WiredHandler.OnEvent(this); return(true); }
public bool Execute(params object[] stuff) { if (stuff[0] == null) { return(false); } RoomUser roomUser = (RoomUser)stuff[0]; Interaction item = (Interaction)stuff[1]; if (_mBanned.Contains(item)) { return(false); } if (!Items.Any()) { return(false); } if (!ToWorkConcurrentQueue.Contains(roomUser)) { ToWorkConcurrentQueue.Enqueue(roomUser); } if (Delay < 500) { Delay = 500; } if (Room.GetWiredHandler().IsCycleQueued(this)) { return(false); } if (_mNext == 0L || _mNext < Yupi.Now()) { _mNext = Yupi.Now() + Delay; } Room.GetWiredHandler().EnqueueCycle(this); return(true); }