Initial Upload
Initial Upload
This commit is contained in:
70
_module/nss/bench_sit.nss
Normal file
70
_module/nss/bench_sit.nss
Normal file
@@ -0,0 +1,70 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: bench_sit
|
||||
//:: Created By: r3plica
|
||||
//:: Created On: Jan 03, 2005
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
// Make a large SoU bench usable by 3 creatures simultaneously
|
||||
void main()
|
||||
{
|
||||
// Set some variable for a beter understanding
|
||||
object oPlayer = GetLastUsedBy();
|
||||
object oBench = OBJECT_SELF;
|
||||
|
||||
// Get a hold on the 3 pillows
|
||||
object oPillow1 = GetLocalObject( OBJECT_SELF, "Pillow 1" );
|
||||
object oPillow2 = GetLocalObject( OBJECT_SELF, "Pillow 2" );
|
||||
object oPillow3 = GetLocalObject( OBJECT_SELF, "Pillow 3" );
|
||||
|
||||
// If "pillow 1" do not exist, create 3 of them and attach them to the bench
|
||||
if( !GetIsObjectValid( oPillow1 ) )
|
||||
{
|
||||
// Set up some variable for understanding
|
||||
object oArea = GetArea( oBench );
|
||||
vector locBench = GetPosition( oBench );
|
||||
float fOrient = GetFacing( oBench );
|
||||
|
||||
// You can change the space between pillows changing this value
|
||||
float fSpace = 1.0f;
|
||||
|
||||
// Calculate location of the 3 pillows
|
||||
location locPillow1 = Location( oArea, locBench + AngleToVector( fOrient + 90.0f ) * fSpace, fOrient );
|
||||
location locPillow2 = Location( oArea, locBench + AngleToVector( fOrient - 90.0f ) * fSpace, fOrient );
|
||||
location locPillow3 = Location( oArea, locBench, fOrient );
|
||||
|
||||
// Create the 3 pillows
|
||||
oPillow1 = CreateObject( OBJECT_TYPE_PLACEABLE, "plc_invisobj", locPillow1 );
|
||||
oPillow2 = CreateObject( OBJECT_TYPE_PLACEABLE, "plc_invisobj", locPillow2 );
|
||||
oPillow3 = CreateObject( OBJECT_TYPE_PLACEABLE, "plc_invisobj", locPillow3 );
|
||||
|
||||
// "attach" the pillows to the bench
|
||||
SetLocalObject( OBJECT_SELF, "Pillow 1", oPillow1 );
|
||||
SetLocalObject( OBJECT_SELF, "Pillow 2", oPillow2 );
|
||||
SetLocalObject( OBJECT_SELF, "Pillow 3", oPillow3 );
|
||||
}
|
||||
|
||||
// Get a hold on the nearest invisible object, (maybe a pillow)
|
||||
int iDistance = 1;
|
||||
object oPillow = GetNearestObjectByTag( "InvisibleObject", oPlayer, iDistance );
|
||||
|
||||
// while we find invisible object and that we did not check the 3 linked pillows
|
||||
int iCount = 0;
|
||||
while( GetIsObjectValid( oPillow ) || iCount < 3 )
|
||||
{
|
||||
// if it is one of the three pillow linked the the bench
|
||||
if( oPillow == oPillow1 || oPillow == oPillow2 || oPillow == oPillow3 )
|
||||
{
|
||||
iCount = iCount + 1 ;
|
||||
// If available
|
||||
if( !GetIsObjectValid( GetSittingCreature( oPillow ) ) )
|
||||
{
|
||||
// Sit and quit the script
|
||||
AssignCommand( oPlayer, ActionSit( oPillow ) );
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Get the next nearest invisible object
|
||||
iDistance = iDistance + 1;
|
||||
oPillow = GetNearestObjectByTag( "InvisibleObject", oPlayer, iDistance );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user