С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93

Счетчик

04.12.2009, 21:56. Показов 3639. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте ! Никак не могу понять, вот код:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var TimerOn = -1; // id таймера
var tkHP, maxHP;
function setHP(value, max, newspeed) {
  tkHP=value; maxHP=max;
  if (TimerOn>=0) { clearTimeout(TimerOn); TimerOn=-1; }
  setHPlocal();
}
function setHPlocal() {
  if (tkHP>=maxHP) { tkHP=maxHP; }
 
  var s = document.all("HP").innerHTML;
  document.all("HP").innerHTML = s.substring(0, s.lastIndexOf(':')+1) + Math.round(tkHP)+"/"+maxHP;
 
  tkHP = (tkHP+1);
 
  if (tkHP<maxHP) { TimerOn=setTimeout('setHPlocal()', 1*1000); }
  else { TimerOn=-1;
   }
}
который каждую секунду к tkHP прибавляет 1, пока браузер открыт и записывает каждое значение tkHP в БД (Майскл) (записи в БД в этом отрывке кода нету !!!). Но с закрытием окна браузера скрипт прекращает работу и следовательно запись в БД тоже останавливается.

Как сделать чтоб это ХП продолжало восстанавливаться ? даже если пользователь закрыл окно и выкл. комп. (нужно хотя бы направление в котором следует думать)


П.С К примеру как в онлайн играх (типа Бойцовского клуба), где восстановление жизни персонажа происходит даже если он не в клубе.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2009, 21:56
Ответы с готовыми решениями:

Счетчик
Привет. Проблема следующего характера. Я не знаю javascript, но мне очень нужно сделать счетчик до 24, с обновлением раз в секунду....

Счетчик js
Добрый день. Хочу создать счетчик обратного отсчета,не получаеться его реализовать.Не могу понять в чем проблема. Что имееться. ...

Счётчик
Подскажите можно ли на html работать так же как и на экселе, то есть, я вбил определённые данные в столбцы (таблицу) и теперь мне нужно что...

5
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
04.12.2009, 22:13
Это надо делать на стороне сервера... и не в реальном времени, а рассчитывать, сколько единиц должно восстановиться к текущему моменту. Например, у игрока всего 1000 единиц... но осталось только 145. Он 5 минут отсутствовал, а потом запросил опять свою страницу. Скрипт должен вспомнить, сколько здоровья у него было и когда (скорее всего, хранить это в какой-то таблице). Посчитать, сколько секунд прошло с тех пор и рассчитать, сколько теперь у него должно быть единиц здоровья.
1
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93
04.12.2009, 23:18  [ТС]
Это надо делать на стороне сервера... и не в реальном времени, а рассчитывать, сколько единиц должно восстановиться к текущему моменту. Например, у игрока всего 1000 единиц... но осталось только 145. Он 5 минут отсутствовал, а потом запросил опять свою страницу. Скрипт должен вспомнить, сколько здоровья у него было и когда (скорее всего, хранить это в какой-то таблице). Посчитать, сколько секунд прошло с тех пор и рассчитать, сколько теперь у него должно быть единиц здоровья.

Ну т.е после того как он вошел в онлайн в базу занести текущую дату и от нее отнять дату последнего выхода в офф. и уже с этой разницей дальше выполнять действия ?
0
Почетный модератор
 Аватар для Humanoid
11554 / 4349 / 452
Регистрация: 12.06.2008
Сообщений: 12,453
05.12.2009, 00:25
Да. Ну как по прошлому примеру... последний раз он был в 0:24:15... у него на тот момент было 145 единиц здоровья. После этого он появился в 0:29:17... значит вычитаем время - получается 302 секунды. Здоровье восстанавливается, допустим, по 2 единицы в секунду. Получается
PHP
1
2
$hp = ($razn*2)+$chto_bilo; // К тому что было прибавляем восстановленное здоровье за это время
if ($hp>$maxhp) $hp=$maxhp; // Если за это время восстановилось больше здоровья, чем всего может быть, то урезать до этого значения
1
 Аватар для --Rand--
1 / 1 / 0
Регистрация: 09.07.2009
Сообщений: 93
05.12.2009, 13:13  [ТС]
Цитата Сообщение от Humanoid Посмотреть сообщение
Да. Ну как по прошлому примеру... последний раз он был в 0:24:15... у него на тот момент было 145 единиц здоровья. После этого он появился в 0:29:17... значит вычитаем время - получается 302 секунды. Здоровье восстанавливается, допустим, по 2 единицы в секунду. Получается
PHP
1
2
$hp = ($razn*2)+$chto_bilo; // К тому что было прибавляем восстановленное здоровье за это время
if ($hp>$maxhp) $hp=$maxhp; // Если за это время восстановилось больше здоровья, чем всего может быть, то урезать до этого значения

С этим-то понятно, спс, дело в другом, такую манипуляцию с датой (0:24:15 - 0:29:17 = 302) в PHP как осуществлять ? Подскажи пожалуйста с помощью какой функции в PHP можно узнать сколько прошло времени ? потому что Date(), time() вроде скудны такого рода операции.
0
 Аватар для GalaX
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
05.12.2009, 14:05
храни время в секундах с начала эпохи - легче будет

Добавлено через 1 минуту
$прошло = $сейчас - $прошлое_посещение
echo $прошло; // секунд
echo ($прошло / 60); // минут
и т.п.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2009, 14:05
Помогаю со студенческими работами здесь

Счётчик
Всем привет, поставленна задача сделать счётчик. Счётчик то я написал, но числа в этом счётчике после обновления страницы сбиваются и отчёт...

счетчик
Здравствуйте! Хочу сделать игру, для этого когда юзер нажимает на клавишу, то на клавише должно меняться числа. Примерно, попробовал...

Суточный счетчик на js
Здравствуйте. Есть задача сделать счетчик, который проверяется на условие &quot;начался ли новый день&quot; и дальше начинает прибавлять 1 к...

счетчик кликов
делаю простейшую игру на javascript. цель игры в том, чтобы, кликая, найти совпадения некоторых объектов. при клике на один, а потом на...

Счётчик тонн
&lt;button class=&quot;dec&quot;&gt;-&lt;/button&gt; &lt;span class=&quot;val mega_val&quot; id='count_&lt;?=$arResult; ?&gt;' contenteditable&gt;1&lt;/span&gt; &lt;button...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru