[TUTORIAL] Sistema de filtro para Chat Staff 10.05.17 13:28
Olá Convidado, tudo bem?
Aqui estou trazendo um pequeno tutorial de como colocar um sistema de filtro de publicidade no seu hotel, é basicamente aqueles convites de sala que nós podemos fazer no famoso “CONSOLE”, aquela maneira típica de alertas que quase todos enviam e a maioria diz “Me tira do SPAM”. Enfim, para aqueles que ainda não entendeu, aqui está uma imagem do que eu basicamente estou falando.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Antes de começarmos, não sei se há algum tópico ensinando a colocar Chat Staff, se não tiver, eu até posso fazer um tutorial ensinando como colocar essa ferramenta dentro do seu servidor, pois esse tutorial do sistema sem o Chat Staff não irá funcionar.
A primeira coisa que irá fazer nesse tutorial é abrir a source do seu emulador com o Visual Studio e devemos ir até a class “ChatEvent.cs”. Diretório: Communication->Packets->Incoming->Rooms->Chat
Dentro da class “ChatEvent.cs” iremos copiar esse código que está aqui em baixo e iremos colar dentro da mesma.
- Código:
using System;
using Plus.Core;
using Plus.Communication.Packets.Incoming;
using Plus.Utilities;
using Plus.HabboHotel.Global;
using Plus.HabboHotel.Quests;
using Plus.HabboHotel.Rooms;
using Plus.HabboHotel.GameClients;
using Plus.HabboHotel.Rooms.Chat.Logs;
using Plus.Communication.Packets.Outgoing.Messenger;
using Plus.Communication.Packets.Outgoing.Rooms.Chat;
using Plus.Communication.Packets.Outgoing.Moderation;
using Plus.Communication.Packets.Outgoing.Rooms.Notifications;
using Plus.HabboHotel.Rooms.Chat.Styles;
namespace Plus.Communication.Packets.Incoming.Rooms.Chat
{
public class ChatEvent : IPacketEvent
{
public void Parse(GameClient Session, ClientPacket Packet)
{
if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom)
return;
Room Room = Session.GetHabbo().CurrentRoom;
if (Room == null)
return;
RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
if (User == null)
return;
string Message = StringCharFilter.Escape(Packet.PopString());
if (Message.Length > 100)
Message = Message.Substring(0, 100);
int Colour = Packet.PopInt();
ChatStyle Style = null;
if (!PlusEnvironment.GetGame().GetChatManager().GetChatStyles().TryGetStyle(Colour, out Style) || (Style.RequiredRight.Length > 0 && !Session.GetHabbo().GetPermissions().HasRight(Style.RequiredRight)))
Colour = 0;
User.UnIdle();
if (PlusEnvironment.GetUnixTimestamp() < Session.GetHabbo().FloodTime && Session.GetHabbo().FloodTime != 0)
return;
if (Session.GetHabbo().TimeMuted > 0)
{
Session.SendMessage(new MutedComposer(Session.GetHabbo().TimeMuted));
return;
}
if (!Session.GetHabbo().GetPermissions().HasRight("room_ignore_mute") && Room.CheckMute(Session))
{
Session.SendWhisper("Ups, estás muteado.");
return;
}
User.LastBubble = Session.GetHabbo().CustomBubbleId == 0 ? Colour : Session.GetHabbo().CustomBubbleId;
if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool"))
{
int MuteTime;
if (User.IncrementAndCheckFlood(out MuteTime))
{
Session.SendMessage(new FloodControlComposer(MuteTime));
return;
}
}
if (Message.StartsWith(":", StringComparison.CurrentCulture) && PlusEnvironment.GetGame().GetChatManager().GetCommands().Parse(Session, Message))
return;
PlusEnvironment.GetGame().GetChatManager().GetLogs().StoreChatlog(new ChatlogEntry(Session.GetHabbo().Id, Room.Id, Message, UnixTimestamp.GetNow(), Session.GetHabbo(), Room));
Room.AddChatlog(Session.GetHabbo().Id, Message);
if (PlusEnvironment.GetGame().GetChatManager().GetFilter().IsFiltered(Message) && !Session.GetHabbo().GetPermissions().HasRight("word_filter_override"))
{
PlusEnvironment.GetGame().GetClientManager().StaffAlert(new RoomInviteComposer(-0x7fffffff, "El usuario " + Session.GetHabbo().Username + " al parecer está nombrando otro hotel, frase: " + Message + "."));
if (PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckBannedWords(Message))
{
Session.GetHabbo().BannedPhraseCount++;
if (Session.GetHabbo().BannedPhraseCount >= PlusStaticGameSettings.BannedPhrasesAmount)
{
PlusEnvironment.GetGame().GetModerationManager().BanUser("System", HabboHotel.Moderation.ModerationBanType.USERNAME, Session.GetHabbo().Username, "Por mandar spam con palabras prohibidas (" + Message + ")", (PlusEnvironment.GetUnixTimestamp() + 78892200));
Session.Disconnect();
return;
}
else
{
Session.GetHabbo().GetClient().SendMessage(new WhisperComposer(User.VirtualId, Session.GetHabbo().BannedPhraseCount + "/" + PlusStaticGameSettings.BannedPhrasesAmount +" Estas usando palabras prohibidas. Seras baneado si continuas.", 0, 34));
}
}
Message = null;
}
if (!Session.GetHabbo().GetPermissions().HasRight("word_filter_override") && Message != null)
Message = PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(Message);
PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.SOCIAL_CHAT);
User.OnChat(User.LastBubble, Message, false);
}
}
}
Por fim nós iremos salvar e você terá que dar “Debug” em seu emulador.
O tutorial é simples assim, prático e rápido. Espero ter ajudado!
Créditos: Xpz Holos & Maloma