DragonNest/Server/ServerCommon/DNServerPacketGame.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

415 lines
7.9 KiB
C++

#pragma once
#pragma pack(push, 1)
//--------------------------------------------------------------
// Game Packet
//--------------------------------------------------------------
struct GameServerInfo
{
BYTE cServerIdx;
int nServerAttribute;
ULONG nIP;
USHORT nPort;
BYTE cMargin;
};
struct GARegist // GAAG_REGIST
{
int nManagedID; //ServiceManager이용시 GSM에서 컨트롤시 사용
USHORT nTcpOpenPort;
BYTE cAffinityType; //eGameserverAffinityType
unsigned char cInfoCount;
GameServerInfo ServerInfo[GAMECOUNTMAX];
};
// Game -> Master
struct GAMADelayReport //GAMA_DELAYREPORT
{
int nServerIdx;
int nWholeRoomCnt;
int nRoomCnt;
int nUserCnt;
int nMinFrame;
int nMaxFrame;
int nAvrFrame;
BYTE cHasMargin;
};
struct GAMACheckUser // GAMA_CHECKUSER
{
UINT nSessionID;
};
struct GAMAEnterGame //GAME_ENTERGAME
{
UINT nAccountDBID;
USHORT nRoomID;
USHORT nServerIdx;
};
struct GAMAReconnectLogin //GAMA_RECONNECTLOGIN
{
UINT nAccountDBID;
};
struct GAMAAddUserList // GAMA_ADDUSERLIST
{
UINT nAccountDBID;
UINT nSessionID;
INT64 biCharacterDBID;
WCHAR wszAccountName[IDLENMAX];
WCHAR wszCharacterName[NAMELENMAX];
char cPCBangGrade; // 피씨방 등급 (0: 피씨방 아님, 나머지: ePCBangGrade)
char szIP[IPLENMAX]; // 피로도때문에 넣음
char szVirtualIp[IPLENMAX];
USHORT wChannelID;
bool bAdult; // 어른인지 아닌지 (피로도)
#ifdef _KR
BYTE szMID[MACHINEIDMAX];
DWORD dwGRC;
#endif // #ifdef _KR
#ifdef PRE_ADD_MULTILANGUAGE
char cSelectedLanguage;
#endif //#ifdef PRE_ADD_MULTILANGUAGE
#if defined(_ID)
char szMacAddress[MACADDRLENMAX];
char szKey[KREONKEYMAX];
DWORD dwKreonCN;
#endif
#if defined(_KRAZ)
TShutdownData ShutdownData;
#endif // #if defined(_KRAZ)
USHORT nThreadIdx;
int nRoomID;
TPARTYID PartyID;
#if defined(PRE_ADD_DWC)
BYTE cAccountLevel;
#endif
};
struct GAMADelUser // GAMA_DELUSER
{
UINT nAccountDBID;
BYTE cIsUnIntended;
UINT nSessionID;
};
struct GAMAEndofRegist //GAMA_ENDOFREGIST
{
UINT nServerID;
};
struct GAMAChangeServer // GAMA_CHANGESERVER
{
UINT nAccountDBID;
};
struct GAMASetRoomID // GAMA_SETROOMID
{
GameTaskType::eType GameTaskType;
BYTE cReqGameIDType;
union
{
TINSTANCEID InstanceID;
LadderSystem::MatchType::eCode MatchType;
};
BYTE cGameID;
BYTE cServerIdx;
BYTE cVillageID;
int iRoomID;
TPARTYID PartyIDForBreakInto;
#if defined( PRE_WORLDCOMBINE_PARTY )
ePartyType Type;
#endif
#if defined( PRE_WORLDCOMBINE_PVP )
WorldPvPMissionRoom::Common::eReqType eWorldReqType;
#endif
UINT nRoomMember[PARTYMAX];
};
struct GAMASetTutorialRoomID // GAMA_SETTUTORIALROOMID
{
UINT nAccountDBID;
BYTE cGameID;
BYTE cServerIdx;
int nRoomID;
int nLoginServerID;
};
struct GAMARequestNextVillageInfo //GAMA_REQNEXTVILLAGEINFO
{
BYTE cReqGameIDType;
TINSTANCEID InstanceID;
BYTE cReturnVillage; //0false 1true;
int nMapIndex;
int nEnteredGateIndex;
INT64 nItemSerial;
TPartyData PartyData;
};
struct GAMARebirthVillageInfo // GAMA_REBIRTHVILLAGEINFO
{
UINT nAccountDBID;
int nLastVillageMapIdx;
};
struct GAMAMovePvPGameToPvPLobby // GAMA_MOVEPVPGAMETOPVPLOBBY
{
UINT uiAccountDBID;
UINT uiPvPIndex;
int iLastVillageMapIndex;
bool bIsLadderRoom;
};
struct GAMALoginState // GAMA_LOGINSTATE
{
UINT nAccountDBID;
};
struct GAMAVillageState // GAMA_VILLAGESTATE
{
UINT nAccountDBID;
int nMapIndex;
int nRoomID;
};
struct GAMADelPartyMember // GAMA_DELPARTYMEMBER
{
USHORT nServerID;
UINT nAccountDBID;
char cKickKind;
};
#define GAMAParty VIMAParty //GAMA_PARTY
#define GAMAFriendAddNotice VIMAFriendAddNotice
struct GAMAPrivateChat // GAMA_PRIVATECHAT
{
UINT nAccountDBID;
WCHAR wszToCharacterName[NAMELENMAX];
char cType; // GM이냐 아니냐.. (이렇게까지해야해? -_-;)
#ifdef PRE_ADD_DOORS
INT64 biDestCharacterDBID;
#endif //#ifdef PRE_ADD_DOORS
short wChatLen;
WCHAR wszChatMsg[CHATLENMAX];
};
struct GAMAChat // GAMA_CHAT
{
UINT nAccountDBID;
char cType;
short wChatLen;
WCHAR wszChatMsg[CHATLENMAX];
};
struct GAMAWorldSystemMsg // GAMA_WORLDSYSTEMMSG
{
UINT nAccountDBID;
char cType;
int nID;
int nValue;
WCHAR wszToCharacterName[NAMELENMAX];
};
#if defined( PRE_PRIVATECHAT_CHANNEL )
struct GAMAPrivateChannelChatMsg // GAMA_PRIVATECHANNELCHAT
{
UINT nAccountDBID;
char cType;
short wChatLen;
INT64 nChannelID;
WCHAR wszChatMsg[CHATLENMAX];
};
#endif
struct GAMANotice //GAMA_NOTICE
{
int nLen;
WCHAR szMsg[CHATLENMAX];
};
struct GAMABanUser //GAMA_BANUSER
{
UINT nAccountDBID;
WCHAR wszCharacterName[NAMELENMAX];
#if defined(PRE_ADD_MULTILANGUAGE)
char cSelectedLang;
#endif //#if defined(PRE_ADD_MULTILANGUAGE)
};
struct GAMAUpdateWorldUserState //GAMA_UPDATEWORLDUSERSTATE
{
WCHAR szName[NAMELENMAX];
int nMapIdx;
};
struct GAMAPVP_ROOMSYNCOK
{
UINT uiPvPIndex;
};
struct GAMAPVP_LADDERROOMSYNC
{
INT64 biRoomIndexArr[2];
LadderSystem::RoomState::eCode State;
};
struct GAMAPVP_BREAKINTOOK
{
UINT uiPvPIndex;
UINT uiAccountDBID;
};
struct GAMAPVP_COMMAND
{
UINT uiCommandType; // PvPCommon::GAMA_Command 참고
UINT uiPvPIndex;
UINT uiRoomIndex;
};
#define GAMAPVPSwapMemberIndex VIMAPVPSwapMemberIndex //GAMA_PVP_SWAPTMEMBER_INDEX
#define GAMAPVPChangeMemberGrade VIMAPVPChangeMemberGrade //GAMA_PVP_CHANGEMEMBER_GRADE
struct GAMAPvPGuildWarScore //GAMA_PVP_GUILDWARSCORE
{
UINT nGuildDBID;
int nScore;
};
struct GAMAPvPGuildWarResult //GAMA_PVP_GUILDWARRESULT
{
UINT nWinGuildDBID;
UINT nLoseGuildDBID;
bool bIsDraw;
};
struct GAMAPvPGuildWarException //GAMA_PVP_GUILDWAREXCEPTION
{
UINT nRoomID;
UINT nPvPIndex;
};
struct GAMAPCBangResult // GAMA_PCBANGRESULT, // 피씨방 관련 결과값 받아오기
{
UINT nAccountDBID;
};
struct GAMANotifyGift // GAMA_NOTIFYGIFT
{
UINT nToAccountDBID; // 받는이 AccountDBID
INT64 biToCharacterDBID;
bool bNew;
int nGiftCount;
};
struct GAMAInvitePartyMember : public TInvitePartyInfo //GAMA_INVITEPARTYMEMBER
{
int nChannelID;
UINT nInviterAccountDBID;
INT64 biInviterCharacterDBID;
WCHAR wszInviterName[NAMELENMAX];
WCHAR wszInvitedName[NAMELENMAX];
BYTE cPermitLevel;
char cPassClassIds[PERMITMAPPASSCLASSMAX];
};
struct GAMAInvitedReturnMsg //GAMA_INVITEPARTYMEMBER_RETURNMSG
{
UINT nAccountDBID;
int nRetCode;
};
#if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
typedef VIMASyncSystemMail GAMASyncSystemMail;
typedef MAVISyncSystemMail MAGASyncSystemMail;
#endif // #if defined( PRE_ADD_NPC_REPUTATION_SYSTEM )
namespace MasterSystem
{
typedef VIMASyncSimpleInfo GAMASyncSimpleInfo;
typedef VIMASyncGraduate GAMASyncGraduate;
typedef VIMASyncConnect GAMASyncConnect;
}
struct GAMAFarmDataLoaded //GAMA_FARM_DATALOADED
{
int nGameServerIdx; //threadidx;
UINT nRoomID;
UINT nFarmDBID;
int nMapID;
int nFarmMaxUser;
};
struct GAMAFarmUserCount //GAMA_FARM_USERCOUNT
{
UINT nFarmDBID;
UINT nFarmRoomID;
int nCurUserCount;
bool bStarted;
};
struct GAMAFarmIntendedDestroy //GAMA_FARM_INTENDEDDESTROY
{
UINT nFarmDBID;
};
struct GAMAFarmSync //GAMA_FARM_SYNC
{
INT64 biCharacterDBID;
Farm::ServerSyncType::eType Type;
};
struct MAGAFarmSync
{
UINT uiAccountDBID; // 반드시 uiAccountDBID 가 맨 위에 와야 함
INT64 biCharacterDBID;
Farm::ServerSyncType::eType Type;
};
struct GAMAFarmSyncAddWater
{
INT64 biCharacterDBID;
WCHAR wszCharName[NAMELENMAX];
int iAddPoint;
};
struct MAGAFarmSyncAddWater
{
UINT uiAccountDBID; // 반드시 uiAccountDBID 가 맨 위에 와야 함
WCHAR wszCharName[NAMELENMAX];
int iAddPoint;
};
struct GAMALoadUserTempData // GAMA_LOAD_USERTEMPDATA
{
UINT uiAccountDBID;
};
struct GAMASaveUserTempData // GAMA_SAVE_USERTEMPDATA
{
UINT uiAccountDBID;
int nDungeonClearCount;
#if defined(PRE_ADD_GAMEQUIT_REWARD)
GameQuitReward::RewardType::eType eUserGameQuitRewardType;
#endif // #if defined(PRE_ADD_GAMEQUIT_REWARD)
#if defined(PRE_ADD_REMOTE_QUEST)
int nAcceptWaitRemoteQuestCount;
int AcceptWaitRemoteQuestList[MAX_PLAY_QUEST];
#endif
};
struct GAMADuplicateLogin
{
UINT nAccountDBID;
UINT nSessionID;
bool bIsDetach;
};
#pragma pack(pop)