Date: 2020/05/30 07:18:13 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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