Как создать локации в браузерой игре?
|
|
Faraon | Дата: Вторник, 30 Июля 2013, 22:27 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Привет всем, Помогите создать локации для браузерки! Недавно била тема про создание локаций, Тык Я все сделал так как там написано, но в меня так не работает, помогите разобраться пожалуйста! Вот мой файл который отвечает за локации! (mapa.php)
Код <html> <head> <link href="css/mapa.css" rel="stylesheet" type="text/css" />
</head> <body>
<?php session_start();
if (!empty($_SESSION['login'])){}else{header("Location: ../index.php");} //Смотрим логин в сесии, если нет выкидываем $name = $_SESSION['login']; //Заносим логин в переменную
include_once ("cone.php"); mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'");
$_GET['NickName'] = $_SESSION['login']; $aNickName = $_GET['NickName'];
$query = "SELECT * FROM users WHERE login='$aNickName'"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); $aRow = mysql_fetch_array( $result); $id_user = $aRow["id"]; // виносимо id игрока
$sq = mysql_query("SELECT * FROM `location` WHERE `id`=2 ;"); $data=mysql_fetch_assoc($sq); $id_loc2 = $data['id'];// виносимо id 2 локации
// Тут починаємо писати функціонад для переходу між локаціями $quer= "select * from location"; $sql = mysql_query($quer); $row = mysql_fetch_array($sql); $id_loc = $row['id'];// виносимо id 1 локации echo "<center>".$row['name']; echo $row['img']; echo "<br>".$row['opes']."</center>"; echo $row['url']; echo $row['url2']; echo $row['url3']; echo $row['url4']; echo $row['url5']; echo $row['url6']; echo $row['url7'];
if($_GET['loc']=="1"){ $query = "update location_users set location=$id_loc2 where id_user=$id_user"; mysql_query($query); } if($_GET['loc']=="2"){ $query = "update location_users set location='$id_loc2' where where id_user='$id_user'"; mysql_query($query); } if($_GET['loc']=="3"){ $query = "update location_users set location=`$id_loc2` where where id_user=`$id_user`"; mysql_query($query); } ?>
<a href="/games/include/mapa.php?loc=1">локация 1</a> <a href="/games/include/mapa.php?loc=2">локация 2</a> <a href="/games/include/mapa.php?loc=3">локация 3</a>
</body> </html> </html> Когда я нажимаю на силку то страница просто перезагружаетса c id1 на id1, и исчезает фон игри, и картинка которая извлекалась с базы не появляетса! До нажатия - тык После нажатия - тык
|
|
| |
last2424 | Дата: Вторник, 30 Июля 2013, 22:39 | Сообщение # 2 |
30 мл. блоков
Сейчас нет на сайте
| Faraon, у каждой локацей должна быть своя картинки попробуй фон поставить по стандарту, а саму картинку и текст проверять через бд
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
Faraon | Дата: Вторник, 30 Июля 2013, 22:56 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Цитата (last2424) Faraon, у каждой локацей должна быть своя картинки попробуй фон поставить по стандарту, а саму картинку и текст проверять через бд Я так и сделал! Картинка локации и текст и название локации я храню в базе данных, а фон по стандарту!
|
|
| |
Yashko3 | Дата: Вторник, 30 Июля 2013, 23:28 | Сообщение # 4 |
Господин Ведущий
Сейчас нет на сайте
| попробуй запрос такой делать: Код "update location_users set location='".$id_loc2."' where where id_user='$id_user'";
старый профиль php <3
|
|
| |
Faraon | Дата: Среда, 31 Июля 2013, 00:39 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Цитата (Yashko3) попробуй запрос такой делать: Код "update location_users set location='".$id_loc2."' where where id_user='$id_user'"; Нечего не изменилось! А самое интересное ето то что если все в файле стереть, оставить тока силки Код <a href="/games/include/mapa.php?loc=1">локация 1</a> <a href="/games/include/mapa.php?loc=2">локация 2</a> <a href="/games/include/mapa.php?loc=3">локация 3</a> То ризницы не будет! Такое ощущение что ето так и есть! И когда на силку нажимаем то она перезагружаетса, и все так само как и с абгрейтом!Добавлено (31.07.2013, 00:39) --------------------------------------------- ???
Сообщение отредактировал Faraon - Вторник, 30 Июля 2013, 23:41 |
|
| |
last2424 | Дата: Среда, 31 Июля 2013, 00:57 | Сообщение # 6 |
30 мл. блоков
Сейчас нет на сайте
| Faraon, переход по локациям на html не прокатит. Я пробовал такое оч много раз подобное сделать и толку не было.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Среда, 31 Июля 2013, 00:58 |
|
| |
Faraon | Дата: Среда, 31 Июля 2013, 01:33 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| Цитата (last2424) Faraon, переход по локациям на html не прокатит. А как можно сделать? Как ты сделал? Кто знает, как по другому можно сделать игровой мир?
Сообщение отредактировал Faraon - Среда, 31 Июля 2013, 01:34 |
|
| |
HerrPotapov | Дата: Среда, 31 Июля 2013, 07:15 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Faraon, во-первых, иди осваивать какой-нибудь шаблонизатор (smarty например). Мне лично в этой мешанине разметки и кода даже разбираться не хочется. Во-вторых, отставь php. Сядь и распиши простыми словами алгоритм перехода. Четко, по пунктам. Например для перехода по локациям это будет выглядеть примерно вот так:
Код 1. Узнаем текущее местоположение игрока (ид локации в которой он находится) 2. Принимаем ввод (ид локации в которую игрок хочет попасть) 3. Проверяем может ли пользователь совершить переход (связано ли текущее местонахождение игрока с целевой локацией) 4. Если нет - выводим ошибку 5. Если да - запускаем таймер, показываем игроку страницу "вы в пути" 6. По истечении таймера - обновляем местоположение игрока в базе данных, показываем игроку данные о локации ...
Проблема сейчас в том, что ты не понимаешь что хочешь сделать. "Сделать локации" - слишком абстрактно. Нужно разбить задачу на маленькие пункты.
P.S. код не плох, он просто бессмысленнен. Например, расскажи мне чем отличаются вот эти случаи друг от друга: Код if($_GET['loc']=="1"){ $query = "update location_users set location=$id_loc2 where id_user=$id_user"; mysql_query($query); } if($_GET['loc']=="2"){ $query = "update location_users set location='$id_loc2' where where id_user='$id_user'"; mysql_query($query); } if($_GET['loc']=="3"){ $query = "update location_users set location=`$id_loc2` where where id_user=`$id_user`"; mysql_query($query); }
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
polki | Дата: Среда, 31 Июля 2013, 11:05 | Сообщение # 9 |
уже был
Сейчас нет на сайте
| Цитата (HerrPotapov) P.S. код не плох, он просто бессмысленнен. Ты пошутил? Это даже кодом назвать нельзя, обычный копипаст.
ТС не мучай свой мозг, без знаний ничего не получится.
|
|
| |
Faraon | Дата: Среда, 31 Июля 2013, 13:49 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| Цитата (HerrPotapov) Например, расскажи мне чем отличаются вот эти случаи друг от друга: Код Ничем не отличаютса! Но если подумать, то код мал бы работать! Все сделано верно, тока я не понимаю почему апгрейд не хочет считовать!
|
|
| |
HerrPotapov | Дата: Среда, 31 Июля 2013, 14:37 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| Faraon, повторяю еще раз, если подумать - этот код на 100% бессмысленнен.
Если хочешь разобраться с тем как это сделать правильно - прочитай мое предыдущее сообщение и сделай как там написано.
А если продолжаешь утверждать, что этот код правильный и должен работать, то распиши (в виде комментария) что происходит в КАЖДОЙ его строке. Когда это сделаешь - вопросов у тебя больше не будет. В качестве примера - отрывок из приведенного тобой кода:
Код if (!empty($_SESSION['login'])){}else{header("Location: ../index.php");} //Смотрим логин в сесии, если нет выкидываем $name = $_SESSION['login']; //Заносим логин в переменную
Вот таким образом пропиши каждую строку
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
Сообщение отредактировал HerrPotapov - Среда, 31 Июля 2013, 15:06 |
|
| |
Faraon | Дата: Среда, 31 Июля 2013, 23:03 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| HerrPotapov - я придумал кое что другое, как переходить по локам! Сейчас времени у меня нет! Напишу вечером, и тогда ты мне может совет кое какой по моему коду напишеш! Добавлено (31.07.2013, 23:03) --------------------------------------------- Вот что можно сделать: Сначала добавляем силку Код echo '<a href="/games/include/mapa.php?loc=1">локация 1</a> '; а потом добавляем следующие Код switch($_GET['loc']){ case'1': $quer= "select * from location"; $sql = mysql_query($quer); $row = mysql_fetch_array($sql); $id_loc = $row['id'];// виносимо id 1 локации echo "<center>".$row['name']; echo $row['img']; echo "<br>".$row['opes']."</center>"; echo $row['url']; echo $row['url2']; echo $row['url3']; echo $row['url4']; echo $row['url5']; echo $row['url6']; echo $row['url7']; echo '<a href="/games/include/mapa.php?loc=1">локация 1</a> '; echo '<a href="/games/include/mapa.php?loc=2">локация 2</a> '; echo '<a href="/games/include/mapa.php?loc=3">локация 3</a>'; break;
case'2': $quer= "select * from location WHERE `id`=2 "; $sql = mysql_query($quer); $row = mysql_fetch_array($sql); $id_loc = $row['id'];// виносимо id 2 локации echo "<center>".$row['name']; echo $row['img']; echo "<br>".$row['opes']."</center>"; echo $row['url']; echo $row['url2']; echo $row['url3']; echo $row['url4']; echo $row['url5']; echo $row['url6']; echo $row['url7']; echo '<a href="/games/include/mapa.php?loc=3">локация 3</a>'; break;
case'3': $quer= "select * from location WHERE `id`=3 "; $sql = mysql_query($quer); $row = mysql_fetch_array($sql); $id_loc = $row['id'];// виносимо id 3 локации echo "<center>".$row['name']; echo $row['img']; echo "<br>".$row['opes']."</center>"; echo $row['url']; echo $row['url2']; echo $row['url3']; echo $row['url4']; echo $row['url5']; echo $row['url6']; echo $row['url7']; echo '<a href="/games/include/mapa.php?loc=1">локация 1</a> '; break; } ?> Писал на ходу, код рабочий переходит по локам без проблем, тока при обновлении выбрасывает на начальную локацтю ! Там много чего можно исправить и усовершенствовать! Жду что ты на ето скажешь!
|
|
| |
HerrPotapov | Дата: Четверг, 01 Августа 2013, 01:25 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| Faraon, честно говоря тут нечего комментировать. Насколько я вижу, отличий от первого варианта никаких, ты заменил if {} на case {} А еще ты не представляешь себе структуру своего приложения. Какой смысл в этих переходах, если их результат нигде не сохраняется? Я подготовлю завтра-послезавтра что-то вроде урока на эту тему.
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Faraon | Дата: Четверг, 01 Августа 2013, 01:48 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| Цитата (HerrPotapov) Я подготовлю завтра-послезавтра что-то вроде урока на эту тему. Бил бы признателен за урок на ету тему. Цитата А еще ты не представляешь себе структуру своего приложения. В каком смысле? А базу ето не слишком грузит если в одном файле штук 100 таких вот кусков кода вставить? Цитата Какой смысл в этих переходах, если их результат нигде не сохраняется? Я подготовлю завтра-послезавтра что-то вроде урока на эту тему. Вот ето проблема!Но каждая проблема решается! Я не знаю но думаю что можна создать кнопку при нажатии на которую будет записываться в базу данные где user находился в последний раз, или что то другое, идей у меня много!
Сообщение отредактировал Faraon - Четверг, 01 Августа 2013, 02:01 |
|
| |
Talco | Дата: Четверг, 01 Августа 2013, 08:44 | Сообщение # 15 |
почетный гость
Сейчас нет на сайте
| Код <html> <head> <link href="css/mapa.css" rel="stylesheet" type="text/css" />
</head> <body>
<?php session_start();
if (!empty($_SESSION['login'])){}else{header("Location: ../index.php");} //Смотрим логин в сесии, если нет выкидываем $name = $_SESSION['login']; //Заносим логин в переменную
include_once ("cone.php"); mysql_query("SET NAMES 'cp1251' COLLATE 'cp1251_general_ci'");
$_GET['NickName'] = $_SESSION['login']; $aNickName = $_GET['NickName'];
$query = "SELECT * FROM users WHERE login='$aNickName'"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); $aRow = mysql_fetch_array( $result); $id_user = $aRow["id"]; // виносимо id игрока $loc_user = $aRow[location];
if(isset($_GET[loc])){ $loc_user = $_GET[loc]; $query = "UPDATE users SET location=$loc_user WHERE id_user=$id_user"; mysql_query($query); }
// Тут починаємо писати функціонад для переходу між локаціями $quer= "SELECT * FROM location WHERE id=$loc_user"; $sql = mysql_query($quer); $row = mysql_fetch_array($sql); $id_loc = $row['id'];// виносимо id 1 локации echo "<center>".$row['name']; echo $row['img']; echo "<br>".$row['opes']."</center>"; echo $row['url']; echo $row['url2']; echo $row['url3']; echo $row['url4']; echo $row['url5']; echo $row['url6']; echo $row['url7'];
?>
<a href="/games/include/mapa.php?loc=1">локация 1</a> <a href="/games/include/mapa.php?loc=2">локация 2</a> <a href="/games/include/mapa.php?loc=3">локация 3</a>
</body> </html>
xNova: Революция
|
|
| |
Faraon | Дата: Четверг, 01 Августа 2013, 20:22 | Сообщение # 16 |
почетный гость
Сейчас нет на сайте
| Talco - Большое спасибо!!! Базу данных перестроил под етот код! Переходи работают безупречно! А как сделать так чтоб когда страницу перезагружал игрок местонаходжение не сбрасывало ? Когда страничку перегружаю то локация становится изначальной, (id1).Добавлено (01.08.2013, 20:22) --------------------------------------------- Когда игрок нажимает на силку "Войти в игру" он попадает на страницу на которой можно делать переходи! Вот силка с профиля игрока на старныцу с локациями Код <a url="include/mapa.php?loc=1">Войти в игру</a> Тоесть при переходе на еран выводит то что есть под id1 потому что А как сделать что выводило на екран последнюю страницу на которой бил игрок?
|
|
| |
Talco | Дата: Суббота, 03 Августа 2013, 00:08 | Сообщение # 17 |
почетный гость
Сейчас нет на сайте
| Ничего не понял Цитата (Faraon) Когда страничку перегружаю то локация становится изначальной, (id1). если передан параметр loc через адресную строку, то при обновлении страницы он снова будет передан. ??? Цитата (Faraon) А как сделать что выводило на екран последнюю страницу на которой бил игрок? В смысле ссылку на страницу?
xNova: Революция
|
|
| |
HerrPotapov | Дата: Суббота, 03 Августа 2013, 00:34 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| Иная формулировка вопроса - как сохранять текущее местоположение персонажа. Ответ - добавить к таблице игрока в БД новый столбец и писать туда ИД локации в которую перешел игрок
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Faraon | Дата: Суббота, 03 Августа 2013, 00:39 | Сообщение # 19 |
почетный гость
Сейчас нет на сайте
| Простите за безграмотность!
Цитата (Talco) если передан параметр loc через адресную строку, то при обновлении страницы он снова будет передан. ??? да! При каждом обновлении страницы параметр loc=1 будет передан, где 1 - ето id1 в базе данных! Как можно сделать чтоб при обновлении страницы пользователь бил на той самой страницы на которой он бил в последний раз! Нужно чтоб в базе сохранялось местонахождение игрока, а при обновлении страницы с базы ето местонахождение выводить в браузер! Другими словами нужно сделать сохранения на котором id локации на которой игрок бил в последний раз, если я не ошибаюсь!Добавлено (03.08.2013, 00:39) ---------------------------------------------
Цитата (HerrPotapov) Иная формулировка вопроса - как сохранять текущее местоположение персонажа. Ответ - добавить к таблице игрока в БД новый столбец и писать туда ИД локации в которую перешел игрок Вот... ето я и имел ввиду!
|
|
| |
akyl91 | Дата: Понедельник, 12 Августа 2013, 13:50 | Сообщение # 20 |
участник
Сейчас нет на сайте
| Код <?php session_start(); ?> Это обычно выносится в начало файла, до тега <html> .
Кстати, где можно глянуть что ты уже наваял? Сайт есть?
Вы не говорите ЧТО мне делать, Я не говорю Вам КУДА пойти.
Сообщение отредактировал akyl91 - Понедельник, 12 Августа 2013, 13:52 |
|
| |