This commit is contained in:
Remco 2020-11-03 00:37:55 +01:00
commit 9ae0e26de0
4 changed files with 70 additions and 45 deletions

View File

@ -78,6 +78,8 @@ INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.auto.points.hc_mo
INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.auto.credits.hc_modifier', '1'); INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.auto.credits.hc_modifier', '1');
INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.auto.gotwpoints.hc_modifier', '1'); INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.auto.gotwpoints.hc_modifier', '1');
INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('room.chat.mutearea.allow_whisper', '1');
DELETE FROM `emulator_settings` WHERE `key` IN ('hotel.max.rooms.per.user', 'hotel.max.rooms.user', 'hotel.max.rooms.vip', 'max.friends', 'hotel.max.friends', 'max.friends.hc', 'hotel.max.friends.hc'); DELETE FROM `emulator_settings` WHERE `key` IN ('hotel.max.rooms.per.user', 'hotel.max.rooms.user', 'hotel.max.rooms.vip', 'max.friends', 'hotel.max.friends', 'max.friends.hc', 'hotel.max.friends.hc');
ALTER TABLE `users_settings` ADD COLUMN `max_friends` int(10) NULL DEFAULT 300 AFTER `has_gotten_default_saved_searches`; ALTER TABLE `users_settings` ADD COLUMN `max_friends` int(10) NULL DEFAULT 300 AFTER `has_gotten_default_saved_searches`;
@ -101,3 +103,7 @@ INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('subscriptions.hc.payday.m
-- OPTIONAL HC MIGRATION -- OPTIONAL HC MIGRATION
-- INSERT INTO users_subscriptions SELECT NULL, user_id, 'HABBO_CLUB' as `subscription_type`, UNIX_TIMESTAMP() AS `timestamp_start`, (club_expire_timestamp - UNIX_TIMESTAMP()) AS `duration`, 1 AS `active` FROM users_settings WHERE club_expire_timestamp > UNIX_TIMESTAMP(); -- INSERT INTO users_subscriptions SELECT NULL, user_id, 'HABBO_CLUB' as `subscription_type`, UNIX_TIMESTAMP() AS `timestamp_start`, (club_expire_timestamp - UNIX_TIMESTAMP()) AS `duration`, 1 AS `active` FROM users_settings WHERE club_expire_timestamp > UNIX_TIMESTAMP();
ALTER TABLE `bots`
ADD COLUMN `bubble_id` int(3) NULL DEFAULT 31 AFTER `effect`;

View File

@ -44,6 +44,7 @@ public class Bot implements Runnable {
private int chatTimeOut; private int chatTimeOut;
private int chatTimestamp; private int chatTimestamp;
private short lastChatIndex; private short lastChatIndex;
private int bubble;
private String type; private String type;
@ -73,6 +74,7 @@ public class Bot implements Runnable {
this.chatLines = new ArrayList<>(); this.chatLines = new ArrayList<>();
this.type = "generic_bot"; this.type = "generic_bot";
this.room = null; this.room = null;
this.bubble = RoomChatMessageBubbles.BOT_RENTABLE.getType();
} }
public Bot(ResultSet set) throws SQLException { public Bot(ResultSet set) throws SQLException {
@ -94,6 +96,7 @@ public class Bot implements Runnable {
this.roomUnit = null; this.roomUnit = null;
this.chatTimeOut = Emulator.getIntUnixTimestamp() + this.chatDelay; this.chatTimeOut = Emulator.getIntUnixTimestamp() + this.chatDelay;
this.needsUpdate = false; this.needsUpdate = false;
this.bubble = set.getInt("bubble_id");
} }
public Bot(Bot bot) { public Bot(Bot bot) {
@ -110,6 +113,7 @@ public class Bot implements Runnable {
this.chatLines = new ArrayList<>(Arrays.asList("Default Message :D")); this.chatLines = new ArrayList<>(Arrays.asList("Default Message :D"));
this.type = bot.getType(); this.type = bot.getType();
this.effect = bot.getEffect(); this.effect = bot.getEffect();
this.bubble = bot.getBubbleId();
this.needsUpdate = false; this.needsUpdate = false;
} }
@ -133,7 +137,7 @@ public class Bot implements Runnable {
@Override @Override
public void run() { public void run() {
if (this.needsUpdate) { if (this.needsUpdate) {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE bots SET name = ?, motto = ?, figure = ?, gender = ?, user_id = ?, room_id = ?, x = ?, y = ?, z = ?, rot = ?, dance = ?, freeroam = ?, chat_lines = ?, chat_auto = ?, chat_random = ?, chat_delay = ?, effect = ? WHERE id = ?")) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE bots SET name = ?, motto = ?, figure = ?, gender = ?, user_id = ?, room_id = ?, x = ?, y = ?, z = ?, rot = ?, dance = ?, freeroam = ?, chat_lines = ?, chat_auto = ?, chat_random = ?, chat_delay = ?, effect = ?, bubble_id = ? WHERE id = ?")) {
statement.setString(1, this.name); statement.setString(1, this.name);
statement.setString(2, this.motto); statement.setString(2, this.motto);
statement.setString(3, this.figure); statement.setString(3, this.figure);
@ -155,7 +159,8 @@ public class Bot implements Runnable {
statement.setString(15, this.chatRandom ? "1" : "0"); statement.setString(15, this.chatRandom ? "1" : "0");
statement.setInt(16, this.chatDelay); statement.setInt(16, this.chatDelay);
statement.setInt(17, this.effect); statement.setInt(17, this.effect);
statement.setInt(18, this.id); statement.setInt(18, this.bubble);
statement.setInt(19, this.id);
statement.execute(); statement.execute();
this.needsUpdate = false; this.needsUpdate = false;
} catch (SQLException e) { } catch (SQLException e) {
@ -208,7 +213,7 @@ public class Bot implements Runnable {
return; return;
this.chatTimestamp = Emulator.getIntUnixTimestamp(); this.chatTimestamp = Emulator.getIntUnixTimestamp();
this.room.botChat(new RoomUserTalkComposer(new RoomChatMessage(event.message, this.roomUnit, RoomChatMessageBubbles.BOT_RENTABLE)).compose()); this.room.botChat(new RoomUserTalkComposer(new RoomChatMessage(event.message, this.roomUnit, RoomChatMessageBubbles.getBubble(this.getBubbleId()))).compose());
if (message.equals("o/") || message.equals("_o/")) { if (message.equals("o/") || message.equals("_o/")) {
this.room.sendComposer(new RoomUserActionComposer(this.roomUnit, RoomUserAction.WAVE).compose()); this.room.sendComposer(new RoomUserActionComposer(this.roomUnit, RoomUserAction.WAVE).compose());
@ -223,7 +228,7 @@ public class Bot implements Runnable {
return; return;
this.chatTimestamp = Emulator.getIntUnixTimestamp(); this.chatTimestamp = Emulator.getIntUnixTimestamp();
this.room.botChat(new RoomUserShoutComposer(new RoomChatMessage(event.message, this.roomUnit, RoomChatMessageBubbles.BOT_RENTABLE)).compose()); this.room.botChat(new RoomUserShoutComposer(new RoomChatMessage(event.message, this.roomUnit, RoomChatMessageBubbles.getBubble(this.getBubbleId()))).compose());
if (message.equals("o/") || message.equals("_o/")) { if (message.equals("o/") || message.equals("_o/")) {
this.room.sendComposer(new RoomUserActionComposer(this.roomUnit, RoomUserAction.WAVE).compose()); this.room.sendComposer(new RoomUserActionComposer(this.roomUnit, RoomUserAction.WAVE).compose());
@ -238,7 +243,7 @@ public class Bot implements Runnable {
return; return;
this.chatTimestamp = Emulator.getIntUnixTimestamp(); this.chatTimestamp = Emulator.getIntUnixTimestamp();
event.target.getClient().sendResponse(new RoomUserWhisperComposer(new RoomChatMessage(event.message, this.roomUnit, RoomChatMessageBubbles.BOT_RENTABLE))); event.target.getClient().sendResponse(new RoomUserWhisperComposer(new RoomChatMessage(event.message, this.roomUnit, RoomChatMessageBubbles.getBubble(this.getBubbleId()))));
} }
} }
@ -270,6 +275,10 @@ public class Bot implements Runnable {
return this.name; return this.name;
} }
public int getBubbleId() {
return bubble;
}
public void setName(String name) { public void setName(String name) {
this.name = name; this.name = name;
this.needsUpdate = true; this.needsUpdate = true;

View File

@ -1,5 +1,6 @@
package com.eu.habbo.habbohotel.users.clothingvalidation; package com.eu.habbo.habbohotel.users.clothingvalidation;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@ -57,55 +58,64 @@ public class Figuredata {
for(int i = 0; i < palettesList.getLength(); i++) { for(int i = 0; i < palettesList.getLength(); i++) {
Node nNode = palettesList.item(i); Node nNode = palettesList.item(i);
Element element = (Element)nNode; if(nNode.getNodeType() == Node.ELEMENT_NODE) {
int paletteId = Integer.parseInt(element.getAttribute("id")); Element element = (Element) nNode;
FiguredataPalette palette = new FiguredataPalette(paletteId); int paletteId = Integer.parseInt(element.getAttribute("id"));
FiguredataPalette palette = new FiguredataPalette(paletteId);
NodeList colorsList = nNode.getChildNodes(); NodeList colorsList = nNode.getChildNodes();
for(int ii = 0; ii < colorsList.getLength(); ii++) { for (int ii = 0; ii < colorsList.getLength(); ii++) {
Element colorElement = (Element)colorsList.item(ii); if(colorsList.item(ii).getNodeType() == Node.ELEMENT_NODE) {
FiguredataPaletteColor color = new FiguredataPaletteColor( Element colorElement = (Element) colorsList.item(ii);
Integer.parseInt(colorElement.getAttribute("id")), FiguredataPaletteColor color = new FiguredataPaletteColor(
Integer.parseInt(colorElement.getAttribute("index")), Integer.parseInt(colorElement.getAttribute("id")),
!colorElement.getAttribute("club").equals("0"), Integer.parseInt(colorElement.getAttribute("index")),
colorElement.getAttribute("selectable").equals("1"), !colorElement.getAttribute("club").equals("0"),
colorElement.getTextContent() colorElement.getAttribute("selectable").equals("1"),
); colorElement.getTextContent()
palette.addColor(color); );
palette.addColor(color);
}
}
palettes.put(palette.id, palette);
} }
palettes.put(palette.id, palette);
} }
for(int i = 0; i < settypesList.getLength(); i++) { for(int i = 0; i < settypesList.getLength(); i++) {
Node nNode = settypesList.item(i); Node nNode = settypesList.item(i);
Element element = (Element)nNode;
String type = element.getAttribute("type"); if(nNode.getNodeType() == Node.ELEMENT_NODE) {
int paletteId = Integer.parseInt(element.getAttribute("paletteid")); Element element = (Element) nNode;
boolean mandM0 = element.getAttribute("mand_m_0").equals("1");
boolean mandF0 = element.getAttribute("mand_f_0").equals("1");
boolean mandM1 = element.getAttribute("mand_m_1").equals("1");
boolean mandF1 = element.getAttribute("mand_f_1").equals("1");
FiguredataSettype settype = new FiguredataSettype(type, paletteId, mandM0, mandF0, mandM1, mandF1); String type = element.getAttribute("type");
int paletteId = Integer.parseInt(element.getAttribute("paletteid"));
boolean mandM0 = element.getAttribute("mand_m_0").equals("1");
boolean mandF0 = element.getAttribute("mand_f_0").equals("1");
boolean mandM1 = element.getAttribute("mand_m_1").equals("1");
boolean mandF1 = element.getAttribute("mand_f_1").equals("1");
NodeList setsList = nNode.getChildNodes(); FiguredataSettype settype = new FiguredataSettype(type, paletteId, mandM0, mandF0, mandM1, mandF1);
for(int ii = 0; ii < setsList.getLength(); ii++) {
Element setElement = (Element)setsList.item(ii); NodeList setsList = nNode.getChildNodes();
FiguredataSettypeSet set = new FiguredataSettypeSet( for (int ii = 0; ii < setsList.getLength(); ii++) {
Integer.parseInt(setElement.getAttribute("id")), if(setsList.item(ii).getNodeType() == Node.ELEMENT_NODE) {
setElement.getAttribute("gender"), Element setElement = (Element) setsList.item(ii);
!setElement.getAttribute("club").equals("0"), FiguredataSettypeSet set = new FiguredataSettypeSet(
setElement.getAttribute("colorable").equals("1"), Integer.parseInt(setElement.getAttribute("id")),
setElement.getAttribute("selectable").equals("1"), setElement.getAttribute("gender"),
setElement.getAttribute("preselectable").equals("1"), !setElement.getAttribute("club").equals("0"),
setElement.getAttribute("sellable").equals("1") setElement.getAttribute("colorable").equals("1"),
); setElement.getAttribute("selectable").equals("1"),
settype.addSet(set); setElement.getAttribute("preselectable").equals("1"),
setElement.getAttribute("sellable").equals("1")
);
settype.addSet(set);
}
}
settypes.put(settype.type, settype);
} }
settypes.put(settype.type, settype);
} }
} }

View File

@ -27,7 +27,7 @@ public class RequestGuildBuyEvent extends MessageHandler {
if(name.length() > 29 || description.length() > 254) if(name.length() > 29 || description.length() > 254)
return; return;
if (Emulator.getConfig().getBoolean("catalog.guild.hc_required", true) && this.client.getHabbo().getHabboStats().getClubExpireTimestamp() < Emulator.getIntUnixTimestamp()) { if (Emulator.getConfig().getBoolean("catalog.guild.hc_required", true) && !this.client.getHabbo().getHabboStats().hasActiveClub()) {
this.client.sendResponse(new GuildEditFailComposer(GuildEditFailComposer.HC_REQUIRED)); this.client.sendResponse(new GuildEditFailComposer(GuildEditFailComposer.HC_REQUIRED));
return; return;
} }