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.RoomTileState;
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.wired.WiredEffectType;
import com.eu.habbo.habbohotel.wired.WiredHandler;
@ -91,8 +92,10 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect
canMove = !(room.getTopItemAt(t.x, t.y) == item);
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);
double highestZ = -1d;
@ -133,6 +136,19 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect
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()));
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)
{
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.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS;
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;
}
}
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<>();

View File

@ -1070,16 +1070,6 @@ public class RoomManager
if(habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom() == room)
{
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))
{
@ -1111,6 +1101,17 @@ public class RoomManager
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();
if(room != null)
{

View File

@ -65,10 +65,12 @@ public class HorseRideEvent extends MessageHandler
}
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);
((HorsePet) pet).setRider(null);
pet.setTask(PetTasks.FREE);
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()));
}
}
}