How to go about defining this name properly

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
JimmyFrost
Regular
Posts: 30
Joined: Fri May 01, 2015 9:46 am
Projects: TOWER
Location: United States
Contact:

How to go about defining this name properly

#1 Post by JimmyFrost »

So I have this error:

Code: Select all

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/script.rpy", line 6, in script
    define attack = skill("attack", 1, 0)
  File "game/script.rpy", line 6, in <module>
    define attack = skill("attack", 1, 0)
NameError: name 'skill' is not defined
And here is the offending script block:

Code: Select all

define attack = skill("attack", 1, 0)
define guard = skill("guard", 0, 1)
define wait = skill("wait", 0, 0)
I have a class built like this:

Code: Select all

    class skill(object):
        
        def __init__(self, name="None", Atk=0, Def=0):
            self.name = name
            self.Atk = Atk
            self.Def = Def
So what am I doing wrong, and how can I make this better?
"If hard work hasn't hurt anyone, then why is there worker's comp?"

User avatar
Remix
Eileen-Class Veteran
Posts: 1628
Joined: Tue May 30, 2017 6:10 am
Completed: None... yet (as I'm still looking for an artist)
Projects: An un-named anime based trainer game
Contact:

Re: How to go about defining this name properly

#2 Post by Remix »

init -1 python:
.... class Skill(... etc etc

The -1 pushes it to an init level that runs prior to defaults/defines (which are init 0)
Frameworks & Scriptlets:

JimmyFrost
Regular
Posts: 30
Joined: Fri May 01, 2015 9:46 am
Projects: TOWER
Location: United States
Contact:

Re: How to go about defining this name properly

#3 Post by JimmyFrost »

I've been busy with school work.
init -20 python:
.... class Actor(....

.... class Skill(....
Is that what you mean, because that's what I have currently.
"If hard work hasn't hurt anyone, then why is there worker's comp?"

JimmyFrost
Regular
Posts: 30
Joined: Fri May 01, 2015 9:46 am
Projects: TOWER
Location: United States
Contact:

Re: How to go about defining this name properly

#4 Post by JimmyFrost »

Here's the offending page in all of it's splendor. If that really helps. The bottom part runs just fine.

Code: Select all

init -20 python:
#    $ enemymove = renpy.random.randint(0,100)
    
    """Characters built specifically to fight battles in-game. . .
    Args:
        Actor(str):name of character
        Active(bool):
        Atk(int):
        Def(int):
        Mat(int):
        Mdf(int):
        HP(int):
        MP(int):
        SP(int):
        magic_set(dict):
        demon_set(dict):
        personality(str):
    """
    class Actor(object):
        
        def __init__(self, actor="None", Active=True, Atk=0, Def=0, Mat=0, Mdf=0, HP=0, MP=0, SP=0, skill_set=[None], magic_set=[None], demon_set=[None], personality="None"):
            self.actor = actor
            self.active = active
            self.Atk = Atk
            self.Def = Def
            self.Mat = Mat
            self.Mdf = Mdf
            self.HP = HP
            self.MP = MP
            self.SP = SP
            self.skill_set = skill_set
            self.magic_set = magic_set
            self.demon_set = demon_set
            self.personality = personality
            self.status  = [self.Atk, self.Def, self.Mat, self.Mdf, self.HP, self.MP, self.SP]
        
        def skill_register(self, skill_name):
            self.skill_set.append(skill_name)
        def magic_register(self, magic_name):
            self.magic_set.append(magic_name)
        def demon_register(self, demon_name):
            self.demon_set.append(demon_name)
           
        def normalize_status(self):
           print "Normalizing status. Please wait. . ."
           for index, value in enumerate(self.status):
               if value <= 0:
                   self.status[index] = 0
               return self.status

    class skill(object):
        
        def __init__(self, name="None", Atk=0, Def=0):
            self.name = name
            self.Atk = Atk
            self.Def = Def
            
    class magic(object):
        
        def __init__(self, name="None", Mat=0, Mdf=0, MP=0):
            self.name = name
            self.Mat = Mat
            self.Mdf = Mdf
            self.MP = MP

    class demon(object):
        
        def __init__(self, name="None", Atk=0, Def=0, Mat=0, Mdf=0, SP=0):
            self.name = name
            self.Atk = Atk
            self.Def = Def
            self.Mat = Mat
            self.Mdf = Mdf
            self.SP = SP
            

#         if self.personality is "physical":
#            if 0 <= enemymove <= 66:
#                move == self.skill[attack]
#            elif 67 <= enemymove <= 100:
#                move == self.skill[guard]
#            else:
#                move == self.magic[Blank]
#         if self.personality is "aggressive":
#            if 0<= enemymove <= 50:
#                move == self.skill[attack]
#            elif 51 <= enemymove <= 85:
#                move == renpy.random.choice((self.magic[Blank, Blank]))
#            elif 86 <= enemymove <= 100:
#                move == self.skill[guard]
#            else:
#                move == self.magic[Blank]
#         if self.personality is "mystic":
#            if 0 <= enemymove <= 33:
#                move == self.skill[attack]
#            elif 34 <= enemymove <= 70:
#                move == renpy.random.choice((self.magic[Blank]))
#            elif 71 <= enemymove <= 80:
#                move == renpy.random.choice((self.demon[None]))
#            elif 81 <= enemymove <= 100
#                move == self.skill[guard]
#            else:
#                move == self.magic[Blank]
#         if self.personality is "malicious":
#            if 0 <= enemymove <= 25:
#                move == self.skill[attack]
#            elif 26 <= enemymove <= 60:
#                move == renpy.random.choice((self.magic[Blank]))
#            elif 61 <= enemymove <= 95:
#                move == renpy.random.choice((self.demon[None]))
#            elif 96 <= enemymove <= 100:
#                move == self.skill[guard]
#            else:
#                move == self.magic[Blank]
#         if self.personality is "empty-headed":
#            if 0 <= enemymove <= 33:
#                move == self.skill[attack]
#            elif 34 <= enemymove <= 70:
#                move == renpy.random.choice((self.magic[Blank, Blank, Blank, Blank]))
#            elif 71 <= enemymove <= 80:
#                move == renpy.random.choice((self.demon[None]))
#            elif 81 <= enemymove <= 100
#                move == self.skill[guard]
#            else:
#                move == self.magic[Blank]
#         if self.personality is "defensive":
#            if 0<= enemymove <= 25:
#                move == self.skill[attack]
#            elif 26 <= enemymove <= 50:
#                move == renpy.random.choice((self.magic[Blank, Blank]))
#            elif 51 <= enemymove <= 100:
#                move == self.skill[guard]
#            else:
#                move == self.magic[Blank]       

screen timer_test():
    vbox:
        textbutton "Yes." action Jump("yes")
        textbutton "No." action Jump("no")

    if easy:
        timer 300.0 action Jump("too_slow")
    elif medium:
        timer 240.0 action Jump("too_slow")
    elif hard:
        timer 180.0 action Jump("too_slow")
    elif extreme:
        timer 120.0 action Jump("too_slow")
    else:
        timer 3.0 action Jump("too_slow")
"If hard work hasn't hurt anyone, then why is there worker's comp?"

Post Reply

Who is online

Users browsing this forum: Google [Bot]