SHOORIK | Дата: Четверг, 24.05.2012, 13:39 | Сообщение # 1 |
Человечище
Группа: Администраторы
Сообщений: 23
Награды: 5
Репутация: 41
Статус: Offline
| Урок 6 Создание характеристик чара (php, FD, MySQL)
В этом уроке я опишу как создать профиль для чара, а также как просмотреть характеристика любого игрока. Для начала создадим меню. Открываем FlashDevelop и создаем новый mxml файл и называем его menu.mxml. Записываем в него такие строчки:
Code <?xml version="1.0" encoding="utf-8"?> <mx:Application layout="absolute" width="392" height="22" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script><![CDATA[ import flash.net.URLRequest; import mx.managers.PopUpManager; /* Функция для отображения всплывающего окна, в котором находиться информация о вашем чаре */ public function prof():void { var popup:profil = profil(PopUpManager.createPopUp(this, profil, false)); popup.x = 250; popup.y = 100; popup.title = "Профиль"; } /* Функция которая переадресовывает на php скрипт? Который обрабатывает выход игрока */ private function logout():void { var logoutLink:URLRequest = new URLRequest("logout.php"); navigateToURL(logoutLink, "_self"); } ]]></mx:Script> <mx:Button click="prof()" label="Профиль" x="0" y="0" width="80" height="22"/> <mx:Button label="Инвентарь" x="80" y="0" width="90" height="22"/> <mx:Button label="Журнал квестов" x="170" y="0" width="123" height="22"/> <mx:Button click="logout()" label="Выход" x="292" y="0" width="100" height="22"/> </mx:Application>
Изменим немного файл GameWindow.mxml, а именно заменим строку в которой мы загружаем флешку с менюшкой на эту:
Code
<mx:SWFLoader source="menu.swf" x="200" y="0" width="400" height="22"/>
В ней я только подкоректировал расположение менюшки. Приступаем к написанию всплывающего окна в которм отображаються данные игрока. Создаем файл profil.mxml и записываем в него следующее:
Code <?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow showCloseButton="true" layout="absolute" width="250" height="300" close="handleClose(event)" creationComplete="profileComplete()" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script><![CDATA[ import mx.managers.PopUpManager; import mx.events.CloseEvent; import mx.rpc.events.ResultEvent;
private var dataXML:XML = new XML; //данные из XML файла /* Функция для отправки данных в скрипт */ public function profileComplete():void { profileChar.send(); } /* Отображения данных */ public function onResult(e:ResultEvent):void { //обработка результатов и ошибок dataXML = XML(e.result); avatar_img.load(String(dataXML.avatar[0])); nameChar.text = dataXML.name[0]; atk.text = dataXML.atk[0]; def.text = dataXML.def[0]; lov.text = dataXML.lov[0]; life.text = dataXML.life[0]; lvl.text = dataXML.lvl[0]; exp.text = dataXML.exp[0]; } /* Функция закрытия всплывающего окна */ private function handleClose(evt:CloseEvent):void { PopUpManager.removePopUp(this);
} ]]></mx:Script> <mx:HTTPService id="profileChar" useProxy="false" method="POST" result="onResult(event)" resultFormat="xml" url="profil.php"/> <mx:Label id="nameChar" text="1" x="86" y="11" width="53" height="18"/> <mx:Label id="atk" text="2" x="149" y="41" width="53" height="18"/> <mx:Label id="def" text="3" x="149" y="57" width="53" height="18"/> <mx:Label id="lov" text="4" x="149" y="75" width="53" height="18"/> <mx:Label id="life" text="5" x="150" y="93" width="53" height="18"/> <mx:Label id="lvl" text="6" x="22" y="29" width="53" height="18"/> <mx:Label id="exp" text="7" x="149" y="111" width="53" height="18"/> <mx:Image id="avatar_img" x="11" y="54" width="120" height="200"/> </mx:TitleWindow>
Теперь приступим к созданию файла, который будет отображать характеристики вашего персонажа. Как видно из предыдущего кода данный файл будет называться profil.php:
Code <?php session_start();
include "conf.php";
$data = mysql_connect($base_name, $base_user, $base_pass); mysql_select_db($db_name);
$query = mysql_query("SELECT * FROM users WHERE name='".$_SESSION['name']."'"); $row = mysql_fetch_array($query); ### Запускаем XML и выводим характеристика юзера ### echo "<?xml version='1.0'?>"; echo "<char>";
echo '<name>'.$row['name'].'</name>';
$query2 = mysql_query("SELECT * FROM avatar WHERE id_ava='".$row['id_user']."'"); $row2 = mysql_fetch_array($query2);
echo '<avatar>img/'.$row2['vid'].'.png</avatar>'; echo '<atk>'.$row['atk'].'</atk>'; echo '<def>'.$row['def'].'</def>'; echo '<lov>'.$row['lov'].'</lov>'; echo '<life>'.$row['life'].'</life>'; echo '<lvl>'.$row['lvl'].'</lvl>'; echo '<exp>'.$row['exp'].'</exp>';
echo '</char>'; ?>
Теперь делаем php скрипт, который обрабатывает выход игрока, назовем его logout.php:
Code <?php session_start();
include "conf.php";
$data = mysql_connect($base_name, $base_user, $base_pass); if(!$data){ echo "<BR>"; echo mysql_error(); die(); } /* Ставим игроку в таблице users в столбце online цыфру 0, что означает что игрок оффлайн */ mysql_select_db($db_name); mysql_query("UPDATE users SET online='0' WHERE email='".$_SESSION['user']."'"); /* Уничтожаем все сессии игрока */ if (isset($_SESSION['user']) || isset ($_SESSION['ip']) || isset($_SESSION['name'])){ unset($_SESSION['user']); unset($_SESSION['ip']); unset($_SESSION['name']); } /* Переадресовываем на главную */ echo "<script>location.href='index.php';</script>"; ?>
И последнее что нам осталось сделать это вывод информации о любом пользователя если нажать на значек (і) в чате возле имени игрока. Назовем данный скрипт info.php, я сильно не мудрил и сделал в виде простой таблицы, вы можете оформить как захотите:
Code <?php include "conf.php";
$data = mysql_connect($base_name, $base_user, $base_pass); mysql_select_db($db_name); /* Описание ошибки */ $error = "<title>Ошибка!</title> <body bgcolor=EBEDEC> <font color=red><b>Ошибка:</b></font><br>Персонаж с таким логином или ID не найден!"; /* Проверяем существует ли переменная nameChar и id который будет равняться ей */ if (isset($_POST['nameChar']) && !empty($_POST['nameChar'])){ $login = mysql_escape_string($_POST['nameChar']); $where = " WHERE users.name='".addslashes($login)."'"; } elseif (is_numeric($_SERVER['QUERY_STRING'])) { $id = mysql_escape_string($_SERVER['QUERY_STRING']); $where = " WHERE users.id_user=".addslashes($id); } else // в другом случае выводим ошибку { die($error); } /* Выделяем игрока */ $query = mysql_query("SELECT * FROM users".$where."");
$info = mysql_fetch_array($query); $row = mysql_fetch_array(mysql_query("SELECT * FROM avatar WHERE id_ava='".$info['id_user']."'")); //узнаем аватарку игрока ?> <html> <head> <title>Информация о персонаже - <?=$info['name']?></title> <body> <table align="center" border="0" width="243" height="280" cellspacing="0" cellpadding="0" bgcolor="#BFBFBF" bordercolor="#666699"> <tr> <td> <table width="243"> <tr> <td align="center"><b><?=$info['name']?><b></td> </tr> </table> </td> </tr> <tr> <td> <table> <tr> <td align="center"><?=$info['lvl']?></td> </tr> <tr> <td width="153" height="200" rowspan="5"><img src="img/<?=$row['vid']?>.png"></td> <td width="90" align="center">Атака: <?=$info['atk']?></td> </tr> <tr> <td width="90" align="center">Защита: <?=$info['def']?></td> </tr> <tr> <td width="90" align="center">Ловкость: <?=$info['lov']?></td> </tr> <tr> <td width="90" align="center">Жизни: <?=$info['life']?></td> </tr> <tr> <td width="90" align="center" valign="top">Опыт: <?=$info['exp']?></td> </tr> </table> </td> </tr> </table> </head> </body> </html>
Вот и 6 урок подошел к концу, сожалею что долго не писал, так как не было интернета Код как видите я комментировал не весь, так как в предыдущих уроках описыал об этом, надеюсь вы не забыли.
Данные картинки разархивируйте в папку img картинки---(http://spam-site.www/disk/14699688000/image.rar.html)!!
найдено в интернете
|
|
| |