Paste #15044: dlottery

Date: 2015/04/12 17:26:34 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


dLottery:
  type: world
  events:
    on player clicks in inventory:
      - if <context.inventory.replace[<player.name>].is[!=].to[in@dLottery]> queue clear
      - if <context.item.replace[i@].split[_].get[1].is[=].to[dLottery]> {
        - run s@dLottery_clerk 'p:<c.item.split[_].get[2]>' 'npc:<player.flag[dLotteryclerk].as_npc>'
        - flag player 'dLotteryclerk:!'
        - inventory close 'd:in@<player.name>dLottery'
        - note remove 'as:<player.name>dLottery'
        }
      - if <context.item.material.name.replace[i@].is[=].to[<player.flag[block]>]> {
        - if <c.item.qty> == 9 {
          - inventory remove 'd:in@<player.name>dLottery' 'o:i@<c.item.material.name>[display_name=<&e>Number_<&6><c.slot>;lore=<&e>click to add;quantity=8]'
          - Determine CANCELLED 
          - queue clear         
          }
        - inventory add 'd:in@<player.name>dLottery' 'o:i@<c.item.material.name>[display_name=<&e>Number_<&6><c.slot>;lore=<&e>click to add]' 'slot:<context.slot>'
        }
      - if <c.item.replace[i@].is[=].to[sel_book]> {
        - if <player.flag[pick].is[=].to[3]> {
          - define number '<c.inventory.slot[1].qty>_<c.inventory.slot[2].qty>_<c.inventory.slot[3].qty>'
          - inventory close 'd:in@<player.name>dLottery'
          - give "i@dLottery_Pick3_Ticket[display_name=<&e>D<&6>lottery<&e>T<&6>icket<&e>_%number%_date-bought_<util.date.time.day>/<util.date.time.month>/<util.date.time.year>]"
          - narrate format:GenericNPCFormat "come back tommorow to see if you won!"
          }
        - if <player.flag[pick].is[=].to[4]> {
          - define number '<c.inventory.slot[1].qty>_<c.inventory.slot[2].qty>_<c.inventory.slot[3].qty>_<c.inventory.slot[4].qty>'
          - inventory close 'd:in@<player.name>dLottery'
          - give "i@dLottery_Pick4_Ticket[display_name=<&e>D<&6>lottery<&e>T<&6>icket<&e>_%number%_date-bought_<util.date.time.day>/<util.date.time.month>/<util.date.time.year>]"
          - narrate format:GenericNPCFormat "come back tommorow to see if you won!"
          }
        }
      - Determine CANCELLED        
    on player closes inventory:
      - if <c.inventory.is[==].to[in@<player.name>dLottery]||false> {
        - note remove 'as:<player.name>dLottery'
        - flag player 'dLotteryclerk:!'
        }
datecheck:
  type: procedure
  script:
  - define date1 <player.item_in_hand.split[_].get[4]>
  - define d1 <date1.split[/].get[1]>
  - define m1 <date1.split[/].get[2]>
  - define y1 <date1.split[/].get[3]>
  - define d <util.date.time.day>
  - define m <util.date.time.month>
  - define y <util.date.time.year>
  - if %d1% == %d% && %y1% == %y% && %m1% == %m% {
    - determine true
    }
  - if %d% == 1 && <9|4|6|11.contains[%m%]> && %d1% == 30 {
    - determine true
    }
  - if %d% == 1 && <1|3|5|7|8|10|12.contains[%m%]> && %d1% == 31 {
    - determine true
    }
  - if %d% == 1 && %m% == 2 && %d1% == 28 && !<%y%.div[4].is[matches].to[integer]> {
    - determine true
    }
  - if %d% == 1 && %m% == 2 && %d1% == 29 && <%y%.div[4].is[matches].to[integer]> {
    - determine true
    }
dLottery_clerk:
  type: assignment
  actions:
    on assignment:
      - trigger name:chat toggle:true
      - trigger name:click toggle:true
    on click:
      - if !<npc.has_flag[timer]> {
        - inject locally timer
        }
      - if <player.item_in_hand.split[_].get[1].is[==].to[i@DLOTTERY]> {
        - if <proc[datecheck]> {
          - inject locally winning 
          - if <player.has_flag[reward]> {
            - narrate format:GenericNPCFormat "wow, you won!!"
            - narrate format:GenericNPCFormat "here is <player.flag[reward]> as a reward"
            - flag player reward:!
            }
            else {
            - narrate format:GenericNPCFormat "sorry, mabey next time!"
            }
          }
          else {
          - narrate format:GenericNPCFormat "sorry, the im not checking these tickets today"
          }
        }
        else {
        - narrate format:GenericNPCFormat "pick a ticket"
        - define GUI <player.name>dLottery
        - note in@generic[title=<&c>d<&9>Lottery<&sp><&c>T<&9>ickets;size=9] 'as:%GUI%'
        - inventory add 'd:in@%GUI%' 'o:i@dLottery_Pick3' 'slot:1'
        - inventory add 'd:in@%GUI%' 'o:i@dLottery_Pick4' 'slot:2'
        - flag player 'dLotteryclerk:<npc>'
        - wait 10t
        - inventory open 'd:in@%GUI%'
        }
  dLottery_draw:
    - define num1 <util.random.int[1].to[9]>
    - define num2 <util.random.int[1].to[9]>
    - define num3 <util.random.int[1].to[9]>
    - define nump3 %num1%_%num2%_%num3%
    - sign "winning number Pick3|%nump3%" <npc.location>
    - flag npc dlotpick3:%nump3%
    - define num1 <util.random.int[1].to[9]>
    - define num2 <util.random.int[1].to[9]>
    - define num3 <util.random.int[1].to[9]>
    - define num4 <util.random.int[1].to[9]>
    - define nump4 %num1%_%num2%_%num3%_%num4%
    - sign "winning number Pick3|%nump4%" <npc.location>
    - flag npc dlotpick4:%nump4%
  winning:
    - define picktype <player.item_in_hand.split[_].get[2]>
    - if <def[picktype].is[==].to[Pick4]> {
      - flag player pick4
      }
    - define num1 <player.item_in_hand.display.split[_].get[2]>
    - define num2 <player.item_in_hand.display.split[_].get[3]>
    - define num3 <player.item_in_hand.display.split[_].get[4]>
    - define num %num1%%num2%%num3%
    - if <player.has_flag[pick4]> {
      - define num4 <player.item_in_hand.display.split[_].get[5]>
      - define num %num1%%num2%%num3%%num4%
      }
    - define drawnum1 <npc.flag[dlotpick3].split[_].get[1]>
    - define drawnum2 <npc.flag[dlotpick3].split[_].get[2]>
    - define drawnum3 <npc.flag[dlotpick3].split[_].get[3]>
    - define drawnum %drawnum1%%drawnum2%%drawnum3%
    - if <player.has_flag[pick4]> {
      - define drawnum4 <player.item_in_hand.display.split[_].get[4]>
      - define drawnum %drawnum1%%drawnum2%%drawnum3%%drawnum4%  
      }
    - if <def[num].is[==].to[drawnum]> {
      - if <player.has_flag[pick4]> {
        - flag player reward:5000
      }
      - else {
        - flag player reward:1000
        }
      }
    - if <li@%num1%|%num2%|%num3%.contains[li@%drawnum1%|%drawnum2%|%drawnum3%]> {
      - if <player.has_flag[pick4]> {
        - flag player reward:2000
      }
      - else {
        - flag player reward:350
        }
      }
    - if <def[num].is[MORE].to[def[drawnum].sub[5]]> && <def[num].is[LESS].to[def[drawnum].add[5]]> && !<def[num].is[==].to[drawnum]> {
      - if <player.has_flag[pick4]> {
        - flag player reward:1000
      }
      - else {
        - flag player reward:250
        }
      }
  timer:
    - flag npc timer
    - define hour <util.date.time.hour>
    - wait 1h
    - if <def[hour].is[==].to[24]> {
      - run locally dLottery_draw
      }
      else {
      - inject locally timer
      }
  Pick3:
    - define num <player.name>dLottery
    - if <player.money.is[<].to[10]> {
      - narrate format:GenericNPCFormat "you dont have enough money"
      - queue clear
      }
    - flag player pick:3
    - flag player block:lime_clay
    - note in@generic[title=<&c>d<&9>Lottery<&sp><&c>T<&9>ickets;size=18] 'as:%num%'
    - foreach li@1|2|3 {
      - ^inventory add 'd:in@%num%' 'o:i@<player.flag[block]>[display_name=<&e>Number_<&6>%loop_index%;lore=<&e>click to add]' 'slot:%loop_index%'
      }
    - inventory add 'd:in@%num%' 'o:i@sel_book' 'slot:18'
    - wait 10t
    - inventory open 'd:in@%num%'
  Pick4:
    - define num <player.name>dLottery
    - if <player.money.is[<].to[25]> {
      - narrate format:GenericNPCFormat "you dont have enough money"
      - queue clear
      }
    - flag player pick:4
    - flag player block:red_clay
    - note in@generic[title=<&c>d<&9>Lottery<&sp><&c>T<&9>ickets;size=18] 'as:%num%'
    - foreach li@1|2|3|4 {
      - inventory add 'd:in@%num%' 'o:<player.flag[block]>[display_name=<&e>Number_<&6>%loop_index%;lore=<&e>click to add]' 'slot:%loop_index%'
      }
    - inventory add 'd:in@%num%' 'o:i@sel_book' 'slot:18'     
    - wait 10t
    - inventory open 'd:in@%num%'      
dLottery_Pick3:
  type: item
  material: 339
  display name: "<&e>M<&6>ine<&e>C<&6>onomy     <&e>D<&6>lottery"
  lore:
  - "<&5><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&a>P<&2>ick  <&a>3"
  - "<&5>-------------------------"
  - "<&5>"
  - "<&5><&f><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&a>C<&2>ost <&f>$10"
  - "<&5><&f><&sp>Pick 3 numbers and see if you win"
  - "<&5>"
  - "<&5><&sp><&sp><&sp><&a><&n>W<&2><&n>inings"
  - "<&5>"
  - "<&a><&sp>E<&2>xact <&a>N<&2>umber➛<&sp><&f>$1000"
  - "<&a><&sp>S<&2>ame <&a>N<&2>umbers➛<&sp><&f>$350"
  - "<&a><&sp>W<&2>ithin <&a>5➛<&sp><&f>$250"
  - "<&5>"
dLottery_Pick4:
  type: item
  material: 339
  display name: "<&e>M<&6>ine<&e>C<&6>onomy     <&e>D<&6>lottery"
  lore:
  - "<&5><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&c>P<&4>ick  <&c>4"
  - "<&5>-------------------------"
  - "<&5>"
  - "<&5><&f><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&c>C<&4>ost <&f>$25"
  - "<&5><&f><&sp>Pick 4 numbers and see if you win"
  - "<&5>"
  - "<&5><&sp><&sp><&sp><&c><&n>W<&4><&n>inings"
  - "<&5>"
  - "<&c><&sp>E<&4>xact <&c>N<&4>umber➛<&sp><&f>$5000"
  - "<&c><&sp>S<&4>ame <&c>N<&4>umbers➛<&sp><&f>$2000"
  - "<&c><&sp>W<&4>ithin <&c>15➛<&sp><&f>$1000"
  - "<&5>"
sel_book:
  type: item
  material: book
  display name: "<&e>click when done"
dLottery_Pick3_Ticket:
  type: item
  material: 339
  display name: "<&e>M<&6>ine<&e>C<&6>onomy     <&e>D<&6>lottery"
  lore:
  - "<&5><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&a>P<&2>ick  <&a>3"
  - "<&5>-------------------------"
  - "<&5>"
  - "<&5><&f><&sp>Hand this to the clerk tomorrow" 
  - "<&5><&f><&sp>to see if you won!"
dLottery_Pick4_Ticket:
  type: item
  material: 339
  display name: "<&e>M<&6>ine<&e>C<&6>onomy     <&e>D<&6>lottery"
  lore:
  - "<&5><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&sp><&c>P<&4>ick  <&c>4"
  - "<&5>-------------------------"
  - "<&5>"
  - "<&5><&f><&sp>Hand this to the clerk tomorrow" 
  - "<&5><&f><&sp>to see if you won!"