Paste #69912: lotz

Date: 2020/05/30 07:18:13 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


lottery_command:
  type: command
  name: lottery
  description: Main command for Lottery plugin
  usage: "/lottery help"
  aliases:
  - lot
  script:
  - define opt <context.args.get[1]>
  - if <list[help|buy|tickets]> !contains <def[opt]>:
    - define opt help
  - inject locally path:<def[opt]>
  help:
  - narrate "<&e><&l>Lottery help"
  - narrate "<&e>/lottery help - <&7>Displays this page"
  - narrate "<&e>/lottery tickets - <&7>Displays the amount of tickets you currently have"
  - narrate "<&e>/lottery buy (amount) - <&7>Buy lottery tickets"
  - narrate "<&e> 1 ticket = 100$"
  buy:
  - if !<context.args.get[2].matches[[0-9]+]||false>:
    - narrate "<&e><&l>Lottery > <&7>Please specify a number input."
    - stop
  - if <context.args.get[2].add[<player.flag[tickets]>]> > 100:
    - narrate "<&e><&l>Lottery > <&7>The max amount of tickets you can buy is 100."
    - narrate "<&e><&l>Lottery > <&7>You can only buy <&a><element[100].sub[<player.flag[tickets]>]> <&7>more tickests."
    - stop
  - if <player.flag[tickets]||0> >= 100:
    - narrate "<&e><&l>Lottery > <&7>You already have the max amount of tickets. (<player.flag[tickets]>)"
    - stop
  - if <context.args.get[2].mul[100]> > <player.money>:
    - narrate "<&e><&l>Lottery > <&7>You don't have enough money to buy <&a><context.args.get[2]> <&7>tickets."
    - stop
  - flag player tickets:++:<context.args.get[2]>
  - money take quantity:<context.args.get[2].mul[100]> from:<player>
  - narrate "<&e><&l>Lottery > <&7>You bought <context.args.get[2]> tickets."
  tickets:
  - narrate "<&e><&l>Lottery > <&7>You have <&a><player.flag[tickets]||0> <&7>tickets."

lottery_task:
  type: task
  script:
  - announce "<&e><&l>Lottery > <&7>The Lottery has started."
  - announce "<&e><&l>Lottery > <&7>Buy tickets using <&a>/lottery buy"
  - wait 5m
  - announce "<&e><&l>Lottery > <&7>The Lottery will roll in 25 minutes"
  - announce "<&e><&l>Lottery > <&7>Buy tickets using <&a>/lottery buy"
  - wait 5m
  - announce "<&e><&l>Lottery > <&7>The lottery will roll in 20 minutes"
  - announce "<&e><&l>Lottery > <&7>Buy tickets using <&a>/lottery buy"
  - wait 5m
  - announce "<&e><&l>Lottery > <&7>The lottery will roll in 15 minutes"
  - announce "<&e><&l>Lottery > <&7>Buy tickets using <&a>/lottery buy"
  - wait 5m
  - announce "<&e><&l>Lottery > <&7>The lottery will roll in 10 minutes"
  - announce "<&e><&l>Lottery > <&7>Buy tickets using <&a>/lottery buy"
  - wait 5m
  - announce "<&e><&l>Lottery > <&7>The lottery will roll in 5 minutes"
  - announce "<&e><&l>Lottery > <&7>Buy tickets using <&a>/lottery buy"
  - wait 5m
  - if <server.list_players.filter[has_flag[tickets]].is_empty>:
    - announce "<&e><&l>Lottery > <&7>The Lottery had no winner."
    - stop
  - define tickets <list[]>
  - foreach <server.list_players.filter[has_flag[tickets]]>:
    - define tickets <def[tickets].include[<def[value]>/<def[value].as_player.flag[tickets]>]>
  - define sorted <def[tickets].sort_by_number[after[/]].reverse>
  - if <def[sorted].filter[after[/].is[or_more].than[<def[sorted].get_sub_items[2].get[1]>]].size> > 1:
    - define winner <def[sorted].filter[after[/].is[or_more].than[<def[sorted].get_sub_items[2].get[1]>]].get_sub_items[1].get[<util.random.int[1].to[<def[sorted].filter[after[/].is[or_more].than[<def[sorted].get_sub_items[2].get[1]>]].size>]>]>
  - else:
    - define winner <def[sorted].get_sub_items[1].get[1].as_player>
  - announce "<&e><&l>Lottery > <&a><&l><def[winner].name> <&7>has won the lottery and won <&e><def[winner].flag[tickets].mul[130]>$"
  - money give quantity:<def[winner].flag[tickets].mul[130]> to:<def[winner]>
  - narrate "<&e><&l>Lottery > <&7>You have won the lottery and received <&a><def[winner].flag[tickets].mul[130]><&7>$." targets:<def[winner]>
  - narrate "<&e><&l>Lottery > <&7>New balance: <&a><def[winner].money><&7>$" targets:<def[winner]>
  - flag <def[winner]> tickets:!
  - foreach <server.list_players.filter[has_flag[tickets]]>:
    - flag <def[value]> tickets:!

loterry_events:
  type: world
  debug: true
  events:
    on system time minutely every:35:
    - run lottery_task