-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdispatch.ms
122 lines (104 loc) · 4.33 KB
/
dispatch.ms
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
proc(_warp_dispatch, @input,
# Parse the incoming command, depending on it's first
# word.
# Called with empty command?
@match = parse_args(@input)
if(array_size(@match)) {
@first = array_remove(@match, 0)
@args = @match
} else {
msg('The following commands are available:')
msg('- ', color(green), '/warp', color(white), ': show this message')
msg('- ', color(green), '/warp [p]create <name>', color(white), ': create a new warp. Private if pcreate is used.')
msg('- ', color(green), '/warp set <name>', color(white), ': alias for /warp create.')
msg('- ', color(green), '/warp delete <id>', color(white), ': delete a warp.')
msg('- ', color(green), '/warp public <name>', color(white), ': set warp to public.')
msg('- ', color(green), '/warp private <name>', color(white), ': set warp to private.')
msg('- ', color(green), '/warp welcome <name> [message]', color(white), ': set warp\'s welcome message.')
msg('- ', color(green), '/warp invite <name> <player>', color(white), ': allow a player to bypass private warp status.')
msg('- ', color(green), '/warp uninvite <name> <player>', color(white), ': disallow a player to bypass private warp status.')
msg('- ', color(green), '/warp list', color(white), ': list available public warps as well as warps shared to you.')
return()
}
switch(@first,
'update',
_warp_update()
die(color(green). 'Any outdated warps were updated.'),
array('set', 'create', 'pcreate'),
if(array_size(@args)) {
_warp_create(array_implode(@args, ' '), @first == 'pcreate')
} else {
die('Usage: /warp [[p]create|set] <name>')
},
'delete',
if(array_size(@args)) {
@warp = _search_warp(@args)[0]
_warp_delete(@warp)
} else {
die('Usage: /warp delete <name>')
},
'public',
if(array_size(@args)) {
@warp = _search_warp(@args)[0]
_warp_private(@warp, false)
} else {
die('Usage: /warp public <name>')
},
'private',
if(array_size(@args)) {
@warp = _search_warp(@args)[0]
_warp_private(@warp, true)
} else {
die('Usage: /warp private <name>')
},
'welcome',
if(array_size(@args)) {
@data = _search_warp(@args)
@warp = @data[0]
@id = @data[1]
@message = array()
foreach(@args, @key, @n) {
if(@key > @id) {
array_push(@message, @n)
}
}
_warp_welcome(@warp, array_implode(@message, ' '))
} else {
die('Usage: /warp welcome <name> [message]')
},
'invite',
if(array_size(@args)) {
@data = _search_warp(@args)
@warp = @data[0]
@id = @data[1]
foreach(@args, @n) {
if(array_index(@args, @n) > @id) {
@player = @n
break()
}
}
_warp_share(@warp, @player, true)
} else {
die('Usage: /warp invite <name> <player>')
},
'uninvite',
if(array_size(@args)) {
@data = _search_warp(@args)
@warp = @data[0]
@id = @data[1]
foreach(@args, @n) {
if(array_index(@args, @n) > @id) {
@player = @n
break()
}
}
_warp_share(@args[0], @args[1], false)
} else {
die('Usage: /warp uninvite <name> <player>')
},
'list',
_warp_list(),
# default
_warp_to(@input)
)
)