| 
	
		
		
			| Новые уроки по создание броузерной игры – 4 |  |  |  | 
| last2424 | Дата: Четверг, 07 Августа 2014, 15:42 | Сообщение # 1 |  |   30 мл. блоков Сейчас нет на сайте | Боже мой, 7-8 дней не было уроков и тут вдруг я объявился, мдя… Что же перейдём к делу. В этом уроке мы с вами закончим регистрацию, а именно создание персонажа. 
 <<< Предыдущий урок
 
 Создайте папку image(там будут лежать наши картинки). И залейте туда картинки из этого архива.
 
 Теперь перейдём к коду, создаёте файлы charcreater.php и charcreater_up.php.
 Первый файл главный, второй файл отвечает за php код которого много.
 
 Записываем в charcreater.php следующее:
 
 
 Код  <? include 'conf.php';
 ?>
 <!DOCTYPE html>
 <html>
 <head>
 <title>THE BEST GAME</title>
 <link rel="stylesheet" type="text/css" href="stylereg.css">
 </head>
 <body>
 <?php
 include 'charcreater_up.php';
 if ($char_class == "") {
 ?>
 <center>
 <form action="" method="get">
 <table><tr><td colspan="3"><b>Выберите персонажа</b></td></tr>
 <tr>
 <td width=200px><img src="images/warrior.jpg"/></td>
 <td width=200px><img src="images/archer.jpg"/></td>
 <td width=200px><img src="images/wizard.jpg"/></td>
 </tr>
 <tr>
 <td width=200px><input type="radio" name="char_class" value="warrior" >Воин</input></td><td width=200px><input type="radio" name="char_class" value="archer">Лучник</input></td><td width=200px><input type="radio" name="char_class" value="wizard">Волшебник</input></td>
 </tr>
 <tr><td colspan="3"><input type="submit" value="Далее  >>>" /></td></tr>
 </table>
 </form>
 </center>
 <?php
 }
 ?>
Как можно видеть это почти обычный html файл, только он вставляет файлы conf.php и charcreater_up.php, а также делает проверку если класс персонажа не выбран, тогда выводим всё что мужду {}, если выбрал тогда выводим то что записано в charcreater_up.php.
 
 Теперь сделаем charcreater_up.php:
 
 
 Код  <?php $chardb = $users->findOne(array('login' => $_SESSION['login_player']));
 
 $lvl = $chardb['lvl'];
 $xp = $chardb['xp'];
 $hp = $chardb['hp'];
 $mn = $chardb['mn'];
 $strength = $chardb['strength'];
 $speed = $chardb['speed'];
 $intelligence = $chardb['intelligence'];
 $faith = $chardb['faith'];
 $count_up = $chardb['count_up'];
 $class = $chardb['charaster_class'];
 $char_class = $_GET['char_class'];
 if ($char_class == "warrior"){
 echo "Выбран персонаж <b>Воин</b><br/>";
 $class = $char_class;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("charaster_class" => $class)));
 echo "Настройка характеристик:<br/>";
 echo '<form action="charcreater.php?char_class=warrior" method="post">';
 echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>';
 echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>';
 echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>';
 echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>';
 echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>';
 echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>';
 echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>';
 echo "</form>";
 if(isSet($_POST['hp']) && $count_up != 0){
 $hp+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("hp" => $hp, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior";
 </script>';
 }
 if(isSet($_POST['mn']) && $count_up != 0){
 $mn+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("mn" => $mn, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior";
 </script>';
 }
 if(isSet($_POST['strength']) && $count_up != 0){
 $strength+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("strength" => $strength, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior";
 </script>';
 }
 if(isSet($_POST['speed']) && $count_up != 0){
 $speed+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("speed" => $speed, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior";
 </script>';
 }
 if(isSet($_POST['intelligence']) && $count_up != 0){
 $intelligence+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("intelligence" => $intelligence, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior";
 </script>';
 }
 if(isSet($_POST['faith']) && $count_up != 0){
 $faith+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("faith" => $faith, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior";
 </script>';
 }
 }
 if ($char_class == "archer"){
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("charaster_class" => $char_class)));
 echo "Выбран персонаж <b>Лучник</b><br/>";
 echo "Настройка характеристик:<br/>";
 echo "<form action='charcreater.php?char_class=archer' method='post'>";
 echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>';
 echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>';
 echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>';
 echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>';
 echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>';
 echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>';
 echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>';
 echo "</form>";
 if(isSet($_POST['hp']) && $count_up != 0){
 $hp+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("hp" => $hp, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer";
 </script>';
 }
 if(isSet($_POST['mn']) && $count_up != 0){
 $mn+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("mn" => $mn, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer";
 </script>';
 }
 if(isSet($_POST['strength']) && $count_up != 0){
 $strength+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("strength" => $strength, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer";
 </script>';
 }
 if(isSet($_POST['speed']) && $count_up != 0){
 $speed+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("speed" => $speed, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer";
 </script>';
 }
 if(isSet($_POST['intelligence']) && $count_up != 0){
 $intelligence+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("intelligence" => $intelligence, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer";
 </script>';
 }
 if(isSet($_POST['faith']) && $count_up != 0){
 $faith+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("faith" => $faith, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer";
 </script>';
 }
 }
 if ($char_class == "wizard"){
 $class = $char_class;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("charaster_class" => $class)));
 echo "Выбран персонаж <b>Волшебник</b><br/>";
 echo "Настройка характеристик:<br/>";
 echo "<form action='charcreater.php?char_class=wizard' method='post'>";
 echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>';
 echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>';
 echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>';
 echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>';
 echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>';
 echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>';
 echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>';
 echo "</form>";
 if(isSet($_POST['hp']) && $count_up != 0){
 $hp+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("hp" => $hp, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard";
 </script>';
 }
 if(isSet($_POST['mn']) && $count_up != 0){
 $mn+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("mn" => $mn, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard";
 </script>';
 }
 if(isSet($_POST['strength']) && $count_up != 0){
 $strength+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("strength" => $strength, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard";
 </script>';
 }
 if(isSet($_POST['speed']) && $count_up != 0){
 $speed+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("speed" => $speed, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard";
 </script>';
 }
 if(isSet($_POST['intelligence']) && $count_up != 0){
 $intelligence+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("intelligence" => $intelligence, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard";
 </script>';
 }
 if(isSet($_POST['faith']) && $count_up != 0){
 $faith+=1;
 $count_up-=1;
 $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("faith" => $faith, "count_up" => $count_up)));
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard";
 </script>';
 }
 if($count_up == 0){
 echo "<a href='game.php'>Распределить</a>";
 }
 
 }
 ?>
Тут всё проще, по сути тут 3 раза почти повторяется один и тот же код, различия в них только между названием классов, а так они почти одинаковы.
 Код срабатывает только если класс персонажа выбрал, тогда он выводить строчку “Вы выбрали персонажа …” и создаёт, как бы это сказать, ну давайте назовём это окном распределения очков, их даётся игроку 50 и он может выбрать что нам нужно, здоровье, ману, силу, скорость, интеллект или веру.
 
 Ах да, совсем забыл сказать что файл reg.php тоже надо отредактировать.
 
 
 Код  <? include 'conf.php'; //подключаем конфиг
 $select = $users->findOne(array('login' => $_POST['login']));
 if(isSet($_POST['regestration']) && $_POST['password'] == $_POST['repassword'] && preg_match('/[0-9a-zA-Z]/', $_POST['password']) && preg_match('/[0-9a-zA-Z]/', $_POST['login']) && $_POST['login'] != $select['login']){ //если пароли одинаковы и в них вообще чего-нибудь написано
 $users->insert( //запись в бд
 array(
 'login' => $_POST['login'], //логин пользователя
 'password' => $_POST['password'], //пароль пользователя
 'email' => $_POST['email'], //эмэйл пользователя
 //основные характеристики персонажа
 'charaster_class' => "",
 'lvl' => 1,
 'xp' => 0,
 'hp' => 100,
 'mn' => 100,
 //второстепенные характеристики персонажа
 'strength' => 0,
 'speed' => 0,
 'intelligence' => 0,
 'faith' => 0,
 'count_up' => 50
 ));
 $_SESSION['login_player'] = $_POST['login'];
 echo '<script>
 document.location.href = "http://25.120.133.229/charcreater.php";
 </script>';//и переходим на страницу с созданием персонажа
 }
 ?>
 <!DOCTYPE html>
 <html>
 <head>
 <title>THE BEST GAME</title>
 <link rel="stylesheet" type="text/css" href="stylereg.css">
 </head>
 <form action="reg.php" method="post">
 <body>
 <input type="text" placeholder="Login" name="login" class="textinputlogin"/>
 <input type="email" placeholder="Email" name="email" class="textinputemail"/>
 <input type="password" placeholder="Password" name="password" class="textinputpassword"/>
 <input type="password" placeholder="Repeat password" name="repassword" class="textinputrepassword"/>
 <input type="submit" value="Зарегистрироваться" name="regestration" class="button"/>
 </form>
 </body>
 </html>
 Немного изменён код, теперь нельзя регистрировать персонажей с одинаковыми никами, добавил параметр “count_up” и изменил некоторые старые параметры.
 
 Ну вот вроде бы, как и всё, урок получился коротким. Всем удачи я пошёл пить чай
   P.S. меняйте адрес http://25.120.133.229/ на свой.
 
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет)
 
 Сообщение отредактировал last2424 - Четверг, 07 Августа 2014, 15:43 |  |  |  |  |  | 
| DeadDay | Дата: Четверг, 07 Августа 2014, 16:03 | Сообщение # 2 |  |   New game Studio Сейчас нет на сайте | 1. Что я увидел. Так это таблицы... last2424, этого не должно быть вообще. Мы с тобой живём в 21 в. и их уже практически не используют при вёрстке. Только таблиц и всё...... За это -.. 
 Используй блочную вёрстку. <div>, тебе в помощь. Если делаешь уроки, учи хорошему тону и остальных.
 
 2.
 
 Цитата <script> document.location.href = "http://25.120.133.229/charcreater.php";
 </script>';//и переходим на страницу с созданием персонажа
 Чем тебе не сутраивает:
 
 
 Цитата header('Location: index.php?cl=2');
 3. Делаю урок, внедряй как можно больше комментов. Как в коде, так у тут.
 
 Лично для себя, нового не увидел ни чего. А для новичков полезная инфа будет. Удачи.
 
 
   New Games Studio
 ---------------------------------------------------------------------------------------
 Проекты:
 DeadDay - Online
 --- Мертвый день: Выживание
 |  |  |  |  |  | 
| last2424 | Дата: Четверг, 07 Августа 2014, 17:53 | Сообщение # 3 |  |   30 мл. блоков Сейчас нет на сайте | DeadDay, html часть делал не я, а мой друган, я и сам бы мог сделать её но он пришёл и сам взял html часть, я только php часть сделал. У него руки из одного места для дивов он их материт во всю, вот и таблицы в коде. Добавлено (07.08.2014, 17:53)---------------------------------------------
 DeadDay, мне не удобен хедер, либо у меня руки из жопы что бы его использовать либо он у меня и вправду не работает, когда я его использую у меня куча ошибок возникает.
  
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  |  | 
| DeadDay | Дата: Четверг, 07 Августа 2014, 18:21 | Сообщение # 4 |  |   New game Studio Сейчас нет на сайте | last2424, Ну это ладно. Но всё равно, на будующие, используйте <div>. 
 Смотря какие ошибки. Возможно у тебя перед header что то выводиться "echo" и ещё что то. А это крайне не допускается. Хорошенько поштудируй про "header", и всё будет ровно..
 
 
   New Games Studio
 ---------------------------------------------------------------------------------------
 Проекты:
 DeadDay - Online
 --- Мертвый день: Выживание
 |  |  |  |  |  | 
| last2424 | Дата: Четверг, 07 Августа 2014, 19:43 | Сообщение # 5 |  |   30 мл. блоков Сейчас нет на сайте | DeadDay, мдя, больше я не буду давать ему верстать. Следующий урок в скором времени не обещаю, я хочу написать вам нормальный сервер который не умирает после первого соеденения.
 
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  |  | 
| Folleah | Дата: Четверг, 07 Августа 2014, 20:07 | Сообщение # 6 |  |   Архитектор Сейчас нет на сайте | Цитата echo "Настройка характеристик:<br/>"; echo '<form action="charcreater.php?char_class=warrior" method="post">';
 echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>';
 echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>';
 echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>';
 echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>';
 echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>';
 echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>';
 echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>';
 echo "</form>";
И тут мои глаза покрылись кровью.
 
 
   |  |  |  |  |  | 
| last2424 | Дата: Четверг, 07 Августа 2014, 20:28 | Сообщение # 7 |  |   30 мл. блоков Сейчас нет на сайте | Folleah, я знать, у меня тоже такое чувство было, я потом сделаю бонус урок по оптимизаций всего этого дела.   
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  |  | 
| DeadDay | Дата: Четверг, 07 Августа 2014, 20:45 | Сообщение # 8 |  |   New game Studio Сейчас нет на сайте | и не используй кнопки. делай ссылками, и переменные передавай ими. 
 
   New Games Studio
 ---------------------------------------------------------------------------------------
 Проекты:
 DeadDay - Online
 --- Мертвый день: Выживание
 |  |  |  |  |  | 
| last2424 | Дата: Понедельник, 11 Августа 2014, 18:35 | Сообщение # 9 |  |   30 мл. блоков Сейчас нет на сайте | А я ожидал срач в теме.Почему не пишите нехрена?
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  |  | 
| DeadDay | Дата: Понедельник, 11 Августа 2014, 20:19 | Сообщение # 10 |  |   New game Studio Сейчас нет на сайте | Да особо то и не о чем срач то разводить. Все просто и эллементарно. Своё мнение я высказал. Оптимизировай код, блочная вёрстка и т.д. 
 
   New Games Studio
 ---------------------------------------------------------------------------------------
 Проекты:
 DeadDay - Online
 --- Мертвый день: Выживание
 |  |  |  |  |  | 
| last2424 | Дата: Среда, 13 Августа 2014, 14:48 | Сообщение # 11 |  |   30 мл. блоков Сейчас нет на сайте | DeadDay, я о другом.   
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  |  | 
| Saitei | Дата: Среда, 13 Августа 2014, 14:57 | Сообщение # 12 |  | старожил Сейчас нет на сайте | Цитата last2424 (  ) DeadDay, я о другом. biggrin
 
 
 Сообщение отредактировал Saitei - Среда, 13 Августа 2014, 14:57 |  |  |  |  |  | 
| al_mt | Дата: Среда, 13 Августа 2014, 16:09 | Сообщение # 13 |  | постоянный участник Сейчас нет на сайте | А ссылку на делаемую игру есть? |  |  |  |  |  | 
| Eldrine | Дата: Среда, 13 Августа 2014, 16:28 | Сообщение # 14 |  |   заслуженный участник Сейчас нет на сайте | Уроки ПО созданиЕ брОузерной игры?  Без обид, чувак ты крут;) 
 Модели оружия для CS:S
 |  |  |  |  |  | 
| last2424 | Дата: Четверг, 14 Августа 2014, 19:30 | Сообщение # 15 |  |   30 мл. блоков Сейчас нет на сайте | Завтра, послезавтра следующий урок, там начнём делать уже что то интересное, поработаем с аяксом, возможно сделаем отключение курицелапой(если ко мне не приедет озарение), без всяких лишних обновлений, расскажу нубам про аякс, расскажу нубам про работу сервера и клиента, всё что можно в этом уроке то и расскажу. 
 P.S. на счёт отключения, знаю половину начнёт говорить про таймеры, но таймеры эта такая страшная пристрашная штука, в общем кто захотел тот понял.
   P.P.S а возможно отключения вообще уберу, ведь то что я написал это больше смахивает на кривой кик за афк, нежели на отключение, в данный момент из-за "гениальности" браузеро-разрабов я не могу использовать спокойно некоторые функций которые должны нормально работать, но из-за разрабов они нехрена не работают(я говорю про onunload и onbeforeload). Хотя одну вещь которая думаю может помочь мне в этой проблеме(хотя до сих пор не уверен что она сработает)
   
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет)
 
 Сообщение отредактировал last2424 - Четверг, 14 Августа 2014, 19:42 |  |  |  |  |  | 
| Saitei | Дата: Четверг, 14 Августа 2014, 19:51 | Сообщение # 16 |  | старожил Сейчас нет на сайте | last2424, Аякс... Аякс... А я ведь говорил!  |  |  |  |  |  | 
| last2424 | Дата: Четверг, 14 Августа 2014, 20:03 | Сообщение # 17 |  |   30 мл. блоков Сейчас нет на сайте | Saitei, Да не...(я ничего такого не имел ввиду, если вы подумали о другом, вам следует подумать о своём поведений) ты не говорил.   
 Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.
 (нет) |  |  |  |  |  
 |