Customizable gift wrapping config & gift purchase validation

This commit is contained in:
Alejandro 2020-06-07 16:19:05 +03:00
parent 9e5a00b052
commit a0c1973622
4 changed files with 28 additions and 22 deletions

View File

@ -20,4 +20,8 @@ INSERT INTO `emulator_texts`(`key`, `value`) VALUES ('error.bots.max.inventory',
UPDATE `emulator_texts` SET `value` = 'You\'ve reached the maximum amount of pets in your inventory! The Limit is %amount%!' WHERE `key` = 'error.pets.max.inventory'; UPDATE `emulator_texts` SET `value` = 'You\'ve reached the maximum amount of pets in your inventory! The Limit is %amount%!' WHERE `key` = 'error.pets.max.inventory';
-- Tradelock counter -- Tradelock counter
ALTER TABLE `users_settings` ADD `tradelock_amount` INT(11) NOT NULL DEFAULT '0' AFTER `helper_level`; ALTER TABLE `users_settings` ADD `tradelock_amount` INT(11) NOT NULL DEFAULT '0' AFTER `helper_level`;
-- Gift wrapping configuration
INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.gifts.box_types', '0,1,2,3,4,5,6,8');
INSERT INTO `emulator_settings`(`key`, `value`) VALUES ('hotel.gifts.ribbon_types', '0,1,2,3,4,5,6,7,8,9,10');

View File

@ -75,6 +75,11 @@ public class CatalogBuyItemAsGiftEvent extends MessageHandler {
return; return;
} }
if (!GiftConfigurationComposer.BOX_TYPES.contains(color) || !GiftConfigurationComposer.RIBBON_TYPES.contains(ribbonId)) {
this.client.sendResponse(new AlertPurchaseFailedComposer(AlertPurchaseFailedComposer.SERVER_ERROR).compose());
return;
}
Integer iItemId = Emulator.getGameEnvironment().getCatalogManager().giftWrappers.get(spriteId); Integer iItemId = Emulator.getGameEnvironment().getCatalogManager().giftWrappers.get(spriteId);
if (iItemId == null) if (iItemId == null)

View File

@ -5,9 +5,14 @@ import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.outgoing.MessageComposer; import com.eu.habbo.messages.outgoing.MessageComposer;
import com.eu.habbo.messages.outgoing.Outgoing; import com.eu.habbo.messages.outgoing.Outgoing;
import java.util.Arrays;
import java.util.List;
import java.util.Map; import java.util.Map;
public class GiftConfigurationComposer extends MessageComposer { public class GiftConfigurationComposer extends MessageComposer {
public static List<Integer> BOX_TYPES = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 8);
public static List<Integer> RIBBON_TYPES = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
@Override @Override
protected ServerMessage composeInternal() { protected ServerMessage composeInternal() {
this.response.init(Outgoing.GiftConfigurationComposer); this.response.init(Outgoing.GiftConfigurationComposer);
@ -19,28 +24,15 @@ public class GiftConfigurationComposer extends MessageComposer {
this.response.appendInt(i); this.response.appendInt(i);
} }
this.response.appendInt(8); this.response.appendInt(BOX_TYPES.size());
this.response.appendInt(0); for (Integer type : BOX_TYPES) {
this.response.appendInt(1); this.response.appendInt(type);
this.response.appendInt(2); }
this.response.appendInt(3);
this.response.appendInt(4);
this.response.appendInt(5);
this.response.appendInt(6);
this.response.appendInt(8);
this.response.appendInt(11); this.response.appendInt(RIBBON_TYPES.size());
this.response.appendInt(0); for (Integer type : RIBBON_TYPES) {
this.response.appendInt(1); this.response.appendInt(type);
this.response.appendInt(2); }
this.response.appendInt(3);
this.response.appendInt(4);
this.response.appendInt(5);
this.response.appendInt(6);
this.response.appendInt(7);
this.response.appendInt(8);
this.response.appendInt(9);
this.response.appendInt(10);
this.response.appendInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size()); this.response.appendInt(Emulator.getGameEnvironment().getCatalogManager().giftFurnis.size());

View File

@ -34,6 +34,7 @@ import com.eu.habbo.messages.incoming.hotelview.HotelViewRequestLTDAvailabilityE
import com.eu.habbo.messages.incoming.rooms.promotions.BuyRoomPromotionEvent; import com.eu.habbo.messages.incoming.rooms.promotions.BuyRoomPromotionEvent;
import com.eu.habbo.messages.incoming.users.ChangeNameCheckUsernameEvent; import com.eu.habbo.messages.incoming.users.ChangeNameCheckUsernameEvent;
import com.eu.habbo.messages.outgoing.catalog.DiscountComposer; import com.eu.habbo.messages.outgoing.catalog.DiscountComposer;
import com.eu.habbo.messages.outgoing.catalog.GiftConfigurationComposer;
import com.eu.habbo.messages.outgoing.navigator.NewNavigatorEventCategoriesComposer; import com.eu.habbo.messages.outgoing.navigator.NewNavigatorEventCategoriesComposer;
import com.eu.habbo.plugin.events.emulator.EmulatorConfigUpdatedEvent; import com.eu.habbo.plugin.events.emulator.EmulatorConfigUpdatedEvent;
import com.eu.habbo.plugin.events.emulator.EmulatorLoadedEvent; import com.eu.habbo.plugin.events.emulator.EmulatorLoadedEvent;
@ -58,6 +59,7 @@ import java.net.URLClassLoader;
import java.util.Arrays; import java.util.Arrays;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
public class PluginManager { public class PluginManager {
@ -154,6 +156,9 @@ public class PluginManager {
BotManager.MAXIMUM_BOT_INVENTORY_SIZE = Emulator.getConfig().getInt("hotel.bots.max.inventory"); BotManager.MAXIMUM_BOT_INVENTORY_SIZE = Emulator.getConfig().getInt("hotel.bots.max.inventory");
PetManager.MAXIMUM_PET_INVENTORY_SIZE = Emulator.getConfig().getInt("hotel.pets.max.inventory"); PetManager.MAXIMUM_PET_INVENTORY_SIZE = Emulator.getConfig().getInt("hotel.pets.max.inventory");
GiftConfigurationComposer.BOX_TYPES = Arrays.stream(Emulator.getConfig().getValue("hotel.gifts.box_types").split(",")).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
GiftConfigurationComposer.RIBBON_TYPES = Arrays.stream(Emulator.getConfig().getValue("hotel.gifts.ribbon_types").split(",")).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
NewNavigatorEventCategoriesComposer.CATEGORIES.clear(); NewNavigatorEventCategoriesComposer.CATEGORIES.clear();
for (String category : Emulator.getConfig().getValue("navigator.eventcategories", "").split(";")) { for (String category : Emulator.getConfig().getValue("navigator.eventcategories", "").split(";")) {
try { try {