mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 22:37:45 +00:00
fix zoning in/out of houses
This commit is contained in:
parent
97781b484d
commit
d0dc247d64
7 changed files with 65 additions and 19 deletions
|
@ -304,6 +304,7 @@ enum ActorControlType : uint16_t
|
|||
|
||||
RequestHousingItemUI = 0x463,
|
||||
RequestSharedEstateSettings = 0x46F,
|
||||
UpdateEstateLightingLevel = 0x471,
|
||||
|
||||
CompanionAction = 0x6A4,
|
||||
CompanionSetBarding = 0x6A5,
|
||||
|
|
|
@ -42,16 +42,14 @@ public:
|
|||
player.sendDebug( "created zone with guid: " + std::to_string( internalZone->getGuId() ) + "\nname: " + internalZone->getName() );
|
||||
}
|
||||
|
||||
// param2 == 1 when player wants to enter house
|
||||
if( result.param2 != 1 )
|
||||
return;
|
||||
|
||||
if( result.param2 == 1 )
|
||||
{
|
||||
//player.eventFinish( 131148, 0 );
|
||||
//player.eventFinish( this->getId(), 1 );
|
||||
player.setPos( {0, 0, 0} );
|
||||
player.setInstance( internalZone );
|
||||
}
|
||||
player.eventFinish( result.eventId, 1 );
|
||||
|
||||
player.setPos( { 0.f, 0.f, 0.f } );
|
||||
player.setInstance( internalZone );
|
||||
} );
|
||||
}
|
||||
};
|
|
@ -0,0 +1,21 @@
|
|||
#include <ScriptObject.h>
|
||||
#include <Actor/Player.h>
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class CmnDefHousingPersonalRoomEntrance : public Sapphire::ScriptAPI::EventScript
|
||||
{
|
||||
public:
|
||||
CmnDefHousingPersonalRoomEntrance() :
|
||||
Sapphire::ScriptAPI::EventScript( 0x000b00b2 )
|
||||
{
|
||||
}
|
||||
|
||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
player.playScene( eventId, 0, 0, []( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
|
||||
} );
|
||||
}
|
||||
};
|
|
@ -0,0 +1,25 @@
|
|||
#include <ScriptObject.h>
|
||||
#include <Actor/Player.h>
|
||||
|
||||
using namespace Sapphire;
|
||||
|
||||
class HousingWarpTaxiExitEstate : public Sapphire::ScriptAPI::EventScript
|
||||
{
|
||||
public:
|
||||
HousingWarpTaxiExitEstate() :
|
||||
Sapphire::ScriptAPI::EventScript( 0x0002004d )
|
||||
{
|
||||
}
|
||||
|
||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
player.playScene( eventId, 0, 0, []( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
if( result.param2 == 1 )
|
||||
{
|
||||
player.eventFinish( result.eventId, 1 );
|
||||
player.exitInstance();
|
||||
}
|
||||
} );
|
||||
}
|
||||
};
|
|
@ -55,10 +55,10 @@ Sapphire::House::House( uint32_t houseId, uint32_t landSetId, uint8_t landId, ui
|
|||
|
||||
auto houseInteriorModels = res->getBlobVector( "HouseInteriorModels" );
|
||||
|
||||
models = reinterpret_cast<uint32_t*>( &houseInteriorModels[0] );
|
||||
auto interiorModels = reinterpret_cast< uint32_t* >( &houseInteriorModels[ 0 ] );
|
||||
for( auto i = 0; i < 10; i++ )
|
||||
{
|
||||
m_houseInteriorParts[ i ] = houseInteriorModels[ i ];
|
||||
m_houseInteriorParts[ i ] = interiorModels[ i ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -332,21 +332,22 @@ bool Sapphire::Land::setPreset( uint32_t itemId )
|
|||
m_pHouse = make_House( newId, getLandSetId(), getLandId(), getWardNum(), getTerritoryTypeId() );
|
||||
}
|
||||
|
||||
|
||||
getHouse()->setHousePart( Common::HousePartSlot::ExteriorRoof, convertItemIdToHousingItemId( housingPreset->exteriorRoof ) );
|
||||
getHouse()->setHousePart( Common::HousePartSlot::ExteriorWall, convertItemIdToHousingItemId( housingPreset->exteriorWall ) );
|
||||
getHouse()->setHousePart( Common::HousePartSlot::ExteriorWindow, convertItemIdToHousingItemId( housingPreset->exteriorWindow ) );
|
||||
getHouse()->setHousePart( Common::HousePartSlot::ExteriorDoor, convertItemIdToHousingItemId( housingPreset->exteriorDoor ) );
|
||||
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorWall, convertItemIdToHousingItemId( housingPreset->interiorWall ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorFloor, convertItemIdToHousingItemId( housingPreset->interiorFlooring ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorLight, convertItemIdToHousingItemId( housingPreset->interiorLighting ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorWall_Attic, convertItemIdToHousingItemId( housingPreset->otherFloorWall ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorFloor_Attic, convertItemIdToHousingItemId( housingPreset->otherFloorFlooring ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorLight_Attic, convertItemIdToHousingItemId( housingPreset->otherFloorLighting ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorWall_Basement, convertItemIdToHousingItemId( housingPreset->basementWall ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorFloor_Basement, convertItemIdToHousingItemId( housingPreset->basementFlooring ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorLight_Basement, convertItemIdToHousingItemId( housingPreset->basementLighting ) );
|
||||
getHouse()->setHouseInteriorPart(Common::HousingInteriorSlot::InteriorLight_Mansion, convertItemIdToHousingItemId( housingPreset->mansionLighting ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorWall, convertItemIdToHousingItemId( housingPreset->interiorWall ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorFloor, convertItemIdToHousingItemId( housingPreset->interiorFlooring ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorLight, convertItemIdToHousingItemId( housingPreset->interiorLighting ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorWall_Attic, convertItemIdToHousingItemId( housingPreset->otherFloorWall ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorFloor_Attic, convertItemIdToHousingItemId( housingPreset->otherFloorFlooring ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorLight_Attic, convertItemIdToHousingItemId( housingPreset->otherFloorLighting ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorWall_Basement, convertItemIdToHousingItemId( housingPreset->basementWall ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorFloor_Basement, convertItemIdToHousingItemId( housingPreset->basementFlooring ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorLight_Basement, convertItemIdToHousingItemId( housingPreset->basementLighting ) );
|
||||
getHouse()->setHouseInteriorPart( Common::HousingInteriorSlot::InteriorLight_Mansion, convertItemIdToHousingItemId( housingPreset->mansionLighting ) );
|
||||
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue