1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 06:47:45 +00:00

fix zoning in/out of houses

This commit is contained in:
NotAdam 2018-12-02 14:59:24 +11:00
parent 97781b484d
commit d0dc247d64
7 changed files with 65 additions and 19 deletions

View file

@ -304,6 +304,7 @@ enum ActorControlType : uint16_t
RequestHousingItemUI = 0x463,
RequestSharedEstateSettings = 0x46F,
UpdateEstateLightingLevel = 0x471,
CompanionAction = 0x6A4,
CompanionSetBarding = 0x6A5,

View file

@ -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.eventFinish( result.eventId, 1 );
player.setPos( { 0.f, 0.f, 0.f } );
player.setInstance( internalZone );
}
} );
}
};

View file

@ -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 )
{
} );
}
};

View file

@ -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();
}
} );
}
};

View file

@ -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 ];
}
}
}

View file

@ -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;