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

Join the forum, it's quick and easy

ИГРОДЕЛ
Войдите на сайт или зарегистрируйтесь!!!
ИГРОДЕЛ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

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

Перейти вниз

Урок 11 Создание квеста (php, FD, MySQL) Empty Урок 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;
}
?>

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

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

https://game-dll.forum2x2.ru

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

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

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

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