This commit is contained in:
ciomek committed 2026-09-04 17:02:25 +02:00
1 parent c500c3fadf
commit 5732e26380
10 files changed
+176 -2

No files matched your search

@@ -4,6 +4,8 @@ from sqlalchemy.exc import IntegrityError
from sqlmodel import Session, select
from loon.web.db import engine
from loon.web.logs.service import write_log
from loon.web.logs.types import LogTypeEnum
from loon.web.users.models import User
@@ -34,6 +36,7 @@ async def change_password_handler(client, userdata, msg, data):
select(User).where(User.uuid == uuid)
).first()
user.password = password
internal_username = user.internal_username
try:
session.commit()
@@ -44,4 +47,6 @@ async def change_password_handler(client, userdata, msg, data):
return
await write_log(LogTypeEnum.PLAYER_PASSWORD_CHANGED, f"Player {internal_username} ({uuid}) changed their password.")
client.publish(f"loon/auth/change_password/{uuid}/response", json.dumps({"success": True, "error": None}))
+30 -2
View File
@@ -1,10 +1,14 @@
import json
import random
from loon.web.logs.service import write_log
from loon.web.logs.types import LogTypeEnum
from loon.web.users.state import user_threads
PLAYER_EVENT_SUFFIXES = ("died", "joined", "left", "kicked")
BAN_KICK_REASON = "Banned by admin"
DEATH_BY_DAMAGE = {
"fall": (
"{username} fell from a high place",
@@ -78,7 +82,8 @@ async def marquee_handler(client, userdata, msg, data):
if not isinstance(player, dict):
return
username = player.get("username")
if not username:
uuid = player.get("uuid")
if not username or not uuid:
return
if subtopic == "died":
@@ -88,20 +93,43 @@ async def marquee_handler(client, userdata, msg, data):
if killer:
templates = DEATH_BY_KILLER.get(damage_type, DEATH_BY_KILLER_DEFAULT)
message = get_random(templates, username=username, killer=killer)
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) was killed by {killer}.")
elif damage_type in DEATH_BY_DAMAGE:
message = get_random(DEATH_BY_DAMAGE[damage_type], username=username)
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) died of {damage_type}.")
elif damage_type:
message = f"{username} died of {damage_type}"
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) died of {damage_type}.")
else:
message = f"{username} died"
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) died.")
elif subtopic == "joined":
message = f"{username} joined the game"
await write_log(LogTypeEnum.PLAYER_JOINED, f"Player {username} ({uuid}) joined the game.")
elif subtopic == "kicked":
reason = data.get("reason")
message = f"{username} was kicked: {reason}" if reason else f"{username} was kicked"
if reason == BAN_KICK_REASON:
message = f"{username} was banned"
await write_log(LogTypeEnum.PLAYER_BANNED, f"Player {username} ({uuid}) was banned.")
else:
message = f"{username} was kicked: {reason}" if reason else f"{username} was kicked"
await write_log(
LogTypeEnum.PLAYER_KICKED,
f"Player {username} ({uuid}) was kicked: {reason}." if reason else f"Player {username} ({uuid}) was kicked.",
)
else:
message = f"{username} left the game"
await write_log(LogTypeEnum.PLAYER_LEFT, f"Player {username} ({uuid}) left the game.")
envelope = json.dumps({"topic": "server/marquee", "payload": {"message": message}})
for queue in list(user_threads.values()):
+4
View File
@@ -4,6 +4,8 @@ from sqlalchemy.exc import IntegrityError
from sqlmodel import Session, select
from loon.web.db import engine
from loon.web.logs.service import write_log
from loon.web.logs.types import LogTypeEnum
from loon.web.users.models import User
@@ -50,4 +52,6 @@ async def register_request_handler(client, userdata, msg, data):
return
await write_log(LogTypeEnum.PLAYER_REGISTERED, f"Player {internal_username} ({uuid}) registered.")
client.publish(f"loon/auth/register/{uuid}/response", json.dumps({"success": True, "error": None}))