Changed folder name.
Changed folder name.
This commit is contained in:
255
_module/nss/restrict_door.nss
Normal file
255
_module/nss/restrict_door.nss
Normal file
@@ -0,0 +1,255 @@
|
||||
/////////////////////////////////////////////////
|
||||
//Script Name: restrict_door
|
||||
/////////////////////////////////////////////////
|
||||
//Ultimate Teleport Script v 1.3 - (TEMPLATE)
|
||||
/////////////////////////////////////////////////
|
||||
//Designed By: Amurayi (mschdesign@hotmail.com)
|
||||
//Modified By: Genisys (galefer003@hotmail.com)
|
||||
/*Modified On: 8/22/08
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
IMPORTANT: This is a TEMPLATE, so, save it under
|
||||
a new name FIRST!
|
||||
|
||||
NOTE: If you want to require that the party have
|
||||
an item to open the door, the door should STILL
|
||||
only be used by the person with the item, however
|
||||
you can choose the teleport party option, and that
|
||||
will be how you handle that kind of a restriction.
|
||||
*/
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
////////////////IMPORTANT SETTINGS///////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//Teleport Settings..
|
||||
|
||||
//Enter the tagname of the waypoint the PC will be teleported to
|
||||
const string sTagname = "tagname"; //What is the tagname of the waypoint?
|
||||
|
||||
//Set to 1 if you want to use fancy Visual Effects in the teleport
|
||||
const int nVisuals = 0; //(0 = Default, don't play animations)
|
||||
|
||||
//Set to 1 if you want to teleport the whole party of the PC
|
||||
const int iTeleportWholeParty = 0; //(Default = 0, don't teleport party)
|
||||
|
||||
//Set to 1 if you want the Associates of the PC to be teleporeted as well.
|
||||
const int iTeleportAssociateToo = 1; //(Default = 1, teleport associates)
|
||||
|
||||
//Restriction settings..
|
||||
|
||||
//Set this to 1 if you want to restrict the door use to DM Only!
|
||||
const int nDM = 0; //0 = Default - Any PC or DM can use the door..
|
||||
|
||||
//Set this # to the level required to use the door, note the PC must be
|
||||
//equal to or higher than this level or the door won't do anything!
|
||||
const int nPCLevel = 0; //0 = Default No Level Required
|
||||
|
||||
//Set this to 1 if you want to Require the PC has an Evil Alignment
|
||||
const int nEvil = 0; //0 = Default - Evil Alignment is NOT Checked.
|
||||
|
||||
//Set this to 1 if you want to Require the PC has a Good Alignment
|
||||
const int nGood = 0; //0 = Default - Good Alignment is NOT Checked.
|
||||
|
||||
//NOTE: This check can only make sure they are neutral, that's it!
|
||||
//Set this to 1 if you want to Require the PC has ANY Neutral Alignment
|
||||
const int nNeutral = 0; //0 = Default - Nuetral Alignment is NOT Checked.
|
||||
|
||||
//Set this to 1 if you want to Require the PC has a Chaotic Alginament
|
||||
const int nChaotic = 0; //0 = Default - Chaotic Alignment is NOT Checked.
|
||||
|
||||
//Set this to 1 if you want to require the PC has a Lawful Alignment
|
||||
const int nLawful = 0; //0 = Default - Lawful Alignment is NOT Checked
|
||||
|
||||
//Set the tagname below of the item required to use the door.
|
||||
const string sItemName = "tagname"; //default = "tagname" no item required.
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
//NOTE: I did not put in Variable restrictions you will have to code
|
||||
//this yourself where it says //Add additional code here...(below)
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
//OPTIONS END
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//DON'T TOUCH ANYTHING BELOW Unless your adding code. (Where it says to!)
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//PROTOTYPE DECLARED
|
||||
void JumpAssociate(object i_oPC, int i_type, object i_oWP);
|
||||
|
||||
//Main Script
|
||||
void main()
|
||||
{
|
||||
|
||||
//Declare Major Variables..
|
||||
object oPC;
|
||||
oPC = GetClickingObject();
|
||||
object oItem;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
//RESTRICTIONS...
|
||||
|
||||
if(nPCLevel != 0)
|
||||
{
|
||||
if(GetHitDice(oPC)<nPCLevel)
|
||||
return;
|
||||
}
|
||||
|
||||
if(nEvil == 1)
|
||||
{
|
||||
if(GetGoodEvilValue(oPC)!= ALIGNMENT_EVIL)
|
||||
{return;}
|
||||
}
|
||||
if(nGood == 1)
|
||||
{
|
||||
if (GetAlignmentGoodEvil(oPC) != ALIGNMENT_GOOD)
|
||||
{return;}
|
||||
}
|
||||
|
||||
if(nNeutral ==1)
|
||||
{
|
||||
int nPass;
|
||||
|
||||
//If Neutral Alignment OK then..
|
||||
if ((GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL ||
|
||||
GetAlignmentLawChaos(oPC) == ALIGNMENT_NEUTRAL))
|
||||
{nPass =1;}
|
||||
|
||||
//If True Neutral Alignment OK then..
|
||||
else if ((GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL &&
|
||||
GetAlignmentLawChaos(oPC) == ALIGNMENT_LAWFUL))
|
||||
{nPass =1;}
|
||||
|
||||
else
|
||||
{nPass = 0; }
|
||||
|
||||
//If not a Neutral or True Neutral Alignment stop here..
|
||||
if(nPass!=1)
|
||||
{return;}
|
||||
}
|
||||
|
||||
if(nLawful == 1)
|
||||
{
|
||||
if (GetAlignmentLawChaos(oPC) != ALIGNMENT_LAWFUL)
|
||||
{return;}
|
||||
}
|
||||
|
||||
if(nChaotic == 1)
|
||||
{
|
||||
if (GetAlignmentLawChaos(oPC) != ALIGNMENT_CHAOTIC)
|
||||
{return;}
|
||||
}
|
||||
|
||||
if(nDM ==1)
|
||||
{
|
||||
if((!GetIsDM(oPC)) || (!GetIsDMPossessed(oPC)))
|
||||
{return;}
|
||||
}
|
||||
|
||||
if(sItemName != "tagname")
|
||||
{
|
||||
if(GetItemPossessedBy(oPC, sItemName)==OBJECT_INVALID)
|
||||
{return;}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Optional Settings Conditional Checks End
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//Add Additional Code Here....
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
///////////WARNING: DON'T TOUCH ANYTHING BELOW!!!///////////////////
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
//Major Variables
|
||||
object oDWP = GetWaypointByTag(sTagname);
|
||||
object oFM;
|
||||
effect eVis;
|
||||
|
||||
////////////////////////////////////////////
|
||||
//***Conditional***//
|
||||
|
||||
//If the destination is not valid, tell the PC, DMs, and log file!
|
||||
if (oDWP == OBJECT_INVALID)
|
||||
{
|
||||
SendMessageToPC(oPC, "Destination not found.");
|
||||
SendMessageToAllDMs("The Way Point tagnamed: " + sTagname + "WAS NOT FOUND IN THE MODULE!!");
|
||||
WriteTimestampedLogEntry(sTagname + " Way Point NOT FOUND IN THE MODULE!!**");
|
||||
|
||||
return; //Stop the script here..
|
||||
}
|
||||
|
||||
///////The Teleport (depending upon conditionals set above)////////
|
||||
|
||||
//If we are teleporting the whole party.
|
||||
if (iTeleportWholeParty == 1)
|
||||
{
|
||||
float fT = 3.0;
|
||||
oFM = GetFirstFactionMember(oPC);
|
||||
// Step through the party members.
|
||||
while(GetIsObjectValid(oFM))
|
||||
{
|
||||
//Delay The Teleports properly
|
||||
fT +=0.1;
|
||||
|
||||
//if we are using visual effects (On All PCs only)
|
||||
if(nVisuals ==1)
|
||||
{
|
||||
eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oFM);
|
||||
}
|
||||
|
||||
AssignCommand(oFM, DelayCommand(fT, JumpToObject(oDWP)));
|
||||
|
||||
if (iTeleportAssociateToo == 1)
|
||||
{
|
||||
// now send the players companions over as well:
|
||||
DelayCommand(fT+4.3, JumpAssociate(oFM, ASSOCIATE_TYPE_ANIMALCOMPANION, oDWP));
|
||||
DelayCommand(fT+4.4, JumpAssociate(oFM, ASSOCIATE_TYPE_DOMINATED, oDWP));
|
||||
DelayCommand(fT+4.5, JumpAssociate(oFM, ASSOCIATE_TYPE_FAMILIAR, oDWP));
|
||||
DelayCommand(fT+4.6, JumpAssociate(oFM, ASSOCIATE_TYPE_HENCHMAN, oDWP));
|
||||
DelayCommand(fT+4.7, JumpAssociate(oFM, ASSOCIATE_TYPE_SUMMONED, oDWP));
|
||||
}
|
||||
// Select the next member of the faction and loop.
|
||||
oFM = GetNextFactionMember(oFM);
|
||||
}
|
||||
}
|
||||
//Otherwise just jump the PC (and possibly associates)
|
||||
else
|
||||
{
|
||||
//If we are using visual effects (on the PC only)
|
||||
if(nVisuals ==1)
|
||||
{
|
||||
eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
|
||||
//Delay The Jump..
|
||||
AssignCommand(oPC, DelayCommand(3.0, JumpToObject(oDWP)));
|
||||
}
|
||||
else
|
||||
{
|
||||
//Do a quick jump if no visual is used..
|
||||
AssignCommand(oPC, DelayCommand(0.1, JumpToObject(oDWP)));
|
||||
}
|
||||
|
||||
//If the Associates are assigned to go as well
|
||||
if (iTeleportAssociateToo == 1)
|
||||
{
|
||||
// now send the players companions over as well:
|
||||
DelayCommand(3.1, JumpAssociate(oPC, ASSOCIATE_TYPE_ANIMALCOMPANION, oDWP));
|
||||
DelayCommand(3.2, JumpAssociate(oPC, ASSOCIATE_TYPE_DOMINATED, oDWP));
|
||||
DelayCommand(3.3, JumpAssociate(oPC, ASSOCIATE_TYPE_FAMILIAR, oDWP));
|
||||
DelayCommand(3.4, JumpAssociate(oPC, ASSOCIATE_TYPE_HENCHMAN, oDWP));
|
||||
DelayCommand(3.5, JumpAssociate(oPC, ASSOCIATE_TYPE_SUMMONED, oDWP));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//PROTOTYPE DEFINED
|
||||
void JumpAssociate(object i_oPC, int i_type, object i_oWP)
|
||||
{
|
||||
object oAssociate = GetAssociate(i_type, i_oPC);
|
||||
if(GetIsObjectValid(oAssociate))
|
||||
AssignCommand(oAssociate, JumpToObject(i_oWP));
|
||||
}
|
||||
|
Reference in New Issue
Block a user