function ekd_dohook($hookname, $args) { global $session; switch ($hookname) { case "biostat": $acctid = $args['acctid']; $sql = "SELECT dragonkills FROM " . db_prefix("accounts") . " WHERE acctid = {$acctid}"; $result = db_fetch_assoc(db_query($sql)); $tdk = $result['dragonkills']; $edk = get_module_pref("edks", "edk", $acctid); $cdk = $tdk - $edk; if ($edk > 1 && $tdk > 1) { output("Out of %s total Drive Kills, %s were Economic Drive Kills.`n", $tdk, $edk); } else { if ($edk == 1) { output("This player has completed an Economic Drive Kill.`n"); } } break; case "counciloffices": addnav("Ask about the Gun", "runmodule.php?module=edk&op=start"); break; } return $args; }
function dag_uninstall() { output("Dropping bounty table"); $sql = "DROP TABLE IF EXISTS " . db_prefix("bounty"); db_query($sql); return true; }
function friendlist_unignore() { global $session; $ac = httpget('ac'); $ignored = rexplode(get_module_pref('ignored', 'friendlist', $ac)); $iveignored = rexplode(get_module_pref('iveignored')); if (in_array($ac, $iveignored)) { $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid={$ac} AND locked=0"; $result = db_query($sql); if (db_num_rows($result) > 0) { $row = db_fetch_assoc($result); $info = sprintf_translate("%s`Q has been removed from your list.", $row['name']); require_once "lib/systemmail.php"; $t = array("`\$Ignore List Removal"); $mailmessage = array("%s`0`@ has removed you from %s ignore list.", $session['user']['name'], $session['user']['sex'] ? translate_inline("her") : translate_inline("his")); systemmail($ac, $t, $mailmessage); } else { $info = translate_inline("That user no longer exists..."); } } $ignored = array_diff($ignored, array($session['user']['acctid'])); $ignored = rimplode($ignored); set_module_pref('ignored', $ignored, 'friendlist', $ac); if (in_array($ac, $iveignored)) { $iveignored = array_diff($iveignored, array($ac)); $iveignored = rimplode($iveignored); set_module_pref('iveignored', $iveignored); } output_notl($info); }
function viewcommentaryargs_dohook($hook, $args) { global $currentCommentaryArea; switch ($hook) { case 'blockcommentarea': $currentCommentaryArea = $args['section']; break; case 'viewcommentary': $accounts = db_prefix('accounts'); $commentary = db_prefix('commentary'); preg_match("/bio.php\\?char=(.*)&ret/", $args['commentline'], $matches); $acctid = filter_var($matches[1], FILTER_SANITIZE_NUMBER_INT); $sql = db_query_cached("SELECT login, name FROM {$accounts} WHERE acctid = {$acctid}", "commentary-author_name-{$acctid}", 86400); $row = db_fetch_assoc($sql); $name = $row['name']; $login = $row['login']; $temp = explode($row['name'], $args['commentline']); $temp = str_replace('`3 says, "`#', '', $temp[1]); $temp = str_replace('`3"', '', $temp); $temp = str_replace('/me', '', $temp); $temp = str_replace(':', '', $temp); $temp = str_replace('</a>', '', $temp); $temp = full_sanitize($temp); $temp = addslashes(implode('%', str_split(trim($temp)))); $sql = db_query("SELECT commentid, comment, postdate FROM {$commentary}\n WHERE comment LIKE '%{$temp}%'\n AND section = '{$currentCommentaryArea}'"); $row = db_fetch_assoc($sql); $args = ['commentline' => $args['commentline'], 'section' => $currentCommentaryArea, 'commentid' => $row['commentid'], 'comment' => $row['comment'], 'author_acctid' => $acctid, 'author_login' => $login, 'author_name' => $name, 'date' => $row['postdate']]; unset($row); unset($temp); break; } return $args; }
function bugtracker_install() { $bugs = array('id' => array('name' => 'creatureid', 'type' => 'int(11) unsigned', 'extra' => 'auto_increment'), 'status' => array('name' => 'status', 'type' => 'text'), 'public' => array('name' => 'public', 'type' => 'bool'), 'info' => array('name' => 'info', 'type' => 'text'), 'key-PRIMARY' => array('name' => 'PRIMARY', 'type' => 'primary key', 'unique' => '1', 'columns' => 'id')); require_once "lib/tabledescriptor.php"; synctable(db_prefix('bugs'), $bugs, true); return true; }
function friendlist_search() { global $session; $n = httppost("n"); rawoutput("<form action='runmodule.php?module=friendlist&op=search' method='POST'>"); addnav("", "runmodule.php?module=friendlist&op=search"); if ($n != "") { $string = "%"; for ($x = 0; $x < strlen($n); $x++) { $string .= substr($n, $x, 1) . "%"; } $sql = "SELECT name,dragonkills,acctid FROM " . db_prefix("accounts") . " WHERE name LIKE '%{$string}%' AND acctid<>" . $session['user']['acctid'] . " AND locked=0 ORDER BY level,dragonkills"; $result = db_query($sql); if (db_num_rows($result) > 0) { $ignored = rexplode(get_module_pref('ignored')); $friends = rexplode(get_module_pref('friends')); $request = rexplode(get_module_pref('request')); $iveignored = rexplode(get_module_pref('iveignored')); output("`@These users were found:`n"); rawoutput("<table style='width:60%;text-align:center;' cellpadding='3' cellspacing='0' border='0'>"); rawoutput("<tr class='trhead'><td>" . translate_inline("Name") . "</td><td>" . translate_inline("Operations") . "</td></tr>"); for ($i = 0; $i < db_num_rows($result); $i++) { $row = db_fetch_assoc($result); rawoutput("<tr class='" . ($i % 2 ? "trlight" : "trdark") . "'><td>"); output_notl($row['name']); rawoutput("</td><td>"); if (in_array($row['acctid'], $ignored)) { $info = translate_inline("This user has ignored you."); $info .= " [<a href='runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid'] . "' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid']); } elseif (in_array($row['acctid'], $friends)) { $info = translate_inline("This user is already in your list."); } elseif (in_array($row['acctid'], $request)) { $info = translate_inline("This user has already requested to you."); } else { if (in_array($row['acctid'], $iveignored)) { $info = "[<a href='runmodule.php?module=friendlist&op=unignore&ac=" . $row['acctid'] . "' class='colLtRed'>" . translate_inline("Unignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=unignore&ac=" . $row['acctid']); } else { $info = "[<a href='runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid'] . "' class='colDkGreen'>" . translate_inline("Ignore") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=ignore&ac=" . $row['acctid']); $info .= " - [<a href='runmodule.php?module=friendlist&op=request&ac=" . $row['acctid'] . "' class='colDkGreen'>" . translate_inline("Request") . "</a>]"; addnav("", "runmodule.php?module=friendlist&op=request&ac=" . $row['acctid']); } } rawoutput("{$info}</td></tr>"); } rawoutput("</table>"); } else { output("`c`@`bA user was not found with that name.`b`c"); } output_notl("`n"); } output("`^`b`cFriend Search...`c`b"); output("`n`nWho do you want to search for?"); output("`n`nName of user: "******"<input name='n' maxlength='50' value=\"" . htmlentities(stripslashes(httppost('n'))) . "\">"); $apply = translate_inline("Search"); rawoutput("<input type='submit' class='button' value='{$apply}'></form>"); }
function changelog_run() { $op = httpget('op'); $ret = httpget('ret'); $offset = httpget('offset') ?: 1; $offset = ($offset - 1) * 25; $offset = filter_var($offset, FILTER_SANITIZE_NUMBER_INT); $gamelog = db_prefix('gamelog'); $accounts = db_prefix('accounts'); $category = addslashes(get_module_setting('category')); page_header('Server Changelog'); $sql = db_query("SELECT count(logid) AS n FROM {$gamelog} WHERE category = '{$category}'"); $row = db_fetch_assoc($sql); addnav('Go back', "{$ret}.php"); addnav('Changes'); for ($i = 1; $i < $row['n'] / 25 + 1; $i++) { addnav(sprintf("%sPage %s (%s-%s)", $offset / 25 + 1 == $i ? '`^' : '', $i, ($i - 1) * 25 + 1, $i * 25 < $row['n'] ? $i * 25 : $row['n']), "runmodule.php?module=changelog&offset={$i}&ret={$ret}"); } $sql = db_query("SELECT g.*, a.name FROM {$gamelog} AS g\n LEFT JOIN {$accounts} AS a ON g.who = a.acctid\n WHERE category = '{$category}' ORDER BY logid+0 DESC LIMIT {$offset}, 25"); output("`c`@`bChangelog`b`c`n"); while ($row = db_fetch_assoc($sql)) { output(get_module_setting('format'), $row['name'], $row['message']); } page_footer(); }
function monsterkills_run() { page_header("Most Monster Kills"); $acc = db_prefix("accounts"); $mp = db_prefix("module_userprefs"); $sql = "SELECT {$acc}.name AS name,\r\n\t\t{$acc}.acctid AS acctid,\r\n\t\t{$mp}.value AS kills,\r\n\t\t{$mp}.userid FROM {$mp} INNER JOIN {$acc}\r\n\t\tON {$acc}.acctid = {$mp}.userid \r\n\t\tWHERE {$mp}.modulename = 'monsterkills' \r\n\t\tAND {$mp}.setting = 'kills' \r\n\t\tAND {$mp}.value > 0 ORDER BY ({$mp}.value+0)\t\r\n\t\tDESC limit " . get_module_setting("list") . ""; $result = db_query($sql); $rank = translate_inline("Kills"); $name = translate_inline("Name"); output("`n`b`c`@Most`\$ Monster `@Kills`n`n`c`b"); rawoutput("<table border='0' cellpadding='2' cellspacing='1' align='center'>"); rawoutput("<tr class='trhead'><td align=center>{$name}</td><td align=center>{$rank}</td></tr>"); for ($i = 0; $i < db_num_rows($result); $i++) { $row = db_fetch_assoc($result); if ($row['name'] == $session['user']['name']) { rawoutput("<tr class='trhilight'><td>"); } else { rawoutput("<tr class='" . ($i % 2 ? "trdark" : "trlight") . "'><td align=left>"); } output_notl("%s", $row['name']); rawoutput("</td><td align=right>"); output_notl("%s", $row['kills']); rawoutput("</td></tr>"); } rawoutput("</table>"); addnav("Back to HoF", "hof.php"); villagenav(); page_footer(); }
function get_partner($player = false) { global $session; if ($player === false) { $partner = getsetting("barmaid", "`%Violet"); if ($session['user']['sex'] != SEX_MALE) { $partner = getsetting("bard", "`^Seth"); } } else { if ($session['user']['marriedto'] == INT_MAX) { $partner = getsetting("barmaid", "`%Violet"); if ($session['user']['sex'] != SEX_MALE) { $partner = getsetting("bard", "`^Seth"); } } else { $sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid = {$session['user']['marriedto']}"; $result = db_query($sql); if ($row = db_fetch_assoc($result)) { $partner = $row['name']; } else { $session['user']['marriedto'] = 0; $partner = getsetting("barmaid", "`%Violet"); if ($session['user']['sex'] != SEX_MALE) { $partner = getsetting("bard", "`^Seth"); } } } } // No need to translate names... // tlschema("partner"); // $partner = translate_inline($partner); // tlschema(); return $partner; }
function get_typeid($modulename) { $sql = "SELECT typeid FROM " . db_prefix("dwellingtypes") . " WHERE module='{$modulename}'"; $res = db_query($sql); $row = db_fetch_assoc($res); return $row['typeid']; }
function scrapbots_get_armies($defenderid, $attackerid) { global $session; //get attackers $sql = "SELECT id,owner,name,activated,hitpoints,brains,brawn,briskness,junglefighter,retreathp FROM " . db_prefix("scrapbots") . " WHERE owner = {$attackerid}"; $result = db_query($sql); $attacker = array(); for ($i = 0; $i < db_num_rows($result); $i++) { $attacker[$i] = db_fetch_assoc($result); } $sql = "SELECT id,owner,name,activated,hitpoints,brains,brawn,briskness,junglefighter,retreathp FROM " . db_prefix("scrapbots") . " WHERE owner = {$defenderid}"; $result = db_query($sql); $defender = array(); for ($i = 0; $i < db_num_rows($result); $i++) { $defender[$i] = db_fetch_assoc($result); } debug("Debugging Attacker"); debug($attacker); debug("Debugging Defender"); debug($defender); $armies = array("attacker" => $attacker, "defender" => $defender); //Set starting vals $armies['attacker']['retreatpct'] = get_module_pref("retreatpct", "scrapbots", $attackerid); $armies['defender']['retreat'] = get_module_pref("retreatpct", "scrapbots", $defenderid); debug("Debugging Armies"); debug($armies); return $armies; }
function bioextension_dohook($hookname, $args) { global $session; if ($hookname == "bioinfo") { $sql = "SELECT donation FROM " . db_prefix("accounts") . " WHERE acctid = '" . $args['acctid'] . "'"; $result = db_query($sql); $row = db_fetch_assoc($result); if ($row['donation'] >= get_module_setting("threshhold")) { $bio = get_module_pref("user_extendedbio", "bioextension", $args['acctid']); $link = get_module_pref("user_extlink", "bioextension", $args['acctid']); $bio = str_replace(chr(13), "`n", $bio); $bio = stripslashes($bio); output("`0%s`n`n", $bio); if (substr($link, 0, 5) == "http:") { rawoutput("<a href=\"" . $link . "\">Player's webpage</a><br /><br />"); } } } else { if ($hookname == "footer-prefs") { $bio = get_module_pref("user_extendedbio"); $limit = get_module_setting("charlimit"); if (strlen($bio) > $limit) { output("`c`4`bWARNING`b`0`c`nYour Extended Bio is oversized by %s characters. If you navigate away from this page, your Extended Bio will have %s characters indiscriminately cut from the end. Please edit and re-save your Extended Bio to avoid cuts.", strlen($bio) - $limit, strlen($bio) - $limit); $bio = substr($bio, 0, $limit); set_module_pref("user_extendedbio", $bio); } } } return $args; }
function tents_dohook($hookname, $args) { global $session; switch ($hookname) { case "worldnav": $ploc = get_module_pref("worldXYZ", "worldmapen"); $sql = "SELECT owner,type,data FROM " . db_prefix("structures") . " WHERE location = {$ploc}"; $result = db_query($sql); for ($i = 0; $i < db_num_rows($result); $i++) { //send structure through module hooks } // $chats = unserialize(get_module_setting("placedchats")); // $ploc = get_module_pref("worldXYZ","worldmapen"); // $chatarea = 0; // if (!is_array($chats)) { // $chats = array(); // } // foreach($chats AS $key => $vals){ // if ($ploc == $vals['loc']['x'].",".$vals['loc']['y'].",1"){ // output("`0There's a little tent here.`n"); // addnav("Investigate Tent","runmodule.php?module=tents&xyz=".$ploc); // $chatarea = 1; // break; // } // } // if (!$chatarea){ // } break; } return $args; }
function lovers_install() { module_addhook("newday"); module_addhook("inn"); $sql = "DESCRIBE " . db_prefix("accounts"); $result = db_query($sql); while ($row = db_fetch_assoc($result)) { if ($row['Field'] == "seenlover") { $sql = "SELECT seenlover,acctid FROM " . db_prefix("accounts") . " WHERE seenlover>0"; $result1 = db_query($sql); debug("Migrating seenlover.`n"); while ($row1 = db_fetch_assoc($result1)) { $sql = "INSERT INTO " . db_prefix("module_userprefs") . " (modulename,setting,userid,value) VALUES ('lovers','seenlover',{$row1['acctid']},{$row1['seenlover']})"; db_query($sql); } //end while debug("Dropping seenlover column from the user table.`n"); $sql = "ALTER TABLE " . db_prefix("accounts") . " DROP seenlover"; db_query($sql); //drop it from the user's session too. unset($session['user']['seenlover']); } //end if } //end while return true; }
/** * Provides all members of this group. * * @return UserGroupMember[] */ public function getMembers() { // First get all userIDs that are members. $qAllMembers = db_query(sprintf("SELECT `userID`,`access` FROM `%s_group_members` WHERE `groupID`=%d", db_prefix(), $this->getGroupID())); $nAllMembers = db_num($qAllMembers); // Verify that we got any users. if ($qAllMembers === false || $nAllMembers < 1) { return array(); } $members = array(); $userIDs = array(); $rowsIndexedByUID = array(); // Fetch each as User while ($row = db_fetch_assoc($qAllMembers)) { $userIDs[] = $row["userID"]; $rowsIndexedByUID[$row["userID"]] = $row; } // Fetch the users. $users = UserManager::getInstance()->getUsersByID($userIDs); if (count($users) < 1) { return array(); } // Create as UserGroupMember foreach ($users as $user) { $memberRow = $rowsIndexedByUID[$user->getUserID()]; $member = new UserGroupMember($user->getUserID()); $member->fillInfo($user->getInfo()); // fill extra variables $member->setAccess($memberRow["access"]); $member->setGroup($this); $members[] = $member; unset($memberRow, $user, $member); } return $members; }
/** * Create Authentication object * This function is overwritable from the custom helpers/auth_helper.php * * @param string $id PK value * @param object $data The user data object (optional). If it is not given, auth_create will load it from db * * @return object The authenticated user object or FALSE on failure */ function auth_create($id, $data = null) { $lc_auth = auth_prerequisite(); $auth = auth_get(); if (!$auth) { $table = db_prefix() . str_replace(db_prefix(), '', $lc_auth['table']); $fieldId = $lc_auth['fields']['id']; $fieldRole = $lc_auth['fields']['role']; if (is_object($data)) { $session = $data; } else { $sql = 'SELECT * FROM ' . $table . ' WHERE ' . $fieldId . ' = :id LIMIT 1'; if ($result = db_query($sql, array(':id' => $id))) { $session = db_fetchObject($result); } } if (isset($session)) { $session->sessId = session_id(); $session->timestamp = md5(time()); $session->permissions = auth_permissions($session->{$fieldRole}); $session->blocks = auth_blocks($session->{$fieldRole}); auth_set($session); return $session; } } else { return $auth; } return false; }
function serverloadperpage_run() { global $session; page_header("Server Load by Page Execution Times"); //Show player number table $sql = "SELECT * FROM " . db_prefix("performancepage") . " ORDER BY totalpages DESC"; $result = db_query($sql); output("`bAverage Page Generation Times by script request`b`n"); rawoutput("<table border='0' cellpadding='2' cellspacing='1' align='center' width='100%'>"); rawoutput("<tr class='trhead'><td>URL</td><td>Total Count</td><td>Total Time</td><td>Average Time / Page</td></tr>"); for ($i = 0; $i < db_num_rows($result); $i++) { $row = db_fetch_assoc($result); if ($row['totalpages'] >= 1) { $avg = $row['totaltime'] / $row['totalpages']; $max = 100; $bwidth = round($avg * 100); $bnonwidth = $max - $bwidth; if ($bnonwidth > 0) { $bar = "<table style='border: solid 1px #000000' width='{$max}' height='7' bgcolor='#333333' cellpadding=0 cellspacing=0><tr><td width='{$bwidth}' bgcolor='#00ff00'></td><td width='{$bnonwidth}'></td></tr></table>"; } else { $over = $bwidth - $max; $total = $max + $over; $bar = "<table style='border: solid 1px #000000' height='7' width='{$total}' cellpadding=0 cellspacing=0><tr><td width='{$max}' bgcolor='#990000'></td><td width='{$over}' bgcolor='#ff0000'></td></tr></table>"; } rawoutput("<tr class='" . ($i % 2 ? "trdark" : "trlight") . "'>"); rawoutput("<td>" . $row['page'] . "</td><td>" . number_format($row['totalpages']) . "</td><td>" . $row['totaltime'] . "</td><td>" . $bar . round($row['totaltime'] / $row['totalpages'], 4) . "</td></tr>"); } } rawoutput("</table>"); page_footer(); }
function translationconvert_run() { global $session; page_header("Translations Convertor Thing"); output("Outputting all known translations, so that you can do a find-and-replace in the files themselves and we can stop doing this silly translate thing.`n`n"); if (httpget('delete')) { $del = httpget('delete'); $sql = "UPDATE " . db_prefix("translations") . " SET version='updated' WHERE tid={$del}"; db_query($sql); } $sql = "SELECT * FROM " . db_prefix("translations") . " WHERE version='dragonbones' ORDER BY uri"; $result = db_query($sql); $total = 0; while ($row = db_fetch_assoc($result)) { if ($row['intext'] != $row['outtext']) { $total++; rawoutput("<a href=\"runmodule.php?module=translationconvert&delete=" . $row['tid'] . "\">MARK</a>"); addnav("", "runmodule.php?module=translationconvert&delete=" . $row['tid']); output_notl("`n`0`b%s`b:", $row['uri']); rawoutput("<table width=100%><tr><td width=50% border=1px solid #cccccc>" . $row['intext'] . "</td><td width=50%>" . $row['outtext'] . "</td></tr></table>"); output_notl("`n`n"); } } debug($total); addnav("Back to the Grotto", "superuser.php"); page_footer(); }
function checkban(string $login, bool $connect = false) : bool { global $session; $accounts = db_prefix('accounts'); $bans = db_prefix('accounts'); $today = date('Y-m-d'); $sql = db_query("SELECT lastip, uniquid, banoverride, superuser FROM {$accounts}\n WHERE login = '******'"); $row = db_fetch_assoc($sql); if ($row['banoverride'] || $row['superuser'] & ~SU_DOESNT_GIVE_GROTTO) { return false; } db_free_result($sql); $sql = db_query("SELECT * FROM {$bans}\n WHERE (\n (ipfilter = '{$row['lastip']}' OR ipfilter = '{$_SERVER['REMOTE_ADDR']}')\n OR (uniqueid = '{$row['uniqueid']}' OR uniqueid = '{$_COOKIE['lgi']}')\n )\n AND (banexpire = '000-00-00' OR banexpire >= '{$today}')"); if (db_num_rows($sql) > 0) { if ($connect) { $session = []; tlschema('ban'); $session['message'] .= translate_inline('`n`4You fall under a ban currently in place on this website:'); while ($row = db_fetch_assoc($sql)) { $session['message'] .= "`n{$row['banreason']}`n"; if ($row['banexpire'] == '0000-00-00') { $session['message'] .= translate_inline("`\$This ban is permanent!`0"); } else { $session['message'] .= sprintf_translate("`^This ban will be removed `\$after`^ %s.`0", date("M d, Y", strtotime($row['banexpire']))); } db_query("UPDATE {$bans}\n SET lasthit = '{$today} 00:00:00'\n WHERE ipfilter = '{$row['ipfilter']}'\n AND uniqueid = '{$row['uniqueid']}'\n "); } $session['message'] .= translate_inline("`n`4If you wish, you may appeal your ban with the petition link."); tlschema(); header('Location: home.php'); } return true; } return false; }
function dwellings_run() { checkday(); page_header("Dwellings"); global $session; $op = httpget("op"); $dwid = httpget('dwid'); $type = httpget('type'); debug(get_module_pref("location_saver")); if ($type == "" && $dwid > 0) { $sql = "SELECT type FROM " . db_prefix("dwellings") . " WHERE dwid={$dwid}"; $result = db_query($sql); $row = db_fetch_assoc($result); $type = $row['type']; } $cityid = httpget('cityid'); require_once "modules/dwellings/run/case_{$op}.php"; if ($op != "list" && $op != "") { addnav("Leave"); addnav("Return to Hamlet", "runmodule.php?module=dwellings"); } else { addnav("Navigation"); villagenav(); } page_footer(); }
function translationwizard_uninstall() { output_notl("Performing Uninstall on Translation Wizard. Thank you for using!`n`n"); if (db_table_exists(db_prefix("temp_translations"))) { db_query("DROP TABLE " . db_prefix("temp_translations")); } return true; }
function implantservoarms_uninstall() { // Reset the specialty of anyone who had this specialty so they get to // rechoose at new day $sql = "UPDATE " . db_prefix("accounts") . " SET specialty='' WHERE specialty='SR'"; db_query($sql); return true; }
function goldmine_install() { module_addeventhook("forest", "return 100;"); $sql = "DESCRIBE " . db_prefix("mounts"); $result = db_query($sql); while ($row = db_fetch_assoc($result)) { if ($row['Field'] == "mine_canenter") { debug("Migrating mine_canenter for all mounts"); $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','entermine',mountid,mine_canenter FROM " . db_prefix("mounts") . " WHERE mine_canenter>0"; db_query($sql); debug("Dropping mine_canenter field from mounts table"); $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_canenter"; db_query($sql); } if ($row['Field'] == "mine_candie") { debug("Migrating mine_candie for all mounts"); $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','dieinmine',mountid,mine_candie FROM " . db_prefix("mounts") . " WHERE mine_candie>0"; db_query($sql); debug("Dropping mine_candie field from mounts table"); $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_candie"; db_query($sql); } if ($row['Field'] == "mine_cansave") { debug("Migrating mine_cansave for all mounts"); $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','saveplayer',mountid,mine_cansave FROM " . db_prefix("mounts") . " WHERE mine_cansave>0"; db_query($sql); debug("Dropping mine_cansave field from mounts table"); $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_cansave"; db_query($sql); } if ($row['Field'] == "mine_tethermsg") { debug("Migrating mine_tethermsg for all mounts"); $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','tethermsg',mountid,mine_tethermsg FROM " . db_prefix("mounts") . " WHERE mine_tethermsg!=''"; db_query($sql); debug("Dropping mine_tethermsg field from mounts table"); $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_tethermsg"; db_query($sql); } if ($row['Field'] == "mine_deathmsg") { debug("Migrating mine_deathmsg for all mounts"); $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','deathmsg',mountid,mine_deathmsg FROM " . db_prefix("mounts") . " WHERE mine_deathmsg!=''"; db_query($sql); debug("Dropping mine_deathmsg field from mounts table"); $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_deathmsg"; db_query($sql); } if ($row['Field'] == "mine_savemsg") { debug("Migrating mine_savemsg for all mounts"); $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','savemsg',mountid,mine_savemsg FROM " . db_prefix("mounts") . " WHERE mine_savemsg!=''"; db_query($sql); debug("Dropping mine_savemsg field from mounts table"); $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_savemsg"; db_query($sql); } } return true; }
function titans_install() { module_addhook("newday-runonce"); module_addhook("worldnav"); $titans = array('id' => array('name' => 'id', 'type' => 'int(11) unsigned', 'extra' => 'auto_increment'), 'creature' => array('name' => 'creature', 'type' => 'text'), 'battlelog' => array('name' => 'battlelog', 'type' => 'text'), 'key-PRIMARY' => array('name' => 'PRIMARY', 'type' => 'primary key', 'unique' => '1', 'columns' => 'id')); require_once "lib/tabledescriptor.php"; synctable(db_prefix('titans'), $titans, true); return true; }
function lottery_dohook($hookname, $args) { global $session; switch ($hookname) { case "newday": $numbers = get_module_setting("todaysnumbers"); $n = $numbers; output("`n`@Today's lottery numbers are `^%s-%s-%s-%s`0`n", $n[0], $n[1], $n[2], $n[3]); $roundnum = get_module_setting("roundnum"); $pround = get_module_pref("roundnum"); if ($roundnum > $pround) { if (get_module_pref("pick") === $numbers) { $prize = get_module_setting("prize"); if ($prize > "" && $pround < $roundnum) { rawoutput("<font size='+1'>"); output("`\$You won today's lottery!`0`n"); rawoutput("</font>"); output("`\$The jackpot is `^^%s`\$ gold, money that has been deposited in to your bank account!`n", $prize); $session['user']['goldinbank'] += $prize; debuglog("won {$prize} gold on lottery"); addnews("`@%s`@ won `^%s`@ gold in the lottery!`0", $session['user']['name'], $prize); } } set_module_pref("pick", ""); } break; case "newday-runonce": $numbers = array(); for ($i = 0; $i < 4; $i++) { $numbers[$i] = e_rand(0, 9); } sort($numbers); set_module_setting("todaysnumbers", join("", $numbers)); $sql = "SELECT count(*) AS c FROM " . db_prefix("module_userprefs") . " WHERE modulename='lottery' AND setting='pick' AND value='" . join("", $numbers) . "'"; $result = db_query($sql); $row = db_fetch_assoc($result); if ($row['c'] > 0) { //split the jackpot among winners. $prize = round(get_module_setting("currentjackpot") / $row['c'], 0); set_module_setting("prize", $prize); set_module_setting("currentjackpot", get_module_setting("basepot")); set_module_setting("howmany", $row['c']); } else { //the jackpot rolls over. set_module_setting("prize", 0); set_module_setting("howmany", 0); } set_module_setting("roundnum", get_module_setting("roundnum") + 1); break; case "inn": addnav("Things to do"); addnav(array("%s`0's Lottery", getsetting('barkeep', '`tCedrik')), "runmodule.php?module=lottery&op=store"); break; } return $args; }
function drinks_uninstall() { debug("Dropping table drinks"); $sql = "DROP TABLE IF EXISTS " . db_prefix("drinks"); db_query($sql); debug("Dropping objprefs related to drinks"); $sql = "DELETE FROM " . db_prefix("module_objprefs") . " WHERE objtype='drinks'"; db_query($sql); return true; }
function getmount($horse = 0) { $sql = "SELECT * FROM " . db_prefix("mounts") . " WHERE mountid='{$horse}'"; $result = db_query_cached($sql, "mountdata-{$horse}", 3600); if (db_num_rows($result) > 0) { return db_fetch_assoc($result); } else { return array(); } }
function dwellingseditor_run() { global $session; tlschema("dwellingseditor"); $op = httpget('op'); if ($op != "lookup") { page_header("Dwellings Editor"); } addnav("Navigation"); addnav("Back to the Grotto", "superuser.php"); if ($op != "") { addnav("Dwelling List", "runmodule.php?module=dwellingseditor"); } addnav("Find Dwellings by User", "runmodule.php?module=dwellingseditor&op=usersearch"); addnav("Operations"); if ($op != "typsu") { addnav("Type Pref Editor", "runmodule.php?module=dwellingseditor&op=typesu"); } modulehook("dwellingseditor-main"); $typeid = httpget("typeid"); $dwid = httpget('dwid'); $type = httpget("type"); if ($type == "" && $dwid > 0) { $sql = "SELECT type FROM " . db_prefix("dwellings") . " WHERE dwid={$dwid}"; $result = db_query($sql); $row = db_fetch_assoc($result); $type = $row['type']; } if ($dwid > 0) { addnav("Operations"); if ($op != "edit") { addnav("Edit Dwelling Details", "runmodule.php?module=dwellingseditor&op=edit&dwid={$dwid}"); } if ($op != "keys") { addnav("Manage Keys", "runmodule.php?module=dwellingseditor&op=keys&dwid={$dwid}"); } if ($session['user']['superuser'] & SU_EDIT_COMMENTS) { addnav("Moderate Commentary", "moderate.php?area=dwellings-{$dwid}&dwid={$dwid}"); } if ($op != "delete") { addnav("Delete this Dwelling", "runmodule.php?module=dwellingseditor&op=delete&dwid={$dwid}"); } modulehook("dwellingseditor", array("dwid" => $dwid)); addnav("Navigation"); if ($op != "coffers") { addnav("Coffer Log", "runmodule.php?module=dwellingseditor&op=coffers&dwid={$dwid}"); } if ($op != "dwsu") { addnav("Dwelling Viewer", "runmodule.php?module=dwellingseditor&op=dwsu&dwid={$dwid}"); } } require_once "modules/dwellingseditor/case_{$op}.php"; page_footer(); }
function iitems_eboy_gypsy_run() { global $session; page_header("eBoy's Price Chart"); require_once "modules/iitems/lib/lib.php"; $cost = get_module_setting("cost", "iitems_eboy_gypsy"); if ($cost == 1) { $p = "Cigarette"; } else { $p = "Cigarettes"; } if ($session['user']['gems'] >= $cost) { $session['user']['gems'] -= $cost; output("`5You hand over the %s and the old man chuckles. \"`!Aaah, thank ye kindly. Now, here we are! I'd recommend you write these down. Now mark my words - these prices fluctuate by the `iminute`i! That eBoy, he's a crafty bastard, y'see. He sells things for whatever people are willing to buy them for, and not one penny less! Even if that means putting his prices up the `isecond`i someone buys something!`5\"`n`nHe reaches under his desk and brings up a clattering rectangular machine made out of wood and brass, about the size of a fat telephone directory. A radio antenna protrudes from one corner.`n`nTrue to his word, the spinning reels show the prices of every commodity in every outpost. You spend a few minutes studying the readout.`n`n", $p); $sql = "select * from " . db_prefix("cityprefs"); $result = db_query($sql); for ($i = 0; $i < db_num_rows($result); $i++) { $row = db_fetch_assoc($result); $cid = $row['cityid']; $name = $row['cityname']; $eboy = unserialize(get_module_objpref("city", $cid, "eboytrades-intelligent", "iitems_eboy_intelligent")); output("`b`0%s`b`n", $name); rawoutput("<table border=0 cellpadding=3 cellspacing=2><tr class=\"trdark\"><td>Item</td><td>Buying at</td><td>Selling at</td><td>Stock</td></tr>"); $classcount = 1; foreach ($eboy as $key => $details) { $itemdetails = iitems_get_item_details($key); if ($details['price'] < 10) { $details['price'] = 10; } $eboy[$key]['price'] = $details['price']; if ($details['stock'] < 3) { $buy = round($details['price'] * 0.5); } else { $buy = round($details['price'] * 0.7); } $classcount++; $class = $classcount % 2 ? "trdark" : "trlight"; $dname = $itemdetails['verbosename']; $dsell = number_format($details['price']); $dbuy = number_format($buy); $dstock = number_format($details['stock']); rawoutput("<tr class='{$class}'><td>{$dname}</td><td align=\"center\">{$dbuy}</td><td align=\"center\">{$dsell}</td><td align=\"center\">{$dstock}</td></tr>"); } rawoutput("</table>"); output("`n`n"); } } else { output("`5You enthusiastically agree to the price, before realising that you don't actually have that many cigarettes. Whoops."); } addnav("Leave"); addnav("Return to the Outpost", "village.php"); page_footer(); return true; }
function racegobot_uninstall() { global $session; // Force anyone who was a Gobot to rechoose race $sql = "UPDATE " . db_prefix("accounts") . " SET race='" . RACE_UNKNOWN . "' WHERE race='Gobot'"; db_query($sql); if ($session['user']['race'] == 'Gobot') { $session['user']['race'] = RACE_UNKNOWN; } return true; }