Beispiel #1
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            RoomUser User  = Session.GetRoomUser();
            Group    Group = GroupManager.GetJob(Session.GetRoleplay().JobId);

            #region Conditions
            if (User == null)
            {
                return;
            }

            if (Group == null)
            {
                Session.SendNotification("Somente um policial pode usar esta ferramenta!");
                return;
            }

            if (Group.Id <= 0)
            {
                Session.SendNotification("Somente um policial pode usar esta ferramenta!!");
                return;
            }

            if (!GroupManager.HasJobCommand(Session, "guide"))
            {
                Session.SendNotification("Somente um policial pode usar esta ferramenta!!");
                return;
            }

            if (Session.GetRoleplay().IsDead)
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode trabalhar enquanto está morto!", 1);
                return;
            }

            if (Session.GetRoleplay().IsJailed)
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode trabalhar enquanto está preso!", 1);
                return;
            }

            if (Session.GetRoleplay().IsWorkingOut)
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode trabalhar enquanto está malhando!", 1);
                return;
            }

            if (Session.GetRoleplay().TimerManager.ActiveTimers.ContainsKey("sendhome"))
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode trabalhar enquanto foi enviado para casa!", 1);
                return;
            }

            if (Session.GetRoleplay().Game != null)
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode trabalhar enquanto estiver dentro de um evento!", 1);
                return;
            }

            if (GroupManager.HasJobCommand(Session, "guide") && RoleplayManager.PurgeStarted)
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode começar a trabalhar como policial enquanto uma purga foi ativada!", 1);
                return;
            }

            if (GroupManager.HasJobCommand(Session, "guide") && Session.GetHabbo().CurrentRoom.RoomData.TurfEnabled&& !RoleplayManager.StartWorkInPoliceHQ)
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Você não pode trabalhar como policial enquanto está dentro de um território!", 1);
                return;
            }

            if (BlackListManager.BlackList.Contains(Session.GetHabbo().Id))
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                Session.SendWhisper("Desculpe, mas você está na lista negra da corporação policial!", 1);
                return;
            }
            #endregion

            GuideManager guideManager = PlusEnvironment.GetGame().GetGuideManager();
            bool         onDuty       = Packet.PopBoolean();

            Session.GetRoleplay().HandlingCalls      = Packet.PopBoolean();
            Session.GetRoleplay().HandlingJailbreaks = Packet.PopBoolean();
            Session.GetRoleplay().HandlingHeists     = Packet.PopBoolean();

            if (onDuty)
            {
                if (Session.GetRoleplay().TryGetCooldown("startwork", true))
                {
                    Session.SendMessage(new HelperToolConfigurationComposer(Session));
                    return;
                }

                if (Session.GetRoleplay().CurEnergy <= 0)
                {
                    Session.SendMessage(new HelperToolConfigurationComposer(Session));
                    Session.SendWhisper("Você não tem energia para trabalhar!", 1);
                    return;
                }

                if (!Session.GetRoleplay().IsWorking)
                {
                    Session.GetRoleplay().IsWorking = true;
                    guideManager.AddGuide(Session);
                    Session.Shout("*Começa a trabalhar como " + GroupManager.GetJob(Session.GetRoleplay().JobId).Name + " no cargo " + GroupManager.GetJobRank(Session.GetRoleplay().JobId, Session.GetRoleplay().JobRank).Name + "*", 4);
                    RoleplayManager.GetLookAndMotto(Session);
                    WorkManager.AddWorkerToList(Session);
                    Session.GetRoleplay().TimerManager.CreateTimer("work", 1000, true);
                    Session.GetRoleplay().CooldownManager.CreateCooldown("startwork", 1000, 10);

                    if (Session.GetHabbo().CurrentRoomId != Convert.ToInt32(RoleplayData.GetData("police", "headquartersroomid")))
                    {
                        if (RoleplayManager.StartWorkInPoliceHQ)
                        {
                            RoleplayManager.SendUser(Session, Convert.ToInt32(RoleplayData.GetData("police", "headquartersroomid")));
                        }
                    }
                }
            }
            else
            {
                if (Session.GetRoleplay().TryGetCooldown("stopwork", true))
                {
                    Session.SendMessage(new HelperToolConfigurationComposer(Session));
                    return;
                }
                if (Session.GetRoleplay().IsWorking)
                {
                    Session.GetRoleplay().IsWorking = false;
                    guideManager.RemoveGuide(Session);
                    Session.Shout("*Para de trabalhar como " + GroupManager.GetJob(Session.GetRoleplay().JobId).Name + " [" + GroupManager.GetJobRank(Session.GetRoleplay().JobId, Session.GetRoleplay().JobRank).Name + "]*", 4);
                    WorkManager.RemoveWorkerFromList(Session);
                    Session.GetHabbo().Poof();
                    Session.GetRoleplay().CooldownManager.CreateCooldown("stopwork", 1000, 10);
                }
            }
            Session.SendMessage(new HelperToolConfigurationComposer(Session));
        }
Beispiel #2
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Conditions
            if (Session.GetRoleplay().IsWorking)
            {
                Session.SendWhisper("Você já está trabalhando!", 1);
                return;
            }

            if (Session.GetRoleplay().IsDead)
            {
                Session.SendWhisper("Você não pode trabalhar enquanto está morto!", 1);
                return;
            }

            if (Session.GetRoleplay().IsJailed)
            {
                Session.SendWhisper("Você não pode trabalhar enquanto está preso!", 1);
                return;
            }

            if (Session.GetRoleplay().JobId == 1)
            {
                Session.SendWhisper("Você não pode trabalhar, você está desempregado!", 1);
                return;
            }

            if (Session.GetRoleplay().IsWorkingOut)
            {
                Session.SendWhisper("Você não pode trabalhar enquanto está malhando!", 1);
                return;
            }

            if (Session.GetRoleplay().TimerManager.ActiveTimers.ContainsKey("sendhome"))
            {
                Session.SendWhisper("Você não pode trabalhar enquanto foi enviado para casa!", 1);
                return;
            }

            if (!GroupManager.JobExists(Session.GetRoleplay().JobId, Session.GetRoleplay().JobRank))
            {
                Session.GetRoleplay().TimeWorked = 0;
                Session.GetRoleplay().JobId      = 1;
                Session.GetRoleplay().JobRank    = 1;
                Session.GetRoleplay().JobRequest = 0;

                Group NewJob = GroupManager.GetJob(Session.GetRoleplay().JobId);
                NewJob.AddNewMember(Session.GetHabbo().Id);
                NewJob.SendPackets(Session);

                Session.SendWhisper("Desculpe, seu trabalho não existe! Ele foi removido.", 1);
                return;
            }

            Group     Job  = GroupManager.GetJob(Session.GetRoleplay().JobId);
            GroupRank Rank = GroupManager.GetJobRank(Job.Id, Session.GetRoleplay().JobRank);

            if (!Rank.CanWorkHere(Room.Id))
            {
                Session.SendWhisper("Este não é um dos seus quartos de trabalho! Você trabalha no(s) Quarto(s): [" + String.Join(",", Rank.WorkRooms) + "].", 1);
                return;
            }

            if (Session.GetRoleplay().CurEnergy <= 0)
            {
                Session.SendWhisper("Você não tem energia suficiente para trabalhar!", 1);
                return;
            }

            if (GroupManager.HasJobCommand(Session, "policial") && RoleplayManager.PurgeStarted)
            {
                Session.SendWhisper("Você não pode começar a trabalhar como policial em uma purga!", 1);
                return;
            }

            if (GroupManager.HasJobCommand(Session, "policial") && Room.RoomData.TurfEnabled)
            {
                Session.SendWhisper("Você não pode trabalhar como policial dentro de um território!", 1);
                return;
            }

            if (Session.GetRoleplay().TryGetCooldown("startwork", true))
            {
                return;
            }

            #endregion

            #region Execute
            if (GroupManager.HasJobCommand(Session, "guide"))
            {
                Session.SendMessage(new HelperToolConfigurationComposer(Session));
                return;
            }

            #region Farming Level Check
            int JobRank = 1;
            if (GroupManager.HasJobCommand(Session, "farming"))
            {
                if (!Session.GetRoleplay().FarmingStats.HasPlantSatchel&& !Session.GetRoleplay().FarmingStats.HasSeedSatchel)
                {
                    Session.SendWhisper("O agricultor precisa de um Saco de plantas e um Saco de sementes para que eles possam começar a trabalhar! Compre um no supermercado.", 1);
                    return;
                }

                if (Session.GetRoleplay().FarmingStats.Level < 6)
                {
                    JobRank = 1;
                }
                else if (Session.GetRoleplay().FarmingStats.Level >= 6 && Session.GetRoleplay().FarmingStats.Level < 11)
                {
                    JobRank = 2;
                }
                else if (Session.GetRoleplay().FarmingStats.Level >= 11)
                {
                    JobRank = 3;
                }

                if (JobRank != Session.GetRoleplay().JobRank)
                {
                    Session.GetRoleplay().JobRank = JobRank;
                    Job.UpdateJobMember(Session.GetHabbo().Id);
                }
            }
            #endregion

            Session.GetRoleplay().IsWorking = true;
            RoleplayManager.GetLookAndMotto(Session);
            WorkManager.AddWorkerToList(Session);
            Session.GetRoleplay().TimerManager.CreateTimer("work", 1000, true);
            Session.GetRoleplay().CooldownManager.CreateCooldown("startwork", 1000, 10);
            return;

            #endregion
        }