ИГРОДЕЛ
Войдите на сайт или зарегистрируйтесь!!!

Урок 6 Создание характеристик чара (php, FD, MySQL)

Перейти вниз

Урок 6 Создание характеристик чара (php, FD, MySQL)

Сообщение автор Admin в Сб Фев 20, 2010 3:13 pm

В этом уроке я опишу как создать профиль для чара, а также как просмотреть характеристика любого игрока.
Для начала создадим меню. Открываем 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)!! silent

ЖДИТЕ СЛЕДУШИХ УОКОВ!!

Мотерьял взят с сайта gcup.ru
Заходите и регистрируйтесь на сайте
avatar
Admin
Admin

Сообщения : 92
Очки : 280
Репутация : 36
Дата регистрации : 2010-02-20

Посмотреть профиль http://game-dll.mirbb.net

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения