Date: 2014/09/30 08:51:41 UTC-07:00
Type: Denizen 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
"DeathBan_Signs":
type: world
events:
on player changes sign:
- if <c.new.get[1]> == [DB] && <player.has_permission[denizen.deathban.signs.leaders]> {
- if <player.flag[DeathBan_Leaders_Signs_Limit].is[OR_LESS].than[<player.flag[DeathBan_Leaders_Signs_Placed]>]> && !<player.has_permission[denizen.deathban.admin]> {
- narrate "<&a>DeathBan<&co> <&c>You cannot place anymore signs! Break one to place a new sign."
- determine cancelled
}
- define parameter <c.new.get[2].to[3].unseparated>
- if <def[parameter].as_player.is_player> {
- define type player
- define parameter <def[parameter].as_player>
}
else { define type place }
- if <def[type].is[==].to[place]> {
- yaml 'load:DeathBan/leaders.yml' 'id:<player.name>SignPlace'
- if <yaml[<player.name>SignPlace].list_keys[Leaders]> !contains %parameter% {
- narrate "<green>DeathBan<&co> <red>Invalid Place!"
- yaml unload 'id:<player.name>SignPlace'
- determine cancelled
}
- define UUID <yaml[<player.name>SignPlace].read[Leaders.%parameter%.player].as_player>
- define score <yaml[<player.name>SignPlace].read[Leaders.%parameter%.score].as_int>
- run s@DeathBan_Signs_Leaders 'def:%parameter%|%UUID%|%score%|<c.location>|<c.material>|%type%'
- determine cancelled
}
- if <def[type].is[==].to[player]> {
- define writeID <player.name>SignPlace
- yaml 'load:DeathBan/leaders.yml' 'id:%writeID%'
- foreach <yaml[%writeID%].list_keys[Leaders]> {
- define readPath Leaders.%value%.player
- if <yaml[%writeID%].read[%readPath%].is[==].to[<def[parameter].uuid>]> {
- define place %value%
- foreach stop
}
}
- define score <yaml[%writeID%].read[Leaders.%place%.score]>
- yaml unload 'id:%writeID%'
- run s@DeathBan_Signs_Leaders 'def:%place%|<def[parameter].as_player>|%score%|<c.location>|<c.material>|%type%'
- determine cancelled
}
- if <c.new.get[1]> == [TIME] && <player.has_permission[denizen.deathban.admin]> {
- flag server 'DeathBan_Signs_Time:->:<c.location>'
- run s@DeathBan_Signs_Time 'def:<c.location>|<c.material>'
}
on player breaks block:
- if <c.material.name.is[==].to[wall_sign]> || <c.material.name.is[==].to[sign_post]> {
- define line1 <c.location.sign_contents.get[1]>
- if %line1% == "<green>LEADER" {
- run s@DeathBan_Signs_Leaders 'path:RemoveSign' 'def:<c.location>'
- queue clear
}
- if %line1% == [TIME] && <global.flag[DeathBan_Signs_Time].as_list> contains <c.location> {
- flag server 'DeathBan_Signs_Time:<-:<c.location>'
}
on server start:
- if !<queue.exists[DB_SUpd_Exe]> && !<global.flag[DeathBan_SignUpdateTask].is[==].to[true]> {
- run s@DeathBan_Signs_Leaders 'path:SignUpdate' 'delay:60s'
}
- run s@DeathBan_Signs_Time_Update