Paste #44747: Untitled Paste

Date: 2017/09/29 20:14:05 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


173_gildeHandler:
  type: world
  events:
    on gilde command:
    - if <player.world> != w@173pre queue clear
    - determine passive fulfilled
    - if !<server.has_flag[173.allowGilde]> {
      - narrate "<&6>Gilden sind nicht aktiviert."
      - queue clear
      }
    - choose <context.args.get[1]>:
      - case neu:
        - define newName <context.args.get[2]||x>
        - inject locally checkInGilde
        - inject locally checkUnallowedNewName
        - flag player 173.gilde:<def[newName]>
        - flag player 173.inGilde.<def[newName]>
        - flag player 173.gildeLeader
        - flag server 173.gilde.<def[newName]>.members:->:<player>
        - execute as_server "pex group gilde<def[newName]> create"
        - execute as_server "pex group gilde<def[newName]> suffix &b"
        - execute as_server "pex group gilde<def[newName]> parents set Siedler"
        - narrate "Erfolgreich die Gilde <def[newName]> gegründet!"


      - case tag:
        - define newTag "<context.args.get[2]||x>
        - inject locally checkIsNotLeader
        - inject locally checkUnallowedNewTag
        - if <def[newTag].length> != 3 {
          - narrate "<&6>Der Tag muss 3 lang sein."
          - queue clear
          }
        - define gildeName <player.flag[173.gilde]>
        - define oldTag "<server.flag[173.gilde.<def[gildeName]>.tag]>"
        - flag server 173.gildeTag.<def[newTag]>
        - flag server 173.gildeTag.<def[oldTag]>:!
        - flag server 173.gilde.<def[gildeName]>.tag:<def[newTag]>
        - execute as_server "pex group gilde<player.flag[173.gilde]> prefix <&dq>&7(<def[newTag]>&7) &3<&dq>"
        - narrate "Neuer Gildentag: <def[newTag]>"


      - case einladen:
        - define target <context.args.get[2].as_player||x>
        - inject locally checkTargetNotOnline
        - inject locally checkTargetInGilde
        - inject locally checkIsNotLeader
        - flag <def[target]> meta.gildeInvited:<player.flag[173.gilde]> duration:d@20s
        - flag <def[target]> meta.gildeFrom:<player> duration:d@20s
        - narrate "Du hast <def[target].name> in deine Gilde eingeladen."
        - narrate "Du wurdest von <&o><player.name> <&r>in die Gilde <&o><player.flag[173.gilde]> <&r>eingeladen." targets:<def[target]>
        - execute as_op "tellraw @p [<&dq><&dq>,{<&dq>text<&dq>:<&dq>Nutze <&dq>},{<&dq>text<&dq>:<&dq>/gilde annehmen<&dq>,<&dq>color<&dq>:<&dq>green<&dq>,<&dq>bold<&dq>:true,<&dq>clickEvent<&dq>:{<&dq>action<&dq>:<&dq>run_command<&dq>,<&dq>value<&dq>:<&dq>/gilde accept<&dq>},<&dq>hoverEvent<&dq>:{<&dq>action<&dq>:<&dq>show_text<&dq>,<&dq>value<&dq>:{<&dq>text<&dq>:<&dq><&dq>,<&dq>extra<&dq>:[{<&dq>text<&dq>:<&dq>ausführen<&dq>}]}}},{<&dq>text<&dq>:<&dq> /gilde deny<&dq>,<&dq>color<&dq>:<&dq>red<&dq>,<&dq>bold<&dq>:true,<&dq>clickEvent<&dq>:{<&dq>action<&dq>:<&dq>run_command<&dq>,<&dq>value<&dq>:<&dq>/gilde deny<&dq>},<&dq>hoverEvent<&dq>:{<&dq>action<&dq>:<&dq>show_text<&dq>,<&dq>value<&dq>:{<&dq>text<&dq>:<&dq><&dq>,<&dq>extra<&dq>:[{<&dq>text<&dq>:<&dq>ausführen<&dq>}]}}}]" player:<def[target]>


      - case accept:
        - inject locally checkInGilde
        - inject locally checkNotInvited
        - define gildeName <player.flag[meta.gildeInvited]>
        - if <server.flag[173.gilde.<def[gildeName]>.members].size> > 9 {
          - narrate "<&6>Die Gilde ist voll."
          - queue clear
          }
        - narrate "Du bist der Gilde <def[gildeName]> beigetreten."
        - narrate "<player.name> ist der Gilde beigetreten." targets:<server.get_online_players_flagged[173.inGilde.<def[gildeName]>]>
        - flag player 173.gilde:<def[gildeName]>
        - flag player 173.inGilde.<def[gildeName]>
        - flag server 173.gilde.<def[gildeName]>.members:->:<player>
        - flag player meta.gildeInvited:!
        - execute as_server "pex user <player.name> group add gilde<def[gildeName]>"


      - case deny:
        - inject locally checkNotInvited
        - narrate "<player.name> hat deine Einladung abgelehnt." targets:<player.flag[meta.gildeFrom]>
        - flag player meta.gildeInvited:!
        - flag player meta.gildeFrom:!


      - case leave:
        - inject locally checkNotInGilde
        - inject locally deleteGildeIfPossible
        - define gildeName <player.flag[173.gilde]>
        - narrate "<player.name> hat die Gilde verlassen." targets:<server.get_online_players_flagged[173.inGilde.<def[gildeName]>]>
        - flag player 173.gilde:!
        - flag player 173.inGilde:!
        - flag server 173.gilde.<def[gildeName]>.members:<-:<player>
        - execute as_server "pex user <player.name> group remove gilde<def[gildeName]>"

      - case info:
        - inject locally checkNotInGilde
        - define gildeName <player.flag[173.gilde]>
        - define members <server.flag[173.gilde.<def[gildeName]>.members]>
        - narrate "---[Gilden Information]---"
        - narrate "Name: <def[gildeName]>"
        - narrate "Tag: <server.flag[173.gilde.<def[gildeName]>.tag]>"
        - narrate "Mitglieder: <def[members].size>"
        # WAIT FOR MCMONKEY
        - narrate "GesamteXP: <def[members].parse[flag[173.xp]].toNumber||0>"
        #WAIT FOR MCMONKEY
        - narrate "DurchschnittKDR: <def[members].parse[flag[173.kdr]].average||0>"


      - case noSpam:
        - if <player.has_flag[173.gildeNoSpam]> {
          - narrate "NoSpam deaktiviert."
          - flag player 173.gildeNoSpam:!
          } else {
          - narrate "NoSpawm aktiviert. (1h)"
          - flag player 173.gildeNoSpam duration:d@1h
          }


      - case coords:
        - inject locally checkNotInGilde
        - narrate "---[Gilde Coords]---"
        - foreach <server.get_online_players_flagged[173.inGilde.<player.flag[173.gilde]>]||li@> {
          - narrate " <def[value].name> <def[value].location.simple>"
          }


      - case newLeader:
        - define target <context.args.get[2].as_player||x>
        - inject locally checkIsNotLeader
        - inject locally checkTargetNotOnline
        - inject locally checkTargetNotInOwn
        - narrate "<def[target]> ist der neue Gildenleiter." targets:<server.get_online_players_flagged[173.inGilde.<player.flag[173.gilde]>]>
        - flag player 173.gildeLeader:!
        - flag <def[target]> 173.gildeLeader


      - case kick:
        - define target <context.args.get[2].as_player||x>
        - inject locally checkIsNotLeader
        - inject locally checkTargetNotInOwn
        - if <def[target]> == <player> {
          - narrate <&6>Du kannst dich nicht selbst kicken."
          - queue clear
          }
        - narrate "<def[target].name> wurde aus der Gilde gekickt." targets:<server.get_online_players_flagged[173.inGilde.<player.flag[173.gilde]>]>
        - flag <def[target]> 173.gilde:!
        - flag <def[target]> 173.inGilde:!


      - case list:
        - inject locally checkNotInGilde
        - define online <server.get_online_players_flagged[173.inGilde.<player.flag[173.gilde]>].parse[name]>
        - narrate "---[Gilde List]---"
        - narrate "<&a><def[online].separated_by[, ]>"
        - narrate "<&7><server.flag[173.gilde.<player.flag[173.gilde]>.members].as_list.parse[name].exclude[<def[online]>].separated_by[, ]>"


      - case kdr:
        - inject locally checkNotInGilde
        - define members <server.flag[173.gilde.<player.flag[173.gilde]>.members].as_list>
        - define members <def[members].sort_by_number[flag[173.kdr]]>
        - narrate "Dein Platz: <def[members].find[<player>]>/<def[members].size> - KDR <player.flag[173.kdr]>"
        - narrate "---[Top 10 Mitglieder]---"
        - foreach <def[members]||li@> {
          - narrate "<def[loop_index]> <def[value].name>"
          }


      - case toplist:
        - define gilden <server.flag[173.topKdrName].as_list||li@>
        - define kdrList <server.flag[173.topKdr].as_list||li@>
        - define place <def[gilden].find[<player.flag[173.gilde]||x>]>
        - narrate "Deine Gilde: <def[place]>/<def[kdrList].size> - KDR - <def[kdrList].get[<def[place]>]||0>"
        - narrate "---[Top 10 Mitglieder]---"
        - foreach <def[members]||li@> {
          - narrate "<def[loop_index]> <def[gilden].get[<def[loop_index]>]> KDR - <def[kdrList].get[<def[loop_index]>]>"
          }


      - default:
        - narrate "/gilde"
        - narrate "[Leiter] neu, einladen (name), tag (text),kick (name), newLeader (name)"
        - narrate "[Mitglied] accept, deny, leave, list, kdr, coords"
        - narrate "[Jeder] toplist"

  checkInGilde:
  - if <player.has_flag[173.gilde]> {
    - narrate "<&6>Du bist bereits in einer Gilde!"
    - queue clear
    }
  checkNotInGilde:
  - if !<player.has_flag[173.gilde]> {
    - narrate "<&6>Du bist in keiner Gilde!"
    - queue clear
    }
  checkIsNotLeader:
  - if !<player.has_flag[173.gildeLeader]> {
    - narrate "<&6>Du bist kein Gildenleiter!"
    - queue clear
    }
  checkNotInvited:
  - if !<player.has_flag[meta.gildeInvited]> {
    - narrate "<&6>Du hast keine Einladung."
    - queue clear
    }
  checkTargetNotOnline:
  - if !<def[target].is_online||false> {
    - narrate "<&6><def[target].name||UNKNOWN> is nicht online."
    - queue clear
    }
  checkTargetInGilde:
  - if <def[target].has_flag[173.gilde]||false> {
    - narrate "<&6><def[target].name||UNKNOWN> ist bereits in einer Gilde."
    - queue clear
    }
  checkTargetNospam:
  - if <def[target].has_flag[173.gildeNoSpam]||false> {
    - narrate "<&6><def[target].name||UNKNOWN> hat Einladungen deaktiviert."
    - queue clear
    }
  deleteGildeIfPossible:
  - if <player.has_flag[173.gildeLeader]> {
    - define gildeName <player.flag[173.gilde]>
    - define members <server.flag[173.gilde.<def[gildeName]>.members].as_list>
    - narrate "<&6><player.name> hat die Gilde aufgelöst." targets:<def[members]>
    - flag player 173.gildeLeader:!
    - flag server 173.gilde.<def[gildeName]>:!
    - foreach <def[members]> {
      - flag <def[value]> 173.gilde:!
      - flag <def[value]> 173.inGilde:!
      }
    - execute as_server "pex group gilde<def[gildeName]> delete"
    - queue clear
    }
  checkTargetNotInOwn:
  - if <def[target].flag[173.gilde]||x> != <player.flag[173.gilde]||y> {
    - narrate "<&6><def[target].name> ist nicht in deiner Gilde."
    - queue clear
    }
  checkUnallowedNewTag:
  - if <li@vip|sup|mod|dev.contains[<def[newTag]>]> || <server.has_flag[173.gildeTag.<def[newTag]>]> {
    - narrate "<&6>Der Tag wird bereits verwendet."
    - queue clear
    }
  checkUnallowedNewName:
  - if <def[newName].length> < 3 || <def[newName].length> > 28 {
    - narrate "Der Name muss zwischen 3 und 28 Buchstaben lang sein."
    - queue clear
    }
  - if <li@vip|sup|mod|dev|staff|admins|.contains[<def[newName]>]> || <server.has_flag[173.gilde.<def[newName]>.tag]> {
    - narrate "<&6>Der Name wird bereits verwendet."
    - queue clear
    }
  checkIsNotAdmin:
  - if !<player.is_op> {
    - narrate "<&6>Du bist kein Admin."
    - queue clear
    }