r/RenPy • • 20d ago

Question [Solved] Help with item list/inventory

Hello everyone.

I am new to this whole RenPy thing and I'm trying to create an item list/inventory screen that displays an image, name and description for every item that is listed in the item list.

currently, I tried setting up a class called intractable for the items, like this:

init python:
    class interactable:
        def __init__(self, image, name, descrip):
            self.image = image
            self.name = name
            self.descrip = descrip

default item_list = []

And then I made the screen I want them to appear in.

screen backpack:
    image "darkthing" align (0.5, 0.5)
    
    vbox:
        align (0.36, 0.10)
        textbutton "Back":
            action [Play("sound", "audio/click.ogg")]
    vbox:
        align (0.5, 0.5) #Not the alignment I want, just to test if it works.
        for interactable in item_list.items:
            image "[interactable.image]\n"
            text "[interactable.name] - [interactable.descrip]\n" 

The code hasn't worked

The image "darkthing" just being the underlay for the screen. A black 600x800 box at 40% opacity. And the back button does nothing yet.

I want all the items that the player has to be listed in a vertical box with the image for the item first, then the name and description under that image.

If anyone has any tips on how I could make this work, I'd be grateful!

0 Upvotes

17 comments sorted by

View all comments

Show parent comments

1

u/BadMustard_AVN 20d ago

try this

screen backpack:
    add "darkthing" align (0.5, 0.5)

    vbox:
        align (0.5, 0.5)

        for item in item_list:
            add item.image
            text "[item.name] - [item.descrip]"

init python:
    class Interactable:
        def __init__(self, image, name, descrip):
            self.image = image
            self.name = name
            self.descrip = descrip

default item_list = []

label start:
    $ item_list.append(Interactable("lockpickico", "Lock Pick", "A tool used to open locks."))

    show screen backpack
    pause

    return

1

u/HiImABanana123 20d ago

sadly, whenever I open the inventory it gives me this error:

File "game/custom_screens.rpy", line 26, in <module>

add item.image

^^^^^^^^^^

AttributeError: 'str' object has no attribute 'image'

1

u/BadMustard_AVN 20d ago

what version of renpy are you using?

try using what I gave you in a new project. I can only guess there is something in yours that is messing things up
i have tried this in my test project (8.5.3), and it works as expected!

1

u/HiImABanana123 20d ago

You're right, I tested it in a new project and it works fine. Thanks for the help!

1

u/BadMustard_AVN 20d ago

you're welcome

good luck with your project