#save all player item then get it back

1 messages · Page 1 of 1 (latest)

solemn fossil
#

How?

frozen swift
#

do u need to save as string or just a temporary object?

solemn fossil
#

String

frozen swift
#

oh my, that's gone need some sort of translator

#

well, converter actually

#

what's the purpose btw?

solemn fossil
#

Save all player item then get it back

frozen swift
#

yeah, but should it be temporary?

solemn fossil
#

yea

frozen swift
#

setting some sort of cloud strorage actually

#

*storage

#

but it will be deleted on /reload or world restart

frozen swift
#

so saving them as object would be easier

#
const containers = new Map()
```will act like cloud
solemn fossil
#

The code?

#

For save and get it back

frozen swift
#

w8, im writing it rn

solemn fossil
#

Okay

frozen swift
#
class Inventory {
    static containers = new Map()
    inventory = {
        items: Array.from({ length: 36 }),
        load(player) {
            const inv = player.getComponent('inventory')
            const container = inv.container
            this.items.forEach((_, slot) => {
                container.setItem(slot, this.items[slot])
            })

        }
    }
    equipment_inventory = {
        items: {
            head: null, chest: null, legs: null, feet: null, offhand: null
        },
        load(player) {
            const eq = player.getComponent('equipment_inventory')
            Object.keys(this.items).forEach(slot => {
                eq.setEquipment(slot, this.items[slot])
            })
        }
    }

    constructor(player, name) {

        const inv = player.getComponent('inventory')
        const eq = player.getComponent('equipment_inventory')
        const container = inv.container
        const {
            equipment_inventory: { items: eqItems },
            inventory: { items: invItems }
        } = this
        invItems.forEach((_, slot) => {
            invItems[slot] = container.getItem(slot)?.clone()
        })
        Object.keys(eqItems).forEach(slot => {
            eqItems[slot] = eq.getEquipment(slot)?.clone()
        })
        Inventory.containers.set(name ?? player.id, this)
    }
    loadAll(player) {
        const { equipment_inventory, inventory } = this
        equipment_inventory.load(player)
        inventory.load(player)
    }
}```
#

deng 1st try

#
const manage = {
    load(player, id) {
        Inventory.containers.get(player.id)?.loadAll(player)

    },
    save(player, id) {
        new Inventory(player)

    }
}

world.events.chat.subscribe(({ sender, message }) => {
    if (!message.startsWith('ss ')) return
    const arg = message.split(' ')
    manage[arg[1]]?.(sender, sender.id)
})
#

for saving someone else's inventory, input their player.id

solemn fossil
#

For load?

frozen swift
#

Inventory.containers.get(player.id)?.loadAll(player)

solemn fossil
#

Okay

frozen swift
#

ok, i changed it so u can put name on it

#

to save, u can either

new Inventory(player)
//or
new Inventory(player,'anything')//number, or any string
solemn fossil
#

Thanks

frozen swift
#

happy to help bao_foxxo_smile

opaque anvil
#

But does this load the saved items even after a world reload?

frozen swift
#

Nope

opaque anvil
frozen swift
#

Well, u can load it on an entity, but with equipment sqving would be a different setup

opaque anvil
#

No but like, if I save entity inv, and It despawn and I reload world, would the entity have its Inv loaded?

frozen swift
#

It's using js memory, so it'll be gone in /reload

solemn fossil
frozen swift
#

Yes

solemn fossil
#

How?

frozen swift
#

It's a complicated code, i can't write it rn, unfortunately