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; } } } }
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)); }
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); } } }