Paste #15945: Diff note for paste #15944

Date: 2015/05/24 18:49:04 UTC-07:00
Type: Diff Report

View Raw Paste Download This Paste
Copy Link


 # Written by Mwthorn
 #
 # Credits for the original Bodyguards goes to Cromis
 # You can find that script here: http://mcmonkey.org/denizen/repo/entry/34
 #
 # This version currently only has 1 bodyguard available. But this bodyguard have a "easier" way to give commands to.
 #
 # Chest Guard is basically a bodyguard system (like the original). The main differences are that you are using a chest-inventory instead of the chat to give commands and orders to either the shop or your bodyguard(s).
 # This version for now allows you to have infinite bodyguards (which may be a problem for some servers) unless you change the price to a higher value.
 #
 # REQUIREMENTS:
 # - All players MUST have the permission: citizens.npc.select
 # (I'll try to fix this requirement if possible in the future)
 # (If this permission is not added. No orders will function)
 #
 # Though my version has its pros and cons... I basically wanted to use chest-inventory instead of using chat to send commands to a bodyguard (same goes with the shop)
 #
 # Command to setup the shop:
 # /npc assignment --set ChestGuardMain
 #
 # Version 1.0 (First Release)
 
 ChestGuardEvents:
     type: world
     debug: false
     events:
         on server starts:
             - execute as_server "denizen reload -a"
         on reload scripts:
             - flag server ChestGuardCost1:5000
             
         # Shop Menu
         
         on player clicks ChestGuardBuy1 in ChestGuardShop:
             - if <player.money> < <server.flag[ChestGuardCost1]> {
                 - narrate "<red>You do not have enough money."
                 } else {
                 - take money qty:<server.flag[ChestGuardCost1]>
                 - ^execute as_server "npc create &aBodyGuard --at <player.location.x>:<player.location.y>:<player.location.z>:world"
                 - ^execute as_server "trait sentry"
                 - ^execute as_server "sentry equip STONE_SWORD"
                 - ^execute as_server "sentry equip LEATHER_HELMET"
                 - ^execute as_server "sentry equip LEATHER_CHESTPLATE"
                 - ^execute as_server "sentry equip LEATHER_LEGGINGS"
                 - ^execute as_server "sentry equip LEATHER_BOOTS"
                 - ^execute as_server "sentry respawn 120"
                 - ^execute as_server "sentry follow 3"
                 - ^execute as_server "sentry speed 1.5"
                 - ^execute as_server "sentry healrate 10"
                 - ^execute as_server "sentry health 20"
                 - ^execute as_server "sentry strength 5"
                 - ^execute as_server "sentry range 10"
                 - ^execute as_server "sentry target add entity:monster"
                 - ^execute as_server "sentry target add entity:slime"
                 - ^execute as_server "npc assignment --set ChestGuardBody1"
                 - ^execute as_server "npc owner <player.name>"
                 - ^execute as_server "sentry guard <player.name>"
                 - ^narrate "<green>You have succesfully purchased a bodyguard!"
                 }
             - determine cancelled
                 
         on player clicks ChestGuardBuy2 in ChestGuardShop:
             - ^determine cancelled   
             
         on player clicks ChestGuardBuy3 in ChestGuardShop:
             - ^determine cancelled
         
         on player clicks ChestGuardClose in ChestGuardShop:
             - inventory close d:<context.inventory>
             - ^determine cancelled
         
         # Guard Menu
         on player clicks ChestGuardFollow in ChestGuardMenu:
             - execute as_player "npc select"
             - ^execute as_server "npc select <player.selected_npc.id>"
             - ^execute as_server "sentry guard <player.name>"
             - ^execute as_server "sentry follow 2"
             - ^execute as_server "sentry speed 1.4"
             - ^execute as_server "npc speed 1.4"
             - ^narrate "<green>The Guard is now following you."
             - ^inventory close d:<context.inventory>
             - ^determine cancelled
             
         on player clicks ChestGuardStand in ChestGuardMenu:
             - execute as_player "npc select"
             - ^execute as_server "npc select <player.selected_npc.id>"
             - ^execute as_server "sentry guard"
             - ^execute as_server "sentry spawn"
             - ^narrate "<green>The Guard will now stay at its current position."
             - ^inventory close d:<context.inventory>
             - ^determine cancelled
             
         on player clicks ChestGuardBow in ChestGuardMenu:
             - execute as_player "npc select"
             - ^execute as_server "npc select <player.selected_npc.id>"
             - ^execute as_server "sentry equip bow"
             - ^execute as_server "sentry attackrate 1.5"
             - ^execute as_server "sentry strength 4"
             - ^execute as_server "sentry range 25"
             - ^narrate "<green>The Guard will now use a bow."
             - ^inventory close d:<context.inventory>
             - ^determine cancelled
             
         on player clicks ChestGuardSword in ChestGuardMenu:
             - execute as_player "npc select"
             - ^execute as_server "npc select <player.selected_npc.id>"
             - ^execute as_server "sentry equip STONE_SWORD"
             - ^execute as_server "sentry strength 5"
             - ^execute as_server "sentry range 10"
             - ^narrate "<green>The Guard will now use a sword."
             - ^inventory close d:<context.inventory>
             - ^determine cancelled
             
         on player clicks ChestGuardRefresh in ChestGuardMenu:
             - execute as_player "npc select"
             - ^execute as_server "npc select <player.selected_npc.id>"
             - ^execute as_server "sentry equip STONE_SWORD"
             - ^execute as_server "sentry equip LEATHER_HELMET"
             - ^execute as_server "sentry equip LEATHER_CHESTPLATE"
             - ^execute as_server "sentry equip LEATHER_LEGGINGS"
             - ^execute as_server "sentry equip LEATHER_BOOTS"
             - ^execute as_server "sentry respawn 120"
             - ^execute as_server "sentry follow 3"
             - ^execute as_server "sentry speed 1.5"
             - ^execute as_server "sentry healrate 10"
             - ^execute as_server "sentry health 20"
             - ^execute as_server "sentry strength 5"
             - ^execute as_server "sentry range 10"
             - ^execute as_server "sentry target add entity:monster"
             - ^execute as_server "sentry target add entity:slime"
             - ^execute as_server "npc assignment --set ChestGuardBody1"
             - ^execute as_server "sentry guard <player.name>"
             - ^narrate "<green>Guard succesfully updated!"
             - ^inventory close d:<context.inventory>
             - ^determine cancelled
         ## Flag npc ??
            
             # - if <npc.flag[Guarding]> == true {
                 # - ^flag player.selected_npc "Guarding:false"
                 # - ^execute as_server "sentry guard"
                 # - ^execute as_server "sentry spawn"
                 # - ^narrate "<green>The Guard will now stay at its current position."
             # } else {
                 # - ^flag player.selected_npc "Guarding:true"
                 # - ^execute as_server "sentry guard <player.name>"
                 # - ^narrate "<green>The Guard is now following you."
             # }
         ##
         on player clicks ChestGuardConfirmYes in ChestGuardMenu:
             - execute as_player "npc select"
             - ^execute as_server "npc select <player.selected_npc.id>"
             - ^execute as_server "npc remove"
             - take money qty:<server.flag[ChestGuardCost1]>
             - ^narrate "<green>The Guard will now use a sword."
             - ^inventory close d:<context.inventory>
             - ^determine cancelled
             
         on player clicks ChestGuardClose in ChestGuardShop:
             - inventory close d:<context.inventory>
             - ^determine cancelled
             
         on player clicks ChestGuardClose in ChestGuardMenu:
             - inventory close d:<context.inventory>
             - ^determine cancelled
             
 
 ChestGuardMain:
     type: assignment
     debug: false
     interact scripts:
     - 10 ChestGuardSales
     
 ChestGuardSales:
     type: interact
     steps:
         1:
             click trigger:
                 script:
                 - ^narrate "<green><npc.name>: Hello <player.name> Welcome to my shop."
                 - ^inventory open d:in@ChestGuardShop
                 
 ChestGuardBody1:
     type: assignment
     debug: false
     interact scripts:
     - 10 ChestGuardOrders
     
 ChestGuardOrders:
     type: interact
     steps:
         1:
             click trigger:
                 script:
                 - ^if <npc.owner> != <player> {
                     - ^narrate "<green>Sorry. I'm not your owner."
                   } else {
                     - ^narrate "<green>What would you like me to do?"
                     - ^inventory open d:in@ChestGuardMenu
                   }
                   
 ChestGuardShop: 
   type: inventory 
   inventory: CHEST
   title: <red>Bodyguard Shop Menu
   size: 9 
   definitions: 
     Weak: i@ChestGuardBuy1
     Medium: i@ChestGuardBuy2
     Heavy: i@ChestGuardBuy3
     Close: i@ChestGuardClose
   slots: 
     - "[Weak] [Medium] [Heavy] [] [] [] [] [] [Close]" 
     
 ChestGuardMenu: 
   type: inventory 
   inventory: CHEST
   title: <red>Bodyguard Menu
   size: 9 
   definitions: 
     Follow: i@ChestGuardFollow
     Stand: i@ChestGuardStand
     Close: i@ChestGuardClose
     Sword: i@ChestGuardSword
     Remove: i@ChestGuardRemove
     Update: i@ChestGuardRefresh
     Bow: i@ChestGuardBow
   slots: 
     - "[Follow] [Stand] [Sword] [Bow] [] [] [Update] [Remove] [Close]" 
     
 ChestGuardClose:
     type: item
     material: BARRIER
     display name: <green>Close
     lore:
     - <yellow>Closes the menu.
     
 ChestGuardBuy1:
     type: item
     material: IRON_INGOT
     display name: <green>Weak Bodyguard
     lore:
     - <yellow>Costs <&ds><server.flag[ChestGuardCost1]>
     
 ChestGuardBuy2:
     type: item
     material: GOLD_INGOT
     display name: <red>Comming Soon
     lore:
     - <yellow>Work in progress...
     
 ChestGuardBuy3:
     type: item
     material: DIAMOND
     display name: <red>Comming Soon
     lore:
     - <yellow>Work in progress...
     
 ChestGuardFollow:
     type: item
     material: WOOD_PLATE
     display name: <green>Follow
     lore:
     - <yellow>Makes the guard follow you.
 
 ChestGuardStand:
     type: item
     material: STONE_PLATE
     display name: <green>Hold
     lore:
     - <yellow>Makes the guard stand still.
     
 ChestGuardBow:
     type: item
     material: BOW
     display name: <green>Bow
     lore:
     - <yellow>Makes the guard equip a bow.
     
 ChestGuardSword:
     type: item
     material: STONE_SWORD
     display name: <green>Sword
     lore:
     - <yellow>Makes the guard equip a sword.
     
 ChestGuardRemove:
     type: item
     material: PAPER
     display name: <green>Dismiss
     lore:
     - <yellow>Removes the guard.
     - <yellow>Refunds half the price. (<&ds><server.flag[ChestGuardCost1].div[2]>)
     
 ChestGuardRefresh:
     type: item
     material: REDSTONE
     display name: <green>Refresh
     lore:
     - <yellow>Updates your guard.