Skip to content

Commit b94a10d

Browse files
committed
✨ Added duration.
Added the ability to set a duration for Codes and Code groups.
1 parent a85b39b commit b94a10d

1 file changed

Lines changed: 42 additions & 20 deletions

File tree

plugins/Denizen/scripts/SpikeCodeRedeem.dsc

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ SpikeCodeCreateCode:
9090
- if <[prefix].exists>:
9191
- define code <[prefix]><[code]>
9292
# Sets the amount how often the code can be used.
93+
- if <[duration]> != unlimited:
94+
- flag server redeemableCodes.<[code]> expire:<[duration]>
9395
- flag server redeemableCodes.<[code]>.amount:<[amount]>
9496
# Sets the commands that shall be executed!
9597
- if <[command]> == group:
@@ -98,6 +100,7 @@ SpikeCodeCreateCode:
98100
- flag server redeemableCodes.<[code]>.commands:<list>
99101
- flag server redeemableCodes.<[code]>.commands:->:<[command]>
100102
# Check if a permission shall be set.
103+
# Not used at the moment
101104
- if <[permission]> != null:
102105
- define msg 'The code "<[code]>" with <[amount]> possible redemption(s) and the "<[permission]>" permission required was created!'
103106
- flag server redeemableCodes.<[code]>.permission:<[permission]>
@@ -214,7 +217,7 @@ SpikeCodeRedeemAdminCommand:
214217
debug: false
215218
name: redeemsettings
216219
description: Admin Settings for Spike's redeemable codes.
217-
usage: /redeemsettings <&lb>create/edit/delete<&rb> <&lb><&lt>code<&gt>/random<&rb> <&lb><&lt>amount of uses<&gt>/unlimited<&rb> <&lb><&lt>command<&gt>/group:<&lt>command group<&gt><&rb> (<&lt>permission<&gt>)
220+
usage: /redeemsettings help - for help
218221
aliases:
219222
- redeemadmin
220223
- codeadmin
@@ -225,7 +228,7 @@ SpikeCodeRedeemAdminCommand:
225228
allowed help:
226229
- determine <player.has_permission[spikehidden.admin]>||<context.server>||<player.has_permission[spikehidden.coderedeem.admin]>||<player.has_permission[spikehidden.coderedeem.codes]>
227230
tab completions:
228-
1: create|edit|delete
231+
1: create|edit|delete|help
229232
tab complete:
230233
- if <context.raw_args.split_args.size> >= 2:
231234
# If create
@@ -235,8 +238,10 @@ SpikeCodeRedeemAdminCommand:
235238
- else if <context.raw_args.split_args.size> == 3:
236239
- determine 1|10|100|unlimited
237240
- else if <context.raw_args.split_args.size> == 4:
241+
- determine 1s|1m|1h|1d|1w|1y|unlimited
242+
- else if <context.raw_args.split_args.size> == 5:
238243
- determine group|<server.commands>
239-
- else if <context.raw_args.split_args.size> >= 5:
244+
- else if <context.raw_args.split_args.size> >= 6:
240245
- determine <&lt>argument<&gt>
241246
# If Edit
242247
- else if <context.raw_args.split_args.get[1]> == edit:
@@ -306,10 +311,11 @@ SpikeCodeRedeemAdminCommand:
306311
# define stuff for the create command
307312
- define code <[args].get[2].if_null[null]>
308313
- define amount <[args].get[3].if_null[null]>
309-
- define command <[args].get[4].to[last].space_separated.if_null[null]>
314+
- define duration <[args].get[4].as_duration.if_null[null]>
315+
- define command <[args].get[5].to[last].space_separated.if_null[null]>
310316
- define permission null
311317
# Check if arguments exist
312-
- if <[amount]> == null || <[command]> == null:
318+
- if <[amount]> == null || <[command]> == null || <[duration]> == null:
313319
- define msg "Missing arguments!"
314320
# Check if amount is decimal or unlimited
315321
- else if !<[amount].is_decimal> && <[amount]> != unlimited:
@@ -433,6 +439,13 @@ SpikeCodeRedeemAdminCommand:
433439
- define msg "The code group <&dq><[name]><&dq> with <[codeCount]> code/s was succesfully deleted."
434440
- else:
435441
- define msg 'The specified group does not exits!"'
442+
443+
# - Help
444+
- default:
445+
- define msg "<&l><&9>Help for '/redeemsettings'<&r><&nl>"
446+
- define msg "<[msg]>/redeemsettings create <&lb><&lt>code<&gt>|random<&rb> <&lb><&lt>uses<&gt>|unlimited<&rb> <&lb><&lt>duration<&gt>|unlimited<&rb> <&lb><&lt>command<&gt>|group<&rb><&nl>"
447+
- define msg "<[msg]>/redeemsettings edit <&lb>code|group<&rb> <&lb><&lt>ID<&gt><&rb> <&lb>amount|command|duration<&rb> <&lb><&lt>value<&gt><&rb><&nl>"
448+
- define msg "<[msg]>/redeemsettings delete <&lb><&lt>code|group<&rb> <&lb><&lt>name<&gt><&rb>"
436449
- narrate <[msg]>
437450

438451
# + Command for redeeming codes.
@@ -527,7 +540,7 @@ SpikeCodeRedeemBulkCreate:
527540
debug: false
528541
name: bulkcodecreate
529542
description: Admin Settings for Spike's redeemable codes.
530-
usage: /bulkcodecreate <&lb><&lt>code group name<&gt><&rb> <&lb><&lt>amount of codes<&gt><&rb> <&lb><&lt>command<&gt>/group<&lt>command group<&gt><&rb> (<&lt>format for list export<&gt>) (<&lt>permission<&gt>)
543+
usage: /bulkcodecreate <&lb><&lt>code group name<&gt><&rb> <&lb><&lt>Amount_of_Codes<&gt><&rb> <&lb><&lt>Duration<&gt><&rb> <&lb><&lt>command<&gt>/group<&lt>command group<&gt><&rb> (<&lt>format for list export<&gt>) (<&lt>permission<&gt>)
531544
aliases:
532545
- bulkcreate
533546
permission: spikehidden.admin;spikehidden.coderedeem.admin;spikehidden.coderedeem.codes
@@ -538,36 +551,40 @@ SpikeCodeRedeemBulkCreate:
538551
1: <&lt>Code_Group_Name<&gt>
539552
# amount of codes
540553
2: 1|2|3|4|5|10|100|1000
554+
# duration
555+
3: 1s|1m|1h|1d|1w|1y
541556
# format
542-
3: list|wizebot
557+
4: list|wizebot
543558
default: <empty>
544559

545560
tab complete:
546-
- if <context.raw_args.split_args.size> == 4:
561+
- if <context.raw_args.split_args.size> == 5:
547562
- determine group|<server.commands>
548-
- else if <context.raw_args.split_args.size> == 5:
563+
- else if <context.raw_args.split_args.size> == 6:
549564
- determine <&lb>prefix<&rb>
550-
- else if <context.raw_args.split_args.size> >= 5:
565+
- else if <context.raw_args.split_args.size> >= 7:
551566
- determine "Too many arguments! Try putting the arguments in quotes (<&dq><&dq>)!"
552567

553568
script:
554569
- define args <context.raw_args.split_args>
570+
# 1
555571
- define group <[args].get[1].if_null[null]>
572+
# 2
556573
- define groupAmount <[args].get[2].if_null[null]>
557-
- define command <[args].get[4].if_null[null]>
558-
- define format <[args].get[3].if_null[null]>
559-
- define prefix <[args].get[5].if_null[<empty>]>
574+
# 3
575+
- define duration <[args].get[3].if_null[null]>
576+
# 4
577+
- define format <[args].get[4].if_null[null]>
578+
# 5
579+
- define command <[args].get[5].if_null[null]>
580+
# 6
581+
- define prefix <[args].get[6].if_null[<empty>]>
560582
- define UsePastebin <script[SpikeCodeRedeemData].data_key[UsePastebin].if_null[false]>
561-
# - define permission <context.args.get[5].if_null[null]>
583+
# - define permission <context.args.get[7].if_null[null]>
562584
- define permission null
563585
- define amount 1
564586
# check for missing arguments
565-
- if <[group]> == null || <[groupAmount]> == null || <[command]> == null:
566-
- narrate "Missing arguments!"
567-
- stop
568-
# - Create
569-
# Check if arguments exist
570-
- if <[groupAmount]> == null || <[command]> == null:
587+
- if <[groupAmount]> == null || <[duration]> == null || <[command]> == null:
571588
- define msg "Missing arguments!"
572589
# Check if groupAmount is decimal
573590
- else if !<[groupAmount].is_decimal>:
@@ -585,6 +602,9 @@ SpikeCodeRedeemBulkCreate:
585602
- narrate 'Could not create an unused random code group name. Try again or if this error persists open an issue on GitHub.'
586603
- stop
587604
- define group <entry[newgroup].result.replace_text[<&dq>]>
605+
# Set group expire if duration is not unlimited
606+
- if <[duration]> != unlimited:
607+
- flag server redeemableGroups.<[group]> expire:<[duration]>
588608
# Sets the amount how may codes are in the group.
589609
- flag server redeemableGroups.<[group]>.amount:<[amount]>
590610
# Creates the specified amount of codes.
@@ -604,6 +624,7 @@ SpikeCodeRedeemBulkCreate:
604624
# If so set the permission.
605625
- else:
606626
- define msg 'The group "<[group]>" with <[amount]> possible redemption was created!'
627+
# Run pastbin task if it is set in config
607628
- if <[UsePastebin]>:
608629
- choose <[format]>:
609630
- case list:
@@ -615,6 +636,7 @@ SpikeCodeRedeemBulkCreate:
615636
- run SpikeCodeSendPastebin def:<player>|<[group]>|<[csv].separated_by[<&nl>]>|<[format]>
616637
- default:
617638
- run SpikeCodeSendPastebin def:<player>|<[group]>|<server.flag[redeemableGroups.<[group]>.codes].separated_by[<&nl>]>|list
639+
# If not save list localy.
618640
- else:
619641
- choose <[format]>:
620642
- case list:

0 commit comments

Comments
 (0)