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
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cd60cba355 | |||
| e62f461962 | |||
| 7f8c98e4f3 | |||
| d95e09e64f | |||
| ebe0690e46 | |||
| 0dda0ae0f7 | |||
| 54ab6613f1 | |||
| 9fda766ba5 | |||
| 3da9325344 |
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.eu.habbo</groupId>
|
<groupId>com.eu.habbo</groupId>
|
||||||
<artifactId>Habbo</artifactId>
|
<artifactId>Habbo</artifactId>
|
||||||
<version>4.2.40</version>
|
<version>4.2.43</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
|||||||
@@ -1247,6 +1247,11 @@ public class CatalogManager {
|
|||||||
Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(guildId);
|
Guild guild = Emulator.getGameEnvironment().getGuildManager().getGuild(guildId);
|
||||||
|
|
||||||
if (guild != null && Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, habbo) != null) {
|
if (guild != null && Emulator.getGameEnvironment().getGuildManager().getGuildMember(guild, habbo) != null) {
|
||||||
|
if (baseItem.getName().equals("guild_forum") && guild.getOwnerId() != habbo.getHabboInfo().getId()) {
|
||||||
|
habbo.getClient().sendResponse(new AlertPurchaseFailedComposer(AlertPurchaseFailedComposer.SERVER_ERROR));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
InteractionGuildFurni habboItem = (InteractionGuildFurni) Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata);
|
InteractionGuildFurni habboItem = (InteractionGuildFurni) Emulator.getGameEnvironment().getItemManager().createItem(habbo.getClient().getHabbo().getHabboInfo().getId(), baseItem, limitedStack, limitedNumber, extradata);
|
||||||
habboItem.setExtradata("");
|
habboItem.setExtradata("");
|
||||||
habboItem.needsUpdate(true);
|
habboItem.needsUpdate(true);
|
||||||
|
|||||||
+2
-3
@@ -65,9 +65,8 @@ public class InteractionMultiHeight extends HabboItem {
|
|||||||
if (this.getBaseItem().getMultiHeights().length > 0) {
|
if (this.getBaseItem().getMultiHeights().length > 0) {
|
||||||
this.setExtradata("" + (Integer.parseInt(this.getExtradata()) + 1) % (this.getBaseItem().getMultiHeights().length));
|
this.setExtradata("" + (Integer.parseInt(this.getExtradata()) + 1) % (this.getBaseItem().getMultiHeights().length));
|
||||||
this.needsUpdate(true);
|
this.needsUpdate(true);
|
||||||
room.updateTiles(room.getLayout().getTilesAt(room.getLayout().getTile(this.getX(), this.getY()), this.getBaseItem().getWidth(), this.getBaseItem().getLength(), this.getRotation()));
|
room.updateItem(this);
|
||||||
room.updateItemState(this);
|
this.updateUnitsOnItem(room);
|
||||||
//room.sendComposer(new UpdateStackHeightComposer(this.getX(), this.getY(), this.getBaseItem().getMultiHeights()[Integer.valueOf(this.getExtradata())] * 256.0D).compose());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-27
@@ -14,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;
|
||||||
@@ -52,15 +48,8 @@ public class CatalogBuyItemEvent extends MessageHandler {
|
|||||||
int itemId = this.packet.readInt();
|
int itemId = this.packet.readInt();
|
||||||
String extraData = this.packet.readString();
|
String extraData = this.packet.readString();
|
||||||
int count = this.packet.readInt();
|
int count = this.packet.readInt();
|
||||||
|
if (count < 1) count = 1;
|
||||||
// Clamp the client-supplied quantity. Without this the club-offer
|
if (count > 100) count = 100;
|
||||||
// branch accumulates cost in plain ints and a huge count overflows
|
|
||||||
// to a negative total, bypassing the affordability checks and
|
|
||||||
// CREDITING the buyer (free currency/subscription exploit).
|
|
||||||
if (count < 1 || count > 100) {
|
|
||||||
this.client.sendResponse(new AlertPurchaseFailedComposer(AlertPurchaseFailedComposer.SERVER_ERROR).compose());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (this.client.getHabbo().getInventory().getItemsComponent().itemCount() > HabboInventory.MAXIMUM_ITEMS) {
|
if (this.client.getHabbo().getInventory().getItemsComponent().itemCount() > HabboInventory.MAXIMUM_ITEMS) {
|
||||||
@@ -212,12 +201,6 @@ public class CatalogBuyItemEvent extends MessageHandler {
|
|||||||
else
|
else
|
||||||
item = page.getCatalogItem(itemId);
|
item = page.getCatalogItem(itemId);
|
||||||
|
|
||||||
// Search-results buy sends the catalog offer_id as itemId
|
|
||||||
// (FurnitureOffer.offerId is derived from furnidata's
|
|
||||||
// purchaseOfferId, which matches `catalog_items.offer_id`),
|
|
||||||
// not the `catalog_items.id` primary key that getCatalogItem
|
|
||||||
// expects. Fall back to scanning the page for the matching
|
|
||||||
// offer_id so the search → buy flow works.
|
|
||||||
if (item == null && !(page instanceof RecentPurchasesLayout)) {
|
if (item == null && !(page instanceof RecentPurchasesLayout)) {
|
||||||
for (CatalogItem candidate : page.getCatalogItems().valueCollection()) {
|
for (CatalogItem candidate : page.getCatalogItems().valueCollection()) {
|
||||||
if (candidate != null && candidate.getOfferId() == itemId) {
|
if (candidate != null && candidate.getOfferId() == itemId) {
|
||||||
@@ -226,13 +209,7 @@ public class CatalogBuyItemEvent extends MessageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Inventory cap check based on the actual base items the
|
|
||||||
// purchase will create, not the page layout - bots/pets
|
|
||||||
// can legitimately live on bundle pages, search results,
|
|
||||||
// recent-purchases, etc., and the layout-instanceof check
|
|
||||||
// missed all those paths. Mirrors the bot/pet branches
|
|
||||||
// inside CatalogManager.purchaseItem (Item.isBot / isPet
|
|
||||||
// and the same prefix check) so detection stays in sync.
|
|
||||||
boolean itemHasBot = false;
|
boolean itemHasBot = false;
|
||||||
boolean itemHasPet = false;
|
boolean itemHasPet = false;
|
||||||
|
|
||||||
|
|||||||
+5
@@ -25,6 +25,11 @@ public class ToggleFloorItemEvent extends MessageHandler {
|
|||||||
|
|
||||||
private static HashSet<String> PET_BOXES = new HashSet<>(Arrays.asList("val11_present", "gnome_box", "leprechaun_box", "velociraptor_egg", "pterosaur_egg", "petbox_epic"));
|
private static HashSet<String> PET_BOXES = new HashSet<>(Arrays.asList("val11_present", "gnome_box", "leprechaun_box", "velociraptor_egg", "pterosaur_egg", "petbox_epic"));
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
try {
|
try {
|
||||||
|
|||||||
+5
@@ -9,6 +9,11 @@ import com.eu.habbo.plugin.Event;
|
|||||||
import com.eu.habbo.plugin.events.furniture.FurnitureToggleEvent;
|
import com.eu.habbo.plugin.events.furniture.FurnitureToggleEvent;
|
||||||
|
|
||||||
public class ToggleWallItemEvent extends MessageHandler {
|
public class ToggleWallItemEvent extends MessageHandler {
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
|
Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
|
||||||
|
|||||||
+5
@@ -6,6 +6,11 @@ import com.eu.habbo.habbohotel.users.HabboItem;
|
|||||||
import com.eu.habbo.messages.incoming.MessageHandler;
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
|
|
||||||
public class TriggerColorWheelEvent extends MessageHandler {
|
public class TriggerColorWheelEvent extends MessageHandler {
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
int itemId = this.packet.readInt();
|
int itemId = this.packet.readInt();
|
||||||
|
|||||||
+5
@@ -7,6 +7,11 @@ import com.eu.habbo.habbohotel.users.HabboItem;
|
|||||||
import com.eu.habbo.messages.incoming.MessageHandler;
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
|
|
||||||
public class TriggerDiceEvent extends MessageHandler {
|
public class TriggerDiceEvent extends MessageHandler {
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
int itemId = this.packet.readInt();
|
int itemId = this.packet.readInt();
|
||||||
|
|||||||
+5
@@ -5,6 +5,11 @@ import com.eu.habbo.habbohotel.users.HabboItem;
|
|||||||
import com.eu.habbo.messages.incoming.MessageHandler;
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
|
|
||||||
public class TriggerOneWayGateEvent extends MessageHandler {
|
public class TriggerOneWayGateEvent extends MessageHandler {
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null)
|
if (this.client.getHabbo().getHabboInfo().getCurrentRoom() == null)
|
||||||
|
|||||||
Reference in New Issue
Block a user