From 21e46903388b5bc2bba51876211632d6b033f37e Mon Sep 17 00:00:00 2001 From: deepend Date: Sat, 30 Sep 2023 07:13:16 -0600 Subject: [PATCH] first commit --- .htaccess | 8 + ChangeLog | 108 ++++++++++ README | 42 ++++ admincomms.txt | 65 ++++++ commonfunctions.php | 94 +++++++++ config.php | 39 ++++ contact.php | 47 +++++ db.php | 257 ++++++++++++++++++++++++ down.png | Bin 0 -> 86 bytes dump.php | 118 +++++++++++ footer.php | 35 ++++ g7.css | 111 +++++++++++ head.png | Bin 0 -> 13741 bytes header.php | 21 ++ help.php | 476 ++++++++++++++++++++++++++++++++++++++++++++ hits.db | 10 + idlerpg-adv.txt | 142 +++++++++++++ idlerpg.png | Bin 0 -> 17697 bytes index.php | 63 ++++++ makemap.php | 60 ++++++ makequestmap.php | 79 ++++++++ makeworldmap.php | 26 +++ maperror.png | Bin 0 -> 23314 bytes newmap.png | Bin 0 -> 22216 bytes playerview.php | 187 +++++++++++++++++ quest.php | 118 +++++++++++ styles.css | 134 +++++++++++++ tablegrad.gif | Bin 0 -> 829 bytes up.png | Bin 0 -> 88 bytes worldmap.php | 27 +++ xml.php | 82 ++++++++ 31 files changed, 2349 insertions(+) create mode 100644 .htaccess create mode 100644 ChangeLog create mode 100644 README create mode 100644 admincomms.txt create mode 100644 commonfunctions.php create mode 100644 config.php create mode 100644 contact.php create mode 100644 db.php create mode 100644 down.png create mode 100644 dump.php create mode 100644 footer.php create mode 100644 g7.css create mode 100644 head.png create mode 100644 header.php create mode 100644 help.php create mode 100644 hits.db create mode 100644 idlerpg-adv.txt create mode 100644 idlerpg.png create mode 100644 index.php create mode 100644 makemap.php create mode 100644 makequestmap.php create mode 100644 makeworldmap.php create mode 100644 maperror.png create mode 100644 newmap.png create mode 100644 playerview.php create mode 100644 quest.php create mode 100644 styles.css create mode 100644 tablegrad.gif create mode 100644 up.png create mode 100644 worldmap.php create mode 100644 xml.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..1bf90fc --- /dev/null +++ b/.htaccess @@ -0,0 +1,8 @@ + + +# php -- BEGIN cPanel-generated handler, do not edit +# Set the “ea-php81” package as the default “PHP” programming language. + + #AddHandler application/x-httpd-ea-php81 .php .php8 .phtml + +# php -- END cPanel-generated handler, do not edit diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..570b698 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,108 @@ +This is the ChangeLog for the Idle RPG Website Code. I'm not as religious about +making sure my updates make it here as I am about changes to the IRPG code +making it into that ChangeLog, so there may be changes between versions that you +don't see listed here. + +Also, please note that any use of "incowrect" or other cow-related "typos" are +NOT typos. I like cattle. A lot. Please stop fixing them :^) + +2004-07-17 Jon Honeycutt + * huge modification of the entire source by the original coder, res0 + . res0 has really helped this project through his many + contributions; it wouldn't be where it is today without him. thanks, res0! + * New site layout (valid XHTML 1.1 strict) using CSS + * Cleaned up PHP + * User maps do not display unless visitor clicks 'display' link + * changed fgets() calls to add the optional second parameter (for old PHPs) + * removed incorrect header() in makequestmap() (mikegrb) + * checked to make sure key $_SESSION['time'] was set before attempting to + reference it (HarK0nNeN) + * db.php's table tag now specifies the number of rows and columns to make + drawing faster in browsers that pay attention to it (res0) + * header("Location: ") directives now give full URIs + * made better use of htmlentities() and urlencode()s as relates to display + of usernames and classes + * users on quest and world maps are now clickable, leading to their player + info page (John Nielsen) + +2004-05-31 Jon Honeycutt + * changed players.php to show offline users as gray, this style is in + header.php, patch from Chewie + * changed map-drawing PHP scripts to draw a transparent image which is then + overlayed (using CSS) over the static newmap.png image. changed the map + drawing frequency to 1/user/20s as I think this greatly decreases CPU + usage. changed the maperror.png to something more appropriate. $mapx + and $mapy in config.php describe the dimensions of your map file (Rick) + * fixed quest.php to show proper coordinates; another evil c/p error (Rick) + +2004-05-23 Jon Honeycutt + * changed most everything to make sense with the new database + * edited dump.php to display data in the same format, despite the new + database format. + * added an xml.php page that takes a 'player' argument and displays + information on that user in xml 1.0 format. should allow a better API + as far as compatibility with newer dbs goes + * changed playerview.php to use fgets() to read from modifiers.txt. + hopefully this is much faster + * edited playerview.php to show map and XML data link + * changed the counter in footer.php to strip the leading path information + from $_SERVER['PHP_SELF'] before using it to identify the page + * removed some unused $i variable from players.php + * created quest.php which shows active quest info + * created makequestmap.php which draws a quest map if quest type is 2, + redirects otherwise + * created worldmap.php which shows the active state of the irpg world + * created makeworldmap.php which draws the world map + * created makemap.php which takes a 'player' argument and draws them on the + map + * commonfunctions.php now has functions to sort by isadmin flag and player + alignment + * index.php updated with information on the new game features + * changed titles on several pages to use $irpg_chan instead of hard-coded + #G7 + * updated header.php to link to new pages and idlerpg.net forum + * changed 'time modifiers' to 'character modifiers' as item modifiers are + now stored, also + +2004-05-23 Alexander Hirzel + * submitted a series of patches to correct, among other things, the horrible + use of where was more appropriate + +2004-04-22 Jon Honeycutt + * if $_GET['alltime'] wasn't set, < and > in time modifiers were not + translated to < and > (thanks DinTx) + * attempted to fix playerview.php from showing others' stats, traded + stristr() for strstr() matching either "^name ", " name ", or "^name's " + +2004-04-23 Jonathan Attwell + * created README, detailing how users are to install and what to edit. + * created config.php, which holds all the setup variables. + * cleaned up some of the php coding. + +2004-04-15 Jon Honeycutt + * we now stripslashes() on $_GET['player'] for players.php, + playerview.php, dump.php (thanks Diab) + +2004-04-05 Jon Honeycutt + * removed some of parallax's tabs :^) + * edited players.php to forward requests for specific players to the proper + playerview.php + * changed links in sitesource.php to be fully-qualified + * removed preg_grep in playerview.php, which insecurely used tainted + data. switched to stristr. (thanks mike@ethernal.org) + * stripped < and > from modifiers.txt output (thanks mike@ethernal.org) + * changed link to idlerpg-adv.txt in players.php to be fully-qualified. + (thanks daxxar) + * may've made other changes, not sure. + +2004-02-15 Jon Honeycutt + * edited source.php to provide fully-qualified URLs to source files; + easier for users to follow license. + * playerview.php's 'View all Time Modifiers' link now displays the + number of time modifiers. + * contact.php now sends a From: field in its headers parameter. + +2004-01-31 Titus Barik + * created ChangeLog, following Debian ChangeLog format. + * modified header.php to be location independent via $BASE_URL var. + * players.php and playerview.php are now separate files. diff --git a/README b/README new file mode 100644 index 0000000..ff5b259 --- /dev/null +++ b/README @@ -0,0 +1,42 @@ +------------------------------------------ +IRPG Website Code README v1.1 (2004-06-27) +------------------------------------------ + +----------- + Notes +----------- + +Homepage: http://idlerpg.net +License : Public Domain + +----------- + Versions +----------- + +Site: v0.5 [current/changes courtesy of res0], Released July 17th, 2004. +Bot : v3.1.2 [current], Released June 6th, 2004. + +------------ +Installation +------------ + +1. Make sure you have the bot functional and running. +2. Copy all the files here to your public_html or some folder. +3. Edit config.php with your favorite editor. +4. chmod 644 * && chmod 666 hits.db +5. If you change the default settings in the IRPG bot (for example, if you turn + off the option to write quest info to file, you'll have to manually edit + some scripts to take this into account. If you disable the INFO command, + you might want to remove it from the index.php page. +6. Some code in this package requires that your system have GD 2.0+ (or have it + enabled in your php.ini, on Win32). If you don't want this functionality to + be available, edit the script playerview.php to remove the use of the map + and header.php to remove the links to the world map and the quest info page. + You can also delete the worldmap.php, makeworldmap.php, makemap.php, + quest.php, and makequestmap.php scripts. +7. Edit the website ANY WAY you see fit. You don't have to keep all of the links + to me, I just thought they might be useful or interesting to users :^) +8. The best way to receive support for these scripts is to post to the Help + section of the forum, http://idlerpg.net/forum.php, not via e-mail or IRC. + If you notice a bug, however, you may use any method to contact me. + Thanks :^) diff --git a/admincomms.txt b/admincomms.txt new file mode 100644 index 0000000..1f9e5f2 --- /dev/null +++ b/admincomms.txt @@ -0,0 +1,65 @@ +This is not the full list of commands for the Idle RPG bot, but only the list +of admin commands. For more information on the Idle RPG bot, visit +http://idlerpg.net/ + +INFO, retrieve some fairly useless stats about the bot. + +DIE, kills the bot. + +HOG, summon the Hand of God spell. See the main help file. + +RESTART, restarts the bot. + +CHPASS , change a character's pass in the IRPG. + +CHCLASS , change a character's class in the IRPG. + +CHUSER , change a character's username in the IRPG. + Please only use in very special circumstances; otherwise, have them form + a new player and DEL the old one. This should not let you overwrite an + existing account, but is untested. + +PUSH , push a player toward his goal by subtracting time + from his next time to level. Please use this only if bot has mistakenly + penalized someone. You could also use this to punish a user by setting + the number of seconds to a negative number. Don't do that. + +DEL , remove a user's account. + +JUMP , move the bot to another server. + +SILENT , switch bot between 4 modes of silence. + - mode 0, bot sends all privmsgs. + - mode 1, only chanmsg() is disabled. + - mode 2, only privmsg()/notice() to non-channels is disabled. + - mode 3, privmsgs/notices to users and channels are disabled. + +BACKUP, tell bot to copy $opts{'dbfile'} to .dbbackup/$opts{'dbfile'}TIMESTAMP + +RELOADDB, force bot to reload player database file, rewriting all memory. + RELOADDB can only be used while in pause mode. + +PAUSE, toggle pause mode. + +PEVAL , execute arbitrary argument as Perl code. Queues output > 3 lines + or >1k of text. Some useful PEVAL commands: + - Delete all accounts not logged in in 4 weeks (See also: DELOLD): + /msg bot PEVAL delete $rps{$_} for grep { time()-$rps{$_}{lastlogin} > 3600*24*7*4 && !$rps{$_}{online} } keys %rps; + - Remove one hour from everyone's clocks: + /msg bot PEVAL $rps{$_}{next} -= 3600 for keys %rps; + - List all online users, separated by commas: + /msg bot PEVAL join(', ',grep { $rps{$_}{online} } keys %rps); + - View contents of a file on remote host: + /msg bot peval `cat file` + - Turn on debug mode: + /msg bot peval $opts{debug}=1; + - Force write-out of database: + /msg bot peval writedb(); + +DELOLD , remove all non-logged-in accounts inactive in the last + days. + +CLEARQ, clear the outgoing message queue. Useful to use if someone floods the + bot with a lot of text that it plans to respond to. + +MKADMIN , set the isadmin flag for a given username. diff --git a/commonfunctions.php b/commonfunctions.php new file mode 100644 index 0000000..13a72fe --- /dev/null +++ b/commonfunctions.php @@ -0,0 +1,94 @@ + $level2) ? -1 : 1; + } + function cmp_alignment_asc($a,$b) { return cmp_alignment_desc($b,$a); } + function cmp_alignment_desc($a,$b) { + list(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$a1)=explode("\t",trim($a)); + list(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,$a2)=explode("\t",trim($b)); + if ($a1 == "g" || $a2 == "e") return -1; + if ($a1 == "e" || $a2 == "g") return 1; + return 0; + } + function cmp_isadmin_asc($a,$b) { return cmp_isadmin_desc($b,$a); } + function cmp_isadmin_desc($a,$b) { + list(,,$o1)=explode("\t",trim($a)); + list(,,$o2)=explode("\t",trim($b)); + return ($o1 > $o2) ? -1 : 1; + } + function cmp_ttl_asc($a,$b) { return cmp_ttl_desc($b,$a); } + function cmp_ttl_desc($a,$b) { + list(,,,,,$time1)=explode("\t",trim($a)); + list(,,,,,$time2)=explode("\t",trim($b)); + return ($time2 < $time1) ? -1 : 1; + } + function cmp_user_asc($a,$b) { return cmp_user_desc($b,$a); } + function cmp_user_desc($a,$b) { + list($u1)=explode("\t",trim($a)); + list($u2)=explode("\t",trim($b)); + return (strtolower($u1) > strtolower($u2)) ? -1 : 1; + } + function cmp_online_asc($a,$b) { return cmp_online_desc($b,$a); } + function cmp_online_desc($a,$b) { + list(,,,,,,,,$o1)=explode("\t",trim($a)); + list(,,,,,,,,$o2)=explode("\t",trim($b)); + return ($o1 > $o2) ? -1 : 1; + } + function cmp_idled_asc($a,$b) { return cmp_idled_desc($b,$a); } + function cmp_idled_desc($a,$b) { + list(,,,,,,,,,$i1)=explode("\t",trim($a)); + list(,,,,,,,,,$i2)=explode("\t",trim($b)); + return ($i1 > $i2) ? -1 : 1; + } + function cmp_created_asc($a,$b) { return cmp_created_desc($b,$a); } + function cmp_created_desc($a,$b) { + list(,,,,,,,,,,,,,,,,,,,$i1)=explode("\t",trim($a)); + list(,,,,,,,,,,,,,,,,,,,$i2)=explode("\t",trim($b)); + return ($i1 > $i2) ? -1 : 1; + } + function cmp_lastlogin_asc($a,$b) { return cmp_lastlogin_desc($b,$a); } + function cmp_lastlogin_desc($a,$b) { + list(,,,,,,,,,,,,,,,,,,,,$i1)=explode("\t",trim($a)); + list(,,,,,,,,,,,,,,,,,,,,$i2)=explode("\t",trim($b)); + return ($i1 > $i2) ? -1 : 1; + } + function cmp_uhost_asc($a,$b) { return cmp_uhost_desc($b,$a); } + function cmp_uhost_desc($a,$b) { + list(,,,,,,,$u1)=explode("\t",trim($a)); + list(,,,,,,,$u2)=explode("\t",trim($b)); + return (strtolower($u1) > strtolower($u2)) ? -1 : 1; + } + function cmp_pen_asc($a,$b) { return cmp_pen_desc($b,$a); } + function cmp_pen_desc($a,$b) { + list(,,,,,,,,,,,,$p1[0],$p1[1],$p1[2],$p1[3],$p1[4],$p1[5], + $p1[6])=explode("\t",trim($a)); + list(,,,,,,,,,,,,$p2[0],$p2[1],$p2[2],$p2[3],$p2[4],$p2[5], + $p2[6])=explode("\t",trim($b)); + $s1 = $s2 = 0; + foreach ($p1 as $pen) $s1 += $pen; + foreach ($p2 as $pen) $s2 += $pen; + return ($s1 > $s2) ? -1 : 1; + } + function cmp_sum_asc($a,$b) { return cmp_sum_desc($b,$a); } + function cmp_sum_desc($a,$b) { + list(,,,,,,,,,,,,,,,,,,,,,$i1[0],$i1[1],$i1[2],$i1[3],$i1[4],$i1[5], + $i1[6],$i1[7],$i1[8],$i1[9])=explode("\t",trim($a)); + list(,,,,,,,,,,,,,,,,,,,,,$i2[0],$i2[1],$i2[2],$i2[3],$i2[4],$i2[5], + $i2[6],$i2[7],$i2[8],$i2[9])=explode("\t",trim($b)); + $s1 = $s2 = 0; + foreach ($i1 as $item) { $s1 += $item; } + foreach ($i2 as $item) $s2 += $item; + return ($s1 > $s2) ? -1 : 1; + } +?> diff --git a/config.php b/config.php new file mode 100644 index 0000000..e592a14 --- /dev/null +++ b/config.php @@ -0,0 +1,39 @@ + diff --git a/contact.php b/contact.php new file mode 100644 index 0000000..bc29914 --- /dev/null +++ b/contact.php @@ -0,0 +1,47 @@ +Contact"; + if ($_POST['from'] && $_POST['text']) { + mail($admin_email,"IRPG: ".$_POST['from'], + "Name: ".$_POST['name']."\nE-mail: ".$_POST['from']."\n\n". + $_POST['text'],"From: ".$_POST['from']."\r\n"); + echo('
Thanks for your submission.
'); + } + else { + echo(' +
+ + + + + + + + + + + + + + + +
: + +
: + +
+
+
+ +
+
+'); + } + include("footer.php"); +?> diff --git a/db.php b/db.php new file mode 100644 index 0000000..78ba930 --- /dev/null +++ b/db.php @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +",">",$class); + $user = str_replace(">",">",$user); + $sum = 0; + foreach ($item as $k => $v) $sum += $v; + $pentot = 0; + foreach ($pen as $k => $v) $pentot += $v; + echo " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n". + " \n"; + } + + echo(' +
+ User + ( + + + / + + + ) + + Level + ( + + + / + + + ) + + Admin + ( + + + / + + + ) + Class + TTL + ( + + + / + + + ) + + Nick!User@Host + ( + + + / + + + ) + + Online + ( + + + / + + + ) + + Total Time Idled + ( + + + / + + + ) + X PosY PosMesg Pen.Nick Pen.Part Pen.Kick Pen.Quit Pen.Quest Pen.LOGOUT Pen. + Total Pen. + ( + + + / + + + ) + + Acct. Created + ( + + + / + + + ) + + Last Login + ( + + + / + + + ) + AmuletCharmHelmBootsGlovesRingLeggingsShieldTunicWeapon + Sum + ( + + + / + + + ) + + Alignment + ( + + + / + + + ) +
$user$level".($isadmin?"Yes":"No")."$class".duration($secs)."$uhost".(($online == 1) ? "Yes" : "No")."".duration($idled)."$x$y".duration($pen['mesg'])."".duration($pen['nick'])."".duration($pen['part'])."".duration($pen['kick'])."".duration($pen['quit'])."".duration($pen['quest'])."".duration($pen['logout'])."".duration($pentot)."".date("D M j H:i:s Y",$created)."".date("D M j H:i:s Y",$lastlogin)."".$item['amulet']."".$item['charm']."".$item['helm']."".$item['boots']."".$item['gloves']."".$item['ring']."".$item['leggings']."".$item['shield']."".$item['tunic']."".$item['weapon']."$sum".($alignment=='e'?"Evil":($alignment=='n'?"Neutral":"Good"))."
+

+ * Accounts created before Aug 29, 2003 may have incowrect data fields. + '); + include("footer.php"); +?> diff --git a/down.png b/down.png new file mode 100644 index 0000000000000000000000000000000000000000..e1a249d956087ad03e9ece01d1fc91ab1a422fda GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xkYHHq`AGms$$GjthE&{2{!!Dw*w-a3(IY9L iW@#W}ao~f13KPQ>CEl4QcN7MLG diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..ae35d24 --- /dev/null +++ b/footer.php @@ -0,0 +1,35 @@ + + + + \ No newline at end of file diff --git a/g7.css b/g7.css new file mode 100644 index 0000000..8dc6836 --- /dev/null +++ b/g7.css @@ -0,0 +1,111 @@ +body { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + background-color: #FFFFF0; + color: black; + margin: 10px; + text-align: justify; +} + +h1 { margin-bottom: 0px; margin-top: 0px; } +h2 { margin-bottom: 0px; } + +p.small { margin: 0px; font-size: smaller; } + +a { text-decoration: none; color: #C69500; } +a:hover { text-decoration: underline; color: black; } + +div.head { + border: 1px solid #c0c0c0; + text-align: left; + width: 100%; + margin-bottom: 10px; + background: #FFFFFF; +} + +div.menu { + width: 120px; + position: relative; + float: left; + border: 1px solid #c0c0c0; + background: #FFFFFF; +} +div#menu a.home { color: #000000; background: #c0c0c0; border: 1px solid #000000; } +div#menu a.home:hover { background: #c0c0c0; border: 1px solid #000000; } +div#menu a { + text-align: center; + width: 118px; + margin: 0px; + display: block; + border: 1px solid #FFFFFF +} + +div#menu a:hover { border: 1px solid #000000; background: #c0c0c0; text-decoration: none; } + +div.content { + border: 1px solid #c0c0c0; + margin-left: 130px; + margin-top: 0px; + padding: 10px; + background: #FFFFFF; +} + +div.footer { + border: 1px solid #c0c0c0; + margin-left: 130px; + margin-top: 10px; + padding: 10px; + background: #FFFFFF; +} + + +table.uniques { + border: 1px solid #c0c0c0; + padding: 5px; + text-align: left; +} +table.uniques td { + padding-left: 10px; +} + +table.penalty { + border: 1px solid #c0c0c0; + padding: 5px; + text-align: left; +} +table.penalty th { + text-align: right; +} +table.penalty td { + +} + +/* Styles for the userlist */ +li.online { font-weight: bold; } +li.offline { color: #c0c0c0; } +a.offline { color: #707070; } +#map { + width: 500px; + height: 500px; + background-image: url(newmap.png); +} + + +table.forum { + border: 1px solid #c0c0c0; + table-layout: fixed; + overflow: auto; +} + +table.forum td,tr,caption,thead,tfoot,th { + padding-left: 10px; + padding-right: 10px; +} +.tdblue { background-color: #ffffdf; } +.tdgray { background-color: #eeeee0; } +.tdred { + border: 1px solid red; + background-color: #FFCCCC; +} +.smallest { + font-size: 11px; +} diff --git a/head.png b/head.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6a7c3bc772f4e824a65025c9edd23fac164c96 GIT binary patch literal 13741 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 literal 0 HcmV?d00001 diff --git a/header.php b/header.php new file mode 100644 index 0000000..dd227e0 --- /dev/null +++ b/header.php @@ -0,0 +1,21 @@ + + + + <?php echo $irpg_chan; ?> Idle RPG: <?php echo $irpg_page_title; ?> + + + + +
+ <?php echo $irpg_chan; ?> Idle RPG +
+ + +
diff --git a/help.php b/help.php new file mode 100644 index 0000000..29973a9 --- /dev/null +++ b/help.php @@ -0,0 +1,476 @@ + + +
+

Location

+

+ The Idle RPG can be played on the + Newnet IRC Network in the + channel #idleland. See this + link for a list of servers. +

+ + +

Registering

+ +

To register, simply:

+ + + /msg REGISTER <char name> <password> + <char class> + + +

Where 'char name' can be up to 16 chars long, 'password' can be up + to 8 characters, and 'char class' can be up to 30 chars.

+ + +

Logging In

+ +

To login, simply:

+ + + /msg LOGIN <char name> <password> + + +

This is a p0 (see Penalties) command.

+ + +

Logging Out

+ +

To logout, simply:

+ + + /msg LOGOUT + + +

This is a p20 (see Penalties) command.

+ + +

Changing Your Password

+ +

To change your password, simply:

+ + + /msg NEWPASS <new password> + + +

This is a p0 (see Penalties) command.

+

If you have forgotten your password, please use the + INFO command to find an online admin to help you. If your + administrator does not have the INFO command enabled, then just message + an op in the channel. They can probably help you.

+ + +

Removing Your Account

+ +

To remove your account, simply:

+ + + /msg REMOVEME + + +

This is a p0 (see Penalties) command :^)

+ + +

Changing Your Alignment

+ +

To change your alignment, simply:

+ + + /msg ALIGN <good|neutral|evil> + + +

This is a p0 (see Penalties) command.

+

Your alignment can affect certain aspects of the game. You may align + with good, neutral, or evil. 'Good' users have a 10% boost to their item + sum for battles, and a 1/12 chance each day that they, along with a + 'good' friend, will have the light of their god shine upon them, + accelerating them 5-12% toward their next level. 'Evil' users have a 10% + detriment to their item sum for battles (ever forsaken in their time of + most need...), but have a 1/8 chance each day that they will either a) + attempt to steal an item from a 'good' user (whom they cannot help but + hate) or b) be forsaken (for 1-5% of their TTL) by their evil god. After + all, we all know that crime doesn't pay. Also, 'good' users have only a + 1/50 chance of landing a Critical Strike when + battling, while 'evil' users (who always fight dirty) have a 1/20 + chance. Neutral users haven't had anything changed, and all users start + off as neutral.

+

I haven't run the numbers to see which alignment it is better to + follow, so the stats for this feature may change in the future.

+ + +

Obtaining Bot Info

+ +

To see some simple information on the bot, simply:

+ + + /msg INFO + + +

This is a p0 (see Penalties) command.

+

This command gives info such as to which server the bot is connected + and the nicknames of online bot admins.

+

This command is optional, and may be disabled by your bot admin.

+ + + +

Levelling

+ +

To gain levels, you must only be logged in and idle. The time + between levels is based on your character level, and is calculated + by the formula:

+ + 600*(1.16^YOUR_LEVEL) + +

Where ^ represents the exponentiation operator.

+

Very high levels are calculated differently as of version 3.0. Levels + after level 60 have a next time to level of:

+ + (time to level @ 60) + ((1 day) * (level - 60)) + +

The exponent method code had simply gotten to that point that levels + were taking too long to complete.

+ + +

Checking the Active Quest

+ +

To see the active quest, its users, and its time left to + completion:

+ + + /msg QUEST + + +

This is a p0 (see Penalties) command.

+ + +

Checking Your Online Status

+ +

To see whether you are logged on, simply:

+ + + /msg WHOAMI + + +

This is a p0 (see Penalties) command.

+ + +

Penalties

+ + +

If you do something other than idle, like part, quit, talk in the + channel, change your nick, or notice the channel, you are + penalized. The penalties are time, in seconds, added to your next + time to level and are based on your character level. The formulae + are as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nick change30*(1.14^(YOUR_LEVEL))
Part200*(1.14^(YOUR_LEVEL))
Quit20*(1.14^(YOUR_LEVEL))
LOGOUT command20*(1.14^(YOUR_LEVEL))
Being Kicked250*(1.14^(YOUR_LEVEL))
Channel privmsg[message_length]*(1.14^(YOUR_LEVEL))
Channel notice[message_length]*(1.14^(YOUR_LEVEL))
+
+

So, a level 25 character changing their nick would be penalized + 20*(1.14^25)=793 seconds towards their next level.

+

Penalty shorthand is p[num]. So, a nick change is a p30 event, + parting the channel is a p200 event, and quitting IRC is a p20 event. + Messages and notices are p[length of message in characters].

+ + +

Items

+ +

Each time you level, you find an item. You can find an item as + high as 1.5*YOUR_LEVEL (unless you find a + unique item). There are 10 types of items: rings, + amulets, charms, weapons, helms, tunics, gloves, leggings, + shields, and boots. You can find one of each type. When you find + an item with a level higher than the level of the item you already + have, you toss the old item and start using the new one. As of version + 3.0, there is an optional, p0 STATUS command that your admin may have + enabled, but you cannot see which items you have over IRC (only your + total item sum). You can, however, see which items you have on the web + here.

+ +

As you may guess, you have a higher chance of rolling an item of a + lower value than you do of rolling one of a higher value level. The exact + formula is as follows:

+ + + for each 'number' from 1 to YOUR_LEVEL*1.5
+   you have a 1 / ((1.4)^number) chance to find an + item at this level
+ end for + + +

As for item type, you have an equal chance to roll any type.

+ + + +

Battle

+ +

Each time you level, if your level is less than 25, you have a 25% + chance to challenge someone to combat. If your level is greater than or + equal to 25, you have a 100% chance to challenge someone. A pool of + opponents is chosen of all online players, and one is chosen randomly. If + there are no other online players, you fight no one. However, if you do + challenge someone, this is how the victor is decided:

+ +
    +
  • Your item levels are summed.
  • +
  • Their item levels are summed.
  • +
  • A random number between zero and your sum is taken.
  • +
  • A random number between zero and their sum is taken.
  • +
  • If your roll is larger than theirs, you win.
  • +
+ +

If you win, your time towards your next level is lowered. The amount + that it is lowered is based on your opponent's level. The formula is:

+ + + ((the larger number of (OPPONENT_LEVEL/4) and 7) / 100) * + YOUR_NEXT_TIME_TO_LEVEL + + +

This means that you lose no less than 7% from your next time to level. + If you win, your opponent is not penalized any time, unless you land a + Critical Strike.

+ +

If you lose, you will be penalized time. The penalty is calculated + using the formula:

+ + + ((the larger number of (OPPONENT_LEVEL/7) and 7) / 100) * + YOUR_NEXT_TIME_TO_LEVEL + + +

This means that you gain no less than 7% of your next time to level. + If you lose, your opponent is not awarded any time.

+ +

Battling the IRPG bot is a special case. The bot has an item sum of + 1+[highest item sum of all players]. The percent awarded if you win is a + constant 20%, and the percent penalized if you lose is a constant 10%.

+ +

As of version 3.0, if more than 15% of online players are level 45 or + higher, then a random level 45+ user will battle another random player + every hour. This is to speed up levelling among higher level players.

+ +

Also as of version 3.0, there is a grid system. The grid is a 500 x 500 + area in which players may walk. If you encounter another player on the + grid, you have a 1 / (NUMBER_OF_ONLINE_PLAYERS) chance to battle them. + Battle awards are calculated using the above formulae. More information + on the grid system is available here.

+ +

Also as of version 3.0, a successful battle may result an item being + stolen.

+ + +

Unique Items

+ +

As of v2.1.2, after level 25, you have a chance to roll items + significantly higher than items you would normally find at that level. + These are unique items, and have the following stats:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameItem Level RangeRequired User LevelChance to Roll
Mattt's Omniscience Grand Crown50-7425 or greater1 / 40
Juliet's Glorious Ring of Sparkliness50-7425 or greater1 / 40
Res0's Protectorate Plate Mail75-9930 or greater1 / 40
Dwyn's Storm Magic Amulet100-12435 or greater1 / 40
Jotun's Fury Colossal Sword150-17440 or greater1 / 40
Drdink's Cane of Blind Rage175-20045 or greater1 / 40
Mrquick's Magical Boots of Swiftness250-30048 or greater1 / 40
Jeff's Cluehammer of Doom300-35052 or greater1 / 40
+ +

The Hand of God

+ +

As of v3.0, every online user has a (roughly) 1/20 chance per day + of a "Hand of God" affecting them. A HoG can help or hurt your character + by carrying it between 5 and 75 percent towards or away from its next time + to level. The odds are in your favor, however, with an 80% chance to help + your character, and only a 20% chance of your character being smitten.

+ +

In addition to occurring randomly, admins may summon the HoG at their + whim.

+ + +

Critical Strike

+ +

As of v2.0.4, if a challenger beats his opponent in battle, he has a + 1/35 chance of landing a Critical Strike. If this occurs, his opponent + is penalized time towards his next time to level. This amount is + calculated by the formula:

+ + ((random number from 5 to 25) / 100) * OPPONENT'S_NEXT_TIME_TO_LEVEL + +

Meaning he gains no less than 5% and no more than 25% of his next time + to level.

+ + +

Team Battles

+ +

As of v3.0, every online user has (roughly) 1/4 chance per day of + being involved in a 'team battle.' Team battles pit three online + players against three other online players. Each side's items are summed, + and a winner is chosen as in regular battling. If the first group bests + the second group in combat, 20% of the lowest of the three's TTL is + removed from their clocks. If the first group loses, 20% of their lowest + member's TTL is added to their TTL.

+ + +

Calamities

+ +

As of v3.0, every online user has a (roughly) 1/8 chance per day of a + calamity occurring to them. A calamity is a bit of extremely bad luck that + either:
+ + a) slows a player 5-12% of their next time to level
+ b) lowers one of their item's value by 10% + +

+ + +

Godsends

+ +

As of v3.0, every online user has a (roughly) 1/8 chance per day of a + godsend occurring to them. A godsend is a bit of extremely good luck that + either:
+ + a) accelerates a player 5-12% of their next time to level
+ b) increases one of their item's value by 10% + +

+ + +

Quests

+ +

As of v2.3, there are Quests. Four level 40+ users that have been + online for more than ten hours are chosen to represent and assist the + Realm by going on a quest. If all four users make it to the quest's end, + all questers are awarded by removing 25% of their TTL (ie, their TTL at + quest's end). To complete a quest, no user can be penalized until the + quest's end. As of v3.0, there are two kinds of quests: grid-based quests + and time-based quests. Time-based quests last a random time between 12 and + 24 hours. Grid-based quests are based on the grid + system and do not have a set time to completion. Rather, the questers + must reach certain points on the map for their quest to be complete. If + the quest is not completed, ALL online users are penalized a p15 as + punishment.

+ + +

Grid System

+ +

As of v3.0, the IRPG has a grid system. The grid can be considered + a 500 x 500 point map on which the players may walk. Every second, each + player has an equal chance to step up, down, or neither, and an equal + chance to step left, right, or neither. If a user encounters another + player, there is a 1/(NUMBER_OF_ONLINE_PLAYERS) chance that they will + battle one another. Normal battling rules apply.

+ +

Some quests require that users walk to certain points on the map. In + the spirit of IRPG, of course, the trek is made for you. Your character + will automatically walk in the direction that it is supposed to, although + at a much slower than normal pace (to avoid accidents, of course. you + don't want to fall down and risk a Realm-wide p15!).

+ + +

Item Stealing

+ +

As of v3.0, the IRPG has item stealing. After each battle, if the + challenger wins, he has a slightly less than 2% chance of stealing an + item from the challengee. Only items of a higher value are stolen, and + the challenger's old item is given to the challengee in a moment of pity. +

+ + + +

Credits

+ +

Many thanks to version 3.0's map creators, res0 and Jeb! The game + wouldn't be the same without you.

+

+ The IRPG would not be possible without help from a lot of people. + To jwbozzy, yawnwraith, Tosirap, res0, dwyn, Parallax, protomek, + Bert, clavicle, drdink, jeff, rasher, Sticks, Nerje, Asterax, + emad, inkblot(!), schmolli, mikegrb, mumkin, sean, Minhiriath, + and Dan, I give many thanks. Unfortunately, this list has grown too + large to maintain. More user contributions can be seen in the + ChangeLog. +

+ +
+ + diff --git a/hits.db b/hits.db new file mode 100644 index 0000000..034c7f9 --- /dev/null +++ b/hits.db @@ -0,0 +1,10 @@ +index.php 928 Sep 3, 2023 +2023 +worldmap.php 145 Mar 20, 2023 +quest.php 128 Mar 24, 2023 +players.php 146 Mar 24, 2023 +playerview.php 1440 Apr 15, 2023 +index.php 4435 Apr 17, 2023 +contact.php 1421 Apr 17, 2023 +db.php 1135 Apr 18, 2023 +help.php 33 Sep 30, 2023 diff --git a/idlerpg-adv.txt b/idlerpg-adv.txt new file mode 100644 index 0000000..f6bf0f0 --- /dev/null +++ b/idlerpg-adv.txt @@ -0,0 +1,142 @@ +#!/usr/bin/perl -w +# idlerpg-adv (11-22-2003) by daxxar (http://mental.mine.nu) +# Usage: ./idlerpg-adv.pl [playernames] +# +# Call this script from the command line, or your login profile. +use strict; +use LWP::Simple; + +# Use cookies: +# %user - username, %class - class, %level - level, +# %next - time to next level, %status - online status, +# %uhost - nick!ident@host, %ca - created at, +# %llo - last logged on, %ti - total idletime, +# %items - list of items, %penalties - list of penalties (special; multiline) +# +# Each comma-separated element is printed with a newline at the end :) + +my @string = ( + '[User] %user', '[Class] %class', '[Level] %level', '[Next level] %next', + '[Status] %status', '[User@host] %uhost', '[Created at] %ca', + '[Last logged on] %llo', '[Total idle] %ti', '[Items] %items', + '[Penalties] %penalties' + ); + +### No need to change below ### +# For printing things in a columnized view +# print_col(\@list_of_entries, \@value_of_entries, $number_per_line) +sub make_col { + my $entryname = shift; + my $entryvalue = shift; + my $count = shift; + my @len; + my $ret; + # Find maximum length for each of the $count columns + for my $x (0 .. $#{$entryvalue}) { + my $col = $x % $count; + if (!defined($len[$col]) || $len[$col] < length($entryvalue->[$x] . $entryname->[$x])) { + $len[$col] = length("$entryvalue->[$x]"."$entryname->[$x]"); + } + } + for my $t (0 .. $#$entryvalue) { + if (!($t % $count)) { $ret .= "\n "; } + $ret .= "$entryname->[$t]\($entryvalue->[$t]\)"; + $ret .= ' ' x ($len[$t % $count] - length($entryname->[$t] . $entryvalue->[$t]) + 1); + } + return $ret; +} +sub time_to { + my @timeunits = ('yr', 'month', 'week', 'day', 'hr', 'min', 'sec'); + my @timecalc = (31104000, 2592000, 604800, 86400, 3600, 60, 1); + my $seconds = shift; my $output; + if ($seconds == 0) { return "0 seconds"; } + for my $x (0 .. $#timecalc) { + my $y = int($seconds / $timecalc[$x]); + if ($y != 0 && $seconds != 0 && $seconds >= $timecalc[$x]) { + $seconds = ($seconds % $timecalc[$x]); + $output .= "$y $timeunits[$x]"; + $output .= 's' unless $y == 1; + if ($seconds == 0) { last; } + $output .= ', ' if $x < $#timecalc - 1 && ($seconds % $timecalc[$x+1]) && $seconds != 0; + $output .= ' and ' if !($seconds % $timecalc[$x+1]); + } + } + return $output; +} +sub time_from { + my $seconds = shift; + my ($sec, $min, $hr, $day, $mo, $yr, $wday) = localtime($seconds); + $mo = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Oct', 'Sep', 'Nov', 'Dec')[$mo]; + $wday = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')[$wday]; + $yr += 1900; + if ($hr < 10) { $hr = "0$hr"; } + if ($min < 10) { $min = "0$min"; } + if ($sec < 10) { $sec = "0$sec"; } + if ($day < 10) { $day .= ' '; } + return "$wday $mo $day $hr:$min:$sec $yr"; +} +die "Usage: $0 \n" . + "Example: $0 daxxar cyb\n" if @ARGV == 0; + +start: +my $username = shift(@ARGV); +my $page = get "http://jotun.ultrazone.org/g7/dump.php?player=$username"; + +# Only line is commented if there is no such user +if ($page =~ /^#[^\n]+$/) { print "$username: no such user\n"; exit 1; } +($page) = ($page =~ /\n([^#].*)/); # Remove the comment + +# @ent = entries on page, \t separated. +my @ent = split(/\t/, $page); + +# Assign each tab-separated entry to its hash-key +my %values = ( + 'user' => $ent[0], 'level' => $ent[1], + 'class' => $ent[2], 'next' => $ent[3], + 'host' => $ent[4], 'status' => $ent[5], + 'totalidle'=> $ent[6], 'created'=> $ent[14], + 'lastlog' => $ent[15], + 'penaltynames' => [ qw(msg nick part kick quit quest logout) ], + 'penaltytimes' => [ @ent[7 .. 13] ], + 'itemnames' => [ qw(amulet charm helm boots gloves ring leggings shield tunic weapon sum) ], + 'itemlvls' => [ @ent[16 .. 25] ] +); +$values{'next'} = time_to ($values{'next'}); +$values{'totalidle'} = time_to ($values{'totalidle'}); +$values{'lastlog'} = time_from($values{'lastlog'}); +$values{'created'} = time_from($values{'created'}); +if ($values{'status'}) {$values{'status'} = 'Online'} +else {$values{'status'} = 'Offline'} + +foreach my $str (@{[ @string ]}) { + $str =~ s/%user/$values{'user'}/g; + $str =~ s/%class/$values{'class'}/g; + $str =~ s/%level/$values{'level'}/g; + $str =~ s/%next/$values{'next'}/g; + $str =~ s/%status/$values{'status'}/g; + $str =~ s/%uhost/$values{'host'}/g; + $str =~ s/%ca/$values{'created'}/g; + $str =~ s/%llo/$values{'lastlog'}/g; + $str =~ s/%ti/$values{'totalidle'}/g; + if ($str =~ /%penalties/) { + my @penaltyname = qw(msg nick part kick quit quest logout); + my @penaltytime = @ent[7 .. 13]; + for my $t (0 .. $#penaltytime) { $penaltytime[$t] = time_to($penaltytime[$t]); } + my $cols = make_col(\@penaltyname, \@penaltytime, 3); + $str =~ s/%penalties/$cols/g; + } + if ($str =~ /%items/) { + my @itemname = qw(amulet charm helm boots gloves ring leggings shield tunic weapon sum); + my @itemlvls = @ent[16 .. 25]; + # Yay, lets get a nice sum(sum) in output! :D + my $sum; map($sum += $_, @itemlvls); + my $cols = make_col(\@itemname, [ @itemlvls, $sum ], 3); + $str =~ s/%items/$cols/g; + } + $str =~ s///g; + $str =~ s///g; + print "$str\n"; +} + +print "\n" if @ARGV != 0; +goto start if @ARGV != 0; diff --git a/idlerpg.png b/idlerpg.png new file mode 100644 index 0000000000000000000000000000000000000000..073c680f174d64163a6cbff3c54d9460f970e8f2 GIT binary patch literal 17697 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 E0NL?qPyhe` literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 0000000..403440e --- /dev/null +++ b/index.php @@ -0,0 +1,63 @@ + +

Welcome

+

The Idle RPG is just what it sounds like: an RPG in which the players + idle. In addition to merely gaining levels, players can find items and + battle other players. However, this is all done for you; you just idle. + There are no set classes; you can name your character anything you like, and + have its class be anything you like, as well.

+
+ +
+

World Map

+

[Offline users are red, online users are blue]

+
+ IdleRPG World Map + + \n"; + } + fclose($file); + ?> + +
+
+ +
+

Players

+

Pick a player to view

+

[gray=offline]

+
    + ".htmlentities($user). + ", the level $level $class. Next level in $next_level.\n"; + + } + ?> +
+
+
+ + + diff --git a/makemap.php b/makemap.php new file mode 100644 index 0000000..d5ace6a --- /dev/null +++ b/makemap.php @@ -0,0 +1,60 @@ + 500) { + $stringx = $x - ((strlen($user)+1)*$width)-12; + } + if ($y+$height > 500) { + $stringy = $y - ($height/2)-2; + } + $magenta = imageColorAllocate($map,255,0,255); + imageColorTransparent($map,$magenta); + $brown = imagecolorallocate($map, 102, 51, 0); + $parchment = imagecolorallocate($map, 255, 255, 204); + + // Avoid drawing a brown dot on a brown area + $rgb = imageColorAt($map, $x, $y); + if ($rgb > 0) { // $rgb is 0 on our parchment-colored areas + $temp = $brown; + $brown = $parchment; + $parchment = $temp; + } + // YOU ARE HERE + imageFilledEllipse($map, $x, $y, 6, 6, $brown); + // background for text + imageFilledRectangle($map,$stringx+6,$stringy-($height/2),$stringx+6+$width*(strlen($user)+1),$stringy+($height/2),$brown); + // text itself + imageString($map,5,$stringx+7+($width/2),$stringy-($height/2)-1,$user,$parchment); + } + header("Content-type: image/png"); + imagePNG($map); + imageDestroy($map); +?> diff --git a/makequestmap.php b/makequestmap.php new file mode 100644 index 0000000..50bf488 --- /dev/null +++ b/makequestmap.php @@ -0,0 +1,79 @@ + diff --git a/makeworldmap.php b/makeworldmap.php new file mode 100644 index 0000000..9ad7c13 --- /dev/null +++ b/makeworldmap.php @@ -0,0 +1,26 @@ + diff --git a/maperror.png b/maperror.png new file mode 100644 index 0000000000000000000000000000000000000000..11cc12bbad7f7839d63f4c5a14161db8f4051614 GIT binary patch literal 23314 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
v7Dl zQ*#{XUOmrXxx)>}d^ry~k3aAuF&Lzt3(WCg=(JNDM1!~D=nG-) zf%p8`0Pg_i*HSnVNRBOtsibWWWrL0fm=mtj`3{Uo;N&w2`$){$B)B>;r|iICJy$tl zItF@_IZ4ImApeGJVWBopMu(X5I6F?f^493SG30Nx?KwTCZ_mV>C4U|RU0_Zhr1y+J za|C?6#^-Wj#S@_)Me|wSvy84HHF^ZM3o(cACyx2Lo~s<@n=tY`&J~!8P%N!ZEDIKT z(Ox1zw1EdAH;sGyDJWSK4~nEJ^(bJ&tVQLn5TX8_{RYAESeX_=h3aj=n`xdC;G0*5ZBr(q?YA*tvGnykI$18M~dDR|v!h$fDUztP&`~$^J2gh8vfXJnn zV!eSmj-3M;C>4$HLCmj#oTMZ-(32!CkmxpfaFch8ZuE5U>Sq>FG4s!K2z z@{FdEGnDI8YCb1#H6bQDF+VQ^3S%+mY6%~mFb8SLgCq(A8H8R!nrmbV@Me%!U~fX0 z&j`mszs@LNe~24tJr6NwM*W?b<8&%h;vketVow0cadWxnZXH03Wm2lB@w6i;^-Fg6 zYRqBdw@A+sO%8|RA35esav-t{JApfoId(?6ax%&0f#sMhGTAr|8Q(ECA&E|q6vEIv zWx4}@9i+0omJVW$rhuk?$sxMLTYzU{PQiq<)_!0z9Va|48VR>`%%I~uoigzdeHU5X z_(zn?)iYm(d+4lk%rTbr5F>{ObJt3MF`fKW%>7(0F{iO);x6TbE#GS|DmW}O^C^QZ z=6!iIWfn;Pnel=5fzHgJioz}>^j?u>#9}JU1Tt<9q7ORqs6i~<;PoksId`boJS-fQ zAlgsrulOc_P23F_rzz$*2GwPlW5*By5=@CX_kiUr#oRm!0C&ymk7EA+0a$-?(Udf< Q`~Uy|07*qoM6N<$g29>;k^lez literal 0 HcmV?d00001 diff --git a/newmap.png b/newmap.png new file mode 100644 index 0000000000000000000000000000000000000000..46f947b362dfa7fbba94ffd1be3da5e4cf17c056 GIT binary patch literal 22216 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 b#QgsOrc#C1Pki*C00000NkvXXu0mjf3l~%` literal 0 HcmV?d00001 diff --git a/playerview.php b/playerview.php new file mode 100644 index 0000000..7d849bc --- /dev/null +++ b/playerview.php @@ -0,0 +1,187 @@ + + + + + + + +

Error

No such user.

+ + +
+

Player Info

+

User:

+

Class:

+

Admin?:

+

Level:

+

Next level:

+

Status:

+

Host:

+

Account Created:

+

Last login:

+

Total time idled:

+

Current position: [,]

+

Alignment:

+

XML: [link]

+

" : "Show map" ?>

+
+ +
+

Items

+ $val) { + $valInt = intval($val); // Extract integer value + $sum += $valInt; // Add to sum + $uniquecolor="#be9256"; + if ($key == "helm" && substr($val,-1,1) == "a") { + $val = intval($val)." [Mattt's Omniscience Grand Crown]"; + } + if ($key == "tunic" && substr($val,-1,1) == "b") { + $val = intval($val)." [Res0's Protectorate Plate Mail]"; + } + if ($key == "amulet" && substr($val,-1,1) == "c") { + $val = intval($val)." [Dwyn's Storm Magic Amulet]"; + } + if ($key == "weapon" && substr($val,-1,1) == "d") { + $val = intval($val)." [Jotun's Fury Colossal Sword]"; + } + if ($key == "weapon" && substr($val,-1,1) == "e") { + $val = intval($val)." [Drdink's Cane of Blind Rage]"; + } + if ($key == "boots" && substr($val,-1,1) == "f") { + $val = intval($val)." [Mrquick's Magical Boots of Swiftness]"; + } + if ($key == "weapon" && substr($val,-1,1) == "g") { + $val = intval($val)." [Jeff's Cluehammer of Doom]"; + } + if ($key == "ring" && substr($val,-1,1) == "h") { + $val = intval($val)." [Juliet's Glorious Ring of Sparkliness]"; + } echo "

$key: $val

"; + } + echo "

Sum: $sum

"; + ?> +
+ +
+

Penalties

+ $val) { + $sum += $val; // Add to sum + echo "

$key: " . duration($val) . "

"; + } + echo "

Total: " . duration($sum) . "

"; + ?> +
+ +
+

Character Modifiers

+ " . htmlentities(trim($line)) . "

"; + } + } else { + end($temp); + for ($i = 0; $i < 4; ++$i) prev($temp); + for ($line = trim(current($temp)); $line; $line = trim(next($temp))) { + echo "

" . htmlentities(trim($line)) . "

"; + } + } + } + if ($_GET['allmods'] != 1 && count($temp) > 5) { + echo "

[View all Character Modifiers (" . count($temp) . ")

"; + } + ?> +
+ + + + diff --git a/quest.php b/quest.php new file mode 100644 index 0000000..e6aab1a --- /dev/null +++ b/quest.php @@ -0,0 +1,118 @@ +Current Quest\n"; + include("commonfunctions.php"); + $file = fopen($irpg_qfile,"r"); + $type=0; + while ($line=fgets($file,1024)) { + $arg = explode(" ",trim($line)); + if ($arg[0] == "T") { + unset($arg[0]); + $text = implode(" ",$arg); + } + elseif ($arg[0] == "Y") { + $type = $arg[1]; + } + elseif ($arg[0] == "P") { + $p1[0] = $arg[1]; + $p1[1] = $arg[2]; + $p2[0] = $arg[3]; + $p2[1] = $arg[4]; + } + elseif ($arg[0] == "S") { + if ($type == 1) $time = $arg[1]; + elseif ($type == 2) $stage = $arg[1]; + } + elseif ($arg[0] == "P1") { + $player[1]['name'] = $arg[1]; + if ($type == 2) { + $player[1]['x'] = $arg[2]; + $player[1]['y'] = $arg[3]; + } + } + elseif ($arg[0] == "P2") { + $player[2]['name'] = $arg[1]; + if ($type == 2) { + $player[2]['x'] = $arg[2]; + $player[2]['y'] = $arg[3]; + } + } + elseif ($arg[0] == "P3") { + $player[3]['name'] = $arg[1]; + if ($type == 2) { + $player[3]['x'] = $arg[2]; + $player[3]['y'] = $arg[3]; + } + } + elseif ($arg[0] == "P4") { + $player[4]['name'] = $arg[1]; + if ($type == 2) { + $player[4]['x'] = $arg[2]; + $player[4]['y'] = $arg[3]; + } + } + } + if (!$type) { + echo "

Sorry, there is no active quest.

\n"; + } + else { + echo "

Quest: To $text.

\n"; + if ($type == 1) { + echo "

Time to completion: ".duration($time-time()). + "

\n"; + } + elseif ($type == 2) { + if ($stage == 1) { + echo "

Current goal: [$p1[0],$p1[1]]

\n"; + } + else { + echo "

Current goal: [$p2[0],$p2[1]]

>\n"; + } + } + echo "

Participant 1: ".htmlentities($player[1]['name']). + "
\n"; + if ($type == 2) { + echo " Position: [".$player[1]['x'].",".$player[1]['y']."]

\n"; + } + else echo "
\n"; + echo "

Participant 2: ".htmlentities($player[2]['name']). + "
\n"; + if ($type == 2) { + echo " Position: [".$player[2]['x'].",".$player[2]['y']."]

\n"; + } + else echo "
\n"; + echo "

Participant 3: ".htmlentities($player[3]['name']). + "
\n"; + if ($type == 2) { + echo " Position: [".$player[3]['x'].",".$player[3]['y']."]

\n"; + } + else echo "
\n"; + echo "

Participant 4: ".htmlentities($player[4]['name']). + "
\n"; + if ($type == 2) { + echo " Position: [".$player[4]['x'].",".$player[4]['y']."]

\n". + "

Quest Map:

\n". + "

[Questers are shown in blue, current goal in red]

\n". + "
\"Idle
\n". + " \n". + " \"".htmlentities($player[1]['name']).\n". + " \"".htmlentities($player[2]['name']).\n". + " \"".htmlentities($player[3]['name']).\n". + " \"".htmlentities($player[4]['name']).\n". + " \n"; + } + else echo "
\n"; + } + echo "
\n"; + include("footer.php"); +?> diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..e0042b9 --- /dev/null +++ b/styles.css @@ -0,0 +1,134 @@ +/* Existing Styles */ +body { + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + background-color: #FFFFF0; + color: black; + margin: 10px; + text-align: justify; +} + +h1, h2 { margin-bottom: 0px; margin-top: 0px; } + +p.small { margin: 0px; font-size: smaller; } + +a { text-decoration: none; color: #C69500; } +a:hover { text-decoration: underline; color: black; } + +/* New Styles */ +.head { + background-color: #333; + color: #fff; + text-align: center; + padding: 10px; +} + +#menu { + background-color: #444; + color: #fff; + text-align: center; + padding: 10px; +} +/* Elegant File Menu-like Navigation */ +nav#menu { + background-color: #FFFFFF; + border: none; + padding: 0; + font-family: "Courier New", monospace; +} + +nav#menu ul { + list-style-type: none; + margin: 0; + padding: 0; + display: flex; +} + +nav#menu ul li { + margin: 0; + padding: 0; +} + +nav#menu ul li a { + text-decoration: none; + color: #000; + padding: 10px 20px; + display: block; + border-right: 1px solid #c0c0c0; +} + +nav#menu ul li a:last-child { + border-right: none; +} + +nav#menu ul li a:hover { + background-color: #c0c0c0; + color: #fff; +} + +.content { + padding: 20px; +} + +.footer { + background-color: #333; + color: #fff; + text-align: center; + padding: 10px; +} + +/* Map Styles */ +#map { + width: 500px; /* Original size */ + height: 500px; + background-image: url(newmap.png); + background-size: cover; + position: relative; +} + +/* Additional styles to ensure map functionality */ +area { + cursor: pointer; +} +/* Responsive layout */ +@media (max-width: 768px) { + #main-content { + flex-direction: column; + } + #map-container, #player-list { + width: 100%; + } + #map img { /* Add this selector */ + width: 100%; + height: auto; + } +} + +/* Regular layout */ +#main-content { + display: flex; + justify-content: space-between; +} +#content { + display: relative; +} +#map-container { + width: 500px; /* Set to the original size of the map */ +} +#player-list { + flex: 1; + padding-left: 20px; +} +/* New styles for offline players */ +li.offline, a.offline { + color: grey; +} +/* Code Styling */ +code { + background-color: #f4f4f4; + border: 1px solid #ddd; + border-radius: 4px; + font-family: "Courier New", monospace; + padding: 5px 10px; + display: inline-block; + margin: 5px 0; +} \ No newline at end of file diff --git a/tablegrad.gif b/tablegrad.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d43cad16faa998b4b39409f98bb516d6c540a7 GIT binary patch literal 829 zcmZ?wbhEHb(*OVf literal 0 HcmV?d00001 diff --git a/worldmap.php b/worldmap.php new file mode 100644 index 0000000..33e5b6b --- /dev/null +++ b/worldmap.php @@ -0,0 +1,27 @@ + + +

World Map

+

[offline users are red, online users are blue]

+ + +
+ IdleRPG World Map + +\n"; + } + fclose($file); +?> + +
+ + diff --git a/xml.php b/xml.php new file mode 100644 index 0000000..4fbc158 --- /dev/null +++ b/xml.php @@ -0,0 +1,82 @@ +"; +?> + + + + + + + + + + + + + + + $val) { + echo " <$key>$val\n"; + $sum += $val; + } + echo " $sum\n"; +?> + + + $val) { + echo " <$key>$val\n"; + $sum += $val; + } + echo " $sum\n"; +?> + +