init
This commit is contained in:
103
database/player/player_data.py
Normal file
103
database/player/player_data.py
Normal file
@@ -0,0 +1,103 @@
|
||||
from database.mongodb import get_collection
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
from database.base_database_data import BaseDatabaseData
|
||||
from rail_proto.lib import (
|
||||
Gender,
|
||||
PlayerBasicInfo,
|
||||
PlayerDetailInfo,
|
||||
PlatformType,
|
||||
PlayerRecordInfo
|
||||
)
|
||||
|
||||
players_collection = get_collection("players")
|
||||
|
||||
class PositionModel(BaseModel):
|
||||
x: int
|
||||
y: int
|
||||
z: int
|
||||
|
||||
class RotationModel(BaseModel):
|
||||
x: int
|
||||
y: int
|
||||
z: int
|
||||
|
||||
class PlayerData(BaseDatabaseData):
|
||||
name: str = ""
|
||||
signature: str = ""
|
||||
birthday: int = 0
|
||||
cur_basic_type: int = 8001
|
||||
head_icon: int = 208001
|
||||
phone_theme: int = 221000
|
||||
chat_bubble: int = 220000
|
||||
current_bgm: int = 210007
|
||||
current_gender: Gender = Gender.GenderMan
|
||||
level: int = 70
|
||||
exp: int = 0
|
||||
world_level: int = 0
|
||||
scoin: int = 0 # Credits
|
||||
hcoin: int = 0 # Jade
|
||||
mcoin: int = 0 # Crystals
|
||||
plane_id: int = 10000
|
||||
floor_id: int = 10000000
|
||||
entry_id: int = 100000104
|
||||
cur_lineup: int = 0
|
||||
pos: Optional[PositionModel] = PositionModel(x=0,y=0,z=0)
|
||||
rot: Optional[RotationModel] = RotationModel(x=0,y=0,z=0)
|
||||
|
||||
def ToProto(self) -> PlayerBasicInfo:
|
||||
return PlayerBasicInfo(
|
||||
nickname=self.name,
|
||||
level=self.level,
|
||||
exp=self.exp,
|
||||
world_level=self.world_level,
|
||||
scoin=self.scoin,
|
||||
hcoin=self.hcoin,
|
||||
mcoin=self.mcoin,
|
||||
stamina=240
|
||||
)
|
||||
|
||||
def ToDetailProto(self) -> PlayerDetailInfo:
|
||||
return PlayerDetailInfo(
|
||||
nickname=self.Name,
|
||||
level=self.Level,
|
||||
signature=self.Signature,
|
||||
is_banned=False,
|
||||
head_icon=self.HeadIcon,
|
||||
platform=PlatformType.PC,
|
||||
uid=self.uid,
|
||||
world_level=self.WorldLevel,
|
||||
record_info=PlayerRecordInfo()
|
||||
)
|
||||
|
||||
def create_player_data(self,name : str):
|
||||
try:
|
||||
self.name = name
|
||||
player_data = self.model_dump()
|
||||
players_collection.insert_one(player_data)
|
||||
return PlayerData(**player_data)
|
||||
except Exception as e:
|
||||
print(f"Error creating player data: {e}")
|
||||
return None
|
||||
|
||||
def save_player_data(self):
|
||||
try:
|
||||
player_data = self.model_dump()
|
||||
player_data["uid"] = self.uid
|
||||
query = {"uid": self.uid}
|
||||
players_collection.update_one(query, {"$set": player_data})
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error menyimpan data pemain: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def find_player_by_uid(uid: int) -> Optional[PlayerData]:
|
||||
player_data = players_collection.find_one({"uid": uid})
|
||||
if player_data:
|
||||
del player_data["_id"]
|
||||
return PlayerData(**player_data)
|
||||
return None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user