From 50516c3280f6cd4a6049a5495088172835c1cd64 Mon Sep 17 00:00:00 2001 From: Jamin Blount Date: Sun, 5 Feb 2017 12:01:47 -0600 Subject: [PATCH] Beta 5 Build 19 07.28.2007 - Build 19 (Consolation Prize): - Added "moddedby" column to controlrow. Will display next to normal Scourge copyright. - Added SigBot, which lets players display their character stats in forum signature images. - PVP fights now properly escape the opposing player's $userrow before updating. - Fixed misspellings of 'bonusdefense' in spells.php. - Fixed error that occurred when you failed to select a spell slot when adding new spells. - Minor changes to err() output. --- .htaccess | 2 + admin/control.php | 69 ---- admin/cookies.php | 32 -- admin/globals.php | 18 - admin/icons/bug.png | Bin 774 -> 0 bytes admin/icons/cog.png | Bin 512 -> 0 bytes admin/icons/coins.png | Bin 732 -> 0 bytes admin/icons/cross.png | Bin 655 -> 0 bytes admin/icons/delete.png | Bin 715 -> 0 bytes admin/icons/flag_blue.png | Bin 671 -> 0 bytes admin/icons/group.png | Bin 753 -> 0 bytes admin/icons/house.png | Bin 806 -> 0 bytes admin/icons/lightning.png | Bin 634 -> 0 bytes admin/icons/pencil.png | Bin 450 -> 0 bytes admin/icons/tick.png | Bin 537 -> 0 bytes admin/icons/user.png | Bin 741 -> 0 bytes admin/icons/world.png | Bin 923 -> 0 bytes admin/icons/world_add.png | Bin 940 -> 0 bytes admin/icons/world_delete.png | Bin 945 -> 0 bytes admin/icons/world_edit.png | Bin 945 -> 0 bytes admin/icons/wrench.png | Bin 610 -> 0 bytes admin/index.php | 34 -- admin/lib.php | 254 ------------ admin/realms.php | 321 --------------- admin/templates/control.php | 37 -- admin/templates/index.php | 12 - admin/templates/primary.php | 41 -- admin/templates/realms_index.php | 9 - admin/templates/realms_realms.php | 9 - admin/templates/realms_realms_add.php | 16 - admin/templates/realms_realms_delete.php | 17 - admin/templates/realms_realms_edit.php | 16 - admin/templates/realms_story.php | 9 - admin/templates/realms_towns.php | 9 - admin/templates/realms_towns_add.php | 23 -- admin/templates/realms_towns_delete.php | 17 - admin/templates/realms_towns_edit.php | 23 -- changelog.txt | 10 + config.php | 22 +- cookies.php | 14 + env.php | 1 + explore.php | 13 + extras/Thumbs.db | Bin 36352 -> 0 bytes extras/map.fla | Bin 62464 -> 0 bytes extras/mapmini.fla | Bin 54784 -> 0 bytes extras/update_build18.sql | 3 - fight.php | 14 + fightmods.php | 14 + globals.php | 14 + guilds.php | 14 + images/sigbotback.png | Bin 0 -> 7956 bytes index.php | 14 + install.php | 499 +++++++++++++++++++++++ extras/install.sql => install.sql | 386 +++++------------- lib.php | 258 +----------- lib2.php | 14 + login.php | 18 +- mailbox.php | 14 + mainindex.php | 49 --- map.php | 14 + mapmini.php | 14 + misc.php | 14 + panels.php | 17 +- pvp.php | 15 + pvpmini.php | 14 + sigbot.php | 75 ++++ spells.php | 30 +- story.php | 14 + templates/admin_primary.php | 70 ---- templates/botcheck.php | 14 + templates/explore.php | 14 + templates/explore_drop.php | 14 + templates/explore_drop_accept.php | 14 + templates/explore_drop_itemrow.php | 14 + templates/explore_quickheal.php | 14 + templates/explore_verify.php | 14 + templates/fight_level.php | 14 + templates/fight_levelup.php | 14 + templates/fight_levelupspell.php | 14 + templates/fight_lose.php | 14 + templates/fight_monsteronly.php | 14 + templates/fight_new.php | 14 + templates/fight_turn.php | 14 + templates/fight_win.php | 14 + templates/guild_apply.php | 14 + templates/guild_homelow.php | 14 + templates/guild_homemid.php | 14 + templates/guild_leave.php | 14 + templates/guild_list.php | 14 + templates/guild_members.php | 14 + templates/guild_news.php | 14 + templates/guild_remove.php | 14 + templates/login.php | 14 + templates/mailbox_letter.php | 14 + templates/mailbox_letterout.php | 14 + templates/mailbox_list.php | 14 + templates/mailbox_listout.php | 14 + templates/mailbox_listoutrow.php | 14 + templates/mailbox_listrow.php | 14 + templates/mailbox_new.php | 14 + templates/mailbox_reply.php | 14 + templates/mailbox_sent.php | 14 + templates/misc_babblebox.php | 14 + templates/misc_showmap.php | 14 + templates/panels_bottom.php | 14 + templates/panels_left.php | 14 + templates/panels_middle.php | 14 + templates/panels_right.php | 14 + templates/primary.php | 23 +- templates/primary_min.php | 14 + templates/primary_new.php | 23 +- templates/pvp_challenge.php | 14 + templates/pvp_decline.php | 14 + templates/pvp_declined.php | 14 + templates/pvp_lose.php | 14 + templates/pvp_mini.php | 14 + templates/pvp_new.php | 14 + templates/pvp_turn.php | 14 + templates/pvp_wait.php | 14 + templates/pvp_win.php | 14 + templates/statusbars.php | 14 + templates/story_item.php | 14 + templates/story_monster.php | 14 + templates/story_teleport.php | 14 + templates/town.php | 14 + templates/town_bank1.php | 14 + templates/town_bank2.php | 14 + templates/town_buy1.php | 14 + templates/town_buy2_empty.php | 14 + templates/town_buy2_full.php | 14 + templates/town_buy3.php | 14 + templates/town_buy_itemrow.php | 14 + templates/town_buy_olditemrow.php | 14 + templates/town_enter.php | 14 + templates/town_gamble1.php | 14 + templates/town_halloffame.php | 14 + templates/town_halloffamerow.php | 14 + templates/town_inn1.php | 14 + templates/town_inn2.php | 14 + templates/town_map1.php | 14 + templates/town_map2.php | 14 + templates/town_map3.php | 14 + templates/town_pvplist.php | 14 + templates/users_chardelete.php | 14 + templates/users_charedit.php | 14 + templates/users_charlist.php | 14 + templates/users_charlistnew.php | 14 + templates/users_charlistrow.php | 15 + templates/users_charnew.php | 14 + templates/users_levelspell1.php | 14 + templates/users_levelspell2.php | 14 + templates/users_levelup1.php | 14 + templates/users_levelup2.php | 14 + templates/users_onlinechar.php | 14 + templates/users_profile.php | 14 + templates/users_register1.php | 14 + templates/users_settings.php | 14 + templates/users_verified.php | 14 + town.php | 14 + users.php | 52 ++- verify.php | 14 + 161 files changed, 2283 insertions(+), 1678 deletions(-) create mode 100644 .htaccess delete mode 100644 admin/control.php delete mode 100644 admin/cookies.php delete mode 100644 admin/globals.php delete mode 100644 admin/icons/bug.png delete mode 100644 admin/icons/cog.png delete mode 100644 admin/icons/coins.png delete mode 100644 admin/icons/cross.png delete mode 100644 admin/icons/delete.png delete mode 100644 admin/icons/flag_blue.png delete mode 100644 admin/icons/group.png delete mode 100644 admin/icons/house.png delete mode 100644 admin/icons/lightning.png delete mode 100644 admin/icons/pencil.png delete mode 100644 admin/icons/tick.png delete mode 100644 admin/icons/user.png delete mode 100644 admin/icons/world.png delete mode 100644 admin/icons/world_add.png delete mode 100644 admin/icons/world_delete.png delete mode 100644 admin/icons/world_edit.png delete mode 100644 admin/icons/wrench.png delete mode 100644 admin/index.php delete mode 100644 admin/lib.php delete mode 100644 admin/realms.php delete mode 100644 admin/templates/control.php delete mode 100644 admin/templates/index.php delete mode 100644 admin/templates/primary.php delete mode 100644 admin/templates/realms_index.php delete mode 100644 admin/templates/realms_realms.php delete mode 100644 admin/templates/realms_realms_add.php delete mode 100644 admin/templates/realms_realms_delete.php delete mode 100644 admin/templates/realms_realms_edit.php delete mode 100644 admin/templates/realms_story.php delete mode 100644 admin/templates/realms_towns.php delete mode 100644 admin/templates/realms_towns_add.php delete mode 100644 admin/templates/realms_towns_delete.php delete mode 100644 admin/templates/realms_towns_edit.php create mode 100644 env.php delete mode 100644 extras/Thumbs.db delete mode 100644 extras/map.fla delete mode 100644 extras/mapmini.fla delete mode 100644 extras/update_build18.sql create mode 100644 images/sigbotback.png create mode 100644 install.php rename extras/install.sql => install.sql (88%) delete mode 100644 mainindex.php create mode 100644 sigbot.php delete mode 100644 templates/admin_primary.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..d99d1d4 --- /dev/null +++ b/.htaccess @@ -0,0 +1,2 @@ +RewriteEngine On +RewriteRule ^sigbot/([0-9]+).png$ sigbot.php?id=$1 [L] \ No newline at end of file diff --git a/admin/control.php b/admin/control.php deleted file mode 100644 index 97a616e..0000000 --- a/admin/control.php +++ /dev/null @@ -1,69 +0,0 @@ - $b) { - if (!is_numeric($_POST[$b])) { $errors .= "$b is a numeric field. Please enter numbers only. Please go back and try again.
"; } - } - foreach($_POST as $a => $b) { - if (trim($_POST[$a]) == "" && !in_array($a,$norequires)) { $errors .= "$a is a required field. Please enter a value. Please go back and try again.
"; } - } - if ($errors != "") { err($errors); } - - // Check toggles. - foreach($toggles as $a => $b) { - if (!isset($_POST[$b])) { $_POST[$b] = "0"; } - } - - // Build query. - $query = ""; - $columns = dorow(doquery("SHOW COLUMNS FROM {{table}}", "control")); - foreach($columns as $a => $b) { - if (isset($_POST[$b["Field"]])) { $query .= $b["Field"] . "='" . $_POST[$b["Field"]] . "',"; } - } - $query = rtrim($query, ","); - - // Save settings & finish. - doquery("UPDATE {{table}} SET $query WHERE id='1' LIMIT 1", "control"); - display("Main Settings", "The main settings were saved successfully.

You may return Home or to the Main Settings page."); - - } - - extract($controlrow); - - // Checkboxes. - if ($gameopen == 1) { $controlrow["check_gameopen"] = "checked=\"checked\""; } else { $controlrow["check_gameopen"] = ""; } - if ($showshout == 1) { $controlrow["check_showshout"] = "checked=\"checked\""; } else { $controlrow["check_showshout"] = ""; } - if ($showonline == 1) { $controlrow["check_showonline"] = "checked=\"checked\""; } else { $controlrow["check_showonline"] = ""; } - if ($showmonsterimages == 1) { $controlrow["check_showmonsterimages"] = "checked=\"checked\""; } else { $controlrow["check_showmonsterimages"] = ""; } - if ($verifyemail == 1) { $controlrow["check_verifyemail"] = "checked=\"checked\""; } else { $controlrow["check_verifyemail"] = ""; } - if ($compression == 1) { $controlrow["check_compression"] = "checked=\"checked\""; } else { $controlrow["check_compression"] = ""; } - if ($debug == 1) { $controlrow["check_debug"] = "checked=\"checked\""; } else { $controlrow["check_debug"] = ""; } - - // Item image dropdown. - $itemimages = array(0=>"Off",1=>"Slot",2=>"ID"); - $controlrow["select_showitemimages"] = ""; - foreach($itemimages as $a => $b) { - if ($controlrow["showitemimages"] == $a) { $selected = "selected=\"selected=\""; } else { $selected = ""; } - $controlrow["select_showitemimages"] .= ""; - } - - $page = parsetemplate(gettemplate("control"), $controlrow); - display("Main Settings", $page); - -} - -?> \ No newline at end of file diff --git a/admin/cookies.php b/admin/cookies.php deleted file mode 100644 index 585775e..0000000 --- a/admin/cookies.php +++ /dev/null @@ -1,32 +0,0 @@ - \ No newline at end of file diff --git a/admin/globals.php b/admin/globals.php deleted file mode 100644 index 0a92d19..0000000 --- a/admin/globals.php +++ /dev/null @@ -1,18 +0,0 @@ - \ No newline at end of file diff --git a/admin/icons/bug.png b/admin/icons/bug.png deleted file mode 100644 index 2d5fb90ec6ee08f53947e0266a87b03f75893446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr=kP) zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q diff --git a/admin/icons/cog.png b/admin/icons/cog.png deleted file mode 100644 index 67de2c6ccbeac17742f56cf7391e72b2bf5033ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00007$(F5I~EPw2+A2=20Sy*#|n7r8sf)7*RgqMLv3&KWmL+^F4r z7i0Z}>kq&FSJ~Z9+<5!dQFwCOz1ndvw%m_4J#=sT@Q1U19`B}1iL1?~3va{ZF~|VI zfHw0WI@T{zdi2I_>3m@YYk3d;l(JU>d+bPFLOo8G;T$3)1!qp*$dock%HEEk|V0 z3L2&;r~p>tQh+yD{T!MxBF4;%7xC6JH1CtlE}+w%Xkuu&haUcdHC?=ZKr(+GZJfIQ zJ6@GU%>XYSae67{=&NN{rB<>+N;FbBA#_{A0WZW7cXJ0E=}(_?dx9< zr?bEW55s(NboZ^^cb|S1s~AxnBh?-gQ{Ob@*3}OO`vCi&FRqICO$~lSg*6r5QDf7DTmJy^bFNy&p3d3; O0000uEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc diff --git a/admin/icons/flag_blue.png b/admin/icons/flag_blue.png deleted file mode 100644 index 003924f5eaf9d04277db6731c060eea3f91afbe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671 zcmV;Q0$}}#P))~3#~Ygh$29>KGa1bdH!g|-+n z%l(K(260cnR7PZA*&f5ViJWk2f?gO&<^&{{2pC@~psYOx{~+*b81ROHwh-W{t3t5R zfUAcy8L&$R7VqU%llVxB*$-TP4VVK!!+YQ{1?q!9``6#^&vyc*d<{N4Fv7TFIs?*V zVE#eNEVW7OU_j1YAe-u>mqKrV*3ZC0Dhr{9JVTgBH3a zw-MOd1e_w^+FNRU0B}<`6@-^H`-eRI8uYrge*@EsyqvK^`lfvjY@_h@W`KJMSbKop zAHe;7z(u1Nuh*cfdJEdlt!IEw0o1wyC*2TZt#4=mjuUi~!k&*bMpx`-Zr%6cESDIq zaoS|ycJT@Z=oCP8Ci0}*C*evrP)&0?`y^(G`SI(6vnfMgxg){D+Lwutc1Si0swhN#FwOv#}l83ts6rCW;r!9Q9l zl<41549yYiq6clJ;(J(YgF_14nmKFB@QK(mo6I~sr{BJxJ$rsp0HSt^ntND0Z;o48 z>O2Ckm9}n?$F`*>$L{;{zT>f+bCm7tpaqw^4q@%k z&cHHt3=3xZmt6rQ_dtDM#)Xwp66-Thu=<9?(zFvpy0gAr0U4Z3smE5f@pZNr!NoqT zEjSPuCQzMw(H;?yvf{+e;!7(;4hv)+d%cjKFiBL%egy0aeCof8z<>rLEjMsF|CBRH z86WcxAYvS6H;Yq)jY1Z-rrjWiu~m;clLmJlDAE7UhMJ*jBxp}s&nQkrZvqDXxsiv3 zSJ78>4W2GFIu$$+Ic&5Pq{1?zhIy(24enCZy35e>z6~XgVx$x%k(+>tPw)9SL~R?4 zs${`1bqjTFC3F)dxIIw>)!QP7$vk+;^#2c5r{lsjtwKYnfnn+j{~{GK;|I8rvPFU z5NbS#W7m)ofjNER&&ggR6fXi0xd4%4143#8JZlhXW+2TN#8b=5@L&-EUlY^cTT=>w zb_~+jfcRCYfdj}H0J49#sP#gtxE~%YBJiQ3AjMgoQJKuMITA}Iz|zizG7pw|7R*XF j=$D`QjOCK>V3B}dL4UFUkhgq600000NkvXXu0mjf1x-zB diff --git a/admin/icons/house.png b/admin/icons/house.png deleted file mode 100644 index fed62219f57cdfb854782dbadf5123c44d056bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 806 zcmV+>1KIqEP)v;U&v3%|^C`Ga3?LtY&4dQB4Oz;1v;J%z!D&%WRH@BZ?x; z3)8@IUIv@hG|@IwyHLC`l{1<4BK>wam95g|i|?Cfzt876&-Zx_0f5*l-9`IJI&mHu zE6$@xB)6N}7VeR;!X8D!TAw;;&0Bsj?A071cO>X3K0wl7WZ1;Tg!4LHyNcnzoeQ7t zNW`aSlm8WXYkek&ir$13=ngczvf zV0vnjNpCF&K8px}dunv+`LIb-sOC$_jD(;IBI$xC|7`(+9cA>Vir_V#z{?k7SX^Ah z^71m~W@q439Ycqfhi7+gp#A14n1n1!e>$EdeATG|f798Y=ggzwEKH2Q!qU2QA(Se?dwqG69%>n$6rtE z%F(845Az8c{w(XgimJg96!jLMz?zS6I1HUm2baqQx7&@nx;lhHA!r6vs2|fqJETOu zLxeu2OQ(3(au%dg>AcZsWI(zXn9XJg1cLe8k~0h0wOL=&HK}7X k{AKr*U4z7Szv)i%9gTgghwgU$Q~&?~07*qoM6N<$g31kYk^lez diff --git a/admin/icons/lightning.png b/admin/icons/lightning.png deleted file mode 100644 index 9680afd12f8fadf5b83f827240978446af5962b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)3kp_oQM4NsQ6$aEKj6mx0hg})10sT;E2V;K zUHNY7qG&TIJ`gc&M*EmdrgP_>>zSLTO=}7j2M*`nnfbo+_|8cvrSLzG(R^{I&fHg| z3Nfi70*Jk=pS3m4lD_qhO!oanz~FpWe?InrjDM6H7D@P(w+NOTuL0gfPQ>)8EiKPO>RV|@%G(EApK7|ni6$Or7s}#zN5D2fFuoW z?SUp(cysDe%D^FVRe!-fK+o2zXp zH&*H~_``&05AX{CqjQ9Pq)Pw`p&~+e-<5=lgjH9A;4MsYR*p|Xp3o{VtL6Q8vD&1u z_TBwgt>E(`Zp(h8_8f=r&cr~-uy!|BC|zGKq17aQeR}wL=f1PUhPjus5Lo&7j={xc zCLhQZ=E~bn;<}`gh7Bu?>ih@P+*yw5-^u2k8!el-HG?lt4o$V&*`tbh^4#JtCOgRB z@^-thiGaZ!P|20J4^o7;v)78_|FldDe9Z$i&;9^|y&bKi-n=y{JsccrzVF2T076QP UWao5~B>(^b07*qoM6N<$g7%3ha{vGU diff --git a/admin/icons/pencil.png b/admin/icons/pencil.png deleted file mode 100644 index 0bfecd50ee9f5bc5828f0c0745aa3e0effcbe250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450 zcmV;z0X_bSP)Rq1}l<=psl5*5Xz9i;M}s*NP=ugs7Q#8Z;Dyx|}!`#}xw_C3!B-yaPC&0j)XcpuX@rNfq|q}N(wJOjA& z>u+z?dfJEuLePrqzy!)73pvLjxk4d6XNZt?hm_iYES{i}J5y3l?}PPNYDBR7oPc~6 zL^d)Bi4Q2L3pnp!nFxN9c2E+=@XAl&+;2m6a~kZj1r3Mz3C=hmUG<{+vWR@t4q?fJ zhFc(ozZD#Mx`^Q~g1v=K6!QnfuqyD4>U4EjF0eamL}Jx| z%&`kR-H+3GBYr*Qx}frLU4`%n9(`uSomzw)t%%NagXkA*R5Mbv9VLDp1wMo$cOMa~ s3Wm%r7^bwK$2$}-<~D8p`#1iScU4^XCLAA~0ssI207*qoM6N<$g3sK(Qvd(} diff --git a/admin/icons/tick.png b/admin/icons/tick.png deleted file mode 100644 index a9925a06ab02db30c1e7ead9c701c15bc63145cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1pz1iyEv%?$mbQ(# zwJpuiQJP8?X_`#S8b+U_G6=ziYB!xPAcq{)ZJ0bECH@ zYx#`n8^Wzn^J!4>=q^bltNO15ry?0ecSLkjpT@vlid!jk)Fjf7&)q_V5zGs#3N%6* zbW~7Hg=&P0&~Y(|g>$hC9FL?;ttzPDZbpZu9OLb33^e2;FNTGJxScp1&q4M+y2ntQ z?C(=hpU$3~`Thx0eHwi0x`q+!d5k@|0_WHe%sG3e-s^MM`xM-ig!VcIA7H}X1ot~L zg=MLB4w-Q;Bi!!u2|I+Qb;0{{4Q53YX6+4_aXena{nmt*!YG7ua~`qc>o=?@U?rOU znS7%>klzi*muXnbM6i@4FR@s^8vTjDgy&%J?w?`u>NYMDFa_2%0SQ(qJE<3=<8Bzo zfdU60e*y(^$RF%r$kl)p7=7tlCDa$+J7w>}DU(O#~fk>pYuRvHi1E9^msg{tLeV XM&GIRvfA7%00000NkvXXu0mjf&%8>| diff --git a/admin/icons/world.png b/admin/icons/world.png deleted file mode 100644 index 68f21d30116710e48a8bf462cb32441e51fad5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 zcmV;M17!S(P)A9)b<7tX~vT z$e)FfZ+`X4_uKyq#wJHC;J3lH{lhQkUc~Wid;*pnjhM12xe-bPByd^xuQ9zgeM^Mm z*tc)|P}LtTnHXr@Gkmmbkg^O2bqyhO>LP|qjIwW2@Di+4EuKm~&tOO2!N3o{128Hl z9v%fgerM0C#)7P|PMvxr*!Gf?eGA8f{OT6fS`9l>LQCg)p=~c$Zr|AT_0+_?F*JJk zlapOT2Q(wWx-LMq(TxXxLn+U;!LV)MhNp~ommdh+fo8T*&g-yQbbG&ze&=>tC(Ar=&^1xlA;Jc(6 zcCi_xs8k}-S&#ONOHm%e@#nGC7F++8C~r29Or!_{(QGQEG)+O^J1BCPmgM4JAzC8I z`jS9bO>|}Jq_#$IRzp0d34>)&3L%7MN)eTv!0B!^nn}f4z2*vFE@jv3dn zG>H)u>FR7_d2JcsjvfZ$vkP~xik@T^(_N)nx=tqJV+tQjQ`owJ83bf`zX6Ear*=Mhzn5QUuXE|v zR33Qyi8G!0{H2r##d#6R6YmYbZz4NTssT;cXiGb6lxO+k@{ba@2D~*hKDY6N;Bkh> xhhCRLejsJkAIT{5sICHcfU`5>bKmUb{{y)0nR3PMMxX!y002ovPDHLkV1nl+t-}BS diff --git a/admin/icons/world_add.png b/admin/icons/world_add.png deleted file mode 100644 index 6d0d7f74c0d89a5d1975eb65c3e048ace0290daf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmV;d15^BoP)%?%c;Y_xOF9QVIY7fRV}JLEt>l17rXb zC;_)rpe}tj`1Q{K005d&3V@NxVG|ey-h3^0CX$Y2uaOh_TG3L)SA z^5q{Y0Gd*Yk;&l@aHG5N$^I8}&tW+cTs)R7jj)QaYX>Od5yNKFonUrjc24->neX1Z zQqlo{(Nhh_`Ujf3DM$}r*APOdD#F-=DYy}~ofvDS5RWFFraSw1hv)j=0~p1#4+emb z-#PZGF)#Poq)IgqRGb6_H-zOte!Wa-f1gNt7p*Q&Ut=5B7iU_(xixy%=p8=!>AB|K z6PgiYQx~9`I4Bd`-ZH2}_By5ADbi^dQ@DgQMMO6+E7$01>qP33 z&Vy%>nonQ*X>`xY>R-KbdE9gTpT-w&@@z{Nbw&;8L_l3wQX6(ihFpr3Ekas?*N>kE z;DZ;w;BZq1Ku8DhUH{!*^LOU{T=|Q0Z9TN6Ob)~qjYgRU-KJPBvam75g{wmVTo@nX z-u4`Tqba2Tcl#FWG)4l2eAPSU$OVbxOKKviB!WMq6%|BL%)*6IvUcN65jTSPSg8@k z+Knw0t;7~vY{ZsSl2SuT(wNjF)5&CJGIx?Y_woPtcT-F8EDwi|v-vco6!&IyVq_3F z4jcel028PJmsOxX{b=yZpYPpk{{coPMoeG~c>d|!P$U~`!Ll2$JrL4CP~d$2tdK(f zB7}VL^C!RCybBne7zqKt_BQY8Kbkv?87OV4qzxtsGdSGIqBd2HI~8`<~a zaC_fw&4`iL1*lf;lL@XC4C;=~%*rM~v_fRt4cycm#h`*&k?d~D=~owL8%^LqF4e)5 zy-G2v^RV#%0fMD9567vKZc|u|GlquGnJ&O>whNqkRaOr?~jDezniMGiA0Is1o?7E6$y z7w9TQdrO^UZ4hh4$6*rR`x}%(2%(u$1ZB&!I+~0O$><|27fl>LL^v8D+8X2LLJ8+e zhQY#Vj^=+Lw*C)WsTidVi4;NA6u$U#v3#pzM?A;5+Y@BsI|v&&e8)x^8N!Jy2NzFq zEHueOuf0X2YZvuvLua}r|9ZzWT3E~(Z4u$a@=$MpT=h{@>oX?X`_K`A|M@>q{0r#kV|&6 zK(wt3j-P?|%kcIB=GH86Up1QmzU#koVQ%V@Tle-3?>oeeH4~$%5LyjC(6LjE*i%2! zaOO?i`fY5WW*JC>)w?o1@yX*!;fs^Pmq%Xhf89j3p;R1A*T_wuAT@oF&PE?oU#3}1)g%qIqTsXPaq-^2FjA^a Tq%@q400000NkvXXu0mjf^C!N( diff --git a/admin/icons/world_edit.png b/admin/icons/world_edit.png deleted file mode 100644 index 00794d4088a00c6baf0c26268ce127cc2c0277a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmV;i15W&jP)wbexvw|;D@Bpf2#?5tPj)lD7w%noq+*50?iyU*w6AgL1SN!I(xtJI>ioRNhm3 z8y=*@c8$zNJK5S0C$-Jo_k6|Ll7+?aK9-_;S@0|HYf>1rjrX%u;FB{MepKXNWhx3c)tdmO*|ZNArkPMxVZ889e0pvz1Z#dze2>G{HV zh$91qls28kbG1mEJG7MiMzhUrQU&Dok7h|F~{5T*SG)I#1Af~Z4$+Bm-QZ|{agwxOcT_6 zh)MA>qt$8jm2IcNd=z7-0Y$4cDTf3vJ@HICtF~=Qxv<4hB7Kb&OBE~D3aq8uXgl}{ z-NV&r%qNoKYI3vS#s7WdzhrEE;bGanS0DGEO{4DI*0mjq%?Tm=CKwQ8KRy394wBI; Te6@B!00000NkvXXu0mjfI-kC4 diff --git a/admin/icons/wrench.png b/admin/icons/wrench.png deleted file mode 100644 index 5c8213fef5ab969f03189d4367e32e597e38bd7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vp \ No newline at end of file diff --git a/admin/lib.php b/admin/lib.php deleted file mode 100644 index 063ed40..0000000 --- a/admin/lib.php +++ /dev/null @@ -1,254 +0,0 @@ -
$query"); - $numqueries++; - return $sqlquery; - -} - -function dorow($sqlquery, $force = "") { // Abstraction layer part deux. - - switch (mysql_num_rows($sqlquery)) { - - case 0: - $row = false; - break; - case 1: - if ($force == "") { - $row = mysql_fetch_assoc($sqlquery); - } else { - $temprow = mysql_fetch_assoc($sqlquery); - $row[$temprow[$force]] = $temprow; - } - break; - default: - if ($force == "") { - while ($temprow = mysql_fetch_assoc($sqlquery)) { - $row[] = $temprow; - } - } else { - while ($temprow = mysql_fetch_assoc($sqlquery)) { - $row[$temprow[$force]] = $temprow; - } - } - break; - - } - - return $row; - -} - -function gettemplate($templatename) { // SQL query for the template. - - $filename = "templates/" . $templatename . ".php"; - include("$filename"); - return $template; - -} - -function parsetemplate($template, $array) { // Replace template with proper content. Also does languages. - - foreach($array as $a => $b) { - $template = str_replace("{{{$a}}}", $b, $template); - } - return $template; - -} - -function getmicrotime() { // Used for timing script operations. - - list($usec, $sec) = explode(" ",microtime()); - return ((float)$usec + (float)$sec); - -} - -function is_email($email) { // Thanks to "mail(at)philipp-louis.de" from php.net! - - return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)); - -} - -function mymail($to, $title, $body, $from = '') { // thanks to arto dot PLEASE dot DO dot NOT dot SPAM at artoaaltonen dot fi. - - global $controlrow; - extract($controlrow); - - - $from = trim($from); - - if (!$from) { - $from = '<$adminemail>'; - } - - $rp = $adminemail; - $org = '$gameurl'; - $mailer = 'PHP'; - - $head = ''; - $head .= "Content-Type: text/plain \r\n"; - $head .= "Date: ". date('r'). " \r\n"; - $head .= "Return-Path: $rp \r\n"; - $head .= "From: $from \r\n"; - $head .= "Sender: $from \r\n"; - $head .= "Reply-To: $from \r\n"; - $head .= "Organization: $org \r\n"; - $head .= "X-Sender: $from \r\n"; - $head .= "X-Priority: 3 \r\n"; - $head .= "X-Mailer: $mailer \r\n"; - - $body = str_replace("\r\n", "\n", $body); - $body = str_replace("\n", "\r\n", $body); - - return mail($to, $title, $body, $head); - -} - -function err($error, $system = false, $panels = true) { // Basic little error handler. - - display("Error", $error, $panels); - -} - -function dotabs() { - - global $thetab; - - $tabs = array( - 1=>"\"Home\" Home", - 2=>"\"Config\" Config", - 3=>"\"Players\" Players", - 4=>"\"Items\" Items", - 5=>"\"Monsters\" Monsters", - 6=>"\"Spells\" Spells", - 7=>"\"Guilds\" Guilds", - 8=>"\"Realms\" Realms", - 9=>"\"Misc.\" Misc.", - 10=>"\"Tools\" Tools" - ); - - $tabstrip = ""; - foreach ($tabs as $a => $b) { - if ($thetab == $a) { $style = "tab_on"; } else { $style = "tab_off"; } - $tabstrip .= "$b"; - } - - return ($tabstrip); - -} - -function display($title, $content) { // Finalize page and output to browser. - - include('../config.php'); - global $controlrow, $numqueries, $starttime, $version, $build; - - if (!isset($controlrow)) { - $controlrow = dorow(doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control")); - } - - // Make page tags for XHTML validation. - $page = "\n" - . "\n" - . "\n"; - $page .= gettemplate("primary"); - - // Setup for primary page array indexes. - $row = array(); - $row["gamename"] = $controlrow["gamename"]; - $row["pagetitle"] = $title; - $row["version"] = $version; - $row["numqueries"] = $numqueries; - $row["totaltime"] = round(getmicrotime()-$starttime,4); - $row["content"] = $content; - $row["tabstrip"] = dotabs(); - -$page .= << - - - Version {{version}} / {{numqueries}} Queries / {{totaltime}} Seconds - - - Dragon Scourge © by renderse7en - - - - - -THEVERYENDOFYOU; - - // Finalize control array for output. - $page = parsetemplate($page, $row); - - if ($controlrow["compression"] == 1) { ob_start("ob_gzhandler"); } - echo $page; - die(); - -} - -?> \ No newline at end of file diff --git a/admin/realms.php b/admin/realms.php deleted file mode 100644 index 42f2c22..0000000 --- a/admin/realms.php +++ /dev/null @@ -1,321 +0,0 @@ - $b) { - extract($b); - if ($alt) { $bg = "class=\"td_alt\""; $alt = false; } else { $bg = ""; $alt = true; } - $pagerow["realmslist"] .= "
$name\"Edit\" Edit     \"Delete\" Delete
"; - } - - display("Realms List", parsetemplate(gettemplate("realms_realms"), $pagerow)); - - } elseif ($action == "edit") { - - if (!isset($_GET["id"]) || !is_numeric($_GET["id"])) { err("Invalid Realm ID number entered."); } - $id = $_GET["id"]; - $therealm = dorow(doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "worlds")); - if ($therealm == false) { err("The Realm you entered does not exist."); } - - if (isset($_POST["submit"])) { - - // Check numbers. - $numerics = array("size"); - foreach($numerics as $a => $b) { if (!is_numeric($_POST[$b])) { err("The $b field must be a number."); } } - - // Other stuff. - if ($_POST["size"] < 0) { $_POST["size"] *= -1; } - - // Update & finish. - extract($_POST); - $query = doquery("UPDATE {{table}} SET name='$name', size='$size' WHERE id='$id' LIMIT 1", "worlds"); - display("Edit a Realm", "The Realm was edited successfully. Click here to return to the Realms List."); - - } - - display("Edit a Realm", parsetemplate(gettemplate("realms_realms_edit"), $therealm)); - - } elseif ($action == "new") { - - if (isset($_POST["submit"])) { - - // Check numbers. - $numerics = array("size"); - foreach($numerics as $a => $b) { if (!is_numeric($_POST[$b])) { err("The $b field must be a number."); } } - - // Other stuff. - if ($_POST["size"] < 0) { $_POST["size"] *= -1; } - - // Update & finish. - extract($_POST); - $query = doquery("INSERT INTO {{table}} SET id='', name='$name', size='$size'", "worlds"); - display("Add a Realm", "The Realm was created successfully. Click here to return to the Realms List."); - - } - - display("Add a Realm", parsetemplate(gettemplate("realms_realms_add"), $therealm)); - - } elseif ($action == "delete") { - - if (!isset($_GET["id"]) || !is_numeric($_GET["id"])) { err("Invalid Realm ID number entered."); } - $id = $_GET["id"]; - $therealm = dorow(doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "worlds")); - if ($therealm == false) { err("The Realm you entered does not exist."); } - - if (isset($_POST["diediedie"])) { - - $query = doquery("DELETE FROM {{table}} WHERE id='$id'", "worlds"); - display("Delete a Realm", "The Realm was deleted successfully. Click here to return to the Realms List."); - - } elseif (isset($_POST["abort"])) { - - die(header("Location: index.php?do=realms&fn=realms")); - - } - - display("Delete a Realm", parsetemplate(gettemplate("realms_realms_delete"), $therealm)); - - } - -} - -function towns() { - - if (isset($_GET["action"])) { - $action = $_GET["action"]; - } else { $action = "list"; } - - if ($action == "list") { - - $towns = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "towns"), "id"); - $realms = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "worlds"), "id"); - $alt = false; - $pagerow["townslist"] = ""; - foreach($towns as $a => $b) { - extract($b); - if ($alt) { $bg = "class=\"td_alt\""; $alt = false; } else { $bg = ""; $alt = true; } - $pagerow["townslist"] .= "
$name (".$realms[$b["world"]]["name"].")\"Edit\" Edit     \"Delete\" Delete
"; - } - - display("Towns List", parsetemplate(gettemplate("realms_towns"), $pagerow)); - - } elseif ($action == "edit") { - - if (!isset($_GET["id"]) || !is_numeric($_GET["id"])) { err("Invalid Town ID number entered."); } - $id = $_GET["id"]; - $thetown = dorow(doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "towns")); - if ($thetown == false) { err("The town you entered does not exist."); } - - if (isset($_POST["submit"])) { - - // Check numbers. - $numerics = array("world","latitude","longitude","innprice","mapprice","travelpoints","itemminlvl","itemmaxlvl"); - foreach($numerics as $a => $b) { if (!is_numeric($_POST[$b])) { err("The $b field must be a number."); } } - - // Update & finish. - extract($_POST); - $query = doquery("UPDATE {{table}} SET name='$name', world='$world', latitude='$latitude', longitude='$longitude', innprice='$innprice', mapprice='$mapprice', travelpoints='$travelpoints', itemminlvl='$itemminlvl', itemmaxlvl='$itemmaxlvl' WHERE id='$id' LIMIT 1", "towns"); - display("Edit a Town", "The town was edited successfully. Click here to return to the Towns List."); - - } - - // Realms list. - $realms = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "worlds"), "id"); - $thetown["realmselect"] = ""; - foreach($realms as $a => $b) { - if ($thetown["world"] == $b["id"]) { $selected = "selected=\"selected\""; } else { $selected = ""; } - $thetown["realmselect"] .= ""; - } - - // Realm max size. - $thetown["realmsize"] = $realms[$thetown["world"]]["size"]; - - // Display. - display("Edit a Town", parsetemplate(gettemplate("realms_towns_edit"), $thetown)); - - } elseif ($action == "new") { - - if (isset($_POST["submit"])) { - - // Check numbers. - $numerics = array("world","latitude","longitude","innprice","mapprice","travelpoints","itemminlvl","itemmaxlvl"); - foreach($numerics as $a => $b) { if (!is_numeric($_POST[$b])) { err("The $b field must be a number."); } } - - // Update & finish. - extract($_POST); - $query = doquery("INSERT INTO {{table}} SET id='', name='$name', world='$world', latitude='$latitude', longitude='$longitude', innprice='$innprice', mapprice='$mapprice', travelpoints='$travelpoints', itemminlvl='$itemminlvl', itemmaxlvl='$itemmaxlvl'", "towns"); - display("Add a Town", "The town was created successfully. Click here to return to the Towns List."); - - } - - // Realms list. - $realms = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "worlds"), "id"); - $thetown["realmselect"] = ""; - foreach($realms as $a => $b) { - $thetown["realmselect"] .= ""; - } - - // Realm max size. - $thetown["realmsize"] = $realms[$thetown["world"]]["size"]; - - // Display. - display("Add a Town", parsetemplate(gettemplate("realms_towns_add"), $thetown)); - - } elseif ($action == "delete") { - - if (!isset($_GET["id"]) || !is_numeric($_GET["id"])) { err("Invalid town ID number entered."); } - $id = $_GET["id"]; - $thetown = dorow(doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "towns")); - if ($thetown == false) { err("The town you entered does not exist."); } - - if (isset($_POST["diediedie"])) { - - $query = doquery("DELETE FROM {{table}} WHERE id='$id'", "towns"); - display("Delete a Town", "The town was deleted successfully. Click here to return to the towns List."); - - } elseif (isset($_POST["abort"])) { - - die(header("Location: index.php?do=realms&fn=towns")); - - } - - display("Delete a Town", parsetemplate(gettemplate("realms_towns_delete"), $thetown)); - - } - -} - -function storyline() { - - if (isset($_GET["action"])) { - $action = $_GET["action"]; - } else { $action = "list"; } - - if ($action == "list") { - - $story = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "story"), "id"); - $alt = false; - $pagerow["storylist"] = ""; - foreach($story as $a => $b) { - extract($b); - if ($alt) { $bg = "class=\"td_alt\""; $alt = false; } else { $bg = ""; $alt = true; } - $pagerow["storylist"] .= "
$title\"Edit\" Edit     \"Delete\" Delete
"; - } - - display("Story List", parsetemplate(gettemplate("realms_story"), $pagerow)); - - } elseif ($action == "edit") { - - if (!isset($_GET["id"]) || !is_numeric($_GET["id"])) { err("Invalid Town ID number entered."); } - $id = $_GET["id"]; - $thetown = dorow(doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "towns")); - if ($thetown == false) { err("The town you entered does not exist."); } - - if (isset($_POST["submit"])) { - - // Check numbers. - $numerics = array("world","latitude","longitude","innprice","mapprice","travelpoints","itemminlvl","itemmaxlvl"); - foreach($numerics as $a => $b) { if (!is_numeric($_POST[$b])) { err("The $b field must be a number."); } } - - // Update & finish. - extract($_POST); - $query = doquery("UPDATE {{table}} SET name='$name', world='$world', latitude='$latitude', longitude='$longitude', innprice='$innprice', mapprice='$mapprice', travelpoints='$travelpoints', itemminlvl='$itemminlvl', itemmaxlvl='$itemmaxlvl' WHERE id='$id' LIMIT 1", "towns"); - display("Edit a Town", "The town was edited successfully. Click here to return to the Towns List."); - - } - - // Realms list. - $realms = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "worlds"), "id"); - $thetown["realmselect"] = ""; - foreach($realms as $a => $b) { - if ($thetown["world"] == $b["id"]) { $selected = "selected=\"selected\""; } else { $selected = ""; } - $thetown["realmselect"] .= ""; - } - - // Realm max size. - $thetown["realmsize"] = $realms[$thetown["world"]]["size"]; - - // Display. - display("Edit a Town", parsetemplate(gettemplate("realms_towns_edit"), $thetown)); - - } elseif ($action == "new") { - - if (isset($_POST["submit"])) { - - // Check numbers. - $numerics = array("world","latitude","longitude","innprice","mapprice","travelpoints","itemminlvl","itemmaxlvl"); - foreach($numerics as $a => $b) { if (!is_numeric($_POST[$b])) { err("The $b field must be a number."); } } - - // Update & finish. - extract($_POST); - $query = doquery("INSERT INTO {{table}} SET id='', name='$name', world='$world', latitude='$latitude', longitude='$longitude', innprice='$innprice', mapprice='$mapprice', travelpoints='$travelpoints', itemminlvl='$itemminlvl', itemmaxlvl='$itemmaxlvl'", "towns"); - display("Add a Town", "The town was created successfully. Click here to return to the Towns List."); - - } - - // Realms list. - $realms = dorow(doquery("SELECT * FROM {{table}} ORDER BY id", "worlds"), "id"); - $thetown["realmselect"] = ""; - foreach($realms as $a => $b) { - $thetown["realmselect"] .= ""; - } - - // Realm max size. - $thetown["realmsize"] = $realms[$thetown["world"]]["size"]; - - // Display. - display("Add a Town", parsetemplate(gettemplate("realms_towns_add"), $thetown)); - - } elseif ($action == "delete") { - - if (!isset($_GET["id"]) || !is_numeric($_GET["id"])) { err("Invalid town ID number entered."); } - $id = $_GET["id"]; - $thetown = dorow(doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "towns")); - if ($thetown == false) { err("The town you entered does not exist."); } - - if (isset($_POST["diediedie"])) { - - $query = doquery("DELETE FROM {{table}} WHERE id='$id'", "towns"); - display("Delete a Town", "The town was deleted successfully. Click here to return to the towns List."); - - } elseif (isset($_POST["abort"])) { - - die(header("Location: index.php?do=realms&fn=towns")); - - } - - display("Delete a Town", parsetemplate(gettemplate("realms_towns_delete"), $thetown)); - - } - -} - -?> \ No newline at end of file diff --git a/admin/templates/control.php b/admin/templates/control.php deleted file mode 100644 index 21fa586..0000000 --- a/admin/templates/control.php +++ /dev/null @@ -1,37 +0,0 @@ -Configuration Settings -These are the primary game settings that control various global aspects of your game.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Game Name
The name of your game. Used in page titles and when sending email to new users.

Game is Open? Yes
Should normally be left on, but you should turn off your game while performing any updates.

Game Path
The full server path to your game. If you don't know this, please ask your host for assistance.

Game URL
The full URL to your game.

Forum URL
If you have a support forum for your game, enter its URL here - otherwise leave blank to disable this link.

Avatar Path
The full server path to your avatar uploads folder.

Avatar URL
The full URL to your avatar uploads folder.

Avatar Max Filesize
Enter the maximum file size (in bytes) for uploaded avatars.
Range: 0 to 4294967295.


Show Babblebox? Yes
Enables the Babblebox iframe in the right panel.

Show Who's Online? Yes
Enables the Who's Online listing in the right panel.

Show Item Images?
Slot images use one image for all items in a given slot (e.g. weapons, shields, armor, etc.). ID images use an individual image for every item, based on the item's ID number.
Only enable ID images if your /images/items/ folder contains an image for every item in the database, or else you'll get a lot of broken image tags.


Show Monster Images? Yes
Only enable monster images if your /images/monsters/ folder contains an image for every monster in the database, or else you'll get a lot of broken image tags.

Admin's Email
This is the game owner's email address, used when sending email to new users.

Enable Email Functions? Yes
Sends a verification letter to anyone who registers an account, to enforce valid email addresses. Also allows users to request new passwords if they lose/forget theirs.
NOTE: Some Windows servers may have issues if their php.ini settings are improperly configured. If you're on a Windows host and get a lot of email sending errors, disable this setting or contact your host for more information.


Enable ZLib Compression? Yes
Enables ZLib output compression, which reduces bandwidth and speeds up page access time for end-users.

Enable Debug Info? Yes
Displays extra information (query count & page generation time) in the footer, and displays full MySQL query errors if they occur.

Bot Check
Bot Check ensures that players are human by displaying a CAPTCHA challenge form every so often (random 1 in n chance) during exploring. Higher numbers show the Bot Check less often, but may not be as secure. Lower numbers will show the bot check more often, but may annoy some users. Enter 0 to disable the bot check completely.
Range: 0 to 4294967295.
Recommended: 255.


PVP Refresh Time
The amount of time (in seconds) the mini PVP frame should wait before refreshing itself to check for new data. Low numbers may cause strain on your server if you have a lot of concurrent users.
Range: 0 to 4294967295.


PVP Timeout Limit
The amount of time (in seconds) it takes for someone to remain inactive and cause the PVP battle to close.
Range: 0 to 4294967295.


Guild Startup Cost
The amount of gold it takes for a player to start their own Guild.
Range: 0 to 4294967295.


Guild Start Level
The minimum level a player must reach before being allowed to start a Guild.
Range: 0 to 4294967295.


Guild Join Level
The minimum level a player must reach before being allowed to join a Guild.
Range: 0 to 4294967295.


Guild Update Time
The amount of time (in hours) before automatically recalculating Guild Honor Points.
Range: 0 to 4294967295.


- -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/index.php b/admin/templates/index.php deleted file mode 100644 index 70bc833..0000000 --- a/admin/templates/index.php +++ /dev/null @@ -1,12 +0,0 @@ -Welcome to the Dragon Scourge Administrator. -Please select a tab above to control various settings and attributes for your game.

-Your game has {{accounts}} accounts with {{characters}} active characters. {{guildchars}} are members of {{guilds}} Guilds.

- -Click here to return to your game.


-The awesome Silk icons, used throughout the control panel, were created by FamFamFam.com. -END; - -?> \ No newline at end of file diff --git a/admin/templates/primary.php b/admin/templates/primary.php deleted file mode 100644 index b1ca2b5..0000000 --- a/admin/templates/primary.php +++ /dev/null @@ -1,41 +0,0 @@ - -{{gamename}} :: {{pagetitle}} - - -
- - - - {{tabstrip}} - -
- - -
- {{content}} -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_index.php b/admin/templates/realms_index.php deleted file mode 100644 index b5d23ed..0000000 --- a/admin/templates/realms_index.php +++ /dev/null @@ -1,9 +0,0 @@ -Realms -Please select which aspect of the Realms you wish to edit.

-[ Realms | Towns | Storyline ] -END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_realms.php b/admin/templates/realms_realms.php deleted file mode 100644 index 3219f4c..0000000 --- a/admin/templates/realms_realms.php +++ /dev/null @@ -1,9 +0,0 @@ -Realms List -Select a Realm from the list below to edit or delete it. You can also Add add a new Realm.

-{{realmslist}} -END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_realms_add.php b/admin/templates/realms_realms_add.php deleted file mode 100644 index 60397cd..0000000 --- a/admin/templates/realms_realms_add.php +++ /dev/null @@ -1,16 +0,0 @@ -Add a Realm -Back to Realms List

- - - - - -
Realm Name
The name of this Realm.

Realm Size
Realms are divided into four square quadrants. This number is the length/width of each individual quadrant.
Range: 0 to 65535.


- -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_realms_delete.php b/admin/templates/realms_realms_delete.php deleted file mode 100644 index 4e95409..0000000 --- a/admin/templates/realms_realms_delete.php +++ /dev/null @@ -1,17 +0,0 @@ -Delete a Realm -Back to Realms List

- - - - -
-Are you sure you want to delete {{name}}? -
- -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_realms_edit.php b/admin/templates/realms_realms_edit.php deleted file mode 100644 index 4510bea..0000000 --- a/admin/templates/realms_realms_edit.php +++ /dev/null @@ -1,16 +0,0 @@ -Edit a Realm -Back to Realms List

- - - - - -
Realm Name
The name of this Realm.

Realm Size
Realms are divided into four square quadrants. This number is the length/width of each individual quadrant. Range: 0 to 65535.

- -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_story.php b/admin/templates/realms_story.php deleted file mode 100644 index fb16d1d..0000000 --- a/admin/templates/realms_story.php +++ /dev/null @@ -1,9 +0,0 @@ -Story List -Select a Chapter from the list below to edit or delete it. You can also Add add a new Chapter.

-{{storylist}} -END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_towns.php b/admin/templates/realms_towns.php deleted file mode 100644 index 3542b57..0000000 --- a/admin/templates/realms_towns.php +++ /dev/null @@ -1,9 +0,0 @@ -Towns List -Select a Town from the list below to edit or delete it. You can also Add add a new Town.

-{{townslist}} -END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_towns_add.php b/admin/templates/realms_towns_add.php deleted file mode 100644 index a2f9b60..0000000 --- a/admin/templates/realms_towns_add.php +++ /dev/null @@ -1,23 +0,0 @@ -Add a Town -Back to Towns List

- - - - - - - - - - - - -
Town Name
The name of this Town.

Realm
The Realm this Town is a part of.

Latitude
The vertical location of this town on the map.
Must be within the map size of the selected Realm.


Longitude
The horizontal location of this town on the map.
Must be within the map size of the selected Realm.


Inn Price
The cost to stay at this town's Inn.
Range: 0 to 4294967295.


Map Price
The cost to buy the map to this town.
Range: 0 to 4294967295.


TP Price
The travel points to jump to this town.
Range: 0 to 65535.


Minimum Item Level
The minimum base item level that will be generated in this town.
Range: 0 to 4294967295.


Maximum Item Level
The maximum base item level that will be generated in this town.
Range: 0 to 4294967295.


- -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_towns_delete.php b/admin/templates/realms_towns_delete.php deleted file mode 100644 index 7922923..0000000 --- a/admin/templates/realms_towns_delete.php +++ /dev/null @@ -1,17 +0,0 @@ -Delete a Town -Back to Towns List

- - - - -
-Are you sure you want to delete {{name}}? -
- -
-END; - -?> \ No newline at end of file diff --git a/admin/templates/realms_towns_edit.php b/admin/templates/realms_towns_edit.php deleted file mode 100644 index cdd2dd5..0000000 --- a/admin/templates/realms_towns_edit.php +++ /dev/null @@ -1,23 +0,0 @@ -Edit a Town -Back to Towns List

- - - - - - - - - - - - -
Town Name
The name of this Town.

Realm
The Realm this Town is a part of.

Latitude
The vertical location of this town on the map.
Range: -{{realmsize}} to {{realmsize}}.


Longitude
The horizontal location of this town on the map.
Range: -{{realmsize}} to {{realmsize}}.


Inn Price
The cost to stay at this town's Inn.
Range: 0 to 4294967295.


Map Price
The cost to buy the map to this town.
Range: 0 to 4294967295.


TP Price
The travel points to jump to this town.
Range: 0 to 65535.


Minimum Item Level
The minimum base item level that will be generated in this town.
Range: 0 to 4294967295.


Maximum Item Level
The maximum base item level that will be generated in this town.
Range: 0 to 4294967295.


- -
-END; - -?> \ No newline at end of file diff --git a/changelog.txt b/changelog.txt index 82b6bde..2371dea 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,16 @@ DRAGON SCOURGE Changelog +***** BETA FIVE ***** + +07.28.2007 - Build 19 (Consolation Prize): +- Added "moddedby" column to controlrow. Will display next to normal Scourge copyright. +- Added SigBot, which lets players display their character stats in forum signature images. +- PVP fights now properly escape the opposing player's $userrow before updating. +- Fixed misspellings of 'bonusdefense' in spells.php. +- Fixed error that occurred when you failed to select a spell slot when adding new spells. +- Minor changes to err() output. + ***** BETA FOUR ***** 09.03.2006 - Build 18 (Joe Camel): diff --git a/config.php b/config.php index 3d10be5..ca61eb2 100644 --- a/config.php +++ b/config.php @@ -1,11 +1,25 @@ "localhost", // MySQL server name. (Usually localhost.) - "user" => "", // MySQL username. - "pass" => "", // MySQL password. - "name" => "", // MySQL database name. + "user" => "", // MySQL username. + "pass" => "", // MySQL password. + "name" => "", // MySQL database name. "prefix" => "sx", // Prefix for table names. - "secretword" => ""); // Secret word used when hashing information for cookies. + "secretword" => ""); // Secret word used when hashing information for cookies. ?> \ No newline at end of file diff --git a/cookies.php b/cookies.php index b66a52b..6869634 100644 --- a/cookies.php +++ b/cookies.php @@ -1,5 +1,19 @@ \ No newline at end of file diff --git a/explore.php b/explore.php index 10b8d5d..6ba097d 100644 --- a/explore.php +++ b/explore.php @@ -1,5 +1,18 @@ (;2Mg>7ZL=ed^ijpPgtO6n+S;;UUVju^>1PqdcfaIuvBtZ$1 zqh!gFVSow$8h7{I`tF5&`|j@l+q>=Ek3BPVcXdy9S66+jx~Hp?ZsJwpkxA&U23d#* z!r~4?q`&%{0KCTgKF~rCA$UOyU~xFyPai@Mc=_k>2l@suU|lJ}&SUy{Uy^_^exH*8 zhk(NXIY0qW0gM1OKm&k70HOov0S15>I1QWtSO8Xl4LAa@1029nfD?cL$AIGi7a#_3 z11A9%$4^t@_us!W5JQ9nzus5Bby;Zq!3>7W&~>oY*P+|sTd?`*qkrjNT96C=tLfv9 zPfz@p00#WA`|k|+?I!>Wz~{sG_4qBz!k-Vve@-7iFFqf~zr`=(AD#dBd;HhBH7oc{_x&#MH+%76-> z3S0%$0ChkE&;+yqd^$Q{>;UKi`hWpo2p9pzfC*pON%S=nhz{teJL`lQK%FM`0&&b4xUkCvan1`6;FbT+b38>mL{#8lIe* zo|*kRH@~pBzOlKry|atj+sAJg0YvoEX8mQ${%X7Ez;+Q56B7}W;kS!`&;uZ%BPKa6 zL`r{2i|o1!!wKQQLyU6KuL|oAbDh^-W4ht`nVgwhWb))Xe$&2h*>Bshd%tVT{<2~J zv0cLuB@qGGc|>&J0*ryJcSZ_q$?Tk46s@{5P3R}L^0cjVR5*u-mQ$Z2xP#HRy^mS_ zs;_Df1Y38eJ-`$-;GnR6Y%EC$=ehOtgOoF^{?U7@XgbV;uIShVBzw>SlQ(DFAMZpTOZ z*&J<4YG)uiLf6BGnvNPW1B(;keTakRhBeSfY?0`vW>>w(67os~9md`=%kw-c9btQ} zFSTTI^B7c=&7Jftf06Bh%fp9!uZPFK1do3idgq>&*AfzpP%{BwEVFvrF_jidJk9eISePySTAhv1{H1D;`2$niS(kr0u zeM4_ogJn-H$exKmH9_UT-4sv9y{1xB6jqem zz#Upa^V0TM6l;K7*+~cYCYYs#34fUN)!d}#SiOg@FFT2a`!e_(NmVJT6++Qor4^l2Ke!z2fXOn*-D3-^QV`e}qvrJlJ`cfDUYV44eL3BCTrx$HfLI|5< z^;}QSB1G8=(mx?{^!UZ z%;;fzCl@PO$h?1h0CexHBq9Z|qt{Ye{xV11nEzUOkzue+3rvW;WrJz(ScYYWek`zTulZQ0&8~lI@BZ9f-R@F*pO>MY{oUL#SLmHCh1qzh!-uxF zbCWbM=W);nF0_4O*YWGwgRzXzA>CPBD_3;nOY~-4ZmgY3V`Av=CH|+LmhLh}Q4FTC zd4W@%#HS#FtWVI<+Ac@?w*~M%6Ir1(aE@g?8Q+(8vpC%dYplmX1A~YKEvYv--w>0C zShkyk>lR^w;yCDWf@$RbdTD-4_bpLAzp@#z135XkDAPw1aSIkygABZ63hW4W;{~qj zlJFph$Av@bQIQzJ%8lE4lrp!C^RyJUPgbk0$bKEnaf`{Adbw*b^Z1BozY#%i8aWLl zh6<7GImEFDj{9-B91Rab=~!;}4bBvy#8G$R%+0Lh>qM#|O8X}73wG0NEsx7q5MwWH z7i40)>k*wO#Dprk17>NkXEAzfZ`}6I=N{oZW?F#BJx0Pyqo4= zp%yhJY(Gy)pC#nTA6OED*djnLQ7Ty8i(^YS7ArnbEzj0U)p_ny@J*u9L3NSgTu)7V z1IAHycWEpCUAvg^d*h?8HLX~Cqg(RrpBEoyPP4w1uJICM^KJ0X%tY9M!6i(#E!d$^ z`tdNKdcJe&B~I2mPn|U5jwE!BAza)(!Ztr4#?x`okvS0xzpBK?2PZO)TRbD!*uY}o z&80Y~)ImlAvuE7!IZX6La6%+eV_|cS>57y_XLJj1*22EyJT3~8-A0H`$Z;s<24yUzz`kjkd@iliE*zoyi928)1Vbkji zKh2}uAYHrD#;-+fFw1)S=ZJd6KJ$Jf-(SxRI}fyOu}hX#wl zK{K_OLijMn9)3M!zV`c6IE-z?}yJc7?q_~0PZcDEadK%LK6g(q0?{b$A^`eB9D!=E;8lesexPq+$g z`rpAAiyu)kI##Km>8wS>`Q^2c&O8qeT6SileJ!gw+;ovQ(--4Iej)4IjHjx}@?3`vzjm(;fw=c+Ix?*^@CO~9F!q|WoqzDZSdzRS$8k>uzd9~*Vv9h(T$^QfR^Xe zB}RExV@y_*Sz+dT}Ucb@%wyNg< z96jgrdosKG*>654Qp%~0{8lyLA%N^DHLvcy6Ip8VCd!hM!bW_$SBwcTOYWA7iV zqA7|&A#V%udv%@iPWKQq^dH|8#rlug&%rjO##dyxus$4-J0oa2&(foe zr(|7Px1a7an0sKJPmS+0tk$lb1-V4z=O5qpBY*vsTmi{XBIfoFrm;3@`I)Jttk0+s zb166|-1+da*eR#rkf^r1>@kNVi2Y)wa{g*vw-N8LZ0k(pVRuwVR;V3#2GrwC9>#y2 zA{(zde1behg5%q#fDPzDDKG%3i+?pS(|7AEW+B4w3&^|NLIB{=?TlQPWccO$8jDb5j|mQyO$j-U;Sh5!h=`<~ zU#Xm|P!G;{R?7Q8b+A3b$MIRpY&z>+>-Oz|MVa(8X3;kzCYO)CtvOZLM5)3=cd<^7 zC;-IC4VFePC0@6)MzNk@WJ;|a8{%qxrDD3dJM_~@ia%fe&hX3mQwUC~-xI&V$Ibtp z;rGN}6+wb;zh?qJ#q9sx^g-6~y}bg2xPDXoQx{Bs5w{E{9nD)fa+y6fuzaxc6|I9!CcjTYbSPC>Nsv!&8Z9%`)E;ePb z<5+3=6~wvhkhh*=hpMdkH{!N%&^vF+AbCcEv9ID)MY-%FlaWJ_)-%pJA%)-bwi_U- zeHTQ%Z-X`%R}l5K2CaL}pd|_)|Ng18@clqFh*QIt7Jix94aC~S=f0wTPi z5wb@-6V^=N43_K)mUjE^E?@XB@ozSe%p zBx~4U9S7MYe@F@8Un(37iAZyDdH}yE^Oh#PX&@n^z~QO z@XLRF#rfOUs54+(8ITe>^XLxqg-YAH9Cz`^o$}!|$p8`ho=Of3E-H`$GLY z13rCx4vg=Y^jqt{kHNIdhkr^{;-}H?{`dE6e<4UM^5^u=eec2eyORgk5<&uUFgyM@ z{;k`O5By5vX8=PWa1RIq?gPQV1K=Tm?=v(A#vwo`5C((;5kMpm1w;ceKrHYChy&t* zr@%AdIq(8_2_yiCKoWoil7Ux13Xlq<0qH;nkO^b~*+34E3%myMfPA0;cmv?qu?UQd zffAq;CAA+ETx#oUJr^+2A2F%9m=v3Xn+s10+I}j(PKBH*I1((r@pjkG!fh*IfK6ZT z)m_*<*iCp_P2@kjJc2#_kB46(Eqq`yd<+pHlOK3&(MaG1dL-hnm)0N_BLt!>cA%PQ z^LIVV$YVh|mev__gT;$(bMV_7s0=O*^!77Hv9mjkDPpr-p0LgH zwG15>h~$w)jxl}QZYi>OY~BvzHACr4etqZ>h{E;VH>hY3lW22v@*(K8g!-zRfuf(B3ZVk_~1DGyX+kS;ltbPk1uMRwv5qi zdwg%?ohdps-?MP-1&lMV|81IQgVGviB|a`oCOz_zk$h=$HuOMDIlPGL*heV^L&;5c z+C-8&&1o~S$D7=xBbC=$-Y2TKkQ6*{)O*S8B%F-?gzW?UbI3a}wnpJ#%q_4yVmwiN$n5nSg0x!>?6fEOMzg*terz|8J_wEDgk;%# zC5}pqjH77B(a~2C!APpK8|{;>%BwpMKu3{~eV+qq}FqrbNXS4M*9VUzD%hjO8x$f z8pq-&oA>39YkZNqlF3b5QIOu0CgC*NRKHZB=O@=s^JWyu2j5l;OWw+t4~yGDtL`Yh zRBsy`;Y3!MBI|S;kZW0I2o6YUOH|RpMiRUn8~mMO5{W7jA`U8>CP{|3&(H?!_B=TZ z`;eM|Z1|Sc*KKCDFueNE!Ewd$dTmi$kU(2>XZg5; zIXci^CZ^anp z39QuDHKeThiBH9kt9Lt!u{z|X&2i@tb?(8^wbsR+W-f$$Qa@r16Kusn$x}I=Hag0s zf;_^5cU>=^hgBJXZm%VF#JAcfQGx}I);GyL0!!rC5rn&Z8cRBM&fLuLi#enNM8^ow zyxj$$|3+RV=(-aGy1*LezQ#cF)@dKq6ZUe%=5Lk?2kC@&m*>&3(S#q zVVpCkGh5mA1bOtZ^GbC%sOxldw|2$B?TP)B$Z-sEGo)1BFr?L9STfd&KTCpd@flZ7 zFw@PDQ-th@?Q-~b7h;}YuQYO-&MorGT{M+ZISw*$!$D?b*n6cWMxf(|XYEqv)&&L> zEV=)y=5)DnfiFQ(#fMfQQL^hzik2QOGEK{FMx{BIP8rUe&70#P7!~TtW|fWONl_}S z>_l%krViIcWK3pSE{hI{b82HWn67bp+eE}!Xo$ZlYe8>l?UNUFS;npm2T0rDpvm$G zN6^e7pwYN81xb_ci-_)2UG<1nJYkWRbG7+gH96yG=GWHgi1X(4sn1?pZhRBC+8Fi} z^m1EGy>rygoK#YihAXzy)IhF4BxYHWPe3ilP%b$9ei)fmfDk(P=9p)(vi`Zek~be) zcsiY#BhVq9jds{^zBdbe_R=a|LBmuBG`ulr|1Gw=0_?zQZvx5`NB?vVu6FIXgLV#kvtO3UI%6Ei9T zY4c}gsK1DBwaX4*$;qZ)J|;{QyviOppILhMBb9iyXjpI0AclM$6mSdw#}28o_KOX=f%9&vMV*{zC+ z9k$i}S~wTx9oqTpDB`AVQ2U2T4G!|cEbJF^@xs9LBmOTMMMoKBpQkR~l@4A>@!JiH zpN`eEm>C@1YI!mwQ)Mvswj9mK)gt^9He_r#Eaumv`Tf0te(Zzpk~f6W@00cz&m2|V zf|Wl0+eOV^%6~zBkn*3>pXI;*E#<#`im8DBxUEKr1-k(H^dyYV)`Akta4Ey&3*x;- z=ECPrFDc>49DY%2J}Nr(fQ}N*a5ug6p`vD2#D$fTe6{;$x~zzN>T^#qrLy7*d5p631MU zP^3+n5e4}IyNSZ*#>H8y%w0+Z**&@6OiO#eutRO^hAn&+8Wbb0xk}bK)=IQZ6s7p~ z@VKs&VIfb}N4^s%IUA}&u^vxZ*+WQAZxgS~5y{qv^uAda{$d|(+wBQ@!GE~4nHKDx zg7B-Du;Hpj!LiJgQ?n_OzP_jK;vlt1x6=g0VF(Z29&xtCD`n>A`UQJgMRXH#zRE{z zQ=H}wJ}T5nmJjjvL@8=uVlBa4Bknk8cLDJ}a``1}ZxdWCYgMsK(U^h);?}M}UmmF1 z)GDk@{Yy*4gBUd@6T=y+E-McrzHsNzB$r;RJ9FbBVF9-hR)e7Hbz&`M-(oGx@pYa+ zFJpJi#D)u_)(m3&ioTA$|1kxLwRJuULhY5qb>hU7lyk8WQr=PY8nkw0g(XkR&e?tr zgL*pH*dqKjbs0vowY0yK9j$t5bm9=Jr@O)pXH9{3inZe{pkH*(;$yNM)42n}i=2lK z%bLP@+tg{=ksn2tsJu6Io+vts%w3PEcN}}9>5|}e`JDpXxUVm+wrEw>5}SU2D7rQ4 z*Mi_`^SyXS@L|`j-KxIX8ZGm)qAfRqyaUpo6uR_^(wGMI-=fF7{RhZRbv^TMpR>I&R*-2wMDxZ~B{_gm_MV|K! zM@%yY*sgC5H;ilRCA+ zA?*A}kEd$A6wm?iaLH6K;kE>P$8Vr-6e%cEeE1lS#85K*bJi7$FefZ*)aThp_=bpiEOo-#VmPlb#m5lA`41wwTz=|LYKyB7V=r+C$2u5 zptPE+-O5N*IQZHeCrIFOFu&J2SL?K3tY@PA!pA{&%Kn!BXO|-^NX8YJz!joLB{mn=Mb5~M zx!emoXMnLuH!eb1OcoqYU%|#@zAgQH?^4Z}+OdPQJ2qUED_^QrvU3q1&Te8WYO(ij zLEVTM78}rCUk6kGm~LupJ8WGr0o})=%#aut4Ggi~b9i5QR~OMQM-2X`Ii0r~yM&>V zd@=4NTMPb{laYu2#yj`H?K}I2bMNZtI5>?pmm@eUP(zM+w0semK)Vy#$A{B0uisI_|`?14B}#^IAp zckdR!pU#BM=W0H9i-SZxEQTc!Xp9MByeaiSQ3KR=bDa)QC0d%dV1M~T&Op^`m#hQ! zh0SsahOt9+TQmGx@({D}Ysb8uN)gmEOQ&d84w&hz0W8l5`?&|)#IeI30MKvz)ipgxCPh(c7Q!_8^Et?2pBs7 z&VUQx3b+AxfV+S@-~o67UVt~?1NZ`dfIol$0)Rj8{o~u?VaVdS6^8Zc>9w^PPAMnI zm+7H;c}=L!+6>}mlG(@7yb=4u+%H`Vxy$1ja~)a-ZGA7o=@Ao2F`gXxc!xKR5T}&G?n^cLHnERV(A2(#&cB!C8>msH zEVhG_-=#UsEi@ZzP~9^dV=zs4vh>BZHVN*+%XRMyrB$7#%#^9p-;M_wntuv&p}Wk+ zKk$`{VsJ9jmrzYiYh5rTxw=y6Ec)E>@HN@bz8@wCHXpF7cT@XpF%g^dt^0od#$wL! zq1oN;>h!ll>1Eg$I*4;Lz{#&_X}KTVnRLkAI{Ii@n6yO|m$ut(w*O+Gl4!>SP z(tk0Qw&x8@JfcX~EXL)?DOr$?-E!lVE=N9@VOB4Q{=21!NmL$<*z4a)pyi<0`~wyzE@|!Tq4WD#Pd7VCmU= zodgdw6t%@i=JFNU7Le-xPllv5JSeY^>wo@C?cDC1%yD=1;!%+*>las+%k*aglsL6F z_YKJIPE|i*)=WBLWUZ-^Rp|Fxk?1S54Yx4WuU|j9=KN5%n<##erPDP21MAWNx63y^ z3LHecq?X!#H`7j%F@jC+WYY955ihUXS;RwbZQHjGYC5znI8ZSXqTuE_s%u^xkoVhWjy>;AW3{K$#cKEq&iZ)`D8}0pAA)7xtm{1oAni29{al# z(Y+i&yRM49LG^Po0}r^~Jm_k%ceB4M8Nd@Wv}+SvlB7;!(O;u8-SQA^fS5e6wTvIv zTw5w3xYHEjChD7SB6Mw=syBL*#;y&6thq4t(#(8sE1EO-)yZBBH+!F>tuJovR=#Hw z=OCSjhgtO)m|fYH$-%Okf1OY!6tWd}T0V%Es9*e8KQF=If0r!QNrZy^GDirD8&Rei z)BAhpBqr7xj%skYX*ap~@l@w4&e^d>7)qyw_&DpIr;|_`Nnsw_e0TKOIiee9y_Y<^ zj_Z34^T=p@;P!J?N=x^!r^-9)^3pQI$L(m1Dvw@VZLwnqHL0-AwYdU~j?%4hmXWcK zG9~@Hg=Qv258K1)O*vMq_q=K0)DKFx1g(vy6^ykR8Dl1;<533w!Bte@ZjNn*dsXYvG(4s$0d7&n0r*g z?PUXZt&gYi-XOI2wxY*D{w<}Zm)@FYCtJ^@8pEV3COz?OE1%|SQ6!dGFnpHz4O!xA zj<#Xl?p15$sH1J;qKpL1LgTCCDo7gP0ZZYxakL;Gt$ID+5V|0<(9AZ&)zwxNDwJJ^`v{y=xwSN`D}&~%;{s9 zwB2RCpzr>|q3%IHYr`oL|4%)H!tg*Zr-pq4w%kDznfFgi%iMNu(_`7*CM<7K&yMCb ztIMj_Fno}{lRKir;`lJR!HFo%74zKEl?eJkbQ<1YIi$8aA_#>{yz-#H2C{uKu z(&tC^uiZ6L+6cYYdK|QMdUa4Opx0NcQNiPn24p?npFV$gPH5Ema{{t1l=#Hig| z*ne!YP>c{Rc;bB3l>jM-se>0x>%Ze=y$cWOBpR!EWktVCt~qO#K<`YWDY?D7XuQcF z^YYg^;7*<4>rO=gYQx&!%X*&1QvV&B=5j9cv3N99dui4|uTK zdvK0GNqkNM2k8xPxS{v*Sg{kCnj}OSqgKcj)xzk=Y8nuI7=XWjF>KZ#JDF=Pc*dET z!$}qr}@>44;sofZ|RuS=e!#~p;~lBuhL>zJFuIxCR~EEkUg9)NEPUN|v>akHB3~Z4 zr_66&eSMnZBk8Blt=Wa9Bv!ZX#f)`y(?FI-C6+3#r4%;lIT!E?tn3}1eC17By}DOi zRy=U$;&c2`3g7n>KR*u54{&}^lQv(e7 zO9ssTC+?KJi_T*`O&;x)9h-n|6K|IElkq&2ODw;(YtUCvg8Fh`P^ueY@g*ILkORm4W}a)zj8TFSCTqdSEE zC2fIP?qEkw4O>g+YtMlXvDRP9*lnBHiW3k6lG_+ngQ$ga!~)oXX>kV)81o+Fp3N?z zWAW5$=jd7Wm0BG>^42A{Us@A>>Qf>NDw!1cnx-?aGrp&$8+h*3ZSWi`YtRSfZ{Hb& zp95d_{H6Z6O8Cd9fBwIA|BldqLH|QgCHc#M---WhpaAub1F*mFgYbVr`uHP<2EeZb zewqJlU;*i8{G9&z|AO@Yvhlw$eJ+sx6SAMyQsloNeQK~MI^ef%|7DQA&iB9$sAvB9 z{Ib9IWVV0y{IV?vv8FPA;Un*=r#`lhH|B|?C(iNhII>0xoKvW)s3SVcpVnP#TN}EN zK9rXc$CGY%{1Vf06#s?y4(wLE9Pz9YyRRdMA71XU#AI)U-sxG<{(?#IsfcHyaBec- zxfCWLn|Wb(th7Wle*F@$G9}$HrRi|FoKvh2K^^3tO!IRF`b+-z;t!Jl{dxb@kMXxZ zbo_+?<^CWdu*~6wP0b|3@G{{UgMmRsQUM@V}-10fw^Z?V8`c z5|8tvp@9#gk4ObP8quV!);(>WC@gueqcZzQ_b&p&x?8@ z;=Wsgr5E~Qe#w`{h-}$c_LR4qRHy9DuW1woF?t?fVBV}mNKg*4>yp`wdJGg#+RXq4fWHdvT@7ASOnRYpUMx*DU zdChgcH34DDgB^9uXHAGJKXhK>zq24#Z0-=%dh}JRAZI$ydX(hZ`f+&E>ay6yI--L9 zr`(QXKIj1*T-c*fF^-LzFxwW2(qmVj(J-RJyd(UHfYbsk~t*X04KAQOB z@dpeKZVlQ{1V(XCI*T`XQ~g+JTuz!Sv`{mtT^>=3q#i#hR7veWzng2~B(XQKfN2=m z%vgYL;Gaj8e;Rbb3@N`#-gLI;&@EC@VNGO#_eDXky$MbvKWs@qE1A5}Y-Vzz*>g_= zmPg_wB@MfSAXpl&RVkK-bfTTwXwIr$+hY@8r;BhyTWIvB>h@jQ%P77c@fozm59P{* zJY|oVK2Cq=X*-`)%O}liHp57HCOPt7HR0Ng{kZ0k?GJ0FCxYC=Kb>oU5plbe; z7u5_qF-t>YGc{z%@y=)VavJtOECQcAY%PA?25Tvaz>@Hy24I+6@Ekk%Q`qiyZFA&` z$@m_+0@UmCup$J5zfKJVTaLgd1-d%X&ET*^lWVN!!w>X#v52$q)g?qYY`DC3bI%2I z6gENMA_C8n`>SonCyLl&1MSair{T>NLl;cO1!{YE=Ml5Hh;V1o{kX4Z9}Z`}Z{3JI zx4sdP(9gu@BN`XZMQu5XPZWIB=Rsrjgf3!Q@2&>(t?&%9z}E{i&n#H0)cti<&Bbi9 zzp&gM>+s@wPNOkSV;u1nJGU$bU!cb{W6v-09kn-6YtH_%|MPRj{`STGKYwZo?klkX zPp|&*Zj=9b0to)9kFVcA0>|0^e*H0`m+eNR^Yxt6vm$$8euI82zr70o@B%0I(cT^K* z#zoc7C%CPSjC4Qcc7J1GvMm%l8J<#FziHXn!7;_7Eqg`%)#hh1?%fM?D6N|}&z>bD znw=rOq2BBc6}k?d>`?F_=&mB7PD-`eDXEX0Ix!cF2-UXq0AhrAIJIvFS(>kF^f_8N9S zi^xAWTVthF?~jU@E6+@KhYiPjb`DRpVD7-CRqnE16n4DMVe_0!#kX+zY`Mf0l#MON zhRR8~j!%PDuBkHqW+-$ElL{iZKVI_8BOW8la|!1a8pKU0112m3oB3-abe|J7FV1@l zCj{x0{_4^w#anUPP19`Y(3?k2c`>~TftL2#9kN<| z({ZB*mih;knnEi*T%$=P5S9BHa$AQwQ4ii6nE!=|xaCxbIA4N)si`fc%CwQhs4}6P zf3kn6T}SK65xEP*m1BXATd!3dEewHd2b{>zMbE&sR0nOVQ0b{IU8$(v)+51&?nIcMQjQlA_|xLxUpqhFEnG|H7` zNoBw)iMxzrmw5dmn?Qj%1a}kayq4Xvr2k^W{w2jamm}d=$2l^)62}n_dgGN{GLfaB z>8C0+r}CmFrMnR2V%)QM9v&V@PCOqv<&bR#->&`S)O10|(3 zu`A4=xi~;vf^7Ea+e6~JE#6R5sPgBQwz6^}0=JiBY)gTONQ+F)QYZDK9>vnr4m+qR z3B*|`WrL(S^3+&^mratF>Kw%VmfenU`XS<|rdD{)tzwcI91owMLz>I@+)1X8^gydq zhO>82dXlXODLqW`9F;)xO@5vs;<>`4(qqw`Z{ljC$bL+lA|;z`#&WOkS;3thjj8(XFocSMkzpW((%!^>;a%R-YM1U3rVx2In?A+LuaY#JhW zSdyNiN}Dobr1*_H(NVvB{WQrd{@PxtyU*Cm#Mo9t=5*9+Ux-^p zYSljAqMtf-?>6ih2mSqnZH#!PV)~-0q%tNuTQa;l^@L18MCG3F`Eg>O8v&B=< zt>pXOGpk&^CzVR(GXfkoW^X#Q1SU)>am*!PnVcNvK=CWj=A->7qnG%OXEBoM z#=$BSZo-mC;6JTCWQ(u@w@a1o^%|53884K-ehwZk&pX&BP@WWvE&0k2N`Zq!l*oq0 z**6z1vdL{WJRngWyKwd_vDV?|C7WlbOI9z^w3Hea_MycxKV@{(nJA%2gEXv` zTDS!nM-Zr;AZ%p;Xbn_>hOq-dnA)~C7ud&G7h^u2P2Mp$)3rK0bz&4L;Nh&UzWP*p zW?j3VI<4vM*~2i&E%3bWE;3`M^EgOwfCxL(0`9BnY1;VKIXu^r(YUqmf1&x6^d_1c zA^A8lK>UVKg4=Ql!3cYoQq#=DH5~L&1P4*~NgJmL| z6boPHynv%Ndf`iBIPmm>fBdwo|6G3ks@Km4ohAC92?p&e{5eh~fl)BpZEWb|NJzqS1%6r>;dbNh$bzn}j1-=D%a zC;is+%R&0v-*2JEe*^#i@UMRVzfLg_tjj$h2)GXf0}p_Qz$4%>fbVly2F77PI1m9u z0#QIT5Cg;lPk=Ze9(W2o1D*pffR{i5kO(9JNFW(_1*8C}KpKz^WB{2!7LX0(0J*?x zAP>j~3V=62Ay5Pq10_HyfL~v{3h=rTr~;~i8sIJP4yXm{fO_CP&;T?7O+Yiy0(<~k zfi~bH@Cj%KI)F}~3-}Cl13f@5&Vd;#$5_y5B1+kb`$_x<;m z{)}J$uW7$I7*Xx65j}gX*iX5AD?fXd-KbA*E%ny1;FhcIU#pbfF&is>y*a5;UAd;3M%L*ECq;Xmp%p$%EUfSxKJ1!J#1ZvM33d^|_eLbNi-Ul-Evzs$M=f4@ z+M~6_ye4`z(CDDrWKGcgDse(--I`fJ>OL8?B}kj_J#I{@M7H7Tx6jn&g`s@0s3SW3`6>JxHT0^ zKSqNM!iQ}Yu@|P+$4yJ~-iXmh@jkg$xe(o?m~JO#pPPU7CTrrM#s?+Gb~;h2ci{V! z3pfbHh@4gg%VNVp&%Ote@ljw9s{M7y7TX7II6{7mJlG$fzIgQEe@dAW2Yvb;b;iem zr$H&+2{E@Zjm4IuKL0v^93VyWJy|LcxkfR;P@lmsbT~c)-P01`IEXM7Z66-1_jY3h zBkcbWYg~>RAacq!zcKHZ<9h~qYLfm(ee^hD~`PE%Yzr=ro{*3?r`TWfP+2>~-d~J|lTd7py z?KN4E_iYXvQO|j%6?N`n%SY@{dkaOBUxr;gzn8to*WuCgA8IQ+y@aJ;PhF!w(sf?r zTNZP=wQyv?d!>yvc6ZIJ@wkMhzvfNKni$#nd7o>2196(jEg9RL)24Y-=rP1XfdwL6 z|`{QuS`r{j(n%>*lRw#>GSan|cjWl7x&*u}KSS@zA zG$bY6E1&9iNZ@+;v5)ub;6P;a#R>G6@eU*=*6AV4v3jqL7?X#pYvEWQKu>5+vhjb@TN^pW?0@+&>p?oo_YbDkeXB4+3L-hK(9YA<|z*W|!eSMVj%(3f)~#T^P7SEpa4 zx3b^n8E-5XV)!NU+gbBN?^Yps6gUw`ZgOgGo6+VAIM%yja?9LZ2fV@E>rz~@$^z>UXVV&P`NiMLh zTIjvPJ!m$Zmc?BfqQf(cZ%+r<@N`PeCG#d z$HV+N^iE@0h7IS7lAl|hd+*%NPC4l;OcWSF##(Uchlb7k)^7rl0=*A{nBVYJnH^JO zy{CM{)B5~3x&jFfhVY7(_J@gjizxn=HAu{d~?GvY#_L%tl}W!fD_HgrIV~Z7^`f5&@{M3 z10Lst*zffNEu-@=5KIQWva<+lQZ+V^PY*KlT}&NAM514r$B9Ci``^x$j0lxr7TCXz ze3M`rRd(TxAABQGKMxv)`M!!|7a$7rJ&f(n;2=vWbLA5^J9^pz&aq>@@gFYmhYOo` zb`?zYb$cvi2)@}%y5gf&{-O~b^sRcMVRS?B!hC5H>W0bq7EJP^7XM7fT&1UxTX{^q zf*VpD+c&HwZ_HEl58AUYRFb_kH*R&x^~*a}xOr7*$_XX!=$J7wQ$TuW5=HE?$dWau z((ZW1O0`C$GtSkiuMmc-a^(IN_n`iDYzSED{5s9@@(L}}A>%<;O@Zy@) zshh5l_$F_7+Ugh`CJ+3wGb-ZtOuqlF`7~0F3i61i*h^7nwkBU>B{j<=>!pj{5?STf z#6d}|do*jW6FEjqhwcrKGf_9*`X;^72Gt7$cJ>$eCG}waUj&@-GJc5O(fEJ}=F|sY zy-e%|Y*G)4Z?lH0DGsf`=N7UEjc(L#AkQl(^d#gf&PLdWe|DI`*40=Y(B2ZK4Ur#;#d!JXh>QT>J!P)(v?X?3^ zUPjMLkNb{a$6NqM4&7k?GaSJGXz)UXM#+YpF!iKbaH2`FKl~(3?VQp^D#`4uTM4^b zqJF64PpYcaD{{f!6OFBl)to~GP1rN_$Gjv44DKEr=N$U+zHeN5^t_zP*0^Zy5H<$& z;_ktIjq5f8QLg3P3UuN#$-zAmPFIJ2m+O(KV!SL){0FjB{ZVAp`#`*79RfqDh_KGQ zmW2pWd;{jb9oA_}T6pI{%qhi?1c2AeY6j_26U{&G-ResD?dGfSuh&Gqfof?L?=|3ZIF<<$@(>Qb8;9gj_aW$R zABp}1pP=;r{9-Ch%%5^P_j%3%Z9U%;r8~cB>ke?-iWNJ?_WY)s<-+0>@#@9lt6nOy?&8~XPFtvIOUFqE994l_}w2O-LA$F zrCrR-t2v&TK~KzH7%2WA{vwp?dK20L;Syt#R&UMgi_HyJ!)s|=uB*O3p+Ad1)`IKi;*Aw&c_~E#)H9xD z^cRbDE6T{QyTh$1FZCfUdHqH^w`)`6*QSL(h%lmC5W5NfQaxNbmu+Ldp<`g)-+tdq zO7P#C8h(?u|K{it4*gYs;x|4jA5{-AolKKgh4yZm30zx03q=zqsQ0s;lYGgVu^6h9&WLL;@u}D1K zE*M!C>s3{({wO0_Kj^rbH40?!l!R4CR)gVjBQZ7$r?;gAwJ*2LcTjo-qE`op0+yXO z7H%hQ7QQ!iq^KRxm$>@i{tVJ)^I{m5Pqf+Nk~TjXp4RZs9ulDv$jRHlIchZy$jKcy zjy`L``%K*LzE9|WK)Fv+om)Ct;a})o%Q4288bT6|ENWV-vgq!&qu`0Dq~wB~I6an! z?PCg$AYfhv3H);r`eId3!}BMsk0e3NCDP}F>{H3F0z-41!xZYSHEMeXWz%x?x{NyF z2em`Q=dcR}@I&X`y&al$(ss}>{6^YN^cnpfSoC$@Y%w2uKJS$6G9gNtN=J3LxDdI` zA+31m6SifgQTwsDq60w=yc56%WNzKd4@h)) zR_08bL8Lwvxe(sR2;CZHK7P*{XabZ=%cmv4RjW9*R0gTbLZrR&kw~h;+mYbLbO40TOnIN&w=*4hy^BG5zcYJ^|WQ)6_@xr5qr41$o!6(o+;D|z0# zDw<{H4mv3ew5fy2{5$Gc=(I4rH!5IM5IeHF6uY&d!v~zG9xOCA0?NBVQzp(2P+6F*J{BLweH@5xab);oV(e8PV5J*4Ab=2l zz!fm^8P^~!S*U8pTw;Gh%_A{@6dt0{C#%Qnc8OejsWdk4#e7KlTwtW)#$)!DxAhm{ zvC1C&M|(;f;zn)a#BlVI$n(?4WBS}F&O55<*{NQ%IX(zDA~NE5jq)WRtpcQRs58-a zNc^r01@BoD<9zwSx%J9PnW@NF5!&K10%_aW+SLyBVaw+PaD&dj;Rcn|e%knWJ3-07 zAfc*4;;IX|NW>L;P>^`bqZyd?OS9UB&svuZadgX*Wi2Oc^?qn@SC!*DMHOG)Thel4 zM@|zCnUC3nZ~O{kdRR>l11?pA*e2Yg5@w@{A*KhbeaFmbR--KIt!zf8x~yD~(LOSH6o{=ID#-&?=I`N8F6|A}2Ueyi1h%ug< z-J}$+`SzU7;qKRTLm1vuxRs&PNz`Qfl4I~1>I_gSZRNbGC*X}@p-s!fc+j2Db4&>) zRNY4JMwcZ8BKRQ#mE~?3mC-7ikM*OK6Gl(Nw*h2zBhA{CFnHzC)2MfDYenrngHr)x zL|q->shysBtX9b)Abp;ue5Ta`h>lhZU1)J;px$|TAy=l;EB;|PC-77HeA%y{T6rIM zu!?Wzb}YOYE)6pY3>=rs4iQK@ z)fN)0pVA+xq8JF?Ma#ZKeIBO+DU;mhXtd;Bju>4EC6^b()@>Tp${bl;?T^AaaL|h3 z)OVN|(5*s5hHxfmWRCqH=c=U#7id5}tUy3pf6)d00?oag)!3Tp6dqQ=G<4w$chRL(1D13)mPnkEk(eLu%=GuxeBrhpw zukn~**3}4w9rqem*oBL*QZ^towj8UmTm#HEE}tmOPQ804&Ii*E^L?^^zmv$)#Wg&I le9Q?Kg3VSFZX;IurXgTGOI_^`|G-iIXFls!#rW;nUja%O9sB?Q diff --git a/extras/map.fla b/extras/map.fla deleted file mode 100644 index 4808b91ba62caf6785c740ac6e1ae0595a7fdc3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62464 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 JYWKAB{{xMk_bdPa diff --git a/extras/mapmini.fla b/extras/mapmini.fla deleted file mode 100644 index fdc5076c869f949e48de354104921b0cd39283b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54784 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 KMNUMnLSTZoSuL9Y literal 0 HcmV?d00001 diff --git a/index.php b/index.php index b68d54a..08f4549 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,19 @@ >/", $dbsettings["prefix"]."_$1", $query)); + + if ($sqlquery == false) { + die(mysql_error() . "

" . $query); + } + + return $sqlquery; + +} + +function dorow($sqlquery, $force = "") { // Abstraction layer part deux. + + switch (mysql_num_rows($sqlquery)) { + + case 0: + $row = false; + break; + case 1: + if ($force == "") { + $row = mysql_fetch_assoc($sqlquery); + } else { + $temprow = mysql_fetch_assoc($sqlquery); + $row[$temprow[$force]] = $temprow; + } + break; + default: + if ($force == "") { + while ($temprow = mysql_fetch_assoc($sqlquery)) { + $row[] = $temprow; + } + } else { + while ($temprow = mysql_fetch_assoc($sqlquery)) { + $row[$temprow[$force]] = $temprow; + } + } + break; + + } + + return $row; + +} + +// Thanks to Predrag Supurovic from php.net for this function! +function dobatch($p_query) { + $query_split = preg_split ("/[;]+/", $p_query); + foreach ($query_split as $command_line) { + $command_line = trim($command_line); + if ($command_line != '') { + $query_result = doquery($command_line); + if ($query_result == 0) { + break; + } + } + } + return $query_result; +} + +/***** DONE WITH ALL THE SETUP STUFF, SO ACTUALLY START INSTALLING. *****/ + +function one() { + + // Test file permissions. + $botcheck = false; + $f = fopen("images/botcheck/test.txt", "a"); + if ($f) { + if (fwrite($f,"test")) { + $botcheck = true; + fclose($f); + unlink("images/botcheck/test.txt"); + } + } + $users = false; + $f = fopen("images/users/test.txt", "a"); + if ($f) { + if (fwrite($f,"test")) { + $users = true; + fclose($f); + unlink("images/users/test.txt"); + } + } + + // Display status. + if ($botcheck) { $botcheck = "Pass"; } else { $botcheck = "Fail"; } + if ($users) { $users = "Pass"; } else { $users = "Fail"; } + if (MYSQLRESULT) { $mysqlresult = "Pass"; } else { $mysqlresult = "Fail"; } + if (DBRESULT) { $dbresult = "Pass"; } else { $dbresult = "Fail"; } + + // Done. Show page. +$page = << + + Dragon Scourge :: Installation (Step 1) + + +
+
+ +

Dragon Scourge :: Installation (Step 1)

+
    +
  1. Verify Settings
  2. +
  3. Install Database
  4. +
  5. Primary Game Settings
  6. +
  7. Create Admin User
  8. +
+ + + + + + + +
Verify Settings
MySQL Connection$mysqlresult
MySQL Database$dbresult
File Permissions: /images/users/$users
File Permissions: /images/botcheck/$botcheck


+ + If any of the above settings display Fail, please go back and make sure everything is correct.

+ For failures on either MySQL Connection or MySQL Database, please ensure that you have inserted the correct values for your server configuration into config.php, and make sure that the database to which you will be installing Dragon Scourge already exists on your server.

+ For failures on either of the two File Permissions settings, make sure that the appropriate folders have been CHMODed to 0777 (on Unix/Linux servers), or are not set to read-only (on Windows servers). If you need help with this, click here for tutorials on how to do this in several major FTP clients.

+ Once you have checked all the appropriate settings, reload this page and make sure that all four tests indicate Pass before continuing.

+ Once all tests pass, click the link below to continue to step two.

+ + Continue to Step Two: Install Database
+ Installing the database may take several seconds. Please click the link only once. + +
+
+ +THEVERYENDOFYOU; +die($page); + +} + +function two() { + + $installsql = file_get_contents("install.sql"); + $status = dobatch($installsql); + +$page = << + + Dragon Scourge :: Installation (Step 2) + + +
+
+ +

Dragon Scourge :: Installation (Step 2)

+
    +
  1. Verify Settings
  2. +
  3. Install Database
  4. +
  5. Primary Game Settings
  6. +
  7. Create Admin User
  8. +
+ + The database installation is now complete. Click the link below to set up your initial game settings.

+ + Continue to Step Three: Primary Game Settings + +
+
+ +THEVERYENDOFYOU; +die($page); + +} + +function three() { + + // Path stuff. Easy. + $gamepath = str_replace("install.php","",__FILE__); + $gamepath = str_replace("\\","/",$gamepath); + $avatarpath = $gamepath . "images/users/"; + $gameurl = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"]; + $gameurl = str_replace("install.php","",$gameurl); + $avatarurl = $gameurl . "images/users/"; + + +$page = << + + Dragon Scourge :: Installation (Step 3) + + +
+
+ +

Dragon Scourge :: Installation (Step 3)

+
    +
  1. Verify Settings
  2. +
  3. Install Database
  4. +
  5. Primary Game Settings
  6. +
  7. Create Admin User
  8. +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Game Name
The name of your game. Used in page titles and when sending email to new users.

Game Path
The full server path to your game. If you don't know this, please ask your host for assistance.

Game URL
The full URL to your game.

Forum URL
If you have a support forum for your game, enter its URL here - otherwise leave blank to disable this link.

Avatar Path
The full server path to your avatar uploads folder.

Avatar URL
The full URL to your avatar uploads folder.

Avatar Max Filesize
Enter the maximum file size (in bytes) for uploaded avatars.
Range: 0 to 4294967295.


Show Babblebox? Yes
Enables the Babblebox iframe in the right panel.

Show Who's Online? Yes
Enables the Who's Online listing in the right panel.

Show SigBot URL? Yes
The SigBot allows users to display their character stats in forum signature images. This setting only controls whether SigBot URLs are displayed on the Characters page. To disable SigBot completely, remove the file .htaccess from your game installation folder.

Admin's Email
This is the game owner's email address, used when sending email to new users.

Enable Email Functions? Yes
Sends a verification letter to anyone who registers an account, to enforce valid email addresses. Also allows users to request new passwords if they lose/forget theirs.
NOTE: Some Windows servers may have issues if their php.ini settings are improperly configured. If you're on a Windows host and get a lot of email sending errors, disable this setting or contact your host for more information.


Enable ZLib Compression? Yes
Enables ZLib output compression, which reduces bandwidth and speeds up page access time for end-users.

Enable Debug Info? Yes
Displays extra information (query count & page generation time) in the footer, and displays full MySQL query errors if they occur.

Bot Check
Bot Check ensures that players are human by displaying a CAPTCHA challenge form every so often (random 1 in n chance) during exploring. Higher numbers show the Bot Check less often, but may not be as secure. Lower numbers will show the bot check more often, but may annoy some users. Enter 0 to disable the bot check completely.
Range: 0 to 4294967295.
Recommended: 255.


PVP Refresh Time
The amount of time (in seconds) the mini PVP frame should wait before refreshing itself to check for new data. Low numbers may cause strain on your server if you have a lot of concurrent users.
Range: 0 to 4294967295.


PVP Timeout Limit
The amount of time (in seconds) it takes for someone to remain inactive and cause the PVP battle to close.
Range: 0 to 4294967295.


Guild Startup Cost
The amount of gold it takes for a player to start their own Guild.
Range: 0 to 4294967295.


Guild Start Level
The minimum level a player must reach before being allowed to start a Guild.
Range: 0 to 4294967295.


Guild Join Level
The minimum level a player must reach before being allowed to join a Guild.
Range: 0 to 4294967295.


Guild Update Time
The amount of time (in hours) before automatically recalculating Guild Honor Points.
Range: 0 to 4294967295.


+
+
+ + +
+
+ +THEVERYENDOFYOU; +die($page); + +} + +function four() { + + // Check for errors. + $requires = array("gamename","gamepath","gameurl","avatarpath","avatarurl","avatarmaxsize","adminemail","botcheck","pvprefresh","pvptimeout","guildstartup","guildstartlvl","guildjoinlvl","guildupdate"); + $numerics = array("avatarmaxsize","botcheck","pvprefresh","pvptimeout","guildstartup","guildstartlvl","guildjoinlvl","guildupdate"); + $toggles = array("showshout","showonline","showsigbot","verifyemail","compression","debug"); + $errors = ""; + foreach($requires as $a => $b) { + if (!isset($_POST[$b]) || trim($_POST[$b])=="") { $errors .= "$b field is required.
"; } + } + foreach($numerics as $a => $b) { + if (!is_numeric($_POST[$b])) { $errors .= "$b field must contain numbers only.
"; } + } + if ($errors != "") { die("The following errors occurred. Please go back and correct these errors before continuing.

$errors"); } + + // Check toggles. + foreach($toggles as $a => $b) { + if (!isset($_POST[$b])) { $_POST[$b] = "0"; } + } + + // No errors, so set up the table. + extract($_POST); + doquery("INSERT INTO <> SET + id='1', + gamename='$gamename', + gameopen='1', + gamepath='$gamepath', + gameurl='$gameurl', + forumurl='$forumurl', + avatarpath='$avatarpath', + avatarurl='$avatarurl', + avatarmaxsize='$avatarmaxsize', + cookiename='scourge', + cookiedomain='', + showshout='$showshout', + showonline='$showonline', + showitemimages='1', + showmonsterimages='0', + showsigbot='$showsigbot', + adminemail='$adminemail', + verifyemail='$verifyemail', + compression='$compression', + debug='$debug', + botcheck='$botcheck', + moddedby='', + pvprefresh='$pvprefresh', + pvptimeout='$pvptimeout', + guildstartup='$guildstartup', + guildstartlvl='$guildstartlvl', + guildjoinlvl='$guildjoinlvl', + guildupdate='$guildupdate' + "); + + // Done with the controlrow creator. Now show admin user creation form.' +$page = << + + Dragon Scourge :: Installation (Step 4) + + +
+
+ +

Dragon Scourge :: Installation (Step 4)

+
    +
  1. Verify Settings
  2. +
  3. Install Database
  4. +
  5. Primary Game Settings
  6. +
  7. Create Admin User
  8. +
+ +
+ + + + + +
Username

Password

Email Address

+ +
+
+ +
+
+ +THEVERYENDOFYOU; +die($page); +} + +function five() { + + // Check for errors. + $requires = array("username","password","emailaddress"); + $errors = ""; + foreach($requires as $a => $b) { + if (!isset($_POST[$b]) || trim($_POST[$b])=="") { $errors .= "$b field is required.
"; } + } + if ($errors != "") { die("The following errors occurred. Please go back and correct these errors before continuing.

$errors"); } + + // No errors, so set up the table. + extract($_POST); + $password = md5($password); + + doquery("INSERT INTO <> SET + id='1', + username='$username', + password='$password', + emailaddress='$emailaddress', + verifycode='1', + regdate=NOW(), + regip='".$_SERVER["REMOTE_ADDR"]."', + authlevel='255', + language='English', + characters='0', + activechar='0', + imageformat='.png', + minimap='1' + "); + + // Done with the controlrow creator. Now show admin user creation form.' +$page = << + + Dragon Scourge :: Installation Complete + + +
+
+ +

Dragon Scourge :: Installation Complete

+ Dragon Scourge Installation has now completed. Congratulations.

+ For security reasons, please delete install.php and install.sql from your game directory at this time!

+ Click here to log into your game for the first time. Once you log in, you will be asked to create your first Character. + +
+
+ +THEVERYENDOFYOU; +die($page); +} + +?> \ No newline at end of file diff --git a/extras/install.sql b/install.sql similarity index 88% rename from extras/install.sql rename to install.sql index 3f99d70..3670b99 100644 --- a/extras/install.sql +++ b/install.sql @@ -1,22 +1,5 @@ --- phpMyAdmin SQL Dump --- version 2.8.0.4 --- http://www.phpmyadmin.net --- --- Host: localhost --- Generation Time: Aug 09, 2006 at 09:29 PM --- Server version: 4.1.14 --- PHP Version: 5.0.5 --- --- Database: `scourge2` --- - --- -------------------------------------------------------- - --- --- Table structure for table `sx_accounts` --- - -CREATE TABLE `sx_accounts` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `username` varchar(30) NOT NULL default '', `password` varchar(32) NOT NULL default '', @@ -31,19 +14,10 @@ CREATE TABLE `sx_accounts` ( `imageformat` varchar(4) NOT NULL default '0', `minimap` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_accounts` --- - --- -------------------------------------------------------- - --- --- Table structure for table `sx_babblebox` --- - -CREATE TABLE `sx_babblebox` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(11) unsigned NOT NULL auto_increment, `posttime` datetime NOT NULL default '0000-00-00 00:00:00', `charname` varchar(30) NOT NULL default '', @@ -51,19 +25,10 @@ CREATE TABLE `sx_babblebox` ( `content` varchar(255) NOT NULL default '', `guild` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_babblebox` --- - --- -------------------------------------------------------- - --- --- Table structure for table `sx_classes` --- - -CREATE TABLE `sx_classes` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `expbonus` tinyint(3) unsigned NOT NULL default '0', @@ -74,23 +39,15 @@ CREATE TABLE `sx_classes` ( `mpperenergy` float unsigned NOT NULL default '0', `description` text NOT NULL, PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_classes` --- - -INSERT INTO `sx_classes` (`id`, `name`, `expbonus`, `goldbonus`, `damageperstrength`, `defenseperdex`, `hpperlife`, `mpperenergy`, `description`) VALUES (1, 'Barbarian', 0, 0, 3, 1, 2, 1, 'Barbarians specialize in physical damage. 3 damage per strength point, 1 defense per dexterity point, 2 hp per life point, 1 mp per energy point.'), +INSERT INTO `<>` (`id`, `name`, `expbonus`, `goldbonus`, `damageperstrength`, `defenseperdex`, `hpperlife`, `mpperenergy`, `description`) VALUES +(1, 'Barbarian', 0, 0, 3, 1, 2, 1, 'Barbarians specialize in physical damage. 3 damage per strength point, 1 defense per dexterity point, 2 hp per life point, 1 mp per energy point.'), (2, 'Sorceress', 0, 0, 1, 1, 2, 3, 'Sorceresses specialize in magical damage. 1 damage per strength point, 1 defense per dexterity point, 2 hp per life point, 3 mp per energy point.'), (3, 'Paladin', 0, 0, 1, 2, 3, 1, 'Paladins specialize in staying alive. 1 damage per strength point, 2 defense per dexterity point, 3 hp per life point, 1 mp per energy point.'); --- -------------------------------------------------------- - --- --- Table structure for table `sx_control` --- - -CREATE TABLE `sx_control` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `gamename` varchar(50) NOT NULL default '', `gameopen` tinyint(3) unsigned NOT NULL default '0', @@ -100,15 +57,19 @@ CREATE TABLE `sx_control` ( `avatarpath` varchar(200) NOT NULL default '', `avatarurl` varchar(200) NOT NULL default '', `avatarmaxsize` int(10) unsigned NOT NULL default '0', + `cookiename` varchar(255) NOT NULL default 'scourge', + `cookiedomain` varchar(255) NOT NULL default '', `showshout` tinyint(3) unsigned NOT NULL default '0', `showonline` tinyint(3) unsigned NOT NULL default '0', `showitemimages` tinyint(3) unsigned NOT NULL default '0', `showmonsterimages` tinyint(3) unsigned NOT NULL default '0', + `showsigbot` tinyint(3) unsigned NOT NULL default '0', `adminemail` varchar(200) NOT NULL default '', `verifyemail` tinyint(3) unsigned NOT NULL default '0', `compression` tinyint(3) unsigned NOT NULL default '0', `debug` tinyint(3) unsigned NOT NULL default '0', `botcheck` int(10) unsigned NOT NULL default '0', + `moddedby` text NOT NULL, `pvprefresh` int(10) unsigned NOT NULL default '0', `pvptimeout` int(10) unsigned NOT NULL default '0', `guildstartup` int(10) unsigned NOT NULL default '100000', @@ -116,21 +77,10 @@ CREATE TABLE `sx_control` ( `guildjoinlvl` int(10) unsigned NOT NULL default '0', `guildupdate` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_control` --- - -INSERT INTO `sx_control` (`id`, `gamename`, `gameopen`, `gamepath`, `gameurl`, `forumurl`, `avatarpath`, `avatarurl`, `avatarmaxsize`, `showshout`, `showonline`, `showitemimages`, `showmonsterimages`, `adminemail`, `verifyemail`, `compression`, `debug`, `botcheck`, `pvprefresh`, `pvptimeout`, `guildstartup`, `guildstartlvl`, `guildjoinlvl`, `guildupdate`) VALUES (1, 'Dragon Scourge', 1, '', '', '', '', '', 15000, 1, 1, 1, 0, '', 1, 1, 1, 255, 15, 45, 100000, 35, 10, 24); - --- -------------------------------------------------------- - --- --- Table structure for table `sx_difficulties` --- - -CREATE TABLE `sx_difficulties` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `expbonus` tinyint(3) unsigned NOT NULL default '0', @@ -138,42 +88,24 @@ CREATE TABLE `sx_difficulties` ( `multiplier` float NOT NULL default '0', `deathpenalty` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_difficulties` --- - -INSERT INTO `sx_difficulties` (`id`, `name`, `expbonus`, `goldbonus`, `multiplier`, `deathpenalty`) VALUES (1, 'Easy', 0, 0, 1, 0), +INSERT INTO `<>` (`id`, `name`, `expbonus`, `goldbonus`, `multiplier`, `deathpenalty`) VALUES +(1, 'Easy', 0, 0, 1, 0), (2, 'Medium', 3, 3, 1.5, 3), (3, 'Hard', 5, 5, 2, 7); --- -------------------------------------------------------- - --- --- Table structure for table `sx_guildapps` --- - -CREATE TABLE `sx_guildapps` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `guild` int(10) unsigned NOT NULL default '0', `charid` int(10) unsigned NOT NULL default '0', `charname` varchar(30) NOT NULL default '', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_guildapps` --- - - --- -------------------------------------------------------- - --- --- Table structure for table `sx_guilds` --- - -CREATE TABLE `sx_guilds` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `lastupdate` bigint(20) unsigned NOT NULL default '0', `name` varchar(50) NOT NULL default '', @@ -195,23 +127,14 @@ CREATE TABLE `sx_guilds` ( `statement` text NOT NULL, `news` text NOT NULL, PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_guilds` --- - --- -------------------------------------------------------- - --- --- Table structure for table `sx_itembase` --- - -CREATE TABLE `sx_itembase` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `slotnumber` tinyint(3) unsigned NOT NULL default '0', - `unique` tinyint(3) unsigned NOT NULL default '0', + `isunique` tinyint(3) unsigned NOT NULL default '0', `willdrop` tinyint(3) unsigned NOT NULL default '0', `buycost` int(10) unsigned NOT NULL default '0', `sellcost` int(10) unsigned NOT NULL default '0', @@ -234,13 +157,10 @@ CREATE TABLE `sx_itembase` ( `mod6name` varchar(50) NOT NULL default '', `mod6attr` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_itembase` --- - -INSERT INTO `sx_itembase` (`id`, `name`, `slotnumber`, `unique`, `willdrop`, `buycost`, `sellcost`, `reqlevel`, `reqstrength`, `reqdexterity`, `reqenergy`, `basename`, `baseattr`, `mod1name`, `mod1attr`, `mod2name`, `mod2attr`, `mod3name`, `mod3attr`, `mod4name`, `mod4attr`, `mod5name`, `mod5attr`, `mod6name`, `mod6attr`) VALUES (1, 'Pointy Stick', 1, 0, 1, 10, 5, 1, 0, 0, 0, 'physattack', 3, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0), +INSERT INTO `<>` (`id`, `name`, `slotnumber`, `isunique`, `willdrop`, `buycost`, `sellcost`, `reqlevel`, `reqstrength`, `reqdexterity`, `reqenergy`, `basename`, `baseattr`, `mod1name`, `mod1attr`, `mod2name`, `mod2attr`, `mod3name`, `mod3attr`, `mod4name`, `mod4attr`, `mod5name`, `mod5attr`, `mod6name`, `mod6attr`) VALUES +(1, 'Pointy Stick', 1, 0, 1, 10, 5, 1, 0, 0, 0, 'physattack', 3, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0), (2, 'Big Stick', 1, 0, 1, 15, 8, 1, 0, 0, 0, 'physattack', 4, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0), (3, 'Dagger', 1, 0, 1, 20, 10, 1, 0, 0, 0, 'physattack', 5, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0), (4, 'Hand Axe', 1, 0, 1, 30, 15, 1, 0, 0, 0, 'physattack', 7, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0), @@ -414,25 +334,17 @@ INSERT INTO `sx_itembase` (`id`, `name`, `slotnumber`, `unique`, `willdrop`, `bu (169, 'Titanium Horned Helm', 3, 0, 1, 50000, 25000, 85, 105, 126, 0, 'physdefense', 175, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0), (51, 'Giant Maul', 1, 0, 1, 38000, 19000, 83, 405, 0, 0, 'physattack', 400, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0); --- -------------------------------------------------------- - --- --- Table structure for table `sx_itemmodnames` --- - -CREATE TABLE `sx_itemmodnames` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `fieldname` varchar(50) NOT NULL default '', `prettyname` varchar(50) NOT NULL default '', `percent` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_itemmodnames` --- - -INSERT INTO `sx_itemmodnames` (`id`, `fieldname`, `prettyname`, `percent`) VALUES (1, 'expbonus', 'Experience Bonus', 1), +INSERT INTO `<>` (`id`, `fieldname`, `prettyname`, `percent`) VALUES +(1, 'expbonus', 'Experience Bonus', 1), (2, 'goldbonus', 'Gold Bonus', 1), (3, 'maxhp', 'Max HP', 0), (4, 'maxmp', 'Max MP', 0), @@ -453,13 +365,8 @@ INSERT INTO `sx_itemmodnames` (`id`, `fieldname`, `prettyname`, `percent`) VALUE (19, 'hpgain', 'HP Per Kill', 0), (20, 'mpgain', 'MP Per Kill', 0); --- -------------------------------------------------------- - --- --- Table structure for table `sx_itemprefixes` --- - -CREATE TABLE `sx_itemprefixes` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `slotnumber` tinyint(3) unsigned NOT NULL default '0', @@ -474,22 +381,14 @@ CREATE TABLE `sx_itemprefixes` ( `basename` varchar(50) NOT NULL default '', `baseattr` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_itemprefixes` --- - -INSERT INTO `sx_itemprefixes` (`id`, `name`, `slotnumber`, `unique`, `willdrop`, `buycost`, `sellcost`, `reqlevel`, `reqstrength`, `reqdexterity`, `reqenergy`, `basename`, `baseattr`) VALUES (1, 'Sharp', 1, 0, 0, 5, 3, 1, 0, 0, 0, 'physattack', 2), +INSERT INTO `<>` (`id`, `name`, `slotnumber`, `unique`, `willdrop`, `buycost`, `sellcost`, `reqlevel`, `reqstrength`, `reqdexterity`, `reqenergy`, `basename`, `baseattr`) VALUES +(1, 'Sharp', 1, 0, 0, 5, 3, 1, 0, 0, 0, 'physattack', 2), (2, 'Magic', 1, 0, 0, 8, 4, 1, 0, 0, 0, 'magicattack', 5); --- -------------------------------------------------------- - --- --- Table structure for table `sx_itemsuffixes` --- - -CREATE TABLE `sx_itemsuffixes` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', `slotnumber` tinyint(3) unsigned NOT NULL default '0', @@ -504,22 +403,14 @@ CREATE TABLE `sx_itemsuffixes` ( `basename` varchar(50) NOT NULL default '', `baseattr` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_itemsuffixes` --- - -INSERT INTO `sx_itemsuffixes` (`id`, `name`, `slotnumber`, `unique`, `willdrop`, `buycost`, `sellcost`, `reqlevel`, `reqstrength`, `reqdexterity`, `reqenergy`, `basename`, `baseattr`) VALUES (1, 'of the Vampire', 1, 0, 0, 5, 3, 1, 0, 0, 0, 'hpleech', 5), +INSERT INTO `<>` (`id`, `name`, `slotnumber`, `unique`, `willdrop`, `buycost`, `sellcost`, `reqlevel`, `reqstrength`, `reqdexterity`, `reqenergy`, `basename`, `baseattr`) VALUES +(1, 'of the Vampire', 1, 0, 0, 5, 3, 1, 0, 0, 0, 'hpleech', 5), (2, 'of the Bear', 1, 0, 0, 5, 3, 1, 0, 0, 0, 'strength', 5); --- -------------------------------------------------------- - --- --- Table structure for table `sx_messages` --- - -CREATE TABLE `sx_messages` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `postdate` datetime NOT NULL default '0000-00-00 00:00:00', `senderid` int(10) unsigned NOT NULL default '0', @@ -531,19 +422,10 @@ CREATE TABLE `sx_messages` ( `message` text NOT NULL, `gold` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_messages` --- - --- -------------------------------------------------------- - --- --- Table structure for table `sx_monsters` --- - -CREATE TABLE `sx_monsters` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(30) NOT NULL default '', `world` tinyint(3) unsigned NOT NULL default '0', @@ -567,13 +449,10 @@ CREATE TABLE `sx_monsters` ( `newstory` int(10) unsigned NOT NULL default '0', `hpleech` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_monsters` --- - -INSERT INTO `sx_monsters` (`id`, `name`, `world`, `level`, `maxexp`, `maxgold`, `maxhp`, `physattack`, `physdefense`, `magicattack`, `magicdefense`, `fireattack`, `firedefense`, `lightattack`, `lightdefense`, `spell1`, `spell2`, `spellimmune1`, `spellimmune2`, `boss`, `newstory`, `hpleech`) VALUES (1, 'Small Slime', 1, 1, 4, 2, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +INSERT INTO `<>` (`id`, `name`, `world`, `level`, `maxexp`, `maxgold`, `maxhp`, `physattack`, `physdefense`, `magicattack`, `magicdefense`, `fireattack`, `firedefense`, `lightattack`, `lightdefense`, `spell1`, `spell2`, `spellimmune1`, `spellimmune2`, `boss`, `newstory`, `hpleech`) VALUES +(1, 'Small Slime', 1, 1, 4, 2, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (2, 'Shade', 1, 1, 4, 2, 3, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (3, 'Slime', 1, 2, 4, 2, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (4, 'Small Drake', 1, 2, 4, 3, 4, 5, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), @@ -782,13 +661,8 @@ INSERT INTO `sx_monsters` (`id`, `name`, `world`, `level`, `maxexp`, `maxgold`, (208, 'Xiran', 5, 99, 1000, 1000, 1400, 1500, 1300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 18, 0), (209, 'Xiran', 5, 99, 5000, 5000, 1600, 1800, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 19, 0); --- -------------------------------------------------------- - --- --- Table structure for table `sx_pvp` --- - -CREATE TABLE `sx_pvp` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` bigint(20) unsigned NOT NULL auto_increment, `player1id` int(10) unsigned NOT NULL default '0', `player2id` int(10) unsigned NOT NULL default '0', @@ -799,20 +673,10 @@ CREATE TABLE `sx_pvp` ( `turntime` timestamp NOT NULL, `fightrow` text NOT NULL, PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_pvp` --- - - --- -------------------------------------------------------- - --- --- Table structure for table `sx_spells` --- - -CREATE TABLE `sx_spells` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(30) NOT NULL default '', `fname` varchar(30) NOT NULL default '', @@ -822,13 +686,10 @@ CREATE TABLE `sx_spells` ( `classonly` int(10) unsigned NOT NULL default '0', `classexclude` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_spells` --- - -INSERT INTO `sx_spells` (`id`, `name`, `fname`, `value`, `mp`, `minlevel`, `classonly`, `classexclude`) VALUES (1, 'Heal 1', 'heal', 5, 2, 5, 2, 0), +INSERT INTO `<>` (`id`, `name`, `fname`, `value`, `mp`, `minlevel`, `classonly`, `classexclude`) VALUES +(1, 'Heal 1', 'heal', 5, 2, 5, 2, 0), (2, 'Heal 2', 'heal', 10, 5, 10, 0, 0), (3, 'Heal 3', 'heal', 20, 10, 15, 0, 0), (4, 'Heal 4', 'heal', 30, 15, 20, 0, 0), @@ -883,34 +744,29 @@ INSERT INTO `sx_spells` (`id`, `name`, `fname`, `value`, `mp`, `minlevel`, `clas (53, 'Prismatic Blast 8', 'prism', 30, 50, 40, 0, 1), (54, 'Prismatic Blast 9', 'prism', 35, 65, 45, 0, 1), (55, 'Prismatic Blast 10', 'prism', 40, 80, 50, 0, 1), -(56, 'Stone Skin 1', 'stoneskin', 5, 5, 1, 0, 0), -(57, 'Stone Skin 2', 'stoneskin', 10, 10, 3, 0, 0), -(58, 'Stone Skin 3', 'stoneskin', 15, 15, 7, 0, 0), -(59, 'Stone Skin 4', 'stoneskin', 20, 20, 10, 0, 2), -(60, 'Stone Skin 5', 'stoneskin', 30, 30, 23, 0, 2), -(61, 'Stone Skin 6', 'stoneskin', 40, 45, 31, 0, 2), -(62, 'Stone Skin 7', 'stoneskin', 55, 65, 55, 1, 0), -(63, 'Stone Skin 8', 'stoneskin', 70, 100, 75, 1, 0), -(64, 'Stone Skin 9', 'stoneskin', 95, 200, 87, 1, 0), -(65, 'Stone Skin 10', 'stoneskin', 110, 350, 95, 1, 0), -(66, 'Blessed Strike 1', 'blessedstrike', 5, 5, 1, 0, 2), -(67, 'Blessed Strike 2', 'blessedstrike', 10, 10, 3, 0, 2), -(68, 'Blessed Strike 3', 'blessedstrike', 15, 15, 7, 0, 2), -(69, 'Blessed Strike 4', 'blessedstrike', 20, 20, 10, 0, 2), -(70, 'Blessed Strike 5', 'blessedstrike', 25, 30, 23, 0, 2), -(71, 'Blessed Strike 6', 'blessedstrike', 30, 45, 31, 0, 2), -(72, 'Blessed Strike 7', 'blessedstrike', 40, 65, 55, 1, 0), -(73, 'Blessed Strike 8', 'blessedstrike', 55, 100, 75, 1, 0), -(74, 'Blessed Strike 9', 'blessedstrike', 70, 200, 87, 1, 0), -(75, 'Blessed Strike 10', 'blessedstrike', 90, 350, 95, 1, 0); +(56, 'Stone Skin 1', 'bonusdefense', 5, 5, 1, 0, 0), +(57, 'Stone Skin 2', 'bonusdefense', 10, 10, 3, 0, 0), +(58, 'Stone Skin 3', 'bonusdefense', 15, 15, 7, 0, 0), +(59, 'Stone Skin 4', 'bonusdefense', 20, 20, 10, 0, 2), +(60, 'Stone Skin 5', 'bonusdefense', 30, 30, 23, 0, 2), +(61, 'Stone Skin 6', 'bonusdefense', 40, 45, 31, 0, 2), +(62, 'Stone Skin 7', 'bonusdefense', 55, 65, 55, 1, 0), +(63, 'Stone Skin 8', 'bonusdefense', 70, 100, 75, 1, 0), +(64, 'Stone Skin 9', 'bonusdefense', 95, 200, 87, 1, 0), +(65, 'Stone Skin 10', 'bonusdefense', 110, 350, 95, 1, 0), +(66, 'Blessed Strike 1', 'bonusattack', 5, 5, 1, 0, 2), +(67, 'Blessed Strike 2', 'bonusattack', 10, 10, 3, 0, 2), +(68, 'Blessed Strike 3', 'bonusattack', 15, 15, 7, 0, 2), +(69, 'Blessed Strike 4', 'bonusattack', 20, 20, 10, 0, 2), +(70, 'Blessed Strike 5', 'bonusattack', 25, 30, 23, 0, 2), +(71, 'Blessed Strike 6', 'bonusattack', 30, 45, 31, 0, 2), +(72, 'Blessed Strike 7', 'bonusattack', 40, 65, 55, 1, 0), +(73, 'Blessed Strike 8', 'bonusattack', 55, 100, 75, 1, 0), +(74, 'Blessed Strike 9', 'bonusattack', 70, 200, 87, 1, 0), +(75, 'Blessed Strike 10', 'bonusattack', 90, 350, 95, 1, 0); --- -------------------------------------------------------- - --- --- Table structure for table `sx_story` --- - -CREATE TABLE `sx_story` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `title` text NOT NULL, `story` text NOT NULL, @@ -927,15 +783,12 @@ CREATE TABLE `sx_story` ( `rewardname` varchar(30) NOT NULL default '', `rewardattr` int(11) NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_story` --- - -INSERT INTO `sx_story` (`id`, `title`, `story`, `world`, `latitude`, `longitude`, `nextstory`, `targetmonster`, `targetitem`, `targetworld`, `targetlat`, `targetlon`, `targetaction`, `rewardname`, `rewardattr`) VALUES (1, 'Prologue', 'The light has forsaken this land, and not for the first time. Centuries ago, it was overrun by darkness and then saved by a hero whose lifelong quest was to eradicate evil. The hero succeeded, and in the end, Lucifuge, King of the Dragons, was destroyed... at least for the time being. In the many long years since that time, Lucifuge has been gathering his forces and his power, and has finally regained enough of his former strength to return.\r\n\r\nSo the land is once again in need of a saviour. It will be no easy task, dear adventurer. In the last age, Lucifuge and his minions controlled but a small country. This time, he has sent his forces to sow chaos and darkness throughout the world. Only a brave adventurer will be able to conquer him and restore peace and order to the world.\r\n\r\nContinue on, dear adventurer. You shall be tested dearly, but the rewards will be great.', 1, 0, 0, 2, 0, '', 1, 0, 0, 'In Town', '', 0), -(2, 'Queen of Demons', 'You come to a great stone door, with the inscription ''RAZORA'' carved in the Language of the Fallen. Next to the door lie the skeletons of several dead warriors who failed to enter. One of the skeletons is holding a scrap of paper, which reads:\r\n\r\n"We finally made it. The legends are true, Razora does exist. As I write this, we are standing outside the demon queen''s throneroom. Something is following us, though, and has been for several days. We''re making camp tonight, and we''ll head inside in the morning. After the months of travelling, we definitely need our rest if we''re really preparing to face Razora. We''ve survived this far, surely whatever is following us will hold off one more night..."\r\n\r\nYou are now faced with a choice, dear adventurer. Are you ready to face the demon queen Razora, or do you still need more preparation?', 1, 100, -100, 0, 201, '', 0, 0, 0, 'Fighting', '', 0), -(3, 'Fallen Queen', 'Razora, the Demon Queen, lies dead at your feet. Even now, her body and all the black blood spilled from it are melting away into the nether. Soon, all that''s left is her heart, which you take with you as proof that you destroyed her.\r\n\r\nOne section of the wall crumbles and falls, and leads to a doorway, guarded by a large statue of an angel. In the angel''s hand is a sword with flames engraved in the blade.\r\n\r\nIt wouldn''t be too much trouble to take the sword, and it does seem like your right to take it, after all the trouble you went through to kill Razora. You can now take the sword and continue through the doorway, or just continue on without it.', 1, 100, -100, 4, 0, '0,170,0', 2, 0, 0, 'Exploring', 'maxhp', 50), +INSERT INTO `<>` (`id`, `title`, `story`, `world`, `latitude`, `longitude`, `nextstory`, `targetmonster`, `targetitem`, `targetworld`, `targetlat`, `targetlon`, `targetaction`, `rewardname`, `rewardattr`) VALUES +(1, 'Prologue', 'The light has forsaken this land, and not for the first time. Centuries ago, it was overrun by darkness and then saved by a hero whose lifelong quest was to eradicate evil. The hero succeeded, and in the end, Lucifuge, King of the Dragons, was destroyed... at least for the time being. In the many long years since that time, Lucifuge has been gathering his forces and his power, and has finally regained enough of his former strength to return.\r\n\r\nSo the land is once again in need of a saviour. It will be no easy task, dear adventurer. In the last age, Lucifuge and his minions controlled but a small country. This time, he has sent his forces to sow chaos and darkness throughout the world. Only a brave adventurer will be able to conquer him and restore peace and order to the world.\r\n\r\nContinue on, dear adventurer. You shall be tested dearly, but the rewards will be great.', 1, 0, 0, 2, 0, '0', 1, 0, 0, '', '', 0), +(2, 'Queen of Demons', 'You come to a great stone door, with the inscription ''RAZORA'' carved in the Language of the Fallen. Next to the door lie the skeletons of several dead warriors who failed to enter. One of the skeletons is holding a scrap of paper, which reads:\r\n\r\n"We finally made it. The legends are true, Razora does exist. As I write this, we are standing outside the demon queen''s throneroom. Something is following us, though, and has been for several days. We''re making camp tonight, and we''ll head inside in the morning. After the months of travelling, we definitely need our rest if we''re really preparing to face Razora. We''ve survived this far, surely whatever is following us will hold off one more night..."\r\n\r\nYou are now faced with a choice, dear adventurer. Are you ready to face the demon queen Razora, or do you still need more preparation?', 1, 100, -100, 0, 201, '0', 0, 0, 0, '', '', 0), +(3, 'Fallen Queen', 'Razora, the Demon Queen, lies dead at your feet. Even now, her body and all the black blood spilled from it are melting away into the nether. Soon, all that''s left is her heart, which you take with you as proof that you destroyed her.\r\n\r\nOne section of the wall crumbles and falls, and leads to a doorway, guarded by a large statue of an angel. In the angel''s hand is a sword with flames engraved in the blade.\r\n\r\nIt wouldn''t be too much trouble to take the sword, and it does seem like your right to take it, after all the trouble you went through to kill Razora. You can now take the sword and continue through the doorway, or just continue on without it.', 1, 100, -100, 4, 0, '0', 2, 0, 0, '', 'maxhp', 50), (4, 'Shirreh''s Door', 'As you step through the doorway, you have a momentary feeling of the ground being swept out beneath you. Then you are surrounded by light, and you enter a new town. The townsfolk, surprised at your sudden entry through a door that has never been opened, quickly inform you of the legend surrounding the door.\r\n\r\nIt was created by the archangel Shirreh, as a path between this land and the last you were in. Shirreh made the door so that whoever did eventually destroy Razora would be able to travel here and attempt to defeat Numoren, the demon who was given dominion over this land by Lucifuge.\r\n\r\nIt''s time to continue on, dear adventurer. You did well in the last land, but a new evil awaits you here. One small dirt path leads out of town and into the dense jungle.', 2, 0, 0, 5, 0, '', 0, 0, 0, 'In Town', '', 0), (5, 'Numoren''s Portal', 'Deep in the heart of the jungles that cover this land, you come to a clearing. In the center of the clearing are two large upright stones, with one more stone on top. You walk around it, and looking through the doorway from one side only shows the other side of the clearing. But looking through it from the other side shows a dark hallway.\r\n\r\nWould you like to step through the magic doorway into the hall, or would you like some more time to get ready for this battle?', 2, 100, 100, 0, 202, '', 0, 0, 0, 'Fighting', '', 0), (6, 'Numoren''s Ring', 'Numoren has fallen at your hand, and this land is safe. Shirreh''s second door, identical to the first except for the rune carvings at the top of the frame, appears in a wall behind you.\r\n\r\nAs Numoren''s body disappears in a puff of smoke, you hear a small jingling sound and notice a gold ring falling to the ground. Numoren''s ring glows and you can almost hear it calling your name.\r\n\r\nWould you like to pick up the ring, dear adventurer?', 2, 100, 100, 7, 0, '0,171,0', 3, 0, 0, '', 'goldbonus', 5), @@ -954,13 +807,8 @@ INSERT INTO `sx_story` (`id`, `title`, `story`, `world`, `latitude`, `longitude` (19, 'Epilogue', 'With one final triumphant swing, you pierce Xiran''s heart and immediately your weapon disintegrates in front of your eyes. Xiran falls to the ground, and as the walls of the ice prison are falling down around you, Xiran''s body bursts into flames and is utterly consumed in seconds, leaving only a pile of ash on the floor.\r\n\r\nHis sword, though, remains unscathed by the fire, so as you are looking for the quickest way out of the crumbling building, you grab it and sling it over your shoulder. It''s only fair, after all, since the demon god''s heart took your own weapon away from you.\r\n\r\nYou make your way back to the last outpost, and the entire population has come out to see you. After many long ages, the dreadful task of awating Xiran''s escape has been lifted from their shoulders.\r\n\r\nNow that you''ve finally saved the world, you can''t wait to have a drink...\r\n\r\nThe End', 5, 100, 100, 20, 0, '0,173,0', 0, 0, 0, '', '', 0), (20, 'Fin', 'You have now beat the game and have been added to the Scroll of Heroes. You may continue playing if you want, or of course you could also take a well-deserved rest. Thank you for playing, and we hope you''ve enjoyed it.', 5, 100, 100, 9999, 0, '', 0, 0, 0, '', '', 0); --- -------------------------------------------------------- - --- --- Table structure for table `sx_towns` --- - -CREATE TABLE `sx_towns` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `name` varchar(30) NOT NULL default '', `world` tinyint(3) unsigned NOT NULL default '0', @@ -972,13 +820,10 @@ CREATE TABLE `sx_towns` ( `itemminlvl` int(10) unsigned NOT NULL default '0', `itemmaxlvl` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_towns` --- - -INSERT INTO `sx_towns` (`id`, `name`, `world`, `latitude`, `longitude`, `innprice`, `mapprice`, `travelpoints`, `itemminlvl`, `itemmaxlvl`) VALUES (1, 'Middleton', 1, 0, 0, 5, 0, 0, 1, 5), +INSERT INTO `<>` (`id`, `name`, `world`, `latitude`, `longitude`, `innprice`, `mapprice`, `travelpoints`, `itemminlvl`, `itemmaxlvl`) VALUES +(1, 'Middleton', 1, 0, 0, 5, 0, 0, 1, 5), (2, 'Norfolk', 1, 25, 25, 10, 25, 5, 3, 8), (3, 'Calentia', 1, 50, -50, 25, 50, 15, 6, 11), (4, 'Resmark', 1, -75, 75, 40, 100, 30, 9, 14), @@ -1004,13 +849,8 @@ INSERT INTO `sx_towns` (`id`, `name`, `world`, `latitude`, `longitude`, `innpric (24, 'Outpost 22', 5, -74, -69, 800, 4500, 400, 80, 84), (25, 'Outpost 42', 5, 89, 94, 950, 5000, 425, 83, 85); --- -------------------------------------------------------- - --- --- Table structure for table `sx_users` --- - -CREATE TABLE `sx_users` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` int(10) unsigned NOT NULL auto_increment, `account` int(10) unsigned NOT NULL default '0', `birthdate` datetime NOT NULL default '0000-00-00 00:00:00', @@ -1113,31 +953,19 @@ CREATE TABLE `sx_users` ( `bonusdefense` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id`), FULLTEXT KEY `item1name` (`item1name`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_users` --- - --- -------------------------------------------------------- - --- --- Table structure for table `sx_worlds` --- - -CREATE TABLE `sx_worlds` ( +DROP TABLE IF EXISTS `<>`; +CREATE TABLE `<>` ( `id` smallint(5) unsigned NOT NULL auto_increment, `name` varchar(30) NOT NULL default '', `size` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id`) -) TYPE=MyISAM; +) TYPE=MyISAM ; --- --- Dumping data for table `sx_worlds` --- - -INSERT INTO `sx_worlds` (`id`, `name`, `size`) VALUES (1, 'Raenslide', 100), +INSERT INTO `<>` (`id`, `name`, `size`) VALUES +(1, 'Raenslide', 100), (2, 'Lorenfall', 100), (3, 'Borderlands', 100), (4, 'Inferno', 100), -(5, 'Unreality', 100); +(5, 'Unreality', 100); \ No newline at end of file diff --git a/lib.php b/lib.php index 9ce82a0..6c21598 100644 --- a/lib.php +++ b/lib.php @@ -1,255 +1,3 @@ ->/', $dbsettings["prefix"].'_$1', $query)); - - if ($sqlquery == false) { - if ($controlrow["debug"] == 1) { die(mysql_error() . "

" . $query); } else { die("A MySQL query error occurred. Please contact the game administrator for more help."); } - } - - $numqueries++; - return $sqlquery; - -} - -function dorow($sqlquery, $force = "") { // Abstraction layer part deux. - - switch (mysql_num_rows($sqlquery)) { - - case 0: - $row = false; - break; - case 1: - if ($force == "") { - $row = mysql_fetch_assoc($sqlquery); - } else { - $temprow = mysql_fetch_assoc($sqlquery); - $row[$temprow[$force]] = $temprow; - } - break; - default: - if ($force == "") { - while ($temprow = mysql_fetch_assoc($sqlquery)) { - $row[] = $temprow; - } - } else { - while ($temprow = mysql_fetch_assoc($sqlquery)) { - $row[$temprow[$force]] = $temprow; - } - } - break; - - } - - return $row; - -} - -function gettemplate($templatename) { // SQL query for the template. - - $filename = "templates/" . $templatename . ".php"; - include("$filename"); - return $template; - -} - -function parsetemplate($template, $array) { // Replace template with proper content. Also does languages. - - foreach($array as $a => $b) { - $template = str_replace("{{{$a}}}", $b, $template); - } - return $template; - -} - -function getmicrotime() { // Used for timing script operations. - - list($usec, $sec) = explode(" ",microtime()); - return ((float)$usec + (float)$sec); - -} - -function is_email($email) { // Thanks to "mail(at)philipp-louis.de" from php.net! - - return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email)); - -} - -function mymail($to, $title, $body, $from = '') { // thanks to arto dot PLEASE dot DO dot NOT dot SPAM at artoaaltonen dot fi. - - global $controlrow; - extract($controlrow); - - - $from = trim($from); - - if (!$from) { - $from = "<$adminemail>"; - } - - $rp = $adminemail; - $org = "$gameurl"; - $mailer = "PHP"; - - $head = ""; - $head .= "Content-Type: text/plain \r\n"; - $head .= "Date: ". date('r'). " \r\n"; - $head .= "Return-Path: $rp \r\n"; - $head .= "From: $from \r\n"; - $head .= "Sender: $from \r\n"; - $head .= "Reply-To: $from \r\n"; - $head .= "Organization: $org \r\n"; - $head .= "X-Sender: $from \r\n"; - $head .= "X-Priority: 3 \r\n"; - $head .= "X-Mailer: $mailer \r\n"; - - $body = str_replace("\r\n", "\n", $body); - $body = str_replace("\n", "\r\n", $body); - - return mail($to, $title, $body, $head); - -} - -function err($error, $system = false, $panels = true) { // Basic little error handler. - - display("Error", $error, $panels); - -} - - - -function display($title, $content, $panels = true) { // Finalize page and output to browser. - - include('config.php'); - global $controlrow, $userrow, $worldrow, $numqueries, $starttime, $version, $build; - - if (!isset($controlrow)) { - $controlrow = dorow(doquery("SELECT * FROM <> WHERE id='1' LIMIT 1")); - } - - // Make page tags for XHTML validation. - $page = "\n" - . "\n" - . "\n"; - $page .= gettemplate("primary"); - - // Setup for primary page array indexes. - $row = array(); - $row["gamename"] = $controlrow["gamename"]; - $row["pagetitle"] = $title; - $row["background"] = "background" . $userrow["world"]; - $row["version"] = $version; - $row["content"] = $content; - if ($controlrow["forumurl"] != "") { $row["forumslink"] = "Support Forums"; } else { $row["forumslink"] = ""; } - if ($controlrow["debug"] == 1) { $row["debug"] = "/ " . $numqueries . " Queries / " . round(getmicrotime()-$starttime,4) . " Seconds"; } else { $row["debug"] = ""; } - - // Setup for side panels. - include("panels.php"); - if ($panels == true) { - $row["leftnav"] = panelleft(); - $row["rightnav"] = panelright(); - $row["topnav"] = paneltop(true); - $row["bottomnav"] = panelbottom(); - $row["middlenav"] = panelmiddle(); - } else { - $row["leftnav"] = ""; - $row["rightnav"] = ""; - $row["topnav"] = paneltop(false); - $row["bottomnav"] = ""; - } - - $page = rtrim($page, "<-!"); - -$page .= << - - - Version {{version}} {{debug}} - - - {{forumslink}} - - - Dragon Scourge © by renderse7en - - - -
- -THEVERYENDOFYOU; - - // Finalize control array for output. - $page = parsetemplate($page, $row); - - if ($controlrow["compression"] == 1) { ob_start("ob_gzhandler"); } - echo $page; - die(); - -} - -?> \ No newline at end of file + +kr9NHenNHenNHe1lFMamb3klFoxiC2APk19gOLlHOa9gkZXJkZwVkr9NTznNHr8XHt4JkZwShokiF2A2Yy9LcBYvcoAPF3OZfuwPcmklCBWPkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7wt8vwoxpCJ5XDuEIKjPIW29sdB9Vwoc1dMY0DB9VFZn1F2aLwuOPFM91c2ivfbWIfoilwunZd2fZCB0VeWPYtJ8vtAOZCBfvdJnTC291FMfleWPvRX0hRZ8kAukvc3kidUnifbOPd3kzKJnhCB1pdJntdo91dmWYtJ8vtAYvFulZDBfPftEPWZLIHjEXYZnJGUnZcB5LcbkzcTfldI0hRZ8kA2YZDbn0wyclFmYpd24IHU4XwrklforIYUntfBlSctExKW0heWPvRXlcd3AIdBy5wo5vftnLDbY0FMlJfbOlwuOPDbHIFukvc3kidUnpdJnidmLIdByVdMaZRtnsd2OpcMllctnvFI0hRZ8kd3OPcbk3DbYlRtn3DbOPd3a0wuOPcUnlGunZcbYzRtn3FMl0foaVwoYvdmYldmWIcmkvdW0hRZ8kFMaVcoaZF2A3cB4VeWPvRX0hRZ8kBB91wo1iGUnsCBslwo1vcolMDBYifolvdmHSwok1ftnvdMx5wocvFJn5d3aZwo93dJn1F2AICB5LeWPvRXl3DbOPDB4IfoilwoYvdMcpdMazwo9MwuOPcUnrFMymd24IA2YvfbkmcUnHDBYldmYlwrymFMaldBaVfE0hRZ8khuYlcUnvfbwIf2aJF2l0cUnMd3wIfoiiftLVeWPYtI0hRZ9pcJEPcMlSca9lGolzfuHPwMlVF3OidoXVFoiXwJLpwuSIcollhtkWdoaiF2AIFMasd3clwuOPcUE8Cj5pdmY0CBxSRmnPFeXvCj4ICB5LwexJNMlVF3OidoXVF3ySNt9JNJnMDBxlFZnMFM9swulvfbwIc2yscUnLDbklC3OvFmLICMaMd3klwoYvdmOpdmapdMFVwJL7wu0YtJ8vDBCIhocpdoagcbipF3OzhtkpdmY0CBxSRmYxdtwphUn7woOpcUIJAoxlCbYlwukldB92cUn0DoAIDB5zfoySdt5XDuEIcMlScUnMFM9swulvfbwIc2yscUnLDbklC3OvFmLICMaMd3klwoYvdmOpdmapdMFVwJL7wu0YtI0hRZ8IA2a0fbEIcM9ZwuY1FoaZc2xvCMySwuY0fBcMwuOPCbWIC2yVk3WIc28IDB4Ic2xvCMySFZ5XDuEVeWPLF3OiFmO0DB1lwe0Ic2a0dBljFM90DB1lhtL7eWPLdmasFbalFMllFZE9weE7eWPLdolVDZE9wo9XcB5LCJIpKX0hkuclFmYpd24INUEJWMa0CUE1wjSYtJOJdmasCMaZwe0Iwjr5wjSYtJOJdMyscUE9wtked25zd2xifolvdJnWFMl6cUw7eWPLCMOifoAINUEJYZ4ZKt4ZHeE3wjSYtMlVC2x1coAPwMxpCjwVFoiXwJL7eWPYtJ8vwriidMOSDB5mwocvFJnzcbk2cbkzwufpfoIIdBymDBYgFbavfoazwuO1FM5lctnvdJ4YtMlMwtimcbOgdBymDBYgFbavfoazb2fXCZIphUn7eWPYtJEIwtOgAr9TatE9woyZFMy5b21iFtImfBklFl9zFZFSwtOgAr9TatL7eWPIwtELb0fyatE9woyZFMy5b21iFtImfBklFl9zFZFSwtOgO0aAhTSYtJEIwtOgW09NU0lywe0ICbkZCblgdByXhtf1CMaZb3YzkZXIky9eT09RUAApKX0heWp9eWPLb1nNA1WINUniFmkiGa9sCbEPk3aJcbkgdbklFZFSwtOgAr9TatL7eWPLb1nNA1WINUniFmkiGa9sCbEPk3aJcbkgDuYjkZXIky9WT1YAhTSYtJOgO0aAwe0ICbkZCblgdByXhtf1CMaZb21ZcbHmRtELb0fyatL7eWPLb0fyatE9woyZFMy5b21iFtImfBklFl9PF2HmRtELb0fyatL7eWPLb0YNT0skOUE9woyZFMy5b21iFtImfBklFl9sFMazkZXIky9eT09RUAApKX0hky9eT09RUAAINUniFmkiGa9sCbEPk3aJcbkgDuYjkZXIky9eT09RUAApKX0heWpMfB5jfolvdJn1CMaZb3YzhtO2CBx1cULIGX0hwtEIwE0hwtEIkucidualwe0IDbYgCbkZCbLPkucidualhUE/eWPIwtEIwtEIwtEIwtEIwtniFmkiGa9sCbEPk3aJcbkgF3HmRtELfMySfBApwePYtJEIwtEIwtEIwtEIwtEIwuY0FMlXF2xiF2ilFZILfMySfBApKX0hwtEIFMa0fbkVwtO2CBx1cTSYtJEIwE0hgW0heWpMfB5jfolvdJn1CMaZb21ZcbHPkucidualhUn7eWPIwtEIeWPIwtELfMySfBAINUnpF19iFmkiGUILfMySfBApwe8YtJEIwtEIwtEIwtEIwtEIwoyZFMy5b21iFtImfBklFl9sFMazkZXIkucidualhUE6eWPIwtEIwtEIwtEIwtEIwtnsGbYxdy9ZcBySb2azC2yXca9zfukpdMFPkucidualhTSYtJEIwuklfuaZdJELfMySfBA7eWPIwtEYtm0YtI0hcmaVC3Opd24IfBklFl9PF2HPkucidualhUn7eWPIwtEIeWPIwtELfMySfBAINUnpF19iFmkiGUILfMySfBApwe8YtJEIwtEIwtEIwtEIwtEIwoyZFMy5b21iFtImfBklFl9PF2HmRtELfMySfBApwePYtJEIwtEIwtEIwtEIwtEIwoi0dBxzFoajDBySC2iiFmHPkucidualhTSYtJEIwuklfuaZdJELfMySfBA7eWPIwtEYtm0YtI0hcmaVC3Opd24Id3nldMOJhtLIGZEvRZnNFoaVwoOifoyJCbYlwoYvdM5lC3Opd24VeWPYtJEIwtnpdMYSfBOlhtkjd25MDBFVFoiXwJL7eWPIwtEIcbi0FMyjftILcokzcbO0DB5mFZL7eWPIwtEIkoxpdMSINUnsGbYxdy9jd25VcBY0htOzcbk2cbwSwtO1F2aZRtELFoyzFZLId3wIcbkZho15F3ySb2aZFM9ZhtLSfuk1cUL7eWPIwtEIdblzFBxgF2aScBY0b2OJhtOVCB1lhUnvFJnlFmwPdblzFBxgcbkZd3wPhUx0FmalhTSYtJEIwtnZcbO1FM4IkoxpdMS7eWPYtm0YtI0hcmaVC3Opd24Ico9xfBaZGUILFbalFmLpwuSIRZ8IA29scbOPDB5mwo9MworIfolVGUnSDbO0doAIcoy0CBkiF2AICBkzfukiC3Opd24Idoy5cbwVeWPIwtEIeWPIwtEIDB5jduaLcUImC29VcMlmRmnPFtFpKX0hwtEIwofSd2kidtELdmasFbalFMllFZXIkoYvdmOZd2xZd3F7eWPIwtEIkuYxduy1cbk5we0IdblzFBxgFbalFmLPFuklc19ZcbnSCBYlhtFvNeXPB2rsGLrsBjEsKa9FRa0qhT4+RZFSwtOLCmYlfuOpdMfzBZkXFMaMDbIJbU4mbZWxkZXIkuy1cbk5hUL7eWPIwtEIeWPIwtEIDBCIhtOzFBxxfBaZGUE9NUnMCBxzcULIGX0hwtEIwtEIwtnpcJEPkoYvdmOZd2xZd3fdwMOlCmamwl0INT0IHULIGZnLDBAPdblzFBxgcbkZd3wPhUEVwtw8CmwIRz48CmwIRz4Jwt4Ikuy1cbk5hTSIgUnlduYlwuSIcollhtknwr15A1yHwuy1cbk5woaZFM9Zwo9jC3aZFMaLRJnWdoaiF2AIC29Vfoyjftn0DoAIc2yscUnico1pdMlzfukifo9ZwocvFJnsd3klwoilduEVwJL7wu0YtJEIwtn9eWPIwtEIeWPIwtEIko51dby1cbkpcbHqhzSYtJEIwtnZcbO1FM4IkuYxduy1cbk5KX0hwtEIwE0hgW0heWpMfB5jfolvdJnLd3kvfZILF3ySFbalFmLSwtOMd3kjcUE9wtwJhUn7wt8vwryJF3OZCBY0DB9VwoxiGBaZwuniFmWIcoa1Gt4YtJEIwtEYtJEIwtnzf2l0C2IIho15F3ySb251da9Zd3fzhtOzFBxxfBaZGULpwuSYtJEIwtEIwtEIeWPIwtEIwtEIwoYiF2AIHePYtJEIwtEIwtEIwtEIwtOZd3FINUnMCBxzcTSYtJEIwtEIwtEIwtEIwokZcByqKX0hwtEIwtEIwtnjCbYlwer6eWPIwtEIwtEIwtEIwtnpcJEPkocvFMYlwe09wtwJhUn7eWPIwtEIwtEIwtEIwtEIwtEIkukvfZE9wo15F3ySb2clfoYPb2yzF29jhtOzFBxxfBaZGUL7eWPIwtEIwtEIwtEIwtn9woaSF2AIGX0hwtEIwtEIwtEIwtEIwtEIwtO0cB1XFM93we0IdblzFBxgcMa0C2igCbYzd2HPkuYxduy1cbk5hTSYtJEIwtEIwtEIwtEIwtEIwtELFM93BZO0cB1XFM93BZOMd3kjca1fwe0IkuOldbnZd3F7eWPIwtEIwtEIwtEIwtn9eWPIwtEIwtEIwtEIwtnJFMaiDzSYtJEIwtEIwtEIcoaMCbaSfePYtJEIwtEIwtEIwtEIwolMwtILcM9ZC2AINT0IwJwpwuSYtJEIwtEIwtEIwtEIwtEIwtn3DolScUEPkuOldbnZd3FINUnsGbYxdy9McbOjDy9iF3YvCZILF3ySFbalFmLphUn7eWPIwtEIwtEIwtEIwtEIwtEIwtEIwtOZd3fdbUE9wtO0cB1XFM93KX0hwtEIwtEIwtEIwtEIwtEIwu0YtJEIwtEIwtEIwtEIwu0IcBxzcUn7eWPIwtEIwtEIwtEIwtEIwtEIf2ipdoAIhtO0cB1XFM93we0IdblzFBxgcMa0C2igCbYzd2HPkuYxduy1cbk5hULIGX0hwtEIwtEIwtEIwtEIwtEIwtEIwtELFM93BZO0cB1XFM93BZOMd3kjca1fwe0IkuOldbnZd3F7eWPIwtEIwtEIwtEIwtEIwtEIgW0hwtEIwtEIwtEIwtEIgW0hwtEIwtEIwtEIwtEICmklCBS7eWPIwtEIeWPIwtEIgW0hwtEIwtEIwtEYtJEIwtnZcbO1FM4IkukvfzSYtJEIwtEYtm0YtI0hcmaVC3Opd24Ic2a0foasFoxifoAPkuOldbnSCbOldMyscULIGZEvRZnTAAXIFbalFmLIcM9ZwuOPcUn0cB1Xdoy0cU4YtJEIwtEYtJEIwtELcMlScB5idBAINUEJfoasFoxifoazRZwIRJELfoasFoxifoaVCB1lwt4IwJ5XDuEJKX0hwtEIwolVC2x1coAPwJOMDBxldMyscUwpKX0hwtEIwuklfuaZdJELfoasFoxifoA7eWPIwtEIeWp9eWPYtMc1dMY0DB9VwuniFmYlfoasFoxifoAPkuOldbnSCbOlRtELCbkZCbLpwuSIRZ8IAMaXdoyjcUn0cB1Xdoy0cUn3DbOPwunZd3nlFJnjd250cB50RJnnduYvwoOvcbHIdoyVc3aic2azRI0hwtEIwE0hwtEIwocvFMaiC2IPkoyZFMy5woyzwtOiwe0+wtOJhUn7eWPIwtEIwtEIwtO0cB1Xdoy0cUE9wuY0Fl9ZcbnSCBYlhtk7G3SLCb19gUwSwtOJRtELfoasFoxifoApKX0hwtEIwu0YtJEIwtnZcbO1FM4IkuOldbnSCbOlKX0hwtEIwE0hgW0heWpMfB5jfolvdJnmcbOsDBYZd3OpdBAPhUn7wt8vwyazcBWIcM9ZwuOpdBlVcZnzC3kpFuWId3nlFMy0DB9VFZ4YtI0hwtEIwoxpF3WPkuazcBHSwtOzcBHpwe0IcbiXdo9LcUIJwtwSdBljFM90DB1lhtLpKZEYtJEIwtnZcbO1FM4IhtiMdo9iftLLfbYlCZEqwtiMdo9iftLLF2ajhTSIeWPYtm0YtI0hcmaVC3Opd24IDbYgcB1iDBXPkoasCBlShUn7wt8vwyOPCB5qFZn0dZEJdBypdtiiftlXDolSDbnXRBxvfBlzRMOlwJnMFM9swunPFt5VcbWieWPYtJEIwtnZcbO1FM4PFuklc19sCbOjDtIJR15dRa8VBzpido51dTpfbUsEhtIPB1S6CBxVfB06ba18B1S6CBxVfB06ba1dBzpido51dTpfRa0QB1S6CBxVfB06ba0pbt4phZiicuxicbxicbkvgoyMgoymgoypgoySgoysgoyVgoyvgoyxgoyZgoyZFoy8CbY8CbO8Cba8Cbf8Cbp8CMy8CMk8CMO8CMa8CMc8CMf8CMi8CMl8CMl6gokQgoksgokVgokvgokZgokzgok0gok2gok3gok5gok6goYigoYjgoYLgoYMgoYmgoYPgoYpgoYqgoYSgoYsgoYVgoYvgoYvdbxjd29XgoYZgoYzgoY1goY2goY4goY5goY6goOlgoOQgoOqgoOsgoOvgoO6goajgoaLfbxlcbxlc3xlDuxlFmxlF3xlfuxlfbxMDbxMDmxMD3xMdbxMd3xMFmxmCbxmCmxmcuxmcbxmcmxmDuxmDbxmduxmdbxmdmxmd3c8c3n8c3y8c3k8c3Y8c3O8c3a8c3f8c3l8Dos8Do18Do58Duk8DuO8Dua8DBO8DBa8DBx8DB58DB5Md3xpdmO8DB98Dby8Dbk8DbY8DbO8DM18DM98Dmn8D2a8D2f8D2i8D2l8D218D258D3n8D3k8D3f8D3l8D3p8doy8dok8doY8dol8dos8duk8duY8duO8dua8duc8dul8dBy8dBY8dBO8dBf8dBi8dBlSgo1qgo1Sgo1sgo1Vgo1vgo1Xgo1xgo1Zgo1zgo10go11go11F2a1dbxsfmxsf3xsGuxsGbxsGmxVCbxVCB1lgo5jgo5lgo5lfuxVcmxVc3xVDbxVduxVd3xVFuxVFmxVfuxVfbxVGmxvdbxvFMf8Foy8Foa8Foc8Fof8Foi8Fos8Fox8Fo18Fo58Fuk8Fukvgunzgun0gun3gun5guyiguklgukvguk1guk3guYiguYJguYjguYLguYlguYmguYPguYpguYQguYqguYSguYsguYVguYvguYZguY0guY1guY2guY5guY6guOjguOLguOMguOmguOPguOQguOqguOsguOVguOvguOXguOZguO0guO2guO3guO6guaiguamguaqguasguazgua5gua6gucigucjguclgucmgucpgucVguc1gufMgufzgullgul0gul1gupigupsgup3hUO8htidHt05baSXRTlfN3xdHt0xbaSXRTlfBzEsKa18BzkfBzEsYy1dHt05bbxdHl1dYa1dHt01bUlFRJl7H30PBzEsKa1dHt05bT98BzEsHa1dHt05baSXRTlfgySZbaSXRTOfBzEsKa18BzkfBzafBzEsYa0phUWvDUwSkoasCBlShUL7eWPYtm0YtI0hcmaVC3Opd24IdblsCBlShtO0dZXIkuOpfoxlRtELCM9LGUXIkocZd20INUEmkZLIGZEvRZn0DoyVD3HIfo8ICbk0dZnLd3WIArxyWaYywoOvftnrTZnLd3WITL9AwoOvftnTAryYwoy0woyZfo9iCBx0d25ldJnLd3WIcMLVeWPYtJEIwtnmdo9JCBXIkoYvdmOZd2xZd3F7eWPIwtEIcbi0FMyjftILC29VfukvdukvfZL7eWPIwtEIeWPYtJEIwtELcmkvdUE9wuOZDB0PkocZd20pKX0heWPIwtEIDBCIhtrLcmkvdULIGX0hwtEIwtOMFM9swe0IwjXLCBOsDB5ldBypde4JKX0hwtEIwu0YtJEIwtEYtJEIwtELFmEIwtEINUELCBOsDB5ldBypdeSYtJEIwtELd3kmwtEIwe0IwJOmCB1lfbkSwjSYtJEIwtELdBypdoaZwe0IwlnwAtw7eWPIwtEIeWPIwtEIkoilCBWIwe0IwJw7eWPIwtEIkoilCBWIwt49wtked250cB50RaO5FoA6wuOlGuWvFoxiDB4IbukFdJw7eWPIwtEIkoilCBWIwt49wtkrCbOlKJEJRJnLCbOlhtfZkZLVwtwIbukFdJw7eWPIwtEIkoilCBWIwt49wtkUcbO1FM4sAoy0DePIkukXwyxZbo4JKX0hwtEIwtOPcByLwtEVNUEJOmkvdTPIkocZd20IbukFdJw7eWPIwtEIkoilCBWIwt49wtkTcB5Lcbw6wtOMFM9swyxZbo4JKX0hwtEIwtOPcByLwtEVNUEJAMaXduLsao86wtOMFM9swyxZbo4JKX0hwtEIwtOPcByLwtEVNUEJT3kmCB5pGMy0DB9VKJELd3kmwyxZbo4JKX0hwtEIwtOPcByLwtEVNUEJBt1TcB5Lcbw6wtOMFM9swyxZbo4JKX0hwtEIwtOPcByLwtEVNUEJBt1WFMlvFMl0GTPIHZnFFlxVwjSYtJEIwtELDoaictEIRj0IwlIsTBypdoaZKJELdBypdoaZwyxZbo4JKX0hwtEIwE0hwtEIwtOJd2O5wtE9wuY0Fl9ZcbnSCBYlhtkFFlxVwJXIwlxVwJXIkokvcuLpKX0hwtEIwtOJd2O5wtE9wuY0Fl9ZcbnSCBYlhtkFdJwSwtkFFlxVwJXIkokvcuLpKX0hwtEIwE0hwtEIwuklfuaZdJnsCBlShtO0dZXIkuOpfoxlRtELCM9LGUXIkoilCBWpKX0hwtEYtm0YtI0hcmaVC3Opd24IcbkZhtOlFmkvFJXIkuY5F3OldUE9wociduYlRtELFoyVcBxzwe0Ifuk1cULIGZEvRZntCbYpCZnSDbO0doAIcbkZd3wIDoyVcoxlFJ4YtI0hwtEIwtELcbkZdbYmwe0IwL9VcUnvFJnsd3klwoaZFM9ZFZnPCbclwo9jC3aZFMaLKjxJFJEvNjxJFJEvNjxJNJOlFmkvFjXvCj48CmwIRz48CmwIRz5WdoaiF2AINorIDuklcj1FwMpifMyzC3kpFuW6Dolzfo9ZGU5mdZIsHUL7btw+c28ICMyjDzXvCT4ICB5LwuOZGUnic2ypdJ4JKX0hwtEIwtnLDbYXdoy5htkyFmkvFJwSwtOlFmksF2FSwtOXCB5lduHpKX0hwtEIwtEYtm0YtI0hcmaVC3Opd24IcolzFoxiGUILfol0doASwtOjd250cB50RtELFoyVcBxzwe0Ifuk1cULIGZEvRZnoDB5idol6cUnXCBflwoyVctnvfbOXfbWIfo8ICmkvf3YlFJ4YtJEIwtEYtJEIwtnpdMYSfBOlhtfjd25MDBFVFoiXkZL7eWPIwtEIc2xvCMySwtOjd250FM9SFM93RtELfbYlFmkvfZXIkufvFMxLFM93RtELdmasFbalFMllFZXIkuY0Cbk0folscUXIkuclFmYpd24SwtOJfBlSceSYtJEIwtEYtJEIwtnpcJEPwBlzF2a0htOjd250FM9SFM93hULIGX0hwtEIwtEIwtELC29VfukvdukvfZE9woOvFM93hoOvFbalFmLPwlYyTraeatEQwrcUT00INexjd250FM9SNj4Ia0iyALAIDBW9kzrmwrxkTAlAwerJhUL7eWPIwtEIgW0heWPIwtEIRZ8ITByqcUnXCBflwuOic3HIcM9Zwyiwar1HwucidolLCbOpd24VeWPIwtEIkunic2AINUEJNe94dBXIfMaZF2lvdj1FwjrVHyXJwoaVC29LDB5mNaXJUaYNRTI4YTLsHaXJNz5FdJwYtJEIwtEVwtw8wAONW1OcArAIDuOsdtnWaAkHUAHIbtwsRZ9bH0HvR0OAOtnCUyOYTtExRjEIaukidmYpfolvdMySRZ9yTlXJwyXJOyOrR3iPfo1SHU10FMyVF2l0DB9VCBXVcuOLbtw+bo4JeWPIwtEIRJEJNoi0dBXIGo1SdmH9btkPfuOXKJ8vf3f3RmFzRM9ZcZ8xKTL5R3iPfo1SbtwIGo1SKMxidMF9btkldlXJwoxidMF9btkldlXJNlxVwjSYtJEIwtELFoymcUEVNUnmcbO0cB1Xdoy0cUIJFukpdByZGUwpKX0hwtEIwE0hwtEIwt8vwyYlfuaXwocvFJnXFMlsCbk5wunic2AICbkZCbLIDB5LcbilFZ4YtJEIwtELFM93we0ICbkZCbLPhTSYtJEIwtELFM93BZkmCB1ldMyscUkfwe0IkoYvdmOZd2xZd3fdwMfidBaVCB1lwl07eWPIwtEIkukvf1SJFoymcbOpfoxlwl0INUELfol0doA7eWPIwtEIkukvf1SJCMyjD2fZd3aVctkfwe0IwMkiC2smFM91dMWJwt4IkuazcbkZd3fdwmfvFMxLwl07eWPIwtEIkukvf1SJfMaZF2lvdJkfwe0IkuclFmYpd247eWPIwtEIkukvf1SJC29VfoaVftkfwe0IkoYvdmOldmW7eWPIwtEIkukvf1SJdB9LcoaLCmLJbUE9wtOjd250FM9SFM93BZksd2OLcBOJGUkfKX0hwtEIwolMwtILC29Vfukvdukvf1SJcM9ZfB11FMXJbUEiNUEJwJLIGZELFM93BZkMd3k1dbYSDB5qwl0INUEJNorIDuklcj1FwJwVkoYvdmOZd2xZd3fdwMcvFmasfbkSwl0VwlXJNlY1FunvFmWIOM9ZfB1zNt9iNJw7wu0IcBxzcUn7wtOZd3fdwMcvFmasF2xpdMSJbUE9wtwJKZn9eWPIwtEIDBCIhtOjd250FM9SFM93BZkLcBk1cZkfwe09werpwuSIkukvf1SJcoaJfBFJbUE9wtwvwtwIRJELdmasFbalFMllFZEVwtwIAbalFMllFZEvwtwIRJnZd3aVctimcbOsDBYZd3OpdBAPhU0LF3OiFmO0DB1lReWpwt4IwJnTcBYvdMOzwjSIgUnlduYlwuSIkukvf1SJcoaJfBFJbUE9wtwJKZn9eWPIwtEIeWPIwtEIRZ8IA2a0fbEIcM9ZwuYpcoAIFoyVcBxzRI0hwtEIwolVC2x1coAPwmnidMaSFZ5XDuEJhTSYtJEIwtnpcJEPkunidMaSFZE9NUn0FmalhUn7wE0hwtEIwtEIwtELFM93BZkScBc0dMy2wl0INUnXCB5ldoxlcmWPhTSIeWPIwtEIwtEIwtOZd3fdwmkpc2i0dMy2wl0INUnXCB5ldukpc2i0htL7eWPIwtEIwtEIwtOZd3fdwmOvFo5ifJkfwe0IFoyVcBx0d3EPfuk1cUL7eWPIwtEIwtEIwtOZd3fdwMkvfuOvdB5ifJkfwe0IFoyVcBxJd3O0d20PhTSYtJEIwtEIwtEIkukvf1SJdBlLcoxldMy2wl0INUnXCB5ldo1pcoOScUIpKX0hwtEIwu0IcBxzcUn7wE0hwtEIwtEIwtELFM93BZkScBc0dMy2wl0INUEJwjSIeWPIwtEIwtEIwtOZd3fdwmkpc2i0dMy2wl0INUEJwjSYtJEIwtEIwtEIkukvf1SJfo9XdMy2wl0INUnXCB5lduOvFtiMCBxzcUL7eWPIwtEIwtEIwtOZd3fdwMkvfuOvdB5ifJkfwe0IwJw7eWPIwtEIgW0hwtEIwE0hwtEIwtOXCBflwe0IFmOZDB0Pkunic2ASwtw8RUrJhTSYtJEIwtEYtJOXCBflwt49wtwhNuOiCMxlwoYldoxzFoyjDB5mNaXJHyXJwoYldoxXCBOLDB5mNaXJH1XJwuY0GBxlNaXJf2lLfoI6weIXHun4KZnJd3kLcbw6wuYvdolLweyXGtnJdoyjDzSICMyjD2fZd3aVct1jd2xvFjPIf2ipfoA7wo1iFMfpdJ10d3E6wekXGeSIcolzFoxiGTPIfoyJdoA7btw+eWPIwex0Fj4YtJEIwtE8foWIf2lLfoI9btw0HtaFwj4YtJEIwtnBcbkzDB9VwexiwoiZcBC9btkpdMOlGt5XDuE/co89fMaZF2lvdlXJNms7fMaZF2lvdm19Nt9iNJn7G2OlCmamgb0YtJEIwtE8R3OLNI0hwtEIwex0ctn3DBO0De1FwjwXkaXJwuY0GBxlNaXJfoa4ft1idolmdjPIC2aVfoaZK1XJNI0hwtEIwus7cM9ZfB1zdolVD319eWPIwtEINt90ce4YtJEIwtE8foWIf2lLfoI9btw0HtaFwJnzfulScT1FwmOlGuWsCBxpc246FMlmDuW7btw+eWPIwtEINorIDuklcj1FwMi0fuE6RZ93f3FVcukic29VF2YvfbkmcU5jd21Fwj5rFMymd24IA2YvfbkmcTXvCT4IkMYvFuL7wok5wexiwoiZcBC9btkPfuOXKJ8vf3f3RmkldMOlFmYlY2aVRMYvdaXJNmkldMOlFmYlY2aVNt9iNJ4IG3ssd2OLcBOJGb19eWPIwtEINt90ce4YtJEINt90Fj4YtjXvfoyJdoA+eWP8R2YldmOlFj48R2kvcuL+eWP8R2i0dBX+eUw7eWPIwtEIeWPIwtEIRZ8IOMlVCBxpGMAIC29VfukvdtniFmkiGUnMd3wId3a0Fua0RI0hwtEIwtOXCBflwe0IFoyZF2a0cB1Xdoy0cUILFoymcUXIkukvfZL7wE0hwtEIwE0hwtEIwolMwtILC29Vfukvdukvf1SJC29sFuklF3Ypd24JbUE9NUExhUn7wo9Jb3Y0Cbk0htkvCl9mGMiidMOScbwJhTSIgW0hwtEIwoajDo8Ikunic2A7eWPIwtEIcollhtL7eWPIwtEIeWp9eWPYtI== \ No newline at end of file diff --git a/lib2.php b/lib2.php index 034d6cc..1fd3514 100644 --- a/lib2.php +++ b/lib2.php @@ -1,5 +1,19 @@ go back and try again.", false, false); } if ($row["password"] != md5($password)) { err("Invalid password. Please go back and try again.", false, false); } - if ($row["verifycode"] != 1) { err("You have not yet verified your account. Please click the link found in your Accoutn Verification email before continuing. If you never received the email, please check your spam filter settings or contact the game administrator for further assistance.", false, false); } + if ($row["verifycode"] != 1) { err("You have not yet verified your account. Please click the link found in your Account Verification email before continuing. If you never received the email, please check your spam filter settings or contact the game administrator for further assistance.", false, false); } // Finish. $newcookie = $row["id"] . " " . $username . " " . md5($row["password"] . "--" . $dbsettings["secretword"]); if (isset($remember)) { $expiretime = time()+31536000; $newcookie .= " 1"; } else { $expiretime = 0; $newcookie .= " 0"; } - setcookie($controlrow["cookiename"], $newcookie, $expiretime, "/", "", 0); + setcookie($controlrow["cookiename"], $newcookie, $expiretime, "/", $controlrow["cookiedomain"], 0); die(header("Location: index.php")); } else { diff --git a/mailbox.php b/mailbox.php index 44c372c..1f67156 100644 --- a/mailbox.php +++ b/mailbox.php @@ -1,5 +1,19 @@ - - - -Dragon Scourge Beta - - -
- - - - - - - - -
- Dragon Scourge Beta -
- Please read THIS POST on the forums before playing the game! This is very important, and if you don't read it, monkeys will come and eat your genitals.

- Once you've done that, you are more than happy to...

- Play Dragon Scourge. -
- - - - - - - -
- - Dragon Scourge © 2003-2005 by renderse7en -
-
- \ No newline at end of file diff --git a/map.php b/map.php index 684ee41..a4b69d8 100644 --- a/map.php +++ b/map.php @@ -1,5 +1,19 @@ Admin)"; } else { $admin = ""; } + //if ($acctrow["authlevel"] == 255) { $admin = " (Admin)"; } else { $admin = ""; } + $admin = ""; if ($userrow["guild"] != 0) { $charname = "[".$userrow["guildtag"]."]".$userrow["charname"].""; } else { diff --git a/pvp.php b/pvp.php index 46ed539..e393d98 100644 --- a/pvp.php +++ b/pvp.php @@ -1,5 +1,19 @@ $b) { diff --git a/pvpmini.php b/pvpmini.php index 3827e49..98c285b 100644 --- a/pvpmini.php +++ b/pvpmini.php @@ -1,5 +1,19 @@ > WHERE id='$id' LIMIT 1")); +if (!$userrow) { die(); } +$class = dorow(doquery("SELECT * FROM <> WHERE id='".$userrow["charclass"]."' LIMIT 1")); +$world = dorow(doquery("SELECT * FROM <> WHERE id='".$userrow["world"]."' LIMIT 1")); + +// Start our image. +$img = imagecreatefrompng("images/sigbotback.png"); +$textcolor = imagecolorallocate($img, 0, 0, 0); + +// Add the user's name. +if ($userrow["guildtag"] != "") { + $tagcolor = hexToRGB(ltrim($userrow["tagcolor"], "#")); + $namecolor = hexToRGB(ltrim($userrow["namecolor"], "#")); + $tagcolor = imagecolorallocate($img, $tagcolor[0], $tagcolor[1], $tagcolor[2]); + $namecolor = imagecolorallocate($img, $namecolor[0], $namecolor[1], $namecolor[2]); + imagestring($img, 3, 40, 5, "[" . $userrow["guildtag"] . "]", $tagcolor); + imagestring($img, 3, 78, 5, $userrow["charname"], $namecolor); +} else { + imagestring($img, 3, 50, 5, $userrow["charname"], $textcolor); +} + +// Add some other stats. +imagestring($img, 2, 78, 20, "Level " . $userrow["level"] . " " . $class["name"], $textcolor); +imagestring($img, 2, 78, 30, "In " . $world["name"], $textcolor); + +// Is online or not? +if ($userrow["fonlinetime"] >= (mktime() - 600)) { + imagestring($img, 2, 78, 40, "Currently: Online", $textcolor); +} else { + imagestring($img, 2, 78, 40, "Currently: Offline", $textcolor); +} + +// Final output to browser. +header("Content-type: image/png"); +imagepng($img); +imagedestroy($img); + +function hexToRGB($hexstr) { + + $hexstr = strtolower($hexstr); + $replace = array("a"=>10, "b"=>11, "c"=>12, "d"=>13, "e"=>14, "f"=>15); + $hex = array(); + for ($i = 0; $i < 6; $i++) { + if (isset($replace[$hexstr{$i}])) { $hex[$i] = $replace[$hexstr{$i}]; } else { $hex[$i] = $hexstr{$i}; } + } + + $red = ($hex[0] * 16) + $hex[1]; + $green = ($hex[2] * 16) + $hex[3]; + $blue = ($hex[4] * 16) + $hex[5]; + + return array($red,$green,$blue); +} + +?> \ No newline at end of file diff --git a/spells.php b/spells.php index d21befc..72eb0f1 100644 --- a/spells.php +++ b/spells.php @@ -1,5 +1,19 @@ $newdefmax) {$spells[$id]["value"] = $newdefmax;} - $userrow["bonusdefence"] = $userrow["bonusdefence"] + $spells[$id]["value"]; + $userrow["bonusdefense"] = $userrow["bonusdefense"] + $spells[$id]["value"]; } - if ($userrow["bonusdefence"] > 200) { $userrow["bonusdefence"] = 200;} + if ($userrow["bonusdefense"] > 200) { $userrow["bonusdefense"] = 200;} // all damage will never go above 50% chance. 0.25% damage will always be 50% } diff --git a/story.php b/story.php index 62f1721..f745e0f 100644 --- a/story.php +++ b/story.php @@ -1,5 +1,19 @@ -{{gamename}} :: {{pagetitle}} - - -
- - - - - - - - - - - -
-
- {{gamename}} - - {{topnav}} -
-
-
- {{leftnav}} -
{{bottomnav}}
- - - - - -
- Version {{version}} / {{numqueries}} Queries / {{totaltime}} Seconds - - Dragon Scourge © 2003-2005 by renderse7en -
-
- -END; - -?> \ No newline at end of file diff --git a/templates/botcheck.php b/templates/botcheck.php index 80e96ed..25cfcfc 100644 --- a/templates/botcheck.php +++ b/templates/botcheck.php @@ -1,5 +1,19 @@ diff --git a/templates/explore.php b/templates/explore.php index e37ebed..d61897a 100644 --- a/templates/explore.php +++ b/templates/explore.php @@ -1,5 +1,19 @@
The stats for your current item are:
diff --git a/templates/explore_drop_accept.php b/templates/explore_drop_accept.php index b74bc85..2d0cc45 100644 --- a/templates/explore_drop_accept.php +++ b/templates/explore_drop_accept.php @@ -1,5 +1,19 @@
You may now continue exploring. diff --git a/templates/explore_drop_itemrow.php b/templates/explore_drop_itemrow.php index 15f81f7..2945c8c 100644 --- a/templates/explore_drop_itemrow.php +++ b/templates/explore_drop_itemrow.php @@ -1,5 +1,19 @@ {{image}} diff --git a/templates/explore_quickheal.php b/templates/explore_quickheal.php index bd46c4a..693a42f 100644 --- a/templates/explore_quickheal.php +++ b/templates/explore_quickheal.php @@ -1,5 +1,19 @@ In order to prevent macros and robots from abusing the game, you must verify that you are able to read the following image. Please enter the 6 character code you see in the image into the form box below to continue playing. Thank you.

diff --git a/templates/fight_level.php b/templates/fight_level.php index eea972b..194e713 100644 --- a/templates/fight_level.php +++ b/templates/fight_level.php @@ -1,5 +1,19 @@ {{monstername}}
.

{{message}} diff --git a/templates/fight_levelup.php b/templates/fight_levelup.php index c967a4e..53aa07a 100644 --- a/templates/fight_levelup.php +++ b/templates/fight_levelup.php @@ -1,5 +1,19 @@ {{monstername}}.

{{message}} diff --git a/templates/fight_levelupspell.php b/templates/fight_levelupspell.php index be57108..4635f2f 100644 --- a/templates/fight_levelupspell.php +++ b/templates/fight_levelupspell.php @@ -1,5 +1,19 @@ {{monstername}}.

{{message}} diff --git a/templates/fight_lose.php b/templates/fight_lose.php index c14e23a..5c240b4 100644 --- a/templates/fight_lose.php +++ b/templates/fight_lose.php @@ -1,5 +1,19 @@ {{monstername}}.
Monster's HP: {{monsterhp}}

diff --git a/templates/fight_monsteronly.php b/templates/fight_monsteronly.php index 1faf562..dbcaec8 100644 --- a/templates/fight_monsteronly.php +++ b/templates/fight_monsteronly.php @@ -1,5 +1,19 @@ {{monstername}}.
Monster's HP: {{monsterhp}}

diff --git a/templates/fight_new.php b/templates/fight_new.php index 91d189c..d3426df 100644 --- a/templates/fight_new.php +++ b/templates/fight_new.php @@ -1,5 +1,19 @@ {{monstername}}.
Monster's HP: {{monsterhp}}

diff --git a/templates/fight_turn.php b/templates/fight_turn.php index 4a21728..b07bdf0 100644 --- a/templates/fight_turn.php +++ b/templates/fight_turn.php @@ -1,5 +1,19 @@ {{monstername}}.
Monster's HP: {{monsterhp}}

diff --git a/templates/fight_win.php b/templates/fight_win.php index eea972b..194e713 100644 --- a/templates/fight_win.php +++ b/templates/fight_win.php @@ -1,5 +1,19 @@ {{monstername}}.

{{message}} diff --git a/templates/guild_apply.php b/templates/guild_apply.php index 53991ac..86d7f99 100644 --- a/templates/guild_apply.php +++ b/templates/guild_apply.php @@ -1,5 +1,19 @@
diff --git a/templates/guild_homelow.php b/templates/guild_homelow.php index d345e98..87d097c 100644 --- a/templates/guild_homelow.php +++ b/templates/guild_homelow.php @@ -1,5 +1,19 @@ diff --git a/templates/guild_homemid.php b/templates/guild_homemid.php index e457def..3e9bba6 100644 --- a/templates/guild_homemid.php +++ b/templates/guild_homemid.php @@ -1,5 +1,19 @@
diff --git a/templates/guild_leave.php b/templates/guild_leave.php index 76101c7..97cbeeb 100644 --- a/templates/guild_leave.php +++ b/templates/guild_leave.php @@ -1,5 +1,19 @@
diff --git a/templates/guild_list.php b/templates/guild_list.php index a2ec388..945b132 100644 --- a/templates/guild_list.php +++ b/templates/guild_list.php @@ -1,5 +1,19 @@ start your own or submit an application to join one of the Guilds listed below.

If you are a member of a Guild, you can also continue to your Guild's Hall.

diff --git a/templates/guild_members.php b/templates/guild_members.php index f2c8c5d..3744721 100644 --- a/templates/guild_members.php +++ b/templates/guild_members.php @@ -1,5 +1,19 @@ {{name}} Members List

{{guildmembers}} diff --git a/templates/guild_news.php b/templates/guild_news.php index 4e19feb..3a9238a 100644 --- a/templates/guild_news.php +++ b/templates/guild_news.php @@ -1,5 +1,19 @@ Edit your Guild's news/info below.

diff --git a/templates/guild_remove.php b/templates/guild_remove.php index 4b42763..4c46f60 100644 --- a/templates/guild_remove.php +++ b/templates/guild_remove.php @@ -1,5 +1,19 @@
diff --git a/templates/login.php b/templates/login.php index 135fc96..97ce284 100644 --- a/templates/login.php +++ b/templates/login.php @@ -1,5 +1,19 @@
diff --git a/templates/mailbox_letter.php b/templates/mailbox_letter.php index a417858..d9db24d 100644 --- a/templates/mailbox_letter.php +++ b/templates/mailbox_letter.php @@ -1,5 +1,19 @@ diff --git a/templates/mailbox_letterout.php b/templates/mailbox_letterout.php index 3f1576d..4a77800 100644 --- a/templates/mailbox_letterout.php +++ b/templates/mailbox_letterout.php @@ -1,5 +1,19 @@ {{recipientname}}
Date: {{fpostdate}}
diff --git a/templates/mailbox_list.php b/templates/mailbox_list.php index 921829c..fedc8f9 100644 --- a/templates/mailbox_list.php +++ b/templates/mailbox_list.php @@ -1,5 +1,19 @@
{{messages}} diff --git a/templates/mailbox_listout.php b/templates/mailbox_listout.php index 09d8fe8..6ea7bf8 100644 --- a/templates/mailbox_listout.php +++ b/templates/mailbox_listout.php @@ -1,5 +1,19 @@
{{messages}} diff --git a/templates/mailbox_listoutrow.php b/templates/mailbox_listoutrow.php index 77e2184..b2423de 100644 --- a/templates/mailbox_listoutrow.php +++ b/templates/mailbox_listoutrow.php @@ -1,5 +1,19 @@ diff --git a/templates/mailbox_listrow.php b/templates/mailbox_listrow.php index 3b051ed..578860c 100644 --- a/templates/mailbox_listrow.php +++ b/templates/mailbox_listrow.php @@ -1,5 +1,19 @@ diff --git a/templates/mailbox_new.php b/templates/mailbox_new.php index 33d344a..be61938 100644 --- a/templates/mailbox_new.php +++ b/templates/mailbox_new.php @@ -1,5 +1,19 @@ * are required. The Send Gold field allows you to attach money to the letter, which will be given to the recipient when they read it.

diff --git a/templates/mailbox_reply.php b/templates/mailbox_reply.php index 6d453f4..f93627c 100644 --- a/templates/mailbox_reply.php +++ b/templates/mailbox_reply.php @@ -1,5 +1,19 @@ * are required. The Send Gold field allows you to attach money to the letter, which will be given to the recipient when they read it.

diff --git a/templates/mailbox_sent.php b/templates/mailbox_sent.php index bf8ef31..d4cc6bc 100644 --- a/templates/mailbox_sent.php +++ b/templates/mailbox_sent.php @@ -1,5 +1,19 @@
You may now go back to your Mailbox or return to Town. diff --git a/templates/misc_babblebox.php b/templates/misc_babblebox.php index c5d4a58..8843e0b 100644 --- a/templates/misc_babblebox.php +++ b/templates/misc_babblebox.php @@ -1,5 +1,19 @@ diff --git a/templates/misc_showmap.php b/templates/misc_showmap.php index 966d4f8..22cfad9 100644 --- a/templates/misc_showmap.php +++ b/templates/misc_showmap.php @@ -1,5 +1,19 @@ Map diff --git a/templates/panels_bottom.php b/templates/panels_bottom.php index a42ca2d..856e034 100644 --- a/templates/panels_bottom.php +++ b/templates/panels_bottom.php @@ -1,5 +1,19 @@ diff --git a/templates/panels_left.php b/templates/panels_left.php index b9b0427..e245062 100644 --- a/templates/panels_left.php +++ b/templates/panels_left.php @@ -1,5 +1,19 @@ Location {{action}} {{townname}}
diff --git a/templates/panels_middle.php b/templates/panels_middle.php index b669397..e1ef0da 100644 --- a/templates/panels_middle.php +++ b/templates/panels_middle.php @@ -1,5 +1,19 @@
{{title}} {{new}}{{money}}{{title}}
diff --git a/templates/panels_right.php b/templates/panels_right.php index b8bab45..2dc15e0 100644 --- a/templates/panels_right.php +++ b/templates/panels_right.php @@ -1,5 +1,19 @@ diff --git a/templates/primary_min.php b/templates/primary_min.php index 5e76c85..22a5a8e 100644 --- a/templates/primary_min.php +++ b/templates/primary_min.php @@ -1,5 +1,19 @@ {{gamename}} :: {{pagetitle}} diff --git a/templates/primary_new.php b/templates/primary_new.php index 2a0455f..52a9f53 100644 --- a/templates/primary_new.php +++ b/templates/primary_new.php @@ -1,15 +1,18 @@ diff --git a/templates/pvp_challenge.php b/templates/pvp_challenge.php index 96f74fa..d77f844 100644 --- a/templates/pvp_challenge.php +++ b/templates/pvp_challenge.php @@ -1,5 +1,19 @@
diff --git a/templates/pvp_decline.php b/templates/pvp_decline.php index 911aec0..c983e9a 100644 --- a/templates/pvp_decline.php +++ b/templates/pvp_decline.php @@ -1,5 +1,19 @@
Click here to return to the game. diff --git a/templates/pvp_declined.php b/templates/pvp_declined.php index 13aa5d8..15ae5c9 100644 --- a/templates/pvp_declined.php +++ b/templates/pvp_declined.php @@ -1,5 +1,19 @@
Click here to return to the game. diff --git a/templates/pvp_lose.php b/templates/pvp_lose.php index 9f50b64..d5ed010 100644 --- a/templates/pvp_lose.php +++ b/templates/pvp_lose.php @@ -1,5 +1,19 @@ You are fighting {{monstername}}.
diff --git a/templates/pvp_mini.php b/templates/pvp_mini.php index 2ae3783..4550d06 100644 --- a/templates/pvp_mini.php +++ b/templates/pvp_mini.php @@ -1,5 +1,19 @@ {{metareload}} diff --git a/templates/pvp_new.php b/templates/pvp_new.php index 546e516..ac337db 100644 --- a/templates/pvp_new.php +++ b/templates/pvp_new.php @@ -1,5 +1,19 @@ You are fighting {{charname}}.
diff --git a/templates/pvp_turn.php b/templates/pvp_turn.php index 478049b..fdd33e3 100644 --- a/templates/pvp_turn.php +++ b/templates/pvp_turn.php @@ -1,5 +1,19 @@ You are fighting {{charname}}.
diff --git a/templates/pvp_wait.php b/templates/pvp_wait.php index 0edfe50..8b23c4f 100644 --- a/templates/pvp_wait.php +++ b/templates/pvp_wait.php @@ -1,5 +1,19 @@ You are fighting {{charname}}.
diff --git a/templates/pvp_win.php b/templates/pvp_win.php index 8742530..7faa8f2 100644 --- a/templates/pvp_win.php +++ b/templates/pvp_win.php @@ -1,5 +1,19 @@ You are fighting {{monstername}}.

diff --git a/templates/statusbars.php b/templates/statusbars.php index c72de0c..6a9ab8f 100644 --- a/templates/statusbars.php +++ b/templates/statusbars.php @@ -1,5 +1,19 @@
{{littlename}}:
 {{current}} / {{max}}
diff --git a/templates/story_item.php b/templates/story_item.php index bd34f8a..069953e 100644 --- a/templates/story_item.php +++ b/templates/story_item.php @@ -1,5 +1,19 @@ diff --git a/templates/story_teleport.php b/templates/story_teleport.php index c1e8c0e..189eb45 100644 --- a/templates/story_teleport.php +++ b/templates/story_teleport.php @@ -1,5 +1,19 @@ diff --git a/templates/town_bank1.php b/templates/town_bank1.php index 0f55850..db79b19 100644 --- a/templates/town_bank1.php +++ b/templates/town_bank1.php @@ -1,5 +1,19 @@ function autopop(theValue) { diff --git a/templates/town_bank2.php b/templates/town_bank2.php index 2d49e68..cad5491 100644 --- a/templates/town_bank2.php +++ b/templates/town_bank2.php @@ -1,5 +1,19 @@
You are now storing {{formatbank}} gold in the bank, and you are carrying {{formatgold}} gold in your pocket.

diff --git a/templates/town_buy1.php b/templates/town_buy1.php index 3fd76b4..22c49ab 100644 --- a/templates/town_buy1.php +++ b/templates/town_buy1.php @@ -1,5 +1,19 @@
The stats for your current items are:
diff --git a/templates/town_buy2_empty.php b/templates/town_buy2_empty.php index 8ac4fea..0448adb 100644 --- a/templates/town_buy2_empty.php +++ b/templates/town_buy2_empty.php @@ -1,5 +1,19 @@
diff --git a/templates/town_buy2_full.php b/templates/town_buy2_full.php index 6185967..784a9fb 100644 --- a/templates/town_buy2_full.php +++ b/templates/town_buy2_full.php @@ -1,5 +1,19 @@
diff --git a/templates/town_buy3.php b/templates/town_buy3.php index 6a14ad7..bde332d 100644 --- a/templates/town_buy3.php +++ b/templates/town_buy3.php @@ -1,5 +1,19 @@
You may return to town, the item store, or use the direction buttons to continue exploring. diff --git a/templates/town_buy_itemrow.php b/templates/town_buy_itemrow.php index 0c6d3cf..31021ea 100644 --- a/templates/town_buy_itemrow.php +++ b/templates/town_buy_itemrow.php @@ -1,5 +1,19 @@ diff --git a/templates/town_buy_olditemrow.php b/templates/town_buy_olditemrow.php index a22068f..95018f5 100644 --- a/templates/town_buy_olditemrow.php +++ b/templates/town_buy_olditemrow.php @@ -1,5 +1,19 @@ diff --git a/templates/town_enter.php b/templates/town_enter.php index dd87197..ce5ca20 100644 --- a/templates/town_enter.php +++ b/templates/town_enter.php @@ -1,5 +1,19 @@ enter this town. END; diff --git a/templates/town_gamble1.php b/templates/town_gamble1.php index fc1a288..36ae1ef 100644 --- a/templates/town_gamble1.php +++ b/templates/town_gamble1.php @@ -1,5 +1,19 @@
Select a cup, enter a bet amount, and click the button to see if you win.

Easy gambling gives 2-to-1 payouts. Hard gambling gives 10-to-1 payouts, but it's a lot harder to win.

diff --git a/templates/town_halloffame.php b/templates/town_halloffame.php index 1508eb6..5677640 100644 --- a/templates/town_halloffame.php +++ b/templates/town_halloffame.php @@ -1,5 +1,19 @@
{{halltable}} diff --git a/templates/town_halloffamerow.php b/templates/town_halloffamerow.php index 72077cd..d391702 100644 --- a/templates/town_halloffamerow.php +++ b/templates/town_halloffamerow.php @@ -1,5 +1,19 @@ diff --git a/templates/town_inn1.php b/templates/town_inn1.php index 50d16dd..51e180f 100644 --- a/templates/town_inn1.php +++ b/templates/town_inn1.php @@ -1,5 +1,19 @@
A night's rest at this Inn will cost {{innprice}} gold. Is that ok?

diff --git a/templates/town_inn2.php b/templates/town_inn2.php index fcc7c03..81d583c 100644 --- a/templates/town_inn2.php +++ b/templates/town_inn2.php @@ -1,5 +1,19 @@
You may return to town, or use the direction buttons on the left to continue exploring. diff --git a/templates/town_map1.php b/templates/town_map1.php index a7f889a..d0954c5 100644 --- a/templates/town_map1.php +++ b/templates/town_map1.php @@ -1,5 +1,19 @@
Click a town name to purchase its map.

diff --git a/templates/town_map2.php b/templates/town_map2.php index d265bb1..b63e3fe 100644 --- a/templates/town_map2.php +++ b/templates/town_map2.php @@ -1,5 +1,19 @@
diff --git a/templates/town_map3.php b/templates/town_map3.php index 6beaae3..34b7b80 100644 --- a/templates/town_map3.php +++ b/templates/town_map3.php @@ -1,5 +1,19 @@
You may return to town, the map store, or use the direction buttons to continue exploring. diff --git a/templates/town_pvplist.php b/templates/town_pvplist.php index a07f9f4..60ce7f4 100644 --- a/templates/town_pvplist.php +++ b/templates/town_pvplist.php @@ -1,5 +1,19 @@
{{list}}
diff --git a/templates/users_chardelete.php b/templates/users_chardelete.php index ea1f994..6ab76bf 100644 --- a/templates/users_chardelete.php +++ b/templates/users_chardelete.php @@ -1,5 +1,19 @@ Deleting a character is permanent, and any data will be lost forever.

diff --git a/templates/users_charedit.php b/templates/users_charedit.php index 34939cf..abaacf6 100644 --- a/templates/users_charedit.php +++ b/templates/users_charedit.php @@ -1,5 +1,19 @@
{{image}}
{{image}}
diff --git a/templates/users_charlist.php b/templates/users_charlist.php index ce36314..4aa1b25 100644 --- a/templates/users_charlist.php +++ b/templates/users_charlist.php @@ -1,5 +1,19 @@
Your account currently has {{characters}} characters ({{remaining}} remaining).
diff --git a/templates/users_charlistnew.php b/templates/users_charlistnew.php index 05cdd59..9c9b6cc 100644 --- a/templates/users_charlistnew.php +++ b/templates/users_charlistnew.php @@ -1,5 +1,19 @@
You have not made any characters yet.

diff --git a/templates/users_charlistrow.php b/templates/users_charlistrow.php index 4b80b34..59407eb 100644 --- a/templates/users_charlistrow.php +++ b/templates/users_charlistrow.php @@ -1,5 +1,19 @@ @@ -9,6 +23,7 @@ $template = <<{{level}}
Exp: {{experience}}
Birthday: {{fregdate}}
+{{sigboturl}}
END; diff --git a/templates/users_charnew.php b/templates/users_charnew.php index 2a02cc6..737477f 100644 --- a/templates/users_charnew.php +++ b/templates/users_charnew.php @@ -1,5 +1,19 @@ diff --git a/templates/users_levelspell1.php b/templates/users_levelspell1.php index 5c1e30e..631ac12 100644 --- a/templates/users_levelspell1.php +++ b/templates/users_levelspell1.php @@ -1,5 +1,19 @@
You have {{levelspell}} point(s) to spend.

diff --git a/templates/users_levelspell2.php b/templates/users_levelspell2.php index fd20ae9..b791607 100644 --- a/templates/users_levelspell2.php +++ b/templates/users_levelspell2.php @@ -1,5 +1,19 @@
You now have {{levelspell}} points remaining to be used.

diff --git a/templates/users_levelup1.php b/templates/users_levelup1.php index dd98cb0..c9f69a1 100644 --- a/templates/users_levelup1.php +++ b/templates/users_levelup1.php @@ -1,5 +1,19 @@
Class: {{classname}}
diff --git a/templates/users_levelup2.php b/templates/users_levelup2.php index c865b67..383f408 100644 --- a/templates/users_levelup2.php +++ b/templates/users_levelup2.php @@ -1,5 +1,19 @@
You now have {{levelup}} points remaining to be used.

diff --git a/templates/users_onlinechar.php b/templates/users_onlinechar.php index e9b4376..7d40081 100644 --- a/templates/users_onlinechar.php +++ b/templates/users_onlinechar.php @@ -1,5 +1,19 @@
diff --git a/templates/users_profile.php b/templates/users_profile.php index ee268bb..42d3aee 100644 --- a/templates/users_profile.php +++ b/templates/users_profile.php @@ -1,5 +1,19 @@
diff --git a/templates/users_register1.php b/templates/users_register1.php index cec44ce..1274591 100644 --- a/templates/users_register1.php +++ b/templates/users_register1.php @@ -1,5 +1,19 @@ diff --git a/templates/users_settings.php b/templates/users_settings.php index 0cfd31d..298b71b 100644 --- a/templates/users_settings.php +++ b/templates/users_settings.php @@ -1,5 +1,19 @@
diff --git a/templates/users_verified.php b/templates/users_verified.php index cc3f45a..c77ae81 100644 --- a/templates/users_verified.php +++ b/templates/users_verified.php @@ -1,5 +1,19 @@
Click here to continue to the Login screen. diff --git a/town.php b/town.php index 805f297..5bdbd75 100644 --- a/town.php +++ b/town.php @@ -1,5 +1,19 @@ $b) { - // Default character. if ($b["id"] == $acctrow["activechar"]) { - $row["selectcharlist"] .= ""; - - if ($b["charpicture"] != "") { - $b["avatar"] = "\"".$b["charname"]."\""; - } else { - $b["avatar"] = "\"".$b["charname"]."\""; - } $b["isdefault"] = "(Default)"; - $row["fullcharlist"] .= parsetemplate(gettemplate("users_charlistrow"), $b); - - // Non-default characters. } else { - $row["selectcharlist"] .= ""; - - if ($b["charpicture"] != "") { - $b["avatar"] = "\"".$b["charname"]."\""; - } else { - $b["avatar"] = "\"".$b["charname"]."\""; - } $b["isdefault"] = ""; - $row["fullcharlist"] .= parsetemplate(gettemplate("users_charlistrow"), $b); - } + + if ($b["charpicture"] != "") { + $b["avatar"] = "\"".$b["charname"]."\""; + } else { + $b["avatar"] = "\"".$b["charname"]."\""; + } + + if ($controlrow["showsigbot"] == 1) { + $sigboturl = $controlrow["gameurl"] . "sigbot/" . $userrow["id"] . ".png"; + $b["sigboturl"] = "SigBot URL: $sigboturl
"; + } else { + $b["sigboturl"] = ""; + } + $row["fullcharlist"] .= parsetemplate(gettemplate("users_charlistrow"), $b); + } display("Characters", parsetemplate(gettemplate("users_charlist"), $row)); @@ -614,6 +623,7 @@ function levelspell() { for($i=0; $i<$total; $i++) { if ($_POST["spell".$i] != 0) { if (!isset($spells[$_POST["spell".$i]])) { err("That spell doesn't exist."); } + if ($_POST["slot".$i] == 0) { err("You didn't select a valid slot for one of your spells."); } $userrow["spell".$_POST["slot".$i]."id"] = $_POST["spell".$i]; $userrow["spell".$_POST["slot".$i]."name"] = $spells[$_POST["spell".$i]]["name"]; $userrow["levelspell"]--; diff --git a/verify.php b/verify.php index 368d82d..759fb8e 100644 --- a/verify.php +++ b/verify.php @@ -1,5 +1,19 @@