Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
329 lines
7.4 KiB
C
329 lines
7.4 KiB
C
#ifndef _CHAR_COMMUNITY_PACKET_H_
|
|
#define _CHAR_COMMUNITY_PACKET_H_
|
|
|
|
// CharCommunityPacket.h
|
|
// DBDefine필요.
|
|
|
|
#include <Network/Packet/PacketBase.h>
|
|
#include <Network/Packet/PacketStruct/DataPacket.h>
|
|
#include <Network/Packet/PacketStruct/CharItemPacketStruct.h>
|
|
|
|
#include "AddressPacket.h"
|
|
#include "CharCommunityPacketStruct.h"
|
|
|
|
#pragma pack(1)
|
|
|
|
// 파티 생성
|
|
typedef struct PktPI* LPPktPI;
|
|
struct PktPI : public PktBase
|
|
{
|
|
PARTY m_Party;
|
|
};
|
|
|
|
|
|
// 파티 명령
|
|
//
|
|
// 명령 :
|
|
// 0 = 초대, 1 = 가입, 2 = 거절
|
|
// 3 = 퇴장, 4 = 탈퇴, 5 = 양도
|
|
// 6 = 파괴, 7 = 로그인, 8 = 로그아웃
|
|
// 9 = 삭제(캐릭터), 10 = 재로그인,
|
|
// 11 = 파티찾기, 12 = 멤버찾기
|
|
//
|
|
// 에러 :
|
|
// 1 = 서버 에러, 2 = 이미 파티에 가입되어 있는 경우, 3 = 가입 실패
|
|
// 4 = 퇴장 실패, 5 = 탈퇴 실패, 6 = 양도 실패, 7 = 파티 인원 초과,
|
|
// 8 = 초대 실패, 9 = 거부 옵션을 켠 상태
|
|
//
|
|
typedef struct PktPC* LPPktPC;
|
|
struct PktPC : public PktBase
|
|
{
|
|
enum PartyCmd
|
|
{
|
|
PC_INVITE = 0, PC_ACCEPT = 1, PC_REFUSE = 2,
|
|
PC_BANISH = 3, PC_SECESSION = 4, PC_TRANSFER = 5,
|
|
PC_DESTROY = 6, PC_LOGIN = 7, PC_LOGOUT = 8,
|
|
PC_DELETE = 9, PC_RELOGIN = 10, PC_FINDPARTY = 11,
|
|
PC_FINDMEMBER = 12
|
|
};
|
|
|
|
enum PktPCError
|
|
{
|
|
SERVER_ERROR = 1, CHAR_JOINED = 2, FAIL_ACCEPT = 3,
|
|
FAIL_BANISH = 4, FAIL_SECESSION = 5, FAIL_TRANSFER = 6,
|
|
OVER_MEMBER = 7, FAIL_INVITE = 8, FAIL_REJECT = 9
|
|
};
|
|
|
|
unsigned long m_dwPartyID; // 파티 아이디
|
|
unsigned long m_dwSenderID; // 캐릭터 아이디(주체)
|
|
unsigned long m_dwReferenceID; // 참조 아이디(대상 캐릭터/서버 아이디)
|
|
unsigned short m_wCmd; // 명령
|
|
};
|
|
|
|
//
|
|
// 파티 명령 Ack
|
|
//
|
|
// 명령 :
|
|
// 0 = 초대, 1 = 가입, 2 = 거절
|
|
// 3 = 퇴장, 4 = 탈퇴, 5 = 양도
|
|
// 6 = 파괴, 7 = 로그인, 8 = 로그아웃
|
|
// 9 = 삭제(캐릭터)
|
|
//
|
|
// 에러 :
|
|
// 1 = 서버 에러, 2 = 이미 파티에 가입되어 있는 경우, 3 = 가입 실패
|
|
// 4 = 퇴장 실패, 5 = 탈퇴 실패, 6 = 양도 실패, 7 = 파티 인원 초과
|
|
//
|
|
typedef struct PktPCAck* LPPktPCAck;
|
|
struct PktPCAck : public PktBase
|
|
{
|
|
enum PartyCmd
|
|
{
|
|
PC_INVITE = 0, PC_ACCEPT = 1, PC_REFUSE = 2,
|
|
PC_BANISH = 3, PC_SECESSION = 4, PC_TRANSFER = 5,
|
|
PC_DESTROY = 6, PC_LOGIN = 7, PC_LOGOUT = 8,
|
|
PC_DELETE = 9
|
|
};
|
|
|
|
enum PktPCErrorAck
|
|
{
|
|
SERVER_ERROR = 1, CHAR_JOINED = 2, FAIL_ACCEPT = 3,
|
|
FAIL_BANISH = 4, FAIL_SECESSION = 5, FAIL_TRANSFER = 6,
|
|
OVER_MEMBER = 7, FAIL_INVITE = 8
|
|
};
|
|
|
|
AddressInfo m_SenderAddressInfo; // Sender의 주소
|
|
char m_strSenderName[CHAR_INFOST::MAX_NAME_LEN]; // Sender의 이름
|
|
|
|
unsigned long m_dwPartyID; // 파티 아이디
|
|
unsigned long m_dwSenderID; // 캐릭터 아이디(주체)
|
|
unsigned long m_dwReferenceID; // 참조 아이디(대상 캐릭터/서버 아이디)
|
|
unsigned char m_cCmd; // 명령
|
|
};
|
|
|
|
//
|
|
// 파티 정보
|
|
//
|
|
// 명령 :
|
|
// 0 = 초대, 1 = 가입, 2 = 거절
|
|
// 3 = 퇴장, 4 = 탈퇴, 5 = 양도
|
|
// 6 = 파괴, 7 = 로그인, 8 = 로그아웃
|
|
// 9 = 삭제(캐릭터)
|
|
//
|
|
// 에러 :
|
|
// 1 = 서버 에러, 2 = 이미 파티에 가입되어 있는 경우, 3 = 가입 실패
|
|
// 4 = 퇴장 실패, 5 = 탈퇴 실패, 6 = 양도 실패, 7 = 파티 인원 초과
|
|
//
|
|
typedef struct PktPCInfo* LPPktPCInfo;
|
|
struct PktPCInfo : public PktBase
|
|
{
|
|
enum PartyCmd
|
|
{
|
|
PC_INVITE = 0, PC_ACCEPT = 1, PC_REFUSE = 2,
|
|
PC_BANISH = 3, PC_SECESSION = 4, PC_TRANSFER = 5,
|
|
PC_DESTROY = 6, PC_LOGIN = 7, PC_LOGOUT = 8,
|
|
PC_DELETE = 9
|
|
};
|
|
|
|
enum PktPCInfoError
|
|
{
|
|
SERVER_ERROR = 1, CHAR_JOINED = 2, FAIL_ACCEPT = 3,
|
|
FAIL_BANISH = 4, FAIL_SECESSION = 5, FAIL_TRANSFER = 6,
|
|
OVER_MEMBER = 7, FAIL_INVITE = 8
|
|
};
|
|
|
|
unsigned long m_dwPartyID; // 파티 ID
|
|
unsigned long m_dwMemberID; // 멤버 ID
|
|
unsigned char m_cCmd; // 명령
|
|
};
|
|
|
|
|
|
// 파티 멤버 데이터 (+ 가변길이 데이터)
|
|
typedef struct PktMD* LPPktMD;
|
|
struct PktMD : public PktBase
|
|
{
|
|
unsigned long m_dwCharID; // 캐릭터 아이디
|
|
unsigned short m_wCmd; // 서브 명령
|
|
unsigned short m_wLen; // 길이
|
|
};
|
|
|
|
|
|
// 파티 멤버 정보
|
|
typedef struct PktPM* LPPktPM;
|
|
struct PktPM : public PktBase
|
|
{
|
|
SOCKADDR_IN m_PublicAddress;
|
|
SOCKADDR_IN m_PrivateAddress;
|
|
|
|
unsigned long m_dwCharID; // 캐릭터 아이디
|
|
unsigned long m_dwPartyID; // 파티 아이디
|
|
|
|
unsigned long m_dwChant; // 챈트 상태
|
|
unsigned long m_dwEnchant; // 인챈트 상태
|
|
|
|
unsigned short m_wMaxHP; // 최대 HP
|
|
unsigned short m_sCurrHP; // 현재 HP
|
|
unsigned short m_wMaxMP; // 최대 MP
|
|
unsigned short m_sCurrMP; // 현재 MP
|
|
|
|
unsigned char m_cClass; // 캐릭터 클래스
|
|
unsigned char m_cLevel; // 캐릭터 레벨
|
|
};
|
|
|
|
// 파티 찾기
|
|
typedef struct PktPF* LPPktPF;
|
|
struct PktPF : public PktBase
|
|
{
|
|
unsigned long m_dwCharID;
|
|
};
|
|
|
|
// 파티 찾기 Ack
|
|
typedef struct PktPFAck* LPPktPFAck;
|
|
struct PktPFAck : public PktBase
|
|
{
|
|
enum { MAX_LIST = 30, MAX_DIFF_LEVEL_VIEW = 5 };
|
|
|
|
unsigned long m_dwCharID; // 캐릭터 아이디
|
|
unsigned char m_cMemberFindPartyNum; // 파티 찾기 리스트 수
|
|
unsigned char m_cPartyFindMemberNum; // 파티원 찾기 리스트 수
|
|
};
|
|
|
|
// 캐릭터 명성(공헌도) 정보
|
|
typedef struct PktFI* LPPktFI;
|
|
struct PktFI : public PktBase
|
|
{
|
|
enum InfoKind
|
|
{
|
|
NONE = 0,
|
|
FAME = 1,
|
|
MERITS = 2
|
|
};
|
|
|
|
unsigned long m_dwCharID; // 캐릭터 아이디
|
|
unsigned char m_cInfoKind; // 정보 종류
|
|
};
|
|
|
|
|
|
// 캐릭터 명성(공헌도) 정보 Ack
|
|
typedef struct PktFIAck* LPPktFIAck;
|
|
struct PktFIAck : public PktBase
|
|
{
|
|
enum InfoKind
|
|
{
|
|
NONE = 0,
|
|
FAME = 1,
|
|
MERITS = 2
|
|
};
|
|
|
|
unsigned long m_dwCharID; // 캐릭터 아이디
|
|
unsigned long m_dwFameOrMerits; // 현재 명성(또는 공헌도)
|
|
unsigned char m_cRankingByRace; // 종족별 순위
|
|
unsigned char m_cRankingByClass; // 클래스별 순위
|
|
unsigned char m_cInfoKind; // 정보 종류
|
|
};
|
|
|
|
// 옵션 조정
|
|
typedef struct PktCOp* LPPktCOp;
|
|
struct PktCOp : public PktBase
|
|
{
|
|
unsigned long m_dwCharID; // 캐릭터 아이디
|
|
RejectOption m_RejectOption; // 거부 옵션 비트셑
|
|
};
|
|
|
|
// 캐릭터 채팅 패킷.
|
|
typedef struct PktCt* LPPktCt;
|
|
struct PktCt : public PktBase
|
|
{
|
|
enum PktCtCmd
|
|
{
|
|
NORMAL = 0, PARTY = 1,
|
|
FRIEND = 2, GUILD = 3,
|
|
NOTICE = 4, CLIENT_LOG = 5,
|
|
STALL = 6,
|
|
|
|
PktCtMaxSize = 180
|
|
};
|
|
|
|
unsigned long m_dwCharID;
|
|
unsigned short m_sCmd;
|
|
};
|
|
|
|
// 캐릭터 속삭임 패킷.
|
|
typedef struct PktWh* LPPktWh;
|
|
struct PktWh : public PktBase
|
|
{
|
|
enum
|
|
{
|
|
SERVER_ERROR = 1,
|
|
FAIL_CHAR_LOGOUT = 2,
|
|
FAIL_REJECT = 3,
|
|
FAIL_ENEMY = 4,
|
|
|
|
PktWhMaxSize = 180
|
|
};
|
|
|
|
char m_SenderName[CHAR_INFOST::MAX_NAME_LEN];
|
|
char m_RecverName[CHAR_INFOST::MAX_NAME_LEN];
|
|
};
|
|
|
|
// 캐릭터 노점상 개설 패킷.
|
|
typedef struct PktStO* LPPktStO;
|
|
struct PktStO : public PktBase
|
|
{
|
|
enum { MAX_STALL_NAME_LEN = 32 };
|
|
|
|
unsigned long m_dwCharID;
|
|
char m_StallName[MAX_STALL_NAME_LEN];
|
|
};
|
|
|
|
// 캐릭터 노점상 물건 등록 패킷.
|
|
typedef struct PktStRI* LPPktStRI;
|
|
struct PktStRI : public PktBase
|
|
{
|
|
enum PktStRICmd
|
|
{
|
|
SC_REGISTER = 0,
|
|
SC_CHANGEPRICE = 1,
|
|
SC_CANCEL = 2
|
|
};
|
|
|
|
enum PktStRIEErr
|
|
{
|
|
SUCCESS = 0,
|
|
SERVER_ERROR = 1,
|
|
FAIL_NOT_ITEM = 2
|
|
};
|
|
|
|
unsigned long m_dwCharID;
|
|
TakeType m_TakeType;
|
|
unsigned long m_dwPrice;
|
|
unsigned char m_cCmd;
|
|
};
|
|
|
|
// 캐릭터 노점상 입장 패킷.
|
|
typedef struct PktStE* LPPktStE;
|
|
struct PktStE : public PktBase
|
|
{
|
|
enum PktStEErr
|
|
{
|
|
SUCCESS = 0,
|
|
SERVER_ERROR = 1,
|
|
FAIL_FULL_STALL = 2,
|
|
FAIL_ENTER = 3,
|
|
FAIL_LEAVE = 4
|
|
};
|
|
|
|
unsigned long m_dwCustomerID;
|
|
unsigned long m_dwOwnerID;
|
|
};
|
|
|
|
// 캐릭터 노점상 아이템 정보 패킷.
|
|
typedef struct PktStIInfo* LPPktStIInfo;
|
|
struct PktStIInfo : public PktBase
|
|
{
|
|
unsigned long m_dwItemSize;
|
|
unsigned short m_wItemNum;
|
|
};
|
|
|
|
#pragma pack()
|
|
|
|
#endif |