/newhero.php
PHP | 523 lines | 426 code | 63 blank | 34 comment | 43 complexity | 9313cf2a983ee6dc9a44393a78ebca25 MD5 | raw file
Possible License(s): AGPL-3.0, LGPL-2.1
- <?php
- /* newhero.php - Front-end code adding a new hero for a logged-in user
- *
- * Copyright (C) 2006, 2007, 2008 Kevin Read, Simone Schaefer
- *
- * This file is part of Selador, a browser-based fantasy strategy game
- *
- * This program is distributed under the terms of the GNU Affero General Public License.
- *
- *
- * Selador is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * any later version.
- *
- * Selador is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with Selador. If not, see <http://www.gnu.org/licenses/>.
- **/
- @header ("Content-Type: text/html; charset=UTF-8");
- @session_start ();
- if (!isset ($_SESSION['authed_user']) || !isset ($_SESSION['email_ok']))
- {
- require_once ("php/auth.php");
- ShowAuth();
- die ();
- }
- if (!$_SESSION['email_ok'])
- {
- require_once ("activate.php");
- die ();
- }
- require_once ("php/base_functions.php");
- require_once ("php/base_outside.php");
- require_once ("php/base/config.inc.php");
- require_once ("php/base/functions.inc.php");
- // require_once ("auth.php");
- $glob_log = array ();
- ?>
- <!-- <div id="background"></div> -->
- <?php
- require_once("header_extern.php");
- echo '</head>';
- require_once("menue_portal.php");
- echo '<div id="zentriert">
- <div id="contentbox">';
- ?>
- <!--<img src="gfx/steinhaus.jpg">-->
- <!--<div id="leiste-links" style="background-image:url(styles/sun/leiste-links.png);height:440px">
- <div id="angriffe">Held erstellen</div>
- <div id="rohstoffe">
- <span style="font-size:12px;">Hilfe zu den allgemeinen Benutzerdaten findest du <a href="hilfe_anmeldung.php" target="_blank">hier</a>.<br><br> Das [?] gibt Hilfe zu einem bestimmten Menüpunkt</span></div></div>-->
- <div id="forschung" style="left:70px">
- <div id="seite-links" >
- <?php
- require_once ("php/base/user.inc.php");
- require_once ("php/base/AuthDB.inc.php");
- require_once ("php/auxiliary.php");
- if (!isset ($authdb))
- $authdb = new AuthDB;
- $db = new GameDB;
- if (isset ($_GET['debug']))
- $debug = true;
- if (!isset($_POST['nhsubmit']))
- {
- $show_screen = true;
- }
- else
- {
- $userid = $_SESSION['authed_uid'];
- $username = $_SESSION['authed_user'];
- $email = $_SESSION['authed_email'];
- $pw1 = $_SESSION['pwh'];
- if ((isset ($_POST['ecke'])) && (strlen ($_POST['ecke']) > 0))
- $ecke = $_POST['ecke'];
- else
- $errmsg .= "Ungültige Startecke.<br>";
- if ((isset ($_POST['Volk'])) && (strlen ($_POST['Volk']) > 0))
- $Volk = $_POST['Volk'];
- else
- $errmsg .= "Ungültiges Volk.<br>";
- if ((isset ($_POST['klasse'])) && (strlen ($_POST['klasse']) > 0))
- $klasse = $_POST['klasse'];
- else
- $errmsg .= "Ungültige Klasse.<br>";
- if (isset ($_POST['geschlecht']))
- $herosex = (int)$_POST['geschlecht'];
- else
- $errmsg .= "Ungültiges Geschlecht.<br>";
- if (!isset($_POST['accept']) || (int)$_POST['accept'] == 0)
- $errmsg .= "Du musst die AGB akzeptieren, um die anzumelden. ";
- $query = "select * from user where user like \"".$username."\"";
- $result = mysql_query ($query);
- if (mysql_num_rows ($result) > 0)
- $errmsg .= "In dieser Welt hast Du bereits einen Helden!.<br>";
- if ($errmsg)
- $show_screen = true;
- else
- {
- $world = new World;
- $world->ConnectWorld();
- $xw = $world->sizex;
- $yw = $world->sizey;
- $xwh = (int)($xw / 2);
- $ywh = (int)($yw / 2); // Select starting avatar
- if ($Volk == 1)
- {
- // humans get the unisex avatar
- $avatar = "gfx/a/all.png";
- }
- else
- {
- // orc avatars depend on sex
- // if ($herosex == 1) // not yet, we don't have any orc females :(
- $avatar = "gfx/a/o/m/1.png";
- /* else
- $avatar = "gfx/a/o/ */
- }
- switch ($ecke)
- {
- case 'nordwesten':
- $query = "select x, y, sqrt((".$xwh."-x)*(".$xwh."-x) + (".$ywh."-y)*(".$ywh."-y)) as dist from startvillage where x < ".$xwh." and y < ".$ywh." order by dist";
- break;
- case 'nordosten':
- $query = "select x, y, sqrt((".$xwh."-x)*(".$xwh."-x) + (".$ywh."-y)*(".$ywh."-y)) as dist from startvillage where x >= ".$xwh." and y < ".$ywh." order by dist";
- break;
- case 'suedwesten':
- $query = "select x, y, sqrt((".$xwh."-x)*(".$xwh."-x) + (".$ywh."-y)*(".$ywh."-y)) as dist from startvillage where x < ".$xwh." and y >= ".$ywh." order by dist";
- break;
- case 'suedosten':
- $query = "select x, y, sqrt((".$xwh."-x)*(".$xwh."-x) + (".$ywh."-y)*(".$ywh."-y)) as dist from startvillage where x >= ".$xwh." and y >= ".$xwh." order by dist";
- break;
- default:
- echo "Baaah!";
- die();
- break;
- }
- mysql_query ("start transaction");
- if (!($res = mysql_query ($query)))
- {
- $err = true;
- mini_log_err ("region select query failed: ".$query.": ".mysql_error());
- }
- if ($row = mysql_fetch_array ($res))
- {
- // FIXME: This definitely should be semaphored and be done without autocommiting
- $query = 'insert into user (uid, user, name, password, perms, created, race, class, hero_sex, email, last_healed, hero_health, msgs) values ('.$userid.', "'.$username.'", "", md5("'.$pw1.'"), 0, now(), '.$Volk.', '.$klasse.', '.$herosex. ', "'.$email.'", now(), 500, 1)';
- // echo $query;
- if (!mysql_query ($query))
- {
- $err = true;
- mini_log_err ("User insert query failed: ".$query.": ".mysql_error());
- mysql_query ("rollback");
- }
- else
- {
- $query = "insert into village (uid, original_uid, name, x, y, resmax, ress1, ress2, ress3, ress4, stamp, buildspeed, expansion) values (".$userid.", ".$userid.", \"".$username."s Stadt\", ".$row['x'].", ".$row['y'].", " . LVL1_STORAGE . ", 3500, 3500, 3500, 200, now(), 1.0, 0)";
- // echo $query."<br>";
- if (!mysql_query ($query))
- {
- $err = true;
- mini_log_err ("Village insert query failed: ".$query.": ".mysql_error());
- mysql_query ("rollback");
- }
- else
- {
- $villageid = mysql_insert_id ();
- $query = "delete from startvillage where x = ".$row['x']." and y = ".$row['y'];
- // echo $query."<br>";
- if (!mysql_query ($query))
- {
- $err = true;
- mini_log_err ("startvillage delete query failed: ".$query.": ".mysql_error());
- mysql_query ("rollback");
- }
- else
- {
- AllocResTiles ($userid, $villageid, $row['x'], $row['y']);
- $x = $row['x'];
- $y = $row['y'];
- // Insert starting main building and storage
- $query = "insert into villbuild values (".$villageid.", 1, 1),(".$villageid.", 6, 1)";
- if (!mysql_query ($query))
- {
- mini_log_err ("Cannot insert bergfried and storage for starting village. Query: ".$query.", ".mysql_error());
- $err = true;
- mysql_query ("rollback");
- }
- else
- {
- $query = "update tileres set level=1 where x=".($row['x']-1)." and y=".$row['y'];
- if (!mysql_query ($query))
- {
- mini_log_err ("Cannot update starting village ress tiles. Query: ".$query.", ".mysql_error());
- $err = true;
- mysql_query ("rollback");
- }
- else
- {
- $query = "update tileres set level=1 where x=".($row['x']+1)." and y=".$row['y'];
- if (!mysql_query ($query))
- {
- mini_log_err ("Cannot update starting village ress tiles. Query: ".$query.", ".mysql_error());
- mysql_query ("rollback");
- $err = true;
- }
- else
- {
- $query = "update tileres set level=1 where x=".$row['x']." and y=".($row['y']+1);
- if (!mysql_query ($query))
- {
- mysql_query ("rollback");
- mini_log_err ("Cannot update starting village ress tiles. Query: ".$query.", ".mysql_error());
- $err = true;
- }
- else
- {
- $query = "update tileres set level=1 where x=".$row['x']." and y=".($row['y']-1);
- if (!mysql_query ($query))
- {
- mini_log_err ("Cannot update starting village ress tiles. Query: ".$query.", ".mysql_error());
- $err = true;
- mysql_query ("rollback");
- }
- else
- {
- $query = "insert into hero (uid,att,hp,ini,survival,speed,damage,capacity,level,p1,p2,p3,m1,m2,m3,points_p,points_m,regen) values (".$userid.", 60, 500, 60, 80, 200, 150, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 50)";
- if (!mysql_query ($query))
- {
- mini_log_err ("Cannot insert starting hero values. Query: ".$query.", ".mysql_error());
- $err = true;
- mysql_query ("rollback");
- }
- else
- {
- $me = new User;
- $me->uid = $userid;
- $me->becomeUserByUid($userid);
- $me->CalcResearch (true);
- $me->UpdateResTile (0, 0, 0, 0, $villageid);
- $me->CalculateVillageProd($villageid);
- $world->ClearMapCache ($x, $y);
- $world->ClearLandCache ($x, $y);
- $query = "insert into armies (villageid,uid,flag,location) values (".$villageid.", ".$userid.", 0, ".$villageid.")";
- if (!mysql_query ($query))
- {
- mysql_query ("rollback");
- mini_log_err ("Couldn't insert starting army for new user. Query: ".$query.", ".mysql_error ());
- $err = true;
- }
- else
- {
- $troopid = mysql_insert_id ();
- $query = "insert into troops select ".$troopid.",unitid,0 from units where raceid=".$Volk;
- if (!mysql_query ($query))
- mini_log_err ("Couldn't insert starting troops for new user. Query: ".$query.", ".mysql_error ());
- $query = "insert into troops values (".$troopid.", 1000, 1)";
- if (!mysql_query ($query))
- {
- mini_log_err ("Couldn't insert starting hero troop for new user. Query: ".$query.", ".mysql_error ());
- mysql_query ("rollback");
- $err = true;
- }
- else
- {
- unset($query);
- $query='insert into profile (userid, sex, birthday, realname, city, icq, description, picture) values ('.$userid.', '.$herosex.', "0000-00-00", "keine Angabe", "keine Angabe", "", "", "'.$avatar.'")';
- if (!mysql_query ($query))
- {
- mini_log_err ("Couldn't insert starting profile for new user. Query: ".$query.", ".mysql_error ());
- }
- $query = "update user set hero_location=".$villageid." where uid=".$userid;
- if (!mysql_query ($query))
- {
- mysql_query ("rollback");
- mini_log_err ("Couldn't insert hero starting location for new user. Query: ".$query.", ".mysql_error ());
- $err = true;
- }
- else
- {
- $query = "select max(ranking) from ranking";
- if (!($res = mysql_query ($query)))
- {
- mini_log_err ("Cannot read max ranking. Query: ".$query.", ".mysql_error ());
- }
- if (!($row = mysql_fetch_row ($res)))
- {
- mini_log_err ("No rows found when reading max ranking. Query: ".$query.", ".mysql_error ());
- }
- else
- {
- $query = "insert into ranking values (".$userid.", ".((int)$row[0] + 1).")";
- if (!mysql_query ($query))
- mini_log_err ("Cannot add bad ranking for new hero. Query: ".$query.", ".mysql_error ());
- }
- mysql_query ("commit");
- $query = 'insert into worlds_players values ("'.WORLDNAME.'", '.$userid.', 1, '.$klasse.', '.$Volk.')';
- if (!$authdb->query ($query))
- mini_log_err ("Couldn't insert worlds_players entry for new hero. Query: ".$query.", ".$authdb->error());
- else
- {
- if (SEND_MAILS)
- {
- require_once ("php/base/mail.inc.php");
- $mail->From = "support@selador.de";
- $mail->FromName = "Selador-Portal";
- $mail->AddAddress($email); // name is optional
- $mail->Subject = "Dein Held betritt Welt \"".WORLDTITLE."\"";
- $text_body = "Hallo ".$username.",\r\n\r\n".
- "Dein Held hat die Welt \"".WORLDTITLE."\" betreten. Du kannst dich jederzeit über den Link ".
- "http://www.selador.de/ in der Spielewelt anmelden.\r\n\r\n".
- "Viel Erfolg in dieser Welt wünscht dir das Selador-Team.";
- $html_body = "<html><body><p>Hallo ".$username.",</p>".
- "<p>Dein Held hat die Welt \"".WORLDTITLE."\" betreten. Du kannst dich jederzeit über den Link ".
- "<a href=\"http://www.selador.de/\">http://www.selador.de/</a> in der Spielewelt anmelden.</p>".
- "<p>Viel Erfolg in dieser Welt wünscht dir das Selador-Team.</p></body></html>";
- $mail->Body = $html_body;
- $mail->AltBody = $text_body;
- if(!$mail->Send())
- {
- echo "Die Mail konnte nicht gesendet werden...";
- }
- }
- unset ($_SESSION['first_login']);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- if (!isset ($err))
- {
- echo "<span class=\"success\">Erfolgreich angelegt. Du hast noch einmal eine Mail mit der Bestätigung darin erhalten. <a href=\"index.php\" class=\"dark\">Hier kannst du jetzt die Welt betreten</a></span>";
- //willkommensnachricht senden
- $supportid = SUPPORT_UID;
- $supportname = "support";
- $recip = $userid;
- $subject = mysql_real_escape_string ("Willkommen in Selador");
- $body = mysql_real_escape_string ("Schön, dass du den Weg zu uns gefunden hast. Wenn du Fragen hast, kannst du dich jederzeit an unser Forum oder an den Chat wenden. Die Links zu beiden findest du unten in der Menüleiste. Im Forum kannst du dich mit deinen Benutzerdaten aus dem Spiel einloggen, im Chat wirst du automatisch eingeloggt, wenn du auf den Link klickst. Wenn du neu in Selador bist oder gar noch nie ein Browsergame gespielt hast, solltest du zunächst einmal das Tutorial bestreiten. Ausserdem gibt es eine Hilfe im Menü, die sehr ausführlich alle Aspekte des Spiels beschreibt.\n\nViel Spaß wünscht dir dein Selador-Team!");
- $query = "insert into messages (sender,recip,subject,body,msg_read,sent,archived,name,snd_del) values (";
- $query .= $supportid.",".$recip.",'".$subject."','".$body."',0,now(),0,'".$supportname."',1)";
- if (!$db->query($query))
- {
- mini_log_err ("Couldn't insert welcome message for new user. Query: ".$query.", ".$db->error ());
- }
- }
- else
- echo "<br><br><b>Es ist leider ein Datenbank-Fehler aufgetreten. Tut uns leid :(</b>\n";
- }
- else
- {
- echo "<br><b><h1>Es konnte leider keine freie Stadt gefunden werden. Bitte zurück und eine andere Region wählen! Query: ".$query."</h1></b>";
- }
- }
- }
- if ($show_screen)
- {
- echo "<h3>Erstellung des Helden <a href=\"hilfe.php?Page=775\" target=\"_blank\">[?]</a></h3>";
- if (isset ($errmsg))
- echo "<br><b><span class=\"error\">".$errmsg."</span></b></p>";
- /*echo '<p>Du kannst in jeder Selador-Welt einen Helden haben.</p>';
- echo '<p>Dein Held führt dein Volk an und sorgt für ihr Überleben in Selador. Du kannst auswählen, in welchem Teil von Selador du beginnen möchtest - falls du mit Freunden zusammen anfängst, könnt ihr die gleiche Ecke wählen.</p>';
- echo '<p>Du musst auch wählen, zu welchem Volk du gehören möchtest. Die besser organisierten Menschen bevorzugen dicke Mauern und starke Rüstungen, um sich gut zu verteidgen. Die schnellen Orks nehmen genauso gern von ihren Nachbarn wie aus ihren eigenen Goldminen und greifen gerne in großen Massen an.</p>';*/
- // echo '</div>';
- //echo '<div id="seite-links">';
- echo "<form name=\"bla\" action=\"newhero.php\" method=\"post\">";
- echo '<table class="border"><tr><th class="bold" >Startecke<a target="_blank" href="hilfe.php?Page=778"> [?]</a></td></tr>';
- echo '<tr><td>';
- echo '<input type="radio" name="ecke" value="nordwesten"';
- if ($_POST['ecke'] == "nordwesten") echo " checked=\"checked\"";
- echo '> Nordwesten';
- // (= mehr Stein)
- echo '<br>';
- echo '<input type="radio" name="ecke" value="nordosten"';
- if ($_POST['ecke'] == "nordosten") echo " checked=\"checked\"";
- echo '> Nordosten ';
- //(= mehr Eisen)
- echo '<br>';
- echo '<input type="radio" name="ecke" value="suedwesten"';
- if ($_POST['ecke'] == "suedwesten") echo " checked=\"checked\"";
- echo '> Südwesten ';
- echo '<br>';
- echo '<input type="radio" name="ecke" value="suedosten"';
- if ($_POST['ecke'] == "suedosten") echo " checked=\"checked\"";
- echo '> Südosten';
- // (= mehr Holz)
- echo '</td></tr>';
- echo '<tr><th class="bold">Volk<a href="hilfe.php?Page=780" target="_blank"> [?]</a></th></tr><tr><td>';
- /*echo 'Holz, Stein und Eisen sind gleichermaßen für den Ausbau von Gebäuden und Minen wichtig. Holz und Eisen wird darüberhinaus zum Ausbau von Truppen benötigt. Nahrung wird gebraucht um Einheiten ernähren zu können.</td></tr>';
- echo '<tr id="rundrum"><td id="rundrum"><b>Volk</b></td><td id="rundrum">';
- echo 'Jedes der Völker hat ihre eigenen Vorteile. Generell lässt sich sagen, dass Menschen eher defensiv veranlagt sind und Orks eher offensiv. ';
- echo 'Es lässt sich aber genauso gut auch eine offensive Spielweise beim Menschen und eine defensive Spielweise bei Orks verwirklichen.<br> ';
- echo 'Wenn du mehr Infos brauchst, schau dir mal das <a href="simone/hilfe.pdf">Handbuch</a> an.<br>';*/
- $query = "select * from races";
- $result = mysql_query ($query);
- while ($row = mysql_fetch_assoc($result))
- {
- echo "<input type=\"radio\" name=\"Volk\" value=\"".$row["raceid"]."\"";
- if ($Volk == $row['raceid'])
- echo " checked=\"checked\"";
- echo "> ".$row["name"]."<br>\n";
- }
- echo "</td></tr>";
- echo "<tr><th class=\"bold\">Klasse <a href=\"hilfe.php?Page=779\" target=\"_blank\"> [?]</a></th></tr><tr><td>";
- $query = "select * from classes";
- $result = mysql_query ($query);
- while ($row = mysql_fetch_assoc($result))
- {
- echo "<input type=\"radio\" name=\"klasse\" value=\"".$row["classid"]."\"";
- if ($klasse == $row['classid'])
- echo " checked=\"checked\"";
- echo "> ".$row["name"]."<br>\n";
- }
- echo "</td></tr>";
- echo '<tr><th class="bold">Geschlecht</th></tr><tr><td><input type="radio" name="geschlecht" value="1"> männlich<br><input type="radio" name="geschlecht" value="2"> weiblich</td></tr>';
- echo "<tr class=\"iterate\"><td ><input type=\"checkbox\" name=\"accept\" value=\"1\"> Ich akzeptiere die <a href=\"agb.php\" target=\"_blank\">AGB </a> und die <a href=\"regeln.php\" target=\"_blank\">Regeln </a> und möchte mich<br><br> <input type=\"submit\" name=\"nhsubmit\" value=\"Anmelden\"></td></tr></table></form><p>";
- echo '</div><div id="seite-rechts"><span class="info">Wenn du gerne mehr über die einzelnen Punkte erfahren möchtest, klicke einfach auf das dazugehörige [?]-Symbol.</span>';
- }
- ?>
- </div>
- </body></html>