Суббота, 23 Ноября 2024, 16:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Требуется совет по PHP и/или MySQL
rayneДата: Понедельник, 06 Октября 2008, 07:55 | Сообщение # 1
был не раз
Сейчас нет на сайте
Игра - клон огейм'а
Не коммерческий.

Пару месяцев назад решил наклепать огейм (достали с рекламой и донатом, да и для поднятия опыта по php, JS, MySQL и динамическим сайтам - супер). Знаю, знаю в сети вывалены готовые тоннами, но учиться так учиться.

Кароче,
Задумка: всё то же, но только без использования Cookies.
Проблема: как сделать такую феньку, чтоб ресурсы продолжали постоянно капать даже в то время, когда игрока нет на сайте.
Сама суть проблемы: скрипт не должен использовать кукиз для хранения инфы, а только БД и пхп.

В пхп<->мускул не последний лунь, но уже очень долго парюсь и нигде не смог найти ничего, даже близко похожего.

GC-VicДата: Понедельник, 06 Октября 2008, 15:35 | Сообщение # 2
GcUp.ru
Сейчас нет на сайте
А какие это данные игры хранятся в Cookies? surprised Обычно шифр пароля и логина, сесии в Cookies хронят, не больше.

Закон Мерфи: "Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится".
rayneДата: Понедельник, 06 Октября 2008, 19:29 | Сообщение # 3
был не раз
Сейчас нет на сайте
По правде говоря даже и спорить с вами не собираюсь, т.к. за советом или помощью пришёл, да и с кукиз опыта 0. Я знаю только что огейм использует кукиз. В общем это не суть важно.

Суть в том, как сделать так, чтоб в отсутствие игрока на сайте, вобще капали ресурсы.
Т.е. для этого, каждый отрезок времени (пусть в 1 сек) запись в ячейке таблицы должна изменятся на какой-то параметр "Х" (вычисляемый по формуле(количество ресурса/сек)). при том, в довесок, в работе должны быть только веб эмуль и бд, если возможно.
Руки на месте, голова вроде тоже, только никак немогу понять как сделать постоянное изменение числа в таблице бд.

Ато получилось из экспериментов такое (юморинка):
Регится игрок, заходит в игру, вроде всё ок.
Закрывает броузер, через какое то время открывает и начинает с того места, где остановился.
Т.е. логаут сделал(или просто закрыл броузер), через день заходит снова, а количество ресурсов такое же как в то время, когда вышел.

Проще говоря, скрипт в эксперименте работал только тогда, когда игрок на сайте. wacko

Есть конечно одна мысль, но без понятия как её осуществить (да и наверное это излишняя сложность, а хочется как всегда по проще).......
Мысль состоит в том, чтоб сделать привязку к дате/времени.

>>>А верней, взять дату+время регистрации и привязать к ней начальное количество ресурса "К" (по дэфолту).

>>>Затем, сделать так, чтоб при посещении страницы запускался скрипт, который возьмёт дату+время посещения, выберет дату+время регестрации и посчитает количество секунд, а затем из расчёта производительности шахты в сек, посчитает количество ресурсов за этот промежуток + начальное (что хранится в таблице).

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

Результат всего этого на теории: при каждой загрузке страницы будет изменяться количество ресурса, в зависимости от времени и уровня шахты. biggrin

Но это всё будет довольно грамостко и сложно. dry И без пол литра не разберёшся....
Вот и ищу возможность упростить это дело. Хотя бы способ по проще подсчитать в милли сек. время с последней загрузки страницы конкретным ip/пользователем, чтоб не связываться с датой (очень легко в ней запутаться). wacko

ЗЫ: Извините за внушительный текст.

Сообщение отредактировал rayne - Понедельник, 06 Октября 2008, 19:43
TLTДата: Вторник, 07 Октября 2008, 02:14 | Сообщение # 4
Сейчас нет на сайте
Велосипед. Учись читать чужие исходные коды, если тренируешься в программировании. Возьми какой-нибудь подобный готовый исходник и посмотри, проанализируй, как там это реализовано. Хотя, я не очень понял, что нужно автору топика. biggrin

Дао, выраженное словами, не есть истинное Дао.
rayneДата: Вторник, 07 Октября 2008, 05:34 | Сообщение # 5
был не раз
Сейчас нет на сайте
Ув. GC-Vic,
Я уже сам разобрался, но всё равно спасиб вам, что хоть не вольно но подтолкнули на мысль. biggrin
Пару раз перечитав свой предыдущий пост, сам допетрил. Оказалось всё на много проще, чем казалось изначально.
Вот что получилось после литра пива (!для народу!, мож кому в будущем пригодится):

При регистации записывается время регистрации и начальное количество ресурса:
<?php
$connect = mysql_connect("localhost", "login", "password"); //"login" и "password" - для MySQL
mysql_select_db("test", $connect); //"test" - название БД
$date = time(); //время при регистрации
$res = "800"; //кол-во ресурса при регистрации
$result = mysql_query("INSERT INTO time_test (date, res) VALUES ('$date', '$res')"); //записываем всё это удовольствие в БД
echo $date." ".$res; //это для себя, чтоб в БД не лазить лишний раз
?>

При каждом входе в игру:
<?php
$connect = mysql_connect("localhost", "login", "password"); //"login" и "password" - для MySQL
mysql_select_db("test", $connect); //"test" - название БД
$id = "1"; //порядковый номер аккаунта
$result = mysql_query("SELECT date, res FROM time_test WHERE id='$id'", $connect); //вытаскиваем из БД время последнего посещения и кол-во рсурсов на тот момент, в массив
$x = mysql_fetch_array($result); //массив заносим в переменную

$old_date = $x['date']; //выделяем из массива дату (внимание! дата в таком формате 123143324442)
$current_date= time(); //берём дату на данный момент
$date = $current_date - $old_date; //разница между датой в данный момент и последним посещением страницы
$res= $x['res'] + $date * "2"; //($x['res'] - количество ресурсов при последнем посещении) + (разница $date)*(количество ресурсов, добываемое за секунду)
echo $date." ".$res."<br>"; //тоже для себя

mysql_query("UPDATE time_test SET date='$current_date', res='$res' WHERE id='$id'"); //записываем в данный аккаунт дату на данный момент и получившееся количество ресурсов "$res"
echo $current_date." ".$res;
?>

ЗЫ: TLT, а вам бы я посоветовал немного по уважительней относиться к людям. Тем более, что администрация (и не только в форумах) в первую очередь должна быть образцом поведения.

TLTДата: Среда, 08 Октября 2008, 03:57 | Сообщение # 6
Сейчас нет на сайте
Quote (rayne)
ЗЫ: TLT, а вам бы я посоветовал немного по уважительней относиться к людям. Тем более, что администрация (и не только в форумах) в первую очередь должна быть образцом поведения.

rayne, а я всё уважительно сказал и без каких-либо наездов, поэтому не понял к чему в мой огород полетел камень.


Дао, выраженное словами, не есть истинное Дао.
killroyДата: Среда, 17 Октября 2012, 22:05 | Сообщение # 7
был не раз
Сейчас нет на сайте
TLT
Все таки прав
________
Все таки зачем делать вручную велосипед если он уже давным довно придуман !
зачем ты пишешь это если можно скачать заготовку и со знаниями нормально отредактировать


Ultra-World Время
Loading - [||||||||||]
GronzoДата: Среда, 17 Октября 2012, 22:38 | Сообщение # 8
почетный гость
Сейчас нет на сайте
почитал я ваш код, одно меня смущает:
определим:
момент времени первого входа = t1
момент времени повторного входа = t2

т.е. ресурсы добавятся в t2
В таком случае, фактически, до его повторного входа (t2) ресурсы не прибавятся. Отсюда следует, если кто-то будет фармить данного игрока в промежутке от t1 до t2 он получит %(или все) ресурсов на момент t1.

так и задумано?


Скорость перебора паролей прямо пропорциональна квадрату температуры утюга
cougraAccДата: Пятница, 26 Октября 2012, 13:19 | Сообщение # 9
Яркая личность GD
Сейчас нет на сайте
Используй крон для обновления цифр ресурсов игрока. Там, конечно, пропиши условия где будут фильтроваться аккаунты.
p.s. Крон — планировщик задач. Выполняет выбранный скрипт 1 раз в заданный интервал времени. В данном случае скриптом будет наш файл работающий с обновлением ресурсов.


Сообщение отредактировал cougraAcc - Пятница, 26 Октября 2012, 13:22
TalcoДата: Пятница, 26 Октября 2012, 14:28 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Quote (rayne)
Велосипед.

Это точно, opensource клонов огейма не мало!
Quote (killroy)
Отсюда следует, если кто-то будет фармить данного игрока в промежутке от t1 до t2 он получит %(или все) ресурсов на момент t1.

Внесу свои 2 копейки... Берем напильник, и перед атакой пересчитываем ресурсы фермы


xNova: Революция
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг