Paste #70743: Untitled Paste

Date: 2020/06/14 08:53:47 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


hideAndSeekCommand:
    type: command
    name: escondite
    usage: /escondite [join|leave|start]
    description: Juega al escondite.
    script:
        # Comprobamos si tiene permiso
        - if !<player.has_permission[mcers.hideandseek]>:
            - narrate "<&c>No tienes permisos para utilizar este comando."
            - stop
        # Comprobamos qué ha escrito el usuario
        - define size <context.args.size>
        - choose <[size]>:
            - case 1:
                - define arg1 <context.args.get[1]>
                - choose <[arg1]>:
                    - case join:
                        - teleport <player> <server.flag[hideAndSeek_loc]>
                        # Comprobamos que no haya una partida en marcha
                        - if <server.has_flag[hideAndSeek_Running]>:
                            - narrate "<&c>Ya hay una partida en marcha. Acaba en <server.flag[hideAndSeek_Running].expiration.formatted>."
                            - stop
                        # Se une a la partida
                        - flag player hideAndSeek
                        - flag server hideAndSeek:->:<player>
                        - narrate "<&e>Te has unido a la partida. Cuando estéis todos, escribe <&a>/escondite start<&e>. No podrá unirse nadie más."
                        # Cargamos la schematica de aire
                        - if <server.flag[hideAndSeek].size> < 2:
                            - ~schematic load name:hideAndSeek_schemAir
                    - case leave:
                        - if !<server.has_flag[hideAndSeek_Running]>:
                            - schematic unload name:hideAndSeek_schemAir
                        # Sale de la partida
                        - narrate "<&e>Has salido de la partida."
                        - inject hideAndSeek_Leave
                        - teleport <player> <server.flag[hideAndSeek_lobbyLoc]>
                        # Comprobamos cómo va la partida
                        - if <server.flag[hideAndSeek_Seeker].size> >= <server.flag[hideAndSeek].size>:
                            - foreach <server.flag[hideAndSeek]>:
                                - narrate "<&e>No quedan ocultos en la partida. ¡Ganan los buscadores!" targets:<[value]>
                            - inject hideAndSeek_GlobalEnd
                        # Comprobamos si quedan ocultos
                        - else if !<server.has_flag[hideAndSeek_Seeker]>:
                            - foreach <server.flag[hideAndSeek]>:
                                - narrate "<&e>No quedan buscadores en la partida. ¡Ganan los ocultos!" targets:<[value]>
                            - inject hideAndSeek_GlobalEnd
                    - case start:
                        - if <server.has_flag[hideAndSeek_Running]>:
                            - narrate "<&c>La partida ya ha empezado."
                            - stop
                        - if <server.flag[hideAndSeek].size> < 2:
                            - narrate "<&c>No se puede empezar la partida con solo un jugador."
                            - stop
                        # Empieza la partida
                        - foreach <server.flag[hideAndSeek]>:
                            - narrate "<&a><player.name> <&e>empieza la partida. Hay <server.flag[hideAndSeek].size> jugadores." targets:<[value]>
                        # 1 buscador aleatorio
                        - define seeker <server.flag[hideAndSeek].random>
                        # Le aplicamos parámetros en delay antes de que pueda buscar
                        - run hideAndSeek_EffectSeeker def:<[seeker]>
                        # Con un contador de 30 segundos
                        - run hideAndSeek_TimerSeeker def:<[seeker]>
                        # Parámetro para los ocultos
                        - foreach <server.flag[hideAndSeek].exclude[<[seeker]>]>:
                            - team name:hideAndSeek add:<[value].name>
                            - team name:hideAndSeek option:name_tag_visibility status:never
                            - adjust <[value]> food_level:20
                            - narrate "<&c>¡Eres un oculto! Tienes 30 segundos para esconderte." targets:<[value]>
                        # Temporizador
                        - run hideAndSeek_TimerGlobal
                        - flag server hideAndSeek_Running duration:10m
                        # Ponemos el schematic sin bloques cortando el paso
                        - schematic paste name:hideAndSeek_schemAir <server.flag[hideAndSeek_loc]> noair
                        - schematic unload name:hideAndSeek_schemAir
                        - ~schematic load name:hideAndSeek_schemBlock
                    - default:
                        - narrate "<&c>Comando incorrecto. Prueba:"
                        - narrate "<&c>/escondite [join|leave|start]"
                        - stop
            - default:
                - narrate <empty>
                - narrate "<&e>----- Comando del escondite -----"
                - narrate "<&6>/escondite join<&r> - Te unes a la partida si no está empezada."
                - narrate "<&6>/escondite leave<&r> - Te sales de la partida."
                - narrate "<&6>/escondite start<&r> - Empieza la partida con los jugadores que estén unidos."
                - stop