Paste #47770: Diff note for paste #47769

Date: 2018/06/08 14:55:35 UTC-07:00
Type: Diff Report

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 li@gui|buy|credits| !contains <def[opt]> {
     - define opt help
     }
   - inject locally path:<def[opt]>
   help:
     - narrate "<&6>Lottery help - Commands:"
     - ^narrate "<&6>/lottery help - <&7>Displays this page"
     - ^narrate "<&6>/lottery gui - <&7>Opens lottery inventory GUI"
     - ^narrate "<&6>/lottery buy (amount) - <&7>Buy lottery credits"
     - ^narrate "<&7> 1 credit = 10$"
     - ^narrate "<&6>/lottery credits - <&7>Check your credits balance"
   gui:
     - inventory open d:in@lottery_gui
   credits: 
     - narrate "<&6>[<&b>Lottery<&6>] <&e>You have <&6><player.flag[credits].round> <&e>credits."
   buy:
     - if !<context.args.get[2].matches[[0-9]+]||false> || <context.args.get[2].length||0> >= 4 {
       - narrate "<&6>[<&b>Lottery<&6>] <&e>You didn't specify an amount, or the specified was either invalid or too big"
       - queue clear
       }
     - if <player.money> >= <context.args.get[2].mul[10]> {
       - execute as_op "eco take <player.name> <context.args.get[2].mul[10]>"
       - flag player credits:+:<context.args.get[2]>
       - narrate "<&6>[<&b>Lottery<&6>] <&6><context.args.get[2].round> <&e>credits has been added to your account."
       - if <player.has_flag[extracredits].not> {
         - flag player extracredits:1
         } 
         else if <player.has_flag[extracredits]> {
         - determine passively cancelled 
         }
       - queue clear
       }
       else {
       - narrate "<&6>[<&b>Lottery<&6>] <&e>You don't have enough money"
       - determine cancelled
       }
   
 extracredits_handler:
   type: world
   events:
     on system time hourly:
     - if <server.get_players_flagged[extracredits].size> >= 3 {
       - define randomplayer <server.get_players_flagged[extracredits].random>
       - flag <def[randomplayer]> credits:+:10
       - announce "<&6>[<&b>Lottery<&6>] <&e><def[randomplayer].name> recieved 10 extra credits!"
       - foreach <server.get_players_flagged[extracredits]> {
         - flag <def[value]> extracredits:!
         }
       }
 
 rtd_gui_task:  
   type: task  
   debug: false  
   speed: 0  
   prefix: '&ss1&ss2&ss1&ss5&ss2&ss0&ss2&ss0&ss0&ss5&ss1&ss8&ss2&ss5&ss0&ss7&ss2&ss1&ss0&ss9&ssr'  
   script:  
   - define base_inv ''  
   #- define base_inv 'in@generic[title=<&6><&l>Lottery GUI;size=27;contents=li@i@air]'  
   - inventory open 'd:in@generic[title=<script.yaml_key[prefix].unescaped><&6><&l>Lottery GUI;size=27]'  
   - wait 1t  
   - repeat 50 {  
     - define rng '<util.random.int[1].to[300]>'  
     - if <def[rng]> < 30 {  
       - define item 'i@iron_sword[display_name=&sseLottery Sword;lore=&ss6Whippity whoopity, you now have a sword!;enchantments=DURABILITY,2|DAMAGE_ALL,3]'  
     }   
     else if <def[rng]> < 40 {  
       - define item 'i@largetoken' 
     }   
     else if <def[rng]> < 60 {  
       - define item 'i@diamond_chestplate[display_name=&ssaLottery Chestplate;nbt_attributes=generic.armor/chest/0/1]'  
     }  
     else if <def[rng]> < 85 {  
       - define item 'i@lootpot' 
     }  
     else if <def[rng]> < 110 {  
       - define item 'i@FartPotion' 
     }  
     else if <def[rng]> < 140 {  
       - define item 'i@lifegem'  
     }  
     else if <def[rng]> < 145 { 
       - define item 'i@relic' 
     } 
     else if <def[rng]> < 165 { 
       - define item 'i@smalltoken' 
     } 
     else if <def[rng]> < 175 { 
       - define item 'i@mediumtoken' 
     } 
     else if <def[rng]> < 190 { 
       - define item 'i@dirt[display_name=<&6>Dertt :c]' 
     } 
     else if <def[rng]> < 210 { 
-      - define item 'i@cobblestone' 
+      - define item 'i@cobblestone[display_name=<&c>Better luck next time...]' 
     }
     else if <def[rng]> < 230 {
-      - define item 'i@diamond'
+      - define item 'i@diamond[display_name=<&b>Diamond]'
     }
     else if <def[rng]> < 250 {
-      - define item 'i@Golden_Apple'
+      - define item 'i@Golden_Apple[display_name=<&b>Golden Apple]'
     }
     else if <def[rng]> < 270 {
       - define item 'i@totem[display_name=<&d>Totem of Undying]'
     }
     else if <def[rng]> < 285 {
       - define item 'i@saddle[display_name=<&d>Saddle!]'
     }
     else {  
       - define item 'i@LuckyTag'  
     }  
     - if <def[item]> != <def[prev_item]||i@air> {  
       - inventory open  
         'd:in@generic[title=<script.yaml_key[prefix].unescaped><&6><&l>Lottery GUI;size=27;contents=li@i@air|i@air|i@air|i@air|i@air|i@air|i@air|i@air|i@air|i@air|i@air|i@air|i@air|<def[item]>]'  
     }  
     - define prev_item '<def[item]>'  
     - wait <el@2.71828182846.power[<def[value].mul[0.125].sub[3]>].round_up>t  
   }  
   - wait 1s  
   - narrate "<&6>[<&b>Lottery<&6>] <&e>Congratulations! You got <def[item].display_name>!" 
   - give <def[item]>  
   - flag player can_close_inv  
   - inventory close  
 
 rtd_gui_evts:  
   type: world  
   debug: false  
   events:  
     on player closes inventory:  
     - if <context.inventory.title.escaped.starts_with[&ss1&ss2&ss1&ss5&ss2&ss0&ss2&ss0&ss0&ss5&ss1&ss8&ss2&ss5&ss0&ss7&ss2&ss1&ss0&ss9&ssr]> {  
       - if !<player.has_flag[can_close_inv]> {  
         - determine cancelled  
       }  
       - flag player can_close_inv:!  
     }  
 
 runscript:
   type: item
   material: i@diamond[flags=HIDE_ATTRIBUTES|HIDE_ENCHANTS;enchantments=ARROW_DAMAGE,1]
   display name: <&d>Play lottery for 20 credits!
 
 lottery_gui:
   type: inventory
   title: Lottery
   size: 27
   slots:
   - "[wgs] [wgs] [bal] [] [] [] [bal] [wgs] [wgs]"
   - "[wgs] [lcredits] [] [] [runscript] [] [] [lcredits] [wgs]"
   - "[wgs] [wgs] [bal] [] [] [] [bal] [wgs] [wgs]"
   definitions:
     wgs: i@black_stained_glass_pane
     lcredits: i@white_stained_glass_pane[display_name=<&d>Credits:;lore=<&f><player.flag[credits].round>]
     bal: i@white_stained_glass_pane[display_name=<&d>Your money:;lore=<&f>$<player.money.as_int.round>]
 
 roll_handler:
   type: world
   events:
     on player clicks in lottery_gui:
     - determine cancelled
     on player drags in lottery_gui:
     - determine cancelled
     on player clicks runscript in lottery_gui: 
     - if <player.flag[credits].round> < 20 { 
       - inventory close 
       - narrate "<&6>[<&b>Lottery<&6>] <&e>You don't have enough credits!" 
       - queue clear 
       } 
     - if <player.has_flag[limit]> { 
       - inventory close 
       - narrate "<&6>[<&b>Lottery<&6>] <&e>You need to wait <player.flag[limit].expiration.in_minutes.round_to[2]> minutes to play again!" 
       - queue clear 
       } 
     - if <player.inventory.empty_slots.is[==].to[0]> { 
       - inventory close 
       - narrate "<&6>[<&b>Lottery<&6>] <&e>You can't play lottery, inventory is full!" 
       - queue clear 
       } 
     - inventory close     
     - flag player credits:-:20 
     - flag player limit:1 d:10m
     - run rtd_gui_task instantly player:<player>