NPC Checkpoints
Author: mcmonkey
Created: 2013-10-21T23:26:30-0400
Edited: 2014-05-17T15:57:18-0400
Denizen Version: 0.9.3
Views: 47
Downloads: 928
Likes: 2
Description: An overexplained example script to create NPC-powered checkpoints (respawn points) within a quest / challenge area.
This is intended as a way to help scripters learn, but will work in a live server unedited.
See with proper dScript highlighting: http://mcmonkey.org/paste/91
# Simply spawn an NPC and do
# /npc assign --set respawnmaster
# and now you have a checkpoint NPC :D
# NPC Assignment script
respawnmaster:
# Obligatory type
type: assignment
# Actions = script run when NPC-related events occur
actions:
# This one is when the NPC is assigned
on assignment:
# Enable the trigger 'Proximity' with a radius of 10 blocks
- trigger name:proximity state:true radius:10
# interact script list
interact scripts:
# The interact below
- 10 respawnmaster_interact
# The interact script
respawnmaster_interact:
# Obligatory type
type: interact
# List the steps below
steps:
# First (Default) step
1:
# Triggers that fire when a player moves around near an NPC
proximity trigger:
# Specifically, when a player enters the radius of 10 blocks mentioned above
entry:
# Run this script...
script:
# If the player's last set checkpoint was set by this NPC,
# cancel the current script queue (Clear it) (Meaning, the the flag/narrate won't happen)
- if <player.flag[respawner]> == <npc.id> queue clear
# Add a flag on the player, named respawnpoint, set to the player's current location at the time he entered the radius
- flag player respawnpoint:<player.location>
# Add a flag on the player, named respawner, set to the ID of the NPC that set this checkpoint.
- flag player respawner:<npc.id>
# Tell the player that he has reached the checkpoint, in green
- narrate "<&2>You reached a checkpoint!"
# World script to handle respawning
respawnhandler:
# Obligatory type
type: world
# List of world events (events not related to an NPC) that we want to run scripts for
events:
# The event that fires when a player dies and respawns
on player respawns:
# If the player doesn't have a respawn point, clear the scriptqueue, same as above, preventing the determine
- if <player.flag[respawnpoint]> == null queue clear
# Run the task script 'respawnnomercy' with a delay of one second
- run respawnnomercy delay:2s
# Tell the event that we want to change the outcome to the player's flagged respawn point...
# in this event, that changes where the player respawns
# Thus, the player respawns at the checkpoint set in the prox trigger above
- determine <player.flag[respawnpoint]>
# A task script to prevent errors on Multiverse/whatever servers
respawnnomercy:
# Obligatory type
type: task
# Script below is the only script in a task
script:
# Teleport the player to the respawn point, in case the determine above didn't do it
- teleport <player> <player.flag[respawnpoint]>
# Remember, when whatever quest is completed, to run this command:
# - flag player respawnpoint:!
# To remove the respawnpoint and allow them to respawn normally