Date: 2017/10/01 00:44:12 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
65
66
- if <server.list_flags.contains[maps]> {
- define maps <def[1].unescaped.as_list>
- goto loop
}
- define list li@
- repeat <s@Config.yaml_key[maps].size>:
- define list <def[list].include[<def[value]>]>
- define maps li@
- repeat 3:
- define randint <util.random.int[1].to[<def[list].size>]>
- define maps <def[maps].include[<s@Config.yaml_key[maps].get[<def[list].get[<def[randint]>]>]>]>
- define list <def[list].exclude[<def[list].get[<def[randint]>]>]>
- flag server maps.<def[maps].get[<def[value]>]>:0
- flag server chosenmaps:->:<def[maps].get[<def[value]>]>
- mark loop
- while <server.list_online_players.size.is[LESS].than[<s@Config.yaml_key[minplayers]>].and[<server.list_online_players.size.is[MORE].than[0]>]>:
- sidebar set "title:<&e><&l>Waiting | <&7><&l>--" "values:<&6>Total Kills<&co> <&b><player.flag[alltimekills].as_int>|<&6>Total Deaths<&co> <&b><player.flag[alltimedeaths].as_int>|<&6>XP<&co> <&b><player.flag[xp].as_int>|<&6>Medallions<&co> <&b><player.flag[medallions].as_int>|<&a>|<&7>-- <&b><&l>Map Voting<&r> <&7>--|<&a>/vote (mapname)|<&b><&l><def[maps].get[1]><&r><&7><&co> <server.flag[maps.<def[maps].get[1]>].as_int||0>|<&b><&l><def[maps].get[2]><&r><&7><&co> <server.flag[maps.<def[maps].get[2]>].as_int||0>|<&b><&l><def[maps].get[3]><&r><&7><&co> <server.flag[maps.<def[maps].get[3]>].as_int||0>|<&7>|<&6>Players Online<&co> <&b><server.list_online_players.size><&6>/<&a><s@Config.yaml_key[maxplayers]>" players:<server.list_online_players> per_player
- wait 2s
- if <server.list_online_players.size.is[OR_MORE].than[<s@Config.yaml_key[minplayers]>]> {
- ^run s@Pregame d:<def[maps].escaped> instantly
- queue clear
}
else if <server.list_online_players.size.is[EQUALS].to[0]> {
- flag server gamestate:empty
- flag server maps:!
- flag server chosenmaps:!
- queue clear
}
Pregame:
type: task
debug: true
speed: 0
script:
- flag server gamestate:Pregame
- actionbar "<&a><&l>Starting in <&e><&l><s@Config.yaml_key[timers.pregame]> <&a><&l>seconds!" targets:<server.list_online_players>
- wait 1t
- define timer <s@Config.yaml_key[timers.pregame].as_int>
- define votefinished <s@Config.yaml_key[timers.pregamevotefinished]>
- choose <s@Config.yaml_key[maps].size>:
- default:
- while <server.list_online_players.size.is[OR_MORE].than[<s@Config.yaml_key[minplayers]>]>:
- define timeleft <def[timer].sub[<def[loop_index]>].as_int>
- define minutes <def[timer].sub[<def[loop_index]>].div[60].as_int.round_down.pad_left[2].with[0]>
- define seconds <def[timer].sub[<def[loop_index]>].mod[60].as_int.pad_left[2].with[0]>
- sidebar set "title:<&e><&l>Pre-Game | <&b><&l><def[minutes]><&co><def[seconds]>" "values:<&6>Total Kills<&co> <&b><player.flag[solokills].as_int>|<&6>Total Deaths<&co> <&b><player.flag[solodeaths].as_int>|<&6>XP<&co> <&b><player.flag[xp].as_int>|<&6>Medallions<&co> <&b><player.flag[medallions].as_int>|<&a>|<&7>-- <&b><&l>Map Voting<&r> <&7>--|<&a>/vote (mapname)|<&b><&l><def[1].unescaped.as_list.get[1]><&r><&7><&co> <server.flag[maps.<def[1].unescaped.as_list.get[1]>].as_int||0>|<&b><&l><def[1].unescaped.as_list.get[2]><&r><&7><&co> <server.flag[maps.<def[1].unescaped.as_list.get[2]>].as_int||0>|<&b><&l><def[1].unescaped.as_list.get[3]><&r><&7><&co> <server.flag[maps.<def[1].unescaped.as_list.get[3]>].as_int||0>|<&7>|<&6>Players Online<&co> <&b><server.list_online_players.size><&6>/<&a><s@Config.yaml_key[maxplayers]>" players:<server.list_online_players> per_player
- if <def[timeleft].is[==].to[<s@Config.yaml_key[timers.pregamevotefinished]>]> {
- define list li@
- foreach <server.flag[chosenmaps].as_list> {
- define list <def[list].include[<server.flag[maps.<def[value]>].as_int||0>_<def[value]>]>
}
- define map <def[list].alphanumeric.get[1].after[_]>
- announce "<&b>Votes have been cast! <&d><&l><def[map].to_titlecase><&r> <&b>map has been chosen!"
- flag server votedmap:<def[map]>
}
- if <def[timeleft].is[OR_LESS].than[0]> {
- while stop
}
- wait 1s
- if <server.list_online_players.size.is[LESS].than[<s@Config.yaml_key[minplayers]>]> {
- ^run s@Waiting d:<def[1]> instantly
- queue clear
}
else {
- ^run s@Starting instantly
- queue clear
}