Fixed dismounting.

Added `hotel.room.wired.norules` which is disabled by default, which will allow you to use wired to place furniture under users.
This commit is contained in:
KrewsOrg 2019-05-01 00:59:25 +01:00
parent 52cdc757c1
commit 6f24103528
6 changed files with 61 additions and 16 deletions

View File

@ -0,0 +1,4 @@
#DATABASE UPDATE: 1.16.0 -> 2.0.0
INSERT INTO `catalog_pages`(`id`, `parent_id`, `caption_save`, `caption`, `icon_color`, `icon_image`, `visible`, `enabled`, `min_rank`, `club_only`, `order_num`, `page_layout`, `page_headline`, `page_teaser`, `page_special`, `page_text1`, `page_text2`, `page_text_details`, `page_text_teaser`, `vip_only`, `includes`, `room_id`) VALUES (null, null, 'guilds_forum', 'Group Forums', 1, 27181, '1', '1', 1, '0', 2, 'guild_forum', 'catalog_groups_en', 'catalog_groupsteaser_en', '', 'Group Forums are finally here at NextGenHabbo.com! Buy a terminal and chat to your groups!', '', '<b><font color=\"#0E3F52\" size=\"16\">What are Group Forums?</font></b><br><br>Forums allow you to effortlessly post, comment and discuss topics freely, without even leaving the hotel!<br><br><b><font color=\"#0E3F52\" size=\"16\">Who can start a forum?</font></b><br><br>Only a group owner can start a forum for their group.<br><br><b><font color=\"#0E3F52\" size=\"16\">Do I need a Forum Terminal?</font></b><br><br>Yes - In order to start a group forum the group owner must first purchase a forum terminal for the group.<br><br>Please note, we will continue to provide bug fixes with terminals in the near future!', '', '0', '', 0);
#END DATABASE UPDATE: 1.16.0 -> 2.0.0

View File

@ -9,6 +9,7 @@ import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTile;
import com.eu.habbo.habbohotel.rooms.RoomTileState; import com.eu.habbo.habbohotel.rooms.RoomTileState;
import com.eu.habbo.habbohotel.rooms.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomUnit;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredEffectType;
import com.eu.habbo.habbohotel.wired.WiredHandler; import com.eu.habbo.habbohotel.wired.WiredHandler;
@ -91,8 +92,10 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect
canMove = !(room.getTopItemAt(t.x, t.y) == item); canMove = !(room.getTopItemAt(t.x, t.y) == item);
slideAnimation = false; slideAnimation = false;
} }
// TODO: MOVE THIS TO ARCTURUSEXTENDED INSTEAD OF A CONFIG.
// if (canMove && !room.hasHabbosAt(t.x, t.y))
if ((canMove && !room.hasHabbosAt(t.x, t.y) && !Emulator.getConfig().getBoolean("hotel.room.wired.norules")) || (Emulator.getConfig().getBoolean("hotel.room.wired.norules") && (!room.hasHabbosAt(t.x, t.y) || item.isWalkable() || item.getBaseItem().allowSit())))
if (canMove && !room.hasHabbosAt(t.x, t.y))
{ {
THashSet<RoomTile> tiles = room.getLayout().getTilesAt(t, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), setting.rotation); THashSet<RoomTile> tiles = room.getLayout().getTilesAt(t, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), setting.rotation);
double highestZ = -1d; double highestZ = -1d;
@ -133,6 +136,19 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect
room.sendComposer(new FloorItemOnRollerComposer(item, null, t, offsetZ, room).compose()); room.sendComposer(new FloorItemOnRollerComposer(item, null, t, offsetZ, room).compose());
} }
// TODO: MOVE THIS TO ARCTURUSEXTENDED INSTEAD OF A CONFIG.
if(Emulator.getConfig().getBoolean("hotel.room.wired.norules")) {
if (room.hasHabbosAt(t.x, t.y)) {
THashSet<Habbo> habbos = room.getHabbosAt(t.x, t.y);
for (Habbo habbo : habbos) {
try {
item.onWalkOn(habbo.getRoomUnit(), room, null);
} catch (Exception e) {
}
}
}
}
} }
} }
} }

View File

@ -99,6 +99,18 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect
{ {
tilesToUpdate.addAll(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); tilesToUpdate.addAll(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation()));
room.sendComposer(new FloorItemUpdateComposer(item).compose()); room.sendComposer(new FloorItemUpdateComposer(item).compose());
// TODO: MOVE THIS TO ARCTURUSEXTENDED INSTEAD OF A CONFIG.
if(Emulator.getConfig().getBoolean("hotel.room.wired.norules")) {
if (room.hasHabbosAt(item.getX(), item.getY())) {
THashSet<Habbo> habbos = room.getHabbosAt(item.getX(), item.getY());
for (Habbo habbo : habbos) {
try {
item.onWalkOn(habbo.getRoomUnit(), room, null);
} catch (Exception e) {
}
}
}
}
} }
} }

View File

@ -5382,12 +5382,22 @@ public class Room implements Comparable<Room>, ISerialize, Runnable
public FurnitureMovementError furnitureFitsAt(RoomTile tile, HabboItem item, int rotation) public FurnitureMovementError furnitureFitsAt(RoomTile tile, HabboItem item, int rotation)
{ {
THashSet<RoomTile> occupiedTiles = this.layout.getTilesAt(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); THashSet<RoomTile> occupiedTiles = this.layout.getTilesAt(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation);
if(Emulator.getConfig().getBoolean("hotel.room.wired.norules") && !item.getBaseItem().allowSit() && !item.isWalkable()) {
for (RoomTile t : occupiedTiles) {
for (RoomTile t : occupiedTiles) if (this.hasHabbosAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_HABBOS;
{ if (this.hasBotsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_BOTS;
if (this.hasHabbosAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_HABBOS; if (this.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS;
if (this.hasBotsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_BOTS; }
if (this.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS; }
if(!Emulator.getConfig().getBoolean("hotel.room.wired.norules")) {
for (RoomTile t : occupiedTiles) {
if (this.hasHabbosAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_HABBOS;
if (this.hasBotsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_BOTS;
if (this.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS;
}
} }
List<Pair<RoomTile, THashSet<HabboItem>>> tileFurniList = new ArrayList<>(); List<Pair<RoomTile, THashSet<HabboItem>>> tileFurniList = new ArrayList<>();

View File

@ -1070,16 +1070,6 @@ public class RoomManager
if(habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom() == room) if(habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom() == room)
{ {
habbo.getRoomUnit().setPathFinderRoom(null); habbo.getRoomUnit().setPathFinderRoom(null);
if (habbo.getHabboInfo().getRiding() != null)
{
if (habbo.getHabboInfo().getRiding().getRoomUnit() != null)
{
habbo.getHabboInfo().getRiding().getRoomUnit().setGoalLocation(habbo.getHabboInfo().getRiding().getRoomUnit().getCurrentLocation());
}
habbo.getHabboInfo().getRiding().setTask(PetTasks.FREE);
habbo.getHabboInfo().getRiding().setRider(null);
habbo.getHabboInfo().setRiding(null);
}
if (!room.isOwner(habbo)) if (!room.isOwner(habbo))
{ {
@ -1111,6 +1101,17 @@ public class RoomManager
control.getRoomUnit().getCacheable().remove("controller"); control.getRoomUnit().getCacheable().remove("controller");
} }
if (habbo.getHabboInfo().getRiding() != null)
{
if (habbo.getHabboInfo().getRiding().getRoomUnit() != null)
{
habbo.getHabboInfo().getRiding().getRoomUnit().setGoalLocation(habbo.getHabboInfo().getRiding().getRoomUnit().getCurrentLocation());
}
habbo.getHabboInfo().getRiding().setTask(PetTasks.FREE);
habbo.getHabboInfo().getRiding().setRider(null);
habbo.getHabboInfo().setRiding(null);
}
Room room = habbo.getHabboInfo().getCurrentRoom(); Room room = habbo.getHabboInfo().getCurrentRoom();
if(room != null) if(room != null)
{ {

View File

@ -65,10 +65,12 @@ public class HorseRideEvent extends MessageHandler
} }
else else
{ {
// TODO : THIS IS NOT THE CORRECT WAY OF HANDLING MOUNTING. CHECK HABBO.COM. THE HORSE SHOULD NOT COME TO YOU. YOU SHOULD GO TO THE HORSE.
this.client.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(this.client.getHabbo(), 0, -1); this.client.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(this.client.getHabbo(), 0, -1);
((HorsePet) pet).setRider(null); ((HorsePet) pet).setRider(null);
pet.setTask(PetTasks.FREE); pet.setTask(PetTasks.FREE);
this.client.getHabbo().getHabboInfo().setRiding(null); this.client.getHabbo().getHabboInfo().setRiding(null);
this.client.getHabbo().getRoomUnit().setGoalLocation(this.client.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(this.client.getHabbo().getRoomUnit().getCurrentLocation(), this.client.getHabbo().getRoomUnit().getBodyRotation().getValue()));
} }
} }
} }