[Solved] Setting a class via button?

Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
Post Reply
Message
Author
User avatar
justloveme94
Newbie
Posts: 14
Joined: Sat Nov 18, 2017 11:07 pm
Contact:

[Solved] Setting a class via button?

#1 Post by justloveme94 » Mon Sep 05, 2022 6:35 pm

Hello! I am currently trying to implement a small turn based combat system where the player picks their other two party members. I created a class to hold the pertinent class information and then created individual classes for each character with their individual stats. I am not sure how to appropriately set the button variable so that it implements the correct character along with its updated class. It is currently saying that class_player2 doesn't exist, but I'm pretty sure I am off with the entire set-up.

Code: Select all

init python:
    class character_class:
        def __init__(self, name, level = 1, experience = 0, max_hp = 20, hp = 20, max_mp = 20, mp = 20, initiative = 0, 
        element = "None", element_attack = "Sword", attack = 0):
            self.name = name
            self.level = 1
            self.experience = 0
            self.max_hp = max_hp
            self.hp = hp
            self.max_mp = max_mp
            self.mp = mp
            self.initiative = initiative
            self.element = element
            self.element_attack = element_attack
            self.attack = attack
            
 label battle_example:
         # Party Members
    	$ class_player = character_class(player_name, sprite_player)
    	$ class_player2 = character_class()
    	$ class_player3 = character_class()
    	
         # Individual Party Member Stats
    	$ class_wren = character_class("Wren", 1, 0, 20, 20, 30, 30)
    	$ class_arden = character_class("Arden", 1, 0, 30, 30, 10, 10)
    	$ class_charlie = character_class("Charlie", 1, 0, 15, 15, 20, 20)
    	
    	while True:

        # Player 1 Turn
        "[class_player.name]'s Turn!"
        if class_player.hp > 0:
            $ class_player.level = 1
            $ class_player.level = class_player.level
            call player_attack

        "[class_player2.name]'s Turn!"
        # Player 2 Turn
        if class_player2.hp > 0:
            $ class_player2.level = 1
            $ class_player2.level = class_player2.level
            call player2_attack
     

Code: Select all

screen select_player2:
    frame:
        align (0.5, 0.5)
        xysize (480, 180)
        vbox:
            align (0.5, 0.5)
            text "Choose Player 2:"
            textbutton "Wren" action [SetVariable("class_player2, "class_wren"), Return()]
            textbutton "Arden" action [SetVariable("class_player2", "class_arden"), Return()]
            textbutton "Charlie" action [SetVariable("class_player2", "class_charlie"), Return()]
screen select_player3:
    frame:
        align (0.5, 0.5)
        xysize (480, 180)
        vbox:
            align (0.5, 0.5)
            text "Choose Player 3:"
            textbutton "Wren" action [SetVariable("class_player3", "Wren"), Return()]
            textbutton "Arden" action [SetVariable("class_player3", "arden_class"), Return()]
            textbutton "Charlie" action [SetVariable("class_player3", "Charlie"), Return()]
Last edited by justloveme94 on Fri Sep 09, 2022 8:38 am, edited 1 time in total.

User avatar
enaielei
Regular
Posts: 114
Joined: Fri Sep 17, 2021 2:09 am
Tumblr: enaielei
Deviantart: enaielei
Github: enaielei
Skype: enaielei
Soundcloud: enaielei
itch: enaielei
Discord: enaielei#7487
Contact:

Re: Setting a class via button?

#2 Post by enaielei » Mon Sep 05, 2022 6:51 pm

Default your variables to avoid undefined errors.

Code: Select all

# Party Members
default player = None
default player2 = None
default player3 = None
    	
# Individual Party Member Stats
default wren = character_class("Wren", 1, 0, 20, 20, 30, 30)
default arden = character_class("Arden", 1, 0, 30, 30, 10, 10)
default charlie = character_class("Charlie", 1, 0, 15, 15, 20, 20)

label start:
  ...
You can set later on its value thru labels.

Code: Select all

label start:
  $ player = character_class(player_name, sprite_player)
or thru screens.

Code: Select all

screen test():
  textbutton "Wren" action SetVariable("player2", wren)

User avatar
justloveme94
Newbie
Posts: 14
Joined: Sat Nov 18, 2017 11:07 pm
Contact:

Re: Setting a class via button?

#3 Post by justloveme94 » Fri Sep 09, 2022 8:38 am

Everything appears to be working now! Thank you so much enaielei!

Post Reply

Who is online

Users browsing this forum: Bing [Bot], Google [Bot], Majestic-12 [Bot]