Paste #44771: Map Voting

Date: 2017/10/01 00:44:12 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


- 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
    }