fix for coin accural #2
This commit is contained in:
@ -28,45 +28,24 @@ class CoinsService:
|
|||||||
current_total_time = user.get("total_time_played", 0)
|
current_total_time = user.get("total_time_played", 0)
|
||||||
|
|
||||||
if last_update:
|
if last_update:
|
||||||
# Время с последнего начисления
|
|
||||||
last_timestamp = last_update["timestamp"]
|
last_timestamp = last_update["timestamp"]
|
||||||
seconds_since_update = int((now - last_timestamp).total_seconds())
|
seconds_since_update = int((now - last_timestamp).total_seconds())
|
||||||
|
|
||||||
# ограничиваем начисление временем текущей сессии
|
# Берём минимум: сколько прошло по часам и сколько игрок реально онлайн
|
||||||
seconds_since_update = min(seconds_since_update, online_time)
|
seconds_for_reward = min(seconds_since_update, online_time)
|
||||||
|
|
||||||
# Начисляем монеты только за полные минуты
|
# Начисляем только за полные минуты
|
||||||
minutes_to_reward = seconds_since_update // 60
|
minutes_to_reward = seconds_for_reward // 60
|
||||||
|
|
||||||
# Если прошло меньше минуты, пропускаем
|
|
||||||
if minutes_to_reward < 1:
|
if minutes_to_reward < 1:
|
||||||
return
|
return
|
||||||
|
|
||||||
minutes_to_reward = min(minutes_to_reward, MAX_MINUTES_PER_UPDATE)
|
minutes_to_reward = min(minutes_to_reward, MAX_MINUTES_PER_UPDATE)
|
||||||
else:
|
else:
|
||||||
# Первое обновление (ограничиваем для безопасности)
|
# Первое обновление — считаем только от online_time, с лимитом для безопасности
|
||||||
minutes_to_reward = min(online_time // 60, 5)
|
minutes_to_reward = min(online_time // 60, 5)
|
||||||
|
if minutes_to_reward < 1:
|
||||||
# НА ВСЯКИЙ ЕСЛИ ПОПЫ ВСЕ-РАВНО НЕПРАВИЛЬНО НАЧИСЛЯЮТСЯ
|
return
|
||||||
|
|
||||||
# if last_update:
|
|
||||||
# last_timestamp = last_update["timestamp"]
|
|
||||||
# seconds_since_update = int((now - last_timestamp).total_seconds())
|
|
||||||
|
|
||||||
# # Берём минимум: сколько прошло по часам и сколько игрок реально онлайн
|
|
||||||
# seconds_for_reward = min(seconds_since_update, online_time)
|
|
||||||
|
|
||||||
# # Начисляем только за полные минуты
|
|
||||||
# minutes_to_reward = seconds_for_reward // 60
|
|
||||||
|
|
||||||
# if minutes_to_reward < 1:
|
|
||||||
# return
|
|
||||||
|
|
||||||
# minutes_to_reward = min(minutes_to_reward, MAX_MINUTES_PER_UPDATE)
|
|
||||||
# else:
|
|
||||||
# # Первое обновление — считаем только от online_time, с лимитом для безопасности
|
|
||||||
# minutes_to_reward = min(online_time // 60, 5)
|
|
||||||
# if minutes_to_reward < 1:
|
|
||||||
# return
|
|
||||||
|
|
||||||
if minutes_to_reward > 0:
|
if minutes_to_reward > 0:
|
||||||
# Обновляем монеты и время
|
# Обновляем монеты и время
|
||||||
|
|||||||
@ -1,54 +0,0 @@
|
|||||||
# scripts/add_test_bonuses.py
|
|
||||||
from app.db.database import db
|
|
||||||
import uuid
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
# Коллекция для бонусов
|
|
||||||
bonus_types_collection = db.bonus_types
|
|
||||||
|
|
||||||
# Очищаем существующие записи
|
|
||||||
bonus_types_collection.delete_many({})
|
|
||||||
|
|
||||||
# Добавляем типы бонусов
|
|
||||||
bonus_types = [
|
|
||||||
{
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"name": "Бонус опыта",
|
|
||||||
"description": "Увеличивает получаемый опыт на 100% (+10% за уровень)",
|
|
||||||
"effect_type": "experience",
|
|
||||||
"base_effect_value": 1.0, # +100%
|
|
||||||
"effect_increment": 0.1, # +10% за уровень
|
|
||||||
"price": 100,
|
|
||||||
"upgrade_price": 50,
|
|
||||||
"duration": 0, # Бесконечный
|
|
||||||
"max_level": 0 # Без ограничения уровня
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"name": "Бонус силы",
|
|
||||||
"description": "Увеличивает силу атаки на 10% (+5% за уровень)",
|
|
||||||
"effect_type": "strength",
|
|
||||||
"base_effect_value": 0.1,
|
|
||||||
"effect_increment": 0.05,
|
|
||||||
"price": 75,
|
|
||||||
"upgrade_price": 40,
|
|
||||||
"duration": 0, # Бесконечный
|
|
||||||
"max_level": 10 # Максимум 10 уровней
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": str(uuid.uuid4()),
|
|
||||||
"name": "Бонус скорости",
|
|
||||||
"description": "Временно увеличивает скорость передвижения на 20%",
|
|
||||||
"effect_type": "speed",
|
|
||||||
"base_effect_value": 0.2,
|
|
||||||
"effect_increment": 0.05,
|
|
||||||
"price": 40,
|
|
||||||
"upgrade_price": 30,
|
|
||||||
"duration": 1800, # 30 минут
|
|
||||||
"max_level": 5
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
# Вставляем бонусы в БД
|
|
||||||
bonus_types_collection.insert_many(bonus_types)
|
|
||||||
print(f"Добавлено {len(bonus_types)} типов бонусов")
|
|
||||||
Reference in New Issue
Block a user