Skip to content

Commit

Permalink
Inventory flag ~ Regions can now have unique or pre-defined (kit) inv…
Browse files Browse the repository at this point in the history
…entories. Player inventory is saved and cleared before entering the region, and returned on region exit.

This currently crashes the server, so don't use until [this](DenizenScript/Denizen#912) is resolved.
  • Loading branch information
AnthonyAMC committed Dec 30, 2014
1 parent 3b0ba56 commit de84ffe
Showing 1 changed file with 85 additions and 0 deletions.
85 changes: 85 additions & 0 deletions dRegions/flags.dscript
Expand Up @@ -230,4 +230,89 @@ dRegions_Flag_Gamemode:
}



dRegions_Flag_Inventory:
type: item
debug: true
material: i@paper
display name: "<&4>[<&6>Inventory<&4>]"
lore:
- <&5>Save inventory before going into a region
event_hook: regionToggle
event_priority: 20
flag_type: custom
flag_type_customVal: unique|kit
flag_help: Inventory flag can be set to unique or kit. Unique inventories start empty. Kit inventories use your current inventory.
flag_takeGroup: true
script:
- narrate "A handy container for region flags."
- narrate "We<&sq>ll have subscripts for various tasks."

button_click:
- narrate "This will be useful when it comes time to make the GUI for region management."


command_handler:
- if <def[flagValue].is[==].to[kit]> {
- yaml set 'inventories.regions.%region%.entry.kit.equip:<player.equipment>' 'id:dRegions_%world%_inventories'
- yaml set 'inventories.regions.%region%.entry.kit.inv:<player.inventory.list_contents>' 'id:dRegions_%world%_inventories'
- yaml set 'inventories.regions.%region%.exit.players:|:' 'id:dRegions_%world%_inventories'
}
- if <def[flagValue].is[==].to[unique]> {
- yaml set 'inventories.regions.%region%.entry.players:|:' 'id:dRegions_%world%_inventories'
- yaml set 'inventories.regions.%region%.exit.players:|:' 'id:dRegions_%world%_inventories'
}
- if <def[flagValue].is[==].to[null]> {
- yaml set 'inventories.regions.%region%:!' 'id:dRegions_%world%_inventories'
}
- yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories'


event:
- define prefix '<&lt>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>'
- define suffix '<&pipe>inventory<&rb>||null<&gt>'
- define invList '<parse:<def[orderedRegions].parse[replace[regex:^()].with[<def[prefix]>]].parse[replace[regex:()$].with[<def[suffix]>]]>>'
- foreach %invList% {
- define region '<def[orderedRegions].get[%loop_index%]>'
- if <def[value].is[!=].to[null]||false> {
- define inv '<def[value].split[/].get[1]||unique>'
- define group '<def[value].split[/].get[2]||nonmembers>'
- define isOwner '<proc[dRegions_IsOwner].context[%region%|%world%|<player>]>'
- define isMember '<proc[dRegions_isMember].context[%region%|%world%|<player>]>'

- if <proc[dRegions_PlayerMatchRegionGroup].context[%group%|%isMember%|%isOwner%]> {
- if <def[isEnter].exists> {
- if <def[inv].is[==].to[kit]||false> {
- define equipment '<yaml[dRegions_%world%_inventories].read[inventories.regions.%region%.entry.kit.equip]||li@>'
- yaml set 'inventories.regions.%region%.exit.players.<player.uuid>.equip:<player.equipment>' 'id:dRegions_%world%_inventories'
- yaml set 'inventories.regions.%region%.exit.players.<player.uuid>.inv:<player.inventory.list_contents>' 'id:dRegions_%world%_inventories'
- inventory set 'd:<player.inventory>' 'o:<yaml[dRegions_%world%_inventories].read[inventories.regions.%region%.entry.kit.inv]||li@>'
- equip <player> 'boots:<def[equipment].get[1]||i@air>' 'legs:<def[equipment].get[2]||i@air>' 'chest:<def[equipment].get[3]||i@air>' 'head:<def[equipment].get[4]||i@air>'
}
else if <def[inv].is[==].to[unique]||false> {
- define equipment '<yaml[dRegions_%world%_inventories].read[inventories.regions.%region%.entry.players.<player.uuid>.equip]||li@>'
- yaml set 'inventories.regions.%region%.exit.players.<player.uuid>.equip:<player.equipment>' 'id:dRegions_%world%_inventories'
- yaml set 'inventories.regions.%region%.exit.players.<player.uuid>.inv:<player.inventory.list_contents||li@i@air>' 'id:dRegions_%world%_inventories'
- inventory set 'd:<player.inventory>' 'o:<yaml[dRegions_%world%_inventories].read[inventories.regions.%region%.entry.players.<player.uuid>.inv]||li@>'
- equip <player> 'boots:<def[equipment].get[1]||i@air>' 'legs:<def[equipment].get[2]||i@air>' 'chest:<def[equipment].get[3]||i@air>' 'head:<def[equipment].get[4]||i@air>'
}
- run s@dRegions_Msg 'def:<&7><&o>Your inventory has been updated.'
}
else if <def[isExit].exists> {
- define equipment '<yaml[dRegions_%world%_inventories].read[inventories.regions.%region%.exit.players.<player.uuid>.equip]||li@>'
- inventory set 'd:<player.inventory>' 'o:<yaml[dRegions_%world%_inventories].read[inventories.regions.%region%.exit.players.<player.uuid>.inv]||li@>'
- equip <player> 'boots:<def[equipment].get[1]||i@air>' 'legs:<def[equipment].get[2]||i@air>' 'chest:<def[equipment].get[3]||i@air>' 'head:<def[equipment].get[4]||i@air>'
- yaml set 'inventories.regions.%region%.exit.players.<player.uuid>:!' 'id:dRegions_%world%_inventories'
- run s@dRegions_Msg 'def:<&7><&o>Your inventory has been updated.'
}
else {
- run s@dRegions_Msg 'def:<&7><&o>THIS SHOULD NOT RUN EVER!'
}
- yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories'
- foreach stop
}
}
}


#

0 comments on commit de84ffe

Please sign in to comment.