mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-13 21:34:43 +01:00
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from game_server.game.enum.data_type import DataType
|
|
from game_server.game.chat.decorators import Command
|
|
from game_server.net.session import Session
|
|
from database import mongo
|
|
from lib.proto import GetAvatarDataReq
|
|
|
|
@Command(
|
|
prefix="rank",
|
|
usage="/rank {avatar_id | all} {rank} - Edit the rank of a specific avatar or use 'all' to update the rank of all avatars.",
|
|
)
|
|
async def execute(session: Session, avatar_id, rank="1"):
|
|
desc = getattr(execute, "usage", "No description available.")
|
|
|
|
if not rank.isdigit():
|
|
return f"Usage: {desc}"
|
|
|
|
if avatar_id == "all":
|
|
for avatar in session.player.avatars.values():
|
|
await update_avatar_rank(avatar, rank, session)
|
|
return f"Updated rank for all avatars to {rank}."
|
|
|
|
if not avatar_id.isdigit():
|
|
return f"Usage: {desc}"
|
|
|
|
avatar_id = int(avatar_id)
|
|
|
|
avatar = session.player.avatars.get(avatar_id)
|
|
if not avatar:
|
|
return f"Avatar with ID {avatar_id} does not exist."
|
|
|
|
await update_avatar_rank(avatar, rank, session)
|
|
|
|
return f"Updated avatar {avatar_id}'s rank to {rank}."
|
|
|
|
async def update_avatar_rank(avatar, rank, session:Session):
|
|
rank = int(rank)
|
|
if rank < 1:
|
|
rank = 1
|
|
if rank > 5:
|
|
rank = 5
|
|
|
|
avatar.star = rank
|
|
|
|
mongo.save(session, DataType.AVATAR, [avatar.avatar_id])
|
|
|
|
await session.process_packet(session.create_packet(GetAvatarDataReq(avatar_id_list=[avatar.avatar_id])))
|