Урок по созданию браузерной игры в стиле покемонов. Part 2
| |
Step | Дата: Воскресенье, 25 Ноября 2012, 15:14 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Ну вот стартует второй урок по созданию браузерной игры в стиле покемонов. Добавим 2 таблицы в нашей базе данных: Таблица покемонов у пользователя: Code CREATE TABLE IF NOT EXISTS `pok_use` ( `id` int(255) NOT NULL AUTO_INCREMENT, /* Индификатор*/ `user` varchar(255) COLLATE cp1250_bin NOT NULL, /* Индификатор владельца покемона*/ `nom` int(11) NOT NULL, /*Номер покемона*/ `name` char(255) NOT NULL, /*Имя покемона*/ `zapret` int(11) NOT NULL DEFAULT '0', /*Запрет на переименование*/ `lvl` int(11) NOT NULL, /* Уровень*/ `hp_m` int(11) NOT NULL,/*Максимальные ХП*/ `hp` int(11) NOT NULL,/*Текущие ХП*/ `hp_ev` int(11) NOT NULL DEFAULT '0',/*Количество EV в хп*/ `hp_g` int(11) NOT NULL,/*Ген ХП*/ `atk` int(11) NOT NULL, /*Стат атаки*/ `atk_ev` int(11) NOT NULL DEFAULT '0',/*Количество ev*/ `atk_g` int(11) NOT NULL, /*Ген атаки*/ `def` int(11) NOT NULL, /* Защита */ `def_ev` int(11) NOT NULL DEFAULT '0', /* Ev Защиты*/ `def_g` int(11) NOT NULL, /* Ген защиты*/ `spd` int(11) NOT NULL, /* Скорость*/ `spd_ev` int(11) NOT NULL DEFAULT '0', /* EV Скорости*/ `spd_g` int(11) NOT NULL, /* Ген скорости*/ `sp_a` int(11) NOT NULL, /* Сп. атака*/ `sp_a_ev` int(11) NOT NULL DEFAULT '0', /* ЕВ Спец. Атаки*/ `sp_a_g` int(11) NOT NULL, /* Ген сп. атаки*/ `sp_d` int(11) NOT NULL, /* Сп. Защита*/ `sp_d_ev` int(11) NOT NULL DEFAULT '0', /* ЕВ Сп. Защиты*/ `sp_d_g` int(11) NOT NULL, /* Ген Сп. Защиты */ `ev` int(11) NOT NULL DEFAULT '0', /* Очки ЕВ*/ `exp` int(11) NOT NULL DEFAULT '0', /* Опыт*/ `exp_up` int(11) NOT NULL DEFAULT '200', /*Опыт до следущего уровня*/ `type` int(11) NOT NULL, /* Тип*/ `type2` int(11) NOT NULL, /* Тип второй*/ `poimka` date NOT NULL, /* Дата поимки*/ `har` int(11) NOT NULL, /* Характер*/ `pol` int(11) NOT NULL, /* Пол*/ `aktiv` int(11) NOT NULL DEFAULT '0', /* Активный или нет*/ `start` int(11) NOT NULL DEFAULT '0', /* Стартовый или нет*/ `obmen` int(11) NOT NULL DEFAULT '0', /* Подлежит обмену или нет*/ `atk1` int(11) NOT NULL DEFAULT '0', /*Атака номер 1 и.т.д.*/ `atk2` int(11) NOT NULL DEFAULT '0', `atk3` int(11) NOT NULL DEFAULT '0', `atk4` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=0 ; И таблица покедекса: Code CREATE TABLE IF NOT EXISTS `pokedex` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nom` int(11) NOT NULL, /*Номер*/ `name` varchar(255) COLLATE cp1250_bin NOT NULL,/*Имя*/ `type` int(11) NOT NULL,/*Тип*/ `type2` int(11) NOT NULL,/*Тип2*/ `opis` blob NOT NULL,/*Описание покемона*/ `evo` blob NOT NULL,/*Эволюция*/ `hp` int(11) NOT NULL,/*Базовый стат ХП*/ `atk` int(11) NOT NULL,/*Баз. стат атаки*/ `def` int(11) NOT NULL,/*Баз. стат защиты*/ `spd` int(11) NOT NULL,/*Баз. стат скорости*/ `sp_a` int(11) NOT NULL, /*Баз. стат сп.атаки*/ `sp_d` int(11) NOT NULL,/*Баз. стат сп.защиты*/ PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=0 ;
Не пытайтесь заполнять покедекс вручную! Я потом научу как это делать!
Для начала сделаем шаблон полей заполнения, для этого создаём файл reg.php: Code <html> <TITLE>Название игры - Регистрация</TITLE> <body bgcolor="lightgrey"> <center> <form id="form" class="blocks" action="save.php" method="post"> Логин: <br><input type="text" class="text" name="login"/> <br> Пароль: <br><input type="password" class="text" name="password"/><br> <input type="radio" name="gender" value="1" checked>Парень<br> <input type="radio" name="gender" value="2">Девушка <TABLE bgcolor="grey"> <tr> <td width='33%'> <center> <input type="radio" name="poke" value="1" checked> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=1','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/1.gif'</a> #001 Bulbasaur </b></font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="4"><font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=4','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/4.gif'</a> #004 Charmander </b> </font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="7"><font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=7','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/7.gif'</a> #007 Squirtle</b> </font> </center> </td> </tr> <tr> <td> <center><br> <img src='pok/1.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/4.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/7.jpg' border=1> </center> </td> </tr> </center> <tr> <td width='33%'> <center> <input type="radio" name="poke" value="152"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=152','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/152.gif'</a> #152 Chikorita</b> </font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="155"><font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=155','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/155.gif'</a> #155 Cyndaquil </b> </font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="158"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=158','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/158.gif'</a> #158 Totodile</b></font> </center> </td> </tr> <tr> <td> <center><br> <img src='pok/152.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/155.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/158.jpg' border=1> </center> </td> </tr> </center> <tr> <td width='33%'> <center> <input type="radio" name="poke" value="252"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=252','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/252.gif'</a>#252 Treecko</b></font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="255"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=255','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/255.gif'</a>#255 Torchic </b> </font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="258"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=258','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/258.gif'</a> #258 Mudkip </b> </font> </center> </td> </tr> <tr> <td> <center><br> <img src='pok/252.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/255.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/258.jpg' border=1> </center> </td> </tr> </center> <tr> <td width='33%'> <center> <input type="radio" name="poke" value="387"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=387','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/387.gif'</a>#387 Turtwig</b></font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="390"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=390','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/390.gif'</a> #390 Chimchar</b> </font> </center> </td> <td width='33%'> <center> <input type="radio" name="poke" value="393"> <font><b><a href=javascript: onClick=win1=window.open('/pokedex.php?id=393','info','width=580,height=650,scrollbars=yes');return true;><img src='/pok/anim/393.gif'</a> #393 Piplup </b> </font> </center> </td> </tr> <tr> <td> <center><br> <img src='pok/387.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/390.jpg' border=1> </center> </td> <td> <center><br> <img src='pok/393.jpg' border=1> </center> </td> </tr> </td> </tr> </TABLE> <input type="submit" class="btn" value="Регистарация" /> </form> </body></html> Думаю для данного кода дополнительных описаний и комментарий не понадобиться А дальше будет идти код добавления персонажа в базу И так создаём файл save.php Code <?php if (isset($_POST['login'])) { $login = $_POST['login']; } //Забиваем введённый логин в переменную if (isset($_POST['password'])) { $password=$_POST['password']; }//Забиваем введённый пароль в переменную
if (empty($login) or empty($password)) //Если юзер не ввёл логин либо пароль выдаём ошибку { echo "<script>alert('Заполните поля логина и пароля!'); location.href='reg.php';</script>"; exit; } if (!preg_match("|^[a-z_-]+$|i", $login)) //Проверяем логин на корректность {echo "<script>alert('Запрещённые симбволы в логине!!'); location.href='reg.php';</script>"; exit;} if (!preg_match("|^[a-z 0-9]+$|i", $password)) //проверка пароля {echo "<script>alert('Запрещено использовать русские буквы в пароле!!'); location.href='reg.php';</script>"; exit;} $ip= $_SERVER["REMOTE_ADDR"]; //Узнаём ip-адресс $gender = $_POST['gender']; //Забиваем в переменную пол 1-мальчик 2-девочка $poke = $_POST['poke']; //Выбраный покемон if ($poke=='1'){$pok = '1';} //Дальше ставим условие например: если покемон = 1 значит в переменную забиваем 1 таким образом узнаём выбранного покемона if ($poke=='4'){$pok = '4';} if ($poke=='7'){$pok = '7';} if ($poke=='152'){$pok = '152';} if ($poke=='155'){$pok = '155';} if ($poke=='158'){$pok = '158';} if ($poke=='252'){$pok = '252';} if ($poke=='255'){$pok = '255';} if ($poke=='258'){$pok = '258';} if ($poke=='387'){$pok = '387';} if ($poke=='390'){$pok = '390';} if ($poke=='393'){$pok = '393';} if ($poke=='495'){$pok = '495';} if ($poke=='498'){$pok = '498';} if ($poke=='501'){$pok = '501';} $lvl = "5"; //Уровень по умолчанию 5 $gen = "25"; // Гены по умолчанию 25 $ev = "6"; //Количество ev $sex = ''.mt_rand(1,2); //Рандомный пол $har = ''.mt_rand(1,26); //Рандомный характер $datee = date('Y:m:G'); //Дата получения include('cone.php'); //Подключаем соединение $poks = "SELECT * FROM pokedex WHERE nom='$pok'"; //Вытаскиваем данные из покедекса $hp = (($gen+($poks['hp']*2)+($ev/4)+100)*($lvl/100))+10; //Подсчитываем статы по формуле $atk = ((($gen+($poks['atk']*2)+($ev/4))*($lvl/100))+5)*1; $def = ((($gen+($poks['def']*2)+($ev/4))*($lvl/100))+5)*1; $sa = ((($gen+($poks['sp_a']*2)+($ev/4))*($lvl/100))+5)*1; $sd = ((($gen+($poks['sd_d']*2)+($ev/4))*($lvl/100))+5)*1; $speed = ((($hen+($poks['spd']*2)+($ev/4))*($lvl/100))+5)*1; $name = $poks['name']; //Имя покемона берём из декса $query = "SELECT * from users where login = '$login'"; //Вытаскиваем данные с введённым логином $result = mysql_query($query) or die("Query failed : " . mysql_error()); $query22 = "SELECT * from users where ip = '$ip'"; //Вытаскиваем данные с полученным айпи $result2 = mysql_query($query22) or die("Query failed : " . mysql_error()); $num_rows2 = mysql_num_rows($result2); $num_rows = mysql_num_rows($result); if( $num_rows == 0 && $num_rows2 == 0){ //Проверяем есть ли пользователи с таким же логином или айпи $query56 = "INSERT INTO users(login,password,gender,ip)"; //Если нет забиваем пользователя! $query56.= "Values ('$login','$password','$gender','$ip')"; $result56 = mysql_query($query56,$link) or die("Query failed : " . mysql_error()); $query2 = "INSERT INTO pok_use(user,nom,name,lvl,hp_m,hp,hp_g,atk,atk_g,def,def_g,spd,spd_g,sp_a,sp_a_g,sp_d,sp_d_g,ev,poimka,har,pol,aktiv,start)"; $query2 .= "Values ('$login','$pok','$name','$lvl','$hp','$hp','$gen','$atk','$gen','$def','$gen','$speed','$gen','$sa','$gen','$sd','$gen','$ev','$datee','$ha r','$sex','1','1')"; $result34 = mysql_query($query2,$link) or die("Query failed : " . mysql_error()); print("Юзер: $login, добавлен в базу!"); } else { //Если такой юзер есть либо такой айпи выдаём ошибку print("<script>alert('Данный логин занят, либо с вашего ip-адреса была произведена регистрация!'); location.href='reg.php';</script>"); } mysql_close($link); //Обрываем соединение с базой ?>
Ну вот и второй урок подошёл к концу =) И кстати при копировании материала ссылка на сайт обязательна!!
Сообщение отредактировал Step - Воскресенье, 25 Ноября 2012, 18:37 |
|
| |
PROstak | Дата: Воскресенье, 25 Ноября 2012, 15:40 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| У меня при попытке регистрации пишет "Запрещённые символы в логине", какой логин только не пробовал. А ещё картинки покемонов при реге не показывает хотя я создал папку pok в ней anim и туда загрузил их картинки в нужном формате. Что не так?
|
|
| |
Step | Дата: Воскресенье, 25 Ноября 2012, 16:44 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| PROstak, Хм. У мя такой проблемы нет. Прошу прощения с покедексом (Не нужно вставлять дамп, сейчас исправлю) Добавлено (25.11.2012, 16:44) --------------------------------------------- PROstak, На счёт картинок, не знаю но я их в следующем уроке выложу.
|
|
| |
Riolu | Дата: Воскресенье, 10 Февраля 2013, 17:23 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Цитата (PROstak) У меня при попытке регистрации пишет "Запрещённые символы в логине" Поменяй Код if (!preg_match("|^[a-z_-]+$|i", $login)) //Проверяем логин на корректность {echo "<script>alert('Запрещённые симбволы в логине!!'); location.href='reg.php';</script>"; exit;} На Код if (!preg_match("|^[A-Za-z_-]+$|i", $login)) //Проверяем логин на корректность {echo "<script>alert('Запрещённые симбволы в логине!!'); location.href='reg.php';</script>"; exit;}
Рoke-x (ММОRPG про покемонов)
|
|
| |
Kali | Дата: Суббота, 18 Января 2014, 18:06 | Сообщение # 5 |
уже был
Сейчас нет на сайте
| Цитата Step ( ) Ну вот стартует второй урок по созданию браузерной игры в стиле покемонов. Добавим 2 таблицы в нашей базе данных: Таблица покемонов у пользователя: Code
CREATE TABLE IF NOT EXISTS `pok_use` ( `id` int(255) NOT NULL AUTO_INCREMENT, /* Индификатор*/ `user` varchar(255) COLLATE cp1250_bin NOT NULL, /* Индификатор владельца покемона*/ `nom` int(11) NOT NULL, /*Номер покемона*/ `name` char(255) NOT NULL, /*Имя покемона*/ `zapret` int(11) NOT NULL DEFAULT '0', /*Запрет на переименование*/ `lvl` int(11) NOT NULL, /* Уровень*/ `hp_m` int(11) NOT NULL,/*Максимальные ХП*/ `hp` int(11) NOT NULL,/*Текущие ХП*/ `hp_ev` int(11) NOT NULL DEFAULT '0',/*Количество EV в хп*/ `hp_g` int(11) NOT NULL,/*Ген ХП*/ `atk` int(11) NOT NULL, /*Стат атаки*/ `atk_ev` int(11) NOT NULL DEFAULT '0',/*Количество ev*/ `atk_g` int(11) NOT NULL, /*Ген атаки*/ `def` int(11) NOT NULL, /* Защита */ `def_ev` int(11) NOT NULL DEFAULT '0', /* Ev Защиты*/ `def_g` int(11) NOT NULL, /* Ген защиты*/ `spd` int(11) NOT NULL, /* Скорость*/ `spd_ev` int(11) NOT NULL DEFAULT '0', /* EV Скорости*/ `spd_g` int(11) NOT NULL, /* Ген скорости*/ `sp_a` int(11) NOT NULL, /* Сп. атака*/ `sp_a_ev` int(11) NOT NULL DEFAULT '0', /* ЕВ Спец. Атаки*/ `sp_a_g` int(11) NOT NULL, /* Ген сп. атаки*/ `sp_d` int(11) NOT NULL, /* Сп. Защита*/ `sp_d_ev` int(11) NOT NULL DEFAULT '0', /* ЕВ Сп. Защиты*/ `sp_d_g` int(11) NOT NULL, /* Ген Сп. Защиты */ `ev` int(11) NOT NULL DEFAULT '0', /* Очки ЕВ*/ `exp` int(11) NOT NULL DEFAULT '0', /* Опыт*/ `exp_up` int(11) NOT NULL DEFAULT '200', /*Опыт до следущего уровня*/ `type` int(11) NOT NULL, /* Тип*/ `type2` int(11) NOT NULL, /* Тип второй*/ `poimka` date NOT NULL, /* Дата поимки*/ `har` int(11) NOT NULL, /* Характер*/ `pol` int(11) NOT NULL, /* Пол*/ `aktiv` int(11) NOT NULL DEFAULT '0', /* Активный или нет*/ `start` int(11) NOT NULL DEFAULT '0', /* Стартовый или нет*/ `obmen` int(11) NOT NULL DEFAULT '0', /* Подлежит обмену или нет*/ `atk1` int(11) NOT NULL DEFAULT '0', /*Атака номер 1 и.т.д.*/ `atk2` int(11) NOT NULL DEFAULT '0', `atk3` int(11) NOT NULL DEFAULT '0', `atk4` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=0 ;
Скажите куда мне этот код пихать?
|
|
| |
HerrPotapov | Дата: Суббота, 18 Января 2014, 22:50 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Kali, это запрос к базе данных, создающий таблицу. Его нужно выполнить один раз. К БД можно обратиться либо напрямую через shell, либо через что-то типа phpMyAdmin или MySQL Workbench
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Kali | Дата: Воскресенье, 19 Января 2014, 04:02 | Сообщение # 7 |
уже был
Сейчас нет на сайте
| Цитата Step ( ) CREATE TABLE IF NOT EXISTS `pok_use` ( `id` int(255) NOT NULL AUTO_INCREMENT, /* Индификатор*/ `user` varchar(255) COLLATE cp1250_bin NOT NULL, /* Индификатор владельца покемона*/ `nom` int(11) NOT NULL, /*Номер покемона*/ `name` char(255) NOT NULL, /*Имя покемона*/ `zapret` int(11) NOT NULL DEFAULT '0', /*Запрет на переименование*/ `lvl` int(11) NOT NULL, /* Уровень*/ `hp_m` int(11) NOT NULL,/*Максимальные ХП*/ `hp` int(11) NOT NULL,/*Текущие ХП*/ `hp_ev` int(11) NOT NULL DEFAULT '0',/*Количество EV в хп*/ `hp_g` int(11) NOT NULL,/*Ген ХП*/ `atk` int(11) NOT NULL, /*Стат атаки*/ `atk_ev` int(11) NOT NULL DEFAULT '0',/*Количество ev*/ `atk_g` int(11) NOT NULL, /*Ген атаки*/ `def` int(11) NOT NULL, /* Защита */ `def_ev` int(11) NOT NULL DEFAULT '0', /* Ev Защиты*/ `def_g` int(11) NOT NULL, /* Ген защиты*/ `spd` int(11) NOT NULL, /* Скорость*/ `spd_ev` int(11) NOT NULL DEFAULT '0', /* EV Скорости*/ `spd_g` int(11) NOT NULL, /* Ген скорости*/ `sp_a` int(11) NOT NULL, /* Сп. атака*/ `sp_a_ev` int(11) NOT NULL DEFAULT '0', /* ЕВ Спец. Атаки*/ `sp_a_g` int(11) NOT NULL, /* Ген сп. атаки*/ `sp_d` int(11) NOT NULL, /* Сп. Защита*/ `sp_d_ev` int(11) NOT NULL DEFAULT '0', /* ЕВ Сп. Защиты*/ `sp_d_g` int(11) NOT NULL, /* Ген Сп. Защиты */ `ev` int(11) NOT NULL DEFAULT '0', /* Очки ЕВ*/ `exp` int(11) NOT NULL DEFAULT '0', /* Опыт*/ `exp_up` int(11) NOT NULL DEFAULT '200', /*Опыт до следущего уровня*/ `type` int(11) NOT NULL, /* Тип*/ `type2` int(11) NOT NULL, /* Тип второй*/ `poimka` date NOT NULL, /* Дата поимки*/ `har` int(11) NOT NULL, /* Характер*/ `pol` int(11) NOT NULL, /* Пол*/ `aktiv` int(11) NOT NULL DEFAULT '0', /* Активный или нет*/ `start` int(11) NOT NULL DEFAULT '0', /* Стартовый или нет*/ `obmen` int(11) NOT NULL DEFAULT '0', /* Подлежит обмену или нет*/ `atk1` int(11) NOT NULL DEFAULT '0', /*Атака номер 1 и.т.д.*/ `atk2` int(11) NOT NULL DEFAULT '0', `atk3` int(11) NOT NULL DEFAULT '0', `atk4` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE=cp1250_bin AUTO_INCREMENT=0 ;
И таблица покедекса:
Вот таблицу я нашла а куда в ставлять не поняла, покажите мне куда вставлять?
Сообщение отредактировал Kali - Воскресенье, 19 Января 2014, 04:05 |
|
| |
aalla | Дата: Воскресенье, 19 Января 2014, 05:46 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Kali, в главном окне phpmyadmin жмешь на кнопку sql вставляешь код, жмешь ок, все про нумеровано.
Сообщение отредактировал aalla - Воскресенье, 19 Января 2014, 05:47 |
|
| |
|