Пример #1
0
        public override void HandleRequest(GameClient Client, string Message)
        {
            if (!OnDuty)
            {
                return;
            }

            if (GetBotRoleplay().WalkingToItem)
            {
                return;
            }

            if (RespondToSpeech(Client, Message))
            {
                return;
            }

            lock (GroupManager.Jobs)
            {
                List <string> JobNames = GroupManager.Jobs.Values.Select(x => x.Name.ToLower()).ToList();
                string        Name     = GetBotRoleplay().Name.ToLower();

                if (Message.ToLower() == "promover")
                {
                    var Job = GroupManager.GetJob(Client.GetRoleplay().JobId);

                    if (Job == null || Job.Id == 1)
                    {
                        string WhisperMessage = "Obter um emprego primeiro!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }

                    if (!GroupManager.JobExists(Job.Id, Client.GetRoleplay().JobRank + 1) || Client.GetRoleplay().JobRank > 3)
                    {
                        string WhisperMessage = "Desculpe, mas não posso promovê-lo mais! Pergunte ao seu fundador corporativo em vez disso!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }

                    if (GroupManager.HasJobCommand(Client, "guide"))
                    {
                        string WhisperMessage = "Desculpe, mas apenas o chefe da polícia pode promovê-lo!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }

                    if (GroupManager.HasJobCommand(Client, "farming"))
                    {
                        string WhisperMessage = "Desculpe, mas os agricultores são promovidos automaticamente ao nivelar a agricultura deles!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }

                    int TimeRequired = Client.GetRoleplay().JobRank * 200;

                    if (Client.GetRoleplay().TimeWorked >= TimeRequired)
                    {
                        var OldJobRank = GroupManager.GetJobRank(Job.Id, Client.GetRoleplay().JobRank);
                        var NewJobRank = GroupManager.GetJobRank(Job.Id, Client.GetRoleplay().JobRank + 1);

                        GetRoomUser().Chat("*Promove " + Client.GetHabbo().Username + " de " + OldJobRank.Name + " para um " + NewJobRank.Name + " na empresa " + Job.Name + "*", true);

                        if (Client.GetRoleplay().IsWorking)
                        {
                            WorkManager.RemoveWorkerFromList(Client);
                            Client.GetRoleplay().IsWorking = false;
                            Client.GetHabbo().Poof();
                        }

                        Client.GetRoleplay().JobRank++;
                        Job.UpdateJobMember(Client.GetHabbo().Id);
                        return;
                    }
                    else
                    {
                        string WhisperMessage = "Desculpe, mas você precisa " + TimeRequired + " minutos trabalhados para ser promovido!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }
                }
                if (Message.ToLower() == Name)
                {
                    GetRoomUser().Chat("Sim " + Client.GetHabbo().Username + ", você quer um emprego?", true);
                }
                else if (Message.ToLower() == "emprego" || Message.ToLower() == "empregos" || Message.ToLower() == "trabalho")
                {
                    StringBuilder    JobList  = new StringBuilder().Append("<------ Trabalhos Disponíveis ------>\n\n");
                    List <GroupRank> JobRanks = GroupManager.Jobs.Values.Where(x => x.Id > 1).Select(x => GroupManager.GetJobRank(x.Id, 1)).Where(x => x != null).ToList();

                    foreach (GroupRank Rank in JobRanks)
                    {
                        Group Job = GroupManager.GetJob(Rank.JobId);

                        if (Job != null && Job.Members.Count < Rank.Limit)
                        {
                            JobList.Append("" + Job.Name + " - Salário R$" + Rank.Pay + " por 15 minutos. [" + (Rank.Limit - Job.Members.Count) + " vagas restantes]\n\n");
                        }
                    }
                    Client.SendMessage(new MOTDNotificationComposer(JobList.ToString()));
                }
                else if (JobNames.Contains(Message.ToLower()))
                {
                    Group Job = GroupManager.Jobs.Values.FirstOrDefault(x => x.Name.ToLower() == Message.ToLower());

                    if (Job == null)
                    {
                        return;
                    }

                    GroupRank JobRank = GroupManager.GetJobRank(Job.Id, 1);

                    if (JobRank == null)
                    {
                        return;
                    }

                    if (Job.Members.Values.Where(x => x.UserRank == 1).ToList().Count < JobRank.Limit)
                    {
                        if (JobRank.HasCommand("guide") && BlackListManager.BlackList.Contains(Client.GetHabbo().Id))
                        {
                            string WhisperMessage = "Desculpe, mas você foi na lista negra de se juntar à corporação policial!";
                            Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                            return;
                        }

                        if (JobRank.HasCommand("guide"))
                        {
                            if (Client.GetRoleplay().Level < 5)
                            {
                                string WhisperMessage = "Desculpe, mas você precisa ser nível 5 ou mais para entrar neste emprego!";
                                Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                                return;
                            }
                        }

                        if (JobRank.HasCommand("exercito"))
                        {
                            if (Client.GetRoleplay().Level < 3)
                            {
                                string WhisperMessage = "Desculpe, mas você precisa ser nível 3 ou mais para entrar neste emprego!";
                                Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                                return;
                            }
                        }

                        if (JobRank.HasCommand("carlos"))
                        {
                            if (Client.GetRoleplay().JobRank < 2)
                            {
                                string WhisperMessage = "Você precisa ser um Cabo do Exército para entrar neste cargo";
                                Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                                return;
                            }
                        }

                        if (Client.GetRoleplay().JobId == Job.Id)
                        {
                            string WhisperMessage = "Você já trabalha na corporação " + Job.Name + "!";
                            Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                            return;
                        }

                        if (Client.GetRoleplay().OfferManager.ActiveOffers.ContainsKey("emprego"))
                        {
                            string WhisperMessage = "Você já recebeu uma oferta de Emprego! Digite ':aceitar emprego' ou ':recusar emprego' ou :ofertas, para ver o que aceitar/recusar!";
                            Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                            return;
                        }

                        Client.GetRoleplay().OfferManager.CreateOffer("emprego", 0, Job.Id, this);
                        Client.SendWhisper("Você acabou de receber um emprego na empresa " + Job.Name + " como um " + JobRank.Name + "! Digite ':aceitar emprego' para aceitar!", 1);
                        GetRoomUser().Chat("*Oferece um emprego para " + Client.GetHabbo().Username + " na Empresa " + Job.Name + "*", true);
                        return;
                    }
                    else
                    {
                        string WhisperMessage = "Desculpe, mas a empresa " + Job.Name + " não está contratando ninguém agora!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }
                }
            }
        }
Пример #2
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int       GroupId   = Packet.PopInt();
            int       UserId    = Packet.PopInt();
            Group     Group     = null;
            GroupRank GroupRank = null;

            if (GroupId < 1000)
            {
                Group     = GroupManager.GetJob(GroupId);
                GroupRank = GroupManager.GetJobRank(GroupId, 1);
            }
            else
            {
                Group     = GroupManager.GetGang(GroupId);
                GroupRank = GroupManager.GetGangRank(GroupId, 1);
            }

            if (Group == null)
            {
                return;
            }

            if (GroupId < 1000 && !Group.IsMember(Session.GetHabbo().Id) && !Session.GetHabbo().GetPermissions().HasRight("corporation_rights"))
            {
                return;
            }

            bool IsAdmin = false;

            if (Group.IsAdmin(Session.GetHabbo().Id))
            {
                IsAdmin = true;
            }
            if (GroupId < 1000 && Session.GetHabbo().GetPermissions().HasRight("corporation_rights"))
            {
                IsAdmin = true;
            }

            bool IsOwner = false;

            if (Group.CreatorId == Session.GetHabbo().Id)
            {
                IsOwner = true;
            }
            if (GroupId < 1000 && Session.GetHabbo().GetPermissions().HasRight("roleplay_corp_manager"))
            {
                IsOwner = true;
            }

            if (!IsAdmin && !IsOwner)
            {
                return;
            }

            if (!Group.HasRequest(UserId))
            {
                return;
            }

            Habbo Habbo = PlusEnvironment.GetHabboById(UserId);

            if (Habbo == null)
            {
                Session.SendNotification("Opa, ocorreu um erro ao encontrar este usuário.");
                return;
            }

            if (Group.Id < 1000)
            {
                if (GroupRank.HasCommand("guide"))
                {
                    if (BlackListManager.BlackList.Contains(UserId))
                    {
                        Group.HandleRequest(UserId, false);
                        Session.SendMessage(new GroupInfoComposer(Group, Session));
                        Session.SendMessage(new UnknownGroupComposer(Group.Id, UserId));
                        Session.SendWhisper("Desculpe, mas este usuário está na lista negra e não pode se juntar à corporação policial!", 1);
                        return;
                    }
                }
            }

            GameClient Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Habbo.Id);

            if (Client != null && Client.GetRoleplay() != null)
            {
                if (Group.Id < 1000)
                {
                    if (Client.GetRoleplay().IsWorking)
                    {
                        Client.GetRoleplay().IsWorking = false;
                        WorkManager.RemoveWorkerFromList(Client);
                    }
                    Client.GetRoleplay().TimeWorked = 0;
                    Client.GetRoleplay().JobId      = Group.Id;
                    Client.GetRoleplay().JobRank    = 1;
                    Client.GetRoleplay().JobRequest = 0;
                }
                else
                {
                    Client.GetRoleplay().GangId      = Group.Id;
                    Client.GetRoleplay().GangRank    = 1;
                    Client.GetRoleplay().GangRequest = 0;
                }
            }

            Group.HandleRequest(UserId, true);
            Group.SendPackets(Client);

            string Username = Habbo == null ? "someone" : Habbo.Username;

            if (Group.Id < 1000)
            {
                Session.SendWhisper("Sucesso, você aceitou " + Username + " na sua empresa '" + Group.Name + "' no cargo '" + GroupRank.Name + "'!", 1);
            }
            else
            {
                Session.SendWhisper("Sucesso, você aceitou" + Username + " na sua gangue '" + Group.Name + "' no cargo '" + GroupRank.Name + "'!", 1);
            }
            Session.SendMessage(new GroupMemberUpdatedComposer(Group.Id, Habbo, 4));
        }
Пример #3
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null)
            {
                return;
            }

            int       GroupId   = Packet.PopInt();
            Group     Group     = null;
            GroupRank GroupRank = null;

            if (GroupId < 1000)
            {
                Group     = GroupManager.GetJob(GroupId);
                GroupRank = GroupManager.GetJobRank(GroupId, 1);
            }
            else
            {
                Group     = GroupManager.GetGang(GroupId);
                GroupRank = GroupManager.GetGangRank(GroupId, 1);
            }

            if (GroupId >= 1000)
            {
                Group CurrentGang = GroupManager.GetGang(Session.GetRoleplay().GangId);

                if (CurrentGang != null && CurrentGang.CreatorId == Session.GetHabbo().Id)
                {
                    Session.SendNotification("Você deve excluir sua primeira gangue se quiser se juntar a outra gangue!");
                    return;
                }
            }

            if (Group == null)
            {
                return;
            }

            if (Group.IsMember(Session.GetHabbo().Id) || Group.IsAdmin(Session.GetHabbo().Id))
            {
                return;
            }

            if (Group.GroupType == GroupType.LOCKED && Group.HasRequest(Session.GetHabbo().Id))
            {
                return;
            }

            if (Group.GroupType == GroupType.PRIVATE)
            {
                return;
            }

            List <Group> Groups = PlusEnvironment.GetGame().GetGroupManager().GetGroupsForUser(Session.GetHabbo().Id);

            if (Groups.Count >= 3)
            {
                Session.SendMessage(new BroadcastMessageAlertComposer("Opa, parece que você atingiu o limite do grupo! Você só pode juntar até 1.500 grupos."));
                return;
            }

            if (Group.Id < 1000 && GroupRank.HasCommand("guide"))
            {
                if (BlackListManager.BlackList.Contains(Session.GetHabbo().Id))
                {
                    Session.SendWhisper("Você está na lista negra e não pode se juntar à corporação da polícia!", 1);
                    return;
                }
            }

            if (GroupId < 1000)
            {
                if (Group.GroupType == GroupType.LOCKED && !Session.GetHabbo().GetPermissions().HasRight("corporation_rights"))
                {
                    Session.GetRoleplay().JobRequest = GroupId;
                    Group.Requests.Add(Session.GetHabbo().Id);

                    Session.SendWhisper("Sucesso, você solicitou com sucesso para se juntar à empresa '" + Group.Name + "'!", 1);
                    List <GameClient> GroupAdmins = (from Client in PlusEnvironment.GetGame().GetClientManager().GetClients.ToList() where Client != null && Client.GetHabbo() != null && (Group.IsAdmin(Client.GetHabbo().Id) || Client.GetHabbo().GetPermissions().HasRight("corporation_rights")) select Client).ToList();
                    foreach (GameClient Client in GroupAdmins)
                    {
                        Client.SendMessage(new GroupMembershipRequestedComposer(Group.Id, Session.GetHabbo(), 3));
                    }
                    Session.SendMessage(new GroupInfoComposer(Group, Session));
                    return;
                }
                else
                {
                    int Bubble = 4;
                    if (Session.GetHabbo().GetPermissions().HasRight("corporation_rights"))
                    {
                        Bubble = 23;
                    }

                    Session.Shout("*Se contrata como um " + Group.Name + " no cargo " + GroupRank.Name + "*", Bubble);

                    //Session.SendMessage(new GroupFurniConfigComposer(PlusEnvironment.GetGame().GetGroupManager().GetGroupsForUser(Session.GetHabbo().Id)));

                    Session.GetRoleplay().TimeWorked = 0;
                    Session.GetRoleplay().JobId      = Group.Id;
                    Session.GetRoleplay().JobRank    = 1;
                    Session.GetRoleplay().JobRequest = 0;

                    Group.AddNewMember(Session.GetHabbo().Id);
                    Group.SendPackets(Session);
                }
            }
            else
            {
                if (Group.GroupType == GroupType.LOCKED)
                {
                    Session.GetRoleplay().GangRequest = GroupId;
                    Group.Requests.Add(Session.GetHabbo().Id);

                    Session.SendWhisper("Sucesso, você solicitou com sucesso para se juntar à gangue '" + Group.Name + "'!", 1);

                    List <GameClient> GroupAdmins = (from Client in PlusEnvironment.GetGame().GetClientManager().GetClients.ToList() where Client != null && Client.GetHabbo() != null && (Group.IsAdmin(Client.GetHabbo().Id)) select Client).ToList();
                    foreach (GameClient Client in GroupAdmins)
                    {
                        Client.SendMessage(new GroupMembershipRequestedComposer(Group.Id, Session.GetHabbo(), 3));
                    }

                    Session.SendMessage(new GroupInfoComposer(Group, Session));

                    UserCache Junk = null;
                    PlusEnvironment.GetGame().GetCacheManager().TryRemoveUser(Session.GetHabbo().Id, out Junk);
                    PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Session.GetHabbo().Id);
                }
                else
                {
                    Session.Shout("*Entra na gangue '" + Group.Name + "' no cargo " + GroupRank.Name + "*", 4);

                    Session.SendMessage(new GroupFurniConfigComposer(PlusEnvironment.GetGame().GetGroupManager().GetGroupsForUser(Session.GetHabbo().Id)));

                    Session.GetRoleplay().GangId      = Group.Id;
                    Session.GetRoleplay().GangRank    = 1;
                    Session.GetRoleplay().GangRequest = 0;

                    Group.AddNewMember(Session.GetHabbo().Id);
                    Group.SendPackets(Session);
                }
            }
        }