From 44b071ea3e96943234ad22985c0f6d9af5e7bde2 Mon Sep 17 00:00:00 2001 From: collett Date: Mon, 25 Jan 2021 20:44:36 +0900 Subject: [PATCH] housing fixes. it's working now! --- src/world/Inventory/ItemContainer.cpp | 3 +++ src/world/Manager/HousingMgr.cpp | 8 +++++--- src/world/Manager/InventoryMgr.cpp | 16 ++++++++-------- src/world/Territory/Land.cpp | 18 +++++++++++++++++- src/world/Territory/Land.h | 4 ++-- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/world/Inventory/ItemContainer.cpp b/src/world/Inventory/ItemContainer.cpp index 46bedfb5..c150f1fd 100644 --- a/src/world/Inventory/ItemContainer.cpp +++ b/src/world/Inventory/ItemContainer.cpp @@ -92,7 +92,10 @@ Sapphire::ItemPtr Sapphire::ItemContainer::getItem( uint8_t slotId ) void Sapphire::ItemContainer::setItem( uint8_t slotId, ItemPtr pItem ) { if( slotId > m_size ) + { + Logger::error( "Slot out of range {0}", slotId ); return; + } m_itemMap[ slotId ] = pItem; } diff --git a/src/world/Manager/HousingMgr.cpp b/src/world/Manager/HousingMgr.cpp index 4e85c5bd..f93044ce 100644 --- a/src/world/Manager/HousingMgr.cpp +++ b/src/world/Manager/HousingMgr.cpp @@ -704,10 +704,12 @@ void Sapphire::World::Manager::HousingMgr::buildPresetEstate( Entity::Player& pl pLand->updateLandDb(); - // start house built event + // start house built event - disabled because it fucks your audio device // CmnDefHousingBuildHouse_00149 - player.eventStart( player.getId(), 0x000B0095, Event::EventHandler::EventType::Housing, 1, 1 ); - player.playScene( 0x000B0095, 0, static_cast< uint32_t >( SET_BASE | HIDE_HOTBAR ) , 0, 1, plotNum, nullptr ); + //player.eventStart( player.getId(), 0x000B0095, Event::EventHandler::EventType::Housing, 1, 1 ); + //player.playScene( 0x000B0095, 0, static_cast< uint32_t >( SET_BASE | HIDE_HOTBAR ) , 0, 1, plotNum, nullptr ); + // instead we do a fake zone to unlock the client + Common::Service< TerritoryMgr >::ref().movePlayer( player.getCurrentTerritory(), player.getAsPlayer() ); player.setLandFlags( LandFlagsSlot::Private, EstateBuilt, ident ); player.sendLandFlagsSlot( LandFlagsSlot::Private ); diff --git a/src/world/Manager/InventoryMgr.cpp b/src/world/Manager/InventoryMgr.cpp index b4c3759e..722100d7 100644 --- a/src/world/Manager/InventoryMgr.cpp +++ b/src/world/Manager/InventoryMgr.cpp @@ -143,15 +143,15 @@ void Sapphire::World::Manager::InventoryMgr::updateHousingItemPosition( Sapphire stmt->setUInt64( 1, item->getUId() ); - stmt->setUInt( 2, pos.x ); - stmt->setUInt( 3, pos.y ); - stmt->setUInt( 4, pos.z ); - stmt->setInt( 5, rot ); + stmt->setDouble( 2, static_cast< double >( pos.x ) ); + stmt->setDouble( 3, static_cast< double >( pos.y ) ); + stmt->setDouble( 4, static_cast< double >( pos.z ) ); + stmt->setDouble( 5, static_cast< double >( rot ) ); - stmt->setUInt( 6, pos.x ); - stmt->setUInt( 7, pos.y ); - stmt->setUInt( 8, pos.z ); - stmt->setInt( 9, rot ); + stmt->setDouble( 6, static_cast< double >( pos.x ) ); + stmt->setDouble( 7, static_cast< double >( pos.y ) ); + stmt->setDouble( 8, static_cast< double >( pos.z ) ); + stmt->setDouble( 9, static_cast< double >( rot ) ); db.execute( stmt ); } diff --git a/src/world/Territory/Land.cpp b/src/world/Territory/Land.cpp index fe7f8771..9b24b1fb 100644 --- a/src/world/Territory/Land.cpp +++ b/src/world/Territory/Land.cpp @@ -240,5 +240,21 @@ void Sapphire::Land::update( uint64_t tickCount ) Sapphire::Land::InvMaxItemsPair Sapphire::Land::getInventoryItemMax() const { - return std::make_pair( m_maxPlacedExternalItems, m_maxPlacedInternalItems ); + //return std::make_pair( m_maxPlacedExternalItems, m_maxPlacedInternalItems ); + switch( m_size ) + { + case 0: + { + return std::make_pair( 20, 200 ); + } + case 1: + { + return std::make_pair( 30, 300 ); + } + case 2: + { + return std::make_pair( 40, 400 ); + } + } + assert( false ); } diff --git a/src/world/Territory/Land.h b/src/world/Territory/Land.h index 48f696e2..34e28761 100644 --- a/src/world/Territory/Land.h +++ b/src/world/Territory/Land.h @@ -87,8 +87,8 @@ namespace Sapphire Sapphire::HousePtr m_pHouse; //item storage - uint16_t m_maxPlacedExternalItems; - uint16_t m_maxPlacedInternalItems; + //uint16_t m_maxPlacedExternalItems; + //uint16_t m_maxPlacedInternalItems; //price uint32_t m_initPrice;