Paste #29718: Untitled Paste

Date: 2016/02/05 03:28:51 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


### Flags
# Teams_Groups:
# Teams_Group_Name_Kills:
# Teams_Group_Name_Deaths:
# Teams_Group_Name_Members:
# Teams_Group_Name_Leaders:
# Teams_Group_Name_Created:
# Teams_Player_Group:
# Teams_Player_Name_Messages:
# Teams_Player_Pending:



Teams_Data:
    type: yaml data
    config:
        commands: 
            main: "team"
            args:
                help: "help"
                create: "create"
                info: "info"
                leave: "leave"
                top: "top"
                accept: "accept"
                deny: "deny"
                invite: "invite"
            args_descriptions:
                help: "viser kommandoer til Teams."
                create: "(navn) laver et nyt team."
                info: "(navn/spiller) viser information om et team."
                leave: "forlader det team du er i."
                top: "viser en liste over top teams"
                accept: "acceptere en invitation til et team"
                deny: "decliner invitation til et team"
                invite: "(spiller) invitere en spiller"
        maxmembers: 5
        lang:
            # Titles
            help_title: "Team Information"
            yourteam_title: "Dit Team"
            # Error messages
            alreadyonteam: "er allerede  et team!"
            noteam: "er ikke  noget team!"
            unknown: "Ukendt kommando!"
            missargs: "Ikke nok argumenter!"
            noteamfound: "Intet team blev fundet!"
            nolistteam: "Der er ingen teams lavet!"
            teamfull: "kan ikke have flere medlemmer!"
            nopending: "er ikke blevet inviteret  noget team!"
            alreadypending: "har allerede en invitation!"
            you: "Du"
            ## Announces
            newteam: "har lavet et nyt team kaldt"
            teamdisband: "(team) blev forladt af"
            # Info
            teamkills: "Team Total Kills"
            teamdeath: "Team Total Døde"
            teamkdr: "Team KDR"
            members: "Medlemmer"
            leaders: "Ledere"
            created: "Hold lavet"
            ## messages
            leftteam: "forlod team"
            invited: "på dit hold har inviteret"
            invitedtoteam: "er blevet inviteret til holdet"
            declinedpending: "har declined invitationen til"
            acceptedpending: "blev medlem af"


Teams_Help_List:
    type: task
    script:
    - narrate "<&9>--- <&d><s@Teams_Data.yaml_key[config.lang.help_title]> <&9>---"
    - foreach <s@Teams_Data.list_keys[config.commands.args]> {
        - narrate "<&6>/<s@Teams_Data.yaml_key[config.commands.main]> <s@Teams_Data.yaml_key[config.commands.args.<def[value]>]> <&8>- <&b><s@Teams_Data.yaml_key[config.commands.args_descriptions.<def[value]>]>"
    }

Teams_Help_Message:
    type: procedure
    script:
    - determine "<&b>/<s@Teams_Data.yaml_key[config.commands.main]> <s@Teams_Data.yaml_key[config.commands.args.help]>"

Teams_Events:
    type: world
    debug: false
    events:
        on player death:
        - if <player.has_flag[Teams_Player_Group]> {
            - define flag2 "Teams_Group_<player.flag[Teams_Player_Group]>_Deaths"
            - flag server "<def[flag2]>:++"
        }
        - if <context.damager.is_player||false>  {
            - run Teams_Kills player:<context.damager> instantly
        }
        else if <context.damager.shooter.is_player||false> {
            - run Teams_Kills player:<context.damager.shooter> instantly
        }

        on player damaged:
        - if <context.damager.is_player||false>  {
            - define player <context.damager>
            - inject Teams_FriendlyFire
        }
        else if <context.damager.shooter.is_player||false> {
            - define player <context.damager.shooter>
            - inject Teams_FriendlyFire
        }

Teams_Kills:
    type: task
    script:
    - if <player.has_flag[Teams_Player_Group]> {
        - define flag1 "Teams_Group_<player.flag[Teams_Player_Group]>_Kills"
        - flag server "<def[flag1]>:++"
    }

Teams_FriendlyFire:
    type: task
    script:
    - if <player.has_flag[Teams_Player_Group]> && <def[player].as_player.has_flag[Teams_Player_Group]> {
        - if <player.flag[Teams_Player_Group]> == <def[player].as_player.flag[Teams_Player_Group]> {
            - determine CANCELLED
        }
    }

Teams_Command:
    type: command
    name: team
    description: Commands for teams.
    usage: /<s@Teams_Data.yaml_key[config.commands.main]>
    aliases:
    - <s@Teams_Data.yaml_key[config.commands.main]>
    permission: ggpvp.teams
    permission message: Sorry, <player.name>, you don't have the permission '<permission>'!
    script:
    - if <context.args.size> > 0 {
        # Help
        - if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.help]>" {
            - inject Teams_Help_List
        }
        # Create
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.create]>" {
            - if <context.args.size> >= 2 {
                - if <player.has_flag[Teams_Player_Group]> {
                    - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.alreadyonteam]> <proc[Teams_Help_Message]>"
                    - queue clear
                }
                else {
                    # Create Team
                    - define team "<context.args.get[2]>"
                    - flag player Teams_Player_Group:<def[team]>
                    - define flag "Teams_Group_<def[team]>_Kills"
                    - flag server "<def[flag]>:0"
                    - define flag "Teams_Group_<def[team]>_Deaths"
                    - flag server "<def[flag]>:0"
                    - define flag "Teams_Group_<def[team]>_Members"
                    - flag server "<def[flag]>:|:<player>"
                    - define flag "Teams_Group_<def[team]>_Leaders"
                    - flag server "<def[flag]>:|:<player>"
                    - define flag "Teams_Group_<def[team]>_Created"
                    - flag server "<def[flag]>:<util.date.time.day>-<util.date.time.month>-<util.date.time.year>"
                    - announce "Groups <server.flag[Teams_Groups]>"
                    - flag server Teams_Groups:->:<def[team]>
                    - announce "Groups <server.flag[Teams_Groups]>"
                    - announce "<&b><player.name> <&3><s@Teams_Data.yaml_key[config.lang.newteam]> <&b><def[team]>"
                }
            }
            else {
                - narrate "<&c><s@Teams_Data.yaml_key[config.lang.missargs]> <proc[Teams_Help_Message]>"
            }
        }
        # Info
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.info]>" {
            - if <context.args.size> >= 2 {
                # Check other team (args either player or team)
                - define team <context.args.get[2]>
                - define flag Teams_Group_<def[team]>_Members
                - if <server.has_flag[<def[flag]>].not> {
                    - define Target <server.match_offline_player[<context.args.get[2]>]||null>
                    - if <def[Target]> == null {
                        - narrate "<&c><s@Teams_Data.yaml_key[config.lang.noteamfound]> <proc[Teams_Help_Message]>"
                        - queue clear
                    }
                    else {
                        # Found player
                        - if <def[Target].has_flag[Teams_Player_Group]> {
                            - define flag Teams_Group_<def[Target].flag[Teams_Player_Group]>_Members
                            - if <server.has_flag[<def[flag]>].not> {
                                - narrate "<&c><def[Target].name> <s@Teams_Data.yaml_key[config.lang.noteam]> <proc[Teams_Help_Message]>"
                                - queue clear
                            }
                            - define team <def[Target].flag[Teams_Player_Group]>
                        }
                        else {
                            - narrate "<&c><def[Target].name> <s@Teams_Data.yaml_key[config.lang.noteam]> <proc[Teams_Help_Message]>"
                            - queue clear
                        }
                    }
                }
                # Found team <def[team]>
                - define flag1 "Teams_Group_<def[team]>_Kills"
                - define flag2 "Teams_Group_<def[team]>_Deaths"
                - define flag3 "Teams_Group_<def[team]>_Members"
                - define flag4 "Teams_Group_<def[team]>_Leaders"
                - define flag5 "Teams_Group_<def[team]>_Created"
                - define members ""
                - define leaders ""
                - foreach <server.flag[<def[flag3]>].as_list> {
                    - define members "<def[members]><def[value].name> "
                }
                - foreach <server.flag[<def[flag4]>].as_list> {
                    - define leaders "<def[leaders]><def[value].name> "
                }
                # Done preparation
                - narrate "<&9>--- --- <&b><def[team]> <&9>--- ---"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.teamkills]> <&8><&co> <&c><server.flag[<def[flag1]>].round>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.teamdeath]> <&8><&co> <&c><server.flag[<def[flag2]>].round>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.teamkdr]> <&8><&co> <&c><server.flag[<def[flag1]>].div[<server.flag[<def[flag2]>]>].round_to[2]>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.leaders]> <&8><&co> <&3><def[leaders]>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.members]> <&8><&co> <&3><def[members]>"
                - narrate "<&9>--- --- <&7><s@Teams_Data.yaml_key[config.lang.created]> <server.flag[<def[flag5]>]> <&9>--- ---"

            }
            else if <player.has_flag[Teams_Player_Group]> {
                # Check own team
                - define flag1 "Teams_Group_<player.flag[Teams_Player_Group]>_Kills"
                - define flag2 "Teams_Group_<player.flag[Teams_Player_Group]>_Deaths"
                - define flag3 "Teams_Group_<player.flag[Teams_Player_Group]>_Members"
                - define flag4 "Teams_Group_<player.flag[Teams_Player_Group]>_Leaders"
                - define flag5 "Teams_Group_<player.flag[Teams_Player_Group]>_Created"
                - define members ""
                - define leaders ""
                - foreach <server.flag[<def[flag3]>].as_list> {
                    - define members "<def[members]><def[value].name> "
                }
                - foreach <server.flag[<def[flag4]>].as_list> {
                    - define leaders "<def[leaders]><def[value].name> "
                }
                - narrate "<&9>--- --- <&b><s@Teams_Data.yaml_key[config.lang.yourteam_title]> <&9>--- ---"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.teamkills]> <&8><&co> <&c><server.flag[<def[flag1]>].round>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.teamdeath]> <&8><&co> <&c><server.flag[<def[flag2]>].round>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.teamkdr]> <&8><&co> <&c><server.flag[<def[flag1]>].div[<server.flag[<def[flag2]>]>].round_to[2]>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.leaders]> <&8><&co> <&3><def[leaders]>"
                - narrate "<&a><s@Teams_Data.yaml_key[config.lang.members]> <&8><&co> <&3><def[members]>"
                - narrate "<&9>--- --- <&7><s@Teams_Data.yaml_key[config.lang.created]> <server.flag[<def[flag5]>]> <&9>--- ---"
            }
            else {
                - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.noteam]> <proc[Teams_Help_Message]>"
            }
        }
        # Leave
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.leave]>" {
            - if <context.args.size> >= 2 {

            }
            else {
                - if <player.has_flag[Teams_Player_Group]> {
                    - define flag "Teams_Group_<player.flag[Teams_Player_Group]>_Members"
                    - narrate "<&3><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.leftteam]> <&b><player.flag[Teams_Player_Group]>"
                    - narrate "<&3>  <s@Teams_Data.yaml_key[config.lang.leftteam]> <&b><player.flag[Teams_Player_Group]>" targets:<def[flag].as_list>
                    - define team <player.flag[Teams_Player_Group]>
                    - flag player Teams_Player_Group:!
                    - define flag Teams_Group_<def[team]>_Members
                    - flag server "<def[flag]>:<-:<player>"
                    - define flag Teams_Group_<def[team]>_Leaders
                    - if <server.flag[<def[flag]>].contains[<player>]> {
                        - flag server "<def[flag]>:<-:<player>"
                        - if <server.has_flag[<def[flag]>].is_empty||true> {
                            # Remove team
                            - define flag Group_<def[team]>_Kills
                            - flag server "<def[flag]>:!"
                            - define flag Group_<def[team]>_Deaths
                            - flag server "<def[flag]>:!"
                            - define flag Group_<def[team]>_Members
                            - flag server "<def[flag]>:!"
                            - define flag Group_<def[team]>_Leaders
                            - flag server "<def[flag]>:!"
                            - define flag Group_<def[team]>_Created
                            - flag server "<def[flag]>:!"
                            - flag server Teams_Groups:<-:<def[team]>
                            - announce "<&b><def[team]> <&3><s@Teams_Data.yaml_key[config.lang.teamdisband]> <&b><player.name>"
                        }
                    }
                }
                else {
                    - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.noteam]> <proc[Teams_Help_Message]>"
                }
            }
        }
        # top
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.top]>" {
            - if <server.has_flag[Teams_Groups]> {

                - foreach <server.flag[Teams_Groups].as_list> {
                    - narrate "<def[value]>"
                }
            }
            else {
                - narrate "<&c><s@Teams_Data.yaml_key[config.lang.nolistteam]> <proc[Teams_Help_Message]>"
            }
        }
        # Invite
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.invite]>" {
            - if <context.args.size> >= 2 {
                ## be on team
                - if <player.has_flag[Teams_Player_Group].not> {
                    - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.noteam]> <proc[Teams_Help_Message]>"
                    - queue clear
                }
                ## be on leader
                - define flag Teams_Group_<player.flag[Teams_Player_Group]>_Leaders
                - if <server.flag[<def[flag]>].contains[<player>].not> {
                    - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.noleader]> <proc[Teams_Help_Message]>"
                    - queue clear
                }
                - define Target <server.match_player[<context.args.get[2]>]||null>
                - if <def[Target]> == null {
                    - narrate "<&c><s@Teams_Data.yaml_key[config.lang.noplayerfound]> <proc[Teams_Help_Message]>"
                    - queue clear
                }
                else if <def[target].has_flag[Teams_Player_Group]> {
                    - narrate "<&c><def[target].name> <s@Teams_Data.yaml_key[config.lang.alreadyonteam]> <proc[Teams_Help_Message]>"
                    - queue clear
                }
                else if <def[target].has_flag[Teams_Player_Pending]> {
                    - narrate "<&c><def[target].name> <s@Teams_Data.yaml_key[config.lang.alreadypending]> <proc[Teams_Help_Message]>"
                    - queue clear
                }
                - define flag Teams_Group_<player.flag[Teams_Player_Group]>_Members
                - narrate "<&b><player.name> <s@Teams_Data.yaml_key[config.lang.invited]> <def[target].name>" targets:<server.flag[<def[flag]>].as_list>
                - flag <def[target]> Teams_Player_Pending:<player.flag[Teams_Player_Group]> duration:2m
                ## Tell user
                - define command "/<s@Teams_Data.yaml_key[config.commands.main]> (<s@Teams_Data.yaml_key[config.commands.args.accept]><&8>/<&a><s@Teams_Data.yaml_key[config.commands.args.deny]>)"
                - define lang "<s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.invitedtoteam]>"
                - narrate "<&b><def[lang]> <&3><def[target].flag[Teams_Player_Pending]> <&a><def[command]>" targets:<def[target]>
            }
            else {
                - narrate "<&c><s@Teams_Data.yaml_key[config.lang.missargs]> <proc[Teams_Help_Message]>"
            }
        }
        # Deny
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.deny]>" {
            - if <player.has_flag[Teams_Player_Pending].not> {
                - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.nopending]> <proc[Teams_Help_Message]>"
                - queue clear
            }
            - narrate "<s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.declinedpending]> <player.flag[Teams_Player_Pending]>"
            - define flag "Teams_Group_<player.flag[Teams_Player_Pending]>_Members"
            - narrate "<&b><player.name> <&3><s@Teams_Data.yaml_key[config.lang.declinedpending]> <&b><player.flag[Teams_Player_Pending]>" targets:<server.flag[<def[flag]>].as_list>
            - flag player Teams_Player_Pending:!
        }
        # Accept
        else if <context.args.get[1]> == "<s@Teams_Data.yaml_key[config.commands.args.accept]>" {
            - if <player.has_flag[Teams_Player_Pending].not> {
                - narrate "<&c><s@Teams_Data.yaml_key[config.lang.you]> <s@Teams_Data.yaml_key[config.lang.nopending]> <proc[Teams_Help_Message]>"
                - queue clear
            }
            ## Join the team
            - flag player Teams_Player_Group:<player.flag[Teams_Player_Pending]>
            - define flag Teams_Group_<player.flag[Teams_Player_Group]>_Members
            - flag server "<def[flag]>:->:<player>"
            - define flag "Teams_Group_<player.flag[Teams_Player_Pending]>_Members"
            - narrate "<&b><player.name> <&3><s@Teams_Data.yaml_key[config.lang.acceptedpending]> <&b><player.flag[Teams_Player_Group]>" targets:<server.flag[<def[flag]>].as_list>
            - flag player Teams_Player_Pending:!
        }
        else {
            - narrate "<&c><s@Teams_Data.yaml_key[config.lang.unknown]> <proc[Teams_Help_Message]>"
        }
    }
    else {
        - inject Teams_Help_List
    }

    ##- adjust <player.item_in_hand> unbreakable:true save:item
    ##- inventory set o:<entry[item].result> d:<player.inventory> slot:<player.item_in_hand.slot>