You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
@@ -1 +1,17 @@
|
|||||||
INSERT INTO `permission_definitions` (`permission_key`, `max_value`, `comment`, `rank_1`, `rank_2`, `rank_3`, `rank_4`, `rank_5`, `rank_6`, `rank_7`) VALUES ('acc_housekeeping', '1', 'Allow housekeeping in the client', '0', '0', '0', '0', '0', '0', '1');
|
INSERT INTO `permission_definitions` (`permission_key`, `max_value`, `comment`, `rank_1`, `rank_2`, `rank_3`, `rank_4`, `rank_5`, `rank_6`, `rank_7`) VALUES ('acc_housekeeping', '1', 'Allow housekeeping in the client', '0', '0', '0', '0', '0', '0', '1');
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `housekeeping_log` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT,
|
||||||
|
`timestamp` INT NOT NULL,
|
||||||
|
`actor_id` INT NOT NULL,
|
||||||
|
`actor_name` VARCHAR(64) NOT NULL DEFAULT '',
|
||||||
|
`target_type` VARCHAR(16) NOT NULL DEFAULT 'user',
|
||||||
|
`target_id` INT NOT NULL DEFAULT 0,
|
||||||
|
`target_label` VARCHAR(128) NOT NULL DEFAULT '',
|
||||||
|
`action` VARCHAR(64) NOT NULL DEFAULT '',
|
||||||
|
`detail` VARCHAR(500) NOT NULL DEFAULT '',
|
||||||
|
`success` TINYINT NOT NULL DEFAULT 1,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `timestamp` (`timestamp`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
@@ -48,6 +48,12 @@ public class Item implements ISerialize {
|
|||||||
return item.getName().toLowerCase().startsWith("a0 pet");
|
return item.getName().toLowerCase().startsWith("a0 pet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isBot(Item item) {
|
||||||
|
if (item == null) return false;
|
||||||
|
String name = item.getName();
|
||||||
|
return name != null && (name.startsWith("bot_") || name.startsWith("rentable_bot_"));
|
||||||
|
}
|
||||||
|
|
||||||
public static double getCurrentHeight(HabboItem item) {
|
public static double getCurrentHeight(HabboItem item) {
|
||||||
if (item instanceof InteractionMultiHeight && item.getBaseItem().getMultiHeights().length > 0) {
|
if (item instanceof InteractionMultiHeight && item.getBaseItem().getMultiHeights().length > 0) {
|
||||||
if (item.getExtradata().isEmpty()) {
|
if (item.getExtradata().isEmpty()) {
|
||||||
|
|||||||
+9
@@ -175,6 +175,15 @@ public class CatalogBuyItemAsGiftEvent extends MessageHandler {
|
|||||||
|
|
||||||
CatalogItem item = page.getCatalogItem(itemId);
|
CatalogItem item = page.getCatalogItem(itemId);
|
||||||
|
|
||||||
|
if (item == null) {
|
||||||
|
for (CatalogItem candidate : page.getCatalogItems().valueCollection()) {
|
||||||
|
if (candidate != null && candidate.getOfferId() == itemId) {
|
||||||
|
item = candidate;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
LOGGER.debug("catalog item null -> {}", itemId);
|
LOGGER.debug("catalog item null -> {}", itemId);
|
||||||
this.client.sendResponse(new AlertPurchaseFailedComposer(AlertPurchaseFailedComposer.SERVER_ERROR).compose());
|
this.client.sendResponse(new AlertPurchaseFailedComposer(AlertPurchaseFailedComposer.SERVER_ERROR).compose());
|
||||||
|
|||||||
+30
-12
@@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.bots.BotManager;
|
|||||||
import com.eu.habbo.habbohotel.catalog.*;
|
import com.eu.habbo.habbohotel.catalog.*;
|
||||||
import com.eu.habbo.habbohotel.catalog.layouts.*;
|
import com.eu.habbo.habbohotel.catalog.layouts.*;
|
||||||
import com.eu.habbo.habbohotel.items.FurnitureType;
|
import com.eu.habbo.habbohotel.items.FurnitureType;
|
||||||
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.permissions.Permission;
|
import com.eu.habbo.habbohotel.permissions.Permission;
|
||||||
import com.eu.habbo.habbohotel.pets.PetManager;
|
import com.eu.habbo.habbohotel.pets.PetManager;
|
||||||
import com.eu.habbo.habbohotel.rooms.BuildersClubRoomSupport;
|
import com.eu.habbo.habbohotel.rooms.BuildersClubRoomSupport;
|
||||||
@@ -13,11 +14,7 @@ import com.eu.habbo.habbohotel.users.HabboBadge;
|
|||||||
import com.eu.habbo.habbohotel.users.HabboInventory;
|
import com.eu.habbo.habbohotel.users.HabboInventory;
|
||||||
import com.eu.habbo.habbohotel.users.subscriptions.Subscription;
|
import com.eu.habbo.habbohotel.users.subscriptions.Subscription;
|
||||||
import com.eu.habbo.messages.incoming.MessageHandler;
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
import com.eu.habbo.messages.outgoing.catalog.AlertPurchaseFailedComposer;
|
import com.eu.habbo.messages.outgoing.catalog.*;
|
||||||
import com.eu.habbo.messages.outgoing.catalog.AlertPurchaseUnavailableComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.catalog.BuildersClubFurniCountComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.catalog.BuildersClubSubscriptionStatusComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.catalog.PurchaseOKComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertComposer;
|
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertComposer;
|
||||||
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
|
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
|
||||||
import com.eu.habbo.messages.outgoing.generic.alerts.HotelWillCloseInMinutesComposer;
|
import com.eu.habbo.messages.outgoing.generic.alerts.HotelWillCloseInMinutesComposer;
|
||||||
@@ -201,15 +198,36 @@ public class CatalogBuyItemEvent extends MessageHandler {
|
|||||||
|
|
||||||
else
|
else
|
||||||
item = page.getCatalogItem(itemId);
|
item = page.getCatalogItem(itemId);
|
||||||
// temp patch, can a dev with better knowledge than me look into this asap pls.
|
|
||||||
if (page instanceof BotsLayout) {
|
if (item == null && !(page instanceof RecentPurchasesLayout)) {
|
||||||
if (!this.client.getHabbo().hasPermission(Permission.ACC_UNLIMITED_BOTS) && this.client.getHabbo().getInventory().getBotsComponent().getBots().size() >= BotManager.MAXIMUM_BOT_INVENTORY_SIZE) {
|
for (CatalogItem candidate : page.getCatalogItems().valueCollection()) {
|
||||||
this.client.getHabbo().alert(Emulator.getTexts().getValue("error.bots.max.inventory").replace("%amount%", BotManager.MAXIMUM_BOT_INVENTORY_SIZE + ""));
|
if (candidate != null && candidate.getOfferId() == itemId) {
|
||||||
return;
|
item = candidate;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (page instanceof PetsLayout) {
|
|
||||||
if (!this.client.getHabbo().hasPermission(Permission.ACC_UNLIMITED_PETS) && this.client.getHabbo().getInventory().getPetsComponent().getPets().size() >= PetManager.MAXIMUM_PET_INVENTORY_SIZE) {
|
boolean itemHasBot = false;
|
||||||
|
boolean itemHasPet = false;
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
for (Item baseItem : item.getBaseItems()) {
|
||||||
|
if (baseItem == null) continue;
|
||||||
|
if (Item.isBot(baseItem)) itemHasBot = true;
|
||||||
|
if (Item.isPet(baseItem)) itemHasPet = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemHasBot && !this.client.getHabbo().hasPermission(Permission.ACC_UNLIMITED_BOTS)
|
||||||
|
&& this.client.getHabbo().getInventory().getBotsComponent().getBots().size() >= BotManager.MAXIMUM_BOT_INVENTORY_SIZE) {
|
||||||
|
this.client.getHabbo().alert(Emulator.getTexts().getValue("error.bots.max.inventory").replace("%amount%", BotManager.MAXIMUM_BOT_INVENTORY_SIZE + ""));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemHasPet) {
|
||||||
|
if (!this.client.getHabbo().hasPermission(Permission.ACC_UNLIMITED_PETS)
|
||||||
|
&& this.client.getHabbo().getInventory().getPetsComponent().getPets().size() >= PetManager.MAXIMUM_PET_INVENTORY_SIZE) {
|
||||||
this.client.getHabbo().alert(Emulator.getTexts().getValue("error.pets.max.inventory").replace("%amount%", PetManager.MAXIMUM_PET_INVENTORY_SIZE + ""));
|
this.client.getHabbo().alert(Emulator.getTexts().getValue("error.pets.max.inventory").replace("%amount%", PetManager.MAXIMUM_PET_INVENTORY_SIZE + ""));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user