Результаты поиска
| |
Assasin | Дата: Пятница, 23 Октября 2009, 10:10 | Сообщение # 701 | Тема: Урок по созданию браузерной игры № 3 |
web-coder
Сейчас нет на сайте
| Ты настраивал все как здесь написано? http://gcup.ru/forum/48-1963-1 Если да, то тогда установи JRE 6 Update 16
|
|
| |
Assasin | Дата: Четверг, 22 Октября 2009, 16:41 | Сообщение # 702 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| Красиво и еще раз красиво, только что то солдат на астматика похож Чего так часто дышит?
|
|
| |
Assasin | Дата: Вторник, 20 Октября 2009, 20:51 | Сообщение # 703 | Тема: Урок по созданию браузерной игры № 3 |
web-coder
Сейчас нет на сайте
| Можно и так
|
|
| |
Assasin | Дата: Вторник, 20 Октября 2009, 19:08 | Сообщение # 704 | Тема: HiAsm и игры на нём! |
web-coder
Сейчас нет на сайте
| На нем можно сделать абсолютно все, если есть определенные знания.
|
|
| |
Assasin | Дата: Понедельник, 19 Октября 2009, 20:04 | Сообщение # 705 | Тема: Урок по созданию браузерной игры № 4 |
web-coder
Сейчас нет на сайте
| Вот и 4 урок наступил, в нем поговорим о игровом окне, а именно где, какие компоненты будут размещены. Вот перечень этих компонентов: - Игровое меню - Чат - Характеристики персонажа - Инвентарь - Игровое поле - Журнал квестов Но в самом игровом окне будет отображаться только чат, игровое меню и игровое поле. Остальное будет отображаться в виде отдельных окошек, которые появляються при нажатии на соответствующий пункт в игровом меню. Размещаться компоненты будут таким образом: Вверху по центру — игровое меню, внизу будет чат, а все остальное пространство будет отведено под игровое поле. Теперь приступим к написанию нашего игрового окна. Это будет файл, который будет подключать в себя остальные файлы, такие как чат, игровое меню, и т.д. Можете создать новый проект, но я советую в нашем проекте CreateChar создавать все остальное. Для этого открываем наш проект и справа в окошке Project на папке src нажимаем ПКМ->Add->New MXML File... (картинка) и назовем его GameWindow.mxml Приступаем к написанию кода: Code <?xml version="1.0" encoding="utf-8"?> <mx:Application layout="absolute" width="800" height="600" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:SWFLoader source="chat.swf" x="0" y="450" width="800" height="150"/> <mx:SWFLoader source="menu.swf" x="330" y="0" width="170" height="50"/> <mx:SWFLoader source="GameField.swf" x="0" y="0" width="800" height="450"/> </mx:Application> Появился новый тег SWFLoader, он загружает другие флешки и отображает их в нашем окне. Для того что б скомпилировать данный код нам нужно нажать Ctrl + F8. С игровым окном справились, теперь пришло время к технической реализации чата. В чате будет реализовано смайлики, отправка сообщения публично и отправка сообщения по нику. Это будет происходить следующим образом: Игрок вводит сообщение в строку ввода и жмет кнопку «Отправить» (или Enter), эта строка отправляеться в php скрипт, который записывает ее в нашу БД, а другой скрипт считывает данные с БД и выводит на экран. При отправке сообщения обновляеться экран чата, также он обновляеться каждые 30 секунд. Можно вставлять смайлики, при нажатии на книпку, открываеться небольшое окошко в котором можно выбрать смайлик, который сразу записываеться в строку ввода, в виде кода, а с помощью одной функции этот код преобразуеться в картинку. Сообщения будут выглядеть слкдующим образом: Code [11:11] RPGman(i): Проверка чата [11:11] Jack(i): Все отлично работает В квадратных скобках — время, затем идет ник персонажа, в круглых скобках ссылка, которая открывает новое окно в котором описываеться информация о персонаже. И после двоеточия само сообщение. Также будет выводиться строка сколько юзеров online. Вот и 4 урок подошел к концу, самый короткий из остальных Так сказать передышка для меня, но впереди еще много работы, так что отдохнуть не помешает При копировании материала ссылка на источник обязательна!
|
|
| |
Assasin | Дата: Воскресенье, 18 Октября 2009, 18:50 | Сообщение # 706 | Тема: Урок по созданию браузерной игры № 3 |
web-coder
Сейчас нет на сайте
| Он отсылает текст, который мы введем в поле "Имени чара" в php скрипт reg_comp.php, который обрабатывает полученные данные и записывает имя чара, если такое уже существует, то выводит соответствующую ошибку. Также отправляет какой аватар выбран. Полный код нашего Main.mxml: Code <?xml version="1.0" encoding="utf-8"?> <mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script><![CDATA[ import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола private var i:int = 0; //числовая переменная равна 0 [Bindable] //сам еще не знаю для чего нужна это строка, но без нее выдает ошибку private var gr:String = "1"; //текстовая переменная равна 1 [Bindable] private var patch:String; //текстовая переменная /* Функция создания чара, отправляет данные которые ввел пользователь */ private function onCreateChar():void { createRequest.send(); } /* Функция выбора RadioButton мужского пола */ private function iMen():void { avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку gr = "1"; //переменная равна 1 simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" } /* Функция выбора RadioButton женского пола */ private function iWomen():void { avatar.load(pic_arr_w[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку gr = "2"; //переменная равна 1 simpleLabel.text = "2-1"; //тег <mx:Text> который имеет имя simpleLabel равен "2-1" } /* Функция нажатия кнопки "Пред." */ private function onLeft():void { if (men.selected == true){ //если выбран пол "Мужской", то avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" i--; //переменная уменьшаеться на 1 if (i == -1) { //если переменная "i" равна -1, то i = 3; //"i" равна 3 } if (i == 0) { //если "i" равна 0, то simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" avatar.load(pic_arr_m[0]); //будет отображать первый аватар patch = "img/man1-1.swf"; //путь к аватару } if (i == 1) { simpleLabel.text = "1-2"; avatar.load(pic_arr_m[1]); patch = "img/man1-2.swf"; } if (i == 2) { simpleLabel.text = "1-3"; avatar.load(pic_arr_m[2]); patch = "img/man1-3.swf"; } if (i == 3) { simpleLabel.text = "1-4"; avatar.load(pic_arr_m[3]); patch = "img/man1-4.swf"; } } if (women.selected == true) { //если выбран пол "Женский", то avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" i--; //переменная уменьшаеться на 1 if (i == -1) { //если переменная "i" равна -1, то i = 3; //"i" равна 3 } if (i == 0) { simpleLabel.text = "2-1"; avatar.load(pic_arr_w[0]); patch = "img/woman2-1.swf"; } if (i == 1) { simpleLabel.text = "2-2"; avatar.load(pic_arr_w[1]); patch = "img/woman2-2.swf"; } if (i == 2) { simpleLabel.text = "2-3"; avatar.load(pic_arr_w[2]); patch = "img/woman2-3.swf"; } if (i == 3) { simpleLabel.text = "2-4"; avatar.load(pic_arr_w[3]); patch = "img/woman2-4.swf"; } } } /* Функция нажатия кнопки "След." */ private function onRight():void { if (men.selected == true){ //если выбран пол "Мужской", то avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" i++; //переменная увеличиваеться на 1 if (i == 4) { //если переменная "i" равна 4, то i = 0; //"i" равна 0 } if (i == 0) { simpleLabel.text = "1-1"; avatar.load(pic_arr_m[0]); patch = "img/man1-1.swf"; } if (i == 1) { simpleLabel.text = "1-2"; avatar.load(pic_arr_m[1]); patch = "img/man1-2.swf"; } if (i == 2) { simpleLabel.text = "1-3"; avatar.load(pic_arr_m[2]); patch = "img/man1-3.swf"; } if (i == 3) { simpleLabel.text = "1-4"; avatar.load(pic_arr_m[3]); patch = "img/man1-4.swf"; } } if (women.selected == true) { //если выбран пол "Женский", то avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" i++; //переменная увеличиваеться на 1 if (i == 4) { //если переменная "i" равна 4, то i = 0; //"i" равна 0 } if (i == 0) { simpleLabel.text = "2-1"; avatar.load(pic_arr_w[0]); patch = "img/woman2-1.swf"; } if (i == 1) { simpleLabel.text = "2-2"; avatar.load(pic_arr_w[1]); patch = "img/woman2-2.swf"; } if (i == 2) { simpleLabel.text = "2-3"; avatar.load(pic_arr_w[2]); patch = "img/woman2-3.swf"; } if (i == 3) { simpleLabel.text = "2-4"; avatar.load(pic_arr_w[3]); patch = "img/woman2-4.swf"; } } } /* Функция определения результата */ private function onResult(e:ResultEvent):void { if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то //var link:URLRequest = new URLRequest("http://localhost/game.php"); //создаем ссылку //navigateToURL(link, "_self"); //переадресовываем по ссылке } else { //в другом случае, если результат не существует, то switch (int(String(e.result))) { //считываем данные case -1 : //если данные равны "-1", то выводим всплывающее окно Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!"); break; case -2 : //если данные равны "-2", то выводим всплывающее окно Alert.show("Такое имя уже существует", "Ошибка!"); break; case -3 : //если данные равны "-3", то выводим всплывающее окно Alert.show("Вы не ввели имя", "Ошибка!"); break; case -4: //если данные равны "-4", то выводим всплывающее окно Alert.show("Недопустимые символы в имени", "Ошибка!"); break; } } } ]]></mx:Script> <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php"> <mx:request> <mx:nameChar>{nameChar.text}</mx:nameChar> <mx:avaIm>{simpleLabel.text}</mx:avaIm> <mx:gr>{gr.toString()}</mx:gr> <mx:patch>{patch.toString()}</mx:patch> </mx:request> </mx:HTTPService> <mx:Label id="simpleLabel" x="168" y="64" width="36" height="18"/> <mx:Button label="Далее" click="onCreateChar()" x="140" y="252" width="100" height="22"/> <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22"/> <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/> <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" x="19" y="41" width="73" height="22"/> <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" x="19" y="67" width="74" height="22"/> <mx:Label text="Имя" x="176" y="198" width="36" height="18"/> <mx:Button label="Пред." click="onLeft()" x="78" y="141" width="100" height="22"/> <mx:Button label="След." click="onRight()" x="200" y="141" width="100" height="22"/> </mx:Application> После того как мы написали нашу флешку, пришло время ее создать, для этого жмем синий трехугольник на панели инструментов (картинка) и ждем когда FD скомпилирует нам нашу флешку. После этого заливаем нашу флешку к нам на сервер в папку htdocs. Также копируем туда эти картинки вместе с папкой: архив с картинками Теперь нам нужно отобразить данную флешку в браузере, для этого создаем goreg.php и пишем туда такой код: Code <?php session_start(); //запускаем сессию
include "conf.php"; //инклюдим conf.php /* коннектимся к БД */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!mysql_select_db($db_name,$data)){ print "<BR>"; echo mysql_error(); die(); } /* Узнаем ip адрес юзера */ $ip = $_SERVER['REMOTE_ADDR']; if ($ip==$_SESSION['ip']) { //если ip равен ip записаному в сессию, то выводим флешку ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="Браузерная Флеш игра BTG" /> <meta name="keywords" content="игра, флеш, браузер, BTG, игроки." /> <link rel="stylesheet" href="style.css" type="text/css" /> <title>Евилопия - бессплатная онлайн Flash игра</title> </head> <body> <div id="goreg"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="300" id="reg" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="CreateChar.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#000000" /> <embed src="CreateChar.swf" quality="high" bgcolor="#000000" width="400" height="300" name="reg" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> </object> </div> </body> </html> <?php }else{ //в другом случае переадресовываем на главную страницу echo "<script>location.href='index.php';</script>"; } ?> Если мы попробуем перейти по адресу http://localhost/goreg.php нас перекинет на главную страницу, так и должно быть, если мы пройдем регистрацию, то окажемся на нашей страничке с флешкой. Теперь приступим к написанию нашего файла reg_comp.php, который будет обрабатывать данные, которые будут поступать с флешки: Code <?php session_start(); //запускаем сессию
include "conf.php"; //инклюдим conf.php
$nameChar = trim($_POST['nameChar']); /* переменная равна данным которые пришли от флешки, а именно — имя чара */ $vid = $_POST['avaIm']; /* получаем номер аватарки */ $gander = $_POST['gr']; /* узнаем какой пол выбран */ $patch = $_POST['patch']; /* получаем путь к аватаркам */ /* Проверяем заполнено ли поле имени, если нет, то выводим ошибку */ if ($nameChar == '') { echo "-3"; exit; } /* Проверяем что б имя состояло только с английских букв */ if (!preg_match("/^[a-zA-Z]+$/",$nameChar)) { echo "-4"; exit; } /* Подключаемся к БД, если не удалось, то выводим ошибку */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!$data){ echo "-1"; exit; } /* Проверяем есть ли юзер с данным именем, если есть, то выводим ошибку */ mysql_select_db($db_name); $query = "SELECT * FROM users WHERE name='".$nameChar."'"; $result = mysql_query($query); $num_results = mysql_num_rows($result); if ($num_results > 0) { echo "-2"; exit; } /* Записываем имя чара */ $result = mysql_query("UPDATE users SET name='".$nameChar."' WHERE email='".$_SESSION['user']."'"); /* Записываем данные аватарки в таблицу avatar */ $ava = mysql_query("INSERT INTO avatar (gander, vid, path) VALUES ('".$gander."', '".$vid."', '".$patch."')"); ?> Урок писался неделю, так как я только начал изучение Flex, поэтому долго разбирался. Я б сказал что урок полный, но в нем есть одна неувязочка, которую я до сих пор не могу решить. Эта неувязка состоит в том, что когда пользователь ввел данные, они записались, но его никуда не переадресовывает. Думаю в ближайшие дни исправлю это и тогда урок будет полностью закончен. Жду вопросов, а также критику и советы Исходник - линк При копировании материала ссылка на источник обязательна!
|
|
| |
Assasin | Дата: Воскресенье, 18 Октября 2009, 18:50 | Сообщение # 707 | Тема: Урок по созданию браузерной игры № 3 |
web-coder
Сейчас нет на сайте
| Извините за долгое отсутствие уроков, очень мало свободного времени остаеться, но ничего. Приступаем к нашему третьему уроку. В этом уроке мы сделаем II часть регистрации, а именно — создание персонажа. Я сильно не заморачивался и сделал по простому, вот такой результат у нас получиться (картинка). И еще одно, так как флешки, которые мы будем создавать, читают только utf-8 кодировку, то нам нужно немного изменить нашу БД. Code DROP DATABASE testgame; /* Если данная БД уже создана, то удаляем ее */ CREATE DATABASE testgame DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; /* Создаем БД со стандартной кодировкой utf-8(для того что б поддерживался русский язык)*/ USE testgame; /* используем данную БД */
/* таблица персонажа */ CREATE TABLE `users` ( id_user bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ email CHAR(64), /* текстовый тип (64 символа) */ pass CHAR(32), /* текстовый тип (32 символа) */ name CHAR(32), /* текстовый тип (32 символа) */ life INT DEFAULT 50, /* числовой тип, по умолчанию равен 50 */ atk INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */ def INT DEFAULT 5, /* числовой тип, по умолчанию равен 5 */ lov INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */ lvl INT DEFAULT 1, /* числовой тип, по умолчанию равен 1 */ exp INT DEFAULT 0, /* числовой тип, по умолчанию равен 0 */ ip CHAR(15), /* текстовый тип (15 символов) */ PRIMARY KEY (`id_user`) /* Показываем что уникальным номером у нас являеться id_user */ ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /* Обозначаем тип таблицы MyISAM. Таблицы типа MyISAM показывают хорошие результаты при выборках SELECT. Для более подробного изучения читайте Самоучитель по MySQL 5 */
/* таблица аватара */ CREATE TABLE `avatar` ( id_ava bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ gander INT(2), /* Пол игрока, цыфровой тип(2 цыфра) */ vid CHAR(32), /* Вид игрока, цыфровой тип(2 цыфры)*/ path CHAR(32), /* Путь к папке с рисунками персонажа, текстовый тип(32 символа) */ PRIMARY KEY (`id_ava`) /* Показываем что уникальным номером у нас являеться id_ava */ ) TYPE=MyISAM;
/* таблица чата */ CREATE TABLE `chat` ( id_msg bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ msg CHAR(255), /* текстовый тип(255 символов) */ time_msg CHAR(5), /* текстовый тип(5 символов) */ wrt_user CHAR(32), /* текстовый тип(32 символов) */ who CHAR(32), /* текстовый тип(32 символов) */ PRIMARY KEY (`id_msg`) /* Показываем что уникальным номером у нас являеться id_msg */ ) TYPE=MyISAM;
/* таблица инвентаря */ CREATE TABLE `inventar` ( id_inv bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ name_object CHAR(64), atk_up INT(2), def_up INT(2), lov_up INT(2), life_up INT(4), PRIMARY KEY (`id_inv`) /* Показываем что уникальным номером у нас являеться id_msg */ ) TYPE=MyISAM;
/* таблица квеста */ CREATE TABLE `quest` ( id_quest bigint(20) unsigned NOT NULL auto_increment, cont_quest CHAR(32), kill_quest INT DEFAULT 0, PRIMARY KEY (`id_quest`) ) TYPE=MyISAM;
/* таблица боя */ CREATE TABLE `battle` ( id_btl bigint(20) unsigned NOT NULL auto_increment, end_btl CHAR(32), PRIMARY KEY (`id_btl`) ) TYPE=MyISAM;
/* Таблица врагов */ CREATE TABLE `enemy` ( id_enm bigint(20) unsigned NOT NULL auto_increment, name_enm CHAR(32), atk_enm INT, life_enm INT, def_enm INT, lov_enm INT, e xp_enm IN T, path_enm CHAR(32), PRIMARY KEY (`id_enm`) ) TYPE=MyISAM;
/* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/'); А также во всех php файлах заменить эту строку: Code <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> на эту: Code <meta http-equiv="content-type" content="text/html; charset=utf-8" /> С помощью этой замены мы поменяем кодировку страниц на utf-8. Также в PSPad'e на строке меню нажмите Формат->UTF-8 и эту операцию проделайте с каждым файлом php. Теперь приступим к созданию нашей регистрации. Мы будем её делать во FlashDevelop. Запускаем его и видим начальное окно, в котором нам предлагают создать AS3, AS2, HAXE проекты. Мы будем работать с AS3, а именно с Flex'ом. Почему с ним? Потому что я начал изучение данной среды разработки и мне она понравилась . Выбираем Flex 3 Project, в поле Name вводим имя своего проекта, я назвал CreateChar. В поле Location выбираем где будет находиться наш проект, у меня это C:\Documents and Settings\Администратор\Мои документы. Поле Package не трогаем, ставим галочку внизу, для того что б создать папку для нашего проекта и жмем OK. Справа, в окошке Project наши файлы с которыми мы будем работать (картинка). Наш главный файл обозначен зеленой стрелочкой вниз. Называеться он Main.mxml, нажмите на него 2 раза ЛКМ. Теперь вы можете писать свой код для этого файла. Как вы видите в нашем фале уже есть строчки кода. Первая определяет кодировку, ее не трогайте. Вторая указывает что это приложение, а не модуль и последняя закрывает тег приложения. Как видите здесь также как и в html существуют теги, и все они начинаються с отрытия скобки < и букв mx. Перейдите во вкладку Design View (картинка) и можете создавать свое приложение перетаскивая компоненты в рабочую область. В папке Controls (картинка) Выберите и разместите в рабочую область такие компоненты: - Button – 3 шт. - Image – 1 шт. - Label – 1 шт. - RadioButton – 2 шт. - TextInput – 1 шт. После того как вы разместили, переходите обратно во вкладку Source View. Видим у нас изменился код, все те компоненты, которые мы добавили отобразились и здесь. Нам остаеться только их правильно разместить и дать имена. Поэтому изменяем координаты компонентов как нам удобно, я изменил так: Code <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Button label="Далее" click="onCreateChar()" x="140" y="252" width="100" height="22"/> <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22"/> <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/> <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" x="19" y="41" width="73" height="22"/> <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" x="19" y="67" width="74" height="22"/> <mx:Label text="Имя" x="176" y="198" width="36" height="18"/> <mx:Button label="Пред." click="onLeft()" x="78" y="141" width="100" height="22"/> <mx:Button label="След." click="onRight()" x="200" y="141" width="100" height="22"/> </mx:Application> label – что будет отображаться на кнопке или возле RadioButton click – функция которая происходит после нажатия на кнопку или RadioButton id – имя тега textAlign — размещение текста(слева, по-центру, справа) source — путь к картинке С этим справились, теперь нам нужно указать какой по размерам будет наша флешка, для этого заменяем тег: Code <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> на Code <mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml"> Мы задали имя слоя - absolute и указали высоту и ширину нашей будущей флешки. Теперь приступаем к написанию логической части. Вся логика будет заключаться в теге , поэтому после тега: Code <mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml"> пишем: Code <mx:Script><![CDATA[ import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон import flash.net.navigateToURL; //а третий для перехода между страницами private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола private var i:int = 0; //числовая переменная равна 0 [Bindable] //сам еще не знаю для чего нужна это строка, но без нее выдает ошибку private var gr:String = "1"; //текстовая переменная равна 1 [Bindable] private var patch:String; //текстовая переменная /* Функция создания чара, отправляет данные которые ввел пользователь */ private function onCreateChar():void { createRequest.send(); } /* Функция выбора RadioButton мужского пола */ private function iMen():void { avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку gr = "1"; //переменная равна 1 simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" } /* Функция выбора RadioButton женского пола */ private function iWomen():void { avatar.load(pic_arr_w[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку gr = "2"; //переменная равна 1 simpleLabel.text = "2-1"; //тег <mx:Text> который имеет имя simpleLabel равен "2-1" } /* Функция нажатия кнопки "Пред." */ private function onLeft():void { if (men.selected == true){ //если выбран пол "Мужской", то avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" i--; //переменная уменьшаеться на 1 if (i == -1) { //если переменная "i" равна -1, то i = 3; //"i" равна 3 } if (i == 0) { //если "i" равна 0, то simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" avatar.load(pic_arr_m[0]); //будет отображать первый аватар patch = "img/man1-1.swf"; //путь к аватару } if (i == 1) { simpleLabel.text = "1-2"; avatar.load(pic_arr_m[1]); patch = "img/man1-2.swf"; } if (i == 2) { simpleLabel.text = "1-3"; avatar.load(pic_arr_m[2]); patch = "img/man1-3.swf"; } if (i == 3) { simpleLabel.text = "1-4"; avatar.load(pic_arr_m[3]); patch = "img/man1-4.swf"; } } if (women.selected == true) { //если выбран пол "Женский", то avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" i--; //переменная уменьшаеться на 1 if (i == -1) { //если переменная "i" равна -1, то i = 3; //"i" равна 3 } if (i == 0) { simpleLabel.text = "2-1"; avatar.load(pic_arr_w[0]); patch = "img/woman2-1.swf"; } if (i == 1) { simpleLabel.text = "2-2"; avatar.load(pic_arr_w[1]); patch = "img/woman2-2.swf"; } if (i == 2) { simpleLabel.text = "2-3"; avatar.load(pic_arr_w[2]); patch = "img/woman2-3.swf"; } if (i == 3) { simpleLabel.text = "2-4"; avatar.load(pic_arr_w[3]); patch = "img/woman2-4.swf"; } } } /* Функция нажатия кнопки "След." */ private function onRight():void { if (men.selected == true){ //если выбран пол "Мужской", то avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" i++; //переменная увеличиваеться на 1 if (i == 4) { //если переменная "i" равна 4, то i = 0; //"i" равна 0 } if (i == 0) { simpleLabel.text = "1-1"; avatar.load(pic_arr_m[0]); patch = "img/man1-1.swf"; } if (i == 1) { simpleLabel.text = "1-2"; avatar.load(pic_arr_m[1]); patch = "img/man1-2.swf"; } if (i == 2) { simpleLabel.text = "1-3"; avatar.load(pic_arr_m[2]); patch = "img/man1-3.swf"; } if (i == 3) { simpleLabel.text = "1-4"; avatar.load(pic_arr_m[3]); patch = "img/man1-4.swf"; } } if (women.selected == true) { //если выбран пол "Женский", то avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" i++; //переменная увеличиваеться на 1 if (i == 4) { //если переменная "i" равна 4, то i = 0; //"i" равна 0 } if (i == 0) { simpleLabel.text = "2-1"; avatar.load(pic_arr_w[0]); patch = "img/woman2-1.swf"; } if (i == 1) { simpleLabel.text = "2-2"; avatar.load(pic_arr_w[1]); patch = "img/woman2-2.swf"; } if (i == 2) { simpleLabel.text = "2-3"; avatar.load(pic_arr_w[2]); patch = "img/woman2-3.swf"; } if (i == 3) { simpleLabel.text = "2-4"; avatar.load(pic_arr_w[3]); patch = "img/woman2-4.swf"; } } } /* Функция определения результата */ private function onResult(e:ResultEvent):void { if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то //var link:URLRequest = new URLRequest("http://localhost/game.php"); //создаем ссылку //navigateToURL(link, "_self"); //переадресовываем по ссылке } else { //в другом случае, если результат не существует, то switch (int(String(e.result))) { //считываем данные case -1 : //если данные равны "-1", то выводим всплывающее окно Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!"); break; case -2 : //если данные равны "-2", то выводим всплывающее окно Alert.show("Такое имя уже существует", "Ошибка!"); break; case -3 : //если данные равны "-3", то выводим всплывающее окно Alert.show("Вы не ввели имя", "Ошибка!"); break; case -4: //если данные равны "-4", то выводим всплывающее окно Alert.show("Недопустимые символы в имени", "Ошибка!"); break; } } } ]]></mx:Script> Я здесь все прокоментировал, думаю вопросов не возникнет, а если возникнут, то прошу — задавайте =) Теперь нам нужно создать обработчик, который определяет какие данные нужно отослать в php скрипт. Такой обработчик называеться HTTPService. У нас он будет выглядеть так: Code <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php"> <mx:request> <mx:nameChar>{nameChar.text}</mx:nameChar> <mx:avaIm>{simpleLabel.text}</mx:avaIm> <mx:gr>{gr.toString()}</mx:gr> <mx:patch>{patch.toString()}</mx:patch> </mx:request> </mx:HTTPService>
|
|
| |
Assasin | Дата: Суббота, 17 Октября 2009, 19:32 | Сообщение # 708 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| С анимацией не дружу, но могу попробовать -------------- Нет, не получаеться
Сообщение отредактировал Assasin - Суббота, 17 Октября 2009, 19:39 |
|
| |
Assasin | Дата: Суббота, 17 Октября 2009, 19:23 | Сообщение # 709 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| море, море... http://rpgman.byethost33.com/Tiles2.swf Quote (Девяностых) Assasin, С нижнего на верхний тайлик будет сложно подниматься лестницу ставь! Щас попробуем ------------------------- Quote (Девяностых) Assasin, С нижнего на верхний тайлик будет сложно подниматься лестницу ставь! А зачем лестница? ведь там можно перешагнуть и все, ведь не лилипуты будут бегать
Сообщение отредактировал Assasin - Суббота, 17 Октября 2009, 19:27 |
|
| |
Assasin | Дата: Суббота, 17 Октября 2009, 19:00 | Сообщение # 710 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| Вот доделал тайлик http://rpgman.byethost33.com/Tiles.swf
|
|
| |
Assasin | Дата: Суббота, 17 Октября 2009, 18:35 | Сообщение # 711 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| Спасиб)) У меня фантазии не хватает, так что нарисовал не сильно красиво. Щас попробую доделать магму
|
|
| |
Assasin | Дата: Суббота, 17 Октября 2009, 18:15 | Сообщение # 712 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| Вот решил в свободное время нарисовать что нибудь
Сообщение отредактировал Assasin - Суббота, 17 Октября 2009, 18:16 |
|
| |
Assasin | Дата: Суббота, 17 Октября 2009, 12:00 | Сообщение # 713 | Тема: Барахолка спрайтов картинок |
web-coder
Сейчас нет на сайте
| Критиковать нечего, как по мне - отлично нарисовано
|
|
| |
Assasin | Дата: Среда, 14 Октября 2009, 19:21 | Сообщение # 714 | Тема: Shoot Space - браузерная MMOARPG |
web-coder
Сейчас нет на сайте
| Master_Chief, Отредактируй ссылку, ты точку в конце лишнюю поставил.
|
|
| |
Assasin | Дата: Вторник, 13 Октября 2009, 18:00 | Сообщение # 715 | Тема: Урок по созданию браузерной игры № 2 |
web-coder
Сейчас нет на сайте
| MrDmitriy65, Можно и так, но вы не правы что не будет переходить на регистрацию. И так и так все будет работать, но за подсказку спасибо
|
|
| |
Assasin | Дата: Понедельник, 12 Октября 2009, 14:39 | Сообщение # 716 | Тема: Уроки по созданию браузерной игры |
web-coder
Сейчас нет на сайте
| kALIFE, Цитата из книги "Самоучитель MySQL 5": Quote Использование ключевого слова ENGINE являеться более предпочтительным, но в отличии от TYPE не может быть использовано в версиях MySQL младше, чем 4.0.18. Тоесть другими словами можно сказть что никакой разницы нету если ты используешь MySQL 5 версии. Quote (kALIFE) и в таблице enemy не понил вот это: /* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/'); вставлять куда то нажимая изменить и вставить этот код или как ? спасиб. Это в БД ты добавил запись которая отображает, что у нас есть враг и зовут его Призрак с параметрами атаки, защиты и т.д. Этот код вставляеться вместе с остальным в данное поле картинка
|
|
| |
Assasin | Дата: Воскресенье, 11 Октября 2009, 23:17 | Сообщение # 717 | Тема: Подскажите пожалуйста, как сделать стратегию! |
web-coder
Сейчас нет на сайте
| А ты думал? Тут как и в школе тоже учить нужно.
|
|
| |
Assasin | Дата: Воскресенье, 11 Октября 2009, 14:44 | Сообщение # 718 | Тема: Урок по созданию браузерной игры № 2 |
web-coder
Сейчас нет на сайте
| Урок № 2 Создание формы входа и I этап регистрации
Итак приступаем ко второму уроку. Здесь я опишу как с помощью html создаються формы, и как с помощью php можно записать данные, введенные в эти формы, в БД. Сначала создадим форму входа, она будет состоять с двух полей ввода для email игрока и пароля. Также на ней будет 2 кнопки, одна кнопка ведет на скрипт регистрации, другая инициализирует игрока и перемещает его в игру. Для начала перейдите в папку htdocs что находиться в каталоге xampp, у меня это C:\xampp\htdocs\ и удалите все что там есть. Итак приступим к написанию скрипта, создайте с помощью PSPad новый документ и назовите его index.php, сохраните этот документ в папке htdocs, которая находиться в каталоге xampp. У меня это C:\xampp\htdocs\ После того как сохранили вставьте код приведенный ниже, а лучше перепишите, так вы лучше поймете и запомните. Code <!-- Любая грамотно свёрстанная страница должна в самом начале содержать так называемый DOCTYPE. Нужен он для всевозможных устройств вывода информации и браузеров в том числе. --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- Ну, раз тут появилось слово lang и ru, то понятно, что это указание на язык документа. Не путать с кодировкой! Её мы укажем позднее. --> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <!-- B нём содержится всякая служебная информация: название страницы (то, что входит в титл), кодировка, ключевые слова для поисковых роботов, описание страницы и т.п. --> <head> <!-- Указываем кодировку windows-1251 --> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <!-- Именно эта строка первой покажется в результатах поиска яндекса или рамблера, если они ещё нас найдут. BTG – сокращенно от Browser Test Game, я решил назвать так игру--> <meta name="description" content="Браузерная Флеш игра BTG" /> <!-- ключевые слова для поисковиков. --> <meta name="keywords" content="игра, флеш, браузер, BTG, игроки." /> <!-- ссылка на наш лист стилей CSS, который мы создадим чуть позже. --> <link rel="stylesheet" href="style.css" type="text/css" /> <!-- Выводит вверху нашего браузера --> <title>BTG – браузерная онлайн Flash игра</title> <!-- Закрываем наш тег. Обязательно нужно закрывать теги! И в правильном порядке, как показано здесь, сначала <head><title></title></head> --> </head> <!-- “Тело” нашей странички --> <body> <!-- Используем верстку страницы с помощью div'ов, они служать для распределения контента на странице, так как у нас будет одна форма входа, соответственно будет один div, он будет иметь имя(id) login, это нужно для того что б после мы могли изменять разные характеристики в этом блоке, такие как: цвет букв, цвет фона, шрифт и т.д. --> <div id='entry'> <!-- Создаем форму с помощью тега form, задаем ей метод post(нужен для передачи данных введенных пользователем в поля) Определяем что после нажатия кнопки Войти, перенаправляем на скрипт login.php который обрабатывает введенные данные --> <form action='login.php' method='post'> <!-- Создаем поле ввода с помощью тега input, указываем что будет отображаться текст с помощью тега type.Задаем класс inup, он как и div служит для отображения графической части. Далее задаем небольшой скриптик в котором происходит следующее: Если в поле ничего не введено, то на нем будет отображаться надпись E-mail, если пользователь хочет что то ввести, то надпись пропадает. И последнее задаем имя поля email, нужно для нашего скрипта login.php --> <input class="inup" type="text" onblur="if (value == '') {value='E-mail'}" onfocus="if (value == 'E-mail') {value =''}" value="E-mail" name="email"><br> <!-- Все тоже что и выше, только отображаеться надпись Пароль, но она отображаеться в виде кружков или звездочек(смотря в каком браузере просматриваеться), так как тип поля мы указали password, и имя поля у нас - pass --> <input class="inup" type="password" onblur="if (value == '') {value='Пароль'}" onfocus="if (value == 'Пароль') {value =''}" value="Пароль" name="pass"><br> <!-- Создаем кнопку (submit) с класом btn, так же понадобиться нам для отображения графически, и задаем что б на кнопке было написано Войти, с помощью тега value --> <input type="submit" class='btn' value="Войти"><br> <!-- Также создаем кнопку, но на этот раз у нее тип button и называеться она Регистрация. Так же появилась функция onclick с помощью которой пользователь переходит на другую страничку нашей игры, а точнее на регистрацию(файл reg.php) --> <input type=button class='btn' value=' Регистрация ' onclick='window.location="reg.php"'> <!-- Закрываем все теги --> </form> </div> </body> </html>
С формой входа справились, сохраняем ее, открываем браузер и переходим по такому адресу http://localhost/index.php и видим примерно следующее (картинка). Так сказать не очень впечатляет такое расположение элементов. Что б все красиво оформить создаем в PSPad документ CSS(Cascading Style Sheet) и называем его style.css. В этом документе мы будем хранить всю графическую информацию главной страницы сайта и I этапа регистрации. Приступаем к еаписанию кода. Code /* Задаем значения для той области документа, которая находиться между тегами <body></body>. background-color это фон нашего сайта, я установил на черный, все остальные значения обозначают что у нас отступы от краев браузера будут равны 0, тоесть их совсем не будет */ body {background-color:#000000;margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;} /* Задаем значения для той области которая находиться в теге <div> с именем entry(id=entry) Задаем цвет текста белый, и выравнивание по-центру */ #entry {color:#ffffff;text-align:center;} /* Здесь описываються значения для наших кнопок. Размер шрифта, цвет текста, сам шрифт, цвет фона и цвет рамки вокруг кнопки */ .btn {font-size:7.5pt;color:#dfddd3;font-family:Verdana,Arial,Helvetica,sans-serif;background-color:#2b2b18;border:1px double #817A63;} /* Здесь описываються значения для наших полей ввода. Размер шрифта, цвет текста, сам шрифт, цвет фона и цвет рамки вокруг поля */ .inup {text-align:center;font-size:8pt;color:#dfddd3;font-family:Verdana,Arial,Helvetica,sans-serif;background-color:#151616;border: 1px double #817a63;}
Сохраняем документ и снова переходим по адресу http://localhost/index.php и теперь видим более менее приличную картину (картинка). Вы конечно можете переделать цвет и фон по своему, это будет вам на пользу. Теперь если нажать на кнопку Вход то перейдем по адресу http://localhost/login.php , но нам выдаст ошибку так как такого файла нету, мы его еще не создали. И если нажать на кнопку Регистрация, тоже выдаст ошибку, так как тоже такого файла еще нету. Файл login.php мы создадим в 3 уроке. Сейчас возьмемся за файл reg.php. Создаем в PSPad'e новый php файл, сохраняем его с именем reg.php в папку где находиться index.php и style.css. Итак, что же у нас будет в файле регистрации? Будет 3 поля, в одном нужно будет ввести email игрока, в другом пароль и в третьем подтверждение пароля. Также у нас будет check-box для согласия с правилами игры. Ну и конечно кнопка Далее. При создании этого файла мы впервые столкнемся с языком php, на котором напишем условие проверки заполнения полей, а также записи данных в БД. Но для начала нам нужно создать файл conf.php, в нем будет храниться информация о нашей БД. Все php скрипты пишуться в таких вот кавычках Выглядеть это будет так: Code <?php $base_name="localhost"; //имя (стандартно у всех localhost) $base_user="root"; //юзер (стандартно у всех root) $base_pass="password"; //пароль (выставить можно зайдя во вкладку Привилегии в phpMyAdmin $db_name="testgame"; //имя БД ?>
Теперь мы можем приступить к написанию скрипта регистрации: Code <?php session_start(); //стартуем сесию
include "conf.php"; //подключаем файл с параметрами БД
/* Подключаемся к БД, если не получаеться, то выводим ошибку */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!mysql_select_db($db_name,$data)){ echo "<BR>"; echo mysql_error(); die(); } //Прверяем на заполнение полей if ($_POST['next']){ //если нажата кнопка далее, то $error=0; // переменная равна 0 //Проверка на мыло if (!$_POST['email']){ $errm = "Вы не ввели e-mail<br>"; $error=1;} if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;} $c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'")); {if ($c_e>0) {$errm .= "Данный e-mail уже зарегистрирован в игре"; $error=1;}} //Проверка на пароль if(!$_POST ["pass"]) {$errp = "Необходимо указать Ваш пароль<br>"; $error =1;} if(!preg_match("/^[А-Яа-яЁёa-zA-Z0-9]+$/",$_POST ["pass"])) {$errp .= "Пароль содержит запрещенный символ<br>"; $error =1;} if (strlen ($_POST ["pass"])<6 || strlen ($_POST ["pass"])>25){ $errp .="Длина пароля от 6 до 25 символов<br>"; $error =1;} if ($_POST ["pass"]!= $_POST ["pass2"]){ $errp .="Введёные вами пароли не совпадают!"; $error =1;} //проверка на согласие с правилами if (!$_POST['rules']) {$errr = "Вы не согласны с правилами?<br>"; $error=1;} // Нет ошибок, создаём перса if(!$error) { $ip = $_SERVER['REMOTE_ADDR'];//узнаем ip адрес юзера /* Записываем данные в БД */ mysql_query ("INSERT INTO users (pass, ip, email) values('".md5($_POST ["pass"])."','".$ip."','".addslashes($_POST ["email"])."')") or die("Invalid query: " . mysql_error()); $_SESSION['user'] = $_POST['email']; //записуем email в глобыльную переменную $_SESSION $_SESSION['ip'] = $ip;//записуем ip в глобыльную переменную $_SESSION ?> <script>location.href="goreg.php";</script><!-- Переадресовуем на страничку создания чара --> <?php } } // Выводим ошибочки function err($text){ return "<tr valign='middle' align='left'><td colspan='2'><span class='error'>$text</td></tr>"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <meta name="description" content="Браузерная Флеш игра BTG" /> <meta name="keywords" content="игра, флеш, браузер, BTG, игроки." /> <link rel="stylesheet" href="style.css" type="text/css" /> <title>BTG – браузерная онлайн Flash игра</title> </head> <body> <div id="reg"> <form action="" method="post"> <!-- Создаем таблицу с помощью тега table и размещяем по-центру --> <table align="center"> <!-- Создаем строку с помощью тега tr и разбиваем ее на 2 ячейки с помощью тега td --> <tr><td align="left" width="200">E-mail:</td><td><input type="text" value="<?php echo $_POST['email'] ?>" name="email" class="inup"></td></tr> <?php echo err($errm); ?> <tr><td align="left" width="200">Пароль:</td><td><input type="password" value="" name="pass" class="inup"></td></tr> <?php echo err($errp); ?> <tr><td align="left" width="200">Повторите пароль:</td><td><input type="password" value="" name="pass2" class="inup"></td></tr> <!-- Закрываем таблицу --> </table> <!-- Создаем checkbox с именем rukes --> <span><input type="checkbox" class="inup" name="rules"></span> Я обязуюсь соблюдать <A href="lib/law.php" target=_blank><B>Законы игры Test Game</B></A></p> <?php echo err($errr); ?> <input type="submit" name="next" value="Дальше" class="btn"> </form> </div> </body> </html>
Теперь обьясняю. После нажатии кнопки Далее происходит проверка скрипта, если все поля введены, то переадресовываем на следующую страницу в которой будет создавать своего персонажа, но это в 3 уроке. Если поля или какое то поле пустое, то выводиться ошибка. Так же у нас появился новый параметр — ip. Мы его не обозначили в нашей БД. Так что заходим в phpMyAdmin, Переходим по нашей БД testgame, жмем на таблицу users и добавляем ip, по скринам думаю разберетесь: картинка картинка картинка Теперь нам нужно подправить файл style.css, так как в нашем скрипте добавился еще один класс reg. Добавим следующий код: Code #reg {color:#ffffff;text-align:center;} .error {FONT-SIZE:8pt;FONT-FAMILY:verdana;COLOR:red;} A:link {COLOR:#F9F7EA;TEXT-DECORATION:none;font-weight:normal;} A:visited {COLOR:#F9F7EA;TEXT-DECORATION:none;font-weight:normal;} A:active {COLOR:#77684D;TEXT-DECORATION:none;font-weight:normal;} A:hover {COLOR: #7E7765;TEXT-DECORATION:underline}
A:link, A:visited, A:active, A:hover — описывают состояние ссылки при наведении на нее мишки, при нажатии, при покидании области ссылки и в неактивном состоянии.
Вот и второй урок подошел к концу, если возникли вопросу, прошу задавайте, буду рад ответить.
При копировании материала ссылка на источник обязательна!
|
|
| |
Assasin | Дата: Суббота, 10 Октября 2009, 18:49 | Сообщение # 719 | Тема: Уроки создание браузерной онлайновой игры на blitz 3d |
web-coder
Сейчас нет на сайте
| Quote (melkij) Здравствуйте пожалуйста можете прислать уроки от blitz-school на мой mail melkijforever2@mail.ru буду очень вам презнателен.На всех ссылках побывал уроки удалены борцами за авторские права А тут посмотреть??? <_<
Сообщение отредактировал Assasin - Суббота, 10 Октября 2009, 18:50 |
|
| |
Assasin | Дата: Суббота, 10 Октября 2009, 16:35 | Сообщение # 720 | Тема: Apache |
web-coder
Сейчас нет на сайте
| А как ты проверяешь внешний ип?
|
|
| |
|