Спасибо, правда как раз оттуда я этот код и взял))
Добавлено (29.01.2012, 12:24) --------------------------------------------- Я немного изменил код. Но не получается сделать вход не по логину, а по логину и паролю. Помогите кто нибудь, пожалуйста.
Script.js
Code
$(document).ready(function(){/* Как только загрузится документ, начинает работать код, который расположен внутри */ var name = null, // Будущее имя пользователя id = 0; // id последнего сообщения /* Начало работы, создаем запрос, который отсылает в скрипт core.php данные start=true методом POST ($_POST['start']=true) и принимаем от сервера данные в формате json */ $.ajax({ type: "POST", url: "core.php", data: "start=true", dataType: 'json', success: function(data) { /* Если пришла ошибка от сервера, то показываем её пользователю и перезагружаем страницу */ if (data.err) { if (data.err == 2) { apprise('Невозможно найти БД', {}, function(r){ location.href = "index.html"; }); } else if (data.err == 1) { apprise('База данных ушла в себя', {}, function(r){ location.href = "index.html"; }); } return false; } /* Если ошибок нет и получен ответ = 0 то показываем пользователю всплывающее окно */ if (data.ans == 0) { apprise('Логин:', {'input': true}, function(login){ /* Если пользователь не ввел логин либо нажал "Отменить" перезагружаем страницу */ if (login == false) { location.href = "index.html"; } else {/* Если ввел логин, то отправляем в файл core.php введеный логин и принимаем ответ опять же в формате json */ $.ajax({ type: "POST", url: "core.php", data: "name="+login, dataType: 'json', success: function(data) { /* Если ответ = 0, то запоминаем имя пользователя и id последнего сообщения */ if (data.ans == 0) { name = data.login; id = data.id; } else { /* Иначе выдаем ошибку и перезагружаем страницу */ apprise('Такой логин уже используется', function(r){ location.href = "index.html"; }); } } }); } }); } else { /* Если получаем ответ != 0, то запоминаем имя пользователя и id последнего сообщения */ name = data.login; id = data.id; } } }); /* Функция которая возвращает сообщения и пользователей онлайн, обновляется каждые 2 сек (2000 милисек) */ update(); setInterval(update, "2000");
function update() { /* Отправляем на сервер (файл core.php) данные update=1 и id последнего сообщения */ $.ajax({ type: "POST", url: "core.php", data: "update=1&id="+id, dataType: 'json', success: function(data) { /* Проверяем наличие ошибок */ if (data.err) { if (data.err == 2) { apprise('Невозможно найти БД', {}, function(r){ location.href = "index.html"; }); } else if (data.err == 1) { apprise('База данных ушла в себя', {}, function(r){ location.href = "index.html"; }); } return false; } /* Обновляем список пользователей */ if (data.user != $("#user .d").html()) { $("#user .d").html(data.user); } /* Добавляем новое сообщение на экран, прокручиваем скролл вниз и удаляем старые сообщения, оставивши последние 10 */ if (data.msg != "") { id = data.id; $('#message .d').append(data.msg); $('#message').scrollTop($('#message')[0].scrollHeight); var size = $("#message .d div").size(); if (size > 10) { for (var i = 0; i < size-10; i++) { $("#message .d div").eq(i).remove(); } } } } }); /* удаляем старые сообщения, оставивши последние 10. Данное действие дублируется, т.к. при загрузке страницы с чатом удаляются сообщения и при каждом новом полученом сообщении */ var size = $("#message .d div").size(); if (size > 10) { for (var i = 0; i < size-10; i++) { $("#message .d div").eq(i).remove(); } } } /* Отслеживаем нажатие клавиш */ $('.msg').keydown(function(event){ if (event.which == 13) { /* Если нажато Enter, запоминаем сообщение и */ var msg = $(this).val(), then = $(this); /* Обращение на самого себя, т.е. на элемент, который имеет класс msg (в нашем случае это input) */ if (msg == "") { /* Если сообщение пустое, то прекращаем выполнять следующий код*/ return false; } /* Отправляем на сервер сообщение и если пришел положительный ответ (!= 0) то прокручиваем блок сообщений вниз и очищаем строку в которую вводим сообщение */ $.ajax({ type: "POST", url: "core.php", data: "msg="+msg, dataType: 'json', success: function(data) { if (data.ans != 0) { $('#message').scrollTop($('#message')[0].scrollHeight); then.val(""); } } }); }; }); });
Core.php
Code
<?php session_start(); /* Данные для подключения к БД */ define("DB_HOST", "localhost"); define("DB_USER", "12345"); define("DB_PASS", "12345"); define("DB_NAME", "12345"); /* Фильтрация всех получаемых переменных */ $start = htmlspecialchars(stripslashes($_POST['start'])); $name = htmlspecialchars(stripslashes($_POST['name'])); $msg = htmlspecialchars(stripslashes($_POST['msg'])); $update = htmlspecialchars(stripslashes($_POST['update'])); $id = htmlspecialchars(stripslashes($_POST['id'])); /* Соединение с БД и если не удачное, то отправка ошибок клиенту */ $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS); if (!$connect) { $data['err'] = 1; echo json_encode($data); exit; } $db_sel = mysql_select_db(DB_NAME,$connect); if (!$db_sel) { $data['err'] = 2; echo json_encode($data); exit; } # Установка языка записи в БД mysql_query("SET NAMES utf8"); /* Если игрок загрузил страницу чата, то наш script.js передает серверу данные $_POST['start'] вот и обрабатываем эти данные */ if (!empty($start)) { /* Если не существует сессия name, то возвращаем 0, в другом случае указываем логин игрока, который хранится в сессии, передаем id последнего сообщения */ if (empty($_SESSION['name'])) { $data['ans'] = 0; } else { $data['ans'] = 1; $data['login'] = $_SESSION['name']; $msg_row = mysql_fetch_array(mysql_query("SELECT `post_id` FROM `post` ORDER BY `post_id` ASC")); $data['id'] = $msg_row['post_id']; } echo json_encode($data); // Отправляем данные в формате json exit; } /* Если переменная $name не пуста, то выполняем код */ if (!empty($name)) { /* Ищем игрока в БД */ $sql = mysql_query("SELECT * FROM `users` WHERE `user_name`='".$name."'"); if (mysql_num_rows($sql) == 0) { /* Если не находим, то создаем новую запись, запоминаем логин и передаем клиенту логин и id последнего сообщения */ mysql_query("INSERT INTO `users` (`user_name`,`user_online`,`last_update`) VALUES ('".$name."','1','".time()."')"); $data['ans'] = 0; $_SESSION['name'] = $name; $data['login'] = $_SESSION['name']; $msg_row = mysql_fetch_array(mysql_query("SELECT `post_id` FROM `post` ORDER BY `post_id` ASC")); $data['id'] = $msg_row['post_id']; } else { /* Если игрок в БД уже есть, то проверяем онлайн он или нет. Если онлайн, то выдаем ошибку, если нет, то делаем его онлайн и передаем нужные данные клиенту */ $row = mysql_fetch_array($sql); if ($row['user_online'] == 0) { $t = time(); mysql_query("UPDATE users SET last_update = '".$t."', user_online = '1' WHERE user_name = '".$_SESSION['name']."'"); $data['ans'] = 0; $_SESSION['name'] = $name; $data['login'] = $_SESSION['name']; $msg_row = mysql_fetch_array(mysql_query("SELECT `post_id` FROM `post` ORDER BY `post_id` ASC")); $data['id'] = $msg_row['post_id']; } else { $data['ans'] = 1; } } echo json_encode($data); exit; } /* Получение нового сообщения */ if (!empty($msg)) { if (empty($msg)) { /* Если переменная пуста, то возвращаем 0 */ $data['ans'] = 0; } else { /* В другом случае записываем в БД сообщение, обновляем запись игрока в БД (указываем что игрок онлайн и обновляем время последнего действия, нужно для отслеживания игроков онлайн) и отправляем нужные данные клиенту */ $t = time(); mysql_query("INSERT INTO `post` (`post_login`,`post_time`,`post_txt`) VALUES ('".$_SESSION['name']."','".$t."','".$msg."')"); mysql_query("UPDATE `users` SET `last_update`='".$t."', `user_online`='1' WHERE `user_name`='".$_SESSION['name']."'"); $data['ans'] = 1; $data['login'] = $_SESSION['name']; $data['time'] = date('H:i:s', $t); $data['msg'] = $msg; } echo json_encode($data); exit; } /* Если переменная $update не пуста (функция обновления на стороне клиента) */ if (!empty($update)) { if (empty($update)) { $data['ans'] = 0; } else { /* Выбираем всех игроков с базы */ $user = mysql_query("SELECT * FROM `users`"); $data['user'] = ""; while ($user_row = mysql_fetch_array($user)) { /* Если игрок онлайн, то проверяем время его последнего действия и добавляем к нему 1 час (3600 сек) и запоминаем для передачи его имени клиенту. Если игрок в течении часа ничего не делал, то переводим его в режим оффлайн и убираем из списка игроков. Перевод игрока в режим оффлайн будет состоятся только в том случае если хоть 1 пользователь будет находится в чате. */ if ($user_row['user_online'] == 1) { $t = $user_row['last_update']+3600; if ($t >= time()) { $data['user'] .= "<div>".$user_row['user_name']."</div>"; } else { mysql_query("UPDATE `users` SET `user_online`='0' WHERE `user_name`='".$user_row['user_name']."'"); } } } /* Выбираем все сообщения */ $msg_sql = mysql_query("SELECT * FROM `post` ORDER BY `post_id` ASC"); $data['msg'] = ""; while ($msg_row = mysql_fetch_array($msg_sql)) { /* Производим проверку id. Если id игрока меньше чем id последнего сообщения, значит в БД появилось новое сообщение, выбираем его и запоминаем для передачи клиенту. Данное действие нужно для того что бы в чат клиенту добавлять по несколько сообщений, а не обновлять весь блок (div). Т.к. бывает нужно выделить какое то сообщение, а не можешь, т.к. блок обновляется и выделение сбрасывается. */ if ($id < $msg_row['post_id']) { $data['msg'] .= "<div><font color='grey'>[".date('H:i:s', $msg_row['post_time'])."]</font> <strong>".$msg_row['post_login']." : </strong>".$msg_row['post_txt']."</div>"; $data['id'] = $msg_row['post_id']; } } } echo json_encode($data); exit; }
Спасибо! Очень долго искал нормальный чат и наконец нашел!
--------------------------------------------- Заметил несколько дырок. Если пользователь раньше был зареган, то при входе в базе это все обновляется, а сам чел не может написать ничего. Страница заново просит логин. Для этого я сделал так: В файле core.php надо заменить это:
Code
mysql_query("UPDATE users SET last_update = '".$t."', user_online = '1' WHERE user_name = '".$_SESSION['name']."'"); $data['ans'] = 0;
На это:
Code
mysql_query("UPDATE users SET last_update = '".$t."', user_online = '1' WHERE user_name = '".$_SESSION['name']."'"); $data['ans'] = 0; $_SESSION['name'] = $name;
И так же я немного приукрасил) Вот что у меня получилось:
Сообщение отредактировал SouzNik - Среда, 25 Января 2012, 18:57
Знаю, я уже пытался сделать сервером свой комп. У меня даже Денвер не идёт, так как у меня ОС - Win Server 2003. И он занимает 80 порт.
Вот недавно нашел на этом же сайте статью ассасина про создание чата на JS + PHP + MySQl. Только я в JS мало понимаю, а там надо некоторый код подредактировать. Помогите кто нибудь сделать так, чтоб этот код использовал уже зареганных пользователей, а не регал их сам, а если пользователь не авторизован, пересылал на страницу авторизации (login.php) P.S. Пользователи находятся в таблице users, а у авторизованных логин и пароль находятся в куках ($_COOKIE['zbgame_login'] и $_COOKIE['zbgame_pass'].
script.js $(document).ready(function(){ var name = null, // Будущее имя пользователя id = 0; // id последнего сообщения /* Начало работы, создаем запрос, который отсылает в скрипт core.php данные start=true методом POST ($_POST['start']=true) и принимаем от сервера данные в формате json */ $.ajax({ type: "POST", url: "core.php", data: "start=true", dataType: 'json', success: function(data) { /* Если пришла ошибка от сервера, то показываем её пользователю и перезагружаем страницу */ if (data.err) { if (data.err == 2) { apprise('Невозможно найти БД', {}, function®{ location.href = "index.html"; }); } else if (data.err == 1) { apprise('База данных ушла в себя', {}, function®{ location.href = "index.html"; }); } return false; } /* Если ошибок нет и получен ответ = 0 то показываем пользователю всплывающее окно */ if (data.ans == 0) { apprise('Введите логин', {'input': true}, function(login){ /* Если пользователь не ввел логин либо нажал "Отменить" перезагружаем страницу */ if (login == false) { location.href = "index.html"; } else {/* Если ввел логин, то отправляем в файл core.php введеный логин и принимаем ответ опять же в формате json */ $.ajax({ type: "POST", url: "core.php", data: "name="+login, dataType: 'json', success: function(data) { /* Если ответ = 0, то запоминаем имя пользователя и id последнего сообщения */ if (data.ans == 0) { name = data.login; id = data.id; } else { /* Иначе выдаем ошибку и перезагружаем страницу */ apprise('Такой логин уже используется', function®{ location.href = "index.html"; }); } } }); } }); } else { /* Если получаем ответ != 0, то запоминаем имя пользователя и id последнего сообщения */ name = data.login; id = data.id; } } }); /* Функция которая возвращает сообщения и пользователей онлайн, обновляется каждые 2 сек (2000 милисек) */ update(); setInterval(update, "2000");
function update() { /* Отправляем на сервер (файл core.php) данные update=1 и id последнего сообщения */ $.ajax({ type: "POST", url: "core.php", data: "update=1&id="+id, dataType: 'json', success: function(data) { /* Проверяем наличие ошибок */ if (data.err) { if (data.err == 2) { apprise('Невозможно найти БД', {}, function®{ location.href = "index.html"; }); } else if (data.err == 1) { apprise('База данных ушла в себя', {}, function®{ location.href = "index.html"; }); } return false; } /* Обновляем список пользователей */ if (data.user != $("#user .d").html()) { $("#user .d").html(data.user); } /* Добавляем новое сообщение на экран, прокручиваем скролл вниз и удаляем старые сообщения, оставивши последние 10 */ if (data.msg != "") { id = data.id; $('#message .d').append(data.msg); $('#message').scrollTop($('#message')[0].scrollHeight); var size = $("#message .d div").size(); if (size > 10) { for (var i = 0; i < size-10; i++) { $("#message .d div").eq(i).remove(); } } } } }); /* удаляем старые сообщения, оставивши последние 10. Данное действие дублируется, т.к. при загрузке страницы с чатом удаляются сообщения и при каждом новом полученом сообщении */ var size = $("#message .d div").size(); if (size > 10) { for (var i = 0; i < size-10; i++) { $("#message .d div").eq(i).remove(); } } } /* Отслеживаем нажатие клавиш */ $('.msg').keydown(function(event){ if (event.which == 13) { /* Если нажато Enter, запоминаем сообщение и */ var msg = $(this).val(), then = $(this); /* Обращение на самого себя, т.е. на элемент, который имеет класс msg (в нашем случае это input) */ if (msg == "") { /* Если сообщение пустое, то прекращаем выполнять следующий код*/ return false; } /* Отправляем на сервер сообщение и если пришел положительный ответ (!= 0) то прокручиваем блок сообщений вниз и очищаем строку в которую вводим сообщение */ $.ajax({ type: "POST", url: "core.php", data: "msg="+msg, dataType: 'json', success: function(data) { if (data.ans != 0) { $('#message').scrollTop($('#message')[0].scrollHeight); then.val(""); } } }); }; }); });
core.php <?php session_start(); /* Данные для подключения к БД */ define("DB_HOST", "localhost"); define("DB_USER", "root"); define("DB_PASS", ""); define("DB_NAME", "chat"); /* Фильтрация всех получаемых переменных */ $start = htmlspecialchars(stripslashes($_POST['start'])); $name = htmlspecialchars(stripslashes($_POST['name'])); $msg = htmlspecialchars(stripslashes($_POST['msg'])); $update = htmlspecialchars(stripslashes($_POST['update'])); $id = htmlspecialchars(stripslashes($_POST['id'])); /* Соединение с БД и если не удачное, то отправка ошибок клиенту */ $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS); if (!$connect) { $data['err'] = 1; echo json_encode($data); exit; } $db_sel = mysql_select_db(DB_NAME,$connect); if (!$db_sel) { $data['err'] = 2; echo json_encode($data); exit; } # Установка языка записи в БД mysql_query("SET NAMES utf8"); /* Если игрок загрузил страницу чата, то наш script.js передает серверу данные $_POST['start'] вот и обрабатываем эти данные */ if (!empty($start)) { /* Если не существует сессия name, то возвращаем 0, в другом случае указываем логин игрока, который хранится в сессии, передаем id последнего сообщения */ if (empty($_SESSION['name'])) { $data['ans'] = 0; } else { $data['ans'] = 1; $data['login'] = $_SESSION['name']; $msg_row = mysql_fetch_array(mysql_query("SELECT `post_id` FROM `post` ORDER BY `post_id` ASC")); $data['id'] = $msg_row['post_id']; } echo json_encode($data); // Отправляем данные в формате json exit; } /* Если переменная $name не пуста, то выполняем код */ if (!empty($name)) { /* Ищем игрока в БД */ $sql = mysql_query("SELECT * FROM `users` WHERE `user_name`='".$name."'"); if (mysql_num_rows($sql) == 0) { /* Если не находим, то создаем новую запись, запоминаем логин и передаем клиенту логин и id последнего сообщения */ mysql_query("INSERT INTO `users` (`user_name`,`user_online`,`last_update`) VALUES ('".$name."','1','".time()."')"); $data['ans'] = 0; $_SESSION['name'] = $name; $data['login'] = $_SESSION['name']; $msg_row = mysql_fetch_array(mysql_query("SELECT `post_id` FROM `post` ORDER BY `post_id` ASC")); $data['id'] = $msg_row['post_id']; } else { /* Если игрок в БД уже есть, то проверяем онлайн он или нет. Если онлайн, то выдаем ошибку, если нет, то делаем его онлайн и передаем нужные данные клиенту */ $row = mysql_fetch_array($sql); if ($row['user_online'] == 0) { mysql_query("UPDATE `users` SET `user_online`='1' WHERE `user_name`='".$name."'"); $data['ans'] = 0; $data['login'] = $_SESSION['name']; $msg_row = mysql_fetch_array(mysql_query("SELECT `post_id` FROM `post` ORDER BY `post_id` ASC")); $data['id'] = $msg_row['post_id']; } else { $data['ans'] = 1; } } echo json_encode($data); exit; } /* Получение нового сообщения */ if (!empty($msg)) { if (empty($msg)) { /* Если переменная пуста, то возвращаем 0 */ $data['ans'] = 0; } else { /* В другом случае записываем в БД сообщение, обновляем запись игрока в БД (указываем что игрок онлайн и обновляем время последнего действия, нужно для отслеживания игроков онлайн) и отправляем нужные данные клиенту */ $t = time(); mysql_query("INSERT INTO `post` (`post_login`,`post_time`,`post_txt`) VALUES ('".$_SESSION['name']."','".$t."','".$msg."')"); mysql_query("UPDATE `users` SET `last_update`='".$t."', `user_online`='1' WHERE `user_name`='".$_SESSION['name']."'"); $data['ans'] = 1; $data['login'] = $_SESSION['name']; $data['time'] = date('H:i:s', $t); $data['msg'] = $msg; } echo json_encode($data); exit; } /* Если переменная $update не пуста (функция обновления на стороне клиента) */ if (!empty($update)) { if (empty($update)) { $data['ans'] = 0; } else { /* Выбираем всех игроков с базы */ $user = mysql_query("SELECT * FROM `users`"); $data['user'] = ""; while ($user_row = mysql_fetch_array($user)) { /* Если игрок онлайн, то проверяем время его последнего действия и добавляем к нему 1 час (3600 сек) и запоминаем для передачи его имени клиенту. Если игрок в течении часа ничего не делал, то переводим его в режим оффлайн и убираем из списка игроков. Перевод игрока в режим оффлайн будет состоятся только в том случае если хоть 1 пользователь будет находится в чате. */ if ($user_row['user_online'] == 1) { $t = $user_row['last_update']+3600; if ($t >= time()) { $data['user'] .= "<div>".$user_row['user_name']."</div>"; } else { mysql_query("UPDATE `users` SET `user_online`='0' WHERE `user_name`='".$user_row['user_name']."'"); } } } /* Выбираем все сообщения */ $msg_sql = mysql_query("SELECT * FROM `post` ORDER BY `post_id` ASC"); $data['msg'] = ""; while ($msg_row = mysql_fetch_array($msg_sql)) { /* Производим проверку id. Если id игрока меньше чем id последнего сообщения, значит в БД появилось новое сообщение, выбираем его и запоминаем для передачи клиенту. Данное действие нужно для того что бы в чат клиенту добавлять по несколько сообщений, а не обновлять весь блок (div). Т.к. бывает нужно выделить какое то сообщение, а не можешь, т.к. блок обновляется и выделение сбрасывается. */ if ($id < $msg_row['post_id']) { $data['msg'] .= "<div>[".date('H:i:s', $msg_row['post_time'])."] <strong>".$msg_row['post_login'].": </strong>".$msg_row['post_txt']."</div>"; $data['id'] = $msg_row['post_id']; } } } echo json_encode($data); exit; }
По мне они одинаковы, особенно если разрабатывать приложения (так как там все равно HTML в любом случае получится меньше, чем остальных языков) Учи JS, PHP, SQL.
Кто знаком с PHP и JS помогите пожалуйста написать чат для браузерной игры. Главное - чтобы был без фреймов. Их у меня хостинг не поддерживает. Я сам с PHP, MySQL знаком, просто не получается представить как это все будет. Выглядеть сообщения должны примерно так: [12:38] Вася: привет! [12:40] Петя: привет. [12:52] Петя: как дела? P.s. Регистрацию, авторизацию уже реализовал. Логин записан в $login. Если времени мало, просто помогите мне представить как сделать, чтобы чат обновлялся только когда надо, как реализовать прокрутку области с отправленными сообщениями, и сама страница не обновлялась, а то не удобно будет играть, когда страница постоянно обновляется. Дальше я сам справлюсь.
Сообщение отредактировал SouzNik - Среда, 04 Января 2012, 18:20
Скачал библиотеку Box2D для Flash от сюда: http://www.box2dflash.org/. Зашёл в папку Build, а там файлы для установки на FD. Как установить на Adobe Flash?
Тогда нужны три картинки (jpg, gif, png) на которых один и тот же чел в трёх разных стойках. Первый просто стоит, второй боком в боевой стойке, третий просто боком. Все остальное остаётся так же. (мужчина или женщина, без верхней одежды.)
Running process: C:\Program Files\FlashDevelop\Tools\fdbuild\fdbuild.exe "C:\Documents and Settings\Administrator.NIKOLAY\My Documents\Disine\zov\flash\menu\menu.as3proj" -ipc e1d570b0-40ba-42b1-984e-3b14ea798c9a -version "4.6.0; 3.1" -compiler "C:\Program Files\Flex SDK" -library "C:\Program Files\FlashDevelop\Library" Building menu mxmlc -load-config+=obj\menuConfig.xml -debug=true -incremental=true -o obj\menu634588879966093750 Incremental compile of 1 Loading configuration file C:\Program Files\Flex SDK\frameworks\flex-config.xml C:\Documents and Settings\Administrator.NIKOLAY\My Documents\Disine\zov\flash\menu\src\Main.mxml(8): Error: Type was not found or was not a compile-time constant: profil. Loading configuration file C:\Documents and Settings\Administrator.NIKOLAY\My Documents\Disine\zov\flash\menu\obj\menuConfig.xml Files changed: 0 Files affected: 1 var popup:profil = profil(PopUpManager.createPopUp(this, profil, false)); C:\Documents and Settings\Administrator.NIKOLAY\My Documents\Disine\zov\flash\menu\src\Main.mxml(8): Error: Call to a possibly undefined method profil. var popup:profil = profil(PopUpManager.createPopUp(this, profil, false)); C:\Documents and Settings\Administrator.NIKOLAY\My Documents\Disine\zov\flash\menu\src\Main.mxml(8): Error: Access of undefined property profil. var popup:profil = profil(PopUpManager.createPopUp(this, profil, false));
Код:
<?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>
Извините, если не в тот раздел, но более подходящего не нашлось. 1)Как в Flash Develop делать несколько .swf файлов в одном проекте? 2)Есть ли другие способы (кроме нажать на синюю стрелочку) для превращения .mxml в .swf?
private var id_script:uint; private var i:int; private var mesg:String; private var on:String; /* Функция автообновления пользователей онлайн */ private function time():void { onLine(); msg(); var timers:Timer = new Timer(10000); timers.addEventListener(TimerEvent.TIMER, onTimer); timers.start(); }
private function onTimer(e:TimerEvent):void { onLine(); } /* Функция обновления чата */ private function update():void { msg(); } /* Передача сообщения в скрипт */ public function createMess():void { id_script = 1; createMessage.send(); mess_send.text = ""; msg(); } /* Вывод сообщений на экран */ public function msg():void { id_script = 2; up.send(); } /* Сколько пользователей онлайн */ public function onLine():void { id_script = 3; online.send(); } /* Прокрутка текста */ private function scrollBody():void { // сдвигаем скролл в конец окна vuvod.verticalScrollPosition = vuvod.maxVerticalScrollPosition + 2; }
public function onResult(e:ResultEvent):void { //обработка результатов и ошибок switch (id_script) { case 1: if (int(e.result) > 0) {
} else { switch (int(e.result)) { case -1: Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка"); break; case -2: Alert.show("Вы ничего не ввели", "Ошибка"); break; } } break; case 2: mesg = String(e.result); vuvod.htmlText = mesg; //вывод сообщений break; case 3: on = String(e.result); onlineUsers.text = on; //вывод сколько пользователей онлайн break; } }
Игра будет похожа на Легенда: Наследие драконов; Драконы, то есть надо ходить по локациям, сражаться с монстрами и брать квесты у разных персонажей.
Язык программирования - JavaScript + HTML. Возможно ещё PHP.
Для Web
Лицензия - желательно, чтобы было бесплатно
Поддержка изображений JPG, PNG, GIF
Движок должен быть похож на MMO Constructor, только чтобы на винду, а не в браузере. Ещё нужна возможность добавления, удаления, редактирования: - квестов, квестовых персонажей - локаций - пользователей - шмоток, оружки - уровней, опыта - монстров