2018-07-06 15:30:00 +02:00
|
|
|
package com.eu.habbo.messages.incoming.rooms;
|
|
|
|
|
|
|
|
import com.eu.habbo.Emulator;
|
|
|
|
import com.eu.habbo.habbohotel.rooms.Room;
|
|
|
|
import com.eu.habbo.habbohotel.rooms.RoomCategory;
|
|
|
|
import com.eu.habbo.habbohotel.rooms.RoomState;
|
|
|
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
|
|
|
import com.eu.habbo.messages.outgoing.rooms.*;
|
|
|
|
|
|
|
|
public class RoomSettingsSaveEvent extends MessageHandler
|
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public void handle() throws Exception
|
|
|
|
{
|
|
|
|
int roomId = this.packet.readInt();
|
|
|
|
|
|
|
|
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId);
|
|
|
|
|
|
|
|
if(room != null)
|
|
|
|
{
|
|
|
|
if(room.isOwner(this.client.getHabbo()))
|
|
|
|
{
|
|
|
|
String name = this.packet.readString();
|
|
|
|
|
|
|
|
if (name.isEmpty())
|
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_NAME_MISSING, ""));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!Emulator.getGameEnvironment().getWordFilter().filter(name, this.client.getHabbo()).equals(name))
|
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_NAME_BADWORDS, ""));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
String description = this.packet.readString();
|
|
|
|
if (!Emulator.getGameEnvironment().getWordFilter().filter(description, this.client.getHabbo()).equals(description))
|
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_DESCRIPTION_BADWORDS, ""));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
RoomState state = RoomState.values()[this.packet.readInt() % RoomState.values().length];
|
|
|
|
|
|
|
|
String password = this.packet.readString();
|
|
|
|
if (state == RoomState.PASSWORD && password.isEmpty())
|
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.PASSWORD_REQUIRED, ""));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
int usersMax = this.packet.readInt();
|
|
|
|
int categoryId = this.packet.readInt();
|
2019-03-18 02:22:00 +01:00
|
|
|
StringBuilder tags = new StringBuilder();
|
2018-07-06 15:30:00 +02:00
|
|
|
int count = Math.min(this.packet.readInt(), 2);
|
|
|
|
for(int i = 0; i < count; i++)
|
|
|
|
{
|
|
|
|
String tag = this.packet.readString();
|
|
|
|
|
|
|
|
if (tag.length() > 15)
|
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.TAGS_TOO_LONG, ""));
|
|
|
|
return;
|
|
|
|
}
|
2019-03-18 02:22:00 +01:00
|
|
|
tags.append(tag).append(";");
|
2018-07-06 15:30:00 +02:00
|
|
|
}
|
|
|
|
|
2019-03-18 02:22:00 +01:00
|
|
|
if (!Emulator.getGameEnvironment().getWordFilter().filter(tags.toString(), this.client.getHabbo()).equals(tags.toString()))
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_TAGS_BADWWORDS, ""));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-03-18 02:22:00 +01:00
|
|
|
if (tags.length() > 0)
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
|
|
|
for (String s : Emulator.getConfig().getValue("hotel.room.tags.staff").split(";"))
|
|
|
|
{
|
2019-03-18 02:22:00 +01:00
|
|
|
if (tags.toString().contains(s))
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
|
|
|
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.RESTRICTED_TAGS, "1"));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
room.setName(name);
|
|
|
|
room.setDescription(description);
|
|
|
|
room.setState(state);
|
|
|
|
room.setPassword(password);
|
|
|
|
room.setUsersMax(usersMax);
|
|
|
|
|
|
|
|
|
|
|
|
if(Emulator.getGameEnvironment().getRoomManager().hasCategory(categoryId, this.client.getHabbo()))
|
|
|
|
room.setCategory(categoryId);
|
|
|
|
else
|
|
|
|
{
|
|
|
|
RoomCategory category = Emulator.getGameEnvironment().getRoomManager().getCategory(categoryId);
|
|
|
|
|
2019-03-18 02:22:00 +01:00
|
|
|
String message;
|
2018-07-06 15:30:00 +02:00
|
|
|
|
|
|
|
if(category == null)
|
|
|
|
{
|
2019-03-18 02:22:00 +01:00
|
|
|
message = Emulator.getTexts().getValue("scripter.warning.roomsettings.category.nonexisting").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername());
|
2018-07-06 15:30:00 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-03-18 02:22:00 +01:00
|
|
|
message = Emulator.getTexts().getValue("scripter.warning.roomsettings.category.permission").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%category%", Emulator.getGameEnvironment().getRoomManager().getCategory(categoryId) + "");
|
2018-07-06 15:30:00 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
Emulator.getGameEnvironment().getModToolManager().quickTicket(this.client.getHabbo(), "Scripter", message);
|
|
|
|
Emulator.getLogging().logUserLine(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-03-18 02:22:00 +01:00
|
|
|
room.setTags(tags.toString());
|
2018-07-06 15:30:00 +02:00
|
|
|
room.setTradeMode(this.packet.readInt());
|
|
|
|
room.setAllowPets(this.packet.readBoolean());
|
|
|
|
room.setAllowPetsEat(this.packet.readBoolean());
|
|
|
|
room.setAllowWalkthrough(this.packet.readBoolean());
|
|
|
|
room.setHideWall(this.packet.readBoolean());
|
|
|
|
room.setWallSize(this.packet.readInt());
|
|
|
|
room.setFloorSize(this.packet.readInt());
|
|
|
|
room.setMuteOption(this.packet.readInt());
|
|
|
|
room.setKickOption(this.packet.readInt());
|
|
|
|
room.setBanOption(this.packet.readInt());
|
|
|
|
room.setChatMode(this.packet.readInt());
|
|
|
|
room.setChatWeight(this.packet.readInt());
|
|
|
|
room.setChatSpeed(this.packet.readInt());
|
|
|
|
room.setChatDistance(Math.abs(this.packet.readInt()));
|
|
|
|
room.setChatProtection(this.packet.readInt());
|
|
|
|
room.setNeedsUpdate(true);
|
|
|
|
|
|
|
|
room.sendComposer(new RoomThicknessComposer(room).compose());
|
|
|
|
room.sendComposer(new RoomChatSettingsComposer(room).compose());
|
|
|
|
room.sendComposer(new RoomSettingsUpdatedComposer(room).compose());
|
|
|
|
this.client.sendResponse(new RoomSettingsSavedComposer(room));
|
|
|
|
//TODO Find packet for update room name.
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|