For the former part...
#include "x2_inc_switches"
void main()
{
int nEvent = GetUserDefinedItemEventNumber(); // Which event triggered this
object oPC; // The player character using the item
int nResult = X2_EXECUTE_SCRIPT_END;
switch (nEvent)
{
case X2_ITEM_EVENT_ACTIVATE:
oPC = GetItemActivator(); // The player who activated the item
if (GetIsInCombat(oPC))
{
FloatingTextStringOnCreature("You cannot recall while in combat!", oPC, FALSE);
return;
}
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("wp_teleport"))));
break;
}
// Pass the return value back to the calling script
SetExecutedScriptReturnValue(nResult);
}
The latter is done by having the power be "Unique Power Self Only" -- that has nothing to do with the script itself.