Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Tutorials and Tips (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=27)
-   -   Dialogue/choice branch system (http://www.mysidiaadoptables.com/forum/showthread.php?t=5561)

Dinocanid 04-01-2018 12:32 PM

Dialogue/choice branch system
 
Have you ever wanted to add a CYOA (choose your own adventure) game to your site? Maybe you wanted to make a quiz or some sort of branching dialogue? Well, this will help you do that. Here's how it looks in action:
  Spoiler: gif image 
https://imgur.com/RvRVTkB.gif
The dialogue doesn't match up, it's a test after all x3
The second button doesn't lead to anything, so clicking on it does nothing.


-Pros-
  • No refresh abuse! If a user refreshes the page, it resets from the beginning. If a user presses the back button, it goes back to the previous page rather than the previous choice. No more cheating for multiple prizes!
  • No Javascript (does this count as a pro?)
  • Contained in a single function/page!

-Cons-
  • Keeping track of which choices lead to what can get confusing after a while. Be sure to leave plenty of comments for yourself so you don't get lost!

-The Process-
How this basically works is using multiple forms and buttons to link to each other and show different content depending on what choice you pick. For example...
PHP Code:

//choice handling
                
if($mysidia->input->post("left")){
                    
$document->add(new Comment("You went left!"));        
                    return;
                }
                elseif(
$mysidia->input->post("right")){
                    
$document->add(new Comment("You went right!"));                     
                    return;
                    
                }
//handling end

//adventure start
                
$document->add(new Comment("This is the start of your adventure! What will you do?</br>"));
                
$startForm = new FormBuilder("startform""pagename""post");
                    
$startForm->buildButton("Go left!""left""submit");
                    
$startForm->buildButton("Go right!""right""submit");
                    
$document->add($startForm); 

Doesn't that look nice and simple? Let's break it down piece-by-piece.
"choice handling" is where all of the following choices and such go. It always goes above "adventure start"! If you want to have a choice lead to yet another branch, then simply add a form within one of the statements. So...
PHP Code:

if($mysidia->input->post("left")){ 
                    
$document->add(new Comment("You went left! Now what?"));
       
$leftForm = new FormBuilder("leftform""pagename""post"); 
                    
$leftForm->buildButton("Go to the lake""lake""submit"); 
                    
$leftForm->buildButton("Go back home""home""submit"); 
                    
$document->add($leftForm);
                    return; 
                } 
if(
$mysidia->input->post("lake")){ 
                    
$document->add(new Comment("You went to the lake."));
                    return; 
                }
if(
$mysidia->input->post("home")){ 
                    
$document->add(new Comment("You decided to return home.<p><a href='pagename'>The End!</a></p>"));
                    return; 
                } 

Even though the choice handling always goes above the start, the order of the choices doesn't matter as far as I know. Just go with whatever order works best for you!
Since this purely uses PHP, you are free to use conditions, use database info, use variables, etc. For example, what if the user could only do this once a day? You could make a column in the database that holds whether or not the user has been on this adventure already. In whatever choice counts as a "dead end", update the database. That way, the user will be unable to do it again if they refresh or leave and return.

Hall of Famer 04-09-2018 02:53 PM

This looks like a neat idea for whoever wishes to make an exploration/quest system on his/her adoptables site, good job with the tutorial.


All times are GMT -5. The time now is 11:30 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.