- 채널 입장 시 API 서버에서 플레이어 프로필 로드 (레벨/스탯/위치) - 채널 퇴장 시 위치/플레이타임 DB 저장 (SaveGameDataAsync) - Player.cs에 AttackPower/AttackRange/SprintMultiplier/Experience 필드 추가 - ToPlayerInfo에서 전투 스탯 매핑 추가 - Session에 ChannelJoinedAt 추가 (플레이타임 계산용) - PartyUpdateType에 INVITE/KICK 추가 - RequestPartyPacket에 TargetPlayerId 필드 추가 - GameServer에 INVITE/KICK 핸들러 구현 - Channel에 GetPeer() 메서드 추가 - RestApi에 GetPlayerProfileAsync/SaveGameDataAsync 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
123 lines
1.4 KiB
C#
123 lines
1.4 KiB
C#
namespace MMOserver.Game;
|
|
|
|
public class Player
|
|
{
|
|
public int HashKey
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int PlayerId
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string Nickname
|
|
{
|
|
get;
|
|
set;
|
|
} = string.Empty;
|
|
|
|
public int Level
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int Hp
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int MaxHp
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int Mp
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int MaxMp
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int Experience
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public int NextExp
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public float AttackPower
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public float AttackRange
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public float SprintMultiplier
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
// 위치/방향 (클라이언트 패킷과 동일하게 float)
|
|
public float PosX
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public float PosY
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public float PosZ
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public float RotY
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
// 현재 위치한 맵 ID
|
|
public int CurrentMapId
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
// 레이드 입장 전 이전 맵 ID (레이드 종료 후 복귀용, 서버 캐싱)
|
|
public int PreviousMapId
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
}
|