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>
1792 lines
47 KiB
C++
1792 lines
47 KiB
C++
#ifndef _RYL_ADMIN_MGR_PROTOCOL_H_
|
|
#define _RYL_ADMIN_MGR_PROTOCOL_H_
|
|
|
|
#include <Network/Packet/PacketBase.h>
|
|
#include <DB/DBDefine.h>
|
|
#include <atlcomtime.h>
|
|
#include <Item/Item.h>
|
|
#include <Creature/Siege/Camp.h>
|
|
#include <Community/Guild/GuildConstants.h>
|
|
|
|
#pragma pack( 1 )
|
|
|
|
namespace PktAgentServer
|
|
{
|
|
namespace PktCMD
|
|
{
|
|
enum CMD
|
|
{
|
|
CmdSysServerLogin = 0x28, // 시스템 서버 로그인
|
|
CmdAdminToolGetData = 0x76, // 운영툴에서 DBAgent의 데이터 얻어 오기.
|
|
CmdAdminToolSetData = 0x77, // 캐릭터 저장
|
|
};
|
|
};
|
|
|
|
struct PktSL : public PktBase
|
|
{
|
|
unsigned long m_dwServerID;
|
|
IN_ADDR m_Address;
|
|
};
|
|
|
|
// 어드민 툴에 데이터 업데이트하기.
|
|
struct PktAdminToolGetData : public PktBase
|
|
{
|
|
enum GetDataType
|
|
{
|
|
// DB중계 -> 운영서버
|
|
CHAR_BASIC_DATA = 10, // 캐릭터 정보. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOST 캐릭터 기본 정보
|
|
// CHAR_POS 캐릭터 위치 정보
|
|
// SKILL 캐릭터 스킬 정보
|
|
// QUICK 캐릭터 퀵 슬롯
|
|
// EQUIP 캐릭터 장비
|
|
// INVEN 캐릭터 인벤
|
|
// EXTRA 캐릭터 여분
|
|
// EXCHANGE 캐릭터 교환
|
|
|
|
CHAR_EXTRA_DATA = 11, // 캐릭터 추가 정보들. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOEX 캐릭터 추가 정보
|
|
// QUEST 퀘스트
|
|
// HISTORY 히스토리
|
|
// CONFIG 설정
|
|
// STORE_INFO 창고 정보
|
|
|
|
CHAR_FRIEND_DATA = 12, // 캐릭터 친구 정보
|
|
CHAR_BAN_DATA = 13, // 캐릭터 거부 정보
|
|
|
|
STORE_12_DATA = 14, // 창고 1, 2탭 데이터
|
|
STORE_34_DATA = 15, // 창고 3, 4탭 데이터
|
|
|
|
FINISH_GET_DATA = 19, // DB중계에서 운영서버로 데이터를 전부 보냈음.
|
|
|
|
// 운영서버 -> DB중계
|
|
GET_CHAR_DATA = 20, // 캐릭터 데이터 요청 패킷
|
|
|
|
CHANGE_CHAR_NAME = 30 // 캐릭터 이름 바꾸기
|
|
};
|
|
|
|
enum GetError
|
|
{
|
|
UNKNOWN_ERROR = 1, // 알 수 없는 에러
|
|
INVALID_REQUEST = 2, // 잘못된 데이터 패킷
|
|
|
|
GET_UIDCID_QUERY_FAILED = 3, // DB에서 이름으로 UID, CID를 얻어오는 데 실패했다.
|
|
INVALID_UID_CID_DATA = 4, // DB에서 이름으로 얻어온 UID, CID데이터가 이상하다.
|
|
|
|
GET_STORE_QUERY_FAILED = 5, // DB에서 창고 데이터를 얻어오는 데 실패했다.
|
|
GET_CHAR_DATA_QUERY_FAILED = 6 // DB에서 캐릭터 데이터를 얻어오는 데 실패했다.
|
|
};
|
|
|
|
char m_szName[CHAR_INFOST::MAX_NAME_LEN];
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktAdminToolGetDataAck : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
// 어드민 툴에서 데이터 업데이트하기. (뒤에 데이터를 넣음)
|
|
struct PktAdminToolSetData : public PktBase
|
|
{
|
|
enum SetDataType
|
|
{
|
|
CHAR_BASIC_DATA = 10, // 캐릭터 정보. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOST 캐릭터 기본 정보
|
|
// CHAR_POS 캐릭터 위치 정보
|
|
// SKILL 캐릭터 스킬 정보
|
|
// QUICK 캐릭터 퀵 슬롯
|
|
// EQUIP 캐릭터 장비
|
|
// INVEN 캐릭터 인벤
|
|
// EXTRA 캐릭터 여분
|
|
// EXCHANGE 캐릭터 교환
|
|
|
|
CHAR_EXTRA_DATA = 11, // 캐릭터 추가 정보들. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOEX 캐릭터 추가 정보
|
|
// QUEST 퀘스트
|
|
// HISTORY 히스토리
|
|
// CONFIG 설정
|
|
// STORE_INFO 창고 정보
|
|
|
|
CHAR_FRIEND_DATA = 12, // 캐릭터 친구 정보
|
|
CHAR_BAN_DATA = 13, // 캐릭터 거부 정보
|
|
|
|
STORE_12_DATA = 14, // 창고 1, 2탭 데이터
|
|
STORE_34_DATA = 15, // 창고 3, 4탭 데이터
|
|
|
|
OPEN_UPDATE_DATA = 20, // 세션을 열고 DB에 업데이트하려 시도한다.
|
|
FINISH_UPDATE_DATA = 21, // 데이터를 DB에 업데이트하고 세션을 닫는다.
|
|
|
|
RELOAD_ADMINLIST = 30
|
|
};
|
|
|
|
enum SetError
|
|
{
|
|
UNKNOWN_ERROR = 1, // 알 수 없는 에러.
|
|
INVALID_UID_CID_ERROR = 2, // 알 수 없는 UID/CID
|
|
LOGIN_ANOTHER_GAMESERVER = 3, // 다른 게임 서버에 로그인 해 있어서 업데이트 불가.
|
|
|
|
SESSION_OPEN_FAILED = 4, // 세션 열기 실패
|
|
ALREADY_LOGIN_USER_SESSION_OPEN = 5, // 이미 로그인 되어 있는 유저 세션을 열려고 했음
|
|
ANOTHER_CHAR_LOAD_FAILED = 6, // 캐릭터 정보를 DB에서 읽어오는 데 실패
|
|
SETTING_DATA_FAILED = 7, // 데이터 세팅 실패 (데이터 길이등이 맞지 않음)
|
|
SESSION_START_FAILED = 8 // 세션 시작 실패.
|
|
};
|
|
|
|
unsigned __int64 m_dwSerial;
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktAdminToolSetDataAck : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
};
|
|
};
|
|
|
|
namespace PktAdminMgr
|
|
{
|
|
enum MAX_LENGEH
|
|
{
|
|
MAX_ACCOUNT = 40,
|
|
MAX_PASSWORD = 40,
|
|
MAX_NAME = 20,
|
|
MAX_IP = 16,
|
|
MAX_DATE = 11,
|
|
MAX_IPBUFFER = 64,
|
|
MAX_BEFORE = 200,
|
|
MAX_AFTER = 200,
|
|
MAX_ITEM_NAME = 64,
|
|
MAX_TIME = 20,
|
|
MAX_CHARNAME = 16,
|
|
MAX_LOG = 200,
|
|
MAX_ITEM_BUFFER = 8000
|
|
};
|
|
|
|
namespace PktCMD
|
|
{
|
|
enum Type
|
|
{
|
|
PktResultAck = 1,
|
|
PktLogin = 2,
|
|
PktNewAdmin = 3,
|
|
PktNewAdminAck = 3,
|
|
PktAdminList = 4,
|
|
PktAdminListAck = 4,
|
|
PktDelAdmin = 5,
|
|
PktDelAdminAck = 5,
|
|
PktUpdateLevel = 6,
|
|
PktUpdateLevelAck = 6,
|
|
PktUpdateIP = 7,
|
|
PktUpdateIPAck = 7,
|
|
PktUpdatePasswd = 8,
|
|
PktLoginInfoAck = 9,
|
|
PktLogList = 10,
|
|
PktLogListAck = 10,
|
|
PktLogUseMessage = 11,
|
|
PktDetailLog = 12,
|
|
PktDetailLogAck = 12,
|
|
PktGetExitLogAck = 13,
|
|
PktBeforeAfter = 14,
|
|
PktBeforeAfterAck = 14,
|
|
PktSearchID = 15,
|
|
PktSearchResultAck = 15,
|
|
PktSearchName = 16,
|
|
PktSearchAck = 16,
|
|
PktAgentServerIndex = 17,
|
|
PktGetCharacter = 18,
|
|
PktGetCharacterAck = 18,
|
|
PktSetCharacter = 19,
|
|
PktCloseCharacter = 20,
|
|
PktCloseCharacterAck = 20,
|
|
PktUpdateStatus = 21,
|
|
PktCreateItem = 22,
|
|
PktCreateItemAck = 22,
|
|
PktUpdateItem = 23,
|
|
PktUpdateItemAck = 23,
|
|
PktRemoveItem = 24,
|
|
PktRemoveItemAck = 24,
|
|
PktDepositSync = 25,
|
|
PktItemReset = 26,
|
|
PktItemResetAck = 26,
|
|
PktInvenGold = 27,
|
|
PktInvenGoldAck = 27,
|
|
PktSkillEdit = 28,
|
|
PktSkillEditAck = 28,
|
|
PktAddBlockUser = 29,
|
|
PktSearchBlock = 30,
|
|
PktSearchBlockAck = 30,
|
|
PktChangePos = 31,
|
|
PktSetZoneList = 32,
|
|
PktSetZoneListAck = 32,
|
|
PktDepositPasswd = 33,
|
|
PktCheckName = 34,
|
|
PktChangeName = 35,
|
|
PktChangeNameAck = 35,
|
|
PktDelCharList = 36,
|
|
PktDelCharListAck = 36,
|
|
PktCharRestore = 37,
|
|
PktCharRestoreAck = 37,
|
|
PktAdminStoreInsert = 38,
|
|
PktAdminStoreInsertAck = 38,
|
|
PktAdminStoreDelete = 39,
|
|
PktAdminStoreDeleteAck = 39,
|
|
PktGetAdminStoreItem = 40,
|
|
PktGetAdminStoreItemAck = 40,
|
|
PktUpdateAdminStore = 41,
|
|
PktDelCharacter = 42,
|
|
PktDelCharacterAck = 42,
|
|
PktForcedDis = 43,
|
|
PktGuildSearch = 44,
|
|
PktGuildSearchAck = 44,
|
|
PktRequestGuildMemberList = 45,
|
|
PktRequestGuildMemberListAck = 45,
|
|
PktGuildRestoreDataList = 46,
|
|
PktGuildRestoreDataListAck = 46,
|
|
PktItemQtyControl = 47,
|
|
PktStoreGoldUpdate = 48,
|
|
PktUserBillingLog = 49,
|
|
PktUserBillingLogAck = 49,
|
|
PktGameAdmin = 50,
|
|
PktGameAdminAck = 50,
|
|
PktConnectAllServerz = 51,
|
|
PktRefreshConnectedList = 52,
|
|
PktInterestedUser = 53,
|
|
PktConnectionChk = 54,
|
|
PktConnectedUserList = 55,
|
|
PktDuplicatedItem = 56,
|
|
PktItemDistribute = 57,
|
|
PktItemDistributeAck = 57,
|
|
PktDelBlockUser = 58,
|
|
PktGuildRight = 59,
|
|
PktUnifiedCharInfo = 60,
|
|
PktUnifiedGuildInfo = 61,
|
|
PktDetailCharInfo = 62,
|
|
PktCancelExecuteQuest = 63,
|
|
PktDeleteHistoryQuest = 64,
|
|
PktUserNation = 65,
|
|
PktShiftToUID = 66,
|
|
PktStoreTabEdit = 67,
|
|
PktAmountOfGold = 68,
|
|
PktGMLogMsg = 69,
|
|
PktNameChangeCount = 70,
|
|
PktGuildMemberEdit = 71,
|
|
PktGetCharInfoTime = 72,
|
|
PktGetCharInfoTimeAck = 73,
|
|
PktFortSearch = 74,
|
|
PktFortSearchAck = 75,
|
|
PktMiningCamp = 76,
|
|
PktMiningCampAck = 77,
|
|
PktShopCamp = 78,
|
|
PktShopCampAck = 79,
|
|
PktShopCampGold = 80,
|
|
PktShopCampTax = 81,
|
|
PktCastleSearch = 82,
|
|
PktCastleSearchAck = 83,
|
|
PktCastleCreature = 84,
|
|
PktCastleCreatureAck = 84,
|
|
|
|
PktEnd
|
|
};
|
|
};
|
|
|
|
namespace PktResult
|
|
{
|
|
const unsigned char Result_Null = 0x00; // 걍 NULL ㅡ.ㅡ;
|
|
const unsigned char Err_Unknown = 0x01; // 알수 없는 오류
|
|
const unsigned char Err_Database = 0x02; // 데이터 베이스 오류
|
|
const unsigned char Err_Account = 0x03; // 로그인 (등록되어 있지 않은 Account)
|
|
const unsigned char Err_Passwd = 0x04; // 로그인 (비밀번호가 다르다)
|
|
const unsigned char Err_ConnectIP = 0x05; // 로그인 아이피 체크 (접속 IP가 다르다)
|
|
const unsigned char Err_OverlapID = 0x06; // 이미 사용중인 ID
|
|
const unsigned char Err_NewAdmin = 0x07; // ID생성 과정 중 비어있는 값이 있다.
|
|
const unsigned char Err_DelAdmin = 0x08; // 계정 삭제 오류 (존재하지 않는 ID거나 DB오류)
|
|
const unsigned char Err_UpdateLevel = 0x09; // 레벨 변경중 오류
|
|
const unsigned char Err_UpdateIP = 0x0a; // 아이피 변경중 오류
|
|
const unsigned char Err_UpdatePasswd = 0x0b; // 패스워드 변경중 오류
|
|
const unsigned char Err_Authority = 0x0c; // 사용 권한이 없다...
|
|
const unsigned char Err_UnkonwnPacket = 0x0d; // 알수없는 패킷 CMD를 받았습니다.
|
|
const unsigned char Err_ModifyCharacter = 0x0e; // 현제 에디팅중인 케릭터 입니다.
|
|
const unsigned char Err_NotFountDBComponent = 0x0f; // 선택한 서버그룹의 DBComponent를 찾을수없습니다.
|
|
const unsigned char Err_CloseCharacter = 0x10; // 케릭터 독점권해지 오류
|
|
const unsigned char Err_ChangeStatus = 0x11; // 케릭터 Status정보 수정 실패 ( Status수치오류 )
|
|
const unsigned char Err_PacketDispatch = 0x12; // 패킷에 잘못된 데이터가 들어간것같습니다.
|
|
const unsigned char Err_CreateItem1 = 0x13; // 아이템또는 캐릭터를 찾을수 없습니다.
|
|
const unsigned char Err_CreateItem2 = 0x14; // 아이템을 만드는데 실패했습니다.
|
|
const unsigned char Err_CreateItem3 = 0x15; // 아이템을 장착하는데 실패했습니다.
|
|
|
|
// 중계 서버 에러 메세지 ----------------------------------------------------------------------------------------------------------------------
|
|
const unsigned char UNKNOWN_ERROR = 0x16; // AgentServer(GetData) 알수없는 에러
|
|
const unsigned char INVALID_REQUEST = 0x17; // AgentServer(GetData) 잘못된 데이터 패킷
|
|
const unsigned char GET_UIDCID_QUERY_FAILED = 0x18; // AgentServer(GetData) DB에서 이름으로 UID, CID를 얻어오는데 실패했습니다
|
|
const unsigned char INVALID_UID_CID_DATA = 0x19; // AgentServer(GetData) DB에서 이름으로 어더온 UID, CID데이터가 이상합니다.
|
|
const unsigned char GET_STORE_QUERY_FAILED = 0x1a; // AgentServer(GetData) DB에서 창고 데이터를 얻어오는데 실패했습니다.
|
|
const unsigned char GET_CHAR_DATA_QUERY_FAILED = 0x1b; // AgentServer(GetData) DB에서 케릭터 데이터를 얻어오는데 실패했습니다.
|
|
const unsigned char INVALID_UID_CID_ERROR = 0x1c; // AgentServer(SetData) 알수없는 UID/CID
|
|
const unsigned char LOGIN_ANOTHER_GAMESERVER = 0x1d; // AgentServer(SetData) 다른 게임 서버에 로그인 해 있어서 업데이트 불가.
|
|
const unsigned char SESSION_OPEN_FAILED = 0x1e; // AgentServer(SetData) 세션 열기 실패
|
|
const unsigned char ALREADY_LOGIN_USER_SESSION_OPEN = 0x1f; // AgentServer(SetData) 이미 로그인 되어 있는 유저 세션을 열려고 했음
|
|
const unsigned char ANOTHER_CHAR_LOAD_FAILED = 0x20; // AgentServer(SetData) 캐릭터 정보를 DB에서 읽어오는데 실패
|
|
const unsigned char SETTING_DATA_FAILED = 0x21; // AgentServer(SetData) 데이터 세팅 실패 ( 데이터 길이등이 맞지 않음 )
|
|
const unsigned char SESSION_START_FAILED = 0x22; // AgentServer(SetData) 세션 시작 실패
|
|
// --------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
const unsigned char Err_Invalid_ItemID = 0x23; // 아이템 식별번호가 일치하지 않습니다.
|
|
const unsigned char Err_Invalid_Item = 0x24; // 아이템이 존재하지 않습니다.
|
|
const unsigned char Err_Invalid_Character = 0x25; // 캐릭터가 존재하지 않습니다.
|
|
const unsigned char Err_RemoveItem = 0x26; // 캐릭터 아이템을 지우는데 실패했습니다.
|
|
const unsigned char Err_NotUseDeposit = 0x27; // 창고 아이템을 수정할 수없다 소유권이 없습니다.
|
|
const unsigned char Err_NotFoundAgentDispatch = 0x28; // 선택한 서버그룹의 AgentDispatch를 찾을수 없습니다.
|
|
const unsigned char Err_StateisSave = 0x29; // 선택한 캐릭터의 UID에 걸려있는 다른캐릭터가 창고정보를 업데이트 중입니다. 2 ~ 5초후 다시 시도해주세요.
|
|
const unsigned char Err_SetInventoryGold = 0x2a; // 인벤토리 골드를 변경하는데 실패했습니다.
|
|
const unsigned char Err_SkipCharacterSave = 0x2b; // 캐릭터 저장요청이 무시됐습니다 (변경된 정보없음 OR 현재 저장중인 캐릭터)
|
|
const unsigned char Err_SkillEdit = 0x2c; // 스킬 관리 실패
|
|
const unsigned char Err_DepositPasswd = 0x2d; // 창고 패스워드 변경 실패.
|
|
const unsigned char Err_NotUseName = 0x2e; // 사용할 수 없는 캐릭터 이름입니다.
|
|
const unsigned char Err_NotChangeName = 0x2f; // 캐릭터 이름 변경 실패.
|
|
const unsigned char Err_NotCharacterInfo = 0x30; // 캐릭터복구 시도 중 해당 캐릭터 정보가 존재하지 않습니다.
|
|
const unsigned char Err_NotUserInfoSlot = 0x31; // 캐릭터복구 시도 중 해당 UID에 캐릭터를 더이상 추가할수 없습니다.
|
|
const unsigned char Err_AdminStore = 0x32; // 관리자 창고에 아이템을 추가하는데 실패했습니다.
|
|
const unsigned char Err_AdminStoreDelete = 0x33; // 관리자 창고에서 아이템을 삭제하는데 실패했습니다.
|
|
const unsigned char Err_GameAdminManage = 0x34; // 게임 운영자 관리 실패 (ExecuteQuery 실패)
|
|
const unsigned char Err_InterestedUserManage = 0x35; // 관심유저 관리 실패
|
|
const unsigned char Err_NOT_ENOUGH_STAT = 0x36; // 스킬 관리 실패 (스탯이 부족합니다)
|
|
const unsigned char Err_NOT_ENOUGH_SKILLSLOT = 0x37; // 스킬 관리 실패 (스킬 슬롯이 부족합니다. 스킬슬롯은 최대 20개)
|
|
const unsigned char Err_FAILED_TO_GET_SKILLPROTOTYPE = 0x38; // 스킬 관리 실패 (스킬 프로토 타입 얻기 실패. 스킬 스크립트를 확인하십시요.)
|
|
const unsigned char Err_OVERED_MAX_LOCKCOUNT = 0x39; // 스킬 관리 실패 (최대 락 카운트를 초과했습니다.)
|
|
const unsigned char Err_OVERED_MAX_SKILL_LEVEL = 0x3a; // 스킬 관리 실패 (최대 스킬 레벨을 초과했습니다.)
|
|
const unsigned char Err_NOT_CURRENT_CLASS = 0x3b; // 스킬 관리 실패 (현재 클래스가 익힐 수 없는 스킬입니다.)
|
|
const unsigned char Err_DeleteQuest = 0x3c; // 퀘스트 삭제 실패
|
|
const unsigned char Err_AddBlockUser = 0x3d; // 블럭 추가 실패
|
|
const unsigned char Err_DelBlockUser = 0x3e; // 블럭 해제 실패
|
|
|
|
const unsigned char Success_Login = 0x64; // 로그인 성공
|
|
const unsigned char Success_ConnectIP = 0x65; // 로그인 아이피 체크( 접속 IP체크 성공 )
|
|
const unsigned char Success_NewAdmin = 0x66; // 새로운 계정생성 성공
|
|
const unsigned char Success_SearchCompleted = 0x67; // 검색에 대한 처리가 완료됬다.
|
|
const unsigned char Success_ModifyCharacter = 0x68; // 에디팅 요청 성공
|
|
const unsigned char Success_ChangeStatus = 0x69; // 캐릭터 Status정보 수정 성공
|
|
const unsigned char Success_ChangePos = 0x6a; // 캐릭터 위치및 존이동이 성공했습니다.
|
|
const unsigned char Success_DepositPasswd = 0x6b; // 창고 패스워드 변경 성공.
|
|
const unsigned char Success_UseName = 0x6c; // 사용할 수 있는 캐릭터 이름입니다.
|
|
const unsigned char Success_CharacterRestore = 0x6d; // 캐릭터 복구 성공
|
|
const unsigned char Success_AdminStore = 0x6e; // 관리자 창고에 아이템을 추가하는데 성공했습니다.
|
|
const unsigned char Success_UpdateAdminStore = 0x6f; // 관리자 창고 아이템 정보변경 성공.
|
|
const unsigned char Success_SaveCharacter = 0x70; // 캐릭터 저장 성공
|
|
const unsigned char Success_ChkDuplicatedItem = 0x71; // 중복 아이템 처리 성공
|
|
const unsigned char Success_SUCCESS = 0x72; // 스킬 관리 성공
|
|
const unsigned char Success_DeleteQuest = 0x73; // 퀘스트 삭제 성공
|
|
const unsigned char Success_StoreTabEdit = 0x74; // 창고 탭 수정 성공
|
|
const unsigned char Success_AddBlockUser = 0x75; // 블럭 추가 성공
|
|
const unsigned char Success_DelBlockUser = 0x76; // 블럭 해제 성공
|
|
const unsigned char Success_NameChangeCount = 0x77; // 캐릭명 변경 기회 수정 성공
|
|
};
|
|
|
|
namespace AuthorityMask
|
|
{
|
|
// 패킷사용권한 마스크 테이블 (Ack가 아닌 Req전용)
|
|
extern unsigned char AdminAuthority[PktCMD::PktEnd];
|
|
|
|
// 권한이 4개이며 총 4비트 사용
|
|
const unsigned char DEVELOPER = 0x01;
|
|
const unsigned char MASTER = 0x02;
|
|
const unsigned char GM = 0x04;
|
|
const unsigned char SUPPORTER = 0x08;
|
|
|
|
const unsigned char QUEST_MODE = 0x00; // 인증 전에 사용할 수 있는 권한
|
|
const unsigned char FREE_MODE = 0x0f; // 권한 체크 무조건 통과
|
|
};
|
|
|
|
struct PktResultAck : public PktBase
|
|
{
|
|
unsigned char m_Result;
|
|
};
|
|
|
|
struct PktLogin : public PktBase
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
char m_szPasswd [MAX_PASSWORD];
|
|
};
|
|
|
|
struct PktNewAdmin : public PktBase
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
char m_szPasswd[MAX_PASSWORD];
|
|
char m_szName[MAX_NAME];
|
|
char m_szIP[MAX_IP];
|
|
unsigned char m_szLev;
|
|
};
|
|
|
|
struct PktAdminListAck : public PktBase // 등록되어있는 계정목록이닷
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT]; // ID
|
|
char m_szName[MAX_NAME]; // 관리자 이름
|
|
char m_szIP[MAX_IP]; // 관리자 접속IP
|
|
char m_szDate[MAX_DATE]; // 관리자 등록일
|
|
unsigned char m_szLevel; // 관리자 등급
|
|
};
|
|
|
|
struct PktDelAdmin : public PktBase // 선택 계정을 삭제한다.
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT]; // 지우고자하는 ID
|
|
};
|
|
|
|
struct PktUpdateLevel : public PktBase // 계정 레벨등급 변경
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT]; // 선택 ID
|
|
unsigned char m_szLevel; // 변경할 레벨
|
|
};
|
|
|
|
struct PktUpdateIP : public PktBase // 계정 접속IP 변경
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
char m_szIP[MAX_IP]; // 변경할 IP
|
|
};
|
|
|
|
struct PktUpdatePasswd : public PktBase // 계정 패스워드 변경
|
|
{
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
char m_szPasswd[MAX_PASSWORD]; // 변경할 패스워드
|
|
};
|
|
|
|
struct PktLoginInfoAck : public PktBase // 로그인성공시 상세정보를 날려주자..
|
|
{
|
|
unsigned int m_UID;
|
|
char m_szAccount [MAX_ACCOUNT];
|
|
char m_szPassword[MAX_PASSWORD];
|
|
unsigned char m_Level;
|
|
char m_szName[MAX_NAME];
|
|
char m_szIP[MAX_IP];
|
|
char m_RegDate[11];
|
|
};
|
|
|
|
struct PktLogList : public PktBase // 로그리스트 요청
|
|
{
|
|
char m_szAccount[ MAX_ACCOUNT ];
|
|
};
|
|
|
|
struct PktLogListAck : public PktBase //해당 계정에 해당하는 로그리스트를 보내준다.
|
|
{
|
|
unsigned int m_LogID;
|
|
char m_Login[20];
|
|
char m_Logout[20];
|
|
char m_UseIP[16];
|
|
};
|
|
|
|
struct PktLogUseMessage : public PktBase //클라이언트 종료시 사용사유를 DB에 저장한다.
|
|
{
|
|
char m_UseMessage[100]; //사용사유
|
|
};
|
|
|
|
struct PktDetailLog : public PktBase //상세로그 정보
|
|
{
|
|
unsigned int m_LogID; // 해당 로그 아이디에 속해있는 상세로그 목록을 요청한다.
|
|
};
|
|
|
|
struct PktDetailLogAck : public PktBase
|
|
{
|
|
unsigned int m_DetailLogID; // 디테일로그아이디
|
|
char m_UpdateDate[20]; // 업데이트 날자
|
|
unsigned int m_UpdateType; // 업데이트 종류
|
|
};
|
|
|
|
struct PktGetExitLogAck : public PktBase
|
|
{
|
|
char m_szExitLog[100]; // 사용사유
|
|
};
|
|
|
|
struct PktBeforeAfter : public PktBase
|
|
{
|
|
unsigned int m_DetailLogID; // 디테일 로그아이디
|
|
};
|
|
|
|
struct PktBeforeAfterAck : public PktBase
|
|
{
|
|
char m_szBefore [MAX_BEFORE]; // 수정전
|
|
char m_szAfter [MAX_AFTER]; // 수정후
|
|
};
|
|
|
|
struct PktSearchID : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
SearchUID = 1,
|
|
SearchCID = 2
|
|
};
|
|
|
|
unsigned long m_dwRequestKey;
|
|
unsigned char m_SearchType;
|
|
unsigned long m_dwID;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned int m_nOldServerID;
|
|
};
|
|
|
|
struct PktSearchName : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
Account = 1,
|
|
Character = 2
|
|
};
|
|
|
|
unsigned long m_dwRequestKey;
|
|
unsigned char m_SearchType;
|
|
char m_szName[MAX_ACCOUNT];
|
|
unsigned long m_dwServerGroup;
|
|
unsigned int m_nOldServerID;
|
|
};
|
|
|
|
struct PktSearchResultAck : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
Success = 1,
|
|
NoData = 2,
|
|
};
|
|
|
|
unsigned char m_Result;
|
|
unsigned long m_dwRequestKey;
|
|
};
|
|
|
|
struct PktAgentServerIndex : public PktBase
|
|
{
|
|
unsigned char m_ServerGroup;
|
|
char m_szServerName[MAX_NAME];
|
|
};
|
|
|
|
struct PktSearchAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned char m_CharCount;
|
|
unsigned long m_dwRequestKey;
|
|
unsigned char m_cOldServerGroup;
|
|
};
|
|
|
|
struct PktGetCharacter : public PktBase
|
|
{
|
|
char m_szCharName[MAX_CHARNAME];
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequestKey;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktGetCharacterAck : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
// 운영 서버 -> 운영 클라이언트
|
|
CHAR_BASIC_DATA = 1, // 캐릭터 정보. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOST 캐릭터 기본 정보
|
|
// CHAR_POS 캐릭터 위치 정보
|
|
// SKILL 캐릭터 스킬 정보
|
|
// QUICK 캐릭터 퀵 슬롯
|
|
// EQUIP 캐릭터 장비
|
|
// INVEN 캐릭터 인벤
|
|
// EXTRA 캐릭터 여분
|
|
// EXCHANGE 캐릭터 교환
|
|
|
|
CHAR_EXTRA_DATA = 2, // 캐릭터 추가 정보들. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOEX 캐릭터 추가 정보
|
|
// QUEST 퀘스트
|
|
// HISTORY 히스토리
|
|
// CONFIG 설정
|
|
// STORE_INFO 창고 정보
|
|
|
|
CHAR_FRIEND_DATA = 3, // 캐릭터 친구 정보
|
|
CHAR_BAN_DATA = 4, // 캐릭터 거부 정보
|
|
|
|
STORE_12_DATA = 5, // 창고 1, 2탭 데이터
|
|
STORE_34_DATA = 6, // 창고 3, 4탭 데이터
|
|
|
|
FINISH_GET_DATA = 7, // DB중계에서 운영서버로 데이터를 전부 보냈음.
|
|
};
|
|
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktSetCharacter : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequestKey;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
// 관리자 캐릭터 독점모드 해제
|
|
struct PktCloseCharacter : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequestKey;
|
|
};
|
|
|
|
struct PktCloseCharacterAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequestKey;
|
|
};
|
|
|
|
// 캐릭터 Status 정보
|
|
struct CHAR_STATUS_ST
|
|
{
|
|
char m_cSex; // 캐릭터 성별
|
|
char m_cHair; // 캐릭터 머리 모양
|
|
char m_cFace; // 캐릭터 얼굴 모양
|
|
char m_cRace; // 캐릭터 종족
|
|
unsigned short m_nClass; // 캐릭터 클래스
|
|
|
|
unsigned long m_dwFame; // 명성
|
|
unsigned long m_dwMileage; // 마일리지
|
|
char m_cLevel; // 캐릭터 레벨
|
|
|
|
unsigned short m_nIP; // 증가 포인트
|
|
unsigned short m_nSTR; // 캐릭터 STR
|
|
unsigned short m_nDEX; // 캐릭터 DEX
|
|
unsigned short m_nCON; // 캐릭터 CON
|
|
unsigned short m_nINT; // 캐릭터 INT
|
|
unsigned short m_nWIS; // 캐릭터 WIS
|
|
|
|
__int64 m_dwExp; // 캐릭터 경험점
|
|
char m_cChance; // 스테이터스 재분배 기회
|
|
};
|
|
|
|
struct PktUpdateStatus : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
CHAR_STATUS_ST m_stStatus;
|
|
};
|
|
|
|
struct CreateItemInfo
|
|
{
|
|
unsigned char m_cUpdateEquip;
|
|
|
|
char m_szItemName[MAX_ITEM_NAME];
|
|
unsigned char m_cTakePos;
|
|
unsigned char m_cXPos;
|
|
unsigned char m_cYPos;
|
|
unsigned char m_cZPos;
|
|
|
|
unsigned char m_cNumOrDurability; // 현재 내구도 또는 개수
|
|
unsigned short m_usRuneSocket[Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM]; // 룬 소켓
|
|
unsigned char m_cMaxDurability; // 최대 내구도
|
|
unsigned char m_cCurrentSocketNum; // 현재 소켓 수
|
|
|
|
unsigned char m_cMaxSocketNum; // 최대 소켓 수
|
|
unsigned char m_cUpgradeLevel; // 업그레이드 단계
|
|
|
|
unsigned char m_cSeasonRecord; // 시즌 레코드
|
|
|
|
unsigned char m_cCoreLevel; // 각성의 레벨(시즌레코드3이상)
|
|
|
|
unsigned char m_cSocket[Item::EquipmentInfo::MAX_SOCKET_NUM]; // 소켓 내용
|
|
short m_usAttribute[Item::Attribute::MAX_ATTRIBUTE_NUM]; // 속성
|
|
|
|
CreateItemInfo()
|
|
{
|
|
m_cUpdateEquip = m_cMaxDurability = m_cCurrentSocketNum = 0;
|
|
m_cMaxSocketNum = m_cUpgradeLevel = 0;
|
|
m_cSeasonRecord = 1; // 시즌 레코드는 생성시 1이 디폴트
|
|
m_cCoreLevel = 0;
|
|
|
|
memset(m_usRuneSocket, 0, sizeof(unsigned short) * Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM);
|
|
memset(m_cSocket, 0, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM);
|
|
memset(m_usAttribute, 0, sizeof(unsigned short) * Item::Attribute::MAX_ATTRIBUTE_NUM);
|
|
}
|
|
|
|
void AdminStore_Out(char* Out_Data, unsigned long& dwLength)
|
|
{
|
|
unsigned long* dwStoreLength = reinterpret_cast<unsigned long*>(Out_Data);
|
|
char* StoreInfo = static_cast<char*>(Out_Data + sizeof(unsigned long));
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cNumOrDurability;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
CopyMemory(StoreInfo, m_usRuneSocket, sizeof(unsigned short) * Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM);
|
|
StoreInfo += sizeof(m_usRuneSocket);
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cMaxDurability;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cCurrentSocketNum;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cMaxSocketNum;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cUpgradeLevel;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cSeasonRecord;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
*reinterpret_cast<unsigned char*>(StoreInfo) = m_cCoreLevel;
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
CopyMemory(StoreInfo, m_cSocket, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM);
|
|
StoreInfo += sizeof(m_cSocket);
|
|
|
|
CopyMemory(StoreInfo, m_usAttribute, sizeof(short) * Item::Attribute::MAX_ATTRIBUTE_NUM);
|
|
StoreInfo += sizeof(m_usAttribute);
|
|
|
|
*dwStoreLength = (unsigned long)(StoreInfo - Out_Data);
|
|
};
|
|
|
|
void AdminStore_In(char* In_Data)
|
|
{
|
|
char* StoreInfo = static_cast<char*>(In_Data + sizeof(unsigned long));
|
|
|
|
m_cNumOrDurability = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
CopyMemory(m_usRuneSocket, StoreInfo, sizeof(unsigned short) * Item::EquipmentInfo::MAX_RUNE_SOCKET_NUM);
|
|
StoreInfo += sizeof(m_usRuneSocket);
|
|
|
|
m_cMaxDurability = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
m_cCurrentSocketNum = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
m_cMaxSocketNum = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
m_cUpgradeLevel = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
m_cSeasonRecord = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
m_cCoreLevel = *reinterpret_cast<unsigned char*>(StoreInfo);
|
|
StoreInfo += sizeof(unsigned char);
|
|
|
|
CopyMemory(m_cSocket, StoreInfo, sizeof(unsigned char) * Item::EquipmentInfo::MAX_SOCKET_NUM);
|
|
StoreInfo += sizeof(m_cSocket);
|
|
|
|
CopyMemory(m_usAttribute, StoreInfo, sizeof(short) * Item::Attribute::MAX_ATTRIBUTE_NUM);
|
|
StoreInfo += sizeof(m_usAttribute);
|
|
}
|
|
};
|
|
|
|
struct PktCreateItem : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
CreateItemInfo m_CreateItemInfo;
|
|
};
|
|
|
|
struct PktCreateItemAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
unsigned __int64 m_ItemID;
|
|
unsigned short m_PrototypeID;
|
|
|
|
CreateItemInfo m_CreateItemInfo;
|
|
};
|
|
|
|
struct PktUpdateItem : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
// 업데이트 아이템 데이터
|
|
unsigned __int64 m_ItemUID;
|
|
unsigned short m_ItemPrototypeID;
|
|
|
|
CreateItemInfo m_UpdataItemInfo;
|
|
};
|
|
|
|
struct PktUpdateItemAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
// 업데이트 아이템 데이터
|
|
unsigned __int64 m_ItemUID;
|
|
unsigned short m_ItemPrototypeID;
|
|
|
|
CreateItemInfo m_UpdataItemInfo;
|
|
};
|
|
|
|
struct PktRemoveItem : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
// 지울 아이템 데이터
|
|
unsigned __int64 m_ItemUID;
|
|
unsigned short m_ItemPrototypeID;
|
|
|
|
unsigned char m_cTakePos;
|
|
unsigned char m_cXPos;
|
|
unsigned char m_cYPos;
|
|
unsigned char m_cZPos;
|
|
};
|
|
|
|
struct PktRemoveItemAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestKey;
|
|
|
|
// 지울 아이템 데이터
|
|
unsigned __int64 m_ItemUID;
|
|
unsigned short m_ItemPrototypeID;
|
|
|
|
unsigned char m_cTakePos;
|
|
unsigned char m_cXPos;
|
|
unsigned char m_cYPos;
|
|
unsigned char m_cZPos;
|
|
};
|
|
|
|
struct PktSyncDeposit : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
Tab12 = 1,
|
|
Tab34 = 2,
|
|
};
|
|
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwRequestID;
|
|
unsigned char m_cType;
|
|
};
|
|
|
|
struct PktItemReset : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
unsigned char m_cTakePos;
|
|
};
|
|
|
|
struct PktItemResetAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
unsigned char m_cTakePos;
|
|
};
|
|
|
|
struct PktInvenGold : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
unsigned long m_dwGold;
|
|
};
|
|
|
|
struct PktSkillEdit : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
Create = 1,
|
|
Edit = 2,
|
|
Delete = 3
|
|
};
|
|
|
|
enum RESULT_CMD
|
|
{
|
|
NOT_ENOUGH_STAT = 0,
|
|
NOT_ENOUGH_SKILLSLOT = 1,
|
|
FAILED_TO_GET_SKILLPROTOTYPE = 2,
|
|
OVERED_MAX_LOCKCOUNT = 3,
|
|
OVERED_MAX_SKILL_LEVEL = 4,
|
|
NOT_CURRENT_CLASS = 5,
|
|
FAILED = 6,
|
|
SUCCESS = 7
|
|
};
|
|
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
|
|
unsigned char m_cType;
|
|
unsigned short m_wSkillID;
|
|
char m_SkillLevel;
|
|
char m_SkillLockCount;
|
|
};
|
|
|
|
struct PktAddBlockUser : public PktBase
|
|
{
|
|
enum BLOCK_INFO
|
|
{
|
|
MAX_DESCRIPTION = 31,
|
|
|
|
TARGET_ACCOUNT = 1, // 계정 블럭
|
|
TARGET_CHARACTER = 2, // 캐릭터 블럭
|
|
|
|
TERM_TEMPORARY = 0, // 임시 블럭
|
|
TERM_PERMANANT = 1, // 영구 블럭
|
|
};
|
|
|
|
unsigned char m_cServerGroup; // 서버 그룹
|
|
unsigned long m_dwUID; // UID
|
|
char m_szCharacterName[MAX_NAME]; // 이름 (캐릭터 블럭일 경우에만 필요)
|
|
unsigned char m_cBlockTarget; // 블럭 대상 (계정블럭, 캐릭터블럭)
|
|
unsigned char m_cBlockTerm; // 블럭 기간 (임시블럭, 영구블럭)
|
|
char m_szBlockFinishDateTime[MAX_TIME]; // 블럭 종료 시각
|
|
char m_szDescription[MAX_DESCRIPTION]; // 블럭 사유
|
|
};
|
|
|
|
struct PktDelBlockUser : public PktBase
|
|
{
|
|
unsigned char m_cServerGroup; // 서버 그룹
|
|
unsigned long m_nidx; // Index 번호
|
|
};
|
|
|
|
struct PktSearchBlock : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
};
|
|
|
|
struct PktSearchBlockAck : public PktBase
|
|
{
|
|
unsigned char m_cServerGroup;
|
|
unsigned long m_dwUID;
|
|
char m_szClientID[MAX_ACCOUNT];
|
|
char m_szCharacterName[MAX_NAME];
|
|
unsigned char m_cBlockTarget;
|
|
unsigned char m_cBlockTerm;
|
|
char m_szBlockStartTime[MAX_TIME];
|
|
char m_szBlockFinishTime[MAX_TIME];
|
|
char m_szAdminName[MAX_ACCOUNT];
|
|
char m_szDescription[PktAddBlockUser::MAX_DESCRIPTION];
|
|
unsigned long m_nidx;
|
|
};
|
|
|
|
struct PktChangePos : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
|
|
float m_fPosX;
|
|
float m_fPosY;
|
|
float m_fPosZ;
|
|
char m_cZone;
|
|
};
|
|
|
|
struct PktSetZoneList : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
MAX_BUFFER = 3304, // zone_buffer * 30
|
|
ZONE_BUFFER = 109, // 100byte + (4byte * 2) + 1byte
|
|
};
|
|
|
|
char m_ZoneBuffer[MAX_BUFFER];
|
|
};
|
|
|
|
struct PktDepositPasswd : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
PASSWORD_LENGTH = 4,
|
|
};
|
|
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
|
|
char m_cPasswd[PASSWORD_LENGTH];
|
|
};
|
|
|
|
struct PktCheckName : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwRequest;
|
|
|
|
char m_szCharacterName[MAX_NAME];
|
|
};
|
|
|
|
struct PktChangeName : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
|
|
char m_szCharacterName[MAX_NAME];
|
|
};
|
|
|
|
struct PktDelCharList : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
UID = 1,
|
|
CID = 2
|
|
};
|
|
|
|
unsigned char m_cType;
|
|
unsigned long m_dwValue;
|
|
unsigned long m_dwServerGroup;
|
|
};
|
|
|
|
struct PktDelCharListAck : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
MAX_NAME = 16
|
|
};
|
|
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned char m_cNewServerGroupID;
|
|
unsigned char m_cOldServerGroupID;
|
|
char m_szInsertTime[MAX_TIME];
|
|
char m_szDeleteTime[MAX_TIME];
|
|
char m_szCharName[MAX_NAME];
|
|
unsigned int m_nLevel;
|
|
unsigned long m_dwGold;
|
|
};
|
|
|
|
struct PktCharRestore : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cNewServerGroupID;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktCharRestoreAck : public PktBase
|
|
{
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cNewServerGroupID;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktAdminStoreInsert : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
EMPTY_SERVERID = 200,
|
|
MAX_ITEM_INFO = 100,
|
|
};
|
|
|
|
unsigned char m_cServerIdx;
|
|
char m_szOwnerName[MAX_NAME];
|
|
char m_szItemName[MAX_ITEM_NAME];
|
|
char m_binItemInfo[MAX_ITEM_INFO];
|
|
};
|
|
|
|
struct PktAdminStoreInsertAck : public PktBase
|
|
{
|
|
unsigned long m_dwStoreUID;
|
|
unsigned char m_cServerIdx;
|
|
char m_szOwnerName[MAX_NAME];
|
|
char m_szItemName[MAX_ITEM_NAME];
|
|
};
|
|
|
|
struct PktAdminStoreDelete : public PktBase
|
|
{
|
|
unsigned long m_dwStoreUID;
|
|
};
|
|
|
|
struct PktGetAdminStoreItem : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
EDIT = 1,
|
|
CREATE = 2
|
|
};
|
|
|
|
unsigned char m_cType;
|
|
unsigned long m_dwStoreUID;
|
|
};
|
|
|
|
struct PktGetAdminStoreItemAck : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
MAX_ITEM_INFO = 100,
|
|
};
|
|
|
|
unsigned char m_cType;
|
|
unsigned long m_dwStoreUID;
|
|
char m_binItemInfo[MAX_ITEM_INFO];
|
|
};
|
|
|
|
struct PktUpdateAdminStore : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
MAX_ITEM_INFO = 100,
|
|
};
|
|
|
|
unsigned long m_dwStoreUID;
|
|
char m_binItemInfo[MAX_ITEM_INFO];
|
|
};
|
|
|
|
struct PktDelCharacter : public PktBase
|
|
{
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwRequestKey;
|
|
};
|
|
|
|
struct PktGuildSearch : public PktBase
|
|
{
|
|
enum SEARCH_TYPE
|
|
{
|
|
NONE = 0,
|
|
|
|
ALLGROUP_ALLGUILD = 1,
|
|
ALLGROUP_SPEGUILD_NAME = 2,
|
|
ALLGROUP_SPEGUILD_GID = 3,
|
|
|
|
SPEGROUP_ALLGUILD = 4,
|
|
SPEGROUP_SPEGUILD_NAME = 5,
|
|
SPEGROUP_SPEGUILD_GID = 6,
|
|
};
|
|
|
|
unsigned char m_cSearchType;
|
|
unsigned long m_dwServerGroup;
|
|
char m_szSearchValue[MAX_PATH];
|
|
};
|
|
|
|
struct PktGuildSearchAck : public PktBase
|
|
{
|
|
unsigned long m_dwGID;
|
|
char m_szName[MAX_NAME];
|
|
unsigned int m_dwLevel;
|
|
unsigned long m_dwFame;
|
|
unsigned long m_dwGold;
|
|
unsigned int m_dwNation;
|
|
|
|
unsigned long m_dwServerGroup;
|
|
unsigned int m_nOldServerID;
|
|
unsigned int m_dwMemberNum;
|
|
};
|
|
|
|
struct PktRequestGuildMemberList : public PktBase
|
|
{
|
|
unsigned long m_dwGID;
|
|
unsigned long m_dwServerGroup;
|
|
};
|
|
|
|
struct PktRequestGuildMemberListAck : public PktBase
|
|
{
|
|
enum SIZE
|
|
{
|
|
MAX_NAME = 16,
|
|
};
|
|
|
|
unsigned long m_dwGID;
|
|
unsigned long m_dwCID;
|
|
int m_nPosition;
|
|
int m_nPositionInGuild;
|
|
char m_szLeaveGuildTime[MAX_TIME];
|
|
char m_szCharName[MAX_NAME];
|
|
int m_nLevel;
|
|
unsigned long m_dwFame;
|
|
unsigned short m_nClass;
|
|
unsigned long m_dwGold;
|
|
};
|
|
|
|
struct PktGuildRestoreDataList : public PktBase
|
|
{
|
|
bool m_bAllGroupChk;
|
|
unsigned long m_dwServerGroup;
|
|
};
|
|
|
|
struct PktGuildRestoreDataListAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwGID;
|
|
char m_szGuildName[MAX_NAME];
|
|
unsigned long m_dwGold;
|
|
char m_szDeleteDate[MAX_TIME];
|
|
};
|
|
|
|
struct PktFortSearch : public PktBase
|
|
{
|
|
enum SEARCH_TYPE
|
|
{
|
|
NONE = 0,
|
|
|
|
ALLSERVER_ALLZONE_ALLGUILD = 1,
|
|
ALLSERVER_ALLZONE_SPEGUILD_NAME = 2,
|
|
ALLSERVER_ALLZONE_SPEGUILD_GID = 3,
|
|
|
|
ALLSERVER_SPEZONE_ALLGUILD = 4,
|
|
ALLSERVER_SPEZONE_SPEGUILD_NAME = 5,
|
|
ALLSERVER_SPEZONE_SPEGUILD_GID = 6,
|
|
|
|
SPESERVER_ALLZONE_ALLGUILD = 7,
|
|
SPESERVER_ALLZONE_SPEGUILD_NAME = 8,
|
|
SPESERVER_ALLZONE_SPEGUILD_GID = 9,
|
|
|
|
SPESERVER_SPEZONE_ALLGUILD = 10,
|
|
SPESERVER_SPEZONE_SPEGUILD_NAME = 11,
|
|
SPESERVER_SPEZONE_SPEGUILD_GID = 12,
|
|
};
|
|
|
|
unsigned char m_cSearchType;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwZoneGroup;
|
|
char m_szSearchValue[MAX_PATH];
|
|
};
|
|
|
|
struct PktFortSearchAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCampID;
|
|
unsigned long m_dwGuildID;
|
|
char m_szGuildName[PktAdminMgr::MAX_NAME];
|
|
unsigned long m_dwHP;
|
|
unsigned char m_cZone;
|
|
unsigned char m_cChannel;
|
|
unsigned short m_usObjectType;
|
|
unsigned char m_cState;
|
|
unsigned char m_cSubState;
|
|
unsigned char m_cUpgradeStep;
|
|
char m_szRemainTime[PktAdminMgr::MAX_TIME];
|
|
char m_szLastUseTime[PktAdminMgr::MAX_TIME];
|
|
char m_cRight;
|
|
float m_fPosX;
|
|
float m_fPosY;
|
|
float m_fPosZ;
|
|
unsigned char m_cMaterial;
|
|
unsigned char m_cSiegeCount;
|
|
};
|
|
|
|
struct PktMiningCamp : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCampID;
|
|
};
|
|
|
|
struct PktMiningCampAck : public PktBase
|
|
{
|
|
unsigned long m_dwCampID;
|
|
unsigned short m_sMineralID;
|
|
unsigned short m_sAmount;
|
|
char m_cFlag;
|
|
};
|
|
|
|
struct PktShopCamp : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCampID;
|
|
|
|
};
|
|
|
|
struct PktShopCampAck : public PktBase
|
|
{
|
|
unsigned long m_dwCampID;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwTempMoney;
|
|
unsigned char m_cTax;
|
|
char m_szItem[PktAdminMgr::MAX_ITEM_BUFFER];
|
|
};
|
|
|
|
struct PktShopCampGold : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCampID;
|
|
unsigned long m_dwTempMoney;
|
|
};
|
|
|
|
struct PktShopCampTax : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCampID;
|
|
unsigned long m_dwTax;
|
|
};
|
|
|
|
struct PktCastleSearch : public PktBase
|
|
{
|
|
enum SEARCH_TYPE
|
|
{
|
|
NONE = 0,
|
|
|
|
ALLSERVER_ALLZONE_ALLCASTLE = 1,
|
|
ALLSERVER_ALLZONE_SPECASTLE_ID = 2,
|
|
|
|
ALLSERVER_SPEZONE_ALLCASTLE = 3,
|
|
ALLSERVER_SPEZONE_SPECASTLE_ID = 4,
|
|
|
|
SPESERVER_ALLZONE_ALLCASTLE = 5,
|
|
SPESERVER_ALLZONE_SPECASTLE_ID = 6,
|
|
|
|
SPESERVER_SPEZONE_ALLCASTLE = 7,
|
|
SPESERVER_SPEZONE_SPECASTLE_ID = 8,
|
|
};
|
|
|
|
unsigned char m_cSearchType;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwZoneGroup;
|
|
char m_szSearchValue[MAX_PATH];
|
|
};
|
|
|
|
struct PktCastleSearchAck : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCastleID;
|
|
unsigned char m_cNation;
|
|
unsigned char m_cZone;
|
|
unsigned char m_cChannel;
|
|
unsigned char m_cName;
|
|
unsigned char m_cSiegeCount;
|
|
unsigned char m_cInvincibleCount;
|
|
unsigned short m_wTotalSiegeCount;
|
|
unsigned long m_dwTotalTaxMoney;
|
|
char m_cRight;
|
|
float m_fPosInX;
|
|
float m_fPosInY;
|
|
float m_fPosInZ;
|
|
float m_fPosOutX;
|
|
float m_fPosOutY;
|
|
float m_fPosOutZ;
|
|
unsigned short m_wItemID;
|
|
unsigned char m_cItemNum;
|
|
};
|
|
|
|
struct PktCastleCreature : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCastleID;
|
|
};
|
|
|
|
struct PktCastleCreatureAck : public PktBase
|
|
{
|
|
unsigned long m_dwCreatureID;
|
|
unsigned long m_dwCastleID;
|
|
unsigned long m_dwOwnerID;
|
|
unsigned long m_dwHP;
|
|
unsigned short m_wObjectType;
|
|
float m_fDirection;
|
|
unsigned char m_cState;
|
|
unsigned char m_cSubState;
|
|
unsigned char m_cUpgradeStep;
|
|
unsigned char m_cUpgradeType;
|
|
char m_szRemainTime[PktAdminMgr::MAX_TIME];
|
|
char m_szLastUseTime[PktAdminMgr::MAX_TIME];
|
|
float m_fPosX;
|
|
float m_fPosY;
|
|
float m_fPosZ;
|
|
};
|
|
|
|
struct PktItemQtyControl : public PktBase
|
|
{
|
|
enum TYPE
|
|
{
|
|
ADD = 0,
|
|
DEL = 1,
|
|
STATUS_REQUEST = 2,
|
|
STATUS_ACK = 3,
|
|
STATUS_ACK_END = 4
|
|
};
|
|
|
|
unsigned long m_dwItemTypeID;
|
|
unsigned long m_dwItemQty;
|
|
unsigned long m_dwCurrentItemQty;
|
|
time_t m_tStartTime;
|
|
time_t m_tEndTime;
|
|
|
|
unsigned char m_cType;
|
|
unsigned char m_cServerGroup;
|
|
};
|
|
|
|
struct PktStoreGoldUpdate : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwRequest;
|
|
unsigned long m_dwGold;
|
|
};
|
|
|
|
struct PktUserBillingLog : public PktBase
|
|
{
|
|
enum SEARCH_TYPE
|
|
{
|
|
UID = 0,
|
|
ACCOUNT = 1,
|
|
};
|
|
|
|
unsigned char m_cSearchType;
|
|
char m_szSearchValue[100];
|
|
COleDateTime m_tStartTime;
|
|
COleDateTime m_tEndTime;
|
|
};
|
|
|
|
struct PktUserBillingLogAck : public PktBase
|
|
{
|
|
char m_szClientID[20];
|
|
unsigned long m_dwUID;
|
|
char m_szIP[MAX_IP];
|
|
unsigned int m_sServerIndex;
|
|
char m_szFirstLoginTime[MAX_TIME];
|
|
char m_szLogoutTime[MAX_TIME];
|
|
};
|
|
|
|
struct PktGameAdmin : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
REG = 1,
|
|
EDIT = 2,
|
|
DEL = 3,
|
|
SEARCH = 4,
|
|
ACK = 5,
|
|
REFRESH = 6,
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned int m_nAdminLV;
|
|
char m_szStartIP[MAX_IP];
|
|
char m_szEndIP[MAX_IP];
|
|
};
|
|
|
|
struct PktConnectAllServerz : public PktBase
|
|
{
|
|
enum SIZE { SERVERZ_NUM = 20 };
|
|
|
|
unsigned int m_nConnectedServerIndex[SERVERZ_NUM];
|
|
};
|
|
|
|
struct PktInterestedUser : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
ADD_USER = 1,
|
|
REMOVE_USER = 2,
|
|
REQUEST_LIST = 3
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
char m_szReason[MAX_PATH];
|
|
};
|
|
|
|
struct PktConnectionChk : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
REQUEST_CHK = 0,
|
|
INFO_ACK = 1
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
unsigned long m_dwUID;
|
|
char m_szLoginIP[MAX_IP];
|
|
unsigned int m_nServerGroup;
|
|
char m_szLoginTime[MAX_TIME];
|
|
};
|
|
|
|
struct PktDuplicatedItem : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
SEARCH = 0,
|
|
RESULT_LIST = 1,
|
|
CHK = 2
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
unsigned long m_dwServerGroup;
|
|
|
|
char m_szInsertTime[MAX_TIME];
|
|
char m_szUpdateTime[MAX_TIME];
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
char m_szCharName[MAX_NAME];
|
|
unsigned __int64 m_dwItemUID;
|
|
unsigned int m_nQty;
|
|
bool m_bChk;
|
|
};
|
|
|
|
struct DstUserInfo
|
|
{
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwServerGroup;
|
|
|
|
void Clear() { m_dwUID, m_dwCID, m_dwServerGroup = 0; }
|
|
bool IsValid()
|
|
{
|
|
if(!(m_dwUID && m_dwCID))
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
};
|
|
|
|
struct PktItemDistribute : public PktBase
|
|
{
|
|
CreateItemInfo m_stDistributeItem;
|
|
unsigned char m_cUserNum;
|
|
// DstUserInfo 구조체가 가변형태로 붙어서 사용됨
|
|
};
|
|
|
|
struct PktItemDistributeAck : public PktBase
|
|
{
|
|
enum RESULT_TYPE
|
|
{
|
|
SUCCESS = 1,
|
|
FALED_TO_CREATE_TEMPINVEN_OBJ = 2,
|
|
FALED_TO_GET_ITEMINFO = 3,
|
|
FALED_TO_GET_GAMEDB = 4,
|
|
FALED_TO_GET_TEMPINVEN_OBJ = 5,
|
|
FALED_TO_SERIALIZE_IN = 6,
|
|
FALED_TO_CREATE_ITEM_OBJ = 7,
|
|
FALED_TO_SET_ITEM = 8,
|
|
FALED_TO_SERIALIZE_OUT = 9,
|
|
FALED_TO_UPDATE_TEMPINVEN = 10
|
|
};
|
|
|
|
unsigned char m_cResultType;
|
|
DstUserInfo m_stUserInfo;
|
|
};
|
|
|
|
struct PktGuildRight : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwGID;
|
|
unsigned char m_aryRight[Guild::MAX_RIGHT_SIZE];
|
|
};
|
|
|
|
struct PktUnifiedCharInfo : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
SEARCH_UID = 0,
|
|
SEARCH_ACCOUNT = 1,
|
|
|
|
RESULT_ACK = 2
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
unsigned long m_dwServerGroup;
|
|
char m_szSearchValue[MAX_ACCOUNT];
|
|
|
|
unsigned long m_dwUID;
|
|
unsigned int m_nOldServerGroup;
|
|
unsigned long m_dwBeforeCID;
|
|
unsigned long m_dwNewCID;
|
|
char m_szBeforeCharName[MAX_NAME];
|
|
};
|
|
|
|
struct PktDetailCharInfo : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
char m_szCharName[MAX_CHARNAME];
|
|
unsigned short m_sClass;
|
|
unsigned long m_dwFame;
|
|
unsigned long m_dwMileage;
|
|
unsigned char m_cLevel;
|
|
unsigned long m_dwGold;
|
|
__int64 m_i64Exp;
|
|
};
|
|
|
|
struct PktUnifiedGuildInfo : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
SEARCH = 0,
|
|
RESULT = 1
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
unsigned long m_dwServerGroup;
|
|
|
|
unsigned long m_dwBeforeGID;
|
|
unsigned int m_nOldServerGroupID;
|
|
unsigned long m_dwNewGID;
|
|
char m_szBeforeGName[MAX_NAME];
|
|
char m_szNewGName[MAX_NAME];
|
|
};
|
|
|
|
struct PktCancelExecuteQuest : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned short m_wQuestID;
|
|
};
|
|
|
|
struct PktDeleteHistoryQuest : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned short m_wQuestID;
|
|
};
|
|
|
|
struct PktUserNation : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
|
|
unsigned char m_cNation;
|
|
};
|
|
|
|
struct PktShiftToUID : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
ACCOUNT_TO_UID = 1,
|
|
UID_TO_ACCOUNT = 2
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
char m_szAccount[MAX_ACCOUNT];
|
|
unsigned long m_dwUID;
|
|
};
|
|
|
|
struct PktStoreTabEdit : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned int m_nTabNum;
|
|
};
|
|
|
|
struct PktAmountOfGold : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned __int64 m_i64Gold;
|
|
};
|
|
|
|
struct PktGMLogMsg : public PktBase
|
|
{
|
|
enum PKT_TYPE
|
|
{
|
|
LOG_CONFIRM = 1,
|
|
LOG_SELECT = 2,
|
|
LOG_INSERT = 3,
|
|
LOG_UPDATE = 4,
|
|
LOG_DELETE = 5,
|
|
LOG_REFRESH = 6
|
|
};
|
|
|
|
unsigned char m_cPktType;
|
|
|
|
unsigned long m_dwLogID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned long m_dwServerGroup;
|
|
char m_szLogMsg[MAX_LOG];
|
|
char m_szEditDate[MAX_TIME];
|
|
char m_szAdminID[MAX_ACCOUNT];
|
|
};
|
|
|
|
struct PktNameChangeCount : public PktBase
|
|
{
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cNameChangeCount;
|
|
};
|
|
|
|
struct PktGuildMemberEdit : public PktBase
|
|
{
|
|
enum PktErr
|
|
{
|
|
FAIL_GUILD = 1, // 길드가 없을때.
|
|
FAIL_CONNECT_CHAR = 2, // 캐릭터가 접속 중일때.
|
|
FAIL_DB_UPDATE = 3, // DB 업데이트 실패.
|
|
FAIL_MEMBER_DELETE = 4 // 길드 멤버 삭제 실패.
|
|
};
|
|
|
|
enum Const
|
|
{
|
|
TYPE_POSITION = 0, // 포지션 변경시.
|
|
TYPE_MEMBERDELETE = 1 // 길드 멤버 삭제시.
|
|
};
|
|
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwGID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cPosition;
|
|
unsigned char m_cType;
|
|
};
|
|
|
|
struct PktCharInfoTime : public PktBase
|
|
{
|
|
enum Type
|
|
{
|
|
SearchCID = 0,
|
|
SearchName = 1
|
|
};
|
|
|
|
unsigned long m_dwServerGroup;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_SearchType;
|
|
char m_szName[MAX_CHARNAME];
|
|
};
|
|
|
|
struct PktCharInfoTimeResultAck : public PktBase
|
|
{
|
|
char m_CreateTime[MAX_TIME];
|
|
char m_UpdateTime[MAX_TIME];
|
|
};
|
|
};
|
|
|
|
#pragma pack( )
|
|
|
|
#endif |