drcrack, ну я и делаю то, что хочу. Все сходится. И вот на данный момент есть 100% работоспособная конструкция. Да остались вопросы о том как соединить 2 разные по сути техники (с перезагрузкой страницы и аякс без перезагрузки) но ниче. Как то решу и это.
Добавлено (12 января 2018, 19:09) --------------------------------------------- Вопрос решен Все таки фреймы Но сейчас имеется корректный выход из фрейма по 2м событиям Если нажал ссылку Выход то используется
Код
logout.php target="_top"
а если в строке безопасности кто-то поковырялся или сессия исстекла то срабатывает скрипт
- вот эта мелочь по сути была поводом создать данную тему, т.к. не знал как этот выход решить из фрейма без эффекта "матрешки" - но сейчас нашел информацию в преподном Гугле.. и данная тема не актуальна. Можно закрыть или удалить.
drcrack, ну уважаемый, вы видимо ждали момент пока я все таки выложу код, чтобы занять последний этаж небоскреба и пафосно заметить, что мой код корявый. Но вот в чем дело! Я и сам это знаю. А корявость вся как раз от того, что неправильная организация проекта. Собственно говоря я изложил выше что именно добиваюсь и менять курс не планирую.
Что сокетов io и самореализации, то выше ответил - менять курс не планирую.
И вообще зачем писать выложи код, чтобы меня лишний раз ткнуть носом в корявость кода? Было бы все как швейцарские часы - не подымал бы вопрос. А так вам минус!
И еще раз для тех, кто пытается кому-то что-то навязать. Пожалуйста - не тратьте время. Что до выбора темы проекта = это неизменно. Стиль аля Карнаж, БК, КингВарс и тп браузерки. И выбор таков потому, что контингент этих проектов как раз желает модернизации но чтобы сохранился тот доисторический стиль, который сейчас "как бы не в моде"...
Отсюда и желание добиться четко поставленной задачи.
Что до реализации просто чата - то огорчу вас ) он уже работает. Как чат. Худо-бедно но работает. Так что плиз - умничать не надо. Если я дилетант в некоторых вопросах - то я открыто об этом говорю, а то, что меня устраивает я не обсуждаю и просто делаю. Хорошо это или плохо = мой выбор.
Если вам по теме поднятой проблемы подсказать нечего - всего найлучшего. Не умничайте!
Существуют по сей день проекты где верхушка с игрой обновляется а чат стоит мертво и на него обновление не действует. Потому что фреймы. И как то ж работает. Собственно как? Вот этот вопрос я и пытаюсь решить. А если у вас есть 100% аналогичное решение - то с радостью выслушаю, да только что-то подсказывает, что нету.
Сообщение отредактировал x64 - Пятница, 12 Января 2018, 16:01
Общая идея логаута: вы переадресуете юзера на /logout, на серверной стороне обнуляете авторизацию и делаете ещё один редирект на главную страницу. По итогу человек даже не увидет промежуточной страницы.
Вот этот самый момент я прекрасно понимаю. На странице логаут.пхп уничтожаются все сессии и игрок улетает на главную. Но повторю. Видимо плохо объяснил - сам принцип логаута я изучил уже давно и он безупречно работает в чистом php проекте без скриптов. Собственно говоря я ж писал. У меня есть готовая конструкция. Она работала пока не подсоединил QJuery. Т.е. вместо прямого обращения к строке браузера с перезагрузкой - я написал 3 функции на каждую из 3х ссылок меню.!!!! (хотя их подразумевается в разы больше ну не о том речь). И кликая на ссылке я все таки добился чтобы аякс реагировал и запрашивал действия на странице мэйн.пхп и возвращал результат в див контейнер. Как бы работает. Но именно в этот момент прекратил работать логаут полностью и хедер перестал редиректить.
Код? там каша с кодом. И я уважаю ваше время и после последних комментариев боюсь даже показывать. Засмеете.
Ну все же покажу. Только не смейтесь пожалуйста. Я не выпендриваюсь и профи из себя не корчу. Я скромный любитель, и хочу разобраться + понять свои ошибки. Если вам время не жаль то вот код. Буду признателен если укажете мне косяки мои.
Добавлено (12 января 2018, 11:48) --------------------------------------------- Выкладываю все что есть в спойлерах index.php // тут логин простейший и пока все + планировал дополнительную инфу для всех но главное это индексная страница сайта
Добавлено (12 января 2018, 11:50) --------------------------------------------- island.php // тут получилась разметка по вашему совету в общем то но дальше пошел почти бред с моими потугами соорудить скрипты
Добавлено (12 января 2018, 11:54) --------------------------------------------- main.php // тут подразумевалась сама игра но пока как вы видите аж 3 ссылки меню которые должны подгружать контент ну а выход ответачает за выход (точнее отвечала) сейчас не работает я там стер разлогин т.к. зависало все и ничего не происходило
switch ($action) { case 'home': $content = home(); break; case 'inventory': $content = inventory(); break; case 'settings': $content = settings(); break; case 'signout': $content = signout(); break; default: $content = home(); }
echo '
';
echo $content;
// функционал
function home(){ return 'Главная страница'; } function inventory(){ return 'страница Инвентарь'; } function settings(){ return 'страница Настройки'; } function signout(){
//return 'Вы покидаете Остров...'; } ?>
Добавлено (12 января 2018, 11:57) --------------------------------------------- /core/classes/db.php // конфигурационный файл специально умышленно вынес в корень чтобы было удобно обновлять по фтп и не перезаписывать локальные настройки и настройки для веб-сервера
Код
<?php class Db{ private static $instance; private $connection; private $last_query;
private function __construct(){ $this->setConnection(); }
private function __clone(){
}
public static function getInstance(){ return !(static::$instance instanceof self) ? static::$instance = new self():static::$instance; }
$this->connection = mysqli_connect($cfg['host'],$cfg['user'],$cfg['password'],$cfg['db']); mysqli_set_charset($this->connection, 'utf8'); $this->connection ?: die('Соединение с базой данных не удалось установить'); }
public function query($sql){ $this->last_query = $sql; $result = mysqli_query($this->connection,$sql); return $result; }
private function confirm_query($result){ $result ?: die('Не удалось выполнить запрос к базе данных <br/>'.$this->last_query); }
public function escape($string){ return mysqli_real_escape_string($this->connection,$string); }
public function fetch_assoc($result){ return mysqli_fetch_assoc($result); }
public function fetch_array($result){ return mysqli_fetch_array($result); }
public function num_rows($result){ return mysqli_num_rows($result); } }
?>
Добавлено (12 января 2018, 11:58) --------------------------------------------- config.php // всего лишь данные и все
Добавлено (12 января 2018, 12:03) --------------------------------------------- ну вот собственно говоря основные файлы... но повторюсь где проблема проблема в том что к примеру main.php прекрасно работал сам по себе!!! а когда я стал его передавать черех JQuery в файл island.php то по сути и начался бред. Я понимаю как действует скрипт. Он берет содержание файла мэйн (или другого) и возвращает данные в див. Но это уже как картинка. Не более. Эту картинку по сути не отредактируешь. Видимо в этом и есть проблема. Но если с чатом этого хватает то с основной частью нет.
Ну в целом выложил код. Смейтесь если хотите. Но не для смеха выкладывал.
Добавлено (12 января 2018, 12:07) --------------------------------------------- И еще! Я всегда стараюсь разделить php и html и потому прекрасно понимаю что то, написано в индексной странице = некорректно (да и в других то же) но уже намешал эту кашу пытаясь хоть как то заставить это работать.
А по хорошему я вижу и пхп строго отдельно без малейших вклаплений хтмл кода (чистые данные) + отдельно шаблоны хтмл с маркерами которые потом заменяются реплейсом во время обработки класса чего либо
Здесь же сам намешал кашу и меня самого тошнит от этого... но скрипты джава вынесли мозг. Без каши не получилось организовать проект
Добавлено (12 января 2018, 12:09) --------------------------------------------- Так же по стилям. Их можно отдельно вынести в css просто не дошло до этого
А вот на счет скриптов (всех что есть) я пытался их положить в отдельные файлы чтобы не раздувать тело но и тут меня ждала беда - как только складываю в отдельный файл скрипт и подключаю его вообще не шевелится. Вернул скрипт в тело (хеад) все рабоатает.
Добавлено (12 января 2018, 12:16) --------------------------------------------- да и вот еще
вот эта строка кода в файле island.php по сути загружает смайлик + по клику добавляет его в поле для отправки сообщения
ну просто же не так ли?
и работает!!! казалось бы что еще надо?
а вот во время выборки сообщений из БД в файле ajax.php там где хотел сделать реплейс смайлов вставил тот же код!!! и НЕ работает! ну т.е. смайли только подгружается а онклик событие не работает!!! как ни крутил - глухо.
В итоге пока оставил там просто вывод смайликов в сообщения (хотя они по задумке должны были быть еще и кликабельны) но понимаю все из за того что страница то формируется в аякс.пхп а потом через квери переносится в див файла исланд.пхп и уже становится картинкой не живой ((((
а так быть ну никак не должно!
Добавлено (12 января 2018, 12:24) --------------------------------------------- Господа! Понимаю кто-то злобно улыбнется сейчас мол гыгыгы ахаха Но мне насмешки по боку. Я тут не за этим. Разобраться то разберусь в итоге в любом случае и намеченное достигну. Просто с вашей помощью это может быть быстрее. Код за меня писать не прошу (руки есть) - а вот указать ошибки это да. Для того и выложил.
В идеале хочу достигнуть того чтобы весь код был разделен максимально как это только возможно. пхп, хтмл, скрипты, цсс и тп то что есть сейчас меня не устраивает никак. Это только 3 ссылки и куча гемороя (самой игровой логики еще нет) а если сейчас сюда подключить персонажа, бой, магазин, где тонны гет и пост запросов....
в общем вот такая ситуация.
С уважением х64
Добавлено (12 января 2018, 14:36) --------------------------------------------- Еще раз добрый день! Вот сейчас запилил более менее понятное вход и выход На примере посмотрите чего я хочу добиться в плане разделения кода
index.php // только пхп никакого хтмл, весь хтмл вызывается из шаблона и маркер контент заменяется
Добавлено (12 января 2018, 14:38) --------------------------------------------- login.html // также шаблон который можно модернизировать хоть до посинения не затрагивая исполняемый код
Добавлено (12 января 2018, 14:40) --------------------------------------------- island.php // собственно тут пока ничего вообще кроме выхода нет - просто для чистоты понимания! или отображается содержимое или выбрасывает в корень если потерялась сессия (по любой из причин) или кто-то полез в строку безопасности пытаясь там чего-то подшаманить
Добавлено (12 января 2018, 14:46) --------------------------------------------- класс БД и ее конфигурационный файл тот же что и выкладывал выше (без изменений) поля БД таблица users до примитива просты id, login, hash, password
Собственного говоря - последнее что выложил это попытка показать мой ход мыслей. Мне действительно надо добиться того, чтобы весь HTML код жил отдельно от PHP т.к. планируется, что над внешним видом шаблонов будут работать несколько человек и им не нужна программная часть с php (подальше от греха) + я ж на месте не сижу, что то модернизирую постоянно. А дизайнер будет колдовать на хтмл и стилями ну понятно надеюсь. Отсюда жесткое разделение согласно принципу MVC
Но! Повторю! Вот именно с этого места и возникает дилема как продолжить?
Мне действительно важны ваши советы - но у меня просто вот взять и подключить чат не получилось. Точнее чат подключился а контент игры перестал работать и реагировать на выход + многое что уже выше описывал.
Хочется чистоты и прозрачности. Чтобы все было по полочкам а не каша-малаша.
Сообщение отредактировал x64 - Пятница, 12 Января 2018, 14:38
Доброй ночи или утра! Значит вот что я сделал согласно ваших рекомендаций. Разметку по методу Vostrugin, сделал скриптом и дивами. Подключил JQuery и подключил чат. Все вроде бы работает. Чат живет нормально (почти) ну особых претензий нет. Но вот дальше начались чудеса. Чтобы не перегружать страницу решил и содержание страницы мэйн.пхп получать через аякс. Ну работает вроде. Даже функции написал на клик по ссылкам меню.
И дошел до смешного и видимо злополучного (для меня) логаута(выхода и разлогина). По хорошему есть страница логаут.пхп где все сессии убиваются и игрок хедером перекидывается на индексную стартовую. По крайней мере в пхп варианте хедер шикарно и безупречно работал. Но не здесь. Как я уже не писал запросы. Уже даже напрямую выкидывал на индекс с попыткой разлогиниться там и просто вешал ссылку прямую на кнопку выход и через аякс и так и этак да вот ничерта не происходит. Все висит и хедер не отрабатывает. Хотя код 200% правильный и рабочий (взят из рабочего же материала).
Проверил все это дело без аякса и скриптов. Конечно чат уехал и разметка то же. Но за то страница мэйн.пхп стала работать как положено хоть и с перезагрузкой. И тот же хедер стал работать.
Вернул JQuery и скрипты = все висит (кроме чата и простенькой навигации, которая по сути ничего функционального не несет)
И тут уже как я не матерился. Ну никак не удается склеить 2 технологии. Понимаю для этого нужно мастерство. Нужен опыт. Но поверьте господа - не идиот. Старался. Отложил пока весь проект в том виде как есть (может кому-то придется показать код чтобы понять в чем сложность) - но развитие игры тотально остановилось. Уже более недели бьюсь над простым вопросом - склеить 2 разных страницы и заставить их жить своей жизнью по отдельности но при этом иметь общий контроль над обоими через сессию пользователя (залогинен или нет). Все. Чат это 10000% аякс технология и тут даже нет 2х вариантов. И оно ж в отдельности прекрасно работает. А что до тела игры на пхп то изучил еще раз пристально 2 проекта в которые играю и смотрел под микроскопом как ведет себя страница по тому или иному действию. Идут перезагрузки!!! Почти по каждому действию. Куда бы игрок не двинулся, какое бы действие не выполнил - колесико обновления страницы крутится и обновляется. Но при этом обновляется верхушка страницы а низ (с чатом и кто онлайн) живут себе отдельно.
Смотрел код в одном из проектов. Там фреймсеты. Но единственное что - они прописаны в скрипте. Хотя я видел только скрипты проекта и трудно судить о другой начинке. Но ведь работает.
Скорее всего буду искать решение с фреймами. Как бы я ни хотел заставить проект работать 100% под аяксом и без перезагрузок - но чувствую это или для очень огромной команды спецов по аяксу и скритам или для спеца с огромным опытом (гуру). Я же любитель. И хочу работать над логикой игры. А тут такая засада.
Очень хочу пообщаться с игроделами тех лет. Может кто-то читает тему. Буду рад с вами пообщаться. Нужен ваш опыт.
Меня устроит "древность" технологии - просто хочется сделать сборку и забыть о ней + идти дальше в развитии проекта а не копаться на месте и делать безсмысленную работу в мусорку.
Спасибо за советы господа! Многое и правда прекрасно работает. И скрипты это круто - не спорю. Но какое то ощущение не покидало что сейчас все рухнет.
И рухнуло!!! Я не смог в джава скрипт отправить переменную с именем пользователя!!! С именем (варчар которая в бд) - НО и это смех при этом же расклад айди (интегер) прекрасно - передался. И тут я понял что если проблема с простой передачей данных и нужны 3х этажные костыли или танцы с бубном до утра - то это точно не пойдет. А если посложнее задача? Ну ок за деньги бы делал - если бы была потребность, но проект для души. Не хочу его бросать но пока разочарован тем, что не вижу решения кроме фреймов. Увы....
А так хотелось перейти на что-то современное. Но. Не тяну я пока скрипты настолько.
lvovand, добрый вечер Ситуация такова - у меня заработал чат с использованием JQuery в отдельности работает безупречно! Но опять таки корень всех бед упирается в то что нужно объединение произвести. Опишу проблему. Есть страница main.php в ней навигация не аякс а с гет запросами и поэтому страница перегружается. К тому же контент страница берет из хтмл шаблона через файл_гет_контенст и подменяет %нужный маркер% на нужное содержание. В целом опять же сама по себе страница исправно работает. Но если к ней прикрутить чат (который на аяксе построен) то выходит бредовая ситуация. Чат перезагружается вместе со страницей main.php
Если же положить чат и див куда чат выводится в хтмл шаблон - то уже не работает сам аякс так как нет прямого обращения к странице.
Выход 1 - нужно каким то образом все равно разделить главную страницу игры на 2 части хотя бы ИГРА (пусть себе перегружается) и ЧАТ (без перезагрузки)
но здесь у меня полнейший ступор...
как уже только не комбинировал ну не работает или одно или другое или все вместе или не тот эффект
может подскажете все таки как решить проблему? (есть main.php + chat.php по отдельности живут и работают прекрасно) вместе бредово или не работают вообще
объединить то можно через фрейсет (но вроде эту тему советовали откинуть и забыть на корню) - ок. А что кроме фреймсет?
Vostrugin, ну в целом уже разобрался с ресайзом и даже сделал резайз по вертикали для верхнего фрейма. Но теперь я так понимаю у меня есть 4 дива разметки и содержимое в них уже не инклудить нужно, а снова таки через скрипт как то заменять контент в каждой из них?
Добился более менее разметку на компьютере и все вроде заработало более менее, но тест под мобилкой (андроид + хром) увы дал негативный результат. Не происходит вообще никакого ресайза и не появляются курсоры со стрелками.
Собственно говоря принцип не плох но до поры до времени. Первое же испытание хоронит данную методику ;((( увы. Хотя конечно и Вы, и многие другие скажете, что я зря паникую и все решается. Вполне может быть, но когда знания = почти 0 в области джаваскрипта и адаптации под мобильные устройства, тогда все дается трудно и каждый шаг сопровождается разочарованиями.
Эх... даже не знаю есть ли решение? Чтобы не фреймы и чтобы все как часы работало
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 17:58
Vostrugin, исправил ответ т.к. исправил код. Простое копирование скрипта, css и тела документа ничего не дало. Оказалось нужно подключать сторонние библиотеки. Нашел это посмотрев фрейм с примером. У меня они изначально были не подключены. О как! И поди угадай же что их надо подключать и какие именно.. ;(
Туго дается пока. Но все же спасибо. + отдельное спасибо за мысль о том как закрепить див футера. Я как балбес это пытался через топ сделать, а можно было через боттом ))) хоть что-то полезное почерпнул для себя! ;)) спасибо
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 14:51
вот собственно то, что желаю получить (вариант для просмотра на хд мониторе горизонтальный) стрелочек для резайза специально показал так много чтобы было ясна задача - в любой точке можно тыцнуть и подвинуть вверх или вниз, вправо или влево
Добавлено (08 января 2018, 11:31) --------------------------------------------- Vostrugin, на счет js согласен, видимо без него никак - но тут возникает вопросище Вот сейчас все работает без скрипта (без аякса) обработка событий происходит в конкретном файле. А если подключить аякс? Это же все придется перепиливать? Скорее всего что да и какие будут результаты? Так можно застрять и утратить мотивацию делать что-то дальше... хотя с мотивацией все в порядке, это очень принципиальный проект и я хочу его довести до того состояния, как было задумано
Из социалок пользовался Фейсбуком (да там то же есть чат) но это патологически не то, что хочу сделать я. Понимаю. Можно взять тот же див и в него поместить чат + задать z-index (разместив его поверх остального) зафиксировать и тп. Можно да. Не спорю. Но внешний вид не тот.
Мой проект рассчитан на определенную категорию игроков, и есть даже люди которые уже пытаются тестировать мои первые шаги. Их устроит дух тех старинных браузерок. Это важно!!! Пусть технология будет современной (это не принципиально) но она (технология) должна давать внешний вид тот же что изображен на схеме.
Ну возможно я много запланировал, но тем не менее думаю это решабельно все таки
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 11:41
учитывая то, что уже несколько человек наругали фреймы и советуют использовать более современное попробую еще раз освежить задачу, исходя из того, что имеется
Итак. Есть тело игры с единой точкой входа. Все фильтры запросов (роутеры если не ошибаюсь) прописаны в main.php - поступил запрос А = вызывается метод А и там уже метод делает то, что требуется. Вызывается класс, по его чертежу формируется некий объект (персонаж, предмет, локация или что угодно еще), и это возвращается в главную страницу в виде уже готового кода для отображения. MVC короче говоря использую.
Повторюсь. Все прекрасно и без лишних вопросов работает в масштабах 1й страницы main.php и есть желание продолжать наполнение проекта именно игровой логикой. Но!
Возникла потребность оформить общий вид игры в духе старинных браузерок аля Карнаж, БК где в верхней части экрана тело игры, а в нижней чат + системные кнопки с часами. Надеюсь понятно о чем идет речь?
И вот здесь в этой стадии и возникла сложность. Изучив старинные браузерки я понял, что там использовались фреймы. А вот аналогов более современных я не нашел. Я не сильный фанат всех игр и не шпилю во все подряд. Как раз скорее я фан именно старинных игрушек, отсюда и ностальгия сделать что-то в том духе.
Прекрасно понимаю, что фреймы = устарели и пишут об этом не только здесь, но и в целом в сети интернет. Верю и понимаю. Готов выкинуть их к чертям. Но что использовать? Чтобы визуально было 1 к 1 как с фреймами
Вчера Vostrugin предложил мне вариант с дивами. ДА! Они резайз имеют. Но видимо требуют целый набор напильников чтобы запилить их до нужной кондиции. Я имел неосторожность делать один проект с дивами и как выяснилось спустя некоторое время часть браузеров не поддерживала кое-какие функции или css. Было очень неприятно потом перед людьми. Пришлось перепиливать таблицами тот проект. После чего 100% кроссбраузерность. Это из опыта. Отсюда моя нелюбовь к дивам особенно там, где касается разметки. Хоть и есть десятки фишек и по нескольку способов как сделать разметку дивами, но всякий раз когда берусь что-то размечать дивами - понимаю, ну его. Сейчас работает, а через минуту выяснится что чего-то где-то съехало и не так отображается. Вот и вчера в банальном простейшем примере с резайзом дивов я сделал тест и попросил человека протестировать. И он, и я со старта не нашли на мобилке где резайзиться див. Потом я попробовал все таки нижний правый угол и заработало. Но Господа! Это жутко неправильно! Такая технология не подходит. Возможно я не допилил (знаний не хватило) не спорю! Но в примитивном виде это не то.
Опять же в див можно загрузить отдельную страницу? (чтобы она жила своей жизнью, например чат)
Скорее всего чат придется делать через аякс или джаваскрипт в этом случае и тогда какой смысл разметки? у меня и так получается все уже есть в одной странице.
Одним словом просто не могу понять. С радостью бы пообщался с опытными разработчиками в реале. Попить пива и посидеть час-два за компом с опытным мастером = думаю пришло бы понимание. Но увы таковых знакомых нет. Потому вопрос задаю на форуме. Уж извините, старался изложить суть проблемы, чтобы ясно было в чем она.
Вот и проблема - как и чем прикрутить чат? Чтобы при необходимости пользователь мог подвинуть окно чата или тела игры. Чтобы нижняя панелька (footer.php) с ее часиками висела жестко фиксированно в нижней части экрана и резайзы на нее не влияли. Чтобы была читабельность даже на исторических компьютерах с их историческими браузерами (не знаю как кому, а мне важен любой посетитель).
Вот собственно таковы задачи. И пока ломаю мозг - рою (помимо этого форума) инет и другие топики с похожими темами, но решения нет. Возможно оно и есть. Но я его еще не нашел.
За ваши советы - респект вам. Я действительно слушаю и прислушиваюсь. Да! Фреймы и правда гемор. Вижу. Но чем заменить? Так чтобы надежно и без танцев с бубнами.
Заранее благодарю. Вопрос пока не решен. Тема актуальна.
Сообщение отредактировал x64 - Понедельник, 08 Января 2018, 11:21
хэх ну я только за!!! тем более, что по сути до сего проекта я делал лишь простые вещи (этот проект более сложный для меня) и собственно я с радостью бы принял на веру все новое - но вот сложность в том, что чувство неполноценности не покидает (выше уже объяснял почему) - хочу добиться того что есть скажем на сегодняшний день в других играх (пусть даже с костылями) а затем уже оценив всю глубь трагедии скорее всего и сам посмотрю в сторону чего-то нового + опять же новое не всегда лучше мне по сей день быстрее и удобнее сверстать таблицей нужную страницу чем извращаться с дивом (хотя местами див рулит и никакая таблица там не спасет- ну это так для примера)
на счет джавы испытываю откровенные сложности и написать что-то на джаве для меня проблема (мало использовал опыта почти нет)
отсюда все что с джавой связано обхожу пока ;(((
а с теми же дивами или еще чем то там без джавы не обойтись ну никак
вот пока и ломаю голову
а что до логики самой игры - то здесь проблем не испытываю )) продумать придумать как что на что воздействует и действует получается и в рамках 1й страницы работает (но там нет чата и нет списка онлайн) - вот и думаю как это прикрутить чтобы было аля Карнаж или БК или чет в этом духе
lvovand, а может еще один момент подскажете? вот сейчас логаут заработал корректно по ссылке но это полдела. Допустим истекла сессия а пользователь находится внутри игры. По логике его надо выкинуть из игры (т.к. сессия не активна) я сделал так
при логауте обновляется основной айфрейм, а остальные остаются с неактуальной информацией, правильно понимаю?
Да верно Вы понимаете. За одним исключением. У меня не айфреймы, а просто фреймы. И мало того что остальные остаются не обновлены, так еще и проблема "матрешки" в актуальном фрейме существует. Не знаю как вернуться допустим на index.php
Возможно нужен скрипт, возможно нужно иначе прописать рут директорию или что-то еще?
Например если я "убил" сессию пользователя, то фрейм чата и фрейм онлайн так же должны отреагировать. А этого пока не происходит. Да и собственно как я уже понял, уничтожение сессии в одном из фреймов не совсем верное решение.
+ спрошу еще (может и не по теме вопроса, а может и по теме) - вот в тех браузерках о которых я упоминал есть такое допустим игрок залогинился, и в адресной строке нечто такое http;//sitename.php?pl=0.3932342901903001 куча цифр... которые сохраняются на протяжении всей сессии. Хотел бы понять что это и возможно тут разгадка?
Сообщение отредактировал x64 - Воскресенье, 07 Января 2018, 18:37
Vostrugin, не могу не сказать Вам спасибо за совет, но видимо мне не дает покоя вопрос о том как победить фреймы. Простите за консервативность, но знаю о том, что даже сейчас многие используют фрейм систему. И все чудесно работает. А с дивами возможно и оно конечно, но все же не уверен в них.
Поймите правильно. Не хочу сказать, что ваш способ плох. Вполне может быть даже лучше в разы и я просто это не понимаю. Но проблему то текущую я не решаю таким образом. А это знания, которые хочется приобрести и понять как правильно организовать работу с фреймами.
На мобилке возможно никто не будет ничего ресайзить, но все же такая возможность должна быть и должно быть это просто и понятно. Без подгрузки тяжелой библиотеки JQuery
вижу, только хотел спросить "как?" но Вы уже ответили! Спасибо
и все же не годится!!! не работает на андроиде в хроме! а если не работает хоть где-то = принципиально не подходит (не смотря на остальные +++ ) ;(
проблема не решена! ищу решение другое
+ поправка (работает то оно на андроиде в хром) но вот попросил только что протестировать человека и тот не нашел за что потянуть чтобы изменить размер. А оказалось надо за правый нижний угол было тянуть.
трудно догадаться (сам то же не догадался) отображение другое чем на компьютере и хоть мозг вынеси, а ведь 2 человека со старта не нашли
итог - да крутое решение не спорю!!! но не то! нужно более простое и интуитивно понятное
Сообщение отредактировал x64 - Воскресенье, 07 Января 2018, 17:11
Собственно речь о движке! А точнее о фреймовом движке с использованием классических доисторических фреймов. Хотя с этой самой точки могу дико ошибаться и прошу поправить.
Итак, что есть и что хочу получить?(собственно ищу ответ на больной вопрос, решения не нашел, гуглил много но видимо так и не понял где искать и насколько глубоко собака зарыта)
Имеется файл index.php в нем описание проекта, новости, страница входа и тп инфа для всех кто зашел на сайт (т.е. реальная индексная страница без самой игры) с этим понятно
На этой же странице index.php есть проверка входа в игру и в случае если логин и пароль верны, то идет редирект (через функцию Header), на главную страницу игры island.php (такое название по названию проекта) + начинается сессия игрока и собственно игровой процесс.
Теперь проблемище!!!
Я хочу на этой главной странице сделать такую связку - основная страница контента (где происходят события) main.php расположена по всей ширине сверху до середины экрана + ниже расположить чат chat.php слева и страницу со списком игроков в локации online.php + совсем на дно положить всякие кнопочки, часики и главное форму для отправки сообщений в чат system.php. Т.е. имеется желание воссоздать некую схожесть с известными проектами БК, Карнаж и т.п.
Фрейм разделение страниц я сделал успешно! код в спойлере
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>MMORPG || Island</title> <meta charset="utf-8" /> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <meta name="viewport" content="width=device-width; initial-scale=1.0">
Все бы прекрасно! Но! Вот допустим я нажимаю на странице main.php ссылку Выход и хочу выйти из игры + уничтожить сессию + сделать редирект на главную страницу index.php а у меня все это происходит внутри фрейма main - т.е. выходит своего рода матрешка!
Рыл инфу на тему того как это пофиксить и знаю же что надо как то через javascript это решать и возможно не только это, но конкретного примера так и не нашел
Возможно!!! Подчеркиваю возможно кто-то знает, как решить подобное или где можно почитать. Заранее спасибо!
Понимаю, скажете что я пытаюсь воссоздать прошлый век. Возможно. Но есть вполне четкая задача - каждая из страниц должна легко изменять размер с помощью мыши. Захотел пользователь раздвинуть чат выше = раздвинул.. Захотел основную страницу изменить = пожалуйста. Такие принципы реализованы во многих браузерных играх и я хочу воссоздать тот же принцип.
Другой вопрос - как победить фреймы и добиться чтобы нужные ссылки вели куда надо? Вот тут сложность
Пробовал воссоздать структуру дивами. Все отлично - но нет изменения размера блока пользователем. Да можно даже скрол в диве сделать но это все не то. Фрейм поудобнее будет для данной задачи. Потому ищу решение именно с фреймами.
Заранее благодарю. Надеюсь понятно изложил в чем сложность?
Так же прошу заметить, я не прошу дать мне ссылку на готовый движок. Программирование это мое хобби и я разобраться хочу, а не скопипастить готовое. Просто нужен совет как победить матрешку в данном случае. Я понимаю, что решение до жути простое, но увы не решил пока. Иначе бы не спрашивал.
Сообщение отредактировал x64 - Воскресенье, 07 Января 2018, 16:31
Хочу посоветоваться с опытными мастерами. Есть задумка довольно простой игры. Вкратце идея такова. Есть персонаж и его можно развивать. По ходу развития игрок набирает опыт и растет в уровне. Чтобы получать опыт надо вести дуэли. Почему дуэли? Простой ответ - дуэль очень простой тип боя в браузерках и проходит быстро. К тому же хочется реализовать дуэль таким образом, чтобы она была довольно читабельной на мобильном устройстве с маленьким экраном. Т.е. можно будет играть с обычного компьютера и с телефона или планшета. При этом отображаться будет только соперник и под ним будет отображаться результат текущего хода. Попал или промазал и тп.
Собственно говоря кроме дуэли ничего делать не планирую. Почему? А зачем наполеоновские планы? Хочу довести до разумного маленький скромный проектик, чтобы он заработал.
По плану действий вижу это примерно так (с максимальным учетом того, что игра будет отображаться на мобилке вертикально)
1. Скрипт регистрации и авторизации + восстановление пароля + активация через емаил + выход из аккаунта 2. Скрипт навигации - скорее всего простое меню 3. Скрипт инвентаря - выдает игроку все предметы которыми он обладает 4. Скрипт самого персонажа его информационная страница так сказать 5. Скрипт магазина где можно купить что-то или продать ненужное 6. Скрипт арены - где можно найти себе соперника или дождаться приглашения в бой 7. Скрипт самого боя где выбирается тип удара + точка удара + точка защиты + тут же выводится лог о текущем ходе 8. Скрипт чата где можно общаться 9. Возможно будет что-то еще из мелких фишек но пока не хочется усложнять
Собственно в чем у меня сложность имеется (точнее не сложность, а сомнение) - в методе реализации проекта
Я вижу это так (а вы меня поправьте):
Будет страница индех.пхп которая будет принимать все команды Дальше идет обработка команд если команда такая-то = активируется функция такая-то Дальше функция если нужно вызывает класс для создания чего-то например вывод предмета = новый класс Айтем и тот уже возвращает предмет ну и тд Ну и как бы внешний вид будет храниться в шаблоне хтмл с маркерами на замену, а в классе будет вызываться шаблон нужный и заменяться маркеры на контент Т.е. движок хочу отделить от хтмл кода полностью чтобы можно было модернизировать внешний вид или даже может быть кому-то это скинуть если у кого-то возникнет желание помочь Подобью итог - входит запрос - его обрабатывает функция по одноименному запросу - функция вызывает класс - класс создает объект или же функция сама решает вопрос без вызова класса если действие простое и не требует класс - весь внешний вид храниться в хтмл файлах и содержит маркеры ключевых элементов, которые заменяются во время создания объекта и выводятся на экран уже оформленные
в целом такая вот задумка, потому что играл с одним другом в старую браузерку пока ехал в транспорте и мы оба плевались из за очень маленького разрешения и неудобства провести дуэль. Можно конечнно, но старые браузерки рассчитанные под компьютер с его большим экраном не очень хорошо подходят для мобилок с 4х дюймовым дисплеем. А пока едешь скучно - иногда можно и сыграть партию-другую. Собственно это и послужило мотивацией создать подобный проект с очень сильным уклоном в сторону мобилок. Чтобы все читабельно было и удобно.
Собственно вопросы еще такие
я думаю организовать проект так:
индекс.пхп /классы (файлы на основе которых будут создаваться объекты) /хтмл-шаблоны (визуальное оформление) /ядро (где собственно будет бой, магазин, инвентарь, навигация, информация и другое по игре) /авторизация и регистрация (ну все что с этим связано) /админка (простейшая - сделать несложные манипуляции с игроками если надо) /изображения /скрипты (если надо будет) /css /шрифты
ну примерно так (хотя может быть можно и более симпатично все организовать)
Слушаю ваши комментарии и советы.
О технической стороне медали: ОС Линукс Минт ЛАМП ПХП 7 Апач2
особенно волнует тема соединения с БД
старинный метод mysql_connect вроде как упразднен есть метод mysqli или PDO какой из них выбрать? и как организовать работу движка так чтобы соединение устанавливалось когда это надо и потом закрывалось ну вот такие есть технические вопросы кстати по мемкешу то же бы хотелось понять - стоит ли мне его задействовать и если да то как?
ну и другие полезности пригодятся
я учусь - это хобби (не работа) но хочу сделать все так, чтобы не было стыдно пхп основы давно знаю, но так же знаю, что есть куча полезных функций и методов которые мало кто применяет а они эффективны то же самое по организации запросов к БД хотелось бы понимание как лучше их организовывать
ну например в бою не думаю что надо каждый ход обновлять БД, результат поединка можно держать в массивах Игрок1 + Игрок2 а по факту окончания боя обновить БД (ну я так думаю, может есть более лучшее решение)
в общем жду любых толковых советов (если вы опытный разработчик и знаете как это делается более менее грамотно)
Спасибо!
Сообщение отредактировал x64 - Суббота, 23 Декабря 2017, 16:50