Compare commits
No commits in common. "7e9ce285e0ba9da18adeaae91a30ddd1c81a7b9f" and "0511da22fb6f6824deee934e4aaa42877de9946e" have entirely different histories.
7e9ce285e0
...
0511da22fb
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,2 @@
|
||||||
.installed
|
.installed
|
||||||
database.db
|
database.db
|
||||||
database.db-*
|
|
||||||
|
|
541
public/admin.php
541
public/admin.php
|
@ -33,7 +33,7 @@ if (isset($_GET["do"])) {
|
||||||
|
|
||||||
function donothing() {
|
function donothing() {
|
||||||
|
|
||||||
$page = "Welcome to the Dragon Knight Administration section. Use the links on the left bar to control and edit various elements of the game.<br><br>Please note that the control panel has been created mostly as a shortcut for certain individual settings. It is meant for use primarily with editing one thing at a time. If you need to completely replace an entire table (say, to replace all stock monsters with your own new ones), it is suggested that you use a more in-depth database tool such as <a href=\"http://www.phpmyadmin.net\" target=\"_new\">phpMyAdmin</a>. Also, you may want to have a copy of the Dragon Knight development kit, available from the <a href=\"http://dragon.se7enet.com/dev.php\">Dragon Knight homepage</a>.<br><br>Also, you should be aware that certain portions of the DK code are dependent on the formatting of certain database results (for example, the special attributes on item drops). While I have attempted to point these out throughout the admin script, you should definitely pay attention and be careful when editing some fields, because mistakes in the database content may result in script errors or your game breaking completely.";
|
$page = "Welcome to the Dragon Knight Administration section. Use the links on the left bar to control and edit various elements of the game.<br /><br />Please note that the control panel has been created mostly as a shortcut for certain individual settings. It is meant for use primarily with editing one thing at a time. If you need to completely replace an entire table (say, to replace all stock monsters with your own new ones), it is suggested that you use a more in-depth database tool such as <a href=\"http://www.phpmyadmin.net\" target=\"_new\">phpMyAdmin</a>. Also, you may want to have a copy of the Dragon Knight development kit, available from the <a href=\"http://dragon.se7enet.com/dev.php\">Dragon Knight homepage</a>.<br /><br />Also, you should be aware that certain portions of the DK code are dependent on the formatting of certain database results (for example, the special attributes on item drops). While I have attempted to point these out throughout the admin script, you should definitely pay attention and be careful when editing some fields, because mistakes in the database content may result in script errors or your game breaking completely.";
|
||||||
admindisplay($page, "Admin Home");
|
admindisplay($page, "Admin Home");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,45 +44,64 @@ function main() {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($gamename == "") { $errors++; $errorlist .= "Game name is required.<br>"; }
|
if ($gamename == "") { $errors++; $errorlist .= "Game name is required.<br />"; }
|
||||||
if (($gamesize % 5) != 0) { $errors++; $errorlist .= "Map size must be divisible by five.<br>"; }
|
if (($gamesize % 5) != 0) { $errors++; $errorlist .= "Map size must be divisible by five.<br />"; }
|
||||||
if (!is_numeric($gamesize)) { $errors++; $errorlist .= "Map size must be a number.<br>"; }
|
if (!is_numeric($gamesize)) { $errors++; $errorlist .= "Map size must be a number.<br />"; }
|
||||||
if ($class1name == "") { $errors++; $errorlist .= "Class 1 name is required.<br>"; }
|
if ($forumtype == 2 && $forumaddress == "") { $errors++; $errorlist .= "You must specify a forum address when using the External setting.<br />"; }
|
||||||
if ($class2name == "") { $errors++; $errorlist .= "Class 2 name is required.<br>"; }
|
if ($class1name == "") { $errors++; $errorlist .= "Class 1 name is required.<br />"; }
|
||||||
if ($class3name == "") { $errors++; $errorlist .= "Class 3 name is required.<br>"; }
|
if ($class2name == "") { $errors++; $errorlist .= "Class 2 name is required.<br />"; }
|
||||||
|
if ($class3name == "") { $errors++; $errorlist .= "Class 3 name is required.<br />"; }
|
||||||
|
if ($diff1name == "") { $errors++; $errorlist .= "Difficulty 1 name is required.<br />"; }
|
||||||
|
if ($diff2name == "") { $errors++; $errorlist .= "Difficulty 2 name is required.<br />"; }
|
||||||
|
if ($diff3name == "") { $errors++; $errorlist .= "Difficulty 3 name is required.<br />"; }
|
||||||
|
if ($diff2mod == "") { $errors++; $errorlist .= "Difficulty 2 value is required.<br />"; }
|
||||||
|
if ($diff3mod == "") { $errors++; $errorlist .= "Difficulty 3 value is required.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("UPDATE {{table}} SET gamename='$gamename',gamesize='$gamesize',class1name='$class1name',class2name='$class2name',class3name='$class3name',gameopen='$gameopen',verifyemail='$verifyemail',gameurl='$gameurl',adminemail='$adminemail',shownews='$shownews',showonline='$showonline',showbabble='$showbabble' WHERE id='1' LIMIT 1", "control");
|
$query = doquery("UPDATE {{table}} SET gamename='$gamename',gamesize='$gamesize',forumtype='$forumtype',forumaddress='$forumaddress',compression='$compression',class1name='$class1name',class2name='$class2name',class3name='$class3name',diff1name='$diff1name',diff2name='$diff2name',diff3name='$diff3name',diff2mod='$diff2mod',diff3mod='$diff3mod',gameopen='$gameopen',verifyemail='$verifyemail',gameurl='$gameurl',adminemail='$adminemail',shownews='$shownews',showonline='$showonline',showbabble='$showbabble' WHERE id='1' LIMIT 1", "control");
|
||||||
admindisplay("Settings updated.","Main Settings");
|
admindisplay("Settings updated.","Main Settings");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Main Settings");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Main Settings");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
global $controlrow;
|
global $controlrow;
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Main Settings</u></b><br>
|
<b><u>Main Settings</u></b><br />
|
||||||
These options control several major settings for the overall game engine.<br><br>
|
These options control several major settings for the overall game engine.<br /><br />
|
||||||
<form action="admin.php?do=main" method="post">
|
<form action="admin.php?do=main" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%"><span class="highlight">Game Open:</span></td><td><select name="gameopen"><option value="1" {{open1select}}>Open</option><option value="0" {{open0select}}>Closed</option></select><br><span class="small">Close the game if you are upgrading or working on settings and don't want to cause odd errors for end-users. Closing the game will completely halt all activity.</span></td></tr>
|
<tr><td width="20%"><span class="highlight">Game Open:</span></td><td><select name="gameopen"><option value="1" {{open1select}}>Open</option><option value="0" {{open0select}}>Closed</option></select><br /><span class="small">Close the game if you are upgrading or working on settings and don't want to cause odd errors for end-users. Closing the game will completely halt all activity.</span></td></tr>
|
||||||
<tr><td width="20%">Game Name:</td><td><input type="text" name="gamename" size="30" maxlength="50" value="{{gamename}}" /><br><span class="small">Default is "Dragon Knight". Change this if you want to change to call your game something different.</span></td></tr>
|
<tr><td width="20%">Game Name:</td><td><input type="text" name="gamename" size="30" maxlength="50" value="{{gamename}}" /><br /><span class="small">Default is "Dragon Knight". Change this if you want to change to call your game something different.</span></td></tr>
|
||||||
<tr><td width="20%">Game URL:</td><td><input type="text" name="gameurl" size="50" maxlength="100" value="{{gameurl}}" /><br><span class="small">Please specify the full URL to your game installation ("http://www.server.com/dkpath/index.php"). This gets used in the registration email sent to users. If you leave this field blank or incorrect, users may not be able to register correctly.</span></td></tr>
|
<tr><td width="20%">Game URL:</td><td><input type="text" name="gameurl" size="50" maxlength="100" value="{{gameurl}}" /><br /><span class="small">Please specify the full URL to your game installation ("http://www.server.com/dkpath/index.php"). This gets used in the registration email sent to users. If you leave this field blank or incorrect, users may not be able to register correctly.</span></td></tr>
|
||||||
<tr><td width="20%">Admin Email:</td><td><input type="text" name="adminemail" size="30" maxlength="100" value="{{adminemail}}" /><br><span class="small">Please specify your email address. This gets used when the game has to send an email to users.</span></td></tr>
|
<tr><td width="20%">Admin Email:</td><td><input type="text" name="adminemail" size="30" maxlength="100" value="{{adminemail}}" /><br /><span class="small">Please specify your email address. This gets used when the game has to send an email to users.</span></td></tr>
|
||||||
<tr><td width="20%">Map Size:</td><td><input type="text" name="gamesize" size="3" maxlength="3" value="{{gamesize}}" /><br><span class="small">Default is 250. This is the size of each map quadrant. Note that monster levels increase every 5 spaces, so you should ensure that you have at least (map size / 5) monster levels total, otherwise there will be parts of the map without any monsters, or some monsters won't ever get used. Ex: with a map size of 250, you should have 50 monster levels total.</span></td></tr>
|
<tr><td width="20%">Map Size:</td><td><input type="text" name="gamesize" size="3" maxlength="3" value="{{gamesize}}" /><br /><span class="small">Default is 250. This is the size of each map quadrant. Note that monster levels increase every 5 spaces, so you should ensure that you have at least (map size / 5) monster levels total, otherwise there will be parts of the map without any monsters, or some monsters won't ever get used. Ex: with a map size of 250, you should have 50 monster levels total.</span></td></tr>
|
||||||
<tr><td width="20%">Email Verification:</td><td><select name="verifyemail"><option value="0" {{selectverify0}}>Disabled</option><option value="1" {{selectverify1}}>Enabled</option></select><br><span class="small">Make users verify their email address for added security.</span></td></tr>
|
<tr><td width="20%">Forum Type:</td><td><select name="forumtype"><option value="0" {{selecttype0}}>Disabled</option><option value="1" {{selecttype1}}>Internal</option><option value="2" {{selecttype2}}>External</option></select><br /><span class="small">'Disabled' removes the forum link. 'Internal' uses the built-in (and very stripped-down) forum program included with Dragon Knight, if you don't have your own forums software already installed. 'External' uses the address provided below and links to your own forums software.</span></td></tr>
|
||||||
<tr><td width="20%">Show News:</td><td><select name="shownews"><option value="0" {{selectnews0}}>No</option><option value="1" {{selectnews1}}>Yes</option></select><br><span class="small">Toggle display of the Latest News box in towns.</td></tr>
|
<tr><td width="20%">External Forum:</td><td><input type="text" name="forumaddress" size="30" maxlength="200" value="{{forumaddress}}" /><br /><span class="small">If the above value is set to 'External,' please specify the complete URL to your forums here.</span></td></tr>
|
||||||
<tr><td width="20%">Show Who's Online:</td><td><select name="showonline"><option value="0" {{selectonline0}}>No</option><option value="1" {{selectonline1}}>Yes</option></select><br><span class="small">Toggle display of the Who's Online box in towns.</span></td></tr>
|
<tr><td width="20%">Page Compression:</td><td><select name="compression"><option value="0" {{selectcomp0}}>Disabled</option><option value="1" {{selectcomp1}}>Enabled</option></select><br /><span class="small">Enable page compression if it is supported by your server, and this will greatly reduce the amount of bandwidth required by the game.</span></td></tr>
|
||||||
<tr><td width="20%">Show Babblebox:</td><td><select name="showbabble"><option value="0" {{selectbabble0}}>No</option><option value="1" {{selectbabble1}}>Yes</option></select><br><span class="small">Toggle display of the Babble Box in towns.</span></td></tr>
|
<tr><td width="20%">Email Verification:</td><td><select name="verifyemail"><option value="0" {{selectverify0}}>Disabled</option><option value="1" {{selectverify1}}>Enabled</option></select><br /><span class="small">Make users verify their email address for added security.</span></td></tr>
|
||||||
<tr><td width="20%">Class 1 Name:</td><td><input type="text" name="class1name" size="20" maxlength="50" value="{{class1name}}" /><br></td></tr>
|
<tr><td width="20%">Show News:</td><td><select name="shownews"><option value="0" {{selectnews0}}>No</option><option value="1" {{selectnews1}}>Yes</option></select><br /><span class="small">Toggle display of the Latest News box in towns.</td></tr>
|
||||||
<tr><td width="20%">Class 2 Name:</td><td><input type="text" name="class2name" size="20" maxlength="50" value="{{class2name}}" /><br></td></tr>
|
<tr><td width="20%">Show Who's Online:</td><td><select name="showonline"><option value="0" {{selectonline0}}>No</option><option value="1" {{selectonline1}}>Yes</option></select><br /><span class="small">Toggle display of the Who's Online box in towns.</span></td></tr>
|
||||||
<tr><td width="20%">Class 3 Name:</td><td><input type="text" name="class3name" size="20" maxlength="50" value="{{class3name}}" /><br></td></tr>
|
<tr><td width="20%">Show Babblebox:</td><td><select name="showbabble"><option value="0" {{selectbabble0}}>No</option><option value="1" {{selectbabble1}}>Yes</option></select><br /><span class="small">Toggle display of the Babble Box in towns.</span></td></tr>
|
||||||
|
<tr><td width="20%">Class 1 Name:</td><td><input type="text" name="class1name" size="20" maxlength="50" value="{{class1name}}" /><br /></td></tr>
|
||||||
|
<tr><td width="20%">Class 2 Name:</td><td><input type="text" name="class2name" size="20" maxlength="50" value="{{class2name}}" /><br /></td></tr>
|
||||||
|
<tr><td width="20%">Class 3 Name:</td><td><input type="text" name="class3name" size="20" maxlength="50" value="{{class3name}}" /><br /></td></tr>
|
||||||
|
<tr><td width="20%">Difficulty 1 Name:</td><td><input type="text" name="diff1name" size="20" maxlength="50" value="{{diff1name}}" /><br /></td></tr>
|
||||||
|
<tr><td width="20%">Difficulty 2 Name:</td><td><input type="text" name="diff2name" size="20" maxlength="50" value="{{diff2name}}" /><br /></td></tr>
|
||||||
|
<tr><td width="20%">Difficulty 2 Value:</td><td><input type="text" name="diff2mod" size="3" maxlength="3" value="{{diff2mod}}" /><br /><span class="small">Default is 1.2. Specify factoral value for medium difficulty here.</span></td></tr>
|
||||||
|
<tr><td width="20%">Difficulty 3 Name:</td><td><input type="text" name="diff3name" size="20" maxlength="50" value="{{diff3name}}" /><br /></td></tr>
|
||||||
|
<tr><td width="20%">Difficulty 3 Value:</td><td><input type="text" name="diff3mod" size="3" maxlength="3" value="{{diff3mod}}" /><br /><span class="small">Default is 1.5. Specify factoral value for hard difficulty here.</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
if ($controlrow["forumtype"] == 0) { $controlrow["selecttype0"] = "selected=\"selected\" "; } else { $controlrow["selecttype0"] = ""; }
|
||||||
|
if ($controlrow["forumtype"] == 1) { $controlrow["selecttype1"] = "selected=\"selected\" "; } else { $controlrow["selecttype1"] = ""; }
|
||||||
|
if ($controlrow["forumtype"] == 2) { $controlrow["selecttype2"] = "selected=\"selected\" "; } else { $controlrow["selecttype2"] = ""; }
|
||||||
|
if ($controlrow["compression"] == 0) { $controlrow["selectcomp0"] = "selected=\"selected\" "; } else { $controlrow["selectcomp0"] = ""; }
|
||||||
|
if ($controlrow["compression"] == 1) { $controlrow["selectcomp1"] = "selected=\"selected\" "; } else { $controlrow["selectcomp1"] = ""; }
|
||||||
if ($controlrow["verifyemail"] == 0) { $controlrow["selectverify0"] = "selected=\"selected\" "; } else { $controlrow["selectverify0"] = ""; }
|
if ($controlrow["verifyemail"] == 0) { $controlrow["selectverify0"] = "selected=\"selected\" "; } else { $controlrow["selectverify0"] = ""; }
|
||||||
if ($controlrow["verifyemail"] == 1) { $controlrow["selectverify1"] = "selected=\"selected\" "; } else { $controlrow["selectverify1"] = ""; }
|
if ($controlrow["verifyemail"] == 1) { $controlrow["selectverify1"] = "selected=\"selected\" "; } else { $controlrow["selectverify1"] = ""; }
|
||||||
if ($controlrow["shownews"] == 0) { $controlrow["selectnews0"] = "selected=\"selected\" "; } else { $controlrow["selectnews0"] = ""; }
|
if ($controlrow["shownews"] == 0) { $controlrow["selectnews0"] = "selected=\"selected\" "; } else { $controlrow["selectnews0"] = ""; }
|
||||||
|
@ -102,7 +121,7 @@ END;
|
||||||
function items() {
|
function items() {
|
||||||
|
|
||||||
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "items");
|
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "items");
|
||||||
$page = "<b><u>Edit Items</u></b><br>Click an item's name to edit it.<br><br><table width=\"50%\">\n";
|
$page = "<b><u>Edit Items</u></b><br />Click an item's name to edit it.<br /><br /><table width=\"50%\">\n";
|
||||||
$count = 1;
|
$count = 1;
|
||||||
while ($row = mysql_fetch_array($query)) {
|
while ($row = mysql_fetch_array($query)) {
|
||||||
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=edititem:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=edititem:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
||||||
|
@ -121,18 +140,18 @@ function edititem($id) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($name == "") { $errors++; $errorlist .= "Name is required.<br>"; }
|
if ($name == "") { $errors++; $errorlist .= "Name is required.<br />"; }
|
||||||
if ($buycost == "") { $errors++; $errorlist .= "Cost is required.<br>"; }
|
if ($buycost == "") { $errors++; $errorlist .= "Cost is required.<br />"; }
|
||||||
if (!is_numeric($buycost)) { $errors++; $errorlist .= "Cost must be a number.<br>"; }
|
if (!is_numeric($buycost)) { $errors++; $errorlist .= "Cost must be a number.<br />"; }
|
||||||
if ($attribute == "") { $errors++; $errorlist .= "Attribute is required.<br>"; }
|
if ($attribute == "") { $errors++; $errorlist .= "Attribute is required.<br />"; }
|
||||||
if (!is_numeric($attribute)) { $errors++; $errorlist .= "Attribute must be a number.<br>"; }
|
if (!is_numeric($attribute)) { $errors++; $errorlist .= "Attribute must be a number.<br />"; }
|
||||||
if ($special == "" || $special == " ") { $special = "X"; }
|
if ($special == "" || $special == " ") { $special = "X"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("UPDATE {{table}} SET name='$name',type='$type',buycost='$buycost',attribute='$attribute',special='$special' WHERE id='$id' LIMIT 1", "items");
|
$query = doquery("UPDATE {{table}} SET name='$name',type='$type',buycost='$buycost',attribute='$attribute',special='$special' WHERE id='$id' LIMIT 1", "items");
|
||||||
admindisplay("Item updated.","Edit Items");
|
admindisplay("Item updated.","Edit Items");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit Items");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit Items");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -142,29 +161,29 @@ function edititem($id) {
|
||||||
$row = mysql_fetch_array($query);
|
$row = mysql_fetch_array($query);
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Items</u></b><br><br>
|
<b><u>Edit Items</u></b><br /><br />
|
||||||
<form action="admin.php?do=edititem:$id" method="post">
|
<form action="admin.php?do=edititem:$id" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
||||||
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
||||||
<tr><td width="20%">Type:</td><td><select name="type"><option value="1" {{type1select}}>Weapon</option><option value="2" {{type2select}}>Armor</option><option value="3" {{type3select}}>Shield</option></select></td></tr>
|
<tr><td width="20%">Type:</td><td><select name="type"><option value="1" {{type1select}}>Weapon</option><option value="2" {{type2select}}>Armor</option><option value="3" {{type3select}}>Shield</option></select></td></tr>
|
||||||
<tr><td width="20%">Cost:</td><td><input type="text" name="buycost" size="5" maxlength="10" value="{{buycost}}" /> gold</td></tr>
|
<tr><td width="20%">Cost:</td><td><input type="text" name="buycost" size="5" maxlength="10" value="{{buycost}}" /> gold</td></tr>
|
||||||
<tr><td width="20%">Attribute:</td><td><input type="text" name="attribute" size="5" maxlength="10" value="{{attribute}}" /><br><span class="small">How much the item adds to total attackpower (weapons) or defensepower (armor/shields).</span></td></tr>
|
<tr><td width="20%">Attribute:</td><td><input type="text" name="attribute" size="5" maxlength="10" value="{{attribute}}" /><br /><span class="small">How much the item adds to total attackpower (weapons) or defensepower (armor/shields).</span></td></tr>
|
||||||
<tr><td width="20%">Special:</td><td><input type="text" name="special" size="30" maxlength="50" value="{{special}}" /><br><span class="small">Should be either a special code or <span class="highlight">X</span> to disable. Edit this field very carefully because mistakes to formatting or field names can create problems in the game.</span></td></tr>
|
<tr><td width="20%">Special:</td><td><input type="text" name="special" size="30" maxlength="50" value="{{special}}" /><br /><span class="small">Should be either a special code or <span class="highlight">X</span> to disable. Edit this field very carefully because mistakes to formatting or field names can create problems in the game.</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
<b>Special Codes:</b><br>
|
<b>Special Codes:</b><br />
|
||||||
Special codes can be added in the item's Special field to give it extra user attributes. Special codes are in the format <span class="highlight">attribute,value</span>. <span class="highlight">Attribute</span> can be any database field from the Users table - however, it is suggested that you only use the ones from the list below, otherwise things can get freaky. <span class="highlight">Value</span> may be any positive or negative whole number. For example, if you want a weapon to give an additional 50 max hit points, the special code would be <span class="highlight">maxhp,50</span>.<br><br>
|
Special codes can be added in the item's Special field to give it extra user attributes. Special codes are in the format <span class="highlight">attribute,value</span>. <span class="highlight">Attribute</span> can be any database field from the Users table - however, it is suggested that you only use the ones from the list below, otherwise things can get freaky. <span class="highlight">Value</span> may be any positive or negative whole number. For example, if you want a weapon to give an additional 50 max hit points, the special code would be <span class="highlight">maxhp,50</span>.<br /><br />
|
||||||
Suggested user fields for special codes:<br>
|
Suggested user fields for special codes:<br />
|
||||||
maxhp - max hit points<br>
|
maxhp - max hit points<br />
|
||||||
maxmp - max magic points<br>
|
maxmp - max magic points<br />
|
||||||
maxtp - max travel points<br>
|
maxtp - max travel points<br />
|
||||||
goldbonus - gold bonus, in percent<br>
|
goldbonus - gold bonus, in percent<br />
|
||||||
expbonus - experience bonus, in percent<br>
|
expbonus - experience bonus, in percent<br />
|
||||||
strength - strength (which also adds to attackpower)<br>
|
strength - strength (which also adds to attackpower)<br />
|
||||||
dexterity - dexterity (which also adds to defensepower)<br>
|
dexterity - dexterity (which also adds to defensepower)<br />
|
||||||
attackpower - total attack power<br>
|
attackpower - total attack power<br />
|
||||||
defensepower - total defense power
|
defensepower - total defense power
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
@ -180,7 +199,7 @@ END;
|
||||||
function drops() {
|
function drops() {
|
||||||
|
|
||||||
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "drops");
|
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "drops");
|
||||||
$page = "<b><u>Edit Drops</u></b><br>Click an item's name to edit it.<br><br><table width=\"50%\">\n";
|
$page = "<b><u>Edit Drops</u></b><br />Click an item's name to edit it.<br /><br /><table width=\"50%\">\n";
|
||||||
$count = 1;
|
$count = 1;
|
||||||
while ($row = mysql_fetch_array($query)) {
|
while ($row = mysql_fetch_array($query)) {
|
||||||
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=editdrop:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=editdrop:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
||||||
|
@ -199,17 +218,17 @@ function editdrop($id) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($name == "") { $errors++; $errorlist .= "Name is required.<br>"; }
|
if ($name == "") { $errors++; $errorlist .= "Name is required.<br />"; }
|
||||||
if ($mlevel == "") { $errors++; $errorlist .= "Monster level is required.<br>"; }
|
if ($mlevel == "") { $errors++; $errorlist .= "Monster level is required.<br />"; }
|
||||||
if (!is_numeric($mlevel)) { $errors++; $errorlist .= "Monster level must be a number.<br>"; }
|
if (!is_numeric($mlevel)) { $errors++; $errorlist .= "Monster level must be a number.<br />"; }
|
||||||
if ($attribute1 == "" || $attribute1 == " " || $attribute1 == "X") { $errors++; $errorlist .= "First attribute is required.<br>"; }
|
if ($attribute1 == "" || $attribute1 == " " || $attribute1 == "X") { $errors++; $errorlist .= "First attribute is required.<br />"; }
|
||||||
if ($attribute2 == "" || $attribute2 == " ") { $attribute2 = "X"; }
|
if ($attribute2 == "" || $attribute2 == " ") { $attribute2 = "X"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("UPDATE {{table}} SET name='$name',mlevel='$mlevel',attribute1='$attribute1',attribute2='$attribute2' WHERE id='$id' LIMIT 1", "drops");
|
$query = doquery("UPDATE {{table}} SET name='$name',mlevel='$mlevel',attribute1='$attribute1',attribute2='$attribute2' WHERE id='$id' LIMIT 1", "drops");
|
||||||
admindisplay("Item updated.","Edit Drops");
|
admindisplay("Item updated.","Edit Drops");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit Drops");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit Drops");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -219,28 +238,28 @@ function editdrop($id) {
|
||||||
$row = mysql_fetch_array($query);
|
$row = mysql_fetch_array($query);
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Drops</u></b><br><br>
|
<b><u>Edit Drops</u></b><br /><br />
|
||||||
<form action="admin.php?do=editdrop:$id" method="post">
|
<form action="admin.php?do=editdrop:$id" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
||||||
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
||||||
<tr><td width="20%">Monster Level:</td><td><input type="text" name="mlevel" size="5" maxlength="10" value="{{mlevel}}" /><br><span class="small">Minimum monster level that will drop this item.</span></td></tr>
|
<tr><td width="20%">Monster Level:</td><td><input type="text" name="mlevel" size="5" maxlength="10" value="{{mlevel}}" /><br /><span class="small">Minimum monster level that will drop this item.</span></td></tr>
|
||||||
<tr><td width="20%">Attribute 1:</td><td><input type="text" name="attribute1" size="30" maxlength="50" value="{{attribute1}}" /><br><span class="small">Must be a special code. First attribute cannot be disabled. Edit this field very carefully because mistakes to formatting or field names can create problems in the game.</span></td></tr>
|
<tr><td width="20%">Attribute 1:</td><td><input type="text" name="attribute1" size="30" maxlength="50" value="{{attribute1}}" /><br /><span class="small">Must be a special code. First attribute cannot be disabled. Edit this field very carefully because mistakes to formatting or field names can create problems in the game.</span></td></tr>
|
||||||
<tr><td width="20%">Attribute 2:</td><td><input type="text" name="attribute2" size="30" maxlength="50" value="{{attribute2}}" /><br><span class="small">Should be either a special code or <span class="highlight">X</span> to disable. Edit this field very carefully because mistakes to formatting or field names can create problems in the game.</span></td></tr>
|
<tr><td width="20%">Attribute 2:</td><td><input type="text" name="attribute2" size="30" maxlength="50" value="{{attribute2}}" /><br /><span class="small">Should be either a special code or <span class="highlight">X</span> to disable. Edit this field very carefully because mistakes to formatting or field names can create problems in the game.</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
<b>Special Codes:</b><br>
|
<b>Special Codes:</b><br />
|
||||||
Special codes are used in the two attribute fields to give the item properties. The first attribute field must contain a special code, but the second one may be left empty ("X") if you wish. Special codes are in the format <span class="highlight">attribute,value</span>. <span class="highlight">Attribute</span> can be any database field from the Users table - however, it is suggested that you only use the ones from the list below, otherwise things can get freaky. <span class="highlight">Value</span> may be any positive or negative whole number. For example, if you want a weapon to give an additional 50 max hit points, the special code would be <span class="highlight">maxhp,50</span>.<br><br>
|
Special codes are used in the two attribute fields to give the item properties. The first attribute field must contain a special code, but the second one may be left empty ("X") if you wish. Special codes are in the format <span class="highlight">attribute,value</span>. <span class="highlight">Attribute</span> can be any database field from the Users table - however, it is suggested that you only use the ones from the list below, otherwise things can get freaky. <span class="highlight">Value</span> may be any positive or negative whole number. For example, if you want a weapon to give an additional 50 max hit points, the special code would be <span class="highlight">maxhp,50</span>.<br /><br />
|
||||||
Suggested user fields for special codes:<br>
|
Suggested user fields for special codes:<br />
|
||||||
maxhp - max hit points<br>
|
maxhp - max hit points<br />
|
||||||
maxmp - max magic points<br>
|
maxmp - max magic points<br />
|
||||||
maxtp - max travel points<br>
|
maxtp - max travel points<br />
|
||||||
goldbonus - gold bonus, in percent<br>
|
goldbonus - gold bonus, in percent<br />
|
||||||
expbonus - experience bonus, in percent<br>
|
expbonus - experience bonus, in percent<br />
|
||||||
strength - strength (which also adds to attackpower)<br>
|
strength - strength (which also adds to attackpower)<br />
|
||||||
dexterity - dexterity (which also adds to defensepower)<br>
|
dexterity - dexterity (which also adds to defensepower)<br />
|
||||||
attackpower - total attack power<br>
|
attackpower - total attack power<br />
|
||||||
defensepower - total defense power
|
defensepower - total defense power
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
@ -252,7 +271,7 @@ END;
|
||||||
function towns() {
|
function towns() {
|
||||||
|
|
||||||
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "towns");
|
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "towns");
|
||||||
$page = "<b><u>Edit Towns</u></b><br>Click an town's name to edit it.<br><br><table width=\"50%\">\n";
|
$page = "<b><u>Edit Towns</u></b><br />Click an town's name to edit it.<br /><br /><table width=\"50%\">\n";
|
||||||
$count = 1;
|
$count = 1;
|
||||||
while ($row = mysql_fetch_array($query)) {
|
while ($row = mysql_fetch_array($query)) {
|
||||||
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=edittown:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=edittown:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
||||||
|
@ -271,25 +290,25 @@ function edittown($id) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($name == "") { $errors++; $errorlist .= "Name is required.<br>"; }
|
if ($name == "") { $errors++; $errorlist .= "Name is required.<br />"; }
|
||||||
if ($latitude == "") { $errors++; $errorlist .= "Latitude is required.<br>"; }
|
if ($latitude == "") { $errors++; $errorlist .= "Latitude is required.<br />"; }
|
||||||
if (!is_numeric($latitude)) { $errors++; $errorlist .= "Latitude must be a number.<br>"; }
|
if (!is_numeric($latitude)) { $errors++; $errorlist .= "Latitude must be a number.<br />"; }
|
||||||
if ($longitude == "") { $errors++; $errorlist .= "Longitude is required.<br>"; }
|
if ($longitude == "") { $errors++; $errorlist .= "Longitude is required.<br />"; }
|
||||||
if (!is_numeric($longitude)) { $errors++; $errorlist .= "Longitude must be a number.<br>"; }
|
if (!is_numeric($longitude)) { $errors++; $errorlist .= "Longitude must be a number.<br />"; }
|
||||||
if ($innprice == "") { $errors++; $errorlist .= "Inn Price is required.<br>"; }
|
if ($innprice == "") { $errors++; $errorlist .= "Inn Price is required.<br />"; }
|
||||||
if (!is_numeric($innprice)) { $errors++; $errorlist .= "Inn Price must be a number.<br>"; }
|
if (!is_numeric($innprice)) { $errors++; $errorlist .= "Inn Price must be a number.<br />"; }
|
||||||
if ($mapprice == "") { $errors++; $errorlist .= "Map Price is required.<br>"; }
|
if ($mapprice == "") { $errors++; $errorlist .= "Map Price is required.<br />"; }
|
||||||
if (!is_numeric($mapprice)) { $errors++; $errorlist .= "Map Price must be a number.<br>"; }
|
if (!is_numeric($mapprice)) { $errors++; $errorlist .= "Map Price must be a number.<br />"; }
|
||||||
|
|
||||||
if ($travelpoints == "") { $errors++; $errorlist .= "Travel Points is required.<br>"; }
|
if ($travelpoints == "") { $errors++; $errorlist .= "Travel Points is required.<br />"; }
|
||||||
if (!is_numeric($travelpoints)) { $errors++; $errorlist .= "Travel Points must be a number.<br>"; }
|
if (!is_numeric($travelpoints)) { $errors++; $errorlist .= "Travel Points must be a number.<br />"; }
|
||||||
if ($itemslist == "") { $errors++; $errorlist .= "Items List is required.<br>"; }
|
if ($itemslist == "") { $errors++; $errorlist .= "Items List is required.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("UPDATE {{table}} SET name='$name',latitude='$latitude',longitude='$longitude',innprice='$innprice',mapprice='$mapprice',travelpoints='$travelpoints',itemslist='$itemslist' WHERE id='$id' LIMIT 1", "towns");
|
$query = doquery("UPDATE {{table}} SET name='$name',latitude='$latitude',longitude='$longitude',innprice='$innprice',mapprice='$mapprice',travelpoints='$travelpoints',itemslist='$itemslist' WHERE id='$id' LIMIT 1", "towns");
|
||||||
admindisplay("Town updated.","Edit Towns");
|
admindisplay("Town updated.","Edit Towns");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit Towns");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit Towns");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -299,17 +318,17 @@ function edittown($id) {
|
||||||
$row = mysql_fetch_array($query);
|
$row = mysql_fetch_array($query);
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Towns</u></b><br><br>
|
<b><u>Edit Towns</u></b><br /><br />
|
||||||
<form action="admin.php?do=edittown:$id" method="post">
|
<form action="admin.php?do=edittown:$id" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
||||||
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
||||||
<tr><td width="20%">Latitude:</td><td><input type="text" name="latitude" size="5" maxlength="10" value="{{latitude}}" /><br><span class="small">Positive or negative integer.</span></td></tr>
|
<tr><td width="20%">Latitude:</td><td><input type="text" name="latitude" size="5" maxlength="10" value="{{latitude}}" /><br /><span class="small">Positive or negative integer.</span></td></tr>
|
||||||
<tr><td width="20%">Longitude:</td><td><input type="text" name="longitude" size="5" maxlength="10" value="{{longitude}}" /><br><span class="small">Positive or negative integer.</span></td></tr>
|
<tr><td width="20%">Longitude:</td><td><input type="text" name="longitude" size="5" maxlength="10" value="{{longitude}}" /><br /><span class="small">Positive or negative integer.</span></td></tr>
|
||||||
<tr><td width="20%">Inn Price:</td><td><input type="text" name="innprice" size="5" maxlength="10" value="{{innprice}}" /> gold</td></tr>
|
<tr><td width="20%">Inn Price:</td><td><input type="text" name="innprice" size="5" maxlength="10" value="{{innprice}}" /> gold</td></tr>
|
||||||
<tr><td width="20%">Map Price:</td><td><input type="text" name="mapprice" size="5" maxlength="10" value="{{mapprice}}" /> gold<br><span class="small">How much it costs to buy the map to this town.</span></td></tr>
|
<tr><td width="20%">Map Price:</td><td><input type="text" name="mapprice" size="5" maxlength="10" value="{{mapprice}}" /> gold<br /><span class="small">How much it costs to buy the map to this town.</span></td></tr>
|
||||||
<tr><td width="20%">Travel Points:</td><td><input type="text" name="travelpoints" size="5" maxlength="10" value="{{travelpoints}}" /><br><span class="small">How many TP are consumed when travelling to this town.</span></td></tr>
|
<tr><td width="20%">Travel Points:</td><td><input type="text" name="travelpoints" size="5" maxlength="10" value="{{travelpoints}}" /><br /><span class="small">How many TP are consumed when travelling to this town.</span></td></tr>
|
||||||
<tr><td width="20%">Items List:</td><td><input type="text" name="itemslist" size="30" maxlength="200" value="{{itemslist}}" /><br><span class="small">Comma-separated list of item ID numbers available for purchase at this town. (Example: <span class="highlight">1,2,3,6,9,10,13,20</span>)</span></td></tr>
|
<tr><td width="20%">Items List:</td><td><input type="text" name="itemslist" size="30" maxlength="200" value="{{itemslist}}" /><br /><span class="small">Comma-separated list of item ID numbers available for purchase at this town. (Example: <span class="highlight">1,2,3,6,9,10,13,20</span>)</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -328,13 +347,13 @@ function monsters() {
|
||||||
$statrow = mysql_fetch_array($statquery);
|
$statrow = mysql_fetch_array($statquery);
|
||||||
|
|
||||||
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "monsters");
|
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "monsters");
|
||||||
$page = "<b><u>Edit Monsters</u></b><br>";
|
$page = "<b><u>Edit Monsters</u></b><br />";
|
||||||
|
|
||||||
if (($controlrow["gamesize"]/5) != $statrow["level"]) {
|
if (($controlrow["gamesize"]/5) != $statrow["level"]) {
|
||||||
$page .= "<span class=\"highlight\">Note:</span> Your highest monster level does not match with your entered map size. Highest monster level should be ".($controlrow["gamesize"]/5).", yours is ".$statrow["level"].". Please fix this before opening the game to the public.<br><br>";
|
$page .= "<span class=\"highlight\">Note:</span> Your highest monster level does not match with your entered map size. Highest monster level should be ".($controlrow["gamesize"]/5).", yours is ".$statrow["level"].". Please fix this before opening the game to the public.<br /><br />";
|
||||||
} else { $page .= "Monster level and map size match. No further actions are required for map compatibility.<br><br>"; }
|
} else { $page .= "Monster level and map size match. No further actions are required for map compatibility.<br /><br />"; }
|
||||||
|
|
||||||
$page .= "Click an monster's name to edit it.<br><br><table width=\"50%\">\n";
|
$page .= "Click an monster's name to edit it.<br /><br /><table width=\"50%\">\n";
|
||||||
$count = 1;
|
$count = 1;
|
||||||
while ($row = mysql_fetch_array($query)) {
|
while ($row = mysql_fetch_array($query)) {
|
||||||
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=editmonster:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=editmonster:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
||||||
|
@ -353,25 +372,25 @@ function editmonster($id) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($name == "") { $errors++; $errorlist .= "Name is required.<br>"; }
|
if ($name == "") { $errors++; $errorlist .= "Name is required.<br />"; }
|
||||||
if ($maxhp == "") { $errors++; $errorlist .= "Max HP is required.<br>"; }
|
if ($maxhp == "") { $errors++; $errorlist .= "Max HP is required.<br />"; }
|
||||||
if (!is_numeric($maxhp)) { $errors++; $errorlist .= "Max HP must be a number.<br>"; }
|
if (!is_numeric($maxhp)) { $errors++; $errorlist .= "Max HP must be a number.<br />"; }
|
||||||
if ($maxdam == "") { $errors++; $errorlist .= "Max Damage is required.<br>"; }
|
if ($maxdam == "") { $errors++; $errorlist .= "Max Damage is required.<br />"; }
|
||||||
if (!is_numeric($maxdam)) { $errors++; $errorlist .= "Max Damage must be a number.<br>"; }
|
if (!is_numeric($maxdam)) { $errors++; $errorlist .= "Max Damage must be a number.<br />"; }
|
||||||
if ($armor == "") { $errors++; $errorlist .= "Armor is required.<br>"; }
|
if ($armor == "") { $errors++; $errorlist .= "Armor is required.<br />"; }
|
||||||
if (!is_numeric($armor)) { $errors++; $errorlist .= "Armor must be a number.<br>"; }
|
if (!is_numeric($armor)) { $errors++; $errorlist .= "Armor must be a number.<br />"; }
|
||||||
if ($level == "") { $errors++; $errorlist .= "Monster Level is required.<br>"; }
|
if ($level == "") { $errors++; $errorlist .= "Monster Level is required.<br />"; }
|
||||||
if (!is_numeric($level)) { $errors++; $errorlist .= "Monster Level must be a number.<br>"; }
|
if (!is_numeric($level)) { $errors++; $errorlist .= "Monster Level must be a number.<br />"; }
|
||||||
if ($maxexp == "") { $errors++; $errorlist .= "Max Exp is required.<br>"; }
|
if ($maxexp == "") { $errors++; $errorlist .= "Max Exp is required.<br />"; }
|
||||||
if (!is_numeric($maxexp)) { $errors++; $errorlist .= "Max Exp must be a number.<br>"; }
|
if (!is_numeric($maxexp)) { $errors++; $errorlist .= "Max Exp must be a number.<br />"; }
|
||||||
if ($maxgold == "") { $errors++; $errorlist .= "Max Gold is required.<br>"; }
|
if ($maxgold == "") { $errors++; $errorlist .= "Max Gold is required.<br />"; }
|
||||||
if (!is_numeric($maxgold)) { $errors++; $errorlist .= "Max Gold must be a number.<br>"; }
|
if (!is_numeric($maxgold)) { $errors++; $errorlist .= "Max Gold must be a number.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("UPDATE {{table}} SET name='$name',maxhp='$maxhp',maxdam='$maxdam',armor='$armor',level='$level',maxexp='$maxexp',maxgold='$maxgold',immune='$immune' WHERE id='$id' LIMIT 1", "monsters");
|
$query = doquery("UPDATE {{table}} SET name='$name',maxhp='$maxhp',maxdam='$maxdam',armor='$armor',level='$level',maxexp='$maxexp',maxgold='$maxgold',immune='$immune' WHERE id='$id' LIMIT 1", "monsters");
|
||||||
admindisplay("Monster updated.","Edit monsters");
|
admindisplay("Monster updated.","Edit monsters");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit monsters");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit monsters");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -381,18 +400,18 @@ function editmonster($id) {
|
||||||
$row = mysql_fetch_array($query);
|
$row = mysql_fetch_array($query);
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Monsters</u></b><br><br>
|
<b><u>Edit Monsters</u></b><br /><br />
|
||||||
<form action="admin.php?do=editmonster:$id" method="post">
|
<form action="admin.php?do=editmonster:$id" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
||||||
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
||||||
<tr><td width="20%">Max Hit Points:</td><td><input type="text" name="maxhp" size="5" maxlength="10" value="{{maxhp}}" /></td></tr>
|
<tr><td width="20%">Max Hit Points:</td><td><input type="text" name="maxhp" size="5" maxlength="10" value="{{maxhp}}" /></td></tr>
|
||||||
<tr><td width="20%">Max Damage:</td><td><input type="text" name="maxdam" size="5" maxlength="10" value="{{maxdam}}" /><br><span class="small">Compares to player's attackpower.</span></td></tr>
|
<tr><td width="20%">Max Damage:</td><td><input type="text" name="maxdam" size="5" maxlength="10" value="{{maxdam}}" /><br /><span class="small">Compares to player's attackpower.</span></td></tr>
|
||||||
<tr><td width="20%">Armor:</td><td><input type="text" name="armor" size="5" maxlength="10" value="{{armor}}" /><br><span class="small">Compares to player's defensepower.</span></td></tr>
|
<tr><td width="20%">Armor:</td><td><input type="text" name="armor" size="5" maxlength="10" value="{{armor}}" /><br /><span class="small">Compares to player's defensepower.</span></td></tr>
|
||||||
<tr><td width="20%">Monster Level:</td><td><input type="text" name="level" size="5" maxlength="10" value="{{level}}" /><br><span class="small">Determines spawn location and item drops.</span></td></tr>
|
<tr><td width="20%">Monster Level:</td><td><input type="text" name="level" size="5" maxlength="10" value="{{level}}" /><br /><span class="small">Determines spawn location and item drops.</span></td></tr>
|
||||||
<tr><td width="20%">Max Experience:</td><td><input type="text" name="maxexp" size="5" maxlength="10" value="{{maxexp}}" /><br><span class="small">Max experience gained from defeating monster.</span></td></tr>
|
<tr><td width="20%">Max Experience:</td><td><input type="text" name="maxexp" size="5" maxlength="10" value="{{maxexp}}" /><br /><span class="small">Max experience gained from defeating monster.</span></td></tr>
|
||||||
<tr><td width="20%">Max Gold:</td><td><input type="text" name="maxgold" size="5" maxlength="10" value="{{maxgold}}" /><br><span class="small">Max gold gained from defeating monster.</span></td></tr>
|
<tr><td width="20%">Max Gold:</td><td><input type="text" name="maxgold" size="5" maxlength="10" value="{{maxgold}}" /><br /><span class="small">Max gold gained from defeating monster.</span></td></tr>
|
||||||
<tr><td width="20%">Immunity:</td><td><select name="immune"><option value="0" {{immune0select}}>None</option><option value="1" {{immune1select}}>Hurt Spells</option><option value="2" {{immune2select}}>Hurt & Sleep Spells</option></select><br><span class="small">Some monsters may not be hurt by certain spells.</span></td></tr>
|
<tr><td width="20%">Immunity:</td><td><select name="immune"><option value="0" {{immune0select}}>None</option><option value="1" {{immune1select}}>Hurt Spells</option><option value="2" {{immune2select}}>Hurt & Sleep Spells</option></select><br /><span class="small">Some monsters may not be hurt by certain spells.</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -410,7 +429,7 @@ END;
|
||||||
function spells() {
|
function spells() {
|
||||||
|
|
||||||
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "spells");
|
$query = doquery("SELECT id,name FROM {{table}} ORDER BY id", "spells");
|
||||||
$page = "<b><u>Edit Spells</u></b><br>Click an spell's name to edit it.<br><br><table width=\"50%\">\n";
|
$page = "<b><u>Edit Spells</u></b><br />Click an spell's name to edit it.<br /><br /><table width=\"50%\">\n";
|
||||||
$count = 1;
|
$count = 1;
|
||||||
while ($row = mysql_fetch_array($query)) {
|
while ($row = mysql_fetch_array($query)) {
|
||||||
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=editspell:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=editspell:".$row["id"]."\">".$row["name"]."</a></td></tr>\n"; $count = 2; }
|
||||||
|
@ -429,17 +448,17 @@ function editspell($id) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($name == "") { $errors++; $errorlist .= "Name is required.<br>"; }
|
if ($name == "") { $errors++; $errorlist .= "Name is required.<br />"; }
|
||||||
if ($mp == "") { $errors++; $errorlist .= "MP is required.<br>"; }
|
if ($mp == "") { $errors++; $errorlist .= "MP is required.<br />"; }
|
||||||
if (!is_numeric($mp)) { $errors++; $errorlist .= "MP must be a number.<br>"; }
|
if (!is_numeric($mp)) { $errors++; $errorlist .= "MP must be a number.<br />"; }
|
||||||
if ($attribute == "") { $errors++; $errorlist .= "Attribute is required.<br>"; }
|
if ($attribute == "") { $errors++; $errorlist .= "Attribute is required.<br />"; }
|
||||||
if (!is_numeric($attribute)) { $errors++; $errorlist .= "Attribute must be a number.<br>"; }
|
if (!is_numeric($attribute)) { $errors++; $errorlist .= "Attribute must be a number.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("UPDATE {{table}} SET name='$name',mp='$mp',attribute='$attribute',type='$type' WHERE id='$id' LIMIT 1", "spells");
|
$query = doquery("UPDATE {{table}} SET name='$name',mp='$mp',attribute='$attribute',type='$type' WHERE id='$id' LIMIT 1", "spells");
|
||||||
admindisplay("Spell updated.","Edit Spells");
|
admindisplay("Spell updated.","Edit Spells");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit Spells");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit Spells");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -449,14 +468,14 @@ function editspell($id) {
|
||||||
$row = mysql_fetch_array($query);
|
$row = mysql_fetch_array($query);
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Spells</u></b><br><br>
|
<b><u>Edit Spells</u></b><br /><br />
|
||||||
<form action="admin.php?do=editspell:$id" method="post">
|
<form action="admin.php?do=editspell:$id" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
||||||
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
<tr><td width="20%">Name:</td><td><input type="text" name="name" size="30" maxlength="30" value="{{name}}" /></td></tr>
|
||||||
<tr><td width="20%">Magic Points:</td><td><input type="text" name="mp" size="5" maxlength="10" value="{{mp}}" /><br><span class="small">MP required to cast spell.</span></td></tr>
|
<tr><td width="20%">Magic Points:</td><td><input type="text" name="mp" size="5" maxlength="10" value="{{mp}}" /><br /><span class="small">MP required to cast spell.</span></td></tr>
|
||||||
<tr><td width="20%">Attribute:</td><td><input type="text" name="attribute" size="5" maxlength="10" value="{{attribute}}" /><br><span class="small">Numeric value of the spell's effect. Ties with type, below.</span></td></tr>
|
<tr><td width="20%">Attribute:</td><td><input type="text" name="attribute" size="5" maxlength="10" value="{{attribute}}" /><br /><span class="small">Numeric value of the spell's effect. Ties with type, below.</span></td></tr>
|
||||||
<tr><td width="20%">Type:</td><td><select name="type"><option value="1" {{type1select}}>Heal</option><option value="2" {{type2select}}>Hurt</option><option value="3" {{type3select}}>Sleep</option><option value="4" {{type4select}}>Uber Attack</option><option value="5" {{type5select}}>Uber Defense</option></select><br><span class="small">- Heal gives player back [attribute] hit points.<br>- Hurt deals [attribute] damage to monster.<br>- Sleep keeps monster from attacking ([attribute] is monster's chance out of 15 to stay asleep each turn).<br>- Uber Attack increases total attack damage by [attribute] percent.<br>- Uber Defense increases total defense from attack by [attribute] percent.</span></td></tr>
|
<tr><td width="20%">Type:</td><td><select name="type"><option value="1" {{type1select}}>Heal</option><option value="2" {{type2select}}>Hurt</option><option value="3" {{type3select}}>Sleep</option><option value="4" {{type4select}}>Uber Attack</option><option value="5" {{type5select}}>Uber Defense</option></select><br /><span class="small">- Heal gives player back [attribute] hit points.<br />- Hurt deals [attribute] damage to monster.<br />- Sleep keeps monster from attacking ([attribute] is monster's chance out of 15 to stay asleep each turn).<br />- Uber Attack increases total attack damage by [attribute] percent.<br />- Uber Defense increases total defense from attack by [attribute] percent.</span></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -484,7 +503,7 @@ function levels() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Levels</u></b><br>Select a level number from the dropdown box to edit it.<br><br>
|
<b><u>Edit Levels</u></b><br />Select a level number from the dropdown box to edit it.<br /><br />
|
||||||
<form action="admin.php?do=editlevel" method="post">
|
<form action="admin.php?do=editlevel" method="post">
|
||||||
<select name="level">
|
<select name="level">
|
||||||
$options
|
$options
|
||||||
|
@ -507,50 +526,50 @@ function editlevel() {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($_POST["one_exp"] == "") { $errors++; $errorlist .= "Class 1 Experience is required.<br>"; }
|
if ($_POST["one_exp"] == "") { $errors++; $errorlist .= "Class 1 Experience is required.<br />"; }
|
||||||
if ($_POST["one_hp"] == "") { $errors++; $errorlist .= "Class 1 HP is required.<br>"; }
|
if ($_POST["one_hp"] == "") { $errors++; $errorlist .= "Class 1 HP is required.<br />"; }
|
||||||
if ($_POST["one_mp"] == "") { $errors++; $errorlist .= "Class 1 MP is required.<br>"; }
|
if ($_POST["one_mp"] == "") { $errors++; $errorlist .= "Class 1 MP is required.<br />"; }
|
||||||
if ($_POST["one_tp"] == "") { $errors++; $errorlist .= "Class 1 TP is required.<br>"; }
|
if ($_POST["one_tp"] == "") { $errors++; $errorlist .= "Class 1 TP is required.<br />"; }
|
||||||
if ($_POST["one_strength"] == "") { $errors++; $errorlist .= "Class 1 Strength is required.<br>"; }
|
if ($_POST["one_strength"] == "") { $errors++; $errorlist .= "Class 1 Strength is required.<br />"; }
|
||||||
if ($_POST["one_dexterity"] == "") { $errors++; $errorlist .= "Class 1 Dexterity is required.<br>"; }
|
if ($_POST["one_dexterity"] == "") { $errors++; $errorlist .= "Class 1 Dexterity is required.<br />"; }
|
||||||
if ($_POST["one_spells"] == "") { $errors++; $errorlist .= "Class 1 Spells is required.<br>"; }
|
if ($_POST["one_spells"] == "") { $errors++; $errorlist .= "Class 1 Spells is required.<br />"; }
|
||||||
if (!is_numeric($_POST["one_exp"])) { $errors++; $errorlist .= "Class 1 Experience must be a number.<br>"; }
|
if (!is_numeric($_POST["one_exp"])) { $errors++; $errorlist .= "Class 1 Experience must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["one_hp"])) { $errors++; $errorlist .= "Class 1 HP must be a number.<br>"; }
|
if (!is_numeric($_POST["one_hp"])) { $errors++; $errorlist .= "Class 1 HP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["one_mp"])) { $errors++; $errorlist .= "Class 1 MP must be a number.<br>"; }
|
if (!is_numeric($_POST["one_mp"])) { $errors++; $errorlist .= "Class 1 MP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["one_tp"])) { $errors++; $errorlist .= "Class 1 TP must be a number.<br>"; }
|
if (!is_numeric($_POST["one_tp"])) { $errors++; $errorlist .= "Class 1 TP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["one_strength"])) { $errors++; $errorlist .= "Class 1 Strength must be a number.<br>"; }
|
if (!is_numeric($_POST["one_strength"])) { $errors++; $errorlist .= "Class 1 Strength must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["one_dexterity"])) { $errors++; $errorlist .= "Class 1 Dexterity must be a number.<br>"; }
|
if (!is_numeric($_POST["one_dexterity"])) { $errors++; $errorlist .= "Class 1 Dexterity must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["one_spells"])) { $errors++; $errorlist .= "Class 1 Spells must be a number.<br>"; }
|
if (!is_numeric($_POST["one_spells"])) { $errors++; $errorlist .= "Class 1 Spells must be a number.<br />"; }
|
||||||
|
|
||||||
if ($_POST["two_exp"] == "") { $errors++; $errorlist .= "Class 2 Experience is required.<br>"; }
|
if ($_POST["two_exp"] == "") { $errors++; $errorlist .= "Class 2 Experience is required.<br />"; }
|
||||||
if ($_POST["two_hp"] == "") { $errors++; $errorlist .= "Class 2 HP is required.<br>"; }
|
if ($_POST["two_hp"] == "") { $errors++; $errorlist .= "Class 2 HP is required.<br />"; }
|
||||||
if ($_POST["two_mp"] == "") { $errors++; $errorlist .= "Class 2 MP is required.<br>"; }
|
if ($_POST["two_mp"] == "") { $errors++; $errorlist .= "Class 2 MP is required.<br />"; }
|
||||||
if ($_POST["two_tp"] == "") { $errors++; $errorlist .= "Class 2 TP is required.<br>"; }
|
if ($_POST["two_tp"] == "") { $errors++; $errorlist .= "Class 2 TP is required.<br />"; }
|
||||||
if ($_POST["two_strength"] == "") { $errors++; $errorlist .= "Class 2 Strength is required.<br>"; }
|
if ($_POST["two_strength"] == "") { $errors++; $errorlist .= "Class 2 Strength is required.<br />"; }
|
||||||
if ($_POST["two_dexterity"] == "") { $errors++; $errorlist .= "Class 2 Dexterity is required.<br>"; }
|
if ($_POST["two_dexterity"] == "") { $errors++; $errorlist .= "Class 2 Dexterity is required.<br />"; }
|
||||||
if ($_POST["two_spells"] == "") { $errors++; $errorlist .= "Class 2 Spells is required.<br>"; }
|
if ($_POST["two_spells"] == "") { $errors++; $errorlist .= "Class 2 Spells is required.<br />"; }
|
||||||
if (!is_numeric($_POST["two_exp"])) { $errors++; $errorlist .= "Class 2 Experience must be a number.<br>"; }
|
if (!is_numeric($_POST["two_exp"])) { $errors++; $errorlist .= "Class 2 Experience must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["two_hp"])) { $errors++; $errorlist .= "Class 2 HP must be a number.<br>"; }
|
if (!is_numeric($_POST["two_hp"])) { $errors++; $errorlist .= "Class 2 HP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["two_mp"])) { $errors++; $errorlist .= "Class 2 MP must be a number.<br>"; }
|
if (!is_numeric($_POST["two_mp"])) { $errors++; $errorlist .= "Class 2 MP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["two_tp"])) { $errors++; $errorlist .= "Class 2 TP must be a number.<br>"; }
|
if (!is_numeric($_POST["two_tp"])) { $errors++; $errorlist .= "Class 2 TP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["two_strength"])) { $errors++; $errorlist .= "Class 2 Strength must be a number.<br>"; }
|
if (!is_numeric($_POST["two_strength"])) { $errors++; $errorlist .= "Class 2 Strength must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["two_dexterity"])) { $errors++; $errorlist .= "Class 2 Dexterity must be a number.<br>"; }
|
if (!is_numeric($_POST["two_dexterity"])) { $errors++; $errorlist .= "Class 2 Dexterity must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["two_spells"])) { $errors++; $errorlist .= "Class 2 Spells must be a number.<br>"; }
|
if (!is_numeric($_POST["two_spells"])) { $errors++; $errorlist .= "Class 2 Spells must be a number.<br />"; }
|
||||||
|
|
||||||
if ($_POST["three_exp"] == "") { $errors++; $errorlist .= "Class 3 Experience is required.<br>"; }
|
if ($_POST["three_exp"] == "") { $errors++; $errorlist .= "Class 3 Experience is required.<br />"; }
|
||||||
if ($_POST["three_hp"] == "") { $errors++; $errorlist .= "Class 3 HP is required.<br>"; }
|
if ($_POST["three_hp"] == "") { $errors++; $errorlist .= "Class 3 HP is required.<br />"; }
|
||||||
if ($_POST["three_mp"] == "") { $errors++; $errorlist .= "Class 3 MP is required.<br>"; }
|
if ($_POST["three_mp"] == "") { $errors++; $errorlist .= "Class 3 MP is required.<br />"; }
|
||||||
if ($_POST["three_tp"] == "") { $errors++; $errorlist .= "Class 3 TP is required.<br>"; }
|
if ($_POST["three_tp"] == "") { $errors++; $errorlist .= "Class 3 TP is required.<br />"; }
|
||||||
if ($_POST["three_strength"] == "") { $errors++; $errorlist .= "Class 3 Strength is required.<br>"; }
|
if ($_POST["three_strength"] == "") { $errors++; $errorlist .= "Class 3 Strength is required.<br />"; }
|
||||||
if ($_POST["three_dexterity"] == "") { $errors++; $errorlist .= "Class 3 Dexterity is required.<br>"; }
|
if ($_POST["three_dexterity"] == "") { $errors++; $errorlist .= "Class 3 Dexterity is required.<br />"; }
|
||||||
if ($_POST["three_spells"] == "") { $errors++; $errorlist .= "Class 3 Spells is required.<br>"; }
|
if ($_POST["three_spells"] == "") { $errors++; $errorlist .= "Class 3 Spells is required.<br />"; }
|
||||||
if (!is_numeric($_POST["three_exp"])) { $errors++; $errorlist .= "Class 3 Experience must be a number.<br>"; }
|
if (!is_numeric($_POST["three_exp"])) { $errors++; $errorlist .= "Class 3 Experience must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["three_hp"])) { $errors++; $errorlist .= "Class 3 HP must be a number.<br>"; }
|
if (!is_numeric($_POST["three_hp"])) { $errors++; $errorlist .= "Class 3 HP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["three_mp"])) { $errors++; $errorlist .= "Class 3 MP must be a number.<br>"; }
|
if (!is_numeric($_POST["three_mp"])) { $errors++; $errorlist .= "Class 3 MP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["three_tp"])) { $errors++; $errorlist .= "Class 3 TP must be a number.<br>"; }
|
if (!is_numeric($_POST["three_tp"])) { $errors++; $errorlist .= "Class 3 TP must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["three_strength"])) { $errors++; $errorlist .= "Class 3 Strength must be a number.<br>"; }
|
if (!is_numeric($_POST["three_strength"])) { $errors++; $errorlist .= "Class 3 Strength must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["three_dexterity"])) { $errors++; $errorlist .= "Class 3 Dexterity must be a number.<br>"; }
|
if (!is_numeric($_POST["three_dexterity"])) { $errors++; $errorlist .= "Class 3 Dexterity must be a number.<br />"; }
|
||||||
if (!is_numeric($_POST["three_spells"])) { $errors++; $errorlist .= "Class 3 Spells must be a number.<br>"; }
|
if (!is_numeric($_POST["three_spells"])) { $errors++; $errorlist .= "Class 3 Spells must be a number.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$updatequery = <<<END
|
$updatequery = <<<END
|
||||||
|
@ -563,7 +582,7 @@ END;
|
||||||
$query = doquery($updatequery, "levels");
|
$query = doquery($updatequery, "levels");
|
||||||
admindisplay("Level updated.","Edit Levels");
|
admindisplay("Level updated.","Edit Levels");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit Spells");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit Spells");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -577,8 +596,8 @@ END;
|
||||||
$class3name = $controlrow["class3name"];
|
$class3name = $controlrow["class3name"];
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Edit Levels</u></b><br><br>
|
<b><u>Edit Levels</u></b><br /><br />
|
||||||
Experience values for each level should be the cumulative total amount of experience up to this point. All other values should be only the new amount to add this level.<br><br>
|
Experience values for each level should be the cumulative total amount of experience up to this point. All other values should be only the new amount to add this level.<br /><br />
|
||||||
<form action="admin.php?do=editlevel" method="post">
|
<form action="admin.php?do=editlevel" method="post">
|
||||||
<input type="hidden" name="level" value="$id" />
|
<input type="hidden" name="level" value="$id" />
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
|
@ -626,7 +645,7 @@ END;
|
||||||
function users() {
|
function users() {
|
||||||
|
|
||||||
$query = doquery("SELECT id,username FROM {{table}} ORDER BY id", "users");
|
$query = doquery("SELECT id,username FROM {{table}} ORDER BY id", "users");
|
||||||
$page = "<b><u>Edit Users</u></b><br>Click a username to edit the account.<br><br><table width=\"50%\">\n";
|
$page = "<b><u>Edit Users</u></b><br />Click a username to edit the account.<br /><br /><table width=\"50%\">\n";
|
||||||
$count = 1;
|
$count = 1;
|
||||||
while ($row = mysql_fetch_array($query)) {
|
while ($row = mysql_fetch_array($query)) {
|
||||||
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=edituser:".$row["id"]."\">".$row["username"]."</a></td></tr>\n"; $count = 2; }
|
if ($count == 1) { $page .= "<tr><td width=\"8%\" style=\"background-color: #eeeeee;\">".$row["id"]."</td><td style=\"background-color: #eeeeee;\"><a href=\"admin.php?do=edituser:".$row["id"]."\">".$row["username"]."</a></td></tr>\n"; $count = 2; }
|
||||||
|
@ -645,97 +664,100 @@ function edituser($id) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($email == "") { $errors++; $errorlist .= "Email is required.<br>"; }
|
if ($email == "") { $errors++; $errorlist .= "Email is required.<br />"; }
|
||||||
if ($verify == "") { $errors++; $errorlist .= "Verify is required.<br>"; }
|
if ($verify == "") { $errors++; $errorlist .= "Verify is required.<br />"; }
|
||||||
if ($authlevel == "") { $errors++; $errorlist .= "Auth Level is required.<br>"; }
|
if ($charname == "") { $errors++; $errorlist .= "Character Name is required.<br />"; }
|
||||||
if ($latitude == "") { $errors++; $errorlist .= "Latitude is required.<br>"; }
|
if ($authlevel == "") { $errors++; $errorlist .= "Auth Level is required.<br />"; }
|
||||||
if ($longitude == "") { $errors++; $errorlist .= "Longitude is required.<br>"; }
|
if ($latitude == "") { $errors++; $errorlist .= "Latitude is required.<br />"; }
|
||||||
if ($charclass == "") { $errors++; $errorlist .= "Character Class is required.<br>"; }
|
if ($longitude == "") { $errors++; $errorlist .= "Longitude is required.<br />"; }
|
||||||
if ($currentaction == "") { $errors++; $errorlist .= "Current Action is required.<br>"; }
|
if ($difficulty == "") { $errors++; $errorlist .= "Difficulty is required.<br />"; }
|
||||||
if ($currentfight == "") { $errors++; $errorlist .= "Current Fight is required.<br>"; }
|
if ($charclass == "") { $errors++; $errorlist .= "Character Class is required.<br />"; }
|
||||||
|
if ($currentaction == "") { $errors++; $errorlist .= "Current Action is required.<br />"; }
|
||||||
|
if ($currentfight == "") { $errors++; $errorlist .= "Current Fight is required.<br />"; }
|
||||||
|
|
||||||
if ($currentmonster == "") { $errors++; $errorlist .= "Current Monster is required.<br>"; }
|
if ($currentmonster == "") { $errors++; $errorlist .= "Current Monster is required.<br />"; }
|
||||||
if ($currentmonsterhp == "") { $errors++; $errorlist .= "Current Monster HP is required.<br>"; }
|
if ($currentmonsterhp == "") { $errors++; $errorlist .= "Current Monster HP is required.<br />"; }
|
||||||
if ($currentmonstersleep == "") { $errors++; $errorlist .= "Current Monster Sleep is required.<br>"; }
|
if ($currentmonstersleep == "") { $errors++; $errorlist .= "Current Monster Sleep is required.<br />"; }
|
||||||
if ($currentmonsterimmune == "") { $errors++; $errorlist .= "Current Monster Immune is required.<br>"; }
|
if ($currentmonsterimmune == "") { $errors++; $errorlist .= "Current Monster Immune is required.<br />"; }
|
||||||
if ($currentuberdamage == "") { $errors++; $errorlist .= "Current Uber Damage is required.<br>"; }
|
if ($currentuberdamage == "") { $errors++; $errorlist .= "Current Uber Damage is required.<br />"; }
|
||||||
if ($currentuberdefense == "") { $errors++; $errorlist .= "Current Uber Defense is required.<br>"; }
|
if ($currentuberdefense == "") { $errors++; $errorlist .= "Current Uber Defense is required.<br />"; }
|
||||||
if ($currenthp == "") { $errors++; $errorlist .= "Current HP is required.<br>"; }
|
if ($currenthp == "") { $errors++; $errorlist .= "Current HP is required.<br />"; }
|
||||||
if ($currentmp == "") { $errors++; $errorlist .= "Current MP is required.<br>"; }
|
if ($currentmp == "") { $errors++; $errorlist .= "Current MP is required.<br />"; }
|
||||||
if ($currenttp == "") { $errors++; $errorlist .= "Current TP is required.<br>"; }
|
if ($currenttp == "") { $errors++; $errorlist .= "Current TP is required.<br />"; }
|
||||||
if ($maxhp == "") { $errors++; $errorlist .= "Max HP is required.<br>"; }
|
if ($maxhp == "") { $errors++; $errorlist .= "Max HP is required.<br />"; }
|
||||||
|
|
||||||
if ($maxmp == "") { $errors++; $errorlist .= "Max MP is required.<br>"; }
|
if ($maxmp == "") { $errors++; $errorlist .= "Max MP is required.<br />"; }
|
||||||
if ($maxtp == "") { $errors++; $errorlist .= "Max TP is required.<br>"; }
|
if ($maxtp == "") { $errors++; $errorlist .= "Max TP is required.<br />"; }
|
||||||
if ($level == "") { $errors++; $errorlist .= "Level is required.<br>"; }
|
if ($level == "") { $errors++; $errorlist .= "Level is required.<br />"; }
|
||||||
if ($gold == "") { $errors++; $errorlist .= "Gold is required.<br>"; }
|
if ($gold == "") { $errors++; $errorlist .= "Gold is required.<br />"; }
|
||||||
if ($experience == "") { $errors++; $errorlist .= "Experience is required.<br>"; }
|
if ($experience == "") { $errors++; $errorlist .= "Experience is required.<br />"; }
|
||||||
if ($goldbonus == "") { $errors++; $errorlist .= "Gold Bonus is required.<br>"; }
|
if ($goldbonus == "") { $errors++; $errorlist .= "Gold Bonus is required.<br />"; }
|
||||||
if ($expbonus == "") { $errors++; $errorlist .= "Experience Bonus is required.<br>"; }
|
if ($expbonus == "") { $errors++; $errorlist .= "Experience Bonus is required.<br />"; }
|
||||||
if ($strength == "") { $errors++; $errorlist .= "Strength is required.<br>"; }
|
if ($strength == "") { $errors++; $errorlist .= "Strength is required.<br />"; }
|
||||||
if ($dexterity == "") { $errors++; $errorlist .= "Dexterity is required.<br>"; }
|
if ($dexterity == "") { $errors++; $errorlist .= "Dexterity is required.<br />"; }
|
||||||
if ($attackpower == "") { $errors++; $errorlist .= "Attack Power is required.<br>"; }
|
if ($attackpower == "") { $errors++; $errorlist .= "Attack Power is required.<br />"; }
|
||||||
|
|
||||||
if ($defensepower == "") { $errors++; $errorlist .= "Defense Power is required.<br>"; }
|
if ($defensepower == "") { $errors++; $errorlist .= "Defense Power is required.<br />"; }
|
||||||
if ($weaponid == "") { $errors++; $errorlist .= "Weapon ID is required.<br>"; }
|
if ($weaponid == "") { $errors++; $errorlist .= "Weapon ID is required.<br />"; }
|
||||||
if ($armorid == "") { $errors++; $errorlist .= "Armor ID is required.<br>"; }
|
if ($armorid == "") { $errors++; $errorlist .= "Armor ID is required.<br />"; }
|
||||||
if ($shieldid == "") { $errors++; $errorlist .= "Shield ID is required.<br>"; }
|
if ($shieldid == "") { $errors++; $errorlist .= "Shield ID is required.<br />"; }
|
||||||
if ($slot1id == "") { $errors++; $errorlist .= "Slot 1 ID is required.<br>"; }
|
if ($slot1id == "") { $errors++; $errorlist .= "Slot 1 ID is required.<br />"; }
|
||||||
if ($slot2id == "") { $errors++; $errorlist .= "Slot 2 ID is required.<br>"; }
|
if ($slot2id == "") { $errors++; $errorlist .= "Slot 2 ID is required.<br />"; }
|
||||||
if ($slot3id == "") { $errors++; $errorlist .= "Slot 3 ID is required.<br>"; }
|
if ($slot3id == "") { $errors++; $errorlist .= "Slot 3 ID is required.<br />"; }
|
||||||
if ($weaponname == "") { $errors++; $errorlist .= "Weapon Name is required.<br>"; }
|
if ($weaponname == "") { $errors++; $errorlist .= "Weapon Name is required.<br />"; }
|
||||||
if ($armorname == "") { $errors++; $errorlist .= "Armor Name is required.<br>"; }
|
if ($armorname == "") { $errors++; $errorlist .= "Armor Name is required.<br />"; }
|
||||||
if ($shieldname == "") { $errors++; $errorlist .= "Shield Name is required.<br>"; }
|
if ($shieldname == "") { $errors++; $errorlist .= "Shield Name is required.<br />"; }
|
||||||
|
|
||||||
if ($slot1name == "") { $errors++; $errorlist .= "Slot 1 Name is required.<br>"; }
|
if ($slot1name == "") { $errors++; $errorlist .= "Slot 1 Name is required.<br />"; }
|
||||||
if ($slot2name == "") { $errors++; $errorlist .= "Slot 2 Name is required.<br>"; }
|
if ($slot2name == "") { $errors++; $errorlist .= "Slot 2 Name is required.<br />"; }
|
||||||
if ($slot3name == "") { $errors++; $errorlist .= "Slot 3 Name is required.<br>"; }
|
if ($slot3name == "") { $errors++; $errorlist .= "Slot 3 Name is required.<br />"; }
|
||||||
if ($dropcode == "") { $errors++; $errorlist .= "Drop Code is required.<br>"; }
|
if ($dropcode == "") { $errors++; $errorlist .= "Drop Code is required.<br />"; }
|
||||||
if ($spells == "") { $errors++; $errorlist .= "Spells is required.<br>"; }
|
if ($spells == "") { $errors++; $errorlist .= "Spells is required.<br />"; }
|
||||||
if ($towns == "") { $errors++; $errorlist .= "Towns is required.<br>"; }
|
if ($towns == "") { $errors++; $errorlist .= "Towns is required.<br />"; }
|
||||||
|
|
||||||
if (!is_numeric($authlevel)) { $errors++; $errorlist .= "Auth Level must be a number.<br>"; }
|
if (!is_numeric($authlevel)) { $errors++; $errorlist .= "Auth Level must be a number.<br />"; }
|
||||||
if (!is_numeric($latitude)) { $errors++; $errorlist .= "Latitude must be a number.<br>"; }
|
if (!is_numeric($latitude)) { $errors++; $errorlist .= "Latitude must be a number.<br />"; }
|
||||||
if (!is_numeric($longitude)) { $errors++; $errorlist .= "Longitude must be a number.<br>"; }
|
if (!is_numeric($longitude)) { $errors++; $errorlist .= "Longitude must be a number.<br />"; }
|
||||||
if (!is_numeric($charclass)) { $errors++; $errorlist .= "Character Class must be a number.<br>"; }
|
if (!is_numeric($difficulty)) { $errors++; $errorlist .= "Difficulty must be a number.<br />"; }
|
||||||
if (!is_numeric($currentfight)) { $errors++; $errorlist .= "Current Fight must be a number.<br>"; }
|
if (!is_numeric($charclass)) { $errors++; $errorlist .= "Character Class must be a number.<br />"; }
|
||||||
if (!is_numeric($currentmonster)) { $errors++; $errorlist .= "Current Monster must be a number.<br>"; }
|
if (!is_numeric($currentfight)) { $errors++; $errorlist .= "Current Fight must be a number.<br />"; }
|
||||||
if (!is_numeric($currentmonsterhp)) { $errors++; $errorlist .= "Current Monster HP must be a number.<br>"; }
|
if (!is_numeric($currentmonster)) { $errors++; $errorlist .= "Current Monster must be a number.<br />"; }
|
||||||
if (!is_numeric($currentmonstersleep)) { $errors++; $errorlist .= "Current Monster Sleep must be a number.<br>"; }
|
if (!is_numeric($currentmonsterhp)) { $errors++; $errorlist .= "Current Monster HP must be a number.<br />"; }
|
||||||
|
if (!is_numeric($currentmonstersleep)) { $errors++; $errorlist .= "Current Monster Sleep must be a number.<br />"; }
|
||||||
|
|
||||||
if (!is_numeric($currentmonsterimmune)) { $errors++; $errorlist .= "Current Monster Immune must be a number.<br>"; }
|
if (!is_numeric($currentmonsterimmune)) { $errors++; $errorlist .= "Current Monster Immune must be a number.<br />"; }
|
||||||
if (!is_numeric($currentuberdamage)) { $errors++; $errorlist .= "Current Uber Damage must be a number.<br>"; }
|
if (!is_numeric($currentuberdamage)) { $errors++; $errorlist .= "Current Uber Damage must be a number.<br />"; }
|
||||||
if (!is_numeric($currentuberdefense)) { $errors++; $errorlist .= "Current Uber Defense must be a number.<br>"; }
|
if (!is_numeric($currentuberdefense)) { $errors++; $errorlist .= "Current Uber Defense must be a number.<br />"; }
|
||||||
if (!is_numeric($currenthp)) { $errors++; $errorlist .= "Current HP must be a number.<br>"; }
|
if (!is_numeric($currenthp)) { $errors++; $errorlist .= "Current HP must be a number.<br />"; }
|
||||||
if (!is_numeric($currentmp)) { $errors++; $errorlist .= "Current MP must be a number.<br>"; }
|
if (!is_numeric($currentmp)) { $errors++; $errorlist .= "Current MP must be a number.<br />"; }
|
||||||
if (!is_numeric($currenttp)) { $errors++; $errorlist .= "Current TP must be a number.<br>"; }
|
if (!is_numeric($currenttp)) { $errors++; $errorlist .= "Current TP must be a number.<br />"; }
|
||||||
if (!is_numeric($maxhp)) { $errors++; $errorlist .= "Max HP must be a number.<br>"; }
|
if (!is_numeric($maxhp)) { $errors++; $errorlist .= "Max HP must be a number.<br />"; }
|
||||||
if (!is_numeric($maxmp)) { $errors++; $errorlist .= "Max MP must be a number.<br>"; }
|
if (!is_numeric($maxmp)) { $errors++; $errorlist .= "Max MP must be a number.<br />"; }
|
||||||
if (!is_numeric($maxtp)) { $errors++; $errorlist .= "Max TP must be a number.<br>"; }
|
if (!is_numeric($maxtp)) { $errors++; $errorlist .= "Max TP must be a number.<br />"; }
|
||||||
if (!is_numeric($level)) { $errors++; $errorlist .= "Level must be a number.<br>"; }
|
if (!is_numeric($level)) { $errors++; $errorlist .= "Level must be a number.<br />"; }
|
||||||
|
|
||||||
if (!is_numeric($gold)) { $errors++; $errorlist .= "Gold must be a number.<br>"; }
|
if (!is_numeric($gold)) { $errors++; $errorlist .= "Gold must be a number.<br />"; }
|
||||||
if (!is_numeric($experience)) { $errors++; $errorlist .= "Experience must be a number.<br>"; }
|
if (!is_numeric($experience)) { $errors++; $errorlist .= "Experience must be a number.<br />"; }
|
||||||
if (!is_numeric($goldbonus)) { $errors++; $errorlist .= "Gold Bonus must be a number.<br>"; }
|
if (!is_numeric($goldbonus)) { $errors++; $errorlist .= "Gold Bonus must be a number.<br />"; }
|
||||||
if (!is_numeric($expbonus)) { $errors++; $errorlist .= "Experience Bonus must be a number.<br>"; }
|
if (!is_numeric($expbonus)) { $errors++; $errorlist .= "Experience Bonus must be a number.<br />"; }
|
||||||
if (!is_numeric($strength)) { $errors++; $errorlist .= "Strength must be a number.<br>"; }
|
if (!is_numeric($strength)) { $errors++; $errorlist .= "Strength must be a number.<br />"; }
|
||||||
if (!is_numeric($dexterity)) { $errors++; $errorlist .= "Dexterity must be a number.<br>"; }
|
if (!is_numeric($dexterity)) { $errors++; $errorlist .= "Dexterity must be a number.<br />"; }
|
||||||
if (!is_numeric($attackpower)) { $errors++; $errorlist .= "Attack Power must be a number.<br>"; }
|
if (!is_numeric($attackpower)) { $errors++; $errorlist .= "Attack Power must be a number.<br />"; }
|
||||||
if (!is_numeric($defensepower)) { $errors++; $errorlist .= "Defense Power must be a number.<br>"; }
|
if (!is_numeric($defensepower)) { $errors++; $errorlist .= "Defense Power must be a number.<br />"; }
|
||||||
if (!is_numeric($weaponid)) { $errors++; $errorlist .= "Weapon ID must be a number.<br>"; }
|
if (!is_numeric($weaponid)) { $errors++; $errorlist .= "Weapon ID must be a number.<br />"; }
|
||||||
if (!is_numeric($armorid)) { $errors++; $errorlist .= "Armor ID must be a number.<br>"; }
|
if (!is_numeric($armorid)) { $errors++; $errorlist .= "Armor ID must be a number.<br />"; }
|
||||||
|
|
||||||
if (!is_numeric($shieldid)) { $errors++; $errorlist .= "Shield ID must be a number.<br>"; }
|
if (!is_numeric($shieldid)) { $errors++; $errorlist .= "Shield ID must be a number.<br />"; }
|
||||||
if (!is_numeric($slot1id)) { $errors++; $errorlist .= "Slot 1 ID must be a number.<br>"; }
|
if (!is_numeric($slot1id)) { $errors++; $errorlist .= "Slot 1 ID must be a number.<br />"; }
|
||||||
if (!is_numeric($slot2id)) { $errors++; $errorlist .= "Slot 2 ID must be a number.<br>"; }
|
if (!is_numeric($slot2id)) { $errors++; $errorlist .= "Slot 2 ID must be a number.<br />"; }
|
||||||
if (!is_numeric($slot3id)) { $errors++; $errorlist .= "Slot 3 ID must be a number.<br>"; }
|
if (!is_numeric($slot3id)) { $errors++; $errorlist .= "Slot 3 ID must be a number.<br />"; }
|
||||||
if (!is_numeric($dropcode)) { $errors++; $errorlist .= "Drop Code must be a number.<br>"; }
|
if (!is_numeric($dropcode)) { $errors++; $errorlist .= "Drop Code must be a number.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$updatequery = <<<END
|
$updatequery = <<<END
|
||||||
UPDATE {{table}} SET
|
UPDATE {{table}} SET
|
||||||
email="$email", verify="$verify", authlevel="$authlevel", latitude="$latitude",
|
email="$email", verify="$verify", charname="$charname", authlevel="$authlevel", latitude="$latitude",
|
||||||
longitude="$longitude", charclass="$charclass", currentaction="$currentaction", currentfight="$currentfight",
|
longitude="$longitude", difficulty="$difficulty", charclass="$charclass", currentaction="$currentaction", currentfight="$currentfight",
|
||||||
currentmonster="$currentmonster", currentmonsterhp="$currentmonsterhp", currentmonstersleep="$currentmonstersleep", currentmonsterimmune="$currentmonsterimmune", currentuberdamage="$currentuberdamage",
|
currentmonster="$currentmonster", currentmonsterhp="$currentmonsterhp", currentmonstersleep="$currentmonstersleep", currentmonsterimmune="$currentmonsterimmune", currentuberdamage="$currentuberdamage",
|
||||||
currentuberdefense="$currentuberdefense", currenthp="$currenthp", currentmp="$currentmp", currenttp="$currenttp", maxhp="$maxhp",
|
currentuberdefense="$currentuberdefense", currenthp="$currenthp", currentmp="$currentmp", currenttp="$currenttp", maxhp="$maxhp",
|
||||||
maxmp="$maxmp", maxtp="$maxtp", level="$level", gold="$gold", experience="$experience",
|
maxmp="$maxmp", maxtp="$maxtp", level="$level", gold="$gold", experience="$experience",
|
||||||
|
@ -748,7 +770,7 @@ END;
|
||||||
$query = doquery($updatequery, "users");
|
$query = doquery($updatequery, "users");
|
||||||
admindisplay("User updated.","Edit Users");
|
admindisplay("User updated.","Edit Users");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Edit Users");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Edit Users");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -763,22 +785,24 @@ END;
|
||||||
$class2name = $controlrow["class2name"];
|
$class2name = $controlrow["class2name"];
|
||||||
$class3name = $controlrow["class3name"];
|
$class3name = $controlrow["class3name"];
|
||||||
|
|
||||||
$page = <<<HTML
|
$page = <<<END
|
||||||
<b><u>Edit Users</u></b><br><br>
|
<b><u>Edit Users</u></b><br /><br />
|
||||||
<form action="admin.php?do=edituser:$id" method="post">
|
<form action="admin.php?do=edituser:$id" method="post">
|
||||||
<table width="90%">
|
<table width="90%">
|
||||||
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
<tr><td width="20%">ID:</td><td>{{id}}</td></tr>
|
||||||
<tr><td width="20%">Username:</td><td>{{username}}</td></tr>
|
<tr><td width="20%">Username:</td><td>{{username}}</td></tr>
|
||||||
<tr><td width="20%">Email:</td><td><input type="text" name="email" size="30" maxlength="100" value="{{email}}" /></td></tr>
|
<tr><td width="20%">Email:</td><td><input type="text" name="email" size="30" maxlength="100" value="{{email}}" /></td></tr>
|
||||||
<tr><td width="20%">Verify:</td><td><input type="text" name="verify" size="30" maxlength="8" value="{{verify}}" /></td></tr>
|
<tr><td width="20%">Verify:</td><td><input type="text" name="verify" size="30" maxlength="8" value="{{verify}}" /></td></tr>
|
||||||
|
<tr><td width="20%">Character Name:</td><td><input type="text" name="charname" size="30" maxlength="30" value="{{charname}}" /></td></tr>
|
||||||
<tr><td width="20%">Register Date:</td><td>{{regdate}}</td></tr>
|
<tr><td width="20%">Register Date:</td><td>{{regdate}}</td></tr>
|
||||||
<tr><td width="20%">Last Online:</td><td>{{onlinetime}}</td></tr>
|
<tr><td width="20%">Last Online:</td><td>{{onlinetime}}</td></tr>
|
||||||
<tr><td width="20%">Auth Level:</td><td><select name="authlevel"><option value="0" {{auth0select}}>User</option><option value="1" {{auth1select}}>Admin</option><option value="2" {{auth2select}}>Blocked</option></select><br><span class="small">Set to "Blocked" to temporarily (or permanently) ban a user.</span></td></tr>
|
<tr><td width="20%">Auth Level:</td><td><select name="authlevel"><option value="0" {{auth0select}}>User</option><option value="1" {{auth1select}}>Admin</option><option value="2" {{auth2select}}>Blocked</option></select><br /><span class="small">Set to "Blocked" to temporarily (or permanently) ban a user.</span></td></tr>
|
||||||
|
|
||||||
<tr><td colspan="2" style="background-color:#cccccc;"> </td></tr>
|
<tr><td colspan="2" style="background-color:#cccccc;"> </td></tr>
|
||||||
|
|
||||||
<tr><td width="20%">Latitude:</td><td><input type="text" name="latitude" size="5" maxlength="6" value="{{latitude}}" /></td></tr>
|
<tr><td width="20%">Latitude:</td><td><input type="text" name="latitude" size="5" maxlength="6" value="{{latitude}}" /></td></tr>
|
||||||
<tr><td width="20%">Longitude:</td><td><input type="text" name="longitude" size="5" maxlength="6" value="{{longitude}}" /></td></tr>
|
<tr><td width="20%">Longitude:</td><td><input type="text" name="longitude" size="5" maxlength="6" value="{{longitude}}" /></td></tr>
|
||||||
|
<tr><td width="20%">Difficulty:</td><td><select name="difficulty"><option value="1" {{diff1select}}>$diff1name</option><option value="2" {{diff2select}}>$diff2name</option><option value="3" {{diff3select}}>$diff3name</option></select></td></tr>
|
||||||
<tr><td width="20%">Character Class:</td><td><select name="charclass"><option value="1" {{class1select}}>$class1name</option><option value="2" {{class2select}}>$class2name</option><option value="3" {{class3select}}>$class3name</option></select></td></tr>
|
<tr><td width="20%">Character Class:</td><td><select name="charclass"><option value="1" {{class1select}}>$class1name</option><option value="2" {{class2select}}>$class2name</option><option value="3" {{class3select}}>$class3name</option></select></td></tr>
|
||||||
|
|
||||||
<tr><td colspan="2" style="background-color:#cccccc;"> </td></tr>
|
<tr><td colspan="2" style="background-color:#cccccc;"> </td></tr>
|
||||||
|
@ -837,7 +861,7 @@ $page = <<<HTML
|
||||||
</table>
|
</table>
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
HTML;
|
END;
|
||||||
|
|
||||||
if ($row["authlevel"] == 0) { $row["auth0select"] = "selected=\"selected\" "; } else { $row["auth0select"] = ""; }
|
if ($row["authlevel"] == 0) { $row["auth0select"] = "selected=\"selected\" "; } else { $row["auth0select"] = ""; }
|
||||||
if ($row["authlevel"] == 1) { $row["auth1select"] = "selected=\"selected\" "; } else { $row["auth1select"] = ""; }
|
if ($row["authlevel"] == 1) { $row["auth1select"] = "selected=\"selected\" "; } else { $row["auth1select"] = ""; }
|
||||||
|
@ -845,6 +869,9 @@ HTML;
|
||||||
if ($row["charclass"] == 1) { $row["class1select"] = "selected=\"selected\" "; } else { $row["class1select"] = ""; }
|
if ($row["charclass"] == 1) { $row["class1select"] = "selected=\"selected\" "; } else { $row["class1select"] = ""; }
|
||||||
if ($row["charclass"] == 2) { $row["class2select"] = "selected=\"selected\" "; } else { $row["class2select"] = ""; }
|
if ($row["charclass"] == 2) { $row["class2select"] = "selected=\"selected\" "; } else { $row["class2select"] = ""; }
|
||||||
if ($row["charclass"] == 3) { $row["class3select"] = "selected=\"selected\" "; } else { $row["class3select"] = ""; }
|
if ($row["charclass"] == 3) { $row["class3select"] = "selected=\"selected\" "; } else { $row["class3select"] = ""; }
|
||||||
|
if ($row["difficulty"] == 1) { $row["diff1select"] = "selected=\"selected\" "; } else { $row["diff1select"] = ""; }
|
||||||
|
if ($row["difficulty"] == 2) { $row["diff2select"] = "selected=\"selected\" "; } else { $row["diff2select"] = ""; }
|
||||||
|
if ($row["difficulty"] == 3) { $row["diff3select"] = "selected=\"selected\" "; } else { $row["diff3select"] = ""; }
|
||||||
|
|
||||||
$page = parsetemplate($page, $row);
|
$page = parsetemplate($page, $row);
|
||||||
admindisplay($page, "Edit Users");
|
admindisplay($page, "Edit Users");
|
||||||
|
@ -858,22 +885,22 @@ function addnews() {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$errors = 0;
|
$errors = 0;
|
||||||
$errorlist = "";
|
$errorlist = "";
|
||||||
if ($content == "") { $errors++; $errorlist .= "Content is required.<br>"; }
|
if ($content == "") { $errors++; $errorlist .= "Content is required.<br />"; }
|
||||||
|
|
||||||
if ($errors == 0) {
|
if ($errors == 0) {
|
||||||
$query = doquery("INSERT INTO {{table}} SET id='',postdate=NOW(),content='$content'", "news");
|
$query = doquery("INSERT INTO {{table}} SET id='',postdate=NOW(),content='$content'", "news");
|
||||||
admindisplay("News post added.","Add News");
|
admindisplay("News post added.","Add News");
|
||||||
} else {
|
} else {
|
||||||
admindisplay("<b>Errors:</b><br><div style=\"color:red;\">$errorlist</div><br>Please go back and try again.", "Add News");
|
admindisplay("<b>Errors:</b><br /><div style=\"color:red;\">$errorlist</div><br />Please go back and try again.", "Add News");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$page = <<<END
|
$page = <<<END
|
||||||
<b><u>Add A News Post</u></b><br><br>
|
<b><u>Add A News Post</u></b><br /><br />
|
||||||
<form action="admin.php?do=news" method="post">
|
<form action="admin.php?do=news" method="post">
|
||||||
Type your post below and then click Submit to add it.<br>
|
Type your post below and then click Submit to add it.<br />
|
||||||
<textarea name="content" rows="5" cols="50"></textarea><br>
|
<textarea name="content" rows="5" cols="50"></textarea><br />
|
||||||
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
<input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" />
|
||||||
</form>
|
</form>
|
||||||
END;
|
END;
|
||||||
|
|
147
public/forum.php
147
public/forum.php
|
@ -1,111 +1,102 @@
|
||||||
<?php
|
<?php // forum.php :: Internal forums script for the game.
|
||||||
|
|
||||||
// forum.php :: Internal forums script for the game.
|
include('lib.php');
|
||||||
|
include('cookies.php');
|
||||||
if (!file_exists('../.installed')) redirect('install.php');
|
$link = opendb();
|
||||||
|
$userrow = checkcookies();
|
||||||
require_once '../src/lib.php';
|
if ($userrow == false) { display("The forum is for registered players only.", "Forum"); die(); }
|
||||||
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
$controlrow = get_control_row();
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
|
|
||||||
// Login (or verify) if not logged in.
|
|
||||||
if (($userrow = checkcookies()) === false) {
|
|
||||||
if (isset($_GET['do']) && $_GET['do'] === 'verify') {
|
|
||||||
header("Location: users.php?do=verify");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
header("Location: login.php?do=login");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close game.
|
// Close game.
|
||||||
if ((bool) $controlrow["gameopen"] === false) {
|
if ($controlrow["gameopen"] == 0) { display("The game is currently closed for maintanence. Please check back later.","Game Closed"); die(); }
|
||||||
display("The game is currently closed for maintanence. Please check back later.", "Game Closed");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Force verify if the user isn't verified yet.
|
// Force verify if the user isn't verified yet.
|
||||||
if ((bool) $controlrow["verifyemail"] && (bool) $userrow["verify"] === false) {
|
if ($controlrow["verifyemail"] == 1 && $userrow["verify"] != 1) { header("Location: users.php?do=verify"); die(); }
|
||||||
header("Location: users.php?do=verify");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Block user if he/she has been banned.
|
// Block user if he/she has been banned.
|
||||||
if ($userrow["authlevel"] === 2) {
|
if ($userrow["authlevel"] == 2) { die("Your account has been blocked. Please try back later."); }
|
||||||
exit("Your account has been blocked.");
|
|
||||||
}
|
|
||||||
|
|
||||||
$do = explode(':', $_GET['do'] ?? '');
|
if (isset($_GET["do"])) {
|
||||||
match ($do[0]) {
|
$do = explode(":",$_GET["do"]);
|
||||||
'thread' => showthread($do[1], $do[2]),
|
|
||||||
'new' => newthread(),
|
|
||||||
'reply' => reply(),
|
|
||||||
'list' => donothing($do[1]),
|
|
||||||
default => donothing()
|
|
||||||
};
|
|
||||||
|
|
||||||
function donothing($start = 0)
|
if ($do[0] == "thread") { showthread($do[1], $do[2]); }
|
||||||
{
|
elseif ($do[0] == "new") { newthread(); }
|
||||||
$query = db()->query('SELECT * FROM forum WHERE parent=0 ORDER BY newpostdate DESC LIMIT 20 OFFSET ?;', [20 * $start]);
|
elseif ($do[0] == "reply") { reply(); }
|
||||||
|
elseif ($do[0] == "list") { donothing($do[1]); }
|
||||||
|
|
||||||
|
} else { donothing(0); }
|
||||||
|
|
||||||
|
function donothing($start=0) {
|
||||||
|
|
||||||
|
$query = doquery("SELECT * FROM {{table}} WHERE parent='0' ORDER BY newpostdate DESC LIMIT 20", "forum");
|
||||||
$page = "<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table width=\"100%\" style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\"><tr><th colspan=\"3\" style=\"background-color:#dddddd;\"><center><a href=\"forum.php?do=new\">New Thread</a></center></th></tr><tr><th width=\"50%\" style=\"background-color:#dddddd;\">Thread</th><th width=\"10%\" style=\"background-color:#dddddd;\">Replies</th><th style=\"background-color:#dddddd;\">Last Post</th></tr>\n";
|
$page = "<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table width=\"100%\" style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\"><tr><th colspan=\"3\" style=\"background-color:#dddddd;\"><center><a href=\"forum.php?do=new\">New Thread</a></center></th></tr><tr><th width=\"50%\" style=\"background-color:#dddddd;\">Thread</th><th width=\"10%\" style=\"background-color:#dddddd;\">Replies</th><th style=\"background-color:#dddddd;\">Last Post</th></tr>\n";
|
||||||
|
$count = 1;
|
||||||
$hasRows = false;
|
if (mysql_num_rows($query) == 0) {
|
||||||
|
|
||||||
while ($row = $query->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$hasRows = true;
|
|
||||||
$page .= "<tr><td style=\"background-color:#ffffff;\"><a href=\"forum.php?do=thread:".$row["id"].":0\">".$row["title"]."</a></td><td style=\"background-color:#ffffff;\">".$row["replies"]."</td><td style=\"background-color:#ffffff;\">".$row["newpostdate"]."</td></tr>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$hasRows) {
|
|
||||||
$page .= "<tr><td style=\"background-color:#ffffff;\" colspan=\"3\"><b>No threads in forum.</b></td></tr>\n";
|
$page .= "<tr><td style=\"background-color:#ffffff;\" colspan=\"3\"><b>No threads in forum.</b></td></tr>\n";
|
||||||
|
} else {
|
||||||
|
while ($row = mysql_fetch_array($query)) {
|
||||||
|
if ($count == 1) {
|
||||||
|
$page .= "<tr><td style=\"background-color:#ffffff;\"><a href=\"forum.php?do=thread:".$row["id"].":0\">".$row["title"]."</a></td><td style=\"background-color:#ffffff;\">".$row["replies"]."</td><td style=\"background-color:#ffffff;\">".$row["newpostdate"]."</td></tr>\n";
|
||||||
|
$count = 2;
|
||||||
|
} else {
|
||||||
|
$page .= "<tr><td style=\"background-color:#eeeeee;\"><a href=\"forum.php?do=thread:".$row["id"].":0\">".$row["title"]."</a></td><td style=\"background-color:#eeeeee;\">".$row["replies"]."</td><td style=\"background-color:#eeeeee;\">".$row["newpostdate"]."</td></tr>\n";
|
||||||
|
$count = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$page .= "</table></td></tr></table>";
|
$page .= "</table></td></tr></table>";
|
||||||
|
|
||||||
display($page, "Forum");
|
display($page, "Forum");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function showthread($id, $start)
|
function showthread($id, $start) {
|
||||||
{
|
|
||||||
$posts = db()->query('SELECT * FROM forum WHERE id=? OR parent=? ORDER BY id LIMIT 15 OFFSET ?;', [$id, $id, $start * 15]);
|
|
||||||
$title = db()->query('SELECT title FROM forum WHERE id=? LIMIT 1;', [$id])->fetchArray(SQLITE3_ASSOC);
|
|
||||||
|
|
||||||
$page = "<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table width=\"100%\" style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\"><tr><td colspan=\"2\" style=\"background-color:#dddddd;\"><b><a href=\"forum.php\">Forum</a> :: ".$title['title']."</b></td></tr>\n";
|
$query = doquery("SELECT * FROM {{table}} WHERE id='$id' OR parent='$id' ORDER BY id LIMIT $start,15", "forum");
|
||||||
while ($row = $posts->fetchArray(SQLITE3_ASSOC)) {
|
$query2 = doquery("SELECT title FROM {{table}} WHERE id='$id' LIMIT 1", "forum");
|
||||||
$page .= "<tr><td width=\"25%\" style=\"background-color:#ffffff; vertical-align:top;\"><span class=\"small\"><b>".$row["author"]."</b><br><br>".prettyforumdate($row["postdate"])."</td><td style=\"background-color:#ffffff; vertical-align:top;\">".nl2br($row["content"])."</td></tr>\n";
|
$row2 = mysql_fetch_array($query2);
|
||||||
|
$page = "<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table width=\"100%\" style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\"><tr><td colspan=\"2\" style=\"background-color:#dddddd;\"><b><a href=\"forum.php\">Forum</a> :: ".$row2["title"]."</b></td></tr>\n";
|
||||||
|
$count = 1;
|
||||||
|
while ($row = mysql_fetch_array($query)) {
|
||||||
|
if ($count == 1) {
|
||||||
|
$page .= "<tr><td width=\"25%\" style=\"background-color:#ffffff; vertical-align:top;\"><span class=\"small\"><b>".$row["author"]."</b><br /><br />".prettyforumdate($row["postdate"])."</td><td style=\"background-color:#ffffff; vertical-align:top;\">".nl2br($row["content"])."</td></tr>\n";
|
||||||
|
$count = 2;
|
||||||
|
} else {
|
||||||
|
$page .= "<tr><td width=\"25%\" style=\"background-color:#eeeeee; vertical-align:top;\"><span class=\"small\"><b>".$row["author"]."</b><br /><br />".prettyforumdate($row["postdate"])."</td><td style=\"background-color:#eeeeee; vertical-align:top;\">".nl2br($row["content"])."</td></tr>\n";
|
||||||
|
$count = 1;
|
||||||
}
|
}
|
||||||
$page .= "</table></td></tr></table><br>";
|
}
|
||||||
$page .= "<table width=\"100%\"><tr><td><b>Reply To This Thread:</b><br><form action=\"forum.php?do=reply\" method=\"post\"><input type=\"hidden\" name=\"parent\" value=\"$id\" /><input type=\"hidden\" name=\"title\" value=\"Re: ".$title["title"]."\" /><textarea name=\"content\" rows=\"7\" cols=\"40\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"Submit\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /></form></td></tr></table>";
|
$page .= "</table></td></tr></table><br />";
|
||||||
|
$page .= "<table width=\"100%\"><tr><td><b>Reply To This Thread:</b><br /><form action=\"forum.php?do=reply\" method=\"post\"><input type=\"hidden\" name=\"parent\" value=\"$id\" /><input type=\"hidden\" name=\"title\" value=\"Re: ".$row2["title"]."\" /><textarea name=\"content\" rows=\"7\" cols=\"40\"></textarea><br /><input type=\"submit\" name=\"submit\" value=\"Submit\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /></form></td></tr></table>";
|
||||||
|
|
||||||
display($page, "Forum");
|
display($page, "Forum");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function reply()
|
function reply() {
|
||||||
{
|
|
||||||
global $userrow;
|
global $userrow;
|
||||||
|
extract($_POST);
|
||||||
|
$query = doquery("INSERT INTO {{table}} SET id='',postdate=NOW(),newpostdate=NOW(),author='".$userrow["charname"]."',parent='$parent',replies='0',title='$title',content='$content'", "forum");
|
||||||
|
$query2 = doquery("UPDATE {{table}} SET newpostdate=NOW(),replies=replies+1 WHERE id='$parent' LIMIT 1", "forum");
|
||||||
|
header("Location: forum.php?do=thread:$parent:0");
|
||||||
|
die();
|
||||||
|
|
||||||
$p = $_POST['parent'] ?? 0;
|
|
||||||
$t = trim($_POST['title'] ?? '');
|
|
||||||
$c = trim($_POST['content'] ?? '');
|
|
||||||
|
|
||||||
db()->query('INSERT INTO forum (author, title, content, parent) VALUES (?, ?, ?, ?);', [$userrow['username'], $t, $c, $p]);
|
|
||||||
db()->query('UPDATE forum SET newpostdate=CURRENT_TIMESTAMP, replies=replies + 1 WHERE id=?;', [$p]);
|
|
||||||
redirect("forum.php?do=thread:$p:0");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function newthread()
|
function newthread() {
|
||||||
{
|
|
||||||
global $userrow;
|
global $userrow;
|
||||||
|
|
||||||
if (isset($_POST["submit"])) {
|
if (isset($_POST["submit"])) {
|
||||||
extract($_POST);
|
extract($_POST);
|
||||||
$t = trim($_POST['title'] ?? '');
|
$query = doquery("INSERT INTO {{table}} SET id='',postdate=NOW(),newpostdate=NOW(),author='".$userrow["charname"]."',parent='0',replies='0',title='$title',content='$content'", "forum");
|
||||||
$c = trim($_POST['content'] ?? '');
|
header("Location: forum.php");
|
||||||
db()->query('INSERT INTO forum (author, title, content) VALUES (?, ?, ?);', [$userrow['username'], $t, $c]);
|
die();
|
||||||
redirect('forum.php');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$page = "<table width=\"100%\"><tr><td><b>Make A New Post:</b><br><br/ ><form action=\"forum.php?do=new\" method=\"post\">Title:<br><input type=\"text\" name=\"title\" size=\"50\" maxlength=\"50\" /><br><br>Message:<br><textarea name=\"content\" rows=\"7\" cols=\"40\"></textarea><br><br><input type=\"submit\" name=\"submit\" value=\"Submit\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /></form></td></tr></table>";
|
$page = "<table width=\"100%\"><tr><td><b>Make A New Post:</b><br /><br/ ><form action=\"forum.php?do=new\" method=\"post\">Title:<br /><input type=\"text\" name=\"title\" size=\"50\" maxlength=\"50\" /><br /><br />Message:<br /><textarea name=\"content\" rows=\"7\" cols=\"40\"></textarea><br /><br /><input type=\"submit\" name=\"submit\" value=\"Submit\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /></form></td></tr></table>";
|
||||||
display($page, "Forum");
|
display($page, "Forum");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
?>
|
818
public/help.php
818
public/help.php
|
@ -1,567 +1,323 @@
|
||||||
<?php
|
<?php
|
||||||
if (!file_exists('../.installed')) redirect('install.php');
|
include('lib.php');
|
||||||
|
$link = opendb();
|
||||||
require_once '../src/lib.php';
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
$controlrow = get_control_row();
|
ob_start("ob_gzhandler");
|
||||||
|
|
||||||
$page = $_GET['page'] ?? '';
|
|
||||||
if (!in_array($page, ['main', 'items', 'levels', 'monsters', 'spells'])) $page = 'main';
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||||
<html lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
<head>
|
<head>
|
||||||
<title><?= $controlrow["gamename"] ?> Help</title>
|
<title><? echo $controlrow["gamename"]; ?> Help</title>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body {
|
body {
|
||||||
background-image: url('images/background.jpg');
|
background-image: url(images/background.jpg);
|
||||||
color: black;
|
color: black;
|
||||||
font: 11px verdana;
|
font: 11px verdana;
|
||||||
}
|
}
|
||||||
table {
|
table {
|
||||||
border-style: none;
|
border-style: none;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
font: 11px verdana;
|
font: 11px verdana;
|
||||||
}
|
}
|
||||||
tr:nth-child(even) {
|
td {
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
border-style: none;
|
border-style: none;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
td.top {
|
td.top {
|
||||||
border-bottom: solid 2px black;
|
border-bottom: solid 2px black;
|
||||||
}
|
}
|
||||||
td.left {
|
td.left {
|
||||||
width: 150px;
|
width: 150px;
|
||||||
border-right: solid 2px black;
|
border-right: solid 2px black;
|
||||||
}
|
}
|
||||||
td.right {
|
td.right {
|
||||||
width: 150px;
|
width: 150px;
|
||||||
border-left: solid 2px black;
|
border-left: solid 2px black;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: #663300;
|
color: #663300;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
a:hover {
|
a:hover {
|
||||||
color: #330000;
|
color: #330000;
|
||||||
}
|
}
|
||||||
.small {
|
.small {
|
||||||
font: 10px verdana;
|
font: 10px verdana;
|
||||||
}
|
}
|
||||||
.highlight {
|
.highlight {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
.light {
|
.light {
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
.title {
|
.title {
|
||||||
border: solid 1px black;
|
border: solid 1px black;
|
||||||
background-color: #eeeeee;
|
background-color: #eeeeee;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
}
|
}
|
||||||
.copyright {
|
.copyright {
|
||||||
border: solid 1px black;
|
border: solid 1px black;
|
||||||
background-color: #eeeeee;
|
background-color: #eeeeee;
|
||||||
font: 10px verdana;
|
font: 10px verdana;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<a name="top"></a>
|
<a name="top"></a>
|
||||||
<h1><?= $controlrow["gamename"] ?> Help</h1>
|
<h1><? echo $controlrow["gamename"]; ?> Help</h1>
|
||||||
[ <a href="/index.php">Return to the game</a> ]
|
[ <a href="index.php">Return to the game</a> ]
|
||||||
|
|
||||||
<br><br><hr>
|
<br /><br /><hr />
|
||||||
|
|
||||||
<?php
|
<h3>Table of Contents</h3>
|
||||||
// @MAIN
|
<ul>
|
||||||
if ($page === 'main'):
|
<li /><a href="#intro">Introduction</a>
|
||||||
?>
|
<li /><a href="#classes">Character Classes</a>
|
||||||
<h3>Table of Contents</h3>
|
<li /><a href="#difficulties">Difficulty Levels</a>
|
||||||
<ul>
|
<li /><a href="#intown">Playing The Game: In Town</a>
|
||||||
<li /><a href="#intro">Introduction</a>
|
<li /><a href="#exploring">Playing The Game: Exploring & Fighting</a>
|
||||||
<li /><a href="#classes">Character Classes</a>
|
<li /><a href="#status">Playing The Game: Status Panels</a>
|
||||||
<li /><a href="#intown">Playing The Game: In Town</a>
|
<li /><a href="#items">Spoilers: Items & Drops</a>
|
||||||
<li /><a href="#exploring">Playing The Game: Exploring & Fighting</a>
|
<li /><a href="#monsters">Spoilers: Monsters</a>
|
||||||
<li /><a href="#status">Playing The Game: Status Panels</a>
|
<li /><a href="#spells">Spoilers: Spells</a>
|
||||||
<li /><a href="#items">Spoilers: Items & Drops</a>
|
<li /><a href="#levels">Spoilers: Levels</a>
|
||||||
<li /><a href="#monsters">Spoilers: Monsters</a>
|
<li /><a href="#credits">Credits</a>
|
||||||
<li /><a href="#spells">Spoilers: Spells</a>
|
</ul>
|
||||||
<li /><a href="#levels">Spoilers: Levels</a>
|
|
||||||
<li /><a href="#credits">Credits</a>
|
<hr />
|
||||||
</ul>
|
|
||||||
|
<h3><a name="intro"></a>Introduction</h3>
|
||||||
<hr>
|
Firstly, I'd like to say thank you for playing my game. The <i>Dragon Knight</i> game engine is the result of several months of
|
||||||
|
planning, coding and testing. The original idea was to create a web-based tribute to the NES game, <i>Dragon
|
||||||
<h3><a name="intro"></a>Introduction</h3>
|
Warrior</i>. In its current iteration, only the underlying fighting system really resembles that game, as almost
|
||||||
Firstly, I'd like to say thank you for playing my game. The <i>Dragon Knight</i> game engine is the result of several months of
|
everything else in DK has been made bigger and better. But you should still recognize bits and pieces as stemming
|
||||||
planning, coding and testing. The original idea was to create a web-based tribute to the NES game, <i>Dragon
|
from <i>Dragon Warrior</i> and other RPGs of old.<br /><br />
|
||||||
Warrior</i>. In its current iteration, only the underlying fighting system really resembles that game, as almost
|
This is the first game I've ever written, and it has definitely been a positive experience. It got difficult at
|
||||||
everything else in DK has been made bigger and better. But you should still recognize bits and pieces as stemming
|
times, admittedly, but it was still a lot of fun to write, and even more fun to play. And I hope to use this
|
||||||
from <i>Dragon Warrior</i> and other RPGs of old.<br><br>
|
experience so that if I ever want to create another game it will be even better than this one.<br /><br />
|
||||||
This is the first game I've ever written, and it has definitely been a positive experience. It got difficult at
|
If you are a site administrator, and would like to install a copy of DK on your own server, you may visit the
|
||||||
times, admittedly, but it was still a lot of fun to write, and even more fun to play. And I hope to use this
|
<a href="http://dragon.se7enet.com/dev.php" target="_new">development site</a> for <i>Dragon Knight</i>. This page
|
||||||
experience so that if I ever want to create another game it will be even better than this one.<br><br>
|
includes the downloadable game souce code, as well as some other resources that developers and administrators may
|
||||||
If you are a site administrator, and would like to install a copy of DK on your own server, you may visit the
|
find valuable.<br /><br />
|
||||||
<a href="http://dragon.se7enet.com/dev.php" target="_new">development site</a> for <i>Dragon Knight</i>. This page
|
Once again, thanks for playing!<br /><br />
|
||||||
includes the downloadable game souce code, as well as some other resources that developers and administrators may
|
<i>Jamin Seven</i><br />
|
||||||
find valuable.<br><br>
|
<i>Dragon Knight creator</i><br />
|
||||||
Once again, thanks for playing!<br><br>
|
<a href="http://www.se7enet.com" target="_new">My Homepage</a><br />
|
||||||
<i>Jamin Seven</i><br>
|
<a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight Homepage</a><br ><br />
|
||||||
<i>Dragon Knight creator</i><br>
|
[ <a href="#top">Top</a> ]
|
||||||
<a href="http://www.se7enet.com" target="_new">My Homepage</a><br>
|
|
||||||
<a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight Homepage</a><br ><br>
|
<br /><br /><hr />
|
||||||
[ <a href="#top">Top</a> ]
|
|
||||||
|
<h3><a name="classes"></a>Character Classes</h3>
|
||||||
<br><br><hr>
|
There are three character classes in the game. The main differences between the classes are what spells you get
|
||||||
|
access to, the speed with which you level up, and the amount of HP/MP/strength/dexterity you gain per level. Below
|
||||||
<h3><a name="classes"></a>Character Classes</h3>
|
is a basic outline of each of the character classes. For more detailed information about the characters, please
|
||||||
There are three character classes in the game. The main differences between the classes are what spells you get
|
view the Levels table at the bottom of this page. Also, note that the outline below refers to the stock class setup
|
||||||
access to, the speed with which you level up, and the amount of HP/MP/strength/dexterity you gain per level. Below
|
for the game. If your administrator has used his/her own class setup, this information may not be accurate.<br /><br />
|
||||||
is a basic outline of each of the character classes. For more detailed information about the characters, please
|
<b><? echo $controlrow["class1name"]; ?></b>
|
||||||
view the Levels table at the bottom of this page. Also, note that the outline below refers to the stock class setup
|
<ul>
|
||||||
for the game. If your administrator has used his/her own class setup, this information may not be accurate.<br><br>
|
<li />Fast level-ups
|
||||||
<b><?= $controlrow["class1name"] ?></b>
|
<li />High hit points
|
||||||
<ul>
|
<li />High magic points
|
||||||
<li>Fast level-ups</li>
|
<li />Low strength
|
||||||
<li>High hit points</li>
|
<li />Low dexterity
|
||||||
<li>High magic points</li>
|
<li />5 heal spells
|
||||||
<li>Low strength</li>
|
<li />5 hurt spells
|
||||||
<li>Low dexterity</li>
|
<li />3 sleep spells
|
||||||
<li>5 heal spells</li>
|
<li />3 +defense spells
|
||||||
<li>5 hurt spells</li>
|
<li />0 +attack spells
|
||||||
<li>3 sleep spells</li>
|
</ul>
|
||||||
<li>3 +defense spells</li>
|
<b><? echo $controlrow["class2name"]; ?></b>
|
||||||
<li>0 +attack spells</li>
|
<ul>
|
||||||
</ul>
|
<li />Medium level-ups
|
||||||
<b><?= $controlrow["class2name"] ?></b>
|
<li />Medium hit points
|
||||||
<ul>
|
<li />Low magic points
|
||||||
<li>Medium level-ups</li>
|
<li />High strength
|
||||||
<li>Medium hit points</li>
|
<li />Low dexterity
|
||||||
<li>Low magic points</li>
|
<li />3 heal spells
|
||||||
<li>High strength</li>
|
<li />3 hurt spells
|
||||||
<li>Low dexterity</li>
|
<li />2 sleep spells
|
||||||
<li>3 heal spells</li>
|
<li />3 +defense spells
|
||||||
<li>3 hurt spells</li>
|
<li />3 +attack spells
|
||||||
<li>2 sleep spells</li>
|
</ul>
|
||||||
<li>3 +defense spells</li>
|
<b><? echo $controlrow["class3name"]; ?></b>
|
||||||
<li>3 +attack spells</li>
|
<ul>
|
||||||
</ul>
|
<li />Slow level-ups
|
||||||
<b><?= $controlrow["class3name"] ?></b>
|
<li />Medium hit points
|
||||||
<ul>
|
<li />Medium magic points
|
||||||
<li>Slow level-ups</li>
|
<li />Low strength
|
||||||
<li>Medium hit points</li>
|
<li />High dexterity
|
||||||
<li>Medium magic points</li>
|
<li />4 heal spells
|
||||||
<li>Low strength</li>
|
<li />4 hurt spells
|
||||||
<li>High dexterity</li>
|
<li />3 sleep spells
|
||||||
<li>4 heal spells</li>
|
<li />2 +defense spells
|
||||||
<li>4 hurt spells</li>
|
<li />2 +attack spells
|
||||||
<li>3 sleep spells</li>
|
</ul>
|
||||||
<li>2 +defense spells</li>
|
[ <a href="#top">Top</a> ]
|
||||||
<li>2 +attack spells</li>
|
|
||||||
</ul>
|
<br /><br /><hr />
|
||||||
[ <a href="#top">Top</a> ]
|
|
||||||
|
<h3><a name="difficulties"></a>Difficulty Levels</h3>
|
||||||
<br><br><hr>
|
<i><? echo $controlrow["gamename"]; ?></i> includes the ability to play using one of three difficulty levels.
|
||||||
|
All monster statistics in the game are set at a base number. However, using a difficulty multiplier, certain statistics
|
||||||
<h3><a name="intown"></a>Playing The Game: In Town</h3>
|
are increased. The amount of hit points a monster has goes up, which means it will take longer to kill. But the amount
|
||||||
When you begin a new game, the first thing you see is the Town screen. Towns serve four primary functions: healing, buying items,
|
of experience and gold you gain from killing it also goes up. So the game is a little bit harder, but it is also more
|
||||||
buying maps, and displaying game information.<br><br>
|
rewarding. The following are the three difficulty levels and their statistic multiplier, which applies to the monster's
|
||||||
To heal yourself, click the "Rest at the Inn" link at the top of the town screen. Each town's Inn has a different price - some towns
|
HP, experience drop, and gold drop.
|
||||||
are cheap, others are expensive. No matter what town you're in, the Inns always serve the same function: they restore your current
|
<ul>
|
||||||
hit points, magic points, and travel points to their maximum amounts. Out in the field, you are free to use healing spells to restore
|
<li /><? echo $controlrow["diff1name"] . ": <b>" . $controlrow["diff1mod"] . "</b>"; ?>
|
||||||
your hit points, but when you run low on magic points, the only way to restore them is at an Inn.<br><br>
|
<li /><? echo $controlrow["diff2name"] . ": <b>" . $controlrow["diff2mod"] . "</b>"; ?>
|
||||||
Buying weapons and armor is accomplished through the appropriately-named "Buy Weapons/Armor" link. Not every item is available in
|
<li /><? echo $controlrow["diff3name"] . ": <b>" . $controlrow["diff3mod"] . "</b>"; ?>
|
||||||
every town, so in order to get the most powerful items, you'll need to explore some of the outer towns. Once you've clicked the link,
|
</ul>
|
||||||
you are presented with a list of items available in this town's store. To the left of each item is an icon that represents its type:
|
[ <a href="#top">Top</a> ]
|
||||||
weapon, armor or shield. The amount of attack/defense power, as well as the item's price, are displayed to the right of the item name.
|
|
||||||
You'll notice that some items have a red asterisk (<span class="highlight">*</span>) next to their names. These are items that come
|
<br /><br /><hr />
|
||||||
with special attributes that modify other parts of your character profile. See the Items & Drops table at the bottom of this page for
|
|
||||||
more information about special items.<br><br>
|
<h3><a name="intown"></a>Playing The Game: In Town</h3>
|
||||||
Maps are the third function in towns. Buying a map to a town places the town in your Travel To box in the left status panel. Once
|
When you begin a new game, the first thing you see is the Town screen. Towns serve four primary functions: healing, buying items,
|
||||||
you've purchased a town's map, you can click its name from your Travel To box and you will jump to that town. Travelling this way
|
buying maps, and displaying game information.<br /><br />
|
||||||
costs travel points, though, and you'll only be able to visit towns if you have enough travel points.<br><br>
|
To heal yourself, click the "Rest at the Inn" link at the top of the town screen. Each town's Inn has a different price - some towns
|
||||||
The final function in towns is displaying game information and statistics. This includes the latest news post made by the game
|
are cheap, others are expensive. No matter what town you're in, the Inns always serve the same function: they restore your current
|
||||||
administrator, a list of players who have been online recently, and the Babble Box.<br><br>
|
hit points, magic points, and travel points to their maximum amounts. Out in the field, you are free to use healing spells to restore
|
||||||
[ <a href="#top">Top</a> ]
|
your hit points, but when you run low on magic points, the only way to restore them is at an Inn.<br /><br />
|
||||||
|
Buying weapons and armor is accomplished through the appropriately-named "Buy Weapons/Armor" link. Not every item is available in
|
||||||
<br><br><hr>
|
every town, so in order to get the most powerful items, you'll need to explore some of the outer towns. Once you've clicked the link,
|
||||||
|
you are presented with a list of items available in this town's store. To the left of each item is an icon that represents its type:
|
||||||
<h3><a name="exploring"></a>Playing The Game: Exploring & Fighting</h3>
|
weapon, armor or shield. The amount of attack/defense power, as well as the item's price, are displayed to the right of the item name.
|
||||||
Once you're done in town, you are free to start exploring the world. Use the compass buttons on the left status panel to move around.
|
You'll notice that some items have a red asterisk (<span class="highlight">*</span>) next to their names. These are items that come
|
||||||
The game world is basically a big square, divided into four quadrants. Each quadrant is <?= $controlrow["gamesize"] ?> spaces
|
with special attributes that modify other parts of your character profile. See the Items & Drops table at the bottom of this page for
|
||||||
square. The first town is usually located at (0N,0E). Click the North button from the first town, and now you'll be at (1N,0E).
|
more information about special items.<br /><br />
|
||||||
Likewise, if you now click the West button, you'll be at (1N,1W). Monster levels increase with every 5 spaces you move outward
|
Maps are the third function in towns. Buying a map to a town places the town in your Travel To box in the left status panel. Once
|
||||||
from (0N,0E).<br><br>
|
you've purchased a town's map, you can click its name from your Travel To box and you will jump to that town. Travelling this way
|
||||||
While you're exploring, you will occasionally run into monsters. As in pretty much any other RPG game, you and the monster take turns
|
costs travel points, though, and you'll only be able to visit towns if you have enough travel points.<br /><br />
|
||||||
hitting each other in an attempt to reduce each other's hit points to zero. Once you run into a monster, the Exploring screen changes
|
The final function in towns is displaying game information and statistics. This includes the latest news post made by the game
|
||||||
to the Fighting screen.<br><br>
|
administrator, a list of players who have been online recently, and the Babble Box.<br /><br />
|
||||||
When a fight begins, you'll see the monster's name and hit points, and the game will ask you for your first command. You then get to
|
[ <a href="#top">Top</a> ]
|
||||||
pick whether you want to fight, use a spell, or run away. Note, though, that sometimes the monster has the chance to hit you
|
|
||||||
first.<br><br>
|
<br /><br /><hr />
|
||||||
The Fight button is pretty straightforward: you attack the monster, and the amount of damage dealt is based on your attack power and
|
|
||||||
the monster's armor. On top of that, there are two other things that can happen: an Excellent Hit, which doubles your total attack
|
<h3><a name="exploring"></a>Playing The Game: Exploring & Fighting</h3>
|
||||||
damage; and a monster dodge, which results in you doing no damage to the monster.<br><br>
|
Once you're done in town, you are free to start exploring the world. Use the compass buttons on the left status panel to move around.
|
||||||
The Spell button allows you to pick an available spell and cast it. See the Spells list at the bottom of this page for more information
|
The game world is basically a big square, divided into four quadrants. Each quadrant is <? echo $controlrow["gamesize"]; ?> spaces
|
||||||
about spells.<br><br>
|
square. The first town is usually located at (0N,0E). Click the North button from the first town, and now you'll be at (1N,0E).
|
||||||
Finally, there is the Run button, which lets you run away from a fight if the monster is too powerful. Be warned, though: it is
|
Likewise, if you now click the West button, you'll be at (1N,1W). Monster levels increase with every 5 spaces you move outward
|
||||||
possible for the monster to block you from running and attack you. So if your hit points are low, you may fare better by staying
|
from (0N,0E).<br /><br />
|
||||||
around monsters that you know can't do much damage to you.<br><br>
|
While you're exploring, you will occasionally run into monsters. As in pretty much any other RPG game, you and the monster take turns
|
||||||
Once you've had your turn, the monster also gets his turn. It is also possible for you to dodge the monster's attack and take no
|
hitting each other in an attempt to reduce each other's hit points to zero. Once you run into a monster, the Exploring screen changes
|
||||||
damage.<br><br>
|
to the Fighting screen.<br /><br />
|
||||||
The end result of a fight is either you or the monster being knocked down to zero hit points. If you win, the monster dies and will
|
When a fight begins, you'll see the monster's name and hit points, and the game will ask you for your first command. You then get to
|
||||||
give you a certain amount of experience and gold. There is also a chance that the monster will drop an item, which you can put into
|
pick whether you want to fight, use a spell, or run away. Note, though, that sometimes the monster has the chance to hit you
|
||||||
one of the three inventory slots to give you extra points in your character profile. If you lose and die, half of your gold is taken
|
first.<br /><br />
|
||||||
away - however, you are given back a few hit points to help you make it back to town (for example, if you don't have enough gold to
|
The Fight button is pretty straightforward: you attack the monster, and the amount of damage dealt is based on your attack power and
|
||||||
pay for an Inn, and need to kill a couple low-level monsters to get the money).<br><br>
|
the monster's armor. On top of that, there are two other things that can happen: an Excellent Hit, which doubles your total attack
|
||||||
When the fight is over, you can continue exploring until you find another monster to beat into submission.<br><br>
|
damage; and a monster dodge, which results in you doing no damage to the monster.<br /><br />
|
||||||
[ <a href="#top">Top</a> ]
|
The Spell button allows you to pick an available spell and cast it. See the Spells list at the bottom of this page for more information
|
||||||
|
about spells.<br /><br />
|
||||||
<br><br><hr>
|
Finally, there is the Run button, which lets you run away from a fight if the monster is too powerful. Be warned, though: it is
|
||||||
|
possible for the monster to block you from running and attack you. So if your hit points are low, you may fare better by staying
|
||||||
<h3><a name="status"></a>Playing The Game: Status Panels</h3>
|
around monsters that you know can't do much damage to you.<br /><br />
|
||||||
There are two status panels on the game screen: left and right.<br><br>
|
Once you've had your turn, the monster also gets his turn. It is also possible for you to dodge the monster's attack and take no
|
||||||
The left panel inclues your current location and play status (In Town, Exploring, Fighting), compass buttons for movement, and the
|
damage.<br /><br />
|
||||||
Travel To list for jumping between towns. At the bottom of the left panel is also a list of game functions.<br><br>
|
The end result of a fight is either you or the monster being knocked down to zero hit points. If you win, the monster dies and will
|
||||||
The right panel displays some character statistics, your inventory, and quick spells.<br><br>
|
give you a certain amount of experience and gold. There is also a chance that the monster will drop an item, which you can put into
|
||||||
The Character section shows the most important character statistics. It also displays the status bars for your current hit points,
|
one of the three inventory slots to give you extra points in your character profile. If you lose and die, half of your gold is taken
|
||||||
magic points and travel points. These status bars are colored either green, yellow or red depending on your current amount of each
|
away - however, you are given back a few hit points to help you make it back to town (for example, if you don't have enough gold to
|
||||||
stat. There is also a link to pop up your list of extended statistics, which shows more detailed character information.<br><br>
|
pay for an Inn, and need to kill a couple low-level monsters to get the money).<br /><br />
|
||||||
The Fast Spells section lists any Heal spells you've learned. You may use these links any time you are in town or exploring to cast
|
When the fight is over, you can continue exploring until you find another monster to beat into submission.<br /><br />
|
||||||
the heal spell. These may not be used during fights, however - you have to use the Spells box on the fight screen for that.
|
[ <a href="#top">Top</a> ]
|
||||||
[ <a href="#top">Top</a> ]
|
|
||||||
|
<br /><br /><hr />
|
||||||
<br><br><hr>
|
|
||||||
|
<h3><a name="status"></a>Playing The Game: Status Panels</h3>
|
||||||
<h3><a name="items"></a>Spoilers: Items & Drops</h3>
|
There are two status panels on the game screen: left and right.<br /><br />
|
||||||
<a href="help.php?page=items">Click here</a> for the Items & Drops spoiler page.<br><br>
|
The left panel inclues your current location and play status (In Town, Exploring, Fighting), compass buttons for movement, and the
|
||||||
[ <a href="#top">Top</a> ]
|
Travel To list for jumping between towns. At the bottom of the left panel is also a list of game functions.<br /><br />
|
||||||
|
The right panel displays some character statistics, your inventory, and quick spells.<br /><br />
|
||||||
<br><br><hr>
|
The Character section shows the most important character statistics. It also displays the status bars for your current hit points,
|
||||||
|
magic points and travel points. These status bars are colored either green, yellow or red depending on your current amount of each
|
||||||
<h3><a name="monsters"></a>Spoilers: Monsters</h3>
|
stat. There is also a link to pop up your list of extended statistics, which shows more detailed character information.<br /><br />
|
||||||
<a href="help.php?page=monsters">Click here</a> for the Monsters spoiler page.<br><br>
|
The Fast Spells section lists any Heal spells you've learned. You may use these links any time you are in town or exploring to cast
|
||||||
[ <a href="#top">Top</a> ]
|
the heal spell. These may not be used during fights, however - you have to use the Spells box on the fight screen for that.
|
||||||
|
[ <a href="#top">Top</a> ]
|
||||||
<br><br><hr>
|
|
||||||
|
<br /><br /><hr />
|
||||||
<h3><a name="spells"></a>Spoilers: Spells</h3>
|
|
||||||
<a href="help.php?page=spells">Click here</a> for the Spells spoiler page.<br><br>
|
<h3><a name="items"></a>Spoilers: Items & Drops</h3>
|
||||||
[ <a href="#top">Top</a> ]
|
<a href="help_items.php">Click here</a> for the Items & Drops spoiler page.<br /><br />
|
||||||
|
[ <a href="#top">Top</a> ]
|
||||||
<br><br><hr>
|
|
||||||
|
<br /><br /><hr />
|
||||||
<h3><a name="levels"></a>Spoilers: Levels</h3>
|
|
||||||
<a href="help.php?page=levels">Click here</a> for the Levels spoiler page.<br><br>
|
<h3><a name="monsters"></a>Spoilers: Monsters</h3>
|
||||||
[ <a href="#top">Top</a> ]
|
<a href="help_monsters.php">Click here</a> for the Monsters spoiler page.<br /><br />
|
||||||
|
[ <a href="#top">Top</a> ]
|
||||||
<br><br><hr>
|
|
||||||
|
<br /><br /><hr />
|
||||||
<h3><a name="credits"></a>Credits</h3>
|
|
||||||
<ul>
|
<h3><a name="spells"></a>Spoilers: Spells</h3>
|
||||||
<li><b>All program code and stock graphics for the game were created by Jamin Seven</b>.<br><br></li>
|
<a href="help_spells.php">Click here</a> for the Spells spoiler page.<br /><br />
|
||||||
<li>Major props go to a few people on the PHP manual site, for help with various chunks of code. The specific people are listed in the source code.<br><br></li>
|
[ <a href="#top">Top</a> ]
|
||||||
<li>Super monkey love goes to Enix and the developers of <i>Dragon Warrior</i>. If it weren't for you guys, my game never would have been made.<br><br></li>
|
|
||||||
<li>Mega props go to Dalez from GameFAQs for his DW3 experience chart, which was where I got my experience levels from.<br><br></li>
|
<br /><br /><hr />
|
||||||
<li>
|
|
||||||
Mad crazy ninja love goes to the following people for help and support throughout the development process:<br><br>
|
<h3><a name="levels"></a>Spoilers: Levels</h3>
|
||||||
<b>Ideas:</b> (whether they got used or not)
|
<a href="help_levels.php">Click here</a> for the Levels spoiler page.<br /><br />
|
||||||
<ul>
|
[ <a href="#top">Top</a> ]
|
||||||
<li>kushet</li>
|
|
||||||
<li>lghtning</li>
|
<br /><br /><hr />
|
||||||
<li>Ebolamonkey3000</li>
|
|
||||||
<li>Crimson Scythe</li>
|
<h3><a name="credits"></a>Credits</h3>
|
||||||
<li>SilDeath</li>
|
<ul>
|
||||||
</ul>
|
<li /><b>All program code and stock graphics for the game were created by Jamin Seven</b>.<br /><br />
|
||||||
<b>Beta Testing:</b> (forums name if applicable, character name otherwise)
|
<li />Major props go to a few people on the PHP manual site, for help with various chunks of code. The specific people are listed in the source code.<br /><br />
|
||||||
<ul>
|
<li />Super monkey love goes to Enix and the developers of <i>Dragon Warrior</i>. If it weren't for you guys, my game never would have been made.<br /><br />
|
||||||
<li>Ebolamonkey3000</li>
|
<li />Mega props go to Dalez from GameFAQs for his DW3 experience chart, which was where I got my experience levels from.<br /><br />
|
||||||
<li>lisi</li>
|
<li />Mad crazy ninja love goes to the following people for help and support throughout the development process:<br /><br />
|
||||||
<li>Junglist</li>
|
<b>Ideas:</b> (whether they got used or not)
|
||||||
<li>Crimson Scythe</li>
|
<ul>
|
||||||
<li>Sk8erpunk69</li>
|
<li />kushet
|
||||||
<li>lghtning</li>
|
<li />lghtning
|
||||||
<li>kushet</li>
|
<li />Ebolamonkey3000
|
||||||
<li>SilDeath</li>
|
<li />Crimson Scythe
|
||||||
<li>lowrider4life</li>
|
<li />SilDeath
|
||||||
<li>dubiin</li>
|
</ul><br />
|
||||||
<li>Sam Wise The Great</li>
|
<b>Beta Testing:</b> (forums name if applicable, character name otherwise)
|
||||||
</ul>
|
<ul>
|
||||||
</li>
|
<li />Ebolamonkey3000
|
||||||
</ul>
|
<li />lisi
|
||||||
Apologies and lots of happy naked love to anyone I forgot. <br><br>
|
<li />Junglist
|
||||||
And of course, thanks to <b>you</b> for playing my game! <br><br>
|
<li />Crimson Scythe
|
||||||
<a href="/index.php?do=ninja">NINJA!</a> <br><br>
|
<li />Sk8erpunk69
|
||||||
[ <a href="#top">Top</a> ]
|
<li />lghtning
|
||||||
|
<li />kushet
|
||||||
<br><br><hr><br>
|
<li />SilDeath
|
||||||
|
<li />lowrider4life
|
||||||
Please visit the following sites for more information:<br>
|
<li />dubiin
|
||||||
<a href="http://www.se7enet.com" target="_new">Se7enet</a> (Jamin's homepage)<br>
|
<li />Sam Wise The Great
|
||||||
<a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a> (official DK homepage)<br>
|
</ul><br />
|
||||||
<a href="http://se7enet.com/forums" target="_new">Forums</a> (official DK forums)<br><br>
|
<li />Apologies and lots of happy naked love to anyone I forgot.<br /><br />
|
||||||
All original coding and graphics for the <i>Dragon Knight</i> game engine are © 2003-2005 by Jamin Seven.<br><br>
|
<li />And of course, thanks to <b>you</b> for playing my game!<br /><br />
|
||||||
[ <a href="#top">Top</a> ]
|
<li /><a href="../index.php?do=ninja">NINJA!</a>
|
||||||
|
</ul>
|
||||||
<?php
|
[ <a href="#top">Top</a> ]
|
||||||
endif;
|
|
||||||
// @MAIN END
|
<br /><br /><hr /><br />
|
||||||
?>
|
|
||||||
|
Please visit the following sites for more information:<br />
|
||||||
<?php
|
<a href="http://www.se7enet.com" target="_new">Se7enet</a> (Jamin's homepage)<br />
|
||||||
// @ITEMS
|
<a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a> (official DK homepage)<br />
|
||||||
if ($page === 'items'):
|
<a href="http://se7enet.com/forums" target="_new">Forums</a> (official DK forums)<br /><br />
|
||||||
?>
|
All original coding and graphics for the <i>Dragon Knight</i> game engine are © 2003-2005 by Jamin Seven.<br /><br />
|
||||||
|
[ <a href="#top">Top</a> ]
|
||||||
<table width="60%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
<br /><br />
|
||||||
<tr><td colspan="5" bgcolor="#ffffff"><center><b>Items</b></center></td></tr>
|
<table class="copyright" width="100%"><tr>
|
||||||
<tr><td><b>Type</b></td><td><b>Name</b></td><td><b>Cost</b></td><td><b>Attribute</b></td><td><b>Special</b></td></tr>
|
<td width="50%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="50%" align="center">© 2003-2006 by renderse7en</td>
|
||||||
<?php
|
</tr></table>
|
||||||
$items = db()->query('SELECT * FROM items ORDER BY id;');
|
|
||||||
$item_types = [1 => ['weapon', 'Attack'], 2 => ['armor', 'Defense'], 3 => ['shield', 'Defense']];
|
|
||||||
|
|
||||||
while ($item = $items->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$image = $item_types[$item['type']][0];
|
|
||||||
$power = $item_types[$item['type']][1];
|
|
||||||
|
|
||||||
if ($item['special'] !== 'X') {
|
|
||||||
$special = explode(',', $item['special']);
|
|
||||||
$attr = special_to_string($special[0]);
|
|
||||||
$stat = (($special[1] > 0) ? '+' : '') . $special[1];
|
|
||||||
$bigspecial = "$attr $stat";
|
|
||||||
} else {
|
|
||||||
$bigspecial = '<span class="light">None</span>';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "<tr><td width=\"5%\"><img src=\"images/icon_$image.gif\" alt=\"$image\"></td><td width=\"30%\">".$item["name"]."</td><td width=\"20%\">".$item["buycost"]." Gold</td><td width=\"20%\">".$item["attribute"]." $power Power</td><td width=\"25%\">$bigspecial</td></tr>\n";
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<table width="60%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
|
||||||
<tr><td colspan="4" bgcolor="#ffffff"><center><b>Drops</b></center></td></tr>
|
|
||||||
<tr><td><b>Name</b></td><td><b>Monster Level</b></td><td><b>Attribute 1</b></td><td><b>Attribute 2</b></td></tr>
|
|
||||||
<?php
|
|
||||||
$drops = db()->query('SELECT * FROM drops ORDER BY id;');
|
|
||||||
|
|
||||||
while ($drop = $drops->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
if ($drop["attribute1"] !== "X") {
|
|
||||||
$special = explode(',', $drop['attribute1']);
|
|
||||||
$attr = special_to_string($special[0]);
|
|
||||||
$stat = (($special[1] > 0) ? '+' : '') . $special[1];
|
|
||||||
$bigspecial1 = "$attr $stat";
|
|
||||||
} else {
|
|
||||||
$bigspecial1 = '<span class="light">None</span>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($drop["attribute2"] !== "X") {
|
|
||||||
$special = explode(',', $drop['attribute2']);
|
|
||||||
$attr = special_to_string($special[0]);
|
|
||||||
$stat = (($special[1] > 0) ? '+' : '') . $special[1];
|
|
||||||
$bigspecial2 = "$attr $stat";
|
|
||||||
} else {
|
|
||||||
$bigspecial2 = '<span class="light">None</span>';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "<tr><td width=\"25%\">".$drop["name"]."</td><td width=\"15%\">".$drop["mlevel"]."</td><td width=\"30%\">$bigspecial1</td><td width=\"30%\">$bigspecial2</td></tr>\n";
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
endif;
|
|
||||||
// @ITEMS END
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// @SPELLS
|
|
||||||
if ($page === 'spells'):
|
|
||||||
?>
|
|
||||||
|
|
||||||
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
|
||||||
<tr><td colspan="8" bgcolor="#ffffff"><center><b>Spells</b></center></td></tr>
|
|
||||||
<tr><td><b>Name</b></td><td><b>Cost</b></td><td><b>Type</b></td><td><b>Attribute</b></td></tr>
|
|
||||||
<?php
|
|
||||||
$spells = db()->query('SELECT * FROM spells ORDER BY id;');
|
|
||||||
$spell_types = ['None', 'Heal', 'Hurt', 'Sleep', '+Damage (%)', '+Defense (%)'];
|
|
||||||
while ($spell = $spells->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
echo <<<HTML
|
|
||||||
<tr><td width="25%">{$spell["name"]}</td>
|
|
||||||
<td width="25%">{$spell["mp"]}</td>
|
|
||||||
<td width="25%">{$spell_types[$spell['type']]}</td>
|
|
||||||
<td width="25%">{$spell["attribute"]}</td></tr>
|
|
||||||
HTML;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
<ul>
|
|
||||||
<li><b>Heal</b> spells always give you the maximum amount possible, until your current HP is full.</li>
|
|
||||||
<li><b>Hurt</b> spells deal X damage (not always the maximum) to the monster, regardless of the monster's armor.</li>
|
|
||||||
<li><b>Sleep</b> spells put the monster to sleep. The monster has an X in 15 chance of remaining asleep each turn.</li>
|
|
||||||
<li><b>+Damage</b> spells increase your total attack damage by X percent until the end of the fight.</li>
|
|
||||||
<li><b>+Defense</b> spells reduce the total damage you take from the monster by X percent until the end of each fight.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
endif;
|
|
||||||
// @SPELLS END
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// @MONSTERS
|
|
||||||
if ($page === 'monsters'):
|
|
||||||
?>
|
|
||||||
|
|
||||||
<table width="75%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
|
||||||
<tr><td colspan="8" bgcolor="#ffffff"><center><b>Monsters</b></center></td></tr>
|
|
||||||
<tr><td><b>Name</b></td><td><b>Max HP</b></td><td><b>Max Damage</b></td><td><b>Armor</b></td><td><b>Level</b></td><td><b>Max Exp.</b></td><td><b>Max Gold</b></td><td><b>Immunity</b></td></tr>
|
|
||||||
<?php
|
|
||||||
$monsters = db()->query('SELECT * FROM monsters ORDER BY id;');
|
|
||||||
$immunities = ['<span class="light">None</span>', 'Hurt', 'Hurt & Sleep'];
|
|
||||||
|
|
||||||
while ($m = $monsters->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$immune = $immunities[$m['immune']] ?? 'Unknown';
|
|
||||||
echo "<tr><td width=\"30%\">".$m["name"]."</td><td width=\"10%\">".$m["maxhp"]."</td><td width=\"10%\">".$m["maxdam"]."</td><td width=\"10%\">".$m["armor"]."</td><td width=\"10%\">".$m["level"]."</td><td width=\"10%\">".$m["maxexp"]."</td><td width=\"10%\">".$m["maxgold"]."</td><td width=\"20%\">$immune</td></tr>\n";
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
endif;
|
|
||||||
// @MONSTERS END
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// @LEVELS
|
|
||||||
if ($page === 'levels'):
|
|
||||||
|
|
||||||
$rows = [];
|
|
||||||
|
|
||||||
$levels = db()->query('SELECT * FROM levels ORDER BY id;');
|
|
||||||
while ($level = $levels->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$class_data = [1 => [], 2 => [], 3 => []];
|
|
||||||
|
|
||||||
foreach ($level as $column => $value) {
|
|
||||||
if ($column === 'id') continue;
|
|
||||||
|
|
||||||
$parts = explode('_', $column);
|
|
||||||
$class_number = (int) $parts[0];
|
|
||||||
$attribute = $parts[1];
|
|
||||||
|
|
||||||
if (in_array($class_number, [1, 2, 3])) {
|
|
||||||
$class_data[$class_number][$level['id']][$attribute] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$rows[$level['id']] = $class_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
$spells = [];
|
|
||||||
$spells_query = db()->query('SELECT * FROM spells ORDER BY id;');
|
|
||||||
while ($spell = $spells_query->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$spells[$spell['id']] = $spell;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
|
||||||
<tr><td colspan="8" bgcolor="#ffffff"><center><b><? echo $controlrow["class1name"]; ?> Levels</b></center></td></tr>
|
|
||||||
<tr><td><b>Level</b><td><b>Exp.</b></td><td><b>HP</b></td><td><b>MP</b></td><td><b>TP</b></td><td><b>Strength</b></td><td><b>Dexterity</b></td><td><b>Spell</b></td></tr>
|
|
||||||
<?php
|
|
||||||
foreach ($rows as $level => $class_data) {
|
|
||||||
$level_data = $class_data[1][$level];
|
|
||||||
|
|
||||||
$spell_name = '';
|
|
||||||
if (!empty($level_data['spells'])) $spell_name = $spells[$level_data['spells']]['name'];
|
|
||||||
|
|
||||||
echo '<tr>';
|
|
||||||
echo '<td>' . $level . '</td>';
|
|
||||||
echo '<td>' . ($level_data['exp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['hp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['mp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['tp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['strength'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['dexterity'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . (!empty($spell_name) ? $spell_name : '<span class="light">None</span>') . '</td>';
|
|
||||||
echo '</tr>';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
|
||||||
<tr><td colspan="8" bgcolor="#ffffff"><center><b><? echo $controlrow["class2name"]; ?> Levels</b></center></td></tr>
|
|
||||||
<tr><td><b>Level</b><td><b>Exp.</b></td><td><b>HP</b></td><td><b>MP</b></td><td><b>TP</b></td><td><b>Strength</b></td><td><b>Dexterity</b></td><td><b>Spell</b></td></tr>
|
|
||||||
<?php
|
|
||||||
foreach ($rows as $level => $class_data) {
|
|
||||||
$level_data = $class_data[2][$level];
|
|
||||||
|
|
||||||
$spell_name = '';
|
|
||||||
if (!empty($level_data['spells'])) $spell_name = $spells[$level_data['spells']]['name'];
|
|
||||||
|
|
||||||
echo '<tr>';
|
|
||||||
echo '<td>' . $level . '</td>';
|
|
||||||
echo '<td>' . ($level_data['exp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['hp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['mp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['tp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['strength'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['dexterity'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . (!empty($spell_name) ? $spell_name : '<span class="light">None</span>') . '</td>';
|
|
||||||
echo '</tr>';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
|
||||||
<tr><td colspan="8" bgcolor="#ffffff"><center><b><? echo $controlrow["class3name"]; ?> Levels</b></center></td></tr>
|
|
||||||
<tr><td><b>Level</b><td><b>Exp.</b></td><td><b>HP</b></td><td><b>MP</b></td><td><b>TP</b></td><td><b>Strength</b></td><td><b>Dexterity</b></td><td><b>Spell</b></td></tr>
|
|
||||||
<?php
|
|
||||||
foreach ($rows as $level => $class_data) {
|
|
||||||
$level_data = $class_data[3][$level];
|
|
||||||
|
|
||||||
$spell_name = '';
|
|
||||||
if (!empty($level_data['spells'])) $spell_name = $spells[$level_data['spells']]['name'];
|
|
||||||
|
|
||||||
echo '<tr>';
|
|
||||||
echo '<td>' . $level . '</td>';
|
|
||||||
echo '<td>' . ($level_data['exp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['hp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['mp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['tp'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['strength'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . ($level_data['dexterity'] ?? '') . '</td>';
|
|
||||||
echo '<td>' . (!empty($spell_name) ? $spell_name : '<span class="light">None</span>') . '</td>';
|
|
||||||
echo '</tr>';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
Experience points listed are total values up until that point. All other values are just the new amount that you gain for each level.
|
|
||||||
|
|
||||||
<?php
|
|
||||||
endif;
|
|
||||||
// @LEVELS END
|
|
||||||
?>
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
|
|
||||||
<table class="copyright" width="100%"><tr>
|
|
||||||
<td width="50%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="50%" align="center">© 2003-2006 by renderse7en</td>
|
|
||||||
</tr></table>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
155
public/help_items.php
Normal file
155
public/help_items.php
Normal file
|
@ -0,0 +1,155 @@
|
||||||
|
<?php
|
||||||
|
include('lib.php');
|
||||||
|
$link = opendb();
|
||||||
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
|
ob_start("ob_gzhandler");
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title><? echo $controlrow["gamename"]; ?> Help</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
background-image: url(images/background.jpg);
|
||||||
|
color: black;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0px;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
border-style: none;
|
||||||
|
padding: 3px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
td.top {
|
||||||
|
border-bottom: solid 2px black;
|
||||||
|
}
|
||||||
|
td.left {
|
||||||
|
width: 150px;
|
||||||
|
border-right: solid 2px black;
|
||||||
|
}
|
||||||
|
td.right {
|
||||||
|
width: 150px;
|
||||||
|
border-left: solid 2px black;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #663300;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #330000;
|
||||||
|
}
|
||||||
|
.small {
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
.highlight {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.light {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
.copyright {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a name="top"></a>
|
||||||
|
<h1><? echo $controlrow["gamename"]; ?> Help: Items & Drops</h1>
|
||||||
|
[ <a href="help.php">Return to Help</a> | <a href="index.php">Return to the game</a> ]
|
||||||
|
|
||||||
|
<br /><br /><hr />
|
||||||
|
|
||||||
|
<table width="60%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="5" bgcolor="#ffffff"><center><b>Items</b></center></td></tr>
|
||||||
|
<tr><td><b>Type</b></td><td><b>Name</b></td><td><b>Cost</b></td><td><b>Attribute</b></td><td><b>Special</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "items");
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["type"] == 1) { $image = "weapon"; $power = "Attack"; } elseif ($itemsrow["type"] == 2) { $image = "armor"; $power = "Defense"; } else { $image = "shield"; $power = "Defense"; }
|
||||||
|
if ($itemsrow["special"] != "X") {
|
||||||
|
$special = explode(",",$itemsrow["special"]);
|
||||||
|
if ($special[0] == "maxhp") { $attr = "Max HP"; }
|
||||||
|
elseif ($special[0] == "maxmp") { $attr = "Max MP"; }
|
||||||
|
elseif ($special[0] == "maxtp") { $attr = "Max TP"; }
|
||||||
|
elseif ($special[0] == "goldbonus") { $attr = "Gold Bonus (%)"; }
|
||||||
|
elseif ($special[0] == "expbonus") { $attr = "Experience Bonus (%)"; }
|
||||||
|
elseif ($special[0] == "strength") { $attr = "Strength"; }
|
||||||
|
elseif ($special[0] == "dexterity") { $attr = "Dexterity"; }
|
||||||
|
elseif ($special[0] == "attackpower") { $attr = "Attack Power"; }
|
||||||
|
elseif ($special[0] == "defensepower") { $attr = "Defense Power"; }
|
||||||
|
else { $attr = $special[0]; }
|
||||||
|
if ($special[1] > 0) { $stat = "+" . $special[1]; } else { $stat = $special[1]; }
|
||||||
|
$bigspecial = "$attr $stat";
|
||||||
|
} else { $bigspecial = "<span class=\"light\">None</span>"; }
|
||||||
|
echo "<tr><td $color width=\"5%\"><img src=\"images/icon_$image.gif\" alt=\"$image\"></td><td $color width=\"30%\">".$itemsrow["name"]."</td><td $color width=\"20%\">".$itemsrow["buycost"]." Gold</td><td $color width=\"20%\">".$itemsrow["attribute"]." $power Power</td><td $color width=\"25%\">$bigspecial</td></tr>\n";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<table width="60%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="4" bgcolor="#ffffff"><center><b>Drops</b></center></td></tr>
|
||||||
|
<tr><td><b>Name</b></td><td><b>Monster Level</b></td><td><b>Attribute 1</b></td><td><b>Attribute 2</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "drops");
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["attribute1"] != "X") {
|
||||||
|
$special1 = explode(",",$itemsrow["attribute1"]);
|
||||||
|
if ($special1[0] == "maxhp") { $attr1 = "Max HP"; }
|
||||||
|
elseif ($special1[0] == "maxmp") { $attr1 = "Max MP"; }
|
||||||
|
elseif ($special1[0] == "maxtp") { $attr1 = "Max TP"; }
|
||||||
|
elseif ($special1[0] == "goldbonus") { $attr1 = "Gold Bonus (%)"; }
|
||||||
|
elseif ($special1[0] == "expbonus") { $attr1 = "Experience Bonus (%)"; }
|
||||||
|
elseif ($special1[0] == "strength") { $attr1 = "Strength"; }
|
||||||
|
elseif ($special1[0] == "dexterity") { $attr1 = "Dexterity"; }
|
||||||
|
elseif ($special1[0] == "attackpower") { $attr1 = "Attack Power"; }
|
||||||
|
elseif ($special1[0] == "defensepower") { $attr1 = "Defense Power"; }
|
||||||
|
else { $attr1 = $special1[0]; }
|
||||||
|
if ($special1[1] > 0) { $stat1 = "+" . $special1[1]; } else { $stat1 = $special1[1]; }
|
||||||
|
$bigspecial1 = "$attr1 $stat1";
|
||||||
|
} else { $bigspecial1 = "<span class=\"light\">None</span>"; }
|
||||||
|
if ($itemsrow["attribute2"] != "X") {
|
||||||
|
$special2 = explode(",",$itemsrow["attribute2"]);
|
||||||
|
if ($special2[0] == "maxhp") { $attr2 = "Max HP"; }
|
||||||
|
elseif ($special2[0] == "maxmp") { $attr2 = "Max MP"; }
|
||||||
|
elseif ($special2[0] == "maxtp") { $attr2 = "Max TP"; }
|
||||||
|
elseif ($special2[0] == "goldbonus") { $attr2 = "Gold Bonus (%)"; }
|
||||||
|
elseif ($special2[0] == "expbonus") { $attr2 = "Experience Bonus (%)"; }
|
||||||
|
elseif ($special2[0] == "strength") { $attr2 = "Strength"; }
|
||||||
|
elseif ($special2[0] == "dexterity") { $attr2 = "Dexterity"; }
|
||||||
|
elseif ($special2[0] == "attackpower") { $attr2 = "Attack Power"; }
|
||||||
|
elseif ($special2[0] == "defensepower") { $attr2 = "Defense Power"; }
|
||||||
|
else { $attr2 = $special2[0]; }
|
||||||
|
if ($special2[1] > 0) { $stat2 = "+" . $special2[1]; } else { $stat2 = $special2[1]; }
|
||||||
|
$bigspecial2 = "$attr2 $stat2";
|
||||||
|
} else { $bigspecial2 = "<span class=\"light\">None</span>"; }
|
||||||
|
echo "<tr><td $color width=\"25%\">".$itemsrow["name"]."</td><td $color width=\"15%\">".$itemsrow["mlevel"]."</td><td $color width=\"30%\">$bigspecial1</td><td $color width=\"30%\">$bigspecial2</td></tr>\n";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table class="copyright" width="100%"><tr>
|
||||||
|
<td width="50%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="50%" align="center">© 2003-2006 by renderse7en</td>
|
||||||
|
</tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
141
public/help_levels.php
Normal file
141
public/help_levels.php
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
<?php
|
||||||
|
include('lib.php');
|
||||||
|
$link = opendb();
|
||||||
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
|
ob_start("ob_gzhandler");
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title><? echo $controlrow["gamename"]; ?> Help</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
background-image: url(images/background.jpg);
|
||||||
|
color: black;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0px;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
border-style: none;
|
||||||
|
padding: 3px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
td.top {
|
||||||
|
border-bottom: solid 2px black;
|
||||||
|
}
|
||||||
|
td.left {
|
||||||
|
width: 150px;
|
||||||
|
border-right: solid 2px black;
|
||||||
|
}
|
||||||
|
td.right {
|
||||||
|
width: 150px;
|
||||||
|
border-left: solid 2px black;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #663300;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #330000;
|
||||||
|
}
|
||||||
|
.small {
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
.highlight {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.light {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
.copyright {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a name="top"></a>
|
||||||
|
<h1><? echo $controlrow["gamename"]; ?> Help: Levels</h1>
|
||||||
|
[ <a href="help.php">Return to Help</a> | <a href="index.php">Return to the game</a> ]
|
||||||
|
|
||||||
|
<br /><br /><hr />
|
||||||
|
|
||||||
|
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="8" bgcolor="#ffffff"><center><b><? echo $controlrow["class1name"]; ?> Levels</b></center></td></tr>
|
||||||
|
<tr><td><b>Level</b><td><b>Exp.</b></td><td><b>HP</b></td><td><b>MP</b></td><td><b>TP</b></td><td><b>Strength</b></td><td><b>Dexterity</b></td><td><b>Spell</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT id,1_exp,1_hp,1_mp,1_tp,1_strength,1_dexterity,1_spells FROM {{table}} ORDER BY id", "levels");
|
||||||
|
$spellsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "spells");
|
||||||
|
$spells = array();
|
||||||
|
while ($spellsrow = mysql_fetch_array($spellsquery)) {
|
||||||
|
$spells[$spellsrow["id"]] = $spellsrow;
|
||||||
|
}
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["1_spells"] != 0) { $spell = $spells[$itemsrow["1_spells"]]["name"]; } else { $spell = "<span class=\"light\">None</span>"; }
|
||||||
|
if ($itemsrow["id"] != 100) { echo "<tr><td $color width=\"12%\">".$itemsrow["id"]."</td><td $color width=\"12%\">".number_format($itemsrow["1_exp"])."</td><td $color width=\"12%\">".$itemsrow["1_hp"]."</td><td $color width=\"12%\">".$itemsrow["1_mp"]."</td><td $color width=\"12%\">".$itemsrow["1_tp"]."</td><td $color width=\"12%\">".$itemsrow["1_strength"]."</td><td $color width=\"12%\">".$itemsrow["1_dexterity"]."</td><td $color width=\"12%\">$spell</td></tr>\n"; }
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<br /><br />
|
||||||
|
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="8" bgcolor="#ffffff"><center><b><? echo $controlrow["class2name"]; ?> Levels</b></center></td></tr>
|
||||||
|
<tr><td><b>Level</b><td><b>Exp.</b></td><td><b>HP</b></td><td><b>MP</b></td><td><b>TP</b></td><td><b>Strength</b></td><td><b>Dexterity</b></td><td><b>Spell</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT id,2_exp,2_hp,2_mp,2_tp,2_strength,2_dexterity,2_spells FROM {{table}} ORDER BY id", "levels");
|
||||||
|
$spellsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "spells");
|
||||||
|
$spells = array();
|
||||||
|
while ($spellsrow = mysql_fetch_array($spellsquery)) {
|
||||||
|
$spells[$spellsrow["id"]] = $spellsrow;
|
||||||
|
}
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["2_spells"] != 0) { $spell = $spells[$itemsrow["2_spells"]]["name"]; } else { $spell = "<span class=\"light\">None</span>"; }
|
||||||
|
if ($itemsrow["id"] != 100) { echo "<tr><td $color width=\"12%\">".$itemsrow["id"]."</td><td $color width=\"12%\">".number_format($itemsrow["2_exp"])."</td><td $color width=\"12%\">".$itemsrow["2_hp"]."</td><td $color width=\"12%\">".$itemsrow["2_mp"]."</td><td $color width=\"12%\">".$itemsrow["2_tp"]."</td><td $color width=\"12%\">".$itemsrow["2_strength"]."</td><td $color width=\"12%\">".$itemsrow["2_dexterity"]."</td><td $color width=\"12%\">$spell</td></tr>\n"; }
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<br /><br />
|
||||||
|
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="8" bgcolor="#ffffff"><center><b><? echo $controlrow["class3name"]; ?> Levels</b></center></td></tr>
|
||||||
|
<tr><td><b>Level</b><td><b>Exp.</b></td><td><b>HP</b></td><td><b>MP</b></td><td><b>TP</b></td><td><b>Strength</b></td><td><b>Dexterity</b></td><td><b>Spell</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT id,3_exp,3_hp,3_mp,3_tp,3_strength,3_dexterity,3_spells FROM {{table}} ORDER BY id", "levels");
|
||||||
|
$spellsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "spells");
|
||||||
|
$spells = array();
|
||||||
|
while ($spellsrow = mysql_fetch_array($spellsquery)) {
|
||||||
|
$spells[$spellsrow["id"]] = $spellsrow;
|
||||||
|
}
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["3_spells"] != 0) { $spell = $spells[$itemsrow["3_spells"]]["name"]; } else { $spell = "<span class=\"light\">None</span>"; }
|
||||||
|
if ($itemsrow["id"] != 100) { echo "<tr><td $color width=\"12%\">".$itemsrow["id"]."</td><td $color width=\"12%\">".number_format($itemsrow["3_exp"])."</td><td $color width=\"12%\">".$itemsrow["3_hp"]."</td><td $color width=\"12%\">".$itemsrow["3_mp"]."</td><td $color width=\"12%\">".$itemsrow["3_tp"]."</td><td $color width=\"12%\">".$itemsrow["3_strength"]."</td><td $color width=\"12%\">".$itemsrow["3_dexterity"]."</td><td $color width=\"12%\">$spell</td></tr>\n"; }
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
Experience points listed are total values up until that point. All other values are just the new amount that you gain for each level.
|
||||||
|
<br /><br />
|
||||||
|
<table class="copyright" width="100%"><tr>
|
||||||
|
<td width="50%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="50%" align="center">© 2003-2006 by renderse7en</td>
|
||||||
|
</tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
96
public/help_monsters.php
Normal file
96
public/help_monsters.php
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
<?php
|
||||||
|
include('lib.php');
|
||||||
|
$link = opendb();
|
||||||
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
|
ob_start("ob_gzhandler");
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title><? echo $controlrow["gamename"]; ?> Help</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
background-image: url(images/background.jpg);
|
||||||
|
color: black;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0px;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
border-style: none;
|
||||||
|
padding: 3px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
td.top {
|
||||||
|
border-bottom: solid 2px black;
|
||||||
|
}
|
||||||
|
td.left {
|
||||||
|
width: 150px;
|
||||||
|
border-right: solid 2px black;
|
||||||
|
}
|
||||||
|
td.right {
|
||||||
|
width: 150px;
|
||||||
|
border-left: solid 2px black;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #663300;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #330000;
|
||||||
|
}
|
||||||
|
.small {
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
.highlight {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.light {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
.copyright {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a name="top"></a>
|
||||||
|
<h1><? echo $controlrow["gamename"]; ?> Help: Monsters</h1>
|
||||||
|
[ <a href="help.php">Return to Help</a> | <a href="index.php">Return to the game</a> ]
|
||||||
|
|
||||||
|
<br /><br /><hr />
|
||||||
|
|
||||||
|
<table width="75%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="8" bgcolor="#ffffff"><center><b>Monsters</b></center></td></tr>
|
||||||
|
<tr><td><b>Name</b></td><td><b>Max HP</b></td><td><b>Max Damage</b></td><td><b>Armor</b></td><td><b>Level</b></td><td><b>Max Exp.</b></td><td><b>Max Gold</b></td><td><b>Immunity</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "monsters");
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["immune"] == 0) { $immune = "<span class=\"light\">None</span>"; } elseif ($itemsrow["immune"] == 1) { $immune = "Hurt"; } else { $immune = "Hurt & Sleep"; }
|
||||||
|
echo "<tr><td $color width=\"30%\">".$itemsrow["name"]."</td><td $color width=\"10%\">".$itemsrow["maxhp"]."</td><td $color width=\"10%\">".$itemsrow["maxdam"]."</td><td $color width=\"10%\">".$itemsrow["armor"]."</td><td $color width=\"10%\">".$itemsrow["level"]."</td><td $color width=\"10%\">".$itemsrow["maxexp"]."</td><td $color width=\"10%\">".$itemsrow["maxgold"]."</td><td $color width=\"20%\">$immune</td></tr>\n";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<table class="copyright" width="100%"><tr>
|
||||||
|
<td width="50%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="50%" align="center">© 2003-2006 by renderse7en</td>
|
||||||
|
</tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
106
public/help_spells.php
Normal file
106
public/help_spells.php
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
<?php
|
||||||
|
include('lib.php');
|
||||||
|
$link = opendb();
|
||||||
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
|
ob_start("ob_gzhandler");
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title><? echo $controlrow["gamename"]; ?> Help</title>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
background-image: url(images/background.jpg);
|
||||||
|
color: black;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0px;
|
||||||
|
font: 11px verdana;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
border-style: none;
|
||||||
|
padding: 3px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
td.top {
|
||||||
|
border-bottom: solid 2px black;
|
||||||
|
}
|
||||||
|
td.left {
|
||||||
|
width: 150px;
|
||||||
|
border-right: solid 2px black;
|
||||||
|
}
|
||||||
|
td.right {
|
||||||
|
width: 150px;
|
||||||
|
border-left: solid 2px black;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #663300;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color: #330000;
|
||||||
|
}
|
||||||
|
.small {
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
.highlight {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
.light {
|
||||||
|
color: #999999;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
.copyright {
|
||||||
|
border: solid 1px black;
|
||||||
|
background-color: #eeeeee;
|
||||||
|
font: 10px verdana;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a name="top"></a>
|
||||||
|
<h1><? echo $controlrow["gamename"]; ?> Help: Spells</h1>
|
||||||
|
[ <a href="help.php">Return to Help</a> | <a href="index.php">Return to the game</a> ]
|
||||||
|
|
||||||
|
<br /><br /><hr />
|
||||||
|
|
||||||
|
<table width="50%" style="border: solid 1px black" cellspacing="0" cellpadding="0">
|
||||||
|
<tr><td colspan="8" bgcolor="#ffffff"><center><b>Spells</b></center></td></tr>
|
||||||
|
<tr><td><b>Name</b></td><td><b>Cost</b></td><td><b>Type</b></td><td><b>Attribute</b></td></tr>
|
||||||
|
<?
|
||||||
|
$count = 1;
|
||||||
|
$itemsquery = doquery("SELECT * FROM {{table}} ORDER BY id", "spells");
|
||||||
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
|
if ($count == 1) { $color = "bgcolor=\"#ffffff\""; $count = 2; } else { $color = ""; $count = 1; }
|
||||||
|
if ($itemsrow["type"] == 1) { $type = "Heal"; }
|
||||||
|
elseif ($itemsrow["type"] == 2) { $type = "Hurt"; }
|
||||||
|
elseif ($itemsrow["type"] == 3) { $type = "Sleep"; }
|
||||||
|
elseif ($itemsrow["type"] == 4) { $type = "+Damage (%)"; }
|
||||||
|
elseif ($itemsrow["type"] == 5) { $type = "+Defense (%)"; }
|
||||||
|
echo "<tr><td $color width=\"25%\">".$itemsrow["name"]."</td><td $color width=\"25%\">".$itemsrow["mp"]."</td><td $color width=\"25%\">$type</td><td $color width=\"25%\">".$itemsrow["attribute"]."</td></tr>\n";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
<ul>
|
||||||
|
<li /><b>Heal</b> spells always give you the maximum amount possible, until your current HP is full.
|
||||||
|
<li /><b>Hurt</b> spells deal X damage (not always the maximum) to the monster, regardless of the monster's armor.
|
||||||
|
<li /><b>Sleep</b> spells put the monster to sleep. The monster has an X in 15 chance of remaining asleep each turn.
|
||||||
|
<li /><b>+Damage</b> spells increase your total attack damage by X percent until the end of the fight.
|
||||||
|
<li /><b>+Defense</b> spells reduce the total damage you take from the monster by X percent until the end of each fight.
|
||||||
|
</ul>
|
||||||
|
<table class="copyright" width="100%"><tr>
|
||||||
|
<td width="50%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="50%" align="center">© 2003-2006 by renderse7en</td>
|
||||||
|
</tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
214
public/index.php
214
public/index.php
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
// index.php :: Primary program script, evil alien overlord, you decide.
|
// index.php :: Primary program script, evil alien overlord, you decide.
|
||||||
|
|
||||||
if (!file_exists('../.installed')) redirect('install.php');
|
if (!file_exists('../.installed')) {
|
||||||
|
header('Location: install.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
require_once '../src/lib.php';
|
require_once '../src/lib.php';
|
||||||
|
|
||||||
|
@ -78,7 +81,8 @@ function donothing()
|
||||||
$page = doexplore();
|
$page = doexplore();
|
||||||
$title = "Exploring";
|
$title = "Exploring";
|
||||||
} elseif ($userrow["currentaction"] == "Fighting") {
|
} elseif ($userrow["currentaction"] == "Fighting") {
|
||||||
redirect('index.php?do=fight');
|
$page = dofight();
|
||||||
|
$title = "Fighting";
|
||||||
}
|
}
|
||||||
|
|
||||||
display($page, $title);
|
display($page, $title);
|
||||||
|
@ -91,53 +95,53 @@ function dotown()
|
||||||
{
|
{
|
||||||
global $userrow, $controlrow;
|
global $userrow, $controlrow;
|
||||||
|
|
||||||
$townrow = get_town_by_xy($userrow['longitude'], $userrow['latitude']);
|
$townquery = db()->query('SELECT * FROM towns WHERE latitude = ? AND longitude = ? LIMIT 1;', [$userrow["latitude"], $userrow["longitude"]]);
|
||||||
|
if ($townquery === false) display("There is an error with your user account, or with the town data. Please try again.", "Error");
|
||||||
|
$townrow = $townquery->fetchArray(SQLITE3_ASSOC);
|
||||||
if ($townrow === false) display("There is an error with your user account, or with the town data. Please try again.","Error");
|
if ($townrow === false) display("There is an error with your user account, or with the town data. Please try again.","Error");
|
||||||
|
|
||||||
$townrow["news"] = "";
|
|
||||||
$townrow["whosonline"] = "";
|
|
||||||
$townrow["babblebox"] = "";
|
|
||||||
|
|
||||||
// News box. Grab latest news entry and display it. Something a little more graceful coming soon maybe.
|
// News box. Grab latest news entry and display it. Something a little more graceful coming soon maybe.
|
||||||
if ($controlrow["shownews"] == 1) {
|
if ($controlrow["shownews"] == 1) {
|
||||||
$newsrow = db()->query('SELECT * FROM news ORDER BY id DESC LIMIT 1;')->fetchArray(SQLITE3_ASSOC);
|
$newsrow = db()->query('SELECT * FROM news ORDER BY id DESC LIMIT 1;')->fetchArray(SQLITE3_ASSOC);
|
||||||
$townrow["news"] = "<table width=\"95%\"><tr><td class=\"title\">Latest News</td></tr><tr><td>\n";
|
$townrow["news"] = "<table width=\"95%\"><tr><td class=\"title\">Latest News</td></tr><tr><td>\n";
|
||||||
$townrow["news"] .= "<span class=\"light\">[".prettydate($newsrow["postdate"])."]</span><br>".nl2br($newsrow["content"]);
|
$townrow["news"] .= "<span class=\"light\">[".prettydate($newsrow["postdate"])."]</span><br />".nl2br($newsrow["content"]);
|
||||||
$townrow["news"] .= "</td></tr></table>\n";
|
$townrow["news"] .= "</td></tr></table>\n";
|
||||||
|
} else {
|
||||||
|
$townrow["news"] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Who's Online. Currently just members. Guests maybe later.
|
// Who's Online. Currently just members. Guests maybe later.
|
||||||
if ($controlrow["showonline"] == 1) {
|
if ($controlrow["showonline"] == 1) {
|
||||||
$onlinequery = db()->query("SELECT id, username FROM users WHERE strftime('%s', onlinetime) >= strftime('%s', 'now') - 600 ORDER BY username");
|
$onlinequery = db()->query("SELECT * FROM news WHERE strftime('%s', onlinetime) >= strftime('%s', 'now') - 600 ORDER BY charname");
|
||||||
|
|
||||||
$online_count = 0;
|
$online_count = 0;
|
||||||
$online_rows = [];
|
$online_rows = [];
|
||||||
|
|
||||||
while ($onlinerow = $onlinequery->fetchArray(SQLITE3_ASSOC)) {
|
foreach ($onlinequery->fetchArray(SQLITE3_ASSOC) as $onlinerow) {
|
||||||
$online_count++;
|
$online_count++;
|
||||||
$online_rows[] = "<a href=\"index.php?do=onlinechar:".$onlinerow["id"]."\">".$onlinerow["username"]."</a>";
|
$online_rows[] = "<a href=\"index.php?do=onlinechar:".$onlinerow["id"]."\">".$onlinerow["charname"]."</a>" . ", ";
|
||||||
}
|
}
|
||||||
|
|
||||||
$townrow["whosonline"] = "<table width=\"95%\"><tr><td class=\"title\">Who's Online</td></tr><tr><td>\n";
|
$townrow["whosonline"] = "<table width=\"95%\"><tr><td class=\"title\">Who's Online</td></tr><tr><td>\n";
|
||||||
$townrow["whosonline"] .= "There are <b>$online_count</b> user(s) online within the last 10 minutes: ";
|
$townrow["whosonline"] .= "There are <b>$online_count</b> user(s) online within the last 10 minutes: ";
|
||||||
$townrow["whosonline"] .= rtrim(implode(', ', $online_rows), ', ');
|
$townrow["whosonline"] .= rtrim(implode(', ', $online_rows), ', ');
|
||||||
$townrow["whosonline"] .= "</td></tr></table>\n";
|
$townrow["whosonline"] .= "</td></tr></table>\n";
|
||||||
|
} else {
|
||||||
|
$townrow["whosonline"] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($controlrow["showbabble"] == 1) {
|
if ($controlrow["showbabble"] == 1) {
|
||||||
$townrow["babblebox"] = <<<HTML
|
$townrow["babblebox"] = "<table width=\"95%\"><tr><td class=\"title\">Babble Box</td></tr><tr><td>\n";
|
||||||
<table width="95%">
|
$townrow["babblebox"] .= "<iframe src=\"index.php?do=babblebox\" name=\"sbox\" width=\"100%\" height=\"250\" frameborder=\"0\" id=\"bbox\">Your browser does not support inline frames! The Babble Box will not be available until you upgrade to a newer <a href=\"http://www.mozilla.org\" target=\"_new\">browser</a>.</iframe>";
|
||||||
<tr><td class="title">Babble Box</td></tr>
|
$townrow["babblebox"] .= "</td></tr></table>\n";
|
||||||
<tr><td>
|
} else {
|
||||||
<iframe src="index.php?do=babblebox" name="sbox" width="100%" height="250" frameborder="0" id="bbox">
|
$townrow["babblebox"] = "";
|
||||||
Your browser does not support inline frames! The Babble Box will not be available until you upgrade to a newer <a href="http://www.mozilla.org" target="_new">browser</a>.
|
|
||||||
</iframe>
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
HTML;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return parsetemplate(gettemplate("towns"), $townrow);
|
$page = gettemplate("towns");
|
||||||
|
$page = parsetemplate($page, $townrow);
|
||||||
|
|
||||||
|
return $page;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -156,104 +160,154 @@ function doexplore()
|
||||||
HTML;
|
HTML;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redirect to fighting.
|
||||||
|
*/
|
||||||
|
function dofight()
|
||||||
|
{
|
||||||
|
header("Location: index.php?do=fight");
|
||||||
|
}
|
||||||
|
|
||||||
function showchar()
|
function showchar()
|
||||||
{
|
{
|
||||||
global $userrow, $controlrow;
|
global $userrow, $controlrow;
|
||||||
|
|
||||||
|
// Format various userrow stuffs.
|
||||||
$userrow["experience"] = number_format($userrow["experience"]);
|
$userrow["experience"] = number_format($userrow["experience"]);
|
||||||
$userrow["gold"] = number_format($userrow["gold"]);
|
$userrow["gold"] = number_format($userrow["gold"]);
|
||||||
|
if ($userrow["expbonus"] > 0) {
|
||||||
|
$userrow["plusexp"] = "<span class=\"light\">(+".$userrow["expbonus"]."%)</span>";
|
||||||
|
} elseif ($userrow["expbonus"] < 0) {
|
||||||
|
$userrow["plusexp"] = "<span class=\"light\">(".$userrow["expbonus"]."%)</span>";
|
||||||
|
} else { $userrow["plusexp"] = ""; }
|
||||||
|
if ($userrow["goldbonus"] > 0) {
|
||||||
|
$userrow["plusgold"] = "<span class=\"light\">(+".$userrow["goldbonus"]."%)</span>";
|
||||||
|
} elseif ($userrow["goldbonus"] < 0) {
|
||||||
|
$userrow["plusgold"] = "<span class=\"light\">(".$userrow["goldbonus"]."%)</span>";
|
||||||
|
} else { $userrow["plusgold"] = ""; }
|
||||||
|
|
||||||
$userrow["plusexp"] = $userrow["expbonus"] != 0
|
$levelquery = doquery("SELECT ". $userrow["charclass"]."_exp FROM {{table}} WHERE id='".($userrow["level"]+1)."' LIMIT 1", "levels");
|
||||||
? "<span class=\"light\">(" . ($userrow["expbonus"] > 0 ? "+" : "") . $userrow["expbonus"] . "%)</span>"
|
$levelrow = mysql_fetch_array($levelquery);
|
||||||
: "";
|
if ($userrow["level"] < 99) { $userrow["nextlevel"] = number_format($levelrow[$userrow["charclass"]."_exp"]); } else { $userrow["nextlevel"] = "<span class=\"light\">None</span>"; }
|
||||||
|
|
||||||
$userrow["plusgold"] = $userrow["goldbonus"] != 0
|
if ($userrow["charclass"] == 1) { $userrow["charclass"] = $controlrow["class1name"]; }
|
||||||
? "<span class=\"light\">(" . ($userrow["goldbonus"] > 0 ? "+" : "") . $userrow["goldbonus"] . "%)</span>"
|
elseif ($userrow["charclass"] == 2) { $userrow["charclass"] = $controlrow["class2name"]; }
|
||||||
: "";
|
elseif ($userrow["charclass"] == 3) { $userrow["charclass"] = $controlrow["class3name"]; }
|
||||||
|
|
||||||
$levelrow = db()->query("SELECT `{$userrow["charclass"]}_exp` FROM levels WHERE id=? LIMIT 1;", [$userrow['level'] + 1])->fetchArray(SQLITE3_ASSOC);
|
if ($userrow["difficulty"] == 1) { $userrow["difficulty"] = $controlrow["diff1name"]; }
|
||||||
$userrow["nextlevel"] = $userrow['level'] < 99 ? number_format($levelrow[$userrow["charclass"]."_exp"]) : '<span class="light">None</span>';
|
elseif ($userrow["difficulty"] == 2) { $userrow["difficulty"] = $controlrow["diff2name"]; }
|
||||||
|
elseif ($userrow["difficulty"] == 3) { $userrow["difficulty"] = $controlrow["diff3name"]; }
|
||||||
|
|
||||||
$userrow['charclass'] = match ((int) $userrow['charclass']) {
|
$spellquery = doquery("SELECT id,name FROM {{table}}","spells");
|
||||||
1 => $controlrow["class1name"],
|
$userspells = explode(",",$userrow["spells"]);
|
||||||
2 => $controlrow["class2name"],
|
$userrow["magiclist"] = "";
|
||||||
3 => $controlrow["class3name"]
|
while ($spellrow = mysql_fetch_array($spellquery)) {
|
||||||
};
|
|
||||||
|
|
||||||
$spells = db()->query('SELECT id, name FROM spells;');
|
|
||||||
$userspells = explode(',', $userrow['spells']);
|
|
||||||
$userrow["magiclist"] = '';
|
|
||||||
while ($spellrow = $spells->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$spell = false;
|
$spell = false;
|
||||||
foreach($userspells as $b) if ($b == $spellrow["id"]) $spell = true;
|
foreach($userspells as $a => $b) {
|
||||||
if ($spell == true) $userrow["magiclist"] .= $spellrow["name"]."<br>";
|
if ($b == $spellrow["id"]) { $spell = true; }
|
||||||
}
|
}
|
||||||
if ($userrow["magiclist"] == "") $userrow["magiclist"] = "None";
|
if ($spell == true) {
|
||||||
|
$userrow["magiclist"] .= $spellrow["name"]."<br />";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($userrow["magiclist"] == "") { $userrow["magiclist"] = "None"; }
|
||||||
|
|
||||||
$array = ["content" => parsetemplate(gettemplate("showchar"), $userrow), "title" => "Character Information"];
|
// Make page tags for XHTML validation.
|
||||||
echo parsetemplate("<html>\n" . gettemplate("minimal"), $array);
|
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
|
||||||
|
. "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">\n"
|
||||||
|
. "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
|
||||||
|
|
||||||
|
$charsheet = gettemplate("showchar");
|
||||||
|
$page = $xml . gettemplate("minimal");
|
||||||
|
$array = array("content"=>parsetemplate($charsheet, $userrow), "title"=>"Character Information");
|
||||||
|
echo parsetemplate($page, $array);
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onlinechar($id)
|
function onlinechar($id) {
|
||||||
{
|
|
||||||
global $controlrow;
|
global $controlrow;
|
||||||
|
$userquery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "users");
|
||||||
|
if (mysql_num_rows($userquery) == 1) { $userrow = mysql_fetch_array($userquery); } else { display("No such user.", "Error"); }
|
||||||
|
|
||||||
$query = db()->query('SELECT * FROM users WHERE id=? LIMIT 1;', [$id]);
|
// Format various userrow stuffs.
|
||||||
if ($query !== false) { $userrow = $query->fetchArray(SQLITE3_ASSOC); } else { display("No such user.", "Error"); }
|
|
||||||
unset($userrow['password']);
|
|
||||||
|
|
||||||
$userrow["experience"] = number_format($userrow["experience"]);
|
$userrow["experience"] = number_format($userrow["experience"]);
|
||||||
$userrow["gold"] = number_format($userrow["gold"]);
|
$userrow["gold"] = number_format($userrow["gold"]);
|
||||||
|
if ($userrow["expbonus"] > 0) {
|
||||||
|
$userrow["plusexp"] = "<span class=\"light\">(+".$userrow["expbonus"]."%)</span>";
|
||||||
|
} elseif ($userrow["expbonus"] < 0) {
|
||||||
|
$userrow["plusexp"] = "<span class=\"light\">(".$userrow["expbonus"]."%)</span>";
|
||||||
|
} else { $userrow["plusexp"] = ""; }
|
||||||
|
if ($userrow["goldbonus"] > 0) {
|
||||||
|
$userrow["plusgold"] = "<span class=\"light\">(+".$userrow["goldbonus"]."%)</span>";
|
||||||
|
} elseif ($userrow["goldbonus"] < 0) {
|
||||||
|
$userrow["plusgold"] = "<span class=\"light\">(".$userrow["goldbonus"]."%)</span>";
|
||||||
|
} else { $userrow["plusgold"] = ""; }
|
||||||
|
|
||||||
$userrow["plusexp"] = $userrow["expbonus"] != 0
|
$levelquery = doquery("SELECT ". $userrow["charclass"]."_exp FROM {{table}} WHERE id='".($userrow["level"]+1)."' LIMIT 1", "levels");
|
||||||
? "<span class=\"light\">(" . ($userrow["expbonus"] > 0 ? "+" : "") . $userrow["expbonus"] . "%)</span>"
|
$levelrow = mysql_fetch_array($levelquery);
|
||||||
: "";
|
$userrow["nextlevel"] = number_format($levelrow[$userrow["charclass"]."_exp"]);
|
||||||
|
|
||||||
$userrow["plusgold"] = $userrow["goldbonus"] != 0
|
if ($userrow["charclass"] == 1) { $userrow["charclass"] = $controlrow["class1name"]; }
|
||||||
? "<span class=\"light\">(" . ($userrow["goldbonus"] > 0 ? "+" : "") . $userrow["goldbonus"] . "%)</span>"
|
elseif ($userrow["charclass"] == 2) { $userrow["charclass"] = $controlrow["class2name"]; }
|
||||||
: "";
|
elseif ($userrow["charclass"] == 3) { $userrow["charclass"] = $controlrow["class3name"]; }
|
||||||
|
|
||||||
$levelrow = db()->query("SELECT `{$userrow["charclass"]}_exp` FROM levels WHERE id=? LIMIT 1;", [$userrow['level'] + 1])->fetchArray(SQLITE3_ASSOC);
|
if ($userrow["difficulty"] == 1) { $userrow["difficulty"] = $controlrow["diff1name"]; }
|
||||||
$userrow["nextlevel"] = $userrow['level'] < 99 ? number_format($levelrow[$userrow["charclass"]."_exp"]) : '<span class="light">None</span>';
|
elseif ($userrow["difficulty"] == 2) { $userrow["difficulty"] = $controlrow["diff2name"]; }
|
||||||
|
elseif ($userrow["difficulty"] == 3) { $userrow["difficulty"] = $controlrow["diff3name"]; }
|
||||||
|
|
||||||
$userrow['charclass'] = match ((int) $userrow['charclass']) {
|
$charsheet = gettemplate("onlinechar");
|
||||||
1 => $controlrow["class1name"],
|
$page = parsetemplate($charsheet, $userrow);
|
||||||
2 => $controlrow["class2name"],
|
display($page, "Character Information");
|
||||||
3 => $controlrow["class3name"]
|
|
||||||
};
|
|
||||||
|
|
||||||
display(parsetemplate(gettemplate("onlinechar"), $userrow), "Character Information");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function showmap()
|
function showmap() {
|
||||||
{
|
|
||||||
$array = ["content" => "<center><img src=\"images/map.gif\" alt=\"Map\" /></center>", "title" => "Map"];
|
global $userrow;
|
||||||
echo parsetemplate("<html>\n" . gettemplate("minimal"), $array);
|
|
||||||
|
// Make page tags for XHTML validation.
|
||||||
|
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
|
||||||
|
. "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">\n"
|
||||||
|
. "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
|
||||||
|
|
||||||
|
$page = $xml . gettemplate("minimal");
|
||||||
|
$array = array("content"=>"<center><img src=\"images/map.gif\" alt=\"Map\" /></center>", "title"=>"Map");
|
||||||
|
echo parsetemplate($page, $array);
|
||||||
|
die();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function babblebox()
|
function babblebox() {
|
||||||
{
|
|
||||||
global $userrow;
|
global $userrow;
|
||||||
|
|
||||||
if (isset($_POST["babble"])) {
|
if (isset($_POST["babble"])) {
|
||||||
$safecontent = makesafe($_POST["babble"]);
|
$safecontent = makesafe($_POST["babble"]);
|
||||||
if (!empty($safecontent)) {
|
if ($safecontent == "" || $safecontent == " ") { //blank post. do nothing.
|
||||||
db()->query('INSERT INTO babble (posttime, author, babble) VALUES (CURRENT_TIMESTAMP, ?, ?);', [$userrow['username'], $safecontent]);
|
} else { $insert = doquery("INSERT INTO {{table}} SET id='',posttime=NOW(),author='".$userrow["charname"]."',babble='$safecontent'", "babble"); }
|
||||||
}
|
header("Location: index.php?do=babblebox");
|
||||||
redirect('index.php?do=babblebox');
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$babblebox = ["content" => ""];
|
$babblebox = array("content"=>"");
|
||||||
$bg = 1;
|
$bg = 1;
|
||||||
$query = db()->query('SELECT * FROM babble ORDER BY id DESC LIMIT 20;');
|
$babblequery = doquery("SELECT * FROM {{table}} ORDER BY id DESC LIMIT 20", "babble");
|
||||||
while ($babblerow = $query->fetchArray(SQLITE3_ASSOC)) {
|
while ($babblerow = mysql_fetch_array($babblequery)) {
|
||||||
if ($bg == 1) { $new = "<div style=\"width:98%; background-color:#eeeeee;\">[<b>".$babblerow["author"]."</b>] ".$babblerow["babble"]."</div>\n"; $bg = 2; }
|
if ($bg == 1) { $new = "<div style=\"width:98%; background-color:#eeeeee;\">[<b>".$babblerow["author"]."</b>] ".$babblerow["babble"]."</div>\n"; $bg = 2; }
|
||||||
else { $new = "<div style=\"width:98%; background-color:#ffffff;\">[<b>".$babblerow["author"]."</b>] ".stripslashes($babblerow["babble"])."</div>\n"; $bg = 1; }
|
else { $new = "<div style=\"width:98%; background-color:#ffffff;\">[<b>".$babblerow["author"]."</b>] ".stripslashes($babblerow["babble"])."</div>\n"; $bg = 1; }
|
||||||
$babblebox["content"] = $new . $babblebox["content"];
|
$babblebox["content"] = $new . $babblebox["content"];
|
||||||
}
|
}
|
||||||
$babblebox["content"] .= "<center><form action=\"index.php?do=babblebox\" method=\"post\"><input type=\"text\" name=\"babble\" size=\"15\" maxlength=\"120\" /><br><input type=\"submit\" name=\"submit\" value=\"Babble\" /> <input type=\"reset\" name=\"reset\" value=\"Clear\" /></form></center>";
|
$babblebox["content"] .= "<center><form action=\"index.php?do=babblebox\" method=\"post\"><input type=\"text\" name=\"babble\" size=\"15\" maxlength=\"120\" /><br /><input type=\"submit\" name=\"submit\" value=\"Babble\" /> <input type=\"reset\" name=\"reset\" value=\"Clear\" /></form></center>";
|
||||||
|
|
||||||
|
// Make page tags for XHTML validation.
|
||||||
|
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"
|
||||||
|
. "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">\n"
|
||||||
|
. "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n";
|
||||||
|
$page = $xml . gettemplate("babblebox");
|
||||||
|
echo parsetemplate($page, $babblebox);
|
||||||
|
die();
|
||||||
|
|
||||||
echo parsetemplate("<html>\n" . gettemplate("babblebox"), $babblebox);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,8 +7,7 @@ if (file_exists('../.installed')) {
|
||||||
|
|
||||||
require_once '../src/lib.php';
|
require_once '../src/lib.php';
|
||||||
|
|
||||||
$page = $_GET['page'] ?? 1;
|
match ((int) $_GET['page'] ?? 1) {
|
||||||
match ((int) $page) {
|
|
||||||
2 => second(),
|
2 => second(),
|
||||||
3 => third(),
|
3 => third(),
|
||||||
4 => fourth(),
|
4 => fourth(),
|
||||||
|
@ -28,21 +27,23 @@ function first()
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<b>Dragon Knight Installation: Page One</b><br><br>
|
<b>Dragon Knight Installation: Page One</b><br /><br />
|
||||||
<b>NOTE:</b> Please ensure you have filled in the correct values in config.php before continuing. Installation will fail if these values are not correct. Also, the MySQL database needs to already exist. This installer script will take care of setting up its structure and content, but the database itself must already exist on your MySQL server before the installer will work.<br><br>
|
<b>NOTE:</b> Please ensure you have filled in the correct values in config.php before continuing. Installation will fail if these values are not correct. Also, the MySQL database needs to already exist. This installer script will take care of setting up its structure and content, but the database itself must already exist on your MySQL server before the installer will work.<br /><br />
|
||||||
Installation for Dragon Knight is a simple two-step process: set up the database tables, then create the admin user. After that, you're done.<br><br>
|
Installation for Dragon Knight is a simple two-step process: set up the database tables, then create the admin user. After that, you're done.<br /><br />
|
||||||
You have two options for database setup: complete or partial.
|
You have two options for database setup: complete or partial.
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Complete Setup</b> includes table structure and all default data (items, drops, monsters, levels, spells, towns) - after complete setup, the game is totally ready to run.</li>
|
<li><b>Complete Setup</b> includes table structure and all default data (items, drops, monsters, levels, spells, towns) - after complete setup, the game is totally ready to run.</li>
|
||||||
<li><b>Partial Setup</b> only creates the table structure, it does not populate the tables - use this if you are going to be creating and importing your own customized game data later.</li>
|
<li><b>Partial Setup</b> only creates the table structure, it does not populate the tables - use this if you are going to be creating and importing your own customized game data later.</li>
|
||||||
</ul>
|
</ul>
|
||||||
Click the appropriate button below for your preferred installation method.<br><br>
|
Click the appropriate button below for your preferred installation method.<br /><br />
|
||||||
<form action="install.php?page=2" method="post">
|
<form action="install.php?page=2" method="post">
|
||||||
<input type="submit" name="complete" value="Complete Setup" /><br> - OR - <br><input type="submit" name="partial" value="Partial Setup" />
|
<input type="submit" name="complete" value="Complete Setup" /><br /> - OR - <br /><input type="submit" name="partial" value="Partial Setup" />
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,7 +51,7 @@ function first()
|
||||||
*/
|
*/
|
||||||
function second()
|
function second()
|
||||||
{
|
{
|
||||||
echo "<html><head><title>Dragon Knight Installation</title></head><body><b>Dragon Knight Installation: Page Two</b><br><br>";
|
echo "<html><head><title>Dragon Knight Installation</title></head><body><b>Dragon Knight Installation: Page Two</b><br /><br />";
|
||||||
|
|
||||||
$full = isset($_POST["complete"]);
|
$full = isset($_POST["complete"]);
|
||||||
|
|
||||||
|
@ -63,7 +64,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Babble Box table created.<br>' : 'Error creating Babble Box table.';
|
echo $query === true ? 'Babble Box table created.<br />' : 'Error creating Babble Box table.';
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
CREATE TABLE control (
|
CREATE TABLE control (
|
||||||
|
@ -73,6 +74,8 @@ function second()
|
||||||
`gameopen` INTEGER NOT NULL DEFAULT 0,
|
`gameopen` INTEGER NOT NULL DEFAULT 0,
|
||||||
`gameurl` TEXT NOT NULL DEFAULT '',
|
`gameurl` TEXT NOT NULL DEFAULT '',
|
||||||
`adminemail` TEXT NOT NULL DEFAULT '',
|
`adminemail` TEXT NOT NULL DEFAULT '',
|
||||||
|
`forumtype` INTEGER NOT NULL DEFAULT 0,
|
||||||
|
`forumaddress` TEXT NOT NULL DEFAULT '',
|
||||||
`class1name` TEXT NOT NULL DEFAULT '',
|
`class1name` TEXT NOT NULL DEFAULT '',
|
||||||
`class2name` TEXT NOT NULL DEFAULT '',
|
`class2name` TEXT NOT NULL DEFAULT '',
|
||||||
`class3name` TEXT NOT NULL DEFAULT '',
|
`class3name` TEXT NOT NULL DEFAULT '',
|
||||||
|
@ -89,11 +92,11 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Control table created.<br>' : 'Error creating Control table.';
|
echo $query === true ? 'Control table created.<br />' : 'Error creating Control table.';
|
||||||
|
|
||||||
$query = db()->exec("INSERT INTO control VALUES (1, 'Dragon Knight', 250, 1, '', '', 1, '', 'Mage', 'Warrior', 'Paladin', 'Easy', 1, 'Medium', 1.2, 'Hard', 1.5, 1, 1, 1, 1);");
|
$query = db()->exec("INSERT INTO control VALUES (1, 'Dragon Knight', 250, 1, '', '', 1, '', 'Mage', 'Warrior', 'Paladin', 'Easy', 1, 'Medium', 1.2, 'Hard', 1.5, 1, 1, 1, 1);");
|
||||||
|
|
||||||
echo $query === true ? 'Control table populated.<br>' : 'Error populating Control table.';
|
echo $query === true ? 'Control table populated.<br />' : 'Error populating Control table.';
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
CREATE TABLE drops (
|
CREATE TABLE drops (
|
||||||
|
@ -106,7 +109,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query == true ? 'Drops table created.<br>' : 'Error creating Drops table.';
|
echo $query == true ? 'Drops table created.<br />' : 'Error creating Drops table.';
|
||||||
|
|
||||||
if ($full) {
|
if ($full) {
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -145,7 +148,7 @@ function second()
|
||||||
(32, 'Fortune Drop', 5, 1, 'goldbonus,10', 'X');
|
(32, 'Fortune Drop', 5, 1, 'goldbonus,10', 'X');
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Drops table populated.<br>' : 'Error populating Drops table.';
|
echo $query === true ? 'Drops table populated.<br />' : 'Error populating Drops table.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -161,7 +164,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Forum table created.<br>' : 'Error creating Forum table.';
|
echo $query === true ? 'Forum table created.<br />' : 'Error creating Forum table.';
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
CREATE TABLE items (
|
CREATE TABLE items (
|
||||||
|
@ -174,7 +177,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Items table created.<br>' : 'Error creating Items table.';
|
echo $query === true ? 'Items table created.<br />' : 'Error creating Items table.';
|
||||||
|
|
||||||
if ($full) {
|
if ($full) {
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -214,7 +217,7 @@ function second()
|
||||||
(33, 3, 'Destiny Aegis', 25000, 100, 'maxhp,50');
|
(33, 3, 'Destiny Aegis', 25000, 100, 'maxhp,50');
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Items table populated.<br>' : 'Error populating Items table.';
|
echo $query === true ? 'Items table populated.<br />' : 'Error populating Items table.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -244,7 +247,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Levels table created.<br>' : 'Error creating Levels table.';
|
echo $query === true ? 'Levels table created.<br />' : 'Error creating Levels table.';
|
||||||
|
|
||||||
if ($full) {
|
if ($full) {
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -351,7 +354,7 @@ function second()
|
||||||
(100, 16777215, 0, 0, 0, 0, 0, 0, 16777215, 0, 0, 0, 0, 0, 0, 16777215, 0, 0, 0, 0, 0, 0);
|
(100, 16777215, 0, 0, 0, 0, 0, 0, 16777215, 0, 0, 0, 0, 0, 0, 16777215, 0, 0, 0, 0, 0, 0);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Levels table populated.<br>' : 'Error populating Levels table.';
|
echo $query === true ? 'Levels table populated.<br />' : 'Error populating Levels table.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -368,7 +371,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Monsters table created.<br>' : 'Error creating Monsters table.';
|
echo $query === true ? 'Monsters table created.<br />' : 'Error creating Monsters table.';
|
||||||
|
|
||||||
if ($full) {
|
if ($full) {
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -526,7 +529,7 @@ function second()
|
||||||
(151, 'Lucifuge', 600, 600, 400, 50, 10000, 10000, 2);
|
(151, 'Lucifuge', 600, 600, 400, 50, 10000, 10000, 2);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Monsters table populated.<br>' : 'Error populating Monsters table.';
|
echo $query === true ? 'Monsters table populated.<br />' : 'Error populating Monsters table.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -537,11 +540,11 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'News table created.<br>' : 'Error creating News table.';
|
echo $query === true ? 'News table created.<br />' : 'Error creating News table.';
|
||||||
|
|
||||||
$query = db()->exec("INSERT INTO news VALUES (1, '2004-01-01 12:00:00', 'This is the first news post. Please use the admin control panel to add another one and make this one go away.');");
|
$query = db()->exec("INSERT INTO news VALUES (1, '2004-01-01 12:00:00', 'This is the first news post. Please use the admin control panel to add another one and make this one go away.');");
|
||||||
|
|
||||||
echo $query === true ? 'News table populated.<br>' : 'Error populating News table.';
|
echo $query === true ? 'News table populated.<br />' : 'Error populating News table.';
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
CREATE TABLE spells (
|
CREATE TABLE spells (
|
||||||
|
@ -553,7 +556,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Spells table created.<br>' : 'Error creating Spells table.';
|
echo $query === true ? 'Spells table created.<br />' : 'Error creating Spells table.';
|
||||||
|
|
||||||
if ($full) {
|
if ($full) {
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -579,7 +582,7 @@ function second()
|
||||||
(19, 'Barrier', 30, 50, 5);
|
(19, 'Barrier', 30, 50, 5);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Spells table populated.<br>' : 'Error populating Spells table.';
|
echo $query === true ? 'Spells table populated.<br />' : 'Error populating Spells table.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -595,7 +598,7 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Towns table created.<br>' : 'Error creating Towns table.';
|
echo $query === true ? 'Towns table created.<br />' : 'Error creating Towns table.';
|
||||||
|
|
||||||
if ($full) {
|
if ($full) {
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -610,7 +613,7 @@ function second()
|
||||||
(8, 'Endworld', -250, -250, 125, 9000, 160, '16,27,33');
|
(8, 'Endworld', -250, -250, 125, 9000, 160, '16,27,33');
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Towns table populated.<br>' : 'Error populating Towns table.';
|
echo $query === true ? 'Towns table populated.<br />' : 'Error populating Towns table.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = db()->exec(<<<SQL
|
$query = db()->exec(<<<SQL
|
||||||
|
@ -619,12 +622,13 @@ function second()
|
||||||
`username` TEXT NOT NULL,
|
`username` TEXT NOT NULL,
|
||||||
`password` TEXT NOT NULL,
|
`password` TEXT NOT NULL,
|
||||||
`email` TEXT NOT NULL,
|
`email` TEXT NOT NULL,
|
||||||
`verify` TEXT NOT NULL default '',
|
`verify` INTEGER NOT NULL default 0,
|
||||||
`regdate` datetime NOT NULL default CURRENT_TIMESTAMP,
|
`regdate` datetime NOT NULL default CURRENT_TIMESTAMP,
|
||||||
`onlinetime` datetime NOT NULL default CURRENT_TIMESTAMP,
|
`onlinetime` datetime NOT NULL default CURRENT_TIMESTAMP,
|
||||||
`authlevel` INTEGER NOT NULL default 0,
|
`authlevel` INTEGER NOT NULL default 0,
|
||||||
`latitude` INTEGER NOT NULL default 0,
|
`latitude` INTEGER NOT NULL default 0,
|
||||||
`longitude` INTEGER NOT NULL default 0,
|
`longitude` INTEGER NOT NULL default 0,
|
||||||
|
`difficulty` INTEGER NOT NULL default 0,
|
||||||
`charclass` INTEGER NOT NULL default 0,
|
`charclass` INTEGER NOT NULL default 0,
|
||||||
`currentaction` TEXT NOT NULL default 'In Town',
|
`currentaction` TEXT NOT NULL default 'In Town',
|
||||||
`currentfight` INTEGER NOT NULL default 0,
|
`currentfight` INTEGER NOT NULL default 0,
|
||||||
|
@ -667,10 +671,11 @@ function second()
|
||||||
);
|
);
|
||||||
SQL);
|
SQL);
|
||||||
|
|
||||||
echo $query === true ? 'Users table created.<br>' : 'Error creating Users table.';
|
echo $query === true ? 'Users table created.<br />' : 'Error creating Users table.';
|
||||||
|
|
||||||
$time = round((microtime(true) - START), 4);
|
$time = round((microtime(true) - START), 4);
|
||||||
echo "<br>Database setup complete in $time seconds.<br><br><a href=\"install.php?page=3\">Click here to continue with installation.</a></body></html>";
|
echo "<br />Database setup complete in $time seconds.<br /><br /><a href=\"install.php?page=3\">Click here to continue with installation.</a></body></html>";
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -684,22 +689,25 @@ function third()
|
||||||
<title>Dragon Knight Installation</title>
|
<title>Dragon Knight Installation</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<b>Dragon Knight Installation: Page Three</b><br><br>
|
<b>Dragon Knight Installation: Page Three</b><br /><br />
|
||||||
Now you must create an administrator account so you can use the control panel. Fill out the form below to create your account. You will be able to customize the class names through the control panel once your admin account is created.<br><br>
|
Now you must create an administrator account so you can use the control panel. Fill out the form below to create your account. You will be able to customize the class names through the control panel once your admin account is created.<br /><br />
|
||||||
<form action="install.php?page=4" method="post">
|
<form action="install.php?page=4" method="post">
|
||||||
<table width="50%">
|
<table width="50%">
|
||||||
<tr><td width="20%" style="vertical-align:top;">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /><br><br><br></td></tr>
|
<tr><td width="20%" style="vertical-align:top;">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /><br /><br /><br /></td></tr>
|
||||||
<tr><td style="vertical-align:top;">Password:</td><td><input type="password" name="password1" size="30" maxlength="30" /></td></tr>
|
<tr><td style="vertical-align:top;">Password:</td><td><input type="password" name="password1" size="30" maxlength="30" /></td></tr>
|
||||||
<tr><td style="vertical-align:top;">Verify Password:</td><td><input type="password" name="password2" size="30" maxlength="30" /><br><br><br></td></tr>
|
<tr><td style="vertical-align:top;">Verify Password:</td><td><input type="password" name="password2" size="30" maxlength="30" /><br /><br /><br /></td></tr>
|
||||||
<tr><td style="vertical-align:top;">Email Address:</td><td><input type="text" name="email1" size="30" maxlength="100" /></td></tr>
|
<tr><td style="vertical-align:top;">Email Address:</td><td><input type="text" name="email1" size="30" maxlength="100" /></td></tr>
|
||||||
<tr><td style="vertical-align:top;">Verify Email:</td><td><input type="text" name="email2" size="30" maxlength="100" /><br><br><br></td></tr>
|
<tr><td style="vertical-align:top;">Verify Email:</td><td><input type="text" name="email2" size="30" maxlength="100" /><br /><br /><br /></td></tr>
|
||||||
<tr><td style="vertical-align:top;">Character Class:</td><td><select name="charclass"><option value="1">Mage</option><option value="2">Warrior</option><option value="3">Paladin</option></select></td></tr>
|
<tr><td style="vertical-align:top;">Character Class:</td><td><select name="charclass"><option value="1">Mage</option><option value="2">Warrior</option><option value="3">Paladin</option></select></td></tr>
|
||||||
|
<tr><td style="vertical-align:top;">Difficulty:</td><td><select name="difficulty"><option value="1">Easy</option><option value="2">Medium</option><option value="3">Hard</option></select></td></tr>
|
||||||
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -759,11 +767,11 @@ function fourth()
|
||||||
<title>Dragon Knight Installation</title>
|
<title>Dragon Knight Installation</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<b>Dragon Knight Installation: Page Four</b><br><br>
|
<b>Dragon Knight Installation: Page Four</b><br /><br />
|
||||||
Your admin account was created successfully. Installation is complete.<br><br>
|
Your admin account was created successfully. Installation is complete.<br /><br />
|
||||||
Be sure to delete install.php from your Dragon Knight directory for security purposes.<br><br>
|
Be sure to delete install.php from your Dragon Knight directory for security purposes.<br /><br />
|
||||||
You are now ready to <a href="index.php">play the game</a>. Note that you must log in through the public section before being allowed into the control panel. Once logged in, an "Admin" link will appear in the Functions box of the left sidebar panel.<br><br/>
|
You are now ready to <a href="index.php">play the game</a>. Note that you must log in through the public section before being allowed into the control panel. Once logged in, an "Admin" link will appear in the Functions box of the left sidebar panel.<br /><br/>
|
||||||
Thank you for using Dragon Knight!<br><br>-----<br><br>
|
Thank you for using Dragon Knight!<br /><br />-----<br /><br />
|
||||||
<b>Optional:</b> Dragon Knight is a free product, and does not require registration of any sort. However, there is an
|
<b>Optional:</b> Dragon Knight is a free product, and does not require registration of any sort. However, there is an
|
||||||
optional "call home" function in the installer, which notifies the author of your game installation. The ONLY information
|
optional "call home" function in the installer, which notifies the author of your game installation. The ONLY information
|
||||||
transmitted with this function is the URL to your game. This is included mainly to satisfy the author's curiosity about
|
transmitted with this function is the URL to your game. This is included mainly to satisfy the author's curiosity about
|
||||||
|
@ -772,6 +780,8 @@ function fourth()
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -780,7 +790,7 @@ function fourth()
|
||||||
function fifth()
|
function fifth()
|
||||||
{
|
{
|
||||||
if (mail("sky@sharkk.net", "Dragon Knight Call Home", $_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"]) !== true) {
|
if (mail("sky@sharkk.net", "Dragon Knight Call Home", $_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"]) !== true) {
|
||||||
exit('Dragon Knight was unable to send your URL. Please go back and try again, or just continue on to <a href=\"index.php\">the game</a>.');
|
die('Dragon Knight was unable to send your URL. Please go back and try again, or just continue on to <a href=\"index.php\">the game</a>.');
|
||||||
}
|
}
|
||||||
|
|
||||||
echo <<<HTML
|
echo <<<HTML
|
||||||
|
@ -789,10 +799,12 @@ function fifth()
|
||||||
<title>Dragon Knight Installation</title>
|
<title>Dragon Knight Installation</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<b>Dragon Knight Installation: Page Five</b><br><br>
|
<b>Dragon Knight Installation: Page Five</b><br /><br />
|
||||||
Thank you for submitting your URL!<br><br>
|
Thank you for submitting your URL!<br /><br />
|
||||||
You are now ready to <a href="index.php">play the game</a>. Note that you must log in through the public section before being allowed into the control panel. Once logged in, an "Admin" link will appear in the Functions box of the left sidebar panel.
|
You are now ready to <a href="index.php">play the game</a>. Note that you must log in through the public section before being allowed into the control panel. Once logged in, an "Admin" link will appear in the Functions box of the left sidebar panel.
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@
|
||||||
|
|
||||||
// login.php :: Handles logins and cookies.
|
// login.php :: Handles logins and cookies.
|
||||||
|
|
||||||
if (!file_exists('../.installed')) redirect('install.php');
|
if (!file_exists('../.installed')) {
|
||||||
|
header('Location: install.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
require_once '../src/lib.php';
|
require_once '../src/lib.php';
|
||||||
|
|
||||||
|
@ -13,12 +16,10 @@ match ($_GET['do'] ?? 'login') {
|
||||||
|
|
||||||
function login()
|
function login()
|
||||||
{
|
{
|
||||||
if (checkcookies() !== false) redirect('index.php');
|
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
$u = trim($_POST['username'] ?? '');
|
$u = trim($_POST['username'] ?? '');
|
||||||
|
|
||||||
$query = db()->query('SELECT id, username, password FROM users WHERE username = ? LIMIT 1;', [$u]);
|
$query = db()->query('SELECT * FROM users WHERE username = ? LIMIT 1;', [$u]);
|
||||||
if ($query === false) die("Invalid username or password. Please go back and try again.");
|
if ($query === false) die("Invalid username or password. Please go back and try again.");
|
||||||
$row = $query->fetchArray(SQLITE3_ASSOC);
|
$row = $query->fetchArray(SQLITE3_ASSOC);
|
||||||
if (!password_verify($_POST['password'] ?? '', $row['password'])) die("Invalid username or password. Please go back and try again.");
|
if (!password_verify($_POST['password'] ?? '', $row['password'])) die("Invalid username or password. Please go back and try again.");
|
||||||
|
|
303
public/users.php
303
public/users.php
|
@ -1,233 +1,222 @@
|
||||||
<?php
|
<?php // users.php :: Handles user account functions.
|
||||||
|
|
||||||
// users.php :: Handles user account functions.
|
include('lib.php');
|
||||||
|
$link = opendb();
|
||||||
|
|
||||||
if (!file_exists('../.installed')) redirect('install.php');
|
if (isset($_GET["do"])) {
|
||||||
|
|
||||||
require_once '../src/lib.php';
|
$do = $_GET["do"];
|
||||||
|
if ($do == "register") { register(); }
|
||||||
|
elseif ($do == "verify") { verify(); }
|
||||||
|
elseif ($do == "lostpassword") { lostpassword(); }
|
||||||
|
elseif ($do == "changepassword") { changepassword(); }
|
||||||
|
|
||||||
$controlrow = get_control_row();
|
}
|
||||||
|
|
||||||
$do = $_GET['do'] ?? 'register';
|
function register() { // Register a new account.
|
||||||
match ($do) {
|
|
||||||
'verify' => verify(),
|
|
||||||
'lostpassword' => lostpassword(),
|
|
||||||
'changepassword' => changepassword(),
|
|
||||||
default => register()
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
* Register a new account.
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
*/
|
|
||||||
function register()
|
|
||||||
{
|
|
||||||
global $controlrow;
|
|
||||||
|
|
||||||
if (isset($_POST["submit"])) {
|
if (isset($_POST["submit"])) {
|
||||||
$u = trim($_POST['username'] ?? '');
|
|
||||||
$e = trim($_POST['email1'] ?? '');
|
|
||||||
$e2 = trim($_POST['email2'] ?? '');
|
|
||||||
$p = $_POST['password1'] ?? '';
|
|
||||||
$p2 = $_POST['password2'] ?? '';
|
|
||||||
|
|
||||||
$errors = [];
|
extract($_POST);
|
||||||
|
|
||||||
|
$errors = 0; $errorlist = "";
|
||||||
|
|
||||||
// Process username.
|
// Process username.
|
||||||
if (empty($u) || strlen($u) < 3 || strlen($u) > 18 || !ctype_alnum(str_replace(' ', '', $u))) {
|
if ($username == "") { $errors++; $errorlist .= "Username field is required.<br />"; }
|
||||||
$errors[] = 'Username is required and must be between 3 and 18 characters long and contain only
|
if (preg_match("/[^A-z0-9_\-]/", $username)==1) { $errors++; $errorlist .= "Username must be alphanumeric.<br />"; } // Thanks to "Carlos Pires" from php.net!
|
||||||
alphanumeric characters and spaces.';
|
$usernamequery = doquery("SELECT username FROM {{table}} WHERE username='$username' LIMIT 1","users");
|
||||||
}
|
if (mysql_num_rows($usernamequery) > 0) { $errors++; $errorlist .= "Username already taken - unique username required.<br />"; }
|
||||||
|
|
||||||
if (db()->exists('users', 'username', $u)) {
|
// Process charname.
|
||||||
$errors[] = 'Username already taken. Try another.';
|
if ($charname == "") { $errors++; $errorlist .= "Character Name field is required.<br />"; }
|
||||||
}
|
if (preg_match("/[^A-z0-9_\-]/", $charname)==1) { $errors++; $errorlist .= "Character Name must be alphanumeric.<br />"; } // Thanks to "Carlos Pires" from php.net!
|
||||||
|
$characternamequery = doquery("SELECT charname FROM {{table}} WHERE charname='$charname' LIMIT 1","users");
|
||||||
|
if (mysql_num_rows($characternamequery) > 0) { $errors++; $errorlist .= "Character Name already taken - unique Character Name required.<br />"; }
|
||||||
|
|
||||||
// Process email address.
|
// Process email address.
|
||||||
if (empty($e) || strlen($e) > 255 || !filter_var($e, FILTER_VALIDATE_EMAIL)) {
|
if ($email1 == "" || $email2 == "") { $errors++; $errorlist .= "Email fields are required.<br />"; }
|
||||||
$errors[] = 'Email is required must be a valid email address.';
|
if ($email1 != $email2) { $errors++; $errorlist .= "Emails don't match.<br />"; }
|
||||||
}
|
if (! is_email($email1)) { $errors++; $errorlist .= "Email isn't valid.<br />"; }
|
||||||
|
$emailquery = doquery("SELECT email FROM {{table}} WHERE email='$email1' LIMIT 1","users");
|
||||||
if ($e !== $e2) {
|
if (mysql_num_rows($emailquery) > 0) { $errors++; $errorlist .= "Email already taken - unique email address required.<br />"; }
|
||||||
$errors[] = 'Verify Email must match.';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db()->exists('users', 'email', $e)) {
|
|
||||||
$errors[] = 'Email already taken. Forgot your password?';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process password.
|
// Process password.
|
||||||
if (empty($p) || strlen($p) < 6) {
|
if (trim($password1) == "") { $errors++; $errorlist .= "Password field is required.<br />"; }
|
||||||
$errors[] = 'Password is required and must be at least 6 characters long.';
|
if (preg_match("/[^A-z0-9_\-]/", $password1)==1) { $errors++; $errorlist .= "Password must be alphanumeric.<br />"; } // Thanks to "Carlos Pires" from php.net!
|
||||||
}
|
if ($password1 != $password2) { $errors++; $errorlist .= "Passwords don't match.<br />"; }
|
||||||
|
$password = md5($password1);
|
||||||
|
|
||||||
if ($p2 !== $p) {
|
if ($errors == 0) {
|
||||||
$errors[] = 'Verify Password must match.';
|
|
||||||
}
|
|
||||||
|
|
||||||
$password = password_hash($p, PASSWORD_ARGON2ID);
|
if ($controlrow["verifyemail"] == 1) {
|
||||||
|
$verifycode = "";
|
||||||
if (count($errors) !== 0) {
|
for ($i=0; $i<8; $i++) {
|
||||||
$err = "<ul>";
|
$verifycode .= chr(rand(65,90));
|
||||||
foreach ($errors as $error) $err .= "<li>$error</li>";
|
|
||||||
$err .= "</ul>";
|
|
||||||
$page = "The following error(s) occurred when your account was being made:<br><span style=\"color:red;\">$err</span><br>Please go back and try again.";
|
|
||||||
} else {
|
|
||||||
$token = ($controlrow['verifyemail'] == true) ? token(8) : 'g2g';
|
|
||||||
db()->query('INSERT INTO users (verify, username, password, email, charclass) VALUES (?, ?, ?, ?, ?)', [
|
|
||||||
$token, $u, $password, $e, $_POST['charclass'] ?? 1
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($controlrow['verifyemail'] == true) {
|
|
||||||
if (sendregmail($e, $token)) {
|
|
||||||
$page = "Your account was created successfully.<br><br>You should receive an Account Verification email shortly. You will need the verification code contained in that email before you are allowed to log in. Once you have received the email, please visit the <a href=\"users.php?do=verify\">Verification Page</a> to enter your code and start playing.";
|
|
||||||
} else {
|
|
||||||
$page = "Your account was created successfully.<br><br>However, there was a problem sending your verification email. Please check with the game administrator to help resolve this problem.";
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$page = "Your account was created succesfully.<br><br>You may now continue to the <a href=\"login.php?do=login\">Login Page</a> and continue playing ".$controlrow["gamename"]."!";
|
$verifycode='1';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$query = doquery("INSERT INTO {{table}} SET id='',regdate=NOW(),verify='$verifycode',username='$username',password='$password',email='$email1',charname='$charname',charclass='$charclass',difficulty='$difficulty'", "users") or die(mysql_error());
|
||||||
|
|
||||||
|
if ($controlrow["verifyemail"] == 1) {
|
||||||
|
if (sendregmail($email1, $verifycode) == true) {
|
||||||
|
$page = "Your account was created successfully.<br /><br />You should receive an Account Verification email shortly. You will need the verification code contained in that email before you are allowed to log in. Once you have received the email, please visit the <a href=\"users.php?do=verify\">Verification Page</a> to enter your code and start playing.";
|
||||||
|
} else {
|
||||||
|
$page = "Your account was created successfully.<br /><br />However, there was a problem sending your verification email. Please check with the game administrator to help resolve this problem.";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($controlrow["verifyemail"] == true) {
|
$page = "Your account was created succesfully.<br /><br />You may now continue to the <a href=\"login.php?do=login\">Login Page</a> and continue playing ".$controlrow["gamename"]."!";
|
||||||
$controlrow["verifytext"] = "<br><span class=\"small\">A verification code will be sent to the address above, and you will not be able to log in without first entering the code. Please be sure to enter your correct email address.</span>";
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$page = "The following error(s) occurred when your account was being made:<br /><span style=\"color:red;\">$errorlist</span><br />Please go back and try again.";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$page = gettemplate("register");
|
||||||
|
if ($controlrow["verifyemail"] == 1) {
|
||||||
|
$controlrow["verifytext"] = "<br /><span class=\"small\">A verification code will be sent to the address above, and you will not be able to log in without first entering the code. Please be sure to enter your correct email address.</span>";
|
||||||
} else {
|
} else {
|
||||||
$controlrow["verifytext"] = "";
|
$controlrow["verifytext"] = "";
|
||||||
}
|
}
|
||||||
|
$page = parsetemplate($page, $controlrow);
|
||||||
|
|
||||||
$page = parsetemplate(gettemplate("register"), $controlrow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
||||||
display($page, "Register", false, false, false);
|
display($page, "Register", false, false, false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function verify()
|
function verify() {
|
||||||
{
|
|
||||||
if (isset($_POST["submit"])) {
|
if (isset($_POST["submit"])) {
|
||||||
$u = trim($_POST['username'] ?? '');
|
extract($_POST);
|
||||||
$e = trim($_POST['email'] ?? '');
|
$userquery = doquery("SELECT username,email,verify FROM {{table}} WHERE username='$username' LIMIT 1","users");
|
||||||
$t = trim($_POST['token'] ?? '');
|
if (mysql_num_rows($userquery) != 1) { die("No account with that username."); }
|
||||||
|
$userrow = mysql_fetch_array($userquery);
|
||||||
$query = db()->query('SELECT id FROM users WHERE username=? AND email=? AND verify=? LIMIT 1;', [$u, $e, $t]);
|
if ($userrow["verify"] == 1) { die("Your account is already verified."); }
|
||||||
if ($query === false) exit('Verification failed. Go back, double-check your details, and try again.');
|
if ($userrow["email"] != $email) { die("Incorrect email address."); }
|
||||||
|
if ($userrow["verify"] != $verify) { die("Incorrect verification code."); }
|
||||||
db()->query("UPDATE users SET verify='g2g' WHERE username=?;", [$u]);
|
// If we've made it this far, should be safe to update their account.
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET verify='1' WHERE username='$username' LIMIT 1","users");
|
||||||
display("Your account was verified successfully.<br><br>You may now continue to the <a href=\"login.php?do=login\">Login Page</a> and start playing the game.<br><br>Thanks for playing!","Verify Email",false,false,false);
|
display("Your account was verified successfully.<br /><br />You may now continue to the <a href=\"login.php?do=login\">Login Page</a> and start playing the game.<br /><br />Thanks for playing!","Verify Email",false,false,false);
|
||||||
}
|
}
|
||||||
|
$page = gettemplate("verify");
|
||||||
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
||||||
display(gettemplate("verify"), "Verify Email", false, false, false);
|
display($page, "Verify Email", false, false, false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function lostpassword()
|
function lostpassword() {
|
||||||
{
|
|
||||||
if (isset($_POST["submit"])) {
|
if (isset($_POST["submit"])) {
|
||||||
$e = trim($_POST['email'] ?? '');
|
extract($_POST);
|
||||||
|
$userquery = doquery("SELECT email FROM {{table}} WHERE email='$email' LIMIT 1","users");
|
||||||
if (!db()->exists('users', 'email', $e)) exit("No account with that email address.");
|
if (mysql_num_rows($userquery) != 1) { die("No account with that email address."); }
|
||||||
|
$newpass = "";
|
||||||
$newpass = token(16);
|
for ($i=0; $i<8; $i++) {
|
||||||
$hashed = password_hash($newpass, PASSWORD_ARGON2ID);
|
$newpass .= chr(rand(65,90));
|
||||||
|
}
|
||||||
db()->query('UPDATE users SET password=? WHERE email=?;', [$hashed, $e]);
|
$md5newpass = md5($newpass);
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET password='$md5newpass' WHERE email='$email' LIMIT 1","users");
|
||||||
if (sendpassemail($e, $newpass)) {
|
if (sendpassemail($email,$newpass) == true) {
|
||||||
display("Your new password was emailed to the address you provided.<br><br>Once you receive it, you may <a href=\"login.php?do=login\">Log In</a> and continue playing.<br><br>Thank you.","Lost Password",false,false,false);
|
display("Your new password was emailed to the address you provided.<br /><br />Once you receive it, you may <a href=\"login.php?do=login\">Log In</a> and continue playing.<br /><br />Thank you.","Lost Password",false,false,false);
|
||||||
} else {
|
} else {
|
||||||
display("There was an error sending your new password.<br><br>Please check with the game administrator for more information.<br><br>We apologize for the inconvience.","Lost Password",false,false,false);
|
display("There was an error sending your new password.<br /><br />Please check with the game administrator for more information.<br /><br />We apologize for the inconvience.","Lost Password",false,false,false);
|
||||||
}
|
}
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
$page = gettemplate("lostpassword");
|
||||||
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
||||||
display(gettemplate("lostpassword"), "Lost Password", false, false, false);
|
display($page, "Lost Password", false, false, false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function changepassword()
|
function changepassword() {
|
||||||
{
|
|
||||||
if (isset($_POST["submit"])) {
|
if (isset($_POST["submit"])) {
|
||||||
$u = trim($_POST['username'] ?? '');
|
extract($_POST);
|
||||||
$p = $_POST['password'] ?? '';
|
$userquery = doquery("SELECT * FROM {{table}} WHERE username='$username' LIMIT 1","users");
|
||||||
$np = $_POST['new_password'] ?? '';
|
if (mysql_num_rows($userquery) != 1) { die("No account with that username."); }
|
||||||
$np2 = $_POST['new_password2'] ?? '';
|
$userrow = mysql_fetch_array($userquery);
|
||||||
|
if ($userrow["password"] != md5($oldpass)) { die("The old password you provided was incorrect."); }
|
||||||
$user = db()->query("SELECT password FROM users WHERE username=? LIMIT 1;", [$u]);
|
if (preg_match("/[^A-z0-9_\-]/", $newpass1)==1) { die("New password must be alphanumeric."); } // Thanks to "Carlos Pires" from php.net!
|
||||||
$user = $user->fetchArray(SQLITE3_ASSOC);
|
if ($newpass1 != $newpass2) { die("New passwords don't match."); }
|
||||||
if ($user === false) exit("No account with that username.");
|
$realnewpass = md5($newpass1);
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET password='$realnewpass' WHERE username='$username' LIMIT 1","users");
|
||||||
if (!password_verify($p, $user['password'])) exit("The old password you provided was incorrect.");
|
if (isset($_COOKIE["dkgame"])) { setcookie("dkgame", "", time()-100000, "/", "", 0); }
|
||||||
|
display("Your password was changed successfully.<br /><br />You have been logged out of the game to avoid cookie errors.<br /><br />Please <a href=\"login.php?do=login\">log back in</a> to continue playing.","Change Password",false,false,false);
|
||||||
if (empty($np) || strlen($np) < 6) {
|
die();
|
||||||
$errors[] = 'New password is required and must be at least 6 characters long.';
|
|
||||||
}
|
}
|
||||||
|
$page = gettemplate("changepassword");
|
||||||
if ($np2 !== $np) {
|
|
||||||
$errors[] = 'Verify New Password must match.';
|
|
||||||
}
|
|
||||||
|
|
||||||
$realnewpass = password_hash($np, PASSWORD_ARGON2ID);
|
|
||||||
db()->query('UPDATE users SET password=? WHERE username=?;', [$realnewpass, $u]);
|
|
||||||
|
|
||||||
set_cookie('dkgame', '', -3600);
|
|
||||||
|
|
||||||
display("Your password was changed successfully.<br><br>You have been logged out of the game to avoid errors.<br><br>Please <a href=\"login.php?do=login\">log back in</a> to continue playing.","Change Password",false,false,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
$topnav = "<a href=\"login.php?do=login\"><img src=\"images/button_login.gif\" alt=\"Log In\" border=\"0\" /></a><a href=\"users.php?do=register\"><img src=\"images/button_register.gif\" alt=\"Register\" border=\"0\" /></a><a href=\"help.php\"><img src=\"images/button_help.gif\" alt=\"Help\" border=\"0\" /></a>";
|
||||||
display(gettemplate("changepassword"), "Change Password", false, false, false);
|
display($page, "Change Password", false, false, false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendpassemail($emailaddress, $password)
|
function sendpassemail($emailaddress, $password) {
|
||||||
{
|
|
||||||
global $controlrow;
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
extract($controlrow);
|
extract($controlrow);
|
||||||
|
|
||||||
$email = <<<HTML
|
$email = <<<END
|
||||||
You or someone using your email address submitted a Lost Password application on the $gamename server, located at $gameurl.
|
You or someone using your email address submitted a Lost Password application on the $gamename server, located at $gameurl.
|
||||||
|
|
||||||
We have issued you a new password so you can log back into the game.
|
We have issued you a new password so you can log back into the game.
|
||||||
|
|
||||||
Your new password is: $password
|
Your new password is: $password
|
||||||
|
|
||||||
Thanks for playing.
|
Thanks for playing.
|
||||||
HTML;
|
END;
|
||||||
|
|
||||||
$status = mymail($emailaddress, "$gamename Lost Password", $email);
|
$status = mymail($emailaddress, "$gamename Lost Password", $email);
|
||||||
return $status;
|
return $status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendregmail($emailaddress, $vercode)
|
function sendregmail($emailaddress, $vercode) {
|
||||||
{
|
|
||||||
global $controlrow;
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
extract($controlrow);
|
extract($controlrow);
|
||||||
$verurl = $gameurl . "?do=verify";
|
$verurl = $gameurl . "?do=verify";
|
||||||
|
|
||||||
$email = <<<HTML
|
$email = <<<END
|
||||||
You or someone using your email address recently signed up for an account on the $gamename server, located at $gameurl.
|
You or someone using your email address recently signed up for an account on the $gamename server, located at $gameurl.
|
||||||
|
|
||||||
This email is sent to verify your registration email. In order to begin using your account, you must verify your email address.
|
This email is sent to verify your registration email. In order to begin using your account, you must verify your email address.
|
||||||
Please visit the Verification Page ($verurl) and enter the code below to activate your account.
|
Please visit the Verification Page ($verurl) and enter the code below to activate your account.
|
||||||
Verification code: $vercode
|
Verification code: $vercode
|
||||||
|
|
||||||
If you were not the person who signed up for the game, please disregard this message. You will not be emailed again.
|
If you were not the person who signed up for the game, please disregard this message. You will not be emailed again.
|
||||||
HTML;
|
END;
|
||||||
|
|
||||||
$status = mymail($emailaddress, "$gamename Account Verification", $email);
|
$status = mymail($emailaddress, "$gamename Account Verification", $email);
|
||||||
return $status;
|
return $status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function mymail($to, $title, $body, $from = '') { // thanks to arto dot PLEASE dot DO dot NOT dot SPAM at artoaaltonen dot fi.
|
||||||
* thanks to arto dot PLEASE dot DO dot NOT dot SPAM at artoaaltonen dot fi.
|
|
||||||
*/
|
$controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control");
|
||||||
function mymail($to, $title, $body, $from = '')
|
$controlrow = mysql_fetch_array($controlquery);
|
||||||
{
|
|
||||||
global $controlrow;
|
|
||||||
extract($controlrow);
|
extract($controlrow);
|
||||||
|
|
||||||
|
|
||||||
$from = trim($from);
|
$from = trim($from);
|
||||||
|
|
||||||
if (!$from) $from = '<'.$controlrow["adminemail"].'>';
|
if (!$from) {
|
||||||
|
$from = '<'.$controlrow["adminemail"].'>';
|
||||||
|
}
|
||||||
|
|
||||||
$rp = $controlrow["adminemail"];
|
$rp = $controlrow["adminemail"];
|
||||||
$org = '$gameurl';
|
$org = '$gameurl';
|
||||||
|
@ -249,4 +238,8 @@ function mymail($to, $title, $body, $from = '')
|
||||||
$body = str_replace("\n", "\r\n", $body);
|
$body = str_replace("\n", "\r\n", $body);
|
||||||
|
|
||||||
return mail($to, $title, $body, $head);
|
return mail($to, $title, $body, $head);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -22,6 +22,7 @@ class Database extends SQLite3
|
||||||
{
|
{
|
||||||
$p = strpos($query, '?') !== false;
|
$p = strpos($query, '?') !== false;
|
||||||
$stmt = $this->prepare($query);
|
$stmt = $this->prepare($query);
|
||||||
|
|
||||||
foreach ($params ?? [] as $k => $v) $stmt->bindValue($p ? $k + 1 : $k, $v, $this->getSQLiteType($v));
|
foreach ($params ?? [] as $k => $v) $stmt->bindValue($p ? $k + 1 : $k, $v, $this->getSQLiteType($v));
|
||||||
|
|
||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
<?php
|
<?php // explore.php :: Handles all map exploring, chances to fight, etc.
|
||||||
|
|
||||||
// explore.php :: Handles all map exploring, chances to fight, etc.
|
function move() {
|
||||||
|
|
||||||
function move()
|
|
||||||
{
|
|
||||||
global $userrow, $controlrow;
|
global $userrow, $controlrow;
|
||||||
|
|
||||||
if ($userrow["currentaction"] == "Fighting") { header("Location: index.php?do=fight"); die(); }
|
if ($userrow["currentaction"] == "Fighting") { header("Location: index.php?do=fight"); die(); }
|
||||||
|
@ -15,16 +13,25 @@ function move()
|
||||||
if (isset($_POST["east"])) { $longitude++; if ($longitude > $controlrow["gamesize"]) { $longitude = $controlrow["gamesize"]; } }
|
if (isset($_POST["east"])) { $longitude++; if ($longitude > $controlrow["gamesize"]) { $longitude = $controlrow["gamesize"]; } }
|
||||||
if (isset($_POST["west"])) { $longitude--; if ($longitude < ($controlrow["gamesize"]*-1)) { $longitude = ($controlrow["gamesize"]*-1); } }
|
if (isset($_POST["west"])) { $longitude--; if ($longitude < ($controlrow["gamesize"]*-1)) { $longitude = ($controlrow["gamesize"]*-1); } }
|
||||||
|
|
||||||
$town = get_town_by_xy($longitude, $latitude);
|
$townquery = doquery("SELECT id FROM {{table}} WHERE latitude='$latitude' AND longitude='$longitude' LIMIT 1", "towns");
|
||||||
if ($town !== false) {
|
if (mysql_num_rows($townquery) > 0) {
|
||||||
require_once __DIR__ . '/towns.php';
|
$townrow = mysql_fetch_array($townquery);
|
||||||
travelto($town['id'], false);
|
include('towns.php');
|
||||||
return;
|
travelto($townrow["id"], false);
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$chancetofight = rand(1, 5);
|
$chancetofight = rand(1,5);
|
||||||
$action = $chancetofight === 1 ? "currentaction='Fighting', currentfight='1'," : "currentaction='Exploring',";
|
if ($chancetofight == 1) {
|
||||||
|
$action = "currentaction='Fighting', currentfight='1',";
|
||||||
|
} else {
|
||||||
|
$action = "currentaction='Exploring',";
|
||||||
|
}
|
||||||
|
|
||||||
db()->query("UPDATE users SET $action latitude = ?, longitude = ?, dropcode = 0 WHERE id = ?;", [$latitude, $longitude, $userrow['id']]);
|
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET $action latitude='$latitude', longitude='$longitude', dropcode='0' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
header("Location: index.php");
|
header("Location: index.php");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
?>
|
110
src/fight.php
110
src/fight.php
|
@ -3,7 +3,7 @@
|
||||||
function fight() { // One big long function that determines the outcome of the fight.
|
function fight() { // One big long function that determines the outcome of the fight.
|
||||||
|
|
||||||
global $userrow, $controlrow;
|
global $userrow, $controlrow;
|
||||||
if ($userrow["currentaction"] != "Fighting") { display("Cheat attempt detected.<br><br>Get a life, loser.", "Error"); }
|
if ($userrow["currentaction"] != "Fighting") { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
$pagearray = array();
|
$pagearray = array();
|
||||||
$playerisdead = 0;
|
$playerisdead = 0;
|
||||||
|
|
||||||
|
@ -41,6 +41,8 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
$monsterrow = mysql_fetch_array($monsterquery);
|
$monsterrow = mysql_fetch_array($monsterquery);
|
||||||
$userrow["currentmonster"] = $monsterrow["id"];
|
$userrow["currentmonster"] = $monsterrow["id"];
|
||||||
$userrow["currentmonsterhp"] = rand((($monsterrow["maxhp"]/5)*4),$monsterrow["maxhp"]);
|
$userrow["currentmonsterhp"] = rand((($monsterrow["maxhp"]/5)*4),$monsterrow["maxhp"]);
|
||||||
|
if ($userrow["difficulty"] == 2) { $userrow["currentmonsterhp"] = ceil($userrow["currentmonsterhp"] * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $userrow["currentmonsterhp"] = ceil($userrow["currentmonsterhp"] * $controlrow["diff3mod"]); }
|
||||||
$userrow["currentmonstersleep"] = 0;
|
$userrow["currentmonstersleep"] = 0;
|
||||||
$userrow["currentmonsterimmune"] = $monsterrow["immune"];
|
$userrow["currentmonsterimmune"] = $monsterrow["immune"];
|
||||||
|
|
||||||
|
@ -64,24 +66,26 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
if ($chancetorun > (rand(1,5) + ceil(sqrt($monsterrow["maxdam"])))) { $chancetorun = 1; } else { $chancetorun = 0; }
|
if ($chancetorun > (rand(1,5) + ceil(sqrt($monsterrow["maxdam"])))) { $chancetorun = 1; } else { $chancetorun = 0; }
|
||||||
|
|
||||||
if ($chancetorun == 0) {
|
if ($chancetorun == 0) {
|
||||||
$pagearray["yourturn"] = "You tried to run away, but were blocked in front!<br><br>";
|
$pagearray["yourturn"] = "You tried to run away, but were blocked in front!<br /><br />";
|
||||||
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br><br>";
|
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br /><br />";
|
||||||
$pagearray["monsterturn"] = "";
|
$pagearray["monsterturn"] = "";
|
||||||
if ($userrow["currentmonstersleep"] != 0) { // Check to wake up.
|
if ($userrow["currentmonstersleep"] != 0) { // Check to wake up.
|
||||||
$chancetowake = rand(1,15);
|
$chancetowake = rand(1,15);
|
||||||
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
||||||
$userrow["currentmonstersleep"] = 0;
|
$userrow["currentmonstersleep"] = 0;
|
||||||
$pagearray["monsterturn"] .= "The monster has woken up.<br>";
|
$pagearray["monsterturn"] .= "The monster has woken up.<br />";
|
||||||
} else {
|
} else {
|
||||||
$pagearray["monsterturn"] .= "The monster is still asleep.<br>";
|
$pagearray["monsterturn"] .= "The monster is still asleep.<br />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
||||||
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
||||||
|
if ($userrow["difficulty"] == 2) { $tohit = ceil($tohit * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $tohit = ceil($tohit * $controlrow["diff3mod"]); }
|
||||||
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
||||||
$tododge = rand(1,150);
|
$tododge = rand(1,150);
|
||||||
if ($tododge <= sqrt($userrow["dexterity"])) {
|
if ($tododge <= sqrt($userrow["dexterity"])) {
|
||||||
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br>";
|
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br />";
|
||||||
$persondamage = 0;
|
$persondamage = 0;
|
||||||
} else {
|
} else {
|
||||||
$persondamage = $tohit - $toblock;
|
$persondamage = $tohit - $toblock;
|
||||||
|
@ -91,7 +95,7 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
}
|
}
|
||||||
if ($persondamage < 1) { $persondamage = 1; }
|
if ($persondamage < 1) { $persondamage = 1; }
|
||||||
}
|
}
|
||||||
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br><br>";
|
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br /><br />";
|
||||||
$userrow["currenthp"] -= $persondamage;
|
$userrow["currenthp"] -= $persondamage;
|
||||||
if ($userrow["currenthp"] <= 0) {
|
if ($userrow["currenthp"] <= 0) {
|
||||||
$newgold = ceil($userrow["gold"]/2);
|
$newgold = ceil($userrow["gold"]/2);
|
||||||
|
@ -113,11 +117,11 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
$pagearray["yourturn"] = "";
|
$pagearray["yourturn"] = "";
|
||||||
$tohit = ceil(rand($userrow["attackpower"]*.75,$userrow["attackpower"])/3);
|
$tohit = ceil(rand($userrow["attackpower"]*.75,$userrow["attackpower"])/3);
|
||||||
$toexcellent = rand(1,150);
|
$toexcellent = rand(1,150);
|
||||||
if ($toexcellent <= sqrt($userrow["strength"])) { $tohit *= 2; $pagearray["yourturn"] .= "Excellent hit!<br>"; }
|
if ($toexcellent <= sqrt($userrow["strength"])) { $tohit *= 2; $pagearray["yourturn"] .= "Excellent hit!<br />"; }
|
||||||
$toblock = ceil(rand($monsterrow["armor"]*.75,$monsterrow["armor"])/3);
|
$toblock = ceil(rand($monsterrow["armor"]*.75,$monsterrow["armor"])/3);
|
||||||
$tododge = rand(1,200);
|
$tododge = rand(1,200);
|
||||||
if ($tododge <= sqrt($monsterrow["armor"])) {
|
if ($tododge <= sqrt($monsterrow["armor"])) {
|
||||||
$tohit = 0; $pagearray["yourturn"] .= "The monster is dodging. No damage has been scored.<br>";
|
$tohit = 0; $pagearray["yourturn"] .= "The monster is dodging. No damage has been scored.<br />";
|
||||||
$monsterdamage = 0;
|
$monsterdamage = 0;
|
||||||
} else {
|
} else {
|
||||||
$monsterdamage = $tohit - $toblock;
|
$monsterdamage = $tohit - $toblock;
|
||||||
|
@ -126,9 +130,9 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
$monsterdamage += ceil($monsterdamage * ($userrow["currentuberdamage"]/100));
|
$monsterdamage += ceil($monsterdamage * ($userrow["currentuberdamage"]/100));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$pagearray["yourturn"] .= "You attack the monster for $monsterdamage damage.<br><br>";
|
$pagearray["yourturn"] .= "You attack the monster for $monsterdamage damage.<br /><br />";
|
||||||
$userrow["currentmonsterhp"] -= $monsterdamage;
|
$userrow["currentmonsterhp"] -= $monsterdamage;
|
||||||
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br><br>";
|
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br /><br />";
|
||||||
if ($userrow["currentmonsterhp"] <= 0) {
|
if ($userrow["currentmonsterhp"] <= 0) {
|
||||||
$updatequery = doquery("UPDATE {{table}} SET currentmonsterhp='0' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
$updatequery = doquery("UPDATE {{table}} SET currentmonsterhp='0' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
header("Location: index.php?do=victory");
|
header("Location: index.php?do=victory");
|
||||||
|
@ -141,17 +145,19 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
$chancetowake = rand(1,15);
|
$chancetowake = rand(1,15);
|
||||||
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
||||||
$userrow["currentmonstersleep"] = 0;
|
$userrow["currentmonstersleep"] = 0;
|
||||||
$pagearray["monsterturn"] .= "The monster has woken up.<br>";
|
$pagearray["monsterturn"] .= "The monster has woken up.<br />";
|
||||||
} else {
|
} else {
|
||||||
$pagearray["monsterturn"] .= "The monster is still asleep.<br>";
|
$pagearray["monsterturn"] .= "The monster is still asleep.<br />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
||||||
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
||||||
|
if ($userrow["difficulty"] == 2) { $tohit = ceil($tohit * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $tohit = ceil($tohit * $controlrow["diff3mod"]); }
|
||||||
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
||||||
$tododge = rand(1,150);
|
$tododge = rand(1,150);
|
||||||
if ($tododge <= sqrt($userrow["dexterity"])) {
|
if ($tododge <= sqrt($userrow["dexterity"])) {
|
||||||
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br>";
|
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br />";
|
||||||
$persondamage = 0;
|
$persondamage = 0;
|
||||||
} else {
|
} else {
|
||||||
$persondamage = $tohit - $toblock;
|
$persondamage = $tohit - $toblock;
|
||||||
|
@ -161,7 +167,7 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
}
|
}
|
||||||
if ($persondamage < 1) { $persondamage = 1; }
|
if ($persondamage < 1) { $persondamage = 1; }
|
||||||
}
|
}
|
||||||
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br><br>";
|
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br /><br />";
|
||||||
$userrow["currenthp"] -= $persondamage;
|
$userrow["currenthp"] -= $persondamage;
|
||||||
if ($userrow["currenthp"] <= 0) {
|
if ($userrow["currenthp"] <= 0) {
|
||||||
$newgold = ceil($userrow["gold"]/2);
|
$newgold = ceil($userrow["gold"]/2);
|
||||||
|
@ -192,35 +198,35 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
if ($userrow["maxhp"] < $newhp) { $newspellrow["attribute"] = $userrow["maxhp"] - $userrow["currenthp"]; $newhp = $userrow["currenthp"] + $newspellrow["attribute"]; }
|
if ($userrow["maxhp"] < $newhp) { $newspellrow["attribute"] = $userrow["maxhp"] - $userrow["currenthp"]; $newhp = $userrow["currenthp"] + $newspellrow["attribute"]; }
|
||||||
$userrow["currenthp"] = $newhp;
|
$userrow["currenthp"] = $newhp;
|
||||||
$userrow["currentmp"] -= $newspellrow["mp"];
|
$userrow["currentmp"] -= $newspellrow["mp"];
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, and gained ".$newspellrow["attribute"]." Hit Points.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, and gained ".$newspellrow["attribute"]." Hit Points.<br /><br />";
|
||||||
} elseif ($newspellrow["type"] == 2) { // Hurt spell.
|
} elseif ($newspellrow["type"] == 2) { // Hurt spell.
|
||||||
if ($userrow["currentmonsterimmune"] == 0) {
|
if ($userrow["currentmonsterimmune"] == 0) {
|
||||||
$monsterdamage = rand((($newspellrow["attribute"]/6)*5), $newspellrow["attribute"]);
|
$monsterdamage = rand((($newspellrow["attribute"]/6)*5), $newspellrow["attribute"]);
|
||||||
$userrow["currentmonsterhp"] -= $monsterdamage;
|
$userrow["currentmonsterhp"] -= $monsterdamage;
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell for $monsterdamage damage.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell for $monsterdamage damage.<br /><br />";
|
||||||
} else {
|
} else {
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, but the monster is immune to it.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, but the monster is immune to it.<br /><br />";
|
||||||
}
|
}
|
||||||
$userrow["currentmp"] -= $newspellrow["mp"];
|
$userrow["currentmp"] -= $newspellrow["mp"];
|
||||||
} elseif ($newspellrow["type"] == 3) { // Sleep spell.
|
} elseif ($newspellrow["type"] == 3) { // Sleep spell.
|
||||||
if ($userrow["currentmonsterimmune"] != 2) {
|
if ($userrow["currentmonsterimmune"] != 2) {
|
||||||
$userrow["currentmonstersleep"] = $newspellrow["attribute"];
|
$userrow["currentmonstersleep"] = $newspellrow["attribute"];
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell. The monster is asleep.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell. The monster is asleep.<br /><br />";
|
||||||
} else {
|
} else {
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, but the monster is immune to it.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, but the monster is immune to it.<br /><br />";
|
||||||
}
|
}
|
||||||
$userrow["currentmp"] -= $newspellrow["mp"];
|
$userrow["currentmp"] -= $newspellrow["mp"];
|
||||||
} elseif ($newspellrow["type"] == 4) { // +Damage spell.
|
} elseif ($newspellrow["type"] == 4) { // +Damage spell.
|
||||||
$userrow["currentuberdamage"] = $newspellrow["attribute"];
|
$userrow["currentuberdamage"] = $newspellrow["attribute"];
|
||||||
$userrow["currentmp"] -= $newspellrow["mp"];
|
$userrow["currentmp"] -= $newspellrow["mp"];
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, and will gain ".$newspellrow["attribute"]."% damage until the end of this fight.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, and will gain ".$newspellrow["attribute"]."% damage until the end of this fight.<br /><br />";
|
||||||
} elseif ($newspellrow["type"] == 5) { // +Defense spell.
|
} elseif ($newspellrow["type"] == 5) { // +Defense spell.
|
||||||
$userrow["currentuberdefense"] = $newspellrow["attribute"];
|
$userrow["currentuberdefense"] = $newspellrow["attribute"];
|
||||||
$userrow["currentmp"] -= $newspellrow["mp"];
|
$userrow["currentmp"] -= $newspellrow["mp"];
|
||||||
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, and will gain ".$newspellrow["attribute"]."% defense until the end of this fight.<br><br>";
|
$pagearray["yourturn"] = "You have cast the ".$newspellrow["name"]." spell, and will gain ".$newspellrow["attribute"]."% defense until the end of this fight.<br /><br />";
|
||||||
}
|
}
|
||||||
|
|
||||||
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br><br>";
|
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br /><br />";
|
||||||
if ($userrow["currentmonsterhp"] <= 0) {
|
if ($userrow["currentmonsterhp"] <= 0) {
|
||||||
$updatequery = doquery("UPDATE {{table}} SET currentmonsterhp='0',currenthp='".$userrow["currenthp"]."',currentmp='".$userrow["currentmp"]."' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
$updatequery = doquery("UPDATE {{table}} SET currentmonsterhp='0',currenthp='".$userrow["currenthp"]."',currentmp='".$userrow["currentmp"]."' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
header("Location: index.php?do=victory");
|
header("Location: index.php?do=victory");
|
||||||
|
@ -233,17 +239,19 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
$chancetowake = rand(1,15);
|
$chancetowake = rand(1,15);
|
||||||
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
||||||
$userrow["currentmonstersleep"] = 0;
|
$userrow["currentmonstersleep"] = 0;
|
||||||
$pagearray["monsterturn"] .= "The monster has woken up.<br>";
|
$pagearray["monsterturn"] .= "The monster has woken up.<br />";
|
||||||
} else {
|
} else {
|
||||||
$pagearray["monsterturn"] .= "The monster is still asleep.<br>";
|
$pagearray["monsterturn"] .= "The monster is still asleep.<br />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
||||||
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
||||||
|
if ($userrow["difficulty"] == 2) { $tohit = ceil($tohit * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $tohit = ceil($tohit * $controlrow["diff3mod"]); }
|
||||||
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
||||||
$tododge = rand(1,150);
|
$tododge = rand(1,150);
|
||||||
if ($tododge <= sqrt($userrow["dexterity"])) {
|
if ($tododge <= sqrt($userrow["dexterity"])) {
|
||||||
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br>";
|
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br />";
|
||||||
$persondamage = 0;
|
$persondamage = 0;
|
||||||
} else {
|
} else {
|
||||||
if ($tohit <= $toblock) { $tohit = $toblock + 1; }
|
if ($tohit <= $toblock) { $tohit = $toblock + 1; }
|
||||||
|
@ -253,7 +261,7 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
}
|
}
|
||||||
if ($persondamage < 1) { $persondamage = 1; }
|
if ($persondamage < 1) { $persondamage = 1; }
|
||||||
}
|
}
|
||||||
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br><br>";
|
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br /><br />";
|
||||||
$userrow["currenthp"] -= $persondamage;
|
$userrow["currenthp"] -= $persondamage;
|
||||||
if ($userrow["currenthp"] <= 0) {
|
if ($userrow["currenthp"] <= 0) {
|
||||||
$newgold = ceil($userrow["gold"]/2);
|
$newgold = ceil($userrow["gold"]/2);
|
||||||
|
@ -265,24 +273,26 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
|
|
||||||
// Do a monster's turn if person lost the chance to swing first. Serves him right!
|
// Do a monster's turn if person lost the chance to swing first. Serves him right!
|
||||||
} elseif ( $chancetoswingfirst == 0 ) {
|
} elseif ( $chancetoswingfirst == 0 ) {
|
||||||
$pagearray["yourturn"] = "The monster attacks before you are ready!<br><br>";
|
$pagearray["yourturn"] = "The monster attacks before you are ready!<br /><br />";
|
||||||
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br><br>";
|
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br /><br />";
|
||||||
$pagearray["monsterturn"] = "";
|
$pagearray["monsterturn"] = "";
|
||||||
if ($userrow["currentmonstersleep"] != 0) { // Check to wake up.
|
if ($userrow["currentmonstersleep"] != 0) { // Check to wake up.
|
||||||
$chancetowake = rand(1,15);
|
$chancetowake = rand(1,15);
|
||||||
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
if ($chancetowake > $userrow["currentmonstersleep"]) {
|
||||||
$userrow["currentmonstersleep"] = 0;
|
$userrow["currentmonstersleep"] = 0;
|
||||||
$pagearray["monsterturn"] .= "The monster has woken up.<br>";
|
$pagearray["monsterturn"] .= "The monster has woken up.<br />";
|
||||||
} else {
|
} else {
|
||||||
$pagearray["monsterturn"] .= "The monster is still asleep.<br>";
|
$pagearray["monsterturn"] .= "The monster is still asleep.<br />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
if ($userrow["currentmonstersleep"] == 0) { // Only do this if the monster is awake.
|
||||||
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
$tohit = ceil(rand($monsterrow["maxdam"]*.5,$monsterrow["maxdam"]));
|
||||||
|
if ($userrow["difficulty"] == 2) { $tohit = ceil($tohit * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $tohit = ceil($tohit * $controlrow["diff3mod"]); }
|
||||||
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
$toblock = ceil(rand($userrow["defensepower"]*.75,$userrow["defensepower"])/4);
|
||||||
$tododge = rand(1,150);
|
$tododge = rand(1,150);
|
||||||
if ($tododge <= sqrt($userrow["dexterity"])) {
|
if ($tododge <= sqrt($userrow["dexterity"])) {
|
||||||
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br>";
|
$tohit = 0; $pagearray["monsterturn"] .= "You dodge the monster's attack. No damage has been scored.<br />";
|
||||||
$persondamage = 0;
|
$persondamage = 0;
|
||||||
} else {
|
} else {
|
||||||
$persondamage = $tohit - $toblock;
|
$persondamage = $tohit - $toblock;
|
||||||
|
@ -292,7 +302,7 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
}
|
}
|
||||||
if ($persondamage < 1) { $persondamage = 1; }
|
if ($persondamage < 1) { $persondamage = 1; }
|
||||||
}
|
}
|
||||||
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br><br>";
|
$pagearray["monsterturn"] .= "The monster attacks you for $persondamage damage.<br /><br />";
|
||||||
$userrow["currenthp"] -= $persondamage;
|
$userrow["currenthp"] -= $persondamage;
|
||||||
if ($userrow["currenthp"] <= 0) {
|
if ($userrow["currenthp"] <= 0) {
|
||||||
$newgold = ceil($userrow["gold"]/2);
|
$newgold = ceil($userrow["gold"]/2);
|
||||||
|
@ -304,7 +314,7 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$pagearray["yourturn"] = "";
|
$pagearray["yourturn"] = "";
|
||||||
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br><br>";
|
$pagearray["monsterhp"] = "Monster's HP: " . $userrow["currentmonsterhp"] . "<br /><br />";
|
||||||
$pagearray["monsterturn"] = "";
|
$pagearray["monsterturn"] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,16 +331,16 @@ function fight() { // One big long function that determines the outcome of the f
|
||||||
|
|
||||||
if ($playerisdead != 1) {
|
if ($playerisdead != 1) {
|
||||||
$pagearray["command"] = <<<END
|
$pagearray["command"] = <<<END
|
||||||
Command?<br><br>
|
Command?<br /><br />
|
||||||
<form action="index.php?do=fight" method="post">
|
<form action="index.php?do=fight" method="post">
|
||||||
<input type="submit" name="fight" value="Fight" /><br><br>
|
<input type="submit" name="fight" value="Fight" /><br /><br />
|
||||||
<select name="userspell"><option value="0">Choose One</option>$magiclist</select> <input type="submit" name="spell" value="Spell" /><br><br>
|
<select name="userspell"><option value="0">Choose One</option>$magiclist</select> <input type="submit" name="spell" value="Spell" /><br /><br />
|
||||||
<input type="submit" name="run" value="Run" /><br><br>
|
<input type="submit" name="run" value="Run" /><br /><br />
|
||||||
</form>
|
</form>
|
||||||
END;
|
END;
|
||||||
$updatequery = doquery("UPDATE {{table}} SET currentaction='Fighting',currenthp='$newhp',currentmp='$newmp',currentfight='$newfight',currentmonster='$newmonster',currentmonsterhp='$newmonsterhp',currentmonstersleep='$newmonstersleep',currentmonsterimmune='$newmonsterimmune',currentuberdamage='$newuberdamage',currentuberdefense='$newuberdefense' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
$updatequery = doquery("UPDATE {{table}} SET currentaction='Fighting',currenthp='$newhp',currentmp='$newmp',currentfight='$newfight',currentmonster='$newmonster',currentmonsterhp='$newmonsterhp',currentmonstersleep='$newmonstersleep',currentmonsterimmune='$newmonsterimmune',currentuberdamage='$newuberdamage',currentuberdefense='$newuberdefense' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
} else {
|
} else {
|
||||||
$pagearray["command"] = "<b>You have died.</b><br><br>As a consequence, you've lost half of your gold. However, you have been given back a portion of your hit points to continue your journey.<br><br>You may now continue back to <a href=\"index.php\">town</a>, and we hope you fair better next time.";
|
$pagearray["command"] = "<b>You have died.</b><br /><br />As a consequence, you've lost half of your gold. However, you have been given back a portion of your hit points to continue your journey.<br /><br />You may now continue back to <a href=\"index.php\">town</a>, and we hope you fair better next time.";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finalize page and display it.
|
// Finalize page and display it.
|
||||||
|
@ -353,9 +363,13 @@ function victory() {
|
||||||
|
|
||||||
$exp = rand((($monsterrow["maxexp"]/6)*5),$monsterrow["maxexp"]);
|
$exp = rand((($monsterrow["maxexp"]/6)*5),$monsterrow["maxexp"]);
|
||||||
if ($exp < 1) { $exp = 1; }
|
if ($exp < 1) { $exp = 1; }
|
||||||
|
if ($userrow["difficulty"] == 2) { $exp = ceil($exp * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $exp = ceil($exp * $controlrow["diff3mod"]); }
|
||||||
if ($userrow["expbonus"] != 0) { $exp += ceil(($userrow["expbonus"]/100)*$exp); }
|
if ($userrow["expbonus"] != 0) { $exp += ceil(($userrow["expbonus"]/100)*$exp); }
|
||||||
$gold = rand((($monsterrow["maxgold"]/6)*5),$monsterrow["maxgold"]);
|
$gold = rand((($monsterrow["maxgold"]/6)*5),$monsterrow["maxgold"]);
|
||||||
if ($gold < 1) { $gold = 1; }
|
if ($gold < 1) { $gold = 1; }
|
||||||
|
if ($userrow["difficulty"] == 2) { $gold = ceil($gold * $controlrow["diff2mod"]); }
|
||||||
|
if ($userrow["difficulty"] == 3) { $gold = ceil($gold * $controlrow["diff3mod"]); }
|
||||||
if ($userrow["goldbonus"] != 0) { $gold += ceil(($userrow["goldbonus"]/100)*$exp); }
|
if ($userrow["goldbonus"] != 0) { $gold += ceil(($userrow["goldbonus"]/100)*$exp); }
|
||||||
if ($userrow["experience"] + $exp < 16777215) { $newexp = $userrow["experience"] + $exp; $warnexp = ""; } else { $newexp = $userrow["experience"]; $exp = 0; $warnexp = "You have maxed out your experience points."; }
|
if ($userrow["experience"] + $exp < 16777215) { $newexp = $userrow["experience"] + $exp; $warnexp = ""; } else { $newexp = $userrow["experience"]; $exp = 0; $warnexp = "You have maxed out your experience points."; }
|
||||||
if ($userrow["gold"] + $gold < 16777215) { $newgold = $userrow["gold"] + $gold; $warngold = ""; } else { $newgold = $userrow["gold"]; $gold = 0; $warngold = "You have maxed out your experience points."; }
|
if ($userrow["gold"] + $gold < 16777215) { $newgold = $userrow["gold"] + $gold; $warngold = ""; } else { $newgold = $userrow["gold"]; $gold = 0; $warngold = "You have maxed out your experience points."; }
|
||||||
|
@ -377,10 +391,10 @@ function victory() {
|
||||||
if ($levelrow[$userrow["charclass"]."_spells"] != 0) {
|
if ($levelrow[$userrow["charclass"]."_spells"] != 0) {
|
||||||
$userspells = $userrow["spells"] . ",".$levelrow[$userrow["charclass"]."_spells"];
|
$userspells = $userrow["spells"] . ",".$levelrow[$userrow["charclass"]."_spells"];
|
||||||
$newspell = "spells='$userspells',";
|
$newspell = "spells='$userspells',";
|
||||||
$spelltext = "You have learned a new spell.<br>";
|
$spelltext = "You have learned a new spell.<br />";
|
||||||
} else { $spelltext = ""; $newspell=""; }
|
} else { $spelltext = ""; $newspell=""; }
|
||||||
|
|
||||||
$page = "Congratulations. You have defeated the ".$monsterrow["name"].".<br>You gain $exp experience. $warnexp <br>You gain $gold gold. $warngold <br><br><b>You have gained a level!</b><br><br>You gain ".$levelrow[$userrow["charclass"]."_hp"]." hit points.<br>You gain ".$levelrow[$userrow["charclass"]."_mp"]." magic points.<br>You gain ".$levelrow[$userrow["charclass"]."_tp"]." travel points.<br>You gain ".$levelrow[$userrow["charclass"]."_strength"]." strength.<br>You gain ".$levelrow[$userrow["charclass"]."_dexterity"]." dexterity.<br>$spelltext<br>You can now continue <a href=\"index.php\">exploring</a>.";
|
$page = "Congratulations. You have defeated the ".$monsterrow["name"].".<br />You gain $exp experience. $warnexp <br />You gain $gold gold. $warngold <br /><br /><b>You have gained a level!</b><br /><br />You gain ".$levelrow[$userrow["charclass"]."_hp"]." hit points.<br />You gain ".$levelrow[$userrow["charclass"]."_mp"]." magic points.<br />You gain ".$levelrow[$userrow["charclass"]."_tp"]." travel points.<br />You gain ".$levelrow[$userrow["charclass"]."_strength"]." strength.<br />You gain ".$levelrow[$userrow["charclass"]."_dexterity"]." dexterity.<br />$spelltext<br />You can now continue <a href=\"index.php\">exploring</a>.";
|
||||||
$title = "Courage and Wit have served thee well!";
|
$title = "Courage and Wit have served thee well!";
|
||||||
$dropcode = "";
|
$dropcode = "";
|
||||||
} else {
|
} else {
|
||||||
|
@ -393,7 +407,7 @@ function victory() {
|
||||||
$newdefense = $userrow["defensepower"];
|
$newdefense = $userrow["defensepower"];
|
||||||
$newlevel = $userrow["level"];
|
$newlevel = $userrow["level"];
|
||||||
$newspell = "";
|
$newspell = "";
|
||||||
$page = "Congratulations. You have defeated the ".$monsterrow["name"].".<br>You gain $exp experience. $warnexp <br>You gain $gold gold. $warngold <br><br>";
|
$page = "Congratulations. You have defeated the ".$monsterrow["name"].".<br />You gain $exp experience. $warnexp <br />You gain $gold gold. $warngold <br /><br />";
|
||||||
|
|
||||||
if (rand(1,30) == 1) {
|
if (rand(1,30) == 1) {
|
||||||
$dropquery = doquery("SELECT * FROM {{table}} WHERE mlevel <= '".$monsterrow["level"]."' ORDER BY RAND() LIMIT 1", "drops");
|
$dropquery = doquery("SELECT * FROM {{table}} WHERE mlevel <= '".$monsterrow["level"]."' ORDER BY RAND() LIMIT 1", "drops");
|
||||||
|
@ -493,20 +507,20 @@ function drop() {
|
||||||
"expbonus"=>"Experience Bonus",
|
"expbonus"=>"Experience Bonus",
|
||||||
"goldbonus"=>"Gold Bonus");
|
"goldbonus"=>"Gold Bonus");
|
||||||
|
|
||||||
$page = "The monster dropped the following item: <b>".$droprow["name"]."</b><br><br>";
|
$page = "The monster dropped the following item: <b>".$droprow["name"]."</b><br /><br />";
|
||||||
$page .= "This item has the following attribute(s):<br>";
|
$page .= "This item has the following attribute(s):<br />";
|
||||||
|
|
||||||
$attribute1 = explode(",",$droprow["attribute1"]);
|
$attribute1 = explode(",",$droprow["attribute1"]);
|
||||||
$page .= $attributearray[$attribute1[0]];
|
$page .= $attributearray[$attribute1[0]];
|
||||||
if ($attribute1[1] > 0) { $page .= " +" . $attribute1[1] . "<br>"; } else { $page .= $attribute1[1] . "<br>"; }
|
if ($attribute1[1] > 0) { $page .= " +" . $attribute1[1] . "<br />"; } else { $page .= $attribute1[1] . "<br />"; }
|
||||||
|
|
||||||
if ($droprow["attribute2"] != "X") {
|
if ($droprow["attribute2"] != "X") {
|
||||||
$attribute2 = explode(",",$droprow["attribute2"]);
|
$attribute2 = explode(",",$droprow["attribute2"]);
|
||||||
$page .= $attributearray[$attribute2[0]];
|
$page .= $attributearray[$attribute2[0]];
|
||||||
if ($attribute2[1] > 0) { $page .= " +" . $attribute2[1] . "<br>"; } else { $page .= $attribute2[1] . "<br>"; }
|
if ($attribute2[1] > 0) { $page .= " +" . $attribute2[1] . "<br />"; } else { $page .= $attribute2[1] . "<br />"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
$page .= "<br>Select an inventory slot from the list below to equip this item. If the inventory slot is already full, the old item will be discarded.";
|
$page .= "<br />Select an inventory slot from the list below to equip this item. If the inventory slot is already full, the old item will be discarded.";
|
||||||
$page .= "<form action=\"index.php?do=drop\" method=\"post\"><select name=\"slot\"><option value=\"0\">Choose One</option><option value=\"1\">Slot 1: ".$userrow["slot1name"]."</option><option value=\"2\">Slot 2: ".$userrow["slot2name"]."</option><option value=\"3\">Slot 3: ".$userrow["slot3name"]."</option></select> <input type=\"submit\" name=\"submit\" value=\"Submit\" /></form>";
|
$page .= "<form action=\"index.php?do=drop\" method=\"post\"><select name=\"slot\"><option value=\"0\">Choose One</option><option value=\"1\">Slot 1: ".$userrow["slot1name"]."</option><option value=\"2\">Slot 2: ".$userrow["slot2name"]."</option><option value=\"3\">Slot 3: ".$userrow["slot3name"]."</option></select> <input type=\"submit\" name=\"submit\" value=\"Submit\" /></form>";
|
||||||
$page .= "You may also choose to just continue <a href=\"index.php\">exploring</a> and give up this item.";
|
$page .= "You may also choose to just continue <a href=\"index.php\">exploring</a> and give up this item.";
|
||||||
|
|
||||||
|
@ -517,7 +531,7 @@ function drop() {
|
||||||
|
|
||||||
function dead() {
|
function dead() {
|
||||||
|
|
||||||
$page = "<b>You have died.</b><br><br>As a consequence, you've lost half of your gold. However, you have been given back a portion of your hit points to continue your journey.<br><br>You may now continue back to <a href=\"index.php\">town</a>, and we hope you fair better next time.";
|
$page = "<b>You have died.</b><br /><br />As a consequence, you've lost half of your gold. However, you have been given back a portion of your hit points to continue your journey.<br /><br />You may now continue back to <a href=\"index.php\">town</a>, and we hope you fair better next time.";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
31
src/heal.php
31
src/heal.php
|
@ -1,28 +1,33 @@
|
||||||
<?php
|
<?php // heal.php :: Handles stuff from the Quick Spells menu. (Healing spells only... other spells are handled in fight.php.)
|
||||||
|
|
||||||
// heal.php :: Handles stuff from the Quick Spells menu. (Healing spells only... other spells are handled in fight.php.)
|
function healspells($id) {
|
||||||
|
|
||||||
function healspells($id)
|
|
||||||
{
|
|
||||||
global $userrow;
|
global $userrow;
|
||||||
|
|
||||||
$userspells = explode(",", $userrow["spells"]);
|
$userspells = explode(",",$userrow["spells"]);
|
||||||
$spellrow = get_spell($id);
|
$spellquery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "spells");
|
||||||
|
$spellrow = mysql_fetch_array($spellquery);
|
||||||
|
|
||||||
// All the various ways to error out.
|
// All the various ways to error out.
|
||||||
$spell = false;
|
$spell = false;
|
||||||
foreach ($userspells as $b) if ($b == $id) $spell = true;
|
foreach ($userspells as $a => $b) {
|
||||||
if ($spell !== true) display("You have not yet learned this spell. Please go back and try again.", "Error");
|
if ($b == $id) { $spell = true; }
|
||||||
if ($spellrow["type"] != 1) display("This is not a healing spell. Please go back and try again.", "Error");
|
}
|
||||||
if ($userrow["currentmp"] < $spellrow["mp"]) display("You do not have enough Magic Points to cast this spell. Please go back and try again.", "Error");
|
if ($spell != true) { display("You have not yet learned this spell. Please go back and try again.", "Error"); die(); }
|
||||||
if ($userrow["currentaction"] == "Fighting") display("You cannot use the Quick Spells list during a fight. Please go back and select the Healing Spell you wish to use from the Spells box on the main fighting screen to continue.", "Error");
|
if ($spellrow["type"] != 1) { display("This is not a healing spell. Please go back and try again.", "Error"); die(); }
|
||||||
if ($userrow["currenthp"] == $userrow["maxhp"]) display("Your Hit Points are already full. You don't need to use a Healing spell now.", "Error");
|
if ($userrow["currentmp"] < $spellrow["mp"]) { display("You do not have enough Magic Points to cast this spell. Please go back and try again.", "Error"); die(); }
|
||||||
|
if ($userrow["currentaction"] == "Fighting") { display("You cannot use the Quick Spells list during a fight. Please go back and select the Healing Spell you wish to use from the Spells box on the main fighting screen to continue.", "Error"); die(); }
|
||||||
|
if ($userrow["currenthp"] == $userrow["maxhp"]) { display("Your Hit Points are already full. You don't need to use a Healing spell now.", "Error"); die(); }
|
||||||
|
|
||||||
$newhp = $userrow["currenthp"] + $spellrow["attribute"];
|
$newhp = $userrow["currenthp"] + $spellrow["attribute"];
|
||||||
if ($userrow["maxhp"] < $newhp) { $spellrow["attribute"] = $userrow["maxhp"] - $userrow["currenthp"]; $newhp = $userrow["currenthp"] + $spellrow["attribute"]; }
|
if ($userrow["maxhp"] < $newhp) { $spellrow["attribute"] = $userrow["maxhp"] - $userrow["currenthp"]; $newhp = $userrow["currenthp"] + $spellrow["attribute"]; }
|
||||||
$newmp = $userrow["currentmp"] - $spellrow["mp"];
|
$newmp = $userrow["currentmp"] - $spellrow["mp"];
|
||||||
|
|
||||||
db()->query('UPDATE users SET currenthp=?, currentmp=? WHERE id=?;', [$newhp, $newmp, $userrow['id']]);
|
$updatequery = doquery("UPDATE {{table}} SET currenthp='$newhp', currentmp='$newmp' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
|
|
||||||
display("You have cast the ".$spellrow["name"]." spell, and gained ".$spellrow["attribute"]." Hit Points. You can now continue <a href=\"index.php\">exploring</a>.", "Healing Spell");
|
display("You have cast the ".$spellrow["name"]." spell, and gained ".$spellrow["attribute"]." Hit Points. You can now continue <a href=\"index.php\">exploring</a>.", "Healing Spell");
|
||||||
|
die();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
?>
|
96
src/lib.php
96
src/lib.php
|
@ -14,15 +14,6 @@ function db(): Database
|
||||||
return $GLOBALS['database'] ??= new Database(__DIR__ . '/../database.db');
|
return $GLOBALS['database'] ??= new Database(__DIR__ . '/../database.db');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Redirect to a different URL, exit.
|
|
||||||
*/
|
|
||||||
function redirect(string $location): void
|
|
||||||
{
|
|
||||||
header("Location: $location");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
function gettemplate($templatename) { // SQL query for the template.
|
function gettemplate($templatename) { // SQL query for the template.
|
||||||
|
|
||||||
$filename = __DIR__ . "/../templates/" . $templatename . ".php";
|
$filename = __DIR__ . "/../templates/" . $templatename . ".php";
|
||||||
|
@ -127,19 +118,21 @@ function display($content, $title, $topnav=true, $leftnav=true, $rightnav=true,
|
||||||
if ($userrow["currentaction"] == "In Town") {
|
if ($userrow["currentaction"] == "In Town") {
|
||||||
$townquery = db()->query('SELECT * FROM towns WHERE latitude = ? AND longitude = ? LIMIT 1;', [$userrow["latitude"], $userrow["longitude"]]);
|
$townquery = db()->query('SELECT * FROM towns WHERE latitude = ? AND longitude = ? LIMIT 1;', [$userrow["latitude"], $userrow["longitude"]]);
|
||||||
$townrow = $townquery->fetchArray(SQLITE3_ASSOC);
|
$townrow = $townquery->fetchArray(SQLITE3_ASSOC);
|
||||||
$userrow["currenttown"] = "Welcome to <b>".$townrow["name"]."</b>.<br><br>";
|
$userrow["currenttown"] = "Welcome to <b>".$townrow["name"]."</b>.<br /><br />";
|
||||||
} else {
|
} else {
|
||||||
$userrow["currenttown"] = "";
|
$userrow["currenttown"] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
$userrow["forumslink"] = "<a href=\"forum.php\">Forum</a><br>";
|
if ($controlrow["forumtype"] == 0) { $userrow["forumslink"] = ""; }
|
||||||
|
elseif ($controlrow["forumtype"] == 1) { $userrow["forumslink"] = "<a href=\"forum.php\">Forum</a><br />"; }
|
||||||
|
elseif ($controlrow["forumtype"] == 2) { $userrow["forumslink"] = "<a href=\"".$controlrow["forumaddress"]."\">Forum</a><br />"; }
|
||||||
|
|
||||||
// Format various userrow stuffs...
|
// Format various userrow stuffs...
|
||||||
if ($userrow["latitude"] < 0) { $userrow["latitude"] = $userrow["latitude"] * -1 . "S"; } else { $userrow["latitude"] .= "N"; }
|
if ($userrow["latitude"] < 0) { $userrow["latitude"] = $userrow["latitude"] * -1 . "S"; } else { $userrow["latitude"] .= "N"; }
|
||||||
if ($userrow["longitude"] < 0) { $userrow["longitude"] = $userrow["longitude"] * -1 . "W"; } else { $userrow["longitude"] .= "E"; }
|
if ($userrow["longitude"] < 0) { $userrow["longitude"] = $userrow["longitude"] * -1 . "W"; } else { $userrow["longitude"] .= "E"; }
|
||||||
$userrow["experience"] = number_format($userrow["experience"]);
|
$userrow["experience"] = number_format($userrow["experience"]);
|
||||||
$userrow["gold"] = number_format($userrow["gold"]);
|
$userrow["gold"] = number_format($userrow["gold"]);
|
||||||
if ($userrow["authlevel"] == 1) { $userrow["adminlink"] = "<a href=\"admin.php\">Admin</a><br>"; } else { $userrow["adminlink"] = ""; }
|
if ($userrow["authlevel"] == 1) { $userrow["adminlink"] = "<a href=\"admin.php\">Admin</a><br />"; } else { $userrow["adminlink"] = ""; }
|
||||||
|
|
||||||
// HP/MP/TP bars.
|
// HP/MP/TP bars.
|
||||||
$stathp = ceil($userrow["currenthp"] / $userrow["maxhp"] * 100);
|
$stathp = ceil($userrow["currenthp"] / $userrow["maxhp"] * 100);
|
||||||
|
@ -171,13 +164,13 @@ function display($content, $title, $topnav=true, $leftnav=true, $rightnav=true,
|
||||||
$spellquery = db()->query('SELECT id, name, type FROM spells;');
|
$spellquery = db()->query('SELECT id, name, type FROM spells;');
|
||||||
$userspells = explode(",",$userrow["spells"]);
|
$userspells = explode(",",$userrow["spells"]);
|
||||||
$userrow["magiclist"] = "";
|
$userrow["magiclist"] = "";
|
||||||
while ($spellrow = $spellquery->fetchArray(SQLITE3_ASSOC)) {
|
foreach ($spellquery->fetchArray(SQLITE3_ASSOC) as $spellrow) {
|
||||||
$spell = false;
|
$spell = false;
|
||||||
foreach($userspells as $a => $b) {
|
foreach($userspells as $a => $b) {
|
||||||
if ($b == $spellrow["id"] && $spellrow["type"] == 1) { $spell = true; }
|
if ($b == $spellrow["id"] && $spellrow["type"] == 1) { $spell = true; }
|
||||||
}
|
}
|
||||||
if ($spell == true) {
|
if ($spell == true) {
|
||||||
$userrow["magiclist"] .= "<a href=\"index.php?do=spell:".$spellrow["id"]."\">".$spellrow["name"]."</a><br>";
|
$userrow["magiclist"] .= "<a href=\"index.php?do=spell:".$spellrow["id"]."\">".$spellrow["name"]."</a><br />";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($userrow["magiclist"] == "") { $userrow["magiclist"] = "None"; }
|
if ($userrow["magiclist"] == "") { $userrow["magiclist"] = "None"; }
|
||||||
|
@ -186,13 +179,13 @@ function display($content, $title, $topnav=true, $leftnav=true, $rightnav=true,
|
||||||
$townslist = explode(",",$userrow["towns"]);
|
$townslist = explode(",",$userrow["towns"]);
|
||||||
$townquery2 = db()->query('SELECT * FROM towns ORDER BY id;');
|
$townquery2 = db()->query('SELECT * FROM towns ORDER BY id;');
|
||||||
$userrow["townslist"] = "";
|
$userrow["townslist"] = "";
|
||||||
while ($townrow2 = $townquery2->fetchArray(SQLITE3_ASSOC)) {
|
foreach ($townquery2->fetchArray(SQLITE3_ASSOC) as $townrow2) {
|
||||||
$town = false;
|
$town = false;
|
||||||
foreach($townslist as $a => $b) {
|
foreach($townslist as $a => $b) {
|
||||||
if ($b == $townrow2["id"]) { $town = true; }
|
if ($b == $townrow2["id"]) { $town = true; }
|
||||||
}
|
}
|
||||||
if ($town == true) {
|
if ($town == true) {
|
||||||
$userrow["townslist"] .= "<a href=\"index.php?do=gotown:".$townrow2["id"]."\">".$townrow2["name"]."</a><br>\n";
|
$userrow["townslist"] .= "<a href=\"index.php?do=gotown:".$townrow2["id"]."\">".$townrow2["name"]."</a><br />\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -224,14 +217,14 @@ function checkcookies()
|
||||||
// COOKIE FORMAT:
|
// COOKIE FORMAT:
|
||||||
// {ID} {USERNAME} {PASSWORDHASH} {REMEMBERME}
|
// {ID} {USERNAME} {PASSWORDHASH} {REMEMBERME}
|
||||||
$theuser = explode(" ",$_COOKIE["dkgame"]);
|
$theuser = explode(" ",$_COOKIE["dkgame"]);
|
||||||
$query = db()->query('SELECT * FROM users WHERE id = ? AND username = ? AND password = ? LIMIT 1;', [$theuser[0], $theuser[1], $theuser[2]]);
|
$query = db()->query('SELECT * FROM users WHERE id = ?, username = ?, password = ? LIMIT 1;', [$theuser[0], $theuser[1], $theuser[2]]);
|
||||||
if ($query === false) {
|
if ($query === false) {
|
||||||
set_cookie('dkgame', '', -3600);
|
set_cookie('dkgame', '', -3600);
|
||||||
die("Invalid cookie data. Please log in again.");
|
die("Invalid cookie data. Please log in again.");
|
||||||
}
|
}
|
||||||
$row = $query->fetchArray(SQLITE3_ASSOC);
|
$row = $query->fetchArray(SQLITE3_ASSOC);
|
||||||
set_cookie('dkgame', implode(" ", $theuser), (int) $theuser[3] === 1 ? time() + 31536000 : 0);
|
set_cookie('dkgame', implode(" ", $theuser), (int) $theuser[3] === 1 ? time() + 31536000 : 0);
|
||||||
db()->exec('UPDATE users SET onlinetime = CURRENT_TIMESTAMP WHERE id = ?;', [$theuser[0]]);
|
db()->exec('UPDATE users SET onlinetime = CURRENT_TIMESTAMP WHERE id = ? LIMIT 1;', [$theuser[0]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $row;
|
return $row;
|
||||||
|
@ -261,70 +254,3 @@ function get_control_row(): array|false
|
||||||
if ($query === false) return false;
|
if ($query === false) return false;
|
||||||
return $query->fetchArray(SQLITE3_ASSOC);
|
return $query->fetchArray(SQLITE3_ASSOC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a town's data by it's coordinates.
|
|
||||||
*/
|
|
||||||
function get_town_by_xy(int $x, int $y): array|false
|
|
||||||
{
|
|
||||||
$query = db()->query('SELECT * FROM towns WHERE longitude = ? AND latitude = ? LIMIT 1;', [$x, $y]);
|
|
||||||
if ($query === false) return false;
|
|
||||||
return $query->fetchArray(SQLITE3_ASSOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a town's data by it's ID.
|
|
||||||
*/
|
|
||||||
function get_town_by_id(int $id): array|false
|
|
||||||
{
|
|
||||||
$query = db()->query('SELECT * FROM towns WHERE id = ? LIMIT 1;', [$id]);
|
|
||||||
if ($query === false) return false;
|
|
||||||
return $query->fetchArray(SQLITE3_ASSOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get an item by it's ID.
|
|
||||||
*/
|
|
||||||
function get_item(int $id): array|false
|
|
||||||
{
|
|
||||||
$query = db()->query('SELECT * FROM items WHERE id=? LIMIT 1;', [$id]);
|
|
||||||
if ($query === false) return false;
|
|
||||||
return $query->fetchArray(SQLITE3_ASSOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a spell by it's ID.
|
|
||||||
*/
|
|
||||||
function get_spell(int $id): array|false
|
|
||||||
{
|
|
||||||
$query = db()->query('SELECT * FROM spells WHERE id=? LIMIT 1;', [$id]);
|
|
||||||
if ($query === false) return false;
|
|
||||||
return $query->fetchArray(SQLITE3_ASSOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Translate a Specials keyword to it's string.
|
|
||||||
*/
|
|
||||||
function special_to_string(string $special): string
|
|
||||||
{
|
|
||||||
return match ($special) {
|
|
||||||
'maxhp' => 'Max HP',
|
|
||||||
'maxmp' => 'Max MP',
|
|
||||||
'maxtp' => 'Max TP',
|
|
||||||
'goldbonus' => 'Gold Bonus (%)',
|
|
||||||
'expbonus' => 'Experience Bonus (%)',
|
|
||||||
'strength' => 'Strength',
|
|
||||||
'dexterity' => 'Dexterity',
|
|
||||||
'attackpower' => 'Attack Power',
|
|
||||||
'defensepower' => 'Defense Power',
|
|
||||||
default => $special
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate a pretty dope token.
|
|
||||||
*/
|
|
||||||
function token($length = 32): string
|
|
||||||
{
|
|
||||||
return bin2hex(random_bytes($length));
|
|
||||||
}
|
|
||||||
|
|
513
src/towns.php
513
src/towns.php
|
@ -1,66 +1,65 @@
|
||||||
<?php
|
<?php // towns.php :: Handles all actions you can do in town.
|
||||||
|
|
||||||
// towns.php :: Handles all actions you can do in town.
|
function inn() { // Staying at the inn resets all expendable stats to their max values.
|
||||||
|
|
||||||
/**
|
global $userrow, $numqueries;
|
||||||
* Staying at the inn resets all expendable stats to their max values.
|
|
||||||
*/
|
|
||||||
function inn()
|
|
||||||
{
|
|
||||||
global $userrow;
|
|
||||||
|
|
||||||
$townrow = get_town_by_xy($userrow["longitude"], $userrow["latitude"]);
|
$townquery = doquery("SELECT name,innprice FROM {{table}} WHERE latitude='".$userrow["latitude"]."' AND longitude='".$userrow["longitude"]."' LIMIT 1", "towns");
|
||||||
if ($townrow === false) { display("Cheat attempt detected.<br><br>Get a life, loser.", "Error"); }
|
if (mysql_num_rows($townquery) != 1) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
|
$townrow = mysql_fetch_array($townquery);
|
||||||
|
|
||||||
if ($userrow["gold"] < $townrow["innprice"]) {
|
if ($userrow["gold"] < $townrow["innprice"]) { display("You do not have enough gold to stay at this Inn tonight.<br /><br />You may return to <a href=\"index.php\">town</a>, or use the direction buttons on the left to start exploring.", "Inn"); die(); }
|
||||||
display("You do not have enough gold to stay at this Inn tonight.<br><br>You may return to <a href=\"index.php\">town</a>, or use the direction buttons on the left to start exploring.", "Inn");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_POST["submit"])) {
|
if (isset($_POST["submit"])) {
|
||||||
|
|
||||||
$newgold = $userrow["gold"] - $townrow["innprice"];
|
$newgold = $userrow["gold"] - $townrow["innprice"];
|
||||||
db()->query(
|
$query = doquery("UPDATE {{table}} SET gold='$newgold',currenthp='".$userrow["maxhp"]."',currentmp='".$userrow["maxmp"]."',currenttp='".$userrow["maxtp"]."' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
'UPDATE users SET gold=?, currenthp=?, currentmp=?, currenttp=? WHERE id=?',
|
|
||||||
[$newgold, $userrow['maxhp'], $userrow['maxmp'], $userrow['maxtp'], $userrow['id']
|
|
||||||
]);
|
|
||||||
$title = "Inn";
|
$title = "Inn";
|
||||||
$page = "You wake up feeling refreshed and ready for action.<br><br>You may return to <a href=\"index.php\">town</a>, or use the direction buttons on the left to start exploring.";
|
$page = "You wake up feeling refreshed and ready for action.<br /><br />You may return to <a href=\"index.php\">town</a>, or use the direction buttons on the left to start exploring.";
|
||||||
|
|
||||||
} elseif (isset($_POST["cancel"])) {
|
} elseif (isset($_POST["cancel"])) {
|
||||||
redirect('index.php');
|
|
||||||
|
header("Location: index.php"); die();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$title = "Inn";
|
$title = "Inn";
|
||||||
$page = <<<HTML
|
$page = "Resting at the inn will refill your current HP, MP, and TP to their maximum levels.<br /><br />\n";
|
||||||
Resting at the inn will refill your current HP, MP, and TP to their maximum levels.<br><br>
|
$page .= "A night's sleep at this Inn will cost you <b>" . $townrow["innprice"] . " gold</b>. Is that ok?<br /><br />\n";
|
||||||
A night's sleep at this Inn will cost you <b>{$townrow["innprice"]} gold</b>. Is that ok?<br><br>
|
$page .= "<form action=\"index.php?do=inn\" method=\"post\">\n";
|
||||||
<form action="index.php?do=inn" method="post">
|
$page .= "<input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" />\n";
|
||||||
<input type="submit" name="submit" value="Yes" /> <input type="submit" name="cancel" value="No" />
|
$page .= "</form>\n";
|
||||||
</form>
|
|
||||||
HTML;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
display($page, $title);
|
display($page, $title);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function buy() { // Displays a list of available items for purchase.
|
||||||
* Displays a list of available items for purchase.
|
|
||||||
*/
|
|
||||||
function buy()
|
|
||||||
{
|
|
||||||
global $userrow;
|
|
||||||
|
|
||||||
$townrow = get_town_by_xy($userrow['longitude'], $userrow['latitude']);
|
global $userrow, $numqueries;
|
||||||
if ($townrow === false) display("Cheat attempt detected.<br><br>Get a life, loser.", "Error");
|
|
||||||
|
|
||||||
$items = db()->query("SELECT * FROM items WHERE id IN ({$townrow["itemslist"]});");
|
$townquery = doquery("SELECT name,itemslist FROM {{table}} WHERE latitude='".$userrow["latitude"]."' AND longitude='".$userrow["longitude"]."' LIMIT 1", "towns");
|
||||||
$page = "Buying weapons will increase your Attack Power. Buying armor and shields will increase your Defense Power.<br><br>Click an item name to purchase it.<br><br>The following items are available at this town:<br><br>\n";
|
if (mysql_num_rows($townquery) != 1) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
|
$townrow = mysql_fetch_array($townquery);
|
||||||
|
|
||||||
|
$itemslist = explode(",",$townrow["itemslist"]);
|
||||||
|
$querystring = "";
|
||||||
|
foreach($itemslist as $a=>$b) {
|
||||||
|
$querystring .= "id='$b' OR ";
|
||||||
|
}
|
||||||
|
$querystring = rtrim($querystring, " OR ");
|
||||||
|
|
||||||
|
$itemsquery = doquery("SELECT * FROM {{table}} WHERE $querystring ORDER BY id", "items");
|
||||||
|
$page = "Buying weapons will increase your Attack Power. Buying armor and shields will increase your Defense Power.<br /><br />Click an item name to purchase it.<br /><br />The following items are available at this town:<br /><br />\n";
|
||||||
$page .= "<table width=\"80%\">\n";
|
$page .= "<table width=\"80%\">\n";
|
||||||
while ($itemsrow = $items->fetchArray(SQLITE3_ASSOC)) {
|
while ($itemsrow = mysql_fetch_array($itemsquery)) {
|
||||||
$attrib = ($itemsrow["type"] == 1) ? "Attack Power:" : "Defense Power:";
|
if ($itemsrow["type"] == 1) { $attrib = "Attack Power:"; } else { $attrib = "Defense Power:"; }
|
||||||
$page .= "<tr><td width=\"4%\">";
|
$page .= "<tr><td width=\"4%\">";
|
||||||
$page .= match ($itemsrow["type"]) {
|
if ($itemsrow["type"] == 1) { $page .= "<img src=\"images/icon_weapon.gif\" alt=\"weapon\" /></td>"; }
|
||||||
1 => '<img src="images/icon_weapon.gif" alt="weapon" /></td>',
|
if ($itemsrow["type"] == 2) { $page .= "<img src=\"images/icon_armor.gif\" alt=\"armor\" /></td>"; }
|
||||||
2 => '<img src="images/icon_armor.gif" alt="armor" /></td>',
|
if ($itemsrow["type"] == 3) { $page .= "<img src=\"images/icon_shield.gif\" alt=\"shield\" /></td>"; }
|
||||||
3 => '<img src="images/icon_shield.gif" alt="shield" /></td>'
|
|
||||||
};
|
|
||||||
if ($userrow["weaponid"] == $itemsrow["id"] || $userrow["armorid"] == $itemsrow["id"] || $userrow["shieldid"] == $itemsrow["id"]) {
|
if ($userrow["weaponid"] == $itemsrow["id"] || $userrow["armorid"] == $itemsrow["id"] || $userrow["shieldid"] == $itemsrow["id"]) {
|
||||||
$page .= "<td width=\"32%\"><span class=\"light\">".$itemsrow["name"]."</span></td><td width=\"32%\"><span class=\"light\">$attrib ".$itemsrow["attribute"]."</span></td><td width=\"32%\"><span class=\"light\">Already purchased</span></td></tr>\n";
|
$page .= "<td width=\"32%\"><span class=\"light\">".$itemsrow["name"]."</span></td><td width=\"32%\"><span class=\"light\">$attrib ".$itemsrow["attribute"]."</span></td><td width=\"32%\"><span class=\"light\">Already purchased</span></td></tr>\n";
|
||||||
} else {
|
} else {
|
||||||
|
@ -68,252 +67,302 @@ function buy()
|
||||||
$page .= "<td width=\"32%\"><b><a href=\"index.php?do=buy2:".$itemsrow["id"]."\">".$itemsrow["name"]."</a>$specialdot</b></td><td width=\"32%\">$attrib <b>".$itemsrow["attribute"]."</b></td><td width=\"32%\">Price: <b>".$itemsrow["buycost"]." gold</b></td></tr>\n";
|
$page .= "<td width=\"32%\"><b><a href=\"index.php?do=buy2:".$itemsrow["id"]."\">".$itemsrow["name"]."</a>$specialdot</b></td><td width=\"32%\">$attrib <b>".$itemsrow["attribute"]."</b></td><td width=\"32%\">Price: <b>".$itemsrow["buycost"]." gold</b></td></tr>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$page .= "</table><br>\n";
|
$page .= "</table><br />\n";
|
||||||
$page .= "If you've changed your mind, you may also return back to <a href=\"index.php\">town</a>.\n";
|
$page .= "If you've changed your mind, you may also return back to <a href=\"index.php\">town</a>.\n";
|
||||||
$title = "Buy Items";
|
$title = "Buy Items";
|
||||||
|
|
||||||
display($page, $title);
|
display($page, $title);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function buy2($id) { // Confirm user's intent to purchase item.
|
||||||
* Confirm user's intent to purchase item.
|
|
||||||
*/
|
|
||||||
function buy2($id)
|
|
||||||
{
|
|
||||||
global $userrow;
|
|
||||||
|
|
||||||
$townrow = get_town_by_xy($userrow['longitude'], $userrow['latitude']);
|
global $userrow, $numqueries;
|
||||||
if ($townrow === false) display("Cheat attempt detected.<br><br>Get a life, loser.", "Error");
|
|
||||||
$townitems = explode(",", $townrow["itemslist"]);
|
|
||||||
if (!in_array($id, $townitems)) display("Cheat attempt detected.<br><br>Get a life, loser.", "Error");
|
|
||||||
|
|
||||||
$item = get_item($id);
|
$townquery = doquery("SELECT name,itemslist FROM {{table}} WHERE latitude='".$userrow["latitude"]."' AND longitude='".$userrow["longitude"]."' LIMIT 1", "towns");
|
||||||
|
if (mysql_num_rows($townquery) != 1) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
|
$townrow = mysql_fetch_array($townquery);
|
||||||
|
$townitems = explode(",",$townrow["itemslist"]);
|
||||||
|
if (! in_array($id, $townitems)) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
|
|
||||||
if ($userrow["gold"] < $item["buycost"]) {
|
$itemsquery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "items");
|
||||||
display("You do not have enough gold to buy this item.<br><br>You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=buy\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Items");
|
$itemsrow = mysql_fetch_array($itemsquery);
|
||||||
}
|
|
||||||
|
|
||||||
$type_to_row_mapping = [1 => 'weaponid', 2 => 'armorid', 3 => 'shieldid'];
|
if ($userrow["gold"] < $itemsrow["buycost"]) { display("You do not have enough gold to buy this item.<br /><br />You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=buy\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Items"); die(); }
|
||||||
$current_equipped_id = $userrow[$type_to_row_mapping[$item['type']] ?? 0];
|
|
||||||
|
|
||||||
if ($current_equipped_id != 0) {
|
if ($itemsrow["type"] == 1) {
|
||||||
$item2 = get_item($current_equipped_id);
|
if ($userrow["weaponid"] != 0) {
|
||||||
$page = "If you are buying the ".$item["name"].", then I will buy your ".$item2["name"]." for ".ceil($item2["buycost"] / 2)." gold. Is that ok?<br><br><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
$itemsquery2 = doquery("SELECT * FROM {{table}} WHERE id='".$userrow["weaponid"]."' LIMIT 1", "items");
|
||||||
|
$itemsrow2 = mysql_fetch_array($itemsquery2);
|
||||||
|
$page = "If you are buying the ".$itemsrow["name"].", then I will buy your ".$itemsrow2["name"]." for ".ceil($itemsrow2["buycost"]/2)." gold. Is that ok?<br /><br /><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
} else {
|
} else {
|
||||||
$page = "You are buying the ".$item["name"].", is that ok?<br><br><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
$page = "You are buying the ".$itemsrow["name"].", is that ok?<br /><br /><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
}
|
}
|
||||||
|
} elseif ($itemsrow["type"] == 2) {
|
||||||
display($page, "Buy Items");
|
if ($userrow["armorid"] != 0) {
|
||||||
}
|
$itemsquery2 = doquery("SELECT * FROM {{table}} WHERE id='".$userrow["armorid"]."' LIMIT 1", "items");
|
||||||
|
$itemsrow2 = mysql_fetch_array($itemsquery2);
|
||||||
/**
|
$page = "If you are buying the ".$itemsrow["name"].", then I will buy your ".$itemsrow2["name"]." for ".ceil($itemsrow2["buycost"]/2)." gold. Is that ok?<br /><br /><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
* Update user profile with new item & stats.
|
|
||||||
*/
|
|
||||||
function buy3($id)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (isset($_POST["cancel"])) redirect('index.php');
|
|
||||||
|
|
||||||
global $userrow;
|
|
||||||
|
|
||||||
$townrow = get_town_by_xy($userrow['longitude'], $userrow['latitude']);
|
|
||||||
if ($townrow === false) display("Cheat attempt detected.<br><br>Get a life, loser.", "Error");
|
|
||||||
$townitems = explode(",", $townrow["itemslist"]);
|
|
||||||
if (!in_array($id, $townitems)) display("Cheat attempt detected.<br><br>Get a life, loser.", "Error");
|
|
||||||
|
|
||||||
$item = get_item($id);
|
|
||||||
|
|
||||||
if ($userrow["gold"] < $item["buycost"]) {
|
|
||||||
display("You do not have enough gold to buy this item.<br><br>You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=buy\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Items");
|
|
||||||
}
|
|
||||||
|
|
||||||
$type_mapping = [
|
|
||||||
1 => ['id' => 'weaponid', 'name' => 'weaponname', 'power' => 'attackpower'],
|
|
||||||
2 => ['id' => 'armorid', 'name' => 'armorname', 'power' => 'defensepower'],
|
|
||||||
3 => ['id' => 'shieldid', 'name' => 'shieldname', 'power' => 'defensepower']
|
|
||||||
];
|
|
||||||
|
|
||||||
// Validate item type
|
|
||||||
if (!isset($type_mapping[$item["type"]])) {
|
|
||||||
display("Invalid item type.", "Error");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retrieve current equipped item or create a default
|
|
||||||
$current_equip_id = $userrow[$type_mapping[$item["type"]]['id']];
|
|
||||||
if ($current_equip_id != 0) {
|
|
||||||
$item2 = get_item($current_equip_id);
|
|
||||||
} else {
|
} else {
|
||||||
$item2 = ["attribute" => 0, "buycost" => 0, "special" => "X"];
|
$page = "You are buying the ".$itemsrow["name"].", is that ok?<br /><br /><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
}
|
|
||||||
|
|
||||||
// Process special item effects
|
|
||||||
$specialFields = [];
|
|
||||||
$specialValues = [];
|
|
||||||
$powerAdjustments = 0;
|
|
||||||
|
|
||||||
foreach ([$item, $item2] as $index => $process_item) {
|
|
||||||
if ($process_item["special"] != "X") {
|
|
||||||
$special = explode(",", $process_item["special"]);
|
|
||||||
$toChange = $special[0];
|
|
||||||
$changeAmount = $index === 0 ? $special[1] : -$special[1];
|
|
||||||
|
|
||||||
$userrow[$toChange] += $changeAmount;
|
|
||||||
$specialFields[] = "$toChange = ?";
|
|
||||||
$specialValues[] = $userrow[$toChange];
|
|
||||||
|
|
||||||
// Adjust attack or defense power
|
|
||||||
if ($toChange == "strength" || $toChange == "dexterity") {
|
|
||||||
$powerType = $toChange == "strength" ? "attackpower" : "defensepower";
|
|
||||||
$powerAdjustments += $changeAmount;
|
|
||||||
}
|
}
|
||||||
|
} elseif ($itemsrow["type"] == 3) {
|
||||||
|
if ($userrow["shieldid"] != 0) {
|
||||||
|
$itemsquery2 = doquery("SELECT * FROM {{table}} WHERE id='".$userrow["shieldid"]."' LIMIT 1", "items");
|
||||||
|
$itemsrow2 = mysql_fetch_array($itemsquery2);
|
||||||
|
$page = "If you are buying the ".$itemsrow["name"].", then I will buy your ".$itemsrow2["name"]." for ".ceil($itemsrow2["buycost"]/2)." gold. Is that ok?<br /><br /><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
|
} else {
|
||||||
|
$page = "You are buying the ".$itemsrow["name"].", is that ok?<br /><br /><form action=\"index.php?do=buy3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine power and type-specific updates
|
$title = "Buy Items";
|
||||||
$currentType = $type_mapping[$item["type"]];
|
display($page, $title);
|
||||||
$powerField = $currentType['power'];
|
|
||||||
$newPower = $userrow[$powerField] + $item["attribute"] - $item2["attribute"];
|
|
||||||
|
|
||||||
// Calculate new gold with trade-in value
|
|
||||||
$newGold = $userrow["gold"] + ceil($item2["buycost"]/2) - $item["buycost"];
|
|
||||||
|
|
||||||
// Ensure current HP/MP/TP don't exceed max values
|
|
||||||
$newhp = min($userrow["currenthp"], $userrow["maxhp"]);
|
|
||||||
$newmp = min($userrow["currentmp"], $userrow["maxmp"]);
|
|
||||||
$newtp = min($userrow["currenttp"], $userrow["maxtp"]);
|
|
||||||
|
|
||||||
$updateFields = array_merge(
|
|
||||||
$specialFields,
|
|
||||||
[
|
|
||||||
"gold = ?",
|
|
||||||
"{$powerField} = ?",
|
|
||||||
"{$currentType['id']} = ?",
|
|
||||||
"{$currentType['name']} = ?",
|
|
||||||
"currenthp = ?",
|
|
||||||
"currentmp = ?",
|
|
||||||
"currenttp = ?"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
$updateValues = array_merge(
|
|
||||||
$specialValues,
|
|
||||||
[
|
|
||||||
$newGold,
|
|
||||||
$newPower,
|
|
||||||
$item["id"],
|
|
||||||
$item["name"],
|
|
||||||
$newhp,
|
|
||||||
$newmp,
|
|
||||||
$newtp,
|
|
||||||
$userrow["id"]
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
$stmt = db()->query("UPDATE users SET " . implode(", ", $updateFields) . " WHERE id = ?;", $updateValues);
|
|
||||||
if ($stmt === false) exit("Failed to purchase and equip $id. Go back and try again.");
|
|
||||||
|
|
||||||
display("Thank you for purchasing this item.<br><br>You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=buy\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Items");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function buy3($id) { // Update user profile with new item & stats.
|
||||||
* List maps the user can buy.
|
|
||||||
*/
|
if (isset($_POST["cancel"])) { header("Location: index.php"); die(); }
|
||||||
function maps()
|
|
||||||
{
|
|
||||||
global $userrow;
|
global $userrow;
|
||||||
|
|
||||||
$mappedtowns = explode(",", $userrow["towns"]);
|
$townquery = doquery("SELECT name,itemslist FROM {{table}} WHERE latitude='".$userrow["latitude"]."' AND longitude='".$userrow["longitude"]."' LIMIT 1", "towns");
|
||||||
|
if (mysql_num_rows($townquery) != 1) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
|
$townrow = mysql_fetch_array($townquery);
|
||||||
|
$townitems = explode(",",$townrow["itemslist"]);
|
||||||
|
if (! in_array($id, $townitems)) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
|
|
||||||
$page = "Buying maps will put the town in your Travel To box, and it won't cost you as many TP to get there.<br><br>\n";
|
$itemsquery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "items");
|
||||||
$page .= "Click a town name to purchase its map.<br><br>\n";
|
$itemsrow = mysql_fetch_array($itemsquery);
|
||||||
|
|
||||||
|
if ($userrow["gold"] < $itemsrow["buycost"]) { display("You do not have enough gold to buy this item.<br /><br />You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=buy\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Items"); die(); }
|
||||||
|
|
||||||
|
if ($itemsrow["type"] == 1) { // weapon
|
||||||
|
|
||||||
|
// Check if they already have an item in the slot.
|
||||||
|
if ($userrow["weaponid"] != 0) {
|
||||||
|
$itemsquery2 = doquery("SELECT * FROM {{table}} WHERE id='".$userrow["weaponid"]."' LIMIT 1", "items");
|
||||||
|
$itemsrow2 = mysql_fetch_array($itemsquery2);
|
||||||
|
} else {
|
||||||
|
$itemsrow2 = array("attribute"=>0,"buycost"=>0,"special"=>"X");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special item fields.
|
||||||
|
$specialchange1 = "";
|
||||||
|
$specialchange2 = "";
|
||||||
|
if ($itemsrow["special"] != "X") {
|
||||||
|
$special = explode(",",$itemsrow["special"]);
|
||||||
|
$tochange = $special[0];
|
||||||
|
$userrow[$tochange] = $userrow[$tochange] + $special[1];
|
||||||
|
$specialchange1 = "$tochange='".$userrow[$tochange]."',";
|
||||||
|
if ($tochange == "strength") { $userrow["attackpower"] += $special[1]; }
|
||||||
|
if ($tochange == "dexterity") { $userrow["defensepower"] += $special[1]; }
|
||||||
|
}
|
||||||
|
if ($itemsrow2["special"] != "X") {
|
||||||
|
$special2 = explode(",",$itemsrow2["special"]);
|
||||||
|
$tochange2 = $special2[0];
|
||||||
|
$userrow[$tochange2] = $userrow[$tochange2] - $special2[1];
|
||||||
|
$specialchange2 = "$tochange2='".$userrow[$tochange2]."',";
|
||||||
|
if ($tochange2 == "strength") { $userrow["attackpower"] -= $special2[1]; }
|
||||||
|
if ($tochange2 == "dexterity") { $userrow["defensepower"] -= $special2[1]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// New stats.
|
||||||
|
$newgold = $userrow["gold"] + ceil($itemsrow2["buycost"]/2) - $itemsrow["buycost"];
|
||||||
|
$newattack = $userrow["attackpower"] + $itemsrow["attribute"] - $itemsrow2["attribute"];
|
||||||
|
$newid = $itemsrow["id"];
|
||||||
|
$newname = $itemsrow["name"];
|
||||||
|
$userid = $userrow["id"];
|
||||||
|
if ($userrow["currenthp"] > $userrow["maxhp"]) { $newhp = $userrow["maxhp"]; } else { $newhp = $userrow["currenthp"]; }
|
||||||
|
if ($userrow["currentmp"] > $userrow["maxmp"]) { $newmp = $userrow["maxmp"]; } else { $newmp = $userrow["currentmp"]; }
|
||||||
|
if ($userrow["currenttp"] > $userrow["maxtp"]) { $newtp = $userrow["maxtp"]; } else { $newtp = $userrow["currenttp"]; }
|
||||||
|
|
||||||
|
// Final update.
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET $specialchange1 $specialchange2 gold='$newgold', attackpower='$newattack', weaponid='$newid', weaponname='$newname', currenthp='$newhp', currentmp='$newmp', currenttp='$newtp' WHERE id='$userid' LIMIT 1", "users");
|
||||||
|
|
||||||
|
} elseif ($itemsrow["type"] == 2) { // Armor
|
||||||
|
|
||||||
|
// Check if they already have an item in the slot.
|
||||||
|
if ($userrow["armorid"] != 0) {
|
||||||
|
$itemsquery2 = doquery("SELECT * FROM {{table}} WHERE id='".$userrow["armorid"]."' LIMIT 1", "items");
|
||||||
|
$itemsrow2 = mysql_fetch_array($itemsquery2);
|
||||||
|
} else {
|
||||||
|
$itemsrow2 = array("attribute"=>0,"buycost"=>0,"special"=>"X");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special item fields.
|
||||||
|
$specialchange1 = "";
|
||||||
|
$specialchange2 = "";
|
||||||
|
if ($itemsrow["special"] != "X") {
|
||||||
|
$special = explode(",",$itemsrow["special"]);
|
||||||
|
$tochange = $special[0];
|
||||||
|
$userrow[$tochange] = $userrow[$tochange] + $special[1];
|
||||||
|
$specialchange1 = "$tochange='".$userrow[$tochange]."',";
|
||||||
|
if ($tochange == "strength") { $userrow["attackpower"] += $special[1]; }
|
||||||
|
if ($tochange == "dexterity") { $userrow["defensepower"] += $special[1]; }
|
||||||
|
}
|
||||||
|
if ($itemsrow2["special"] != "X") {
|
||||||
|
$special2 = explode(",",$itemsrow2["special"]);
|
||||||
|
$tochange2 = $special2[0];
|
||||||
|
$userrow[$tochange2] = $userrow[$tochange2] - $special2[1];
|
||||||
|
$specialchange2 = "$tochange2='".$userrow[$tochange2]."',";
|
||||||
|
if ($tochange2 == "strength") { $userrow["attackpower"] -= $special2[1]; }
|
||||||
|
if ($tochange2 == "dexterity") { $userrow["defensepower"] -= $special2[1]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// New stats.
|
||||||
|
$newgold = $userrow["gold"] + ceil($itemsrow2["buycost"]/2) - $itemsrow["buycost"];
|
||||||
|
$newdefense = $userrow["defensepower"] + $itemsrow["attribute"] - $itemsrow2["attribute"];
|
||||||
|
$newid = $itemsrow["id"];
|
||||||
|
$newname = $itemsrow["name"];
|
||||||
|
$userid = $userrow["id"];
|
||||||
|
if ($userrow["currenthp"] > $userrow["maxhp"]) { $newhp = $userrow["maxhp"]; } else { $newhp = $userrow["currenthp"]; }
|
||||||
|
if ($userrow["currentmp"] > $userrow["maxmp"]) { $newmp = $userrow["maxmp"]; } else { $newmp = $userrow["currentmp"]; }
|
||||||
|
if ($userrow["currenttp"] > $userrow["maxtp"]) { $newtp = $userrow["maxtp"]; } else { $newtp = $userrow["currenttp"]; }
|
||||||
|
|
||||||
|
// Final update.
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET $specialchange1 $specialchange2 gold='$newgold', defensepower='$newdefense', armorid='$newid', armorname='$newname', currenthp='$newhp', currentmp='$newmp', currenttp='$newtp' WHERE id='$userid' LIMIT 1", "users");
|
||||||
|
|
||||||
|
} elseif ($itemsrow["type"] == 3) { // Shield
|
||||||
|
|
||||||
|
// Check if they already have an item in the slot.
|
||||||
|
if ($userrow["shieldid"] != 0) {
|
||||||
|
$itemsquery2 = doquery("SELECT * FROM {{table}} WHERE id='".$userrow["shieldid"]."' LIMIT 1", "items");
|
||||||
|
$itemsrow2 = mysql_fetch_array($itemsquery2);
|
||||||
|
} else {
|
||||||
|
$itemsrow2 = array("attribute"=>0,"buycost"=>0,"special"=>"X");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special item fields.
|
||||||
|
$specialchange1 = "";
|
||||||
|
$specialchange2 = "";
|
||||||
|
if ($itemsrow["special"] != "X") {
|
||||||
|
$special = explode(",",$itemsrow["special"]);
|
||||||
|
$tochange = $special[0];
|
||||||
|
$userrow[$tochange] = $userrow[$tochange] + $special[1];
|
||||||
|
$specialchange1 = "$tochange='".$userrow[$tochange]."',";
|
||||||
|
if ($tochange == "strength") { $userrow["attackpower"] += $special[1]; }
|
||||||
|
if ($tochange == "dexterity") { $userrow["defensepower"] += $special[1]; }
|
||||||
|
}
|
||||||
|
if ($itemsrow2["special"] != "X") {
|
||||||
|
$special2 = explode(",",$itemsrow2["special"]);
|
||||||
|
$tochange2 = $special2[0];
|
||||||
|
$userrow[$tochange2] = $userrow[$tochange2] - $special2[1];
|
||||||
|
$specialchange2 = "$tochange2='".$userrow[$tochange2]."',";
|
||||||
|
if ($tochange2 == "strength") { $userrow["attackpower"] -= $special2[1]; }
|
||||||
|
if ($tochange2 == "dexterity") { $userrow["defensepower"] -= $special2[1]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// New stats.
|
||||||
|
$newgold = $userrow["gold"] + ceil($itemsrow2["buycost"]/2) - $itemsrow["buycost"];
|
||||||
|
$newdefense = $userrow["defensepower"] + $itemsrow["attribute"] - $itemsrow2["attribute"];
|
||||||
|
$newid = $itemsrow["id"];
|
||||||
|
$newname = $itemsrow["name"];
|
||||||
|
$userid = $userrow["id"];
|
||||||
|
if ($userrow["currenthp"] > $userrow["maxhp"]) { $newhp = $userrow["maxhp"]; } else { $newhp = $userrow["currenthp"]; }
|
||||||
|
if ($userrow["currentmp"] > $userrow["maxmp"]) { $newmp = $userrow["maxmp"]; } else { $newmp = $userrow["currentmp"]; }
|
||||||
|
if ($userrow["currenttp"] > $userrow["maxtp"]) { $newtp = $userrow["maxtp"]; } else { $newtp = $userrow["currenttp"]; }
|
||||||
|
|
||||||
|
// Final update.
|
||||||
|
$updatequery = doquery("UPDATE {{table}} SET $specialchange1 $specialchange2 gold='$newgold', defensepower='$newdefense', shieldid='$newid', shieldname='$newname', currenthp='$newhp', currentmp='$newmp', currenttp='$newtp' WHERE id='$userid' LIMIT 1", "users");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
display("Thank you for purchasing this item.<br /><br />You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=buy\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Items");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function maps() { // List maps the user can buy.
|
||||||
|
|
||||||
|
global $userrow, $numqueries;
|
||||||
|
|
||||||
|
$mappedtowns = explode(",",$userrow["towns"]);
|
||||||
|
|
||||||
|
$page = "Buying maps will put the town in your Travel To box, and it won't cost you as many TP to get there.<br /><br />\n";
|
||||||
|
$page .= "Click a town name to purchase its map.<br /><br />\n";
|
||||||
$page .= "<table width=\"90%\">\n";
|
$page .= "<table width=\"90%\">\n";
|
||||||
|
|
||||||
$towns = db()->query('SELECT * FROM towns ORDER BY id;');
|
$townquery = doquery("SELECT * FROM {{table}} ORDER BY id", "towns");
|
||||||
while ($townrow = $towns->fetchArray(SQLITE3_ASSOC)) {
|
while ($townrow = mysql_fetch_array($townquery)) {
|
||||||
$latitude = ($townrow["latitude"] >= 0) ? $townrow["latitude"] . "N," : ($townrow["latitude"] * -1) . "S,";
|
|
||||||
$longitude = ($townrow["longitude"] >= 0) ? $townrow["longitude"] . "E" : ($townrow["longitude"] * -1) . "W";
|
if ($townrow["latitude"] >= 0) { $latitude = $townrow["latitude"] . "N,"; } else { $latitude = ($townrow["latitude"]*-1) . "S,"; }
|
||||||
|
if ($townrow["longitude"] >= 0) { $longitude = $townrow["longitude"] . "E"; } else { $longitude = ($townrow["longitude"]*-1) . "W"; }
|
||||||
|
|
||||||
$mapped = false;
|
$mapped = false;
|
||||||
foreach($mappedtowns as $b) if ($b == $townrow["id"]) $mapped = true;
|
foreach($mappedtowns as $a => $b) {
|
||||||
|
if ($b == $townrow["id"]) { $mapped = true; }
|
||||||
|
}
|
||||||
if ($mapped == false) {
|
if ($mapped == false) {
|
||||||
$page .= "<tr><td width=\"25%\"><a href=\"index.php?do=maps2:".$townrow["id"]."\">".$townrow["name"]."</a></td><td width=\"25%\">Price: ".$townrow["mapprice"]." gold</td><td width=\"50%\" colspan=\"2\">Buy map to reveal details.</td></tr>\n";
|
$page .= "<tr><td width=\"25%\"><a href=\"index.php?do=maps2:".$townrow["id"]."\">".$townrow["name"]."</a></td><td width=\"25%\">Price: ".$townrow["mapprice"]." gold</td><td width=\"50%\" colspan=\"2\">Buy map to reveal details.</td></tr>\n";
|
||||||
} else {
|
} else {
|
||||||
$page .= "<tr><td width=\"25%\"><span class=\"light\">".$townrow["name"]."</span></td><td width=\"25%\"><span class=\"light\">Already mapped.</span></td><td width=\"35%\"><span class=\"light\">Location: $latitude $longitude</span></td><td width=\"15%\"><span class=\"light\">TP: ".$townrow["travelpoints"]."</span></td></tr>\n";
|
$page .= "<tr><td width=\"25%\"><span class=\"light\">".$townrow["name"]."</span></td><td width=\"25%\"><span class=\"light\">Already mapped.</span></td><td width=\"35%\"><span class=\"light\">Location: $latitude $longitude</span></td><td width=\"15%\"><span class=\"light\">TP: ".$townrow["travelpoints"]."</span></td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$page .= "</table><br>\n";
|
$page .= "</table><br />\n";
|
||||||
$page .= "If you've changed your mind, you may also return back to <a href=\"index.php\">town</a>.\n";
|
$page .= "If you've changed your mind, you may also return back to <a href=\"index.php\">town</a>.\n";
|
||||||
|
|
||||||
display($page, "Buy Maps");
|
display($page, "Buy Maps");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function maps2($id) { // Confirm user's intent to purchase map.
|
||||||
* Confirm user's intent to purchase map.
|
|
||||||
*/
|
|
||||||
function maps2($id)
|
|
||||||
{
|
|
||||||
global $userrow;
|
|
||||||
|
|
||||||
$townrow = get_town_by_id($id);
|
global $userrow, $numqueries;
|
||||||
|
|
||||||
if ($userrow["gold"] < $townrow["mapprice"]) {
|
$townquery = doquery("SELECT name,mapprice FROM {{table}} WHERE id='$id' LIMIT 1", "towns");
|
||||||
display("You do not have enough gold to buy this map.<br><br>You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=maps\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Maps");
|
$townrow = mysql_fetch_array($townquery);
|
||||||
}
|
|
||||||
|
|
||||||
$page = "You are buying the ".$townrow["name"]." map. Is that ok?<br><br><form action=\"index.php?do=maps3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
if ($userrow["gold"] < $townrow["mapprice"]) { display("You do not have enough gold to buy this map.<br /><br />You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=maps\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Maps"); die(); }
|
||||||
|
|
||||||
|
$page = "You are buying the ".$townrow["name"]." map. Is that ok?<br /><br /><form action=\"index.php?do=maps3:$id\" method=\"post\"><input type=\"submit\" name=\"submit\" value=\"Yes\" /> <input type=\"submit\" name=\"cancel\" value=\"No\" /></form>";
|
||||||
|
|
||||||
display($page, "Buy Maps");
|
display($page, "Buy Maps");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function maps3($id) { // Add new map to user's profile.
|
||||||
* Add new map to user's profile.
|
|
||||||
*/
|
|
||||||
function maps3($id)
|
|
||||||
{
|
|
||||||
if (isset($_POST["cancel"])) redirect('index.php');
|
|
||||||
|
|
||||||
global $userrow;
|
if (isset($_POST["cancel"])) { header("Location: index.php"); die(); }
|
||||||
|
|
||||||
$townrow = get_town_by_id($id);
|
global $userrow, $numqueries;
|
||||||
|
|
||||||
if ($userrow["gold"] < $townrow["mapprice"]) {
|
$townquery = doquery("SELECT name,mapprice FROM {{table}} WHERE id='$id' LIMIT 1", "towns");
|
||||||
display("You do not have enough gold to buy this map.<br><br>You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=maps\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Maps");
|
$townrow = mysql_fetch_array($townquery);
|
||||||
}
|
|
||||||
|
if ($userrow["gold"] < $townrow["mapprice"]) { display("You do not have enough gold to buy this map.<br /><br />You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=maps\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Maps"); die(); }
|
||||||
|
|
||||||
$mappedtowns = $userrow["towns"].",$id";
|
$mappedtowns = $userrow["towns"].",$id";
|
||||||
$newgold = $userrow["gold"] - $townrow["mapprice"];
|
$newgold = $userrow["gold"] - $townrow["mapprice"];
|
||||||
|
|
||||||
db()->query('UPDATE users SET towns=?, gold=? WHERE id=?;', [$mappedtowns, $newgold, $userrow['id']]);
|
$updatequery = doquery("UPDATE {{table}} SET towns='$mappedtowns',gold='$newgold' WHERE id='".$userrow["id"]."' LIMIT 1", "users");
|
||||||
|
|
||||||
|
display("Thank you for purchasing this map.<br /><br />You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=maps\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Maps");
|
||||||
|
|
||||||
display("Thank you for purchasing this map.<br><br>You may return to <a href=\"index.php\">town</a>, <a href=\"index.php?do=maps\">store</a>, or use the direction buttons on the left to start exploring.", "Buy Maps");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function travelto($id, $usepoints=true) { // Send a user to a town from the Travel To menu.
|
||||||
* Send a user to a town from the Travel To menu.
|
|
||||||
*/
|
|
||||||
function travelto($id, bool $usepoints = true)
|
|
||||||
{
|
|
||||||
global $userrow;
|
|
||||||
|
|
||||||
if ($userrow["currentaction"] == "Fighting") redirect('index.php?do=fight');
|
global $userrow, $numqueries;
|
||||||
|
|
||||||
$townrow = get_town_by_id($id);
|
if ($userrow["currentaction"] == "Fighting") { header("Location: index.php?do=fight"); die(); }
|
||||||
|
|
||||||
if ($usepoints) {
|
$townquery = doquery("SELECT name,travelpoints,latitude,longitude FROM {{table}} WHERE id='$id' LIMIT 1", "towns");
|
||||||
|
$townrow = mysql_fetch_array($townquery);
|
||||||
|
|
||||||
|
if ($usepoints==true) {
|
||||||
if ($userrow["currenttp"] < $townrow["travelpoints"]) {
|
if ($userrow["currenttp"] < $townrow["travelpoints"]) {
|
||||||
display("You do not have enough TP to travel here. Please go back and try again when you get more TP.", "Travel To");
|
display("You do not have enough TP to travel here. Please go back and try again when you get more TP.", "Travel To"); die();
|
||||||
}
|
}
|
||||||
$mapped = explode(",",$userrow["towns"]);
|
$mapped = explode(",",$userrow["towns"]);
|
||||||
if (!in_array($id, $mapped)) { display("Cheat attempt detected.<br><br>Get a life, loser.", "Error"); }
|
if (!in_array($id, $mapped)) { display("Cheat attempt detected.<br /><br />Get a life, loser.", "Error"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($userrow["latitude"] == $townrow["latitude"]) && ($userrow["longitude"] == $townrow["longitude"])) {
|
if (($userrow["latitude"] == $townrow["latitude"]) && ($userrow["longitude"] == $townrow["longitude"])) { display("You are already in this town. <a href=\"index.php\">Click here</a> to return to the main town screen.", "Travel To"); die(); }
|
||||||
display("You are already in this town. <a href=\"index.php\">Click here</a> to return to the main town screen.", "Travel To");
|
|
||||||
}
|
|
||||||
|
|
||||||
$newtp = ($usepoints) ? $userrow["currenttp"] - $townrow["travelpoints"] : $userrow["currenttp"];
|
if ($usepoints == true) { $newtp = $userrow["currenttp"] - $townrow["travelpoints"]; } else { $newtp = $userrow["currenttp"]; }
|
||||||
|
|
||||||
$newlat = $townrow["latitude"];
|
$newlat = $townrow["latitude"];
|
||||||
$newlon = $townrow["longitude"];
|
$newlon = $townrow["longitude"];
|
||||||
|
@ -322,16 +371,20 @@ function travelto($id, bool $usepoints = true)
|
||||||
// If they got here by exploring, add this town to their map.
|
// If they got here by exploring, add this town to their map.
|
||||||
$mapped = explode(",",$userrow["towns"]);
|
$mapped = explode(",",$userrow["towns"]);
|
||||||
$town = false;
|
$town = false;
|
||||||
foreach($mapped as $b) if ($b == $id) $town = true;
|
foreach($mapped as $a => $b) {
|
||||||
$mapped = implode(",", $mapped);
|
if ($b == $id) { $town = true; }
|
||||||
if ($town == false) $mapped .= ",$id";
|
}
|
||||||
|
$mapped = implode(",",$mapped);
|
||||||
|
if ($town == false) {
|
||||||
|
$mapped .= ",$id";
|
||||||
$mapped = "towns='".$mapped."',";
|
$mapped = "towns='".$mapped."',";
|
||||||
|
} else {
|
||||||
|
$mapped = "towns='".$mapped."',";
|
||||||
|
}
|
||||||
|
|
||||||
db()->query("UPDATE users SET currentaction='In Town',$mapped currenttp=?, latitude=?, longitude=? WHERE id=?;", [
|
$updatequery = doquery("UPDATE {{table}} SET currentaction='In Town',$mapped currenttp='$newtp',latitude='$newlat',longitude='$newlon' WHERE id='$newid' LIMIT 1", "users");
|
||||||
$newtp, $newlat, $newlon, $newid
|
|
||||||
]);
|
|
||||||
|
|
||||||
$page = "You have travelled to ".$townrow["name"].". You may now <a href=\"index.php\">enter this town</a>.";
|
$page = "You have travelled to ".$townrow["name"].". You may now <a href=\"index.php\">enter this town</a>.";
|
||||||
display($page, "Travel To");
|
display($page, "Travel To");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,25 +51,25 @@ a:hover {
|
||||||
<body><center>
|
<body><center>
|
||||||
<table width="90%"><tr>
|
<table width="90%"><tr>
|
||||||
<td width="150" style="border-right: solid 1px black;">
|
<td width="150" style="border-right: solid 1px black;">
|
||||||
<b><u>DK Administration</u></b><br><br>
|
<b><u>DK Administration</u></b><br /><br />
|
||||||
<b>Links:</b><br>
|
<b>Links:</b><br />
|
||||||
<a href="admin.php">Admin Home</a><br>
|
<a href="admin.php">Admin Home</a><br />
|
||||||
<a href="index.php">Game Home</a><br><br>
|
<a href="index.php">Game Home</a><br /><br />
|
||||||
<b>Primary Data:</b><br>
|
<b>Primary Data:</b><br />
|
||||||
<a href="admin.php?do=main">Main Settings</a><br>
|
<a href="admin.php?do=main">Main Settings</a><br />
|
||||||
<a href="admin.php?do=news">Add News Post</a><br>
|
<a href="admin.php?do=news">Add News Post</a><br />
|
||||||
<a href="admin.php?do=users">Edit Users</a><br><br>
|
<a href="admin.php?do=users">Edit Users</a><br /><br />
|
||||||
<b>Game Data:</b><br>
|
<b>Game Data:</b><br />
|
||||||
<a href="admin.php?do=items">Edit Items</a><br>
|
<a href="admin.php?do=items">Edit Items</a><br />
|
||||||
<a href="admin.php?do=drops">Edit Drops</a><br>
|
<a href="admin.php?do=drops">Edit Drops</a><br />
|
||||||
<a href="admin.php?do=towns">Edit Towns</a><br>
|
<a href="admin.php?do=towns">Edit Towns</a><br />
|
||||||
<a href="admin.php?do=monsters">Edit Monsters</a><br>
|
<a href="admin.php?do=monsters">Edit Monsters</a><br />
|
||||||
<a href="admin.php?do=levels">Edit Levels</a><br>
|
<a href="admin.php?do=levels">Edit Levels</a><br />
|
||||||
<a href="admin.php?do=spells">Edit Spells</a><br>
|
<a href="admin.php?do=spells">Edit Spells</a><br />
|
||||||
</td><td>
|
</td><td>
|
||||||
{{content}}
|
{{content}}
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
<br>
|
<br />
|
||||||
<table class="copyright" width="90%"><tr>
|
<table class="copyright" width="90%"><tr>
|
||||||
<td width="25%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="25%" align="center">© 2003-2006 by renderse7en</td><td width="25%" align="center">{{totaltime}} Seconds, {{numqueries}} Queries</td><td width="25%" align="center">Version {{version}} {{build}}</td>
|
<td width="25%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="25%" align="center">© 2003-2006 by renderse7en</td><td width="25%" align="center">{{totaltime}} Seconds, {{numqueries}} Queries</td><td width="25%" align="center">Version {{version}} {{build}}</td>
|
||||||
</center></body>
|
</center></body>
|
||||||
|
|
|
@ -4,9 +4,9 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td colspan="2">Use the form below to change your password. All fields are required. New passwords must be 10 alphanumeric characters or less.</td></tr>
|
<tr><td colspan="2">Use the form below to change your password. All fields are required. New passwords must be 10 alphanumeric characters or less.</td></tr>
|
||||||
<tr><td width="20%">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /></td></tr>
|
<tr><td width="20%">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /></td></tr>
|
||||||
<tr><td>Old Password:</td><td><input type="password" name="password" /></td></tr>
|
<tr><td>Old Password:</td><td><input type="password" name="oldpass" size="20" /></td></tr>
|
||||||
<tr><td>New Password:</td><td><input type="password" name="new_password" /></td></tr>
|
<tr><td>New Password:</td><td><input type="password" name="newpass1" size="20" maxlength="10" /></td></tr>
|
||||||
<tr><td>Verify New Password:</td><td><input type="password" name="new_password2" /><br><br><br></td></tr>
|
<tr><td>Verify New Password:</td><td><input type="password" name="newpass2" size="20" maxlength="10" /><br /><br /><br /></td></tr>
|
||||||
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -3,7 +3,7 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/title_fighting.gif" alt="Fighting" /></td></tr>
|
<tr><td class="title"><img src="images/title_fighting.gif" alt="Fighting" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
You are fighting a <b>{{monstername}}</b><br><br>
|
You are fighting a <b>{{monstername}}</b><br /><br />
|
||||||
{{monsterhp}}
|
{{monsterhp}}
|
||||||
{{yourturn}}
|
{{yourturn}}
|
||||||
{{monsterturn}}
|
{{monsterturn}}
|
||||||
|
|
|
@ -3,38 +3,38 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_location.gif" alt="Location" title="Location" /></td></tr>
|
<tr><td class="title"><img src="images/button_location.gif" alt="Location" title="Location" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
Currently: {{currentaction}}<br>
|
Currently: {{currentaction}}<br />
|
||||||
Latitude: {{latitude}}<br>
|
Latitude: {{latitude}}<br />
|
||||||
Longitude: {{longitude}}<br>
|
Longitude: {{longitude}}<br />
|
||||||
<a href="javascript:openmappopup()">View Map</a><br><br>
|
<a href="javascript:openmappopup()">View Map</a><br /><br />
|
||||||
<form action="index.php?do=move" method="post">
|
<form action="index.php?do=move" method="post">
|
||||||
<center>
|
<center>
|
||||||
<input name="north" type="submit" value="North" /><br>
|
<input name="north" type="submit" value="North" /><br />
|
||||||
<input name="west" type="submit" value="West" /><input name="east" type="submit" value="East" /><br>
|
<input name="west" type="submit" value="West" /><input name="east" type="submit" value="East" /><br />
|
||||||
<input name="south" type="submit" value="South" />
|
<input name="south" type="submit" value="South" />
|
||||||
</center>
|
</center>
|
||||||
</form>
|
</form>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_towns.gif" alt="Towns" title="Towns" /></td></tr>
|
<tr><td class="title"><img src="images/button_towns.gif" alt="Towns" title="Towns" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
{{currenttown}}
|
{{currenttown}}
|
||||||
Travel To:<br>
|
Travel To:<br />
|
||||||
{{townslist}}
|
{{townslist}}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_functions.gif" alt="Functions" title="Functions" /></td></tr>
|
<tr><td class="title"><img src="images/button_functions.gif" alt="Functions" title="Functions" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
{{forumslink}}
|
{{forumslink}}
|
||||||
{{adminlink}}
|
{{adminlink}}
|
||||||
<a href="users.php?do=changepassword">Change Password</a><br>
|
<a href="users.php?do=changepassword">Change Password</a><br />
|
||||||
<a href="login.php?do=logout">Log Out</a><br>
|
<a href="login.php?do=logout">Log Out</a><br />
|
||||||
<a href="help.php">Help</a>
|
<a href="help.php">Help</a>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
THEVERYENDOFYOU;
|
THEVERYENDOFYOU;
|
||||||
?>
|
?>
|
|
@ -6,7 +6,7 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<tr><td>Password:</td><td><input type="password" size="30" name="password" /></td></tr>
|
<tr><td>Password:</td><td><input type="password" size="30" name="password" /></td></tr>
|
||||||
<tr><td>Remember me?</td><td><input type="checkbox" name="rememberme" value="yes" /> Yes</td></tr>
|
<tr><td>Remember me?</td><td><input type="checkbox" name="rememberme" value="yes" /> Yes</td></tr>
|
||||||
<tr><td colspan="2"><input type="submit" name="submit" value="Log In" /></td></tr>
|
<tr><td colspan="2"><input type="submit" name="submit" value="Log In" /></td></tr>
|
||||||
<tr><td colspan="2">Checking the "Remember Me" option will store your login information in a cookie so you don't have to enter it next time you get online.<br><br>Want to play? You gotta <a href="users.php?do=register">register your own character.</a><br><br>You may also <a href="users.php?do=changepassword">change your password</a>, or <a href="users.php?do=lostpassword">request a new one</a> if you've lost yours.</td></tr>
|
<tr><td colspan="2">Checking the "Remember Me" option will store your login information in a cookie so you don't have to enter it next time you get online.<br /><br />Want to play? You gotta <a href="users.php?do=register">register your own character.</a><br /><br />You may also <a href="users.php?do=changepassword">change your password</a>, or <a href="users.php?do=lostpassword">request a new one</a> if you've lost yours.</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
THEVERYENDOFYOU;
|
THEVERYENDOFYOU;
|
||||||
|
|
|
@ -1,39 +1,41 @@
|
||||||
<?php
|
<?php
|
||||||
$template = <<<HTML
|
$template = <<<THEVERYENDOFYOU
|
||||||
Here is the character profile for <b>{{username}}</b>.<br><br>
|
Here is the character profile for <b>{{charname}}</b>.<br /><br />
|
||||||
When you're finished, you may <a href="index.php">return to town</a>.<br><br>
|
When you're finished, you may <a href="index.php">return to town</a>.<br /><br />
|
||||||
<table width="200">
|
<table width="200">
|
||||||
<tr><td class="title"><img src="images/button_character.gif" alt="Character" title="Character" /></td></tr>
|
<tr><td class="title"><img src="images/button_character.gif" alt="Character" title="Character" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<b>{{username}}</b><br><br>
|
<b>{{charname}}</b><br /><br />
|
||||||
|
|
||||||
Class: {{charclass}}<br><br>
|
Difficulty: {{difficulty}}<br />
|
||||||
|
Class: {{charclass}}<br /><br />
|
||||||
|
|
||||||
Level: {{level}}<br>
|
Level: {{level}}<br />
|
||||||
Experience: {{experience}}<br>
|
Experience: {{experience}}<br />
|
||||||
Gold: {{gold}}<br>
|
Gold: {{gold}}<br />
|
||||||
Hit Points: {{currenthp}} / {{maxhp}}<br>
|
Hit Points: {{currenthp}} / {{maxhp}}<br />
|
||||||
Magic Points: {{currentmp}} / {{maxmp}}<br>
|
Magic Points: {{currentmp}} / {{maxmp}}<br />
|
||||||
Travel Points: {{currenttp}} / {{maxtp}}<br><br>
|
Travel Points: {{currenttp}} / {{maxtp}}<br /><br />
|
||||||
|
|
||||||
Strength: {{strength}}<br>
|
Strength: {{strength}}<br />
|
||||||
Dexterity: {{dexterity}}<br>
|
Dexterity: {{dexterity}}<br />
|
||||||
Attack Power: {{attackpower}}<br>
|
Attack Power: {{attackpower}}<br />
|
||||||
Defense Power: {{defensepower}}<br>
|
Defense Power: {{defensepower}}<br />
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="200">
|
<table width="200">
|
||||||
<tr><td class="title"><img src="images/button_inventory.gif" alt="Inventory" title="Inventory" /></td></tr>
|
<tr><td class="title"><img src="images/button_inventory.gif" alt="Inventory" title="Inventory" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td><img src="images/icon_weapon.gif" alt="Weapon" title="Weapon" /></td><td width="100%">Weapon: {{weaponname}}</td></tr>
|
<tr><td><img src="images/icon_weapon.gif" alt="Weapon" title="Weapon" /></td><td width="100%">Weapon: {{weaponname}}</td></tr>
|
||||||
<tr><td><img src="images/icon_armor.gif" alt="Armor" title="Armor" /></td><td width="100%">Armor: {{armorname}}</td></tr>
|
<tr><td><img src="images/icon_armor.gif" alt="Armor" title="Armor" /></td><td width="100%">Armor: {{armorname}}</td></tr>
|
||||||
<tr><td><img src="images/icon_shield.gif" alt="Shield" title="Shield" /></td><td width="100%">Shield: {{shieldname}}</td></tr>
|
<tr><td><img src="images/icon_shield.gif" alt="Shield" title="Shield" /></td><td width="100%">Shield: {{shieldname}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
Slot 1: {{slot1name}}<br>
|
Slot 1: {{slot1name}}<br />
|
||||||
Slot 2: {{slot2name}}<br>
|
Slot 2: {{slot2name}}<br />
|
||||||
Slot 3: {{slot3name}}
|
Slot 3: {{slot3name}}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
HTML;
|
THEVERYENDOFYOU;
|
||||||
|
?>
|
|
@ -80,7 +80,7 @@ winpops=window.open(popurl,"","width=520,height=520,scrollbars")
|
||||||
<td class="middle">{{content}}</td>
|
<td class="middle">{{content}}</td>
|
||||||
<td class="right">{{rightnav}}</td>
|
<td class="right">{{rightnav}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
<table class="copyright" width="90%"><tr>
|
<table class="copyright" width="90%"><tr>
|
||||||
<td width="25%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="25%" align="center">© 2003-2006 by renderse7en</td><td width="25%" align="center">{{totaltime}} Seconds, {{numqueries}} Queries</td><td width="25%" align="center">Version {{version}} {{build}}</td>
|
<td width="25%" align="center">Powered by <a href="http://dragon.se7enet.com/dev.php" target="_new">Dragon Knight</a></td><td width="25%" align="center">© 2003-2006 by renderse7en</td><td width="25%" align="center">{{totaltime}} Seconds, {{numqueries}} Queries</td><td width="25%" align="center">Version {{version}} {{build}}</td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
|
@ -2,13 +2,15 @@
|
||||||
$template = <<<THEVERYENDOFYOU
|
$template = <<<THEVERYENDOFYOU
|
||||||
<form action="users.php?do=register" method="post">
|
<form action="users.php?do=register" method="post">
|
||||||
<table width="80%">
|
<table width="80%">
|
||||||
<tr><td width="20%">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /><br>Usernames must be 30 alphanumeric characters or less.<br><br><br></td></tr>
|
<tr><td width="20%">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /><br />Usernames must be 30 alphanumeric characters or less.<br /><br /><br /></td></tr>
|
||||||
<tr><td>Password:</td><td><input type="password" name="password1" size="30" maxlength="10" /></td></tr>
|
<tr><td>Password:</td><td><input type="password" name="password1" size="30" maxlength="10" /></td></tr>
|
||||||
<tr><td>Verify Password:</td><td><input type="password" name="password2" size="30" maxlength="10" /><br>Passwords must be 10 alphanumeric characters or less.<br><br><br></td></tr>
|
<tr><td>Verify Password:</td><td><input type="password" name="password2" size="30" maxlength="10" /><br />Passwords must be 10 alphanumeric characters or less.<br /><br /><br /></td></tr>
|
||||||
<tr><td>Email Address:</td><td><input type="text" name="email1" size="30" maxlength="100" /></td></tr>
|
<tr><td>Email Address:</td><td><input type="text" name="email1" size="30" maxlength="100" /></td></tr>
|
||||||
<tr><td>Verify Email:</td><td><input type="text" name="email2" size="30" maxlength="100" />{{verifytext}}<br><br><br></td></tr>
|
<tr><td>Verify Email:</td><td><input type="text" name="email2" size="30" maxlength="100" />{{verifytext}}<br /><br /><br /></td></tr>
|
||||||
|
<tr><td>Character Name:</td><td><input type="text" name="charname" size="30" maxlength="30" /></td></tr>
|
||||||
<tr><td>Character Class:</td><td><select name="charclass"><option value="1">{{class1name}}</option><option value="2">{{class2name}}</option><option value="3">{{class3name}}</option></select></td></tr>
|
<tr><td>Character Class:</td><td><select name="charclass"><option value="1">{{class1name}}</option><option value="2">{{class2name}}</option><option value="3">{{class3name}}</option></select></td></tr>
|
||||||
<tr><td colspan="2">See <a href="help.php">Help</a> for more information about character classes.<br><br></td></tr>
|
<tr><td>Difficulty:</td><td><select name="difficulty"><option value="1">{{diff1name}}</option><option value="2">{{diff2name}}</option><option value="3">{{diff3name}}</option></select></td></tr>
|
||||||
|
<tr><td colspan="2">See <a href="help.php">Help</a> for more information about character classes and difficulty levels.<br /><br /></td></tr>
|
||||||
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -3,17 +3,17 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_character.gif" alt="Character" title="Character" /></td></tr>
|
<tr><td class="title"><img src="images/button_character.gif" alt="Character" title="Character" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<b>{{username}}</b><br>
|
<b>{{charname}}</b><br />
|
||||||
Level: {{level}}<br>
|
Level: {{level}}<br />
|
||||||
Exp: {{experience}}<br>
|
Exp: {{experience}}<br />
|
||||||
Gold: {{gold}}<br>
|
Gold: {{gold}}<br />
|
||||||
HP: {{currenthp}}<br>
|
HP: {{currenthp}}<br />
|
||||||
MP: {{currentmp}}<br>
|
MP: {{currentmp}}<br />
|
||||||
TP: {{currenttp}}<br>
|
TP: {{currenttp}}<br />
|
||||||
{{statbars}}<br>
|
{{statbars}}<br />
|
||||||
<a href="javascript:opencharpopup()">Extended Stats</a>
|
<a href="javascript:opencharpopup()">Extended Stats</a>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_inventory.gif" alt="Inventory" title="Inventory" /></td></tr>
|
<tr><td class="title"><img src="images/button_inventory.gif" alt="Inventory" title="Inventory" /></td></tr>
|
||||||
|
@ -23,17 +23,17 @@ TP: {{currenttp}}<br>
|
||||||
<tr><td><img src="images/icon_armor.gif" alt="Armor" title="Armor" /></td><td width="100%">Armor: {{armorname}}</td></tr>
|
<tr><td><img src="images/icon_armor.gif" alt="Armor" title="Armor" /></td><td width="100%">Armor: {{armorname}}</td></tr>
|
||||||
<tr><td><img src="images/icon_shield.gif" alt="Shield" title="Shield" /></td><td width="100%">Shield: {{shieldname}}</td></tr>
|
<tr><td><img src="images/icon_shield.gif" alt="Shield" title="Shield" /></td><td width="100%">Shield: {{shieldname}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
Slot 1: {{slot1name}}<br>
|
Slot 1: {{slot1name}}<br />
|
||||||
Slot 2: {{slot2name}}<br>
|
Slot 2: {{slot2name}}<br />
|
||||||
Slot 3: {{slot3name}}
|
Slot 3: {{slot3name}}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_fastspells.gif" alt="Fast Spells" title="Fast Spells" /></td></tr>
|
<tr><td class="title"><img src="images/button_fastspells.gif" alt="Fast Spells" title="Fast Spells" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
{{magiclist}}
|
{{magiclist}}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
THEVERYENDOFYOU;
|
THEVERYENDOFYOU;
|
||||||
?>
|
?>
|
|
@ -3,24 +3,25 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_character.gif" alt="Character" title="Character" /></td></tr>
|
<tr><td class="title"><img src="images/button_character.gif" alt="Character" title="Character" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<b>{{username}}</b><br><br>
|
<b>{{charname}}</b><br /><br />
|
||||||
|
|
||||||
Class: {{charclass}}<br><br>
|
Difficulty: {{difficulty}}<br />
|
||||||
|
Class: {{charclass}}<br /><br />
|
||||||
|
|
||||||
Level: {{level}}<br>
|
Level: {{level}}<br />
|
||||||
Experience: {{experience}} {{plusexp}}<br>
|
Experience: {{experience}} {{plusexp}}<br />
|
||||||
Next Level: {{nextlevel}}<br>
|
Next Level: {{nextlevel}}<br />
|
||||||
Gold: {{gold}} {{plusgold}}<br>
|
Gold: {{gold}} {{plusgold}}<br />
|
||||||
Hit Points: {{currenthp}} / {{maxhp}}<br>
|
Hit Points: {{currenthp}} / {{maxhp}}<br />
|
||||||
Magic Points: {{currentmp}} / {{maxmp}}<br>
|
Magic Points: {{currentmp}} / {{maxmp}}<br />
|
||||||
Travel Points: {{currenttp}} / {{maxtp}}<br><br>
|
Travel Points: {{currenttp}} / {{maxtp}}<br /><br />
|
||||||
|
|
||||||
Strength: {{strength}}<br>
|
Strength: {{strength}}<br />
|
||||||
Dexterity: {{dexterity}}<br>
|
Dexterity: {{dexterity}}<br />
|
||||||
Attack Power: {{attackpower}}<br>
|
Attack Power: {{attackpower}}<br />
|
||||||
Defense Power: {{defensepower}}<br>
|
Defense Power: {{defensepower}}<br />
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_inventory.gif" alt="Inventory" title="Inventory" /></td></tr>
|
<tr><td class="title"><img src="images/button_inventory.gif" alt="Inventory" title="Inventory" /></td></tr>
|
||||||
|
@ -30,17 +31,17 @@ Defense Power: {{defensepower}}<br>
|
||||||
<tr><td><img src="images/icon_armor.gif" alt="Armor" title="Armor" /></td><td width="100%">Armor: {{armorname}}</td></tr>
|
<tr><td><img src="images/icon_armor.gif" alt="Armor" title="Armor" /></td><td width="100%">Armor: {{armorname}}</td></tr>
|
||||||
<tr><td><img src="images/icon_shield.gif" alt="Shield" title="Shield" /></td><td width="100%">Shield: {{shieldname}}</td></tr>
|
<tr><td><img src="images/icon_shield.gif" alt="Shield" title="Shield" /></td><td width="100%">Shield: {{shieldname}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
Slot 1: {{slot1name}}<br>
|
Slot 1: {{slot1name}}<br />
|
||||||
Slot 2: {{slot2name}}<br>
|
Slot 2: {{slot2name}}<br />
|
||||||
Slot 3: {{slot3name}}
|
Slot 3: {{slot3name}}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/button_spells.gif" alt="Spells" title="Spells" /></td></tr>
|
<tr><td class="title"><img src="images/button_spells.gif" alt="Spells" title="Spells" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
{{magiclist}}
|
{{magiclist}}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table><br>
|
</table><br />
|
||||||
THEVERYENDOFYOU;
|
THEVERYENDOFYOU;
|
||||||
?>
|
?>
|
|
@ -3,7 +3,7 @@ $template = <<<THEVERYENDOFYOU
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td class="title"><img src="images/town_{{id}}.gif" alt="Welcome to {{name}}" title="Welcome to {{name}}" /></td></tr>
|
<tr><td class="title"><img src="images/town_{{id}}.gif" alt="Welcome to {{name}}" title="Welcome to {{name}}" /></td></tr>
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<b>Town Options:</b><br>
|
<b>Town Options:</b><br />
|
||||||
<ul>
|
<ul>
|
||||||
<li /><a href="index.php?do=inn">Rest at the Inn</a>
|
<li /><a href="index.php?do=inn">Rest at the Inn</a>
|
||||||
<li /><a href="index.php?do=buy">Buy Weapons/Armor</a>
|
<li /><a href="index.php?do=buy">Buy Weapons/Armor</a>
|
||||||
|
@ -12,7 +12,7 @@ $template = <<<THEVERYENDOFYOU
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<tr><td><center>
|
<tr><td><center>
|
||||||
{{news}}
|
{{news}}
|
||||||
<br>
|
<br />
|
||||||
<table width="95%">
|
<table width="95%">
|
||||||
<tr><td width="50%">
|
<tr><td width="50%">
|
||||||
{{whosonline}}
|
{{whosonline}}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
|
$template = <<<THEVERYENDOFYOU
|
||||||
$template = <<<HTML
|
<form action="users.php?do=verify" method="post">
|
||||||
<form action="users.php?do=verify" method="post">
|
<table width="80%">
|
||||||
<table width="80%">
|
<tr><td colspan="2">Thank you for registering a character. Please enter your username, email address, and the verification code
|
||||||
<tr><td colspan="2">Thank you for registering a character. Please enter your username, email address, and the verification code
|
that was emailed to you to unlock your character.</td></tr>
|
||||||
that was emailed to you to unlock your character.</td></tr>
|
<tr><td width="20%">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /></td></tr>
|
||||||
<tr><td width="20%">Username:</td><td><input type="text" name="username" size="30" maxlength="30" /></td></tr>
|
<tr><td>Email Address:</td><td><input type="text" name="email" size="30" maxlength="100" /></td></tr>
|
||||||
<tr><td>Email Address:</td><td><input type="text" name="email" size="30" maxlength="100" /></td></tr>
|
<tr><td>Verification Code:</td><td><input type="text" name="verify" size="10" maxlength="8" /><br /><br /><br /></td></tr>
|
||||||
<tr><td>Verification Code:</td><td><input type="text" name="token" /><br><br><br></td></tr>
|
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
||||||
<tr><td colspan="2"><input type="submit" name="submit" value="Submit" /> <input type="reset" name="reset" value="Reset" /></td></tr>
|
</table>
|
||||||
</table>
|
</form>
|
||||||
</form>
|
THEVERYENDOFYOU;
|
||||||
HTML;
|
?>
|
Loading…
Reference in New Issue
Block a user