Paste #69147: Edit of P#69146 - Untitled Paste

Date: 2020/05/18 00:38:37 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" 
  script: 
  - define opt <context.args.get[1]> 
  - if <list[help|buy|tickets|time]> !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$" 
  - narrate "<&e>/lottery time - <&7>The time until the lottery starts" 
  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]> > 100:
    - narrate "<&e><&l>Lottery > <&7>The max amount of tickets you can buy is 100."
    - stop
  - if <context.args.get[2].mul[100]> > <player.money>:
    - narrate "<&e><&l>Lottery > <&7>You don't have enough money to buy <context.args.get[2]>"
    - stop
  - if <player.flag[tickets]||0> >= 100:
    - narrate "<&e><&l>Lottery > <&7>You already have the max amount of tickets. (<player.flag[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."
  time:
  - narrate "to do yet"

loterry_events:
  type: world
  debug: true
  events:
    on lst command:
    - 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].random[1].as_player>
    - 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[150]> 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><player.money>" targets:<def[winner]>
    - flag <def[winner]> tickets:!
    - foreach <server.list_players.filter[has_flag[tickets]]>:
      - flag <def[value]> tickets:!