Skip to content

Instantly share code, notes, and snippets.

@KaeruCT
Last active December 16, 2015 21:29
Show Gist options
  • Save KaeruCT/5500114 to your computer and use it in GitHub Desktop.
Save KaeruCT/5500114 to your computer and use it in GitHub Desktop.
choose your own adventure (really tightly coupled to board software)
<?php
// By Kaeru~
require('lib/common.php');
$sql = new mysql;
if(!@$sql->connect($sqlhost,$sqluser,$sqlpass))
{
mysqlerror();
}
if(!@$sql->selectdb('nwwebde1_myoa'))
{
mysqlerror();
}
/*if($_GET['lol']=='yes')
{
$sql->query('TRUNCATE TABLE g_opts');
$sql->query('TRUNCATE TABLE g_stages');
$sql->query('TRUNCATE TABLE g_rep');
$sql->query('INSERT INTO g_stages SET text = "You are standing in an open field west of a white house, with a boarded front door.
There is a small mailbox here.
What will you do?"');
$sql->query('INSERT INTO g_opts SET stage = 1, text = "Enter house"');
$sql->query('INSERT INTO g_opts SET stage = 1, text = "Open mailbox"');
$sql->query('INSERT INTO g_opts SET stage = 1, text = "Walk away"');
print 'queries done';
}*/
function branch($stage)
{
global $sql;
$tree = array();
$opts = $sql->query('SELECT * FROM g_opts WHERE stage = '.$stage);
$stage = $sql->fetchq('SELECT * FROM g_stages WHERE id = '.$stage);
$tree['text'] = $stage['text'];
$tree['opts'] = array();
while($opt = $sql->fetch($opts))
{
$tree['opts'][$opt['id']] = array('opt' => $opt['text'], 'branch' => branch($opt['to']));
}
return $tree;
}
function loosends($stage, &$num)
{
global $sql, $visited;
if (!$visited) $visited = array();
if (in_array($stage, $visited)) {
return '';
}
$visited[] = $stage;
$out = '';
$opts = $sql->query('SELECT * FROM g_opts WHERE stage = '.$stage);
while($opt = $sql->fetch($opts))
{
if(!$opt['to'])
{
$num++;
$out .= '<li><a href="game.php?option='.$opt['id'].'">'.$opt['text'].'</a></li>';
}
else
$out .= loosends($opt['to'], $num);
}
return $out;
}
function branchp($arr)
{
$out = '<div class="tree" style="display: none;">';
$out .= '<p>'.($arr['text']?nl2br(htmlval($arr['text'])):'This part of the story isn\'t done yet!').'</p>';
foreach($arr['opts'] as $k => $v)
{
if(is_array($v))
{
$out .= '<div class="tog" onclick="$(this).next().slideToggle();">'.$v['opt'].'</div>';
$out .= branchp($v['branch']);
}
}
$out .= '</div>';
return $out;
}
$links = '<a href="game.php?loose">Loose ends</a>&nbsp;|&nbsp;<a href="game.php">Beginning</a>';
$option = isset($_GET['option'])?intval($_GET['option']):0;
$from = isset($_GET['from'])?intval($_GET['from']):0;
$action = isset($_POST['action'])?$_POST['action']:'';
$rep = isset($_GET['report'])?intval($_GET['report']):0;
$msg = $link = $title = '';
if($rep)
{
if($sql->resultq('SELECT COUNT(*) FROM g_stages WHERE id = "'.$rep.'"')>0)
{
$option = $sql->resultq('SELECT id FROM g_opts WHERE `to` = "'.$rep.'"');
if($sql->resultq('SELECT COUNT(*) FROM g_rep WHERE stage = "'.$rep.'" AND user = "'.$loguser['id'].'"')>0)
{
$msg = 'You already reported this setting!';
}
else
{
$sql->query('REPLACE INTO g_rep SET stage = "'.$rep.'", user = "'.$loguser['id'].'"');
$msg = 'This setting has been reported!';
}
$msg .= '<br /><a href="game.php?option='.$option.'">Go back</a>';
}
else
$msg = 'This setting doesn\'t even exist!<br /><a href="game.php">Go back</a>';
}
elseif($option!=0)
{
$option = $sql->fetchq('SELECT * FROM g_opts WHERE id = "'.$option.'"');
$link = '<a href="game.php">Go back to start</a>';
}
else
$option = array('id' => 0, 'to' => 1, 'stage' => 0, 'text' => 'The Beginning');
if(isset($_GET['branch']))
{
$title = 'Branch';
$tree = branch(1);
$msg = '<div class="tog" onclick="$(this).next().slideDown();">Start!</div>'.branchp($tree);
}
elseif(isset($_GET['loose']))
{
$num = 0;
$msg = '<ol>'.loosends(1, $num).'</ol>';
$title = 'Loose ends ('.$num.')';
}
elseif($action)
{
switch($action)
{
case 'newsetting':
$num = isset($_POST['numopts'])?intval($_POST['numopts']):2;
$optid = isset($_POST['optid'])?intval($_POST['optid']):0;
if($num>4) $num = 4;
if($num<1) $num = 1;
if($optid)
{
$opt = $sql->fetchq('SELECT * FROM g_opts WHERE id = "'.$_POST['optid'].'"');
$msg = '
<form method="post" action="game.php"><input type="hidden" name="optid" value="'.$_POST['optid'].'"><input type="hidden" name="numopts" value="'.$num.'"><input type="hidden" name="action" value="submitsetting"><table>
<tr><th colspan="2">Setting for "'.$opt['text'].'" option</th></tr>
<tr><td width="150px"><label for="setting">Setting:</label></td><td><textarea id="setting" name="setting" cols="80" rows="5"></textarea></td></tr>';
for($i=1;$i<=$num;$i++)
$msg.= '<tr><td><label for="opt'.$i.'">Option '.$i.':</label></td><td><input type="text" id="opt'.$i.'" name="opt'.$i.'"></td></tr>
';
$msg .= '<tr><td>&nbsp;</td><td><input type="submit" value="Submit"></td></tr>
</table></form>';
}
else
$msg = 'No option ID was specified.';
break;
case 'submitsetting':
$num = isset($_POST['numopts'])?intval($_POST['numopts']):2;
if($num>=4) $num = 4;
if($num<1) $num = 1;
$text = isset($_POST['setting'])?trim($_POST['setting']):'';
$optid = isset($_POST['optid'])?intval($_POST['optid']):0;
$err = array();
if(!$text)
{
$err[] = 'You didn\'t fill the "setting" field.';
}
if(!$optid)
{
$err[] = 'No option ID was specified.';
}
if($sql->resultq('SELECT COUNT(id) FROM g_opts WHERE id = "'.$optid.'"') == 0)
{
$err[] = 'No option with that ID exists.';
}
else
{
$opt = $sql->fetchq('SELECT * FROM g_opts WHERE id = "'.$optid.'"');
if($opt['to']!=0)
$err[] = 'Someone submitted the option before you did!';
}
for($i=1;$i<=$num;$i++)
{
if(!trim($_POST['opt'.$i]))
{
$err[] = 'You didn\'t fill all the options.';
break;
}
}
if(!$err[0])
{
$sql->query('INSERT INTO g_stages SET text = "'.$text.'", user = "'.$loguser['id'].'"');
$stageid = mysql_insert_id();
$sql->query('UPDATE g_opts SET `to` = "'.$stageid.'" WHERE id = "'.$optid.'"');
for($i=1;$i<=$num;$i++)
$sql->query('INSERT INTO g_opts SET stage = '.$stageid.', text = "'.$_POST['opt'.$i].'"');
sendirc('New option submitted by '.$loguser['name'].'! {boardurl}game.php?option='.$optid);
$msg = 'Option submitted succesfully!<br /><a href="game.php?option='.$optid.'">Go back where you ended!</a>';
}
else
{
$msg = 'The following error'.(sizeof($err)==1?'':'s').' occured:<ul><li>'.implode('</li><li>', $err).'</li></ul>';
}
break;
case 'ending':
$text = isset($_POST['ending'])?trim($_POST['ending']):'';
$optid = isset($_POST['optid'])?intval($_POST['optid']):0;
if(!$text)
{
$err[] = 'You didn\'t fill the "ending" field.';
}
if(!$optid)
{
$err[] = 'No option ID was specified.';
}
if($sql->resultq('SELECT COUNT(id) FROM g_opts WHERE id = "'.$optid.'"') == 0)
{
$err[] = 'No option with that ID exists.';
}
if(!$err[0])
{
$sql->query('INSERT INTO g_stages SET text = "'.$text.'", user = "'.$loguser['id'].'"');
$stageid = mysql_insert_id();
$sql->query('UPDATE g_opts SET `to` = "'.$stageid.'" WHERE id = "'.$optid.'"');
sendirc('An ending was submitted by '.$loguser['name'].'! {boardurl}game.php?option='.$optid);
$msg = 'Ending submitted succesfully!<br /><a href="game.php?option='.$optid.'">Go back where you ended!</a>';
}
else
{
$msg = 'The following error'.(sizeof($err)==1?'':'s').' occured:<ul><li>'.implode('</li><li>', $err).'</li></ul>';
}
break;
case 'link':
$setid = isset($_POST['settingid'])?intval($_POST['settingid']):0;
$optid = isset($_POST['optid'])?intval($_POST['optid']):0;
if(!$setid)
{
$err[] = 'You didn\'t fill the "setting ID" field.';
}
if(!$optid)
{
$err[] = 'No option ID was specified.';
}
if($sql->resultq('SELECT COUNT(id) FROM g_opts WHERE id = "'.$optid.'"') == 0)
{
$err[] = 'No option with that ID exists.';
}
if($sql->resultq('SELECT COUNT(id) FROM g_stages WHERE id = "'.$setid.'"') == 0)
{
$err[] = 'No setting with that ID exists.';
}
if(!$err[0])
{
$sql->query('UPDATE g_opts SET `to` = "'.$setid.'" WHERE id = "'.$optid.'"');
sendirc('New option submitted by '.$loguser['name'].'! {boardurl}game.php?option='.$optid);
$msg = 'Link to existing setting submitted succesfully!<br /><a href="game.php?option='.$optid.'">Go back where you ended!</a>';
}
else
{
$msg = 'The following error'.(sizeof($err)==1?'':'s').' occured:<ul><li>'.implode('</li><li>', $err).'</li></ul>';
}
break;
}
}
elseif(!$msg)
{
$settingid = '';
if(!$option)
{
$msg = 'This option doesn\'t even exist!';
}
elseif(!$option['to'])
{
$title = $option['text'];
$msg = '<p>This part of the story isn\'t done yet. You can either continue the story, or end it here.</p>
<div>
<a href="#" onclick="$(\'#end\').slideUp(); $(\'#link\').slideUp(); $(\'#continue\').slideDown(); return false;">Continue</a> |
<a href="#" onclick="$(\'#end\').slideUp(); $(\'#continue\').slideUp(); $(\'#link\').slideDown(); return false;">Link to an existing setting</a> |
<a href="#" onclick="$(\'#continue\').slideUp(); $(\'#link\').slideUp(); $(\'#end\').slideDown(); return false;">End</a></div>
<div id="continue" style="display: none;"><form method="post" action="game.php"><input type="hidden" name="optid" value="'.$option['id'].'"><input type="hidden" name="action" value="newsetting"><table>
<tr><th colspan="2">Continue the story</th></tr>
<tr><td width="150px"><label for="numopts">Number of options:<br>(max: 4)</label></td><td><input type="text" id="numopts" name="numopts" size="2" maxlength="1"></td></tr>
<tr><td>&nbsp;</td><td><input type="submit" value="Submit"></td></tr>
</table></form></div>
<div id="end" style="display: none;"><form method="post" action="game.php"><input type="hidden" name="optid" value="'.$option['id'].'"><input type="hidden" name="action" value="ending"><table>
<tr><th colspan="2">End it here</th></tr>
<tr><td width="150px"><label for="ending">Ending text:</label></td><td><textarea id="ending" name="ending" cols="80" rows="5"></textarea></td></tr>
<tr><td>&nbsp;</td><td><input type="submit" value="Submit"></td></tr>
</table></form></div>
<div id="link" style="display: none;"><form method="post" action="game.php"><input type="hidden" name="optid" value="'.$option['id'].'"><input type="hidden" name="action" value="link"><table>
<tr><th colspan="2">Link to an existing setting</th></tr>
<tr><td colspan="2">*The setting ID appears at the bottom of each setting.</td></tr>
<tr>
<td width="150px"><label for="settingid">Setting ID:</label></td>
<td><input type="text" name="settingid" id="settingid" size="4" maxlength="4"></td
</tr>
<tr><td>&nbsp;</td><td><input type="submit" value="Submit"></td></tr>
</table></form></div>';
}
else
{
$setting = $sql->fetchq('SELECT * FROM g_stages WHERE id = "'.$option['to'].'"');
$opts = $sql->query('SELECT * FROM g_opts WHERE stage = "'.$option['to'].'"');
$title = $option['text'];
$l = array();
while($opt = $sql->fetch($opts))
{
$msg .= '<li><a href="game.php?option='.$opt['id'].'&amp;from='.$setting['id'].'">'.htmlentities($opt['text']).'</a></li>';
}
if(!$msg)
{
$msg = '<h2>THE END</h2><a href="game.php">Go back to the beginning</a>.';
}
else $msg = '<ul>'.$msg.'</ul>';
}
if($setting['text'] != ''){
$settingid = '<small>This setting\'s ID is: <b>'.$setting['id'].'</b></small>';
}
$msg = '<div><div id="setting">'.nl2br(htmlval($setting['text'])).'</div><div id="opts">'.$msg.'</div>'.$settingid.'</div>';
if($option['stage'])
{
if(!$from)
{
$option = $sql->resultq('SELECT id FROM g_opts WHERE `to` = "'.$option['stage'].'" ORDER BY id ASC LIMIT 1');
}else{
$option = $from;
}
$l[] = '<a href="game.php'.($option?'?option='.$option:'').'">Go back to previous setting</a>';
}
if($setting['user'])
{
$user = $sql->fetchq('SELECT name,sex,power,color,id FROM users WHERE id = '.$setting['user']);
}
/*if($log)
$l[] = '<a href="game.php?report='.$setting['id'].'">Report</a>';*/
if($l[0])
$links .= '&nbsp;|&nbsp;'.implode('&nbsp;|&nbsp;', $l);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?=$title?></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="Author" content="Kaeru" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<style type="text/css">
body{color: #444; font-family: "Droid Sans", Tahoma, sans-serif; background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAAC/CAAAAABlQznkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wOkNyZWF0ZURhdGU9IjIwMTItMDMtMDZUMTg6MTU6NTcrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDEyLTAzLTA2VDE3OjMyOjI1KzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDEyLTAzLTA2VDE3OjMyOjI1KzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTUwREE2RjVGRDYxMUUxODlEN0YzNUUyNUU4Nzk3QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTUwREE3MDVGRDYxMUUxODlEN0YzNUUyNUU4Nzk3QyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjpp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%3D%3D)}
#wrap {max-width: 800px; margin: 0 auto;}
div#main{background: #eee; box-shadow: #000 1px 1px 3px; border-radius: 2px; padding: 16px;}
div.t {background: #444; border: #666 1px solid; padding: 10px; color: #eee;}
div.t > div {padding: 10px;}
p.sm{font-size: .8em}
div.tree{padding: 4px; border: #aaa 1px solid; background: url('theme/fragment/tdbg3.png')}
div.tog{font-weight: bold; cursor: pointer; margin: 4px;}
a:link{color:#333; font-weight: bold; text-decoration: none;}
a:visited{color:#333; font-weight: bold; text-decoration: none;}
a:active{color:#222; text-decoration: none;}
a:hover{color:#111;text-decoration: underline;}
form{display: inline;}
table{width: 100%; margin: 20px 0;}
textarea,input[type=text] {border: #888 1px solid; padding: 4px;}
</style>
</head>
<body>
<div id="wrap">
<h1><?=$title?></h1>
<p class="sm"><?=$links?></p>
<div id="main">
<?=$msg?>
</div>
</div>
<!--<div><small>By Kaeru~<br /><?=pagestats();?></small></div>-->
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment