Добрый вечер всем. Суть проблемы. Имеется переменная $energy с максимальным значением 100. Если пользователь совершил действие она уменьшается, и затем каждую секунду востанавливается до максимума, но что бы значение изменилось надо перезагрузить страницу, а хочу что бы без перезагрузки. Пытался при помощи ajax, но никак не получается. Заранее благодарен за помощь. Прошу прошения если не туда написал. --- Добавлено --- при помощи php всё работает. Но надо каждый раз перезагружаться
не так запоминай время потраты считай число секунд, прошедших с момента события это и есть то, что тебе нужно
PHP: <?php session_start(); function update_energy ( $last_act, $energy_cur, $energy_max ) { $_SESSION["last_act"] = time(); //- Количество энергии / сек $energy_tick = 2; //- Количество энергии * количество секунд $energy_tick = round( $energy_tick * $last_act ); //- Прибавляем к текущей энергии $energy_cur += $energy_tick; //- Если выходит за рамки ограничений if ( $energy_cur > $energy_max ) $energy_cur = $energy_max; //- Возвращаем значение return $energy_cur; } //- Последнее действие выполненное пользователем //- Предполагается, что данное значение будет сохранено в таблицу базы данных пользователя при действии выполненное на сайте $last_act = time(); //- Запишем в сессию время последнего действия if ( empty ( $_SESSION["last_act"] ) ) $_SESSION["last_act"] = $last_act; //- Текущее значение энергии, например 50 $energy_cur = 50; //- Максимальное значение энергии $energy_max = 100; echo ' Текущая энерегия : <b> ' . $energy_cur . ' </b> <br /> Максимальная энергия : <b> ' . $energy_max . ' </b> <br /> Прошло времени : <b> ' . ( time() - $_SESSION["last_act"] ) . ' </b> сек. <br /> Восстановлено энерегии <b> ' . update_energy(( time() - $_SESSION["last_act"] ), $energy_cur, $energy_max) . ' </b> <br /> '; ?> Запусти у себя, должен понять примерную логику, может лучше сделаешь) То есть, что должно происходить. 1) Устанавливаешь время пользователю (последнее действие), который только что зашел на сайт или куда либо перешел/нажал. 2) Определяешь : 2.1) Текущую энерегию 2.2) Максимальную энергию 2.3) Количество энергии в сек 3) Запускаешь функцию регенирации, куда передаешь или считаешь до этого: 3.1) Количество секунд которые проишли ( текущее время - время последнего действия пользователем ) 3.2) Умножаешь количество секунд на количество энерегии в сек 3.3) Прибавляешь полученное значение к текущей энергии и возвразаешь, а если оно превышает лимит - устанавливаешь дефолт максимальный 3.4) Перезаписываешь время последнего действия
я сделал действие в 17:03:12, было 100, потратил 25, стало 75 в 17:03:16 я сделал еще действие, было 75, прошло 4 секунды, значит 75 + 4 = 79 энергии у меня есть, действие стоит 20, значит 79 - 20 = 59