Ren'Py Need help for quest system.

tomtam

New Member
Oct 3, 2017
9
0
Hello there, i hope someone could help me. I'm creating a fantasy based game. On the web i found a quest system ( this one). Problem is that when i click on the map i'd like it to be locked. I'd like to unlock new scenes and new zones by first progressing through the quest. I can't do this tho', and the quest doesn't proceed with stages. If i click on the second task it give me an error.

label farm:
call quest1
"pls help"
"ok"
$ log.keyon()
$ log.assign("Farm Quest")
$ log.markdone("farm lady")
jump marsahin

label heim:
call screen script_heim
show heim

if log.interactive("farm lady"):
label farmheim:
"help"
"ok"
$ log.markdone("heim")
else:
"yolo"
jump heim
label innheim:
"halp"
"no"
$ log.markdone("camp")

hope is all clear but i doubt ahah.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,355
15,269
If i click on the second task it give me an error.
The error is simple, the log object (that I suppose host the quest system) do not exist, and so you can't interact with it. There's at least a default log = QuestLog( [the right parameters] ) missing somewhere.
 

tomtam

New Member
Oct 3, 2017
9
0
The error is simple, the log object (that I suppose host the quest system) do not exist, and so you can't interact with it. There's at least a default log = QuestLog( [the right parameters] ) missing somewhere.
Wow thanks for the answer, im really dumb with renpy,what should i do?
 
Last edited:

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,355
15,269
Wow thanks for the answer, im really dumb with renpy,what should i do?
Don't take it bad please, it's not my intent to be harsh or to discourage you. But if you ask this question, perhaps that you should start with a less ambitious project. This in order to learn how to use Ren'py and be more familiar with it, before you start to use more advanced features in your games.

I could give the answer to your question. I also could tell you how to use the quest system you found. But then you would be using it without really understanding what you are doing. Therefore, soon or latter, you'll encounter problems I didn't thought about, and be stuck again ; you'll see players reporting bugs that you don't understand, and then don't know how to solve them.
Not that a quest system is a really complicated things to do and to use in Ren'py, but it's also not something trivial for someone with no knowledge yet. And you haven't those knowledge, again yet, else you would have guessed the answer to this question from what I initially said.
But, because once again my intent isn't at all to discourage you, it doesn't mean that you can't acquire this knowledge. Just that you should start by learning the base, then once you're familiar with it, goes further, step by step.
 

tomtam

New Member
Oct 3, 2017
9
0
Ahah yes my knowledge of renpy is 0,np i prefer a honest opinion ^^.
I dont think i could learn this types of knowledge ahah.
Btw for my project after let work this quest system its finish, i only copy paste the entire process untile the end of game, i dont need anything else ^^".
Well Maybe i should try with rpg maker ahha, or is it complicated?
 

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,581
2,219
Anne really isn't suggesting dropping RenPy, he's suggesting that perhaps you write a game that doesn't use a quest system.

Or more realistically, don't write a game that uses a quest system YET. Write a simpler game first, then once you've understood the basics of RenPy... THEN go looking at adding the more complicated stuff into your 2nd game.

If you already have a story in mind, perhaps write a prequel. To re-use a massively overused trope... if your dad split from your mother landlady years ago and your MC is moving back in with your mom landlady as part of your planned story... perhaps do a small story about dad and why he moved out and the college bimbo he moved in with (and her 3 redhaired/blond/brunette friends, obviously) or the mom's landlady's affair that caused the split - because mom's the landlady's best friend in the present will always have some lewd stories about their past she's always hinting at. (And yes, I know you said fantasy and college girls don't really fit that theme, but I couldn't think of a fantasy example I liked).

Honestly, RenPy isn't hard. You define a few characters then have those character's speak some words. Extra points for having choices (which required a few variables to keep track of those choices) and perhaps even branching story-lines dependent on those choice. Anything beyond that is just making your life complicated for the sake of features players won't even miss. By far the harder part is writing a compelling story and creating artwork people will like for it.
 
  • Like
Reactions: K.T.L. and tomtam

tomtam

New Member
Oct 3, 2017
9
0
yes i understand but unfortunately i need a quest system to lead people on the right path, i'll explain.
The protagonist need to reach a kingdom and when playes first click on the kingdom the game say "you need a horse" so the player know they need a horse and then they go to the first city click on farm and then start the quest to help the farm lady and so on and then when the quest is finish if he click again on the kingdom he can go there (hope what i write is understandable, english isn't my main language) so basically i need something who lock the zone until you do them in order, and thats why i thought a quest system
 

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,581
2,219
I will add that your current needs can be done without a full quest system.
Maybe a quest system is better overall, but that does (as you are finding out) require an extra level of knowledge.

A lot of other games deliver what you are talking about by doing it the simpler but more untidy way.

I'm imagining something like:

Python:
define mc = Character("[player_name]")
define fl = Character("Farm Lady", color="#04B486")

default player_name = "George"
default quest_got_horse = False

# blah, blah. The game start, maybe an introduction... whatever... until...


label starter_hub:

    # show world map for this area (code not included)
    # map jumps to various labels... including...


label farmlady_zone:

    if quest_got_horse == True:
        "You have already completed this quest line."
        jump starter_hub

    scene black with fade    # since I don't have any images, I will use "black" as my default background.
    fl "Thank goodness you've arrived. I need a big strong man to help me with (blah, blah). As as reward, I can give you my old horse."
    #more code, more dialog. All the things you need to do for the farm lady.. until...


label_farmlady_quest_complete:

    scene black with dissolve
    fl "That's great. As promised, here is your new horse."
    $ quest_got_horse = True

    mc "Thank you."

    scene black with dissolve
    "[mc] returns to the starter town."
    jump starter_hub
  

label kingdom1_hub:

    if quest_got_horse == False:
        scene black with fade
        "You need a horse."
        jump starter_hub

    # show world map for this area (code not included)
    # map jumps to various labels

    # and so the game continues. Using simple variables to figure out where the player is up to and acting accordingly.


label more_game:

    # blah, blah.

Which obviously doesn't even come close to what you would really need, but is the bare skeleton of the code you might want.

Here, I'm using two simple variables... a string to hold the player's name and a boolean flag to hold a True/False value for whether the player has a horse yet.

... again, all of which doesn't address your problems using the quest system you are trying to implement. I guess I'm trying to highlight that you don't need a complex Swiss Amy Knife when a simple hammer could do the job too.

A better way to do some of this would be code the variable checks into the code of the that I assume you are going to try to use for each zone/world map. Where clickable areas of the map change (or are enabled/disabled) depending on the value of specific variables.