Paste #37257: Untitled Paste

Date: 2016/10/28 16:58:14 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


Casino_Data:
    type: yaml data
    config:
        keys:
            Diamond:
                display: "&bDiamond Key"
                rewards:
                    money:
                        1:
                            chance: 4450
                            amount: 100
                            material: coal
                        2:
                            chance: 3500
                            amount: 150
                            material: iron_ingot
                        3:
                            chance: 1500
                            amount: 300
                            material: gold_ingot
                        4:
                            chance: 500
                            amount: 500
                            material: diamond
                        5:
                            chance: 50
                            amount: 5000
                            material: emerald
            Emerald:
                display: "&aEmerald Key"
                rewards:
                    money:
                        1:
                            chance: 4450
                            amount: 150
                            material: coal
                        2:
                            chance: 3500
                            amount: 300
                            material: iron_ingot
                        3:
                            chance: 1500
                            amount: 600
                            material: gold_ingot
                        4:
                            chance: 500
                            amount: 1000
                            material: diamond
                        5:
                            chance: 50
                            amount: 10000
                            material: emerald



Casino_Event:
    type: world
    debug: false
    events:
        on player join:
        - if <player.has_flag[Casino_Running]> {
            - flag player Casino_Running:!
        }

        on player right clicks CHEST:
        - if <player.has_flag[Casino_Running]> {
            - determine cancelled
        }
        - foreach <s@Casino_Data.list_keys[config.keys]> {
            - if <server.has_flag[Casino_Chest_<def[value]>]> {
                - if <server.flag[Casino_Chest_<def[value]>].as_list.contains[<context.location>]> {
                    - determine cancelled passively
                    - inject Casino_Chest_Key_Checker
                    - queue clear
                }
            }
        }
        - foreach <s@Casino_Data.list_keys[config.keys]> {
            - if <player.has_flag[Casino_Setup_<def[value]>]> {
                - determine cancelled passively
                - define flag "Casino_Chest_<def[value]>"
                - flag server "<def[flag]>:->:<context.location>"
                - narrate "<&a>Casino Chest <&b><def[value]> <&a>setup at <&b><context.location.simple.formatted>"
                - define flag "Casino_Setup_<def[value]>"
                - flag player "<def[flag]>:!"
                - queue clear
            }
        }
        - if <context.item.scriptname||false> {
            - queue clear
        }

        on player breaks CHEST:
        - if <player.is_op.not> {
            - queue clear
        }
        - foreach <s@Casino_Data.list_keys[config.keys]> {
            - if <server.has_flag[Casino_Chest_<def[value]>]> {
                - if <server.flag[Casino_Chest_<def[value]>].as_list.contains[<context.location>]> {
                    - define flag "Casino_Chest_<def[value]>"
                    - flag server "<def[flag]>:<-:<context.location>"
                    - narrate "<&c>Casino Chest <&b><def[value]> <&c>fjernet ved <&b><context.location.simple.formatted>"
                    - queue clear
                }
            }
        }


        on player drags in Casino_GUI:
        - determine cancelled

        on player clicks in Casino_GUI:
        - determine cancelled passively
        - inventory close d:<context.inventory>

        on player drags in Casino_GUI_Won:
        - determine cancelled

        on player clicks in Casino_GUI_Won:
        - determine cancelled passively
        - inventory close d:<context.inventory>


Casino_Chest_Key_Checker:
    type: task
    debug: false
    script:
    - if <player.item_in_hand.display_name||null> != "<s@Casino_Data.yaml_key[config.keys.<def[value]>.display].parse_color>" {
        - narrate format:Util_FF "<&7>Du har ikke en <&6><def[value]> <&7>key"
        - queue clear
    }
    # - narrate "Du har den rigtige key! <&co> <def[value]>"
    - if <server.flag[Casino_Running].as_list.size||0> >= 2 {
        - narrate format:Util_FF "<&c>Der er for mange som bruger casino! vent lidt..."
        - queue clear
    }
    - flag server Casino_Running:->:<player>
    - flag player Casino_Running duration:1m
    - take iteminhand
    - define key <def[value]>
    ## playsound
    # <el@element.replace_text[((first)regex:)<element>].with[<element>]>
    - define size <s@Casino_Data.list_keys[config.keys.<def[key]>.rewards.money].size>
    - flag player Casino_Menu_Items:!
    - repeat 50 {
        - if <def[value]> == 40 {
            - define real <proc[Casino_Real_Chance].context[<def[key]>]>
            - flag player Casino_Menu_Items:->:<proc[Casino_GUI_Proc_Main].context[<def[real]>|1|<def[key]>]>[display_name=<proc[Casino_GUI_Proc_Main].context[<def[real]>|2|<def[key]>]>]
        }
        else {
            - define random <util.random.int[1].to[5]>
            - flag player Casino_Menu_Items:->:<proc[Casino_GUI_Proc_Main].context[<def[random]>|1|<def[key]>]>[display_name=<proc[Casino_GUI_Proc_Main].context[<def[random]>|2|<def[key]>]>]
        }
    }
    - flag player Casino_Menu_Place:0
    - repeat 25 {
        - flag player Casino_Menu_Place:++
        - playsound <player> sound:note_pling pitch:2.0
        - inventory open d:in@Casino_GUI
        - wait 1t
    }
    - if <player.is_online.not||true> {
        - flag server Casino_Running:<-:<player>
        - queue clear
    }
    - repeat 10 {
        - flag player Casino_Menu_Place:++
        - playsound <player> sound:note_pling pitch:2.0
        - inventory open d:in@Casino_GUI
        - wait 5t
    }
    - if <player.is_online.not||true> {
        - flag server Casino_Running:<-:<player>
        - queue clear
    }
    - repeat 1 {
        - flag player Casino_Menu_Place:++
        - playsound <player> sound:note_pling pitch:2.0
        - inventory open d:in@Casino_GUI
        - wait 1s
    }
    - if <player.is_online.not||true> {
        - flag server Casino_Running:<-:<player>
        - queue clear
    }
    ## show GUI won
    - inventory open d:in@Casino_GUI_Won
    - define moneywon <s@Casino_Data.yaml_key[config.keys.<def[key]>.rewards.money.<def[real]>.amount]>
    - narrate FORMAT:Util_FF "<&7>Du vandt <&6>$<def[moneywon]>"
    - give money quantity:<def[moneywon]>
    - playsound <player> sound:LEVEL_UP pitch:1.0
    - flag player Casino_Running:!
    - flag server Casino_Money:-:<def[moneywon]>
    - if <def[size]> == <def[real]> {
        - announce FORMAT:Util_FF "<&6><player.name> <&a>vandt jackpot med en <s@Casino_Data.yaml_key[config.keys.<def[key]>.display].parse_color>! <&8>(<&6>$<def[moneywon]><&8>)"
        - repeat 4 {
            - repeat 5 {
                - playsound <server.list_online_players> sound:ORB_PICKUP pitch:<def[value].div[5]> 
                - wait 2t
            }
        }
    }
    - flag player Casino_Menu_Place:!
    - flag player Casino_Menu_Items:!
    - flag server Casino_Running:<-:<player>
    - queue clear

Casino_Real_Chance:
    type: procedure
    definitions: key
    script:
    - define random <util.random.int[1].to[10000]>
    - define max 0
    - foreach <s@Casino_Data.list_keys[config.keys.<def[key]>.rewards.money]> {
        - define min <def[max]>
        - define max <def[min].add_int[<s@Casino_Data.yaml_key[config.keys.<def[key]>.rewards.money.<def[loop_index]>.chance]>]>
        # - narrate "<&e><def[min]> <&a><def[random]> <&e><def[max]>"
        - if <def[random]> >= <def[min]> {
            - if <def[random]> <= <def[max]> {
                # - define moneywon <s@Casino_Data.yaml_key[config.keys.<def[key]>.rewards.money.<def[loop_index]>.amount]>
                - determine <def[loop_index]>
            }
        }
    }

Casino_GUI_Proc_C:
    type: procedure
    script:
    - determine "STAINED_GLASS_PANE,<util.random.int[0].to[15]>"
    # - define target <server.flag[Teams_Target_Menu]>

Casino_GUI_Proc_Main:
    type: procedure
    definitions: pos|line|key
    script:
    - choose "<def[line]>":
        - case "1":
            - determine <s@Casino_Data.yaml_key[config.keys.<def[key]>.rewards.money.<def[pos]>.material]>
        - case "2":
            - determine "<&6><&l>$<s@Casino_Data.yaml_key[config.keys.<def[key]>.rewards.money.<def[pos]>.amount]>"
        - default:
            - determine "Chosen default"

Casino_GUI:
    type: inventory
    inventory: CHEST
    title: <&6>Casino Roller
    size: 27
    definitions:
        T: REDSTONE_TORCH_ON[display_name=<&8>]
        C: <proc[Casino_GUI_Proc_C]>[display_name=<&8>]
    slots:
    - "[C] [C] [C] [C] [T] [C] [C] [C] [C]"
    - "[] [] [] [] [] [] [] [] []"
    - "[C] [C] [C] [C] [T] [C] [C] [C] [C]"
    procedural items:
    - define place <player.flag[Casino_Menu_Place].round>
    - define items <player.flag[Casino_Menu_Items].as_list.get[<def[place]>].to[<def[place].add_int[8]>]>
    - determine <def[items]>

Casino_GUI_Won:
    type: inventory
    inventory: CHEST
    title: <&6>Casino Roller
    size: 27
    definitions:
        T: REDSTONE_TORCH_ON[display_name=<&8>]
        C: <proc[Casino_GUI_Proc_C]>[display_name=<&8>]
    slots:
    - "[C] [C] [C] [C] [T] [C] [C] [C] [C]"
    - "[C] [C] [C] [C] [] [C] [C] [C] [C]"
    - "[C] [C] [C] [C] [T] [C] [C] [C] [C]"
    procedural items:
    - define place <player.flag[Casino_Menu_Place].round||0>
    - define items <player.flag[Casino_Menu_Items].as_list.get[40]||air>
    - determine <def[items]> 

Casino_Command:
    type: command
    name: casino
    description: Commands for teams.
    usage: /casino
    aliases:
    - casinorino
    permission: casino.admin
    permission message: Sorry, <player.name>, you don't have the permission '<permission>'!
    script:
    - if <context.args.size> >= 1 {
        - if <context.args.get[1]> == "status" {
            - narrate "<&d>--- <&c>Casino Status <&d>---"
            - narrate "<&a>Casino Indtjening<&co> <&6><server.flag[Casino_money]>"
        }
        else if <context.args.get[1]> == "give" {
            - if <s@Casino_Data.list_keys[config.keys].contains[<context.args.get[3]>]> {
                - define Target <server.match_offline_player[<context.args.get[2]>]||null>
                - if <def[Target]> == null {
                    - narrate "Ingen spiller fundet!"
                    - queue clear
                }
                - run Casino_Key_Giver player:<def[Target]> d:<context.args.get[3]>
            }
            else {
                - narrate "Ingen keys fundet!"
            }
        }
        else if <context.args.get[1]> == "setup" {
            - if <s@Casino_Data.list_keys[config.keys].contains[<context.args.get[2]>]> {
                - narrate "Højre-klik for at setup kiste for <context.args.get[2]>"
                - define flag "Casino_Setup_<context.args.get[2]>"
                - flag player "<def[flag]>:True"
            }
        }
        else if <context.args.get[1]> == "giveall" {
            - foreach <server.list_online_players> {
                - execute as_server "casino give <def[value].name> <context.args.get[2]>"
            }
        }
        else if <context.args.get[1]> == "jackpot" {
            - if <context.args.size> >= 3 {
                - define Target <server.match_offline_player[<context.args.get[3]>]||null>
                - if <def[Target]> == null {
                    - narrate "Ingen spiller fundet!"
                    - queue clear
                }
                - define key <context.args.get[2]>
                - define size <s@Casino_Data.list_keys[config.keys.<def[key]>.rewards.money].size>
                - define moneywon <s@Casino_Data.yaml_key[config.keys.<def[key]>.rewards.money.<def[size]>.amount]>
                - announce FORMAT:Util_FF "<&6><def[Target].name> <&a>vandt jackpot med en <s@Casino_Data.yaml_key[config.keys.<def[key]>.display].parse_color>! <&8>(<&6>$<def[moneywon]><&8>)"
                - repeat 4 {
                    - repeat 5 {
                        - playsound <server.list_online_players> sound:ORB_PICKUP pitch:<def[value].div[5]> 
                        - wait 2t
                    }
                }
            }
        }
        else {
            - narrate "<&b>/casino give (spiller) (key)"
            - narrate "<&b>/casino setup (key)"
            - narrate "<&b>/casino giveall (key)"
            - narrate "<&b>/casino status"
            - narrate "<&b>/casino jackpot (key) (spiller)"
            - queue clear
        }
    }
    else {
            - narrate "<&b>/casino give (spiller) (key)"
            - narrate "<&b>/casino setup (key)"
            - narrate "<&b>/casino giveall (key)"
            - narrate "<&b>/casino status"
            - narrate "<&b>/casino jackpot (key) (spiller)"
            - queue clear
    }

Casino_Key_Giver:
    type: task
    definitions: key
    script:
    - give i@TRIPWIRE_HOOK[display_name=<s@Casino_Data.yaml_key[config.keys.<def[key]>.display].parse_color>] quantity:1