93 lines
2.8 KiB
Plaintext
93 lines
2.8 KiB
Plaintext
|
/*--------------------------------------------------------
|
||
|
|
||
|
Script Name: stoneportshome
|
||
|
----------------------------------------------------------
|
||
|
Created By: Genisys(Guile)
|
||
|
Created On: 2/09/09
|
||
|
----------------------------------------------------------
|
||
|
This Recall's the PC Speaker to the waypoint tagnamed "home"
|
||
|
Then it's stores thier location in a database location!
|
||
|
|
||
|
If the PC is in combat, they cannot recall for any reason!
|
||
|
|
||
|
If the PC is in a PVP Area they cannot recall!
|
||
|
(check's for local int "PVP" of 1 or higher)
|
||
|
----------------------------------------------------------*/
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
// uncomment one of the next 3 lines depending where you use the script:
|
||
|
object oPC = GetPCSpeaker(); // for conversations
|
||
|
object oWay = GetNearestObjectByTag("no_recall", oPC);
|
||
|
|
||
|
if(GetIsPC(oPC))
|
||
|
{
|
||
|
if(GetIsInCombat(oPC))
|
||
|
{
|
||
|
FloatingTextStringOnCreature("You cannot recall while in combat!", oPC, TRUE);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
else if(GetLocalInt(GetArea(oPC), "PVP")>=3)
|
||
|
{
|
||
|
FloatingTextStringOnCreature("You cannot recall from a PVP area!", oPC, TRUE);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
object oToken = GetItemPossessedBy(oPC, "idtoken");
|
||
|
string sName = GetName(oToken);
|
||
|
object oArea = GetArea(oPC);
|
||
|
location lSaved = GetLocation(oPC);
|
||
|
object oSaved = GetAreaFromLocation(lSaved);
|
||
|
int nMulti = GetLocalInt(GetModule(), "multi");
|
||
|
|
||
|
// set to 1 if you want to teleport the whole party of the player, whereever every member is:
|
||
|
int iTeleportWholeParty = 0;
|
||
|
// set to 1 if you want the Associates of the player to be teleported as well, otherwise to 0:
|
||
|
int iTeleportAssociateToo = 1;
|
||
|
// Enter the destination Waypoint in here:
|
||
|
object oDWP = GetWaypointByTag("del_docks");
|
||
|
|
||
|
//--DEBUGGING-----------------------
|
||
|
//If the way point is not there..
|
||
|
if (oDWP==OBJECT_INVALID)
|
||
|
{ FloatingTextStringOnCreature("No Destination Found.", oPC);
|
||
|
return; }
|
||
|
|
||
|
else
|
||
|
{
|
||
|
if(oSaved==OBJECT_INVALID)
|
||
|
{
|
||
|
FloatingTextStringOnCreature("No Destination Found.", oPC);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
//Don't store information if the location is invalid!
|
||
|
if(oArea!=OBJECT_INVALID)
|
||
|
{
|
||
|
if(oWay==OBJECT_INVALID)
|
||
|
{
|
||
|
SetLocalLocation(oToken, "RECALL_LOC", lSaved);
|
||
|
FloatingTextStringOnCreature("Location Saved!", oPC, FALSE);
|
||
|
if(nMulti) //If Multiplayer, Save Their Toon!
|
||
|
{
|
||
|
ExportSingleCharacter(oPC);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
effect eVis = EffectVisualEffect(472);
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC, 0.0f);
|
||
|
|
||
|
eVis = EffectDisappear(1);
|
||
|
DelayCommand(1.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC, 0.0f));
|
||
|
|
||
|
DelayCommand(2.5, AssignCommand(oPC, ClearAllActions()));
|
||
|
|
||
|
//Allow for the visual effect to finish.
|
||
|
DelayCommand(2.6, AssignCommand(oPC, ActionJumpToObject(oDWP)));
|
||
|
|
||
|
}
|
||
|
}
|