- D1 Meta Docs - Denizen Script -
Home Page / Pi to one million places / Contact mcmonkey / Donate / Paste Scripts / Denizen Help /
You are browsing as a guest.
Login | Register








The script repo is an archive of historical scripts. For modern scripts, or to post your own, please use the Scripts forum section.





Staff Pick: NPC Checkpoints


By mcmonkey
Created: 2015/01/10 14:19:18 UTC-08:00 (9 years and 348 days ago)
Edited: 2015/02/04 16:32:41 UTC-08:00 (9 years and 323 days ago)
Likes: 1

Staff pick as of: 2015/01/10 14:19:29 UTC-08:00 (9 years and 348 days ago)
Denizen Version: 0.9.3
Script Version: 1.0
Description:

# Simply spawn an NPC and do
# /npc assign --set respawnmaster
# and now you have a checkpoint NPC :D



Download script | View raw script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
7400

# 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]||null> == <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> == 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]||null>

# 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]||null>

# Remember, when whatever quest is completed, to run this command:
# - flag player respawnpoint:!
# To remove the respawnpoint and allow them to respawn normally 






View History