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

Урок 11 Создание квеста (php, FD, MySQL)

Перейти вниз

Урок 11 Создание квеста (php, FD, MySQL)

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

В данном уроке мы научимся делать квест и Журнал квестов, довольно примитивно, но главное что б понять основу, а дальше дело полетит на всех парах
Начнем с квеста, создадим файл quest.mxml и записываем такой код:

Code
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow showCloseButton="true" layout="absolute" width="400" height="300" creationComplete="questComp()" close="handleClose(event)" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import mx.managers.PopUpManager;
import mx.events.CloseEvent;
import mx.rpc.events.ResultEvent;
/* При открытии окна квеста отправляються данные в php скрипт */
public function questComp() {
questText.text = "Помогите!!! Спасите!!! Странник, убей этого монстра! Он хочет меня сьесть!";
questScr.send();
}
/* Закрываем окно квеста */
public function handleClose(evt:CloseEvent):void {
PopUpManager.removePopUp(this);
}
/* Проверяем выполнен ли квест */
public function onResult(e:ResultEvent):void {
if (int(e.result) > 0) {

} else {
switch (int(String(e.result))) {
case -1 :
questText.text = "Ты не выполнил квест!";
break;
case -2 :
questText.text = "Поздравляю тебя странник, ты прoшел испытание!";
break;
}
}
}
]]></mx:Script>
<mx:HTTPService id="questScr" method="POST" useProxy="false" resultFormat="text" result="onResult(event)" url="quest.php"/>
<mx:Label text="Монстры, монстры..." x="128" y="18" width="119" height="18"/>
<mx:Button label="Ок" click="questComp()" x="138" y="216" width="107" height="22"/>
<mx:TextArea id="questText" editable="false" borderColor="white" x="68" y="152" width="300" height="60"/>
<mx:Image source="img/face01.png" x="134" y="40" width="90" height="90"/>
</mx:TitleWindow>

Мы создали всплывающее окно в котором будет даваться квест, для того что б это окно работало разкоментируйте строки в файле GameField.mxml.
Теперь приступаем к php скрипту, создайте файл quest.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();
}
mysql_select_db($db_name);

$row = mysql_fetch_array(mysql_query("SELECT * FROM quest WHERE name_q='".$_SESSION['name']."'"));

if ($row['name_q'] != $_SESSION['name']) {
mysql_query("INSERT INTO quest (name_q, cont_quest, kill_quest) VALUES ('".$_SESSION['name']."','no', '0')");
} else {
$row2 = mysql_fetch_array(mysql_query("SELECT * FROM quest WHERE name_q='".$_SESSION['name']."'"));

if ($row2['kill_quest'] == '0') {
echo '-1';
exit;
} elseif ($row2['kill_quest'] == '1') {
echo '-2';
exit;
}

if ($row2['cont_quest'] == 'no'){
echo '-1';
exit;
} else {
echo '-2';
exit;
}
}
?>

Сначала проверяеться взял ли игрок данный квест, если взял, то выводим прошел его или нет, если не взял, то пишем что квест не взят.

Заходим в phpMyAdmin в нашу таблицу и находим столбец quest, добавляем к нему еще одно значение, а именно name_q CHAR(32), как добавить надеюсь вы помните.

Данный квест пока выполнить проблематично, так как мы еще не создали бой, а в квесте как раз просят убить 1 монстра.

Теперь приступаем к Журналу квестов, во ФД создаем файл journal.mxml и записываем следующее:

Code
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow showCloseButton="true" layout="absolute" width="450" height="300" close="handleClose(event)" creationComplete="questComp()" 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 compQuest:String;

public function handleClose(evt:CloseEvent):void {
PopUpManager.removePopUp(this);
}

public function questComp():void {
questJour.send();
}

public function onResult(e:ResultEvent):void { //обработка результатов и ошибок
compQuest = String(e.result);
compQ.text = compQuest;
}

]]></mx:Script>
<mx:HTTPService id="questJour" useProxy="false" method="POST" result="onResult(event)" resultFormat="text" url="journal.php"/>
<mx:Label text="Монстры, монстры..." x="25" y="14" width="119" height="18"/>
<mx:TextArea text="Нужно убить одного монстра." borderColor="white" backgroundColor="white" x="23" y="45" width="160" height="44"/>
<mx:Text id="compQ" text="Text" x="25" y="92" width="140" height="22"/>
</mx:TitleWindow>

Файл маленький, выводит всего навсего выполнен квест или нет

Нужно что б это окно всплывало, для этого открываем ранее созданый файл menu.mxml и добавляем еще одну функцию:

Code
public function journalQ():void {
var popupJournal:journal = journal(PopUpManager.createPopUp(this, journal, false));
popupJournal.x = 180;
popupJournal.y = 80;
popupJournal.title = "Журнал квестов";
}

И немного изменяем в этом же файле данную строку:


Code

<mx:Button label="Журнал квестов" x="170" y="0" width="123" height="22"/>


На эту:

Code

<mx:Button click="journalQ()" label="Журнал квестов" x="170" y="0" width="123" height="22"/>

И последнее что нужно это создать файл journal.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();
}
mysql_select_db($db_name);

$row = mysql_fetch_array(mysql_query("SELECT * FROM quest WHERE name_q='".$_SESSION['name']."'"));

if ($row['cont_quest'] == 'no'){
echo "не завершен.";
exit;
} elseif ($row['cont_quest'] == 'yes') {
echo "завершен!";
exit;
} else {
echo "Квест не взят!";
exit;
}
?>

Проверка на взятие квеста, ничего сложного
Надеюсь вы справитесь, если что то не понятно
!!!!!!!!!!! ЖДИТЕ УРОКИ !!!!!!!!!!!!!
avatar
Admin
Admin

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

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

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

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

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

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