Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Онлайн игра - проблема

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Возникла проблема с онлайн игрой..
AkidSE
Отправлено: 12 Января, 2013 - 14:27:10
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Я начал писать онлайн игру но столкнулся с одной проблемой. Мне нужно написать чтобы выносливость(колонка в mysql таблице) каждую секунду пополнялась на 5. Я даже в воображении не имею как ето сделать. Через for() а ж страшно пробовать... Помогите чем можете. Я буду очень благодарный. Ваш ник поставлю в своей онлайн игре в партнерах..
 
 Top
Denkill
Отправлено: 12 Января, 2013 - 14:47:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 330
Дата рег-ции: Янв. 2013  
Откуда: Барнаул


Помог: 7 раз(а)




Запусти автоматический запуск скрипта через SSH на каждый 5 мин.


-----
Хо-Хо-Хо
 
 Top
vanicon
Отправлено: 12 Января, 2013 - 14:48:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




AkidSE пишет:
каждую секунду пополнялась на 5

Почему сразу не обновить поле к примеру на 50?


-----
Так было, так есть и так будет
 
 Top
Мелкий Супермодератор
Отправлено: 12 Января, 2013 - 14:50:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




AkidSE, поставьте задачу с ног на голову: вам ведь нужно узнать, сколько этой выносливости есть сейчас? Вот при обращении и высчитайте, сколько раз по 5 секунд прошло.


AkidSE пишет:
Ваш ник поставлю в своей онлайн игре в партнерах..

Вот уж, спасибо, не надо.


-----
PostgreSQL DBA
 
 Top
AkidSE
Отправлено: 12 Января, 2013 - 14:57:15
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Мелкий пишет:
AkidSE, поставьте задачу с ног на голову: вам ведь нужно узнать, сколько этой выносливости есть сейчас? Вот при обращении и высчитайте, сколько раз по 5 секунд прошло.


AkidSE пишет:
Ваш ник поставлю в своей онлайн игре в партнерах..

Вот уж, спасибо, не надо.

Вы не поняли. Например есть 65 выносливости а макс.выносливость-100. Так вот, мне нужно чтобы эта выносливость пополнялась на 5 каждую секунду пока не достигнет 100.
Я уже сам немного начинаю это понимать.
PHP:
скопировать код в буфер обмена
  1.  
  2. $time_s=$time-$user['date_last']; //18
  3. if($user['vinos']<100){
  4. for ($d = 1; $d <= $forh; $d++){
  5. $vinosi=$user['vinos']+5;
  6. mysql_query("UPDATE `user` SET `vinos`='$vinosi' WHERE `id`='$user[id]'");
  7. }
  8. }

Но не знаю будет это работать или нет...

(Отредактировано автором: 12 Января, 2013 - 15:08:47)

 
 Top
romario0403
Отправлено: 12 Января, 2013 - 15:05:04
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




может быть AJAX'ом ?
 
 Top
AkidSE
Отправлено: 12 Января, 2013 - 15:07:20
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




romario0403 пишет:
может быть AJAX'ом ?

причем здесь AJAX? Это и на php можно сделать. Но хорошенько подумать надо...
 
 Top
avtor.fox
Отправлено: 12 Января, 2013 - 15:09:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




AkidSE Вы уж меня извините, но какие Вам онлайн-игры?
Каждую секунду обновлять строку в таблице не есть хорошее занятие.
Почему бы не сделать просто? Если есть визуальное отображение выносливости, просто рисуете её обновление до 100, при достижении лимита выносливости, обновляете в базе и всё.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Января, 2013 - 15:11:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




AkidSE пишет:
мне нужно чтобы эта выносливость пополнялась на 5 каждую секунду пока не достигнет 100.

Ну и что? Ограничьте верхний диапазон и всё.
Логика подсказывает, что выносливость тратится на умения - вот при применении умения записываете время и баланс выносливости на тот момент. При следующем обращении за этими данными пересчитываете выносливость относительно известной начальной даты.

Это, во-первых, PHP, рассчитанный на запросы пользователя, а не реалтайм - оный здесь получить невозможно. А во-вторых, нагрузка на CPU на фронтенде значительно проще решается, чем тысячи записей в секунду на БД.


-----
PostgreSQL DBA
 
 Top
AkidSE
Отправлено: 12 Января, 2013 - 15:19:53
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Мелкий пишет:

Ну и что? Ограничьте верхний диапазон и всё.
Логика подсказывает, что выносливость тратится на умения - вот при применении умения записываете время и баланс выносливости на тот момент. При следующем обращении за этими данными пересчитываете выносливость относительно известной начальной даты.

Я это и сделал:
PHP:
скопировать код в буфер обмена
  1.  
  2. $time_s=$time-$user['date_last'];
  3.  

Так я получаю сколько секунд прошло с последнего обновления страницы. Например 18
Теперь осталось 18*5=90. И тут 90 добавляем к выносливости. Верно?
(Добавление)
avtor.fox пишет:
AkidSE Вы уж меня извините, но какие Вам онлайн-игры?

Не бойтесь, как то сделаю. У меня есть опыт во многих языках. А с этой фигней я немного затупил. Оказывается все так легко...
 
 Top
avtor.fox
Отправлено: 12 Января, 2013 - 15:31:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




AkidSE
Одно скажу, Ваша "онлайн-игра" падёт прахом. Переводите расчёт на клиентскую часть, оставьте php только для обработки данных, валидации и вторичных проверок.

AkidSE пишет:
Теперь осталось 18*5=90. И тут 90 добавляем к выносливости. Верно?

А выносливость персонажа к примеру на настоящий момент 80.
Надеюсь Вы не забыли про вычисления?

Статичные онлайн игры уже давно ушли в небытие. Одумайтесь.
(Добавление)
AkidSE пишет:
У меня есть опыт во многих языках. А с этой фигней я немного затупил. Оказывается все так легко...
Оно и видно.
 
 Top
Vitalz
Отправлено: 12 Января, 2013 - 15:34:52
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




avtor.fox пишет:
AkidSE
Одно скажу, Ваша "онлайн-игра" падёт прахом. Переводите расчёт на клиентскую часть, оставьте php только для обработки данных, валидации и вторичных проверок.

AkidSE пишет:
Теперь осталось 18*5=90. И тут 90 добавляем к выносливости. Верно?

А выносливость персонажа к примеру на настоящий момент 80.
Надеюсь Вы не забыли про вычисления?

Статичные онлайн игры уже давно ушли в небытие. Одумайтесь.


Ниндзя Почему? эта онлайн игра пишется для игры с мобильного. Как и многие многопользовательские онлайн игры.
 
 Top
AkidSE
Отправлено: 12 Января, 2013 - 15:37:47
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




avtor.fox пишет:

AkidSE пишет:
Теперь осталось 18*5=90. И тут 90 добавляем к выносливости. Верно?

А выносливость персонажа к примеру на настоящий момент 80.
Надеюсь Вы не забыли про вычисления?

Вот рабочий код:
if($user['vinos']<100){
$fori=$time;
$forh=$time-$user['date_last'];
$vinosl=$forh*5;
$vinosli=$vinosl+$user['vinos'];
if($vinosli>=100){
mysql_query("UPDATE `user` SET `vinos`='100' WHERE `id`='$user[id]'");
}else{
mysql_query("UPDATE `user` SET `vinos`='$vinosli' WHERE `id`='$user[id]'");
}
}
Сам его писал и 100% он работает.
 
 Top
Master_pascal
Отправлено: 12 Января, 2013 - 15:37:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+][+][+][+][+]


Автор можешь дать ссылку посмотреть

(Отредактировано автором: 12 Января, 2013 - 15:42:56)

 
 Top
AkidSE
Отправлено: 12 Января, 2013 - 15:41:32
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




avtor.fox пишет:
Статичные онлайн игры уже давно ушли в небытие. Одумайтесь.

Если не прокатит то продам и буду делать на флеш(я ActionScript немного знаю)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB