Loading...
Игрок использует симулятор , ему даётся бонус к параметру на 1 час , я записываю параметр в users , то есть прибавляется к текущему параметру,. после 1 часа у игрока заканчивается симулятор и если игрок зайдут в игру , то у него автоматов минус параметры (бонус от симулятора) , но это если он зайдет в игру ещё раз. А вот что если игрок использовал симулятор и вышел с игры и не зашёл больше в игру , то у него не снимутся бонусы от симулятора
Как можно реализовать правильно
Кроном сбрасывай и все
n0o0b, нагрузки не будет ? Например проверять 100000 записей каждую минуту
213731682, 100к записей, это не о чем вообще, тем более у тебя там не будет никаких условий сложных, если сделать руками
________
посл. ред. 07.08.2022 в 22:38; всего 1 раз(а); by n0o0b
Сделай проще, использовал симулятор свой записалось, записалось в user параметр и так же записалось в таблице допустим simulators id users и id симулятора который использовал ну и время, дальше как время прошло, с таблицы simulators удалился запись, у user убрался параметр и все ок
Это все проще делается.
1. Ставим значение симулятора и дату. 2. Вставляем где то в шапке запрос update simul='0' если date < текущее время
________
посл. ред. 07.08.2022 в 23:34; всего 1 раз(а); by Saha_M
Saha_M (07.08.2022 в 23:32)
Это все проще делается.
1. Ставим значение симулятора и дату. 2. Вставляем где то в шапке запрос update simul='0' если date &lt; текущее время
Ты то не знаешь где он хранит эти стимуляторы свои, в бд или нет. Может просто припокупке они просто добавляются, а может симуляторы эти как элексир идёт и так далее. Короче много вопросов.
Saha_M (07.08.2022 в 23:32)
Это все проще делается.
1. Ставим значение симулятора и дату. 2. Вставляем где то в шапке запрос update simul='0' если date &lt; текущее время
Худшее, что вообще можно было посоветовать) никогда так не делайте
php
// все игроки у которых истек время сималяторов
public static function get_expired_simulator() {
$sql = "select * from users_simulator where time_simulator < ?";
return fetchAll($sql, array(time()));
}

public static function ctr_simulator_active() {
if (!empty($user_pack = self::get_expired_simulator())) {

foreach ($user_pack as $all) {
$bonus_name = self::get_bonus_simulator($all['id_simul']); // название бонусa симулятора
$param_bonus = self::get_param_bonus_simulator($all['id_simul']); // какой прибавок

// минусуем парметры от симулятора
uc::update_param($all['id_user'], $bonus_name, -$param_bonus);

// удаляем
self::dell_simulator($all['id_simul']);

}
}
}


Сделал вот так
Онлайн: 5
Время:
Gen. 0.1004
(c) Bym.Guru 2010-2025