Restructure repository to include all source folders
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>
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
#ifndef _CHAT_TOOL_PACKET_COMMAND_H_
|
||||
#define _CHAT_TOOL_PACKET_COMMAND_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
|
||||
//! ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>Ŷ <20><> <20><>Ŷ Ŀ<>ǵ带 <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
|
||||
namespace ChatToolCMD
|
||||
{
|
||||
enum CMD
|
||||
{
|
||||
Authorize = 1,
|
||||
ChangeOption = 2,
|
||||
ChatSend = 3,
|
||||
ChatRequest = 4,
|
||||
ChatAdminStatus = 5,
|
||||
ChatPing = CmdSysPing
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
namespace ChatToolPkt
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_USER_ID = 16,
|
||||
MAX_PASSWORD = 16,
|
||||
|
||||
MAX_CHAR_NAME = 16,
|
||||
|
||||
TARGET_UID = 0,
|
||||
TARGET_CHARNAME = 1,
|
||||
TARGET_ACCOUNTNAME = 2
|
||||
};
|
||||
|
||||
//! Request : fill UserID/Passsword
|
||||
//! Result : fill m_cResult( 1 : success / 0 : failed )
|
||||
struct Authorize : public PktBase
|
||||
{
|
||||
char m_szUserID[MAX_USER_ID];
|
||||
char m_szPassword[MAX_PASSWORD];
|
||||
unsigned char m_cResult;
|
||||
};
|
||||
|
||||
//! ChatServer -> ChatTool : fill all data + chatting message;
|
||||
struct ChatDataSend : public PktBase
|
||||
{
|
||||
unsigned long m_dwUID;
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwServerID; // <20><><EFBFBD><EFBFBD> ID<49><44> 0<><30> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
||||
// <20>̶<EFBFBD><CCB6><EFBFBD> UID/CID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UID/CID<49><44><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>.
|
||||
|
||||
char m_szSenderName[CHAR_INFOST::MAX_NAME_LEN];
|
||||
char m_szTargetName[CHAR_INFOST::MAX_NAME_LEN];
|
||||
|
||||
unsigned short m_usXPos;
|
||||
unsigned short m_usZPos;
|
||||
|
||||
unsigned short m_usLang;
|
||||
|
||||
unsigned char m_cChatType;
|
||||
unsigned char m_cChatMsgLen;
|
||||
|
||||
unsigned char m_cRace; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӳ<EFBFBD>
|
||||
};
|
||||
|
||||
//! ChatTool -> ChatServer : ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
struct ChatRequest : public PktBase
|
||||
{
|
||||
enum ERR
|
||||
{
|
||||
PACKET_ERROR = 1,
|
||||
NONE_CHARACTER = 2, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
};
|
||||
|
||||
char m_szAdminName[MAX_CHAR_NAME]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><EEBFB5> <20≯<EFBFBD>.
|
||||
char m_szTargetName[MAX_CHAR_NAME]; // <20>ӼӸ<D3BC><D3B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. (ij<><C4B3><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
|
||||
unsigned long m_dwUID; // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> UID (TargetName<6D><65> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
unsigned long m_dwCID; // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> CID
|
||||
unsigned long m_dwMessageID; // <20><EFBFBD><DEBD><EFBFBD> ID. <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
||||
|
||||
unsigned char m_cTargetType; // UID / CharName / AccountName <20><> <20>ϳ<EFBFBD>
|
||||
|
||||
unsigned char m_cChatType;
|
||||
unsigned char m_cChatMsgLen;
|
||||
};
|
||||
|
||||
//! Request : fill m_cChatOption
|
||||
//! Result : none
|
||||
struct ChatOption : public PktBase
|
||||
{
|
||||
enum Options
|
||||
{
|
||||
DO_LISTEN = 0, // <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31> <20><><EFBFBD><EFBFBD>.
|
||||
LISTEN_NORMAL_CHAT = 1,
|
||||
LISTEN_PARTY_CHAT = 2,
|
||||
LISTEN_FRIEND_CHAT = 3,
|
||||
LISTEN_GUILD_CHAT = 4,
|
||||
|
||||
LISTEN_STALL_CHAT = 5,
|
||||
LISTEN_SHOUT_CHAT = 6,
|
||||
|
||||
LISTEN_ADMIN_NORMAL_CHAT = 7, // <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD> ä<><C3A4> (Ack<63>θ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
LISTEN_ADMIN_SHOUT = 8, // <20><EFBFBD><EEBFB5> <20><>ġ<EFBFBD><C4A1> (Ack<63>θ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
LISTEN_WHISPER_CHAT = 9,
|
||||
|
||||
LISTEN_NOTICE = 10,
|
||||
LISTEN_TRADE_CHAT = 11,
|
||||
|
||||
LISTEN_DICE_CHAT = 12,
|
||||
|
||||
MAX_OPTION = 20
|
||||
};
|
||||
|
||||
unsigned char m_cChatOption[MAX_OPTION];
|
||||
};
|
||||
|
||||
struct ChatAdminStatus : public PktBase
|
||||
{
|
||||
enum Status
|
||||
{
|
||||
LOGIN = 0,
|
||||
LOGOUT = 1
|
||||
};
|
||||
|
||||
char m_szChatAdminName[MAX_USER_ID];
|
||||
unsigned char m_cChangeStatus;
|
||||
};
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,329 @@
|
||||
#ifndef _MANAGE_PACKET_COMMAND_H_
|
||||
#define _MANAGE_PACKET_COMMAND_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <psapi.h>
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <ctime>
|
||||
|
||||
namespace ServerManage
|
||||
{
|
||||
namespace CMD
|
||||
{
|
||||
enum CMDType
|
||||
{
|
||||
// ManageClient, ManageServer, ManageTool <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ Ŀ<>ǵ<EFBFBD>.
|
||||
UpdateRunList = 0x00, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> (ManageServer -> ManageClient, ManageTool), Ack<63><6B><EFBFBD><EFBFBD>.
|
||||
RunProcess = 0x01, // <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. (ManageTool -> ManageServer -> ManageClient), Ack<63><6B> <20>ݴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
QuitProcess = 0x02, // <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. (ManageTool -> ManageServer -> ManageClient), Ack<63><6B> <20>ݴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ForceTerminate = 0x03, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. (ManageTool -> ManageServer -> ManageClient), Ack<63><6B> <20>ݴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ProcessStatus = 0x04, // <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (ManageClient -> ManageServer -> ManageTool), Ack<63><6B><EFBFBD><EFBFBD>.
|
||||
|
||||
RelayCommand = 0x05, // <20><>Ŷ Ŀ<>ǵ带 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20>Ἥ <20>߰<EFBFBD><DFB0>ؼ<EFBFBD> <20>ѱ<EFBFBD><D1B1><EFBFBD>.
|
||||
AutoPatch = 0x06, // <20>ڱ<EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><>ġ<EFBFBD>Ѵ<EFBFBD>
|
||||
ChangeSetup = 0x07, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲٰ<D9B2> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
ReloadSetup = 0x08, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD><CEB5>Ѵ<EFBFBD>.
|
||||
|
||||
ExecuteCommand = 0x09, // <20>ܼ<EFBFBD> Ŀ<>ǵ带 <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
|
||||
|
||||
// ManageServer <-> ManageTool
|
||||
AuthUser = 0x10, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
AddUser = 0x11, // <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
DelUser = 0x12, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ModUser = 0x13, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
RequestUserReaction = 0x14, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>Ǵܿ<C7B4> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>.(usSubCommand Ȱ<><C8B0>)
|
||||
RequestPromote = 0x15, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ǰڴٰ<DAB4> <20><><EFBFBD><EFBFBD>
|
||||
ManagerInfo = 0x16, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
|
||||
// ManageServer -> ManageTool
|
||||
UserList = 0x20, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ(<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
UserLogin = 0x21, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
UserLogout = 0x22, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>αƿ<D7BE><C6BF><EFBFBD><EFBFBD><EFBFBD>)
|
||||
StatServerStatus= 0x23, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>輭<EFBFBD><E8BCAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>¸<EFBFBD> <20>ش<EFBFBD>.
|
||||
|
||||
// ManageClient <-> Each Server
|
||||
IPC_ManagePing = 0x30, // Each Server -> ManageClient (Alive<76><65><EFBFBD><EFBFBD> <20><> Window Name<6D><65> <20>ش<EFBFBD>)
|
||||
|
||||
// ManageTool <-> ManageServer
|
||||
Ping = CmdSysPing
|
||||
};
|
||||
|
||||
enum RelaySubCmd
|
||||
{
|
||||
// UserInfo
|
||||
SubCmd_ServerUserNum = 0x01
|
||||
|
||||
};
|
||||
|
||||
enum UserReactionSubCmd
|
||||
{
|
||||
// Promote
|
||||
REQUEST_TAKEBACK_PROMOTE = 0x01,
|
||||
ACK_TAKEBACK_PROMOTE = 0x02,
|
||||
NAK_TAKEBACK_PROMOTE = 0x03
|
||||
};
|
||||
|
||||
|
||||
enum UserStatCMD
|
||||
{
|
||||
UPDATE_USER_STATUS = 0x01
|
||||
};
|
||||
};
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
// <20><>Ŷ <20>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>, <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>پ<EFBFBD> <20>´<EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD> <20><>Ŷ : ExecuteFile, RelayCommand, AutoPatch,
|
||||
// ChangeSetup, ReloadSetup
|
||||
//
|
||||
struct ManageCommand : public PktBase
|
||||
{
|
||||
enum AutoPatchFlag
|
||||
{
|
||||
AUTOPATCH_OPENFILE = 1,
|
||||
AUTOPATCH_DATA = 2
|
||||
};
|
||||
|
||||
unsigned int nMessage; // <20><EFBFBD><DEBD><EFBFBD> <20><>ȣ
|
||||
WPARAM wParam; // <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>1
|
||||
LPARAM lParam; // <20>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>2
|
||||
|
||||
unsigned long dwRunID; // Ÿ<><C5B8> RunID
|
||||
unsigned short usFlags; // <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
unsigned short usDataLen; // <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
};
|
||||
|
||||
enum ManageCommandError
|
||||
{
|
||||
INVALID_MANAGE_PACKET_ERROR = 0,
|
||||
CANNOT_FIND_CLIENT_DISPATCH = 1,
|
||||
SEND_MANAGE_COMMAND_ERROR = 2,
|
||||
UNKNOWN_RUN_INFO = 3,
|
||||
INVALID_MANAGE_RIGHTS = 4
|
||||
};
|
||||
|
||||
enum UpdateRunInfoFlags
|
||||
{
|
||||
SEND_RUNINFO_START = 0,
|
||||
SEND_RUNINFO_NOW = 1,
|
||||
SEND_RUNINFO_FINISH = 2
|
||||
};
|
||||
|
||||
enum ProcessStatusFlags
|
||||
{
|
||||
PROCESS_RUNNING = (1 << 0)
|
||||
};
|
||||
|
||||
struct ProcessStatus
|
||||
{
|
||||
unsigned long m_dwRunID;
|
||||
unsigned long m_dwStatusFlags;
|
||||
unsigned long m_dwCustomStatus;
|
||||
unsigned long m_dwLastSetWindowHandleTime;
|
||||
unsigned long m_dwCurrentTime;
|
||||
|
||||
FILETIME m_CreationTIme;
|
||||
FILETIME m_ExitTime;
|
||||
FILETIME m_KernelTime;
|
||||
FILETIME m_UserTime;
|
||||
|
||||
PROCESS_MEMORY_COUNTERS m_ProcessMemoryCounters;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
|
||||
<09><><EFBFBD><EFBFBD> <20><>Ŷ : AuthUser, AddUser, DelUser, ModUser, PromoteUser
|
||||
AuthUser : <09><> -> <20><><EFBFBD><EFBFBD> (szID, szPassword),
|
||||
<09><><EFBFBD><EFBFBD> -> <20><> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09>ٸ<EFBFBD> <20><><EFBFBD>鿡<EFBFBD><E9BFA1> <20><><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> UserInfo <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<09>α<EFBFBD><CEB1><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´<DEB4>.
|
||||
|
||||
<09><><EFBFBD><EFBFBD> : <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
<09><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> : INVALID_PACKET_ERROR,
|
||||
AUTHORIZE_FAILED
|
||||
|
||||
AddUser : <09><> -> <20><><EFBFBD><EFBFBD> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09><><EFBFBD><EFBFBD> -> <20><> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09><><EFBFBD><EFBFBD> : <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>.
|
||||
<09><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> :
|
||||
|
||||
DelUser : <09><> -> <20><><EFBFBD><EFBFBD> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09><><EFBFBD><EFBFBD> -> <20><> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09><><EFBFBD><EFBFBD> : <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
<09><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> :
|
||||
|
||||
ModUser : <09><> -> <20><><EFBFBD><EFBFBD> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09><><EFBFBD><EFBFBD> -> <20><> (szID, szPassword, szFullName, dwIP, usAdminLevel)
|
||||
<09><><EFBFBD><EFBFBD> : <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
<09><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> :
|
||||
|
||||
|
||||
UserInfo : <09><> -> <20><><EFBFBD><EFBFBD>
|
||||
<09><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
<09><><EFBFBD><EFBFBD> -> <20><>
|
||||
<09><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ŭ UserInfo<66><6F><EFBFBD><EFBFBD>ü<EFBFBD><C3BC> <20>ڿ<EFBFBD> <20>پ<EFBFBD> <20>´<EFBFBD>.
|
||||
|
||||
<09><><EFBFBD><EFBFBD> : <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
<09><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> :
|
||||
|
||||
|
||||
Promote<74><65> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
0. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> Promote<74><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44> <20>ش<EFBFBD>.
|
||||
|
||||
1. Manager<65><72> <20><><EFBFBD>ų<EFBFBD> Master<65><72> Promote
|
||||
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Promote<74><65>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Master<65>ų<EFBFBD> Manager<65><72> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>.
|
||||
-> Ȯ<><C8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> id<69><64> Promote <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>.
|
||||
-> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>鿡<EFBFBD><E9BFA1> <20><><EFBFBD><EFBFBD> Promote<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>.
|
||||
|
||||
2. General<61><6C> Promote
|
||||
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Promote<74><65>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> General<61><6C><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
||||
-> Ȯ<><C8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> Promote <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD>ǰ<EFBFBD> Ȯ<><C8AE> <20><>Ŷ <20><><EFBFBD><EFBFBD>
|
||||
-> Ȯ<><C8AE> <20><>Ŷ<EFBFBD><C5B6><EFBFBD><EFBFBD>, ok<6F><6B> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѱ<EFBFBD><D1B1><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>鿡<EFBFBD><E9BFA1> Promote<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>.
|
||||
-> Ȯ<><C8AE> <20><>Ŷ<EFBFBD><C5B6><EFBFBD><EFBFBD>, no<6E><6F> <20><><EFBFBD><EFBFBD>, Promote<74><65>û<EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD>.
|
||||
|
||||
<20>ʿ<EFBFBD> <20><>Ŷ
|
||||
|
||||
1. ManageUserInfo (ManageServer -> ManageTool) ManagerID<49><44> <20><><EFBFBD><EFBFBD>
|
||||
2. Request Promote (ManageTool -> ManageServer) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
3. Request Promote Ack (ManageServer -> ManageTool) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
4. Request User Reaction (ManageServer -> ManageTool) <20>䱸<EFBFBD><E4B1B8> <20><><EFBFBD><EFBFBD>, <20>䱸 Ÿ<><C5B8>(usSubCommand)
|
||||
5. Request User Reaction Ack (ManageTool -> ManageServer) <20>䱸<EFBFBD><E4B1B8> <20><><EFBFBD><EFBFBD>, <20>䱸 <20><><EFBFBD><EFBFBD>(usSubCommand)
|
||||
*/
|
||||
|
||||
enum UserCommandError
|
||||
{
|
||||
NO_USER_COMMAND_ERROR = 0,
|
||||
INVALID_USER_PACKET_ERROR = 1,
|
||||
AUTHORIZE_FAILED = 2,
|
||||
CANNOT_AUTHORIZE_NOT_USER = 3,
|
||||
CANNOT_AUTHORIZE_INVALID_PASSWORD = 4,
|
||||
CANNOT_AUTHORIZE_INVALID_IPADDRESS = 5,
|
||||
ALREADY_LOGINED = 6,
|
||||
ADD_USER_FAILED = 7,
|
||||
DELETE_USER_FAILED = 8,
|
||||
MODIFY_USER_FAILED = 9,
|
||||
PROMOTE_USER_FAILED = 10,
|
||||
PROMOTE_TAKEBACK_FAILED = 11,
|
||||
REJECTED_PROMOTE_USER = 12,
|
||||
SEND_USER_LIST_FAILED = 13,
|
||||
|
||||
INVALID_USERMANAGE_RIGHTS = 14
|
||||
};
|
||||
|
||||
struct UserInfo
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ID_LEN = 16,
|
||||
PASS_LEN = 16,
|
||||
NAME_LEN = 32
|
||||
};
|
||||
|
||||
TCHAR szFullName[NAME_LEN];
|
||||
TCHAR szID[ID_LEN];
|
||||
TCHAR szPassword[PASS_LEN];
|
||||
|
||||
unsigned long dwIP;
|
||||
unsigned short usAdminLevel;
|
||||
unsigned short usSubCommand;
|
||||
};
|
||||
|
||||
struct UserCommand : public PktBase
|
||||
{
|
||||
unsigned char cUserInfoNum;
|
||||
// <20>ڿ<EFBFBD> UserInfo<66><6F><EFBFBD><EFBFBD>ü<EFBFBD><C3BC> cUserInfoNum<75><6D> <20><>ŭ <20>ٴ´<D9B4>.
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
Relay Command<6E><64> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
||||
<09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
|
||||
struct RunInfo
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_SERVER_NAME = 64,
|
||||
MAX_PATH_LEN = 260,
|
||||
MAX_OPT_LEN = 260
|
||||
};
|
||||
|
||||
unsigned long m_dwRunID; // RunID(primary key)
|
||||
unsigned long m_dwServerIP; // (network order ip)
|
||||
unsigned long m_dwPathID; // PathID
|
||||
unsigned long m_dwOptionID; // OptionID
|
||||
char m_szServerName[MAX_SERVER_NAME];
|
||||
char m_szPath[MAX_PATH_LEN];
|
||||
char m_szOption[MAX_OPT_LEN];
|
||||
};
|
||||
|
||||
struct PktManagePacket : public PktBase
|
||||
{
|
||||
unsigned long m_dwPID;
|
||||
unsigned long m_dwStatusFlag;
|
||||
unsigned long m_dwSubCommand;
|
||||
|
||||
PktManagePacket() : m_dwPID(GetCurrentProcessId()), m_dwStatusFlag(0), m_dwSubCommand(0) { }
|
||||
};
|
||||
|
||||
struct PktManagePing : public PktManagePacket
|
||||
{
|
||||
char m_szAppFullPathName[MAX_PATH];
|
||||
char m_szWindowName[MAX_PATH];
|
||||
char m_szCommandLine[MAX_PATH * 2];
|
||||
};
|
||||
|
||||
struct UserNumPair
|
||||
{
|
||||
unsigned long m_dwServerID;
|
||||
int m_nUserNum;
|
||||
};
|
||||
|
||||
struct PktManageUserNum : public PktManagePacket
|
||||
{
|
||||
unsigned long m_dwUserInfoNum;
|
||||
};
|
||||
|
||||
struct PktUserStat : public PktBase
|
||||
{
|
||||
enum SIZE
|
||||
{
|
||||
MAX_DATE = 20
|
||||
};
|
||||
|
||||
//time_t m_nTime;
|
||||
char m_szSendingTime[MAX_DATE];
|
||||
unsigned short m_usUserStatDataNum;
|
||||
};
|
||||
|
||||
struct UserStatData
|
||||
{
|
||||
unsigned int m_nNation; // <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>(AdminToolServer.ini <20><><EFBFBD><EFBFBD>)
|
||||
unsigned long m_dwServerID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD> <20><><EFBFBD><EFBFBD> ID
|
||||
unsigned int m_nUserNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
};
|
||||
|
||||
struct StatServerStatus : public PktBase
|
||||
{
|
||||
bool m_bGlobalStatServerOK; // <20>۷ι<DBB7> <20><><EFBFBD>輭<EFBFBD><E8BCAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool m_bLocalStatServerOK; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>輭<EFBFBD><E8BCAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,3 @@
|
||||
#include "stdafx.h"
|
||||
#include "PacketBase.h"
|
||||
#include "GMMemory.h"
|
||||
@@ -0,0 +1,177 @@
|
||||
#ifndef _PACKET_BASE
|
||||
#define _PACKET_BASE
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>۸<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
// SS_SMOOTH : <20><>Ȱ<EFBFBD><C8B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
// SS_LOADED : <20>ణ<EFBFBD><E0B0A3> <20><><EFBFBD>ϰ<EFBFBD> <20>ֽ<EFBFBD>. (50 % of bufferring)
|
||||
// SS_BUSY : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20>ֽ<EFBFBD>. (70 % of bufferring)
|
||||
// SS_VERYBUSY : <20>ؽ<EFBFBD><D8BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>Ŷ <20>ս<EFBFBD><D5BD><EFBFBD> <20>ʷ<EFBFBD><CAB7><EFBFBD> <20><> <20>ֽ<EFBFBD>.)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
union ServerInfo
|
||||
{
|
||||
enum ServerState
|
||||
{
|
||||
SS_SMOOTH, SS_LOADED, SS_BUSY, SS_VERYBUSY
|
||||
};
|
||||
|
||||
struct sSrvState
|
||||
{
|
||||
unsigned short wError; // <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
unsigned short wSrvState; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
sSrvState SrvState;
|
||||
unsigned long dwServerInfo;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// <20>⺻ <20><>Ŷ
|
||||
#pragma pack(1)
|
||||
|
||||
struct PktBase
|
||||
{
|
||||
enum PktBaseErr
|
||||
{
|
||||
NO_SERVER_ERR = 0,
|
||||
SERVER_ERROR = 1
|
||||
};
|
||||
|
||||
typedef unsigned char StartType;
|
||||
typedef unsigned char CMDType;
|
||||
typedef unsigned short LengthType;
|
||||
|
||||
protected:
|
||||
|
||||
StartType m_StartBit;
|
||||
CMDType m_Cmd;
|
||||
LengthType m_Len; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long m_CodePage;
|
||||
ServerInfo m_SrvInfo;
|
||||
|
||||
public:
|
||||
|
||||
inline void InitPtHead(unsigned short Len_In, unsigned char Cmd_In,
|
||||
unsigned short State_In, unsigned short Error_In);
|
||||
|
||||
inline void InitPtHead(unsigned short Len_In, unsigned char Cmd_In, unsigned long Tick_In);
|
||||
|
||||
inline void SetError(unsigned short Error) { m_SrvInfo.SrvState.wError = Error; }
|
||||
inline unsigned short GetError(void) { return m_SrvInfo.SrvState.wError; }
|
||||
inline unsigned short GetState(void) { return m_SrvInfo.SrvState.wSrvState; }
|
||||
|
||||
inline StartType GetStartBit(void) { return m_StartBit; }
|
||||
|
||||
inline void SetCodePage(unsigned long Code) { m_CodePage = Code; }
|
||||
inline unsigned long GetCodePage(void) { return m_CodePage; }
|
||||
|
||||
inline void SetServerInfo(unsigned long Info) { m_SrvInfo.dwServerInfo = Info; }
|
||||
inline unsigned long GetServerInfo(void) { return m_SrvInfo.dwServerInfo; }
|
||||
|
||||
inline CMDType GetCmd(void) const { return m_Cmd; }
|
||||
|
||||
inline bool IsCrypt(void);
|
||||
inline void SetCrypt(void);
|
||||
inline bool IsCompress(void);
|
||||
inline void SetCompress(void);
|
||||
inline LengthType GetUncompressLen(void);
|
||||
|
||||
inline void SetLen(LengthType Len);
|
||||
inline LengthType GetLen(void);
|
||||
};
|
||||
typedef PktBase* LPPktBase;
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>.
|
||||
struct PktBlockCompressedBase
|
||||
{
|
||||
public:
|
||||
|
||||
unsigned short GetLength() const { return m_usLength; }
|
||||
unsigned char GetCmd() const { return m_cCommand; }
|
||||
unsigned char GetExtra() const { return m_cExtra; }
|
||||
|
||||
void InitPtHead(unsigned short usLength, unsigned char cCmd, unsigned char cExtra)
|
||||
{
|
||||
m_usLength = usLength;
|
||||
m_cCommand = cCmd;
|
||||
m_cExtra = cExtra;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
unsigned short m_usLength;
|
||||
unsigned char m_cCommand;
|
||||
unsigned char m_cExtra;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
const unsigned int PktBaseSize = sizeof(PktBase);
|
||||
const PktBase::StartType StartBit = 0xFF; // <20><><EFBFBD><EFBFBD> <20><>Ʈ
|
||||
const PktBase::LengthType Crypt = 0x8000; // <20><>ȣȭ <20><><EFBFBD><EFBFBD> - 1000B
|
||||
const PktBase::LengthType Compress = 0x4000; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - 0100B
|
||||
const PktBase::LengthType LengthHdr = 0xC000; // 1100B
|
||||
const PktBase::LengthType LengthMask = 0x3FFF; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3BB> <20><><EFBFBD><EFBFBD>ũ <20><>. <20><><EFBFBD><EFBFBD> 14<31><34>Ʈ. <20>ִ<EFBFBD> 16383byte.
|
||||
const PktBase::LengthType PktMinLen = sizeof(PktBase);
|
||||
const PktBase::LengthType PktMaxLen = 16383;
|
||||
|
||||
const PktBase::LengthType MIN_PACKET_LEN = sizeof(PktBase);
|
||||
const PktBase::LengthType MAX_PACKET_LEN = 16383;
|
||||
|
||||
inline bool PktBase::IsCrypt(void) { return ((m_Len & Crypt) == Crypt) ? true : false; }
|
||||
inline void PktBase::SetCrypt(void) { m_Len |= Crypt; }
|
||||
|
||||
inline bool PktBase::IsCompress(void) { return ((m_Len & Compress) == Compress) ? true : false; }
|
||||
inline void PktBase::SetCompress(void) { m_Len |= Compress; }
|
||||
inline PktBase::LengthType PktBase::GetUncompressLen(void) { return PktMaxLen; }
|
||||
|
||||
inline void PktBase::SetLen(PktBase::LengthType Len) { m_Len = (m_Len & LengthHdr) | Len; }
|
||||
inline PktBase::LengthType PktBase::GetLen(void) { return m_Len & LengthMask; }
|
||||
|
||||
|
||||
|
||||
//Interface/////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ŷ <20>ش<EFBFBD> <20>ʱ<EFBFBD>ȭ
|
||||
//
|
||||
// Parameter :
|
||||
// 1st : <20><><EFBFBD><EFBFBD>[In]
|
||||
// 2st : Ŀ<>ǵ<EFBFBD>[In]
|
||||
// 3st : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>[In]
|
||||
// 4st : <20><><EFBFBD><EFBFBD>[In]
|
||||
//
|
||||
// Return :
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
inline void PktBase::InitPtHead(unsigned short Len_In, unsigned char Cmd_In,
|
||||
unsigned short State_In, unsigned short Error_In)
|
||||
{
|
||||
m_StartBit = StartBit;
|
||||
m_Cmd = Cmd_In;
|
||||
m_Len = Len_In;
|
||||
m_CodePage = 0;
|
||||
m_SrvInfo.SrvState.wSrvState = State_In;
|
||||
m_SrvInfo.SrvState.wError = Error_In;
|
||||
}
|
||||
|
||||
inline void PktBase::InitPtHead(unsigned short Len_In, unsigned char Cmd_In, unsigned long Tick_In)
|
||||
{
|
||||
m_StartBit = StartBit;
|
||||
m_Cmd = Cmd_In;
|
||||
m_Len = Len_In;
|
||||
m_CodePage = 0;
|
||||
m_SrvInfo.dwServerInfo = Tick_In;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,299 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ŷ Ŀ<>ǵ<EFBFBD>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef _PACKET_COMMAND_H_
|
||||
#define _PACKET_COMMAND_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Ŀ<>ǵ<EFBFBD>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
const PktBase::CMDType CmdNull = 0x00;
|
||||
|
||||
const PktBase::CMDType CmdAuthAccount = 0x01; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdServerGroup = 0x02; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdUserLogin = 0x03; // <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
const PktBase::CMDType CmdUserKill = 0x04; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharSelect = 0x05; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharCreate = 0x06; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharDelete = 0x07; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharLogin = 0x08; // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
const PktBase::CMDType CmdCharSuicide = 0x09; // ij<><C4B3><EFBFBD><EFBFBD> <20>ڻ<EFBFBD>
|
||||
const PktBase::CMDType CmdCharRespawn = 0x0A; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ȱ
|
||||
const PktBase::CMDType CmdCharMove = 0x0B; // ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> (P2P)
|
||||
const PktBase::CMDType CmdCharMoveUpdate = 0x0C; // ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdCharChat = 0x0D; // ij<><C4B3><EFBFBD><EFBFBD> ä<><C3A4>
|
||||
const PktBase::CMDType CmdCharAttack = 0x0E; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharCastObject = 0x0F; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharUseSkill = 0x10; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharTakeItem = 0x11; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharSwapItem = 0x12; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharRepairItem = 0x13; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharUseItem = 0x14; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharTradeItem = 0x15; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
const PktBase::CMDType CmdCharSkillLock = 0x16; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><>
|
||||
const PktBase::CMDType CmdCharSkillCreate = 0x17; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharSkillErase = 0x18; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharClassUpgrade = 0x19; // ij<><C4B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD>
|
||||
const PktBase::CMDType CmdCharShapeInfo = 0x1A; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
const PktBase::CMDType CmdCharIncreasePoint = 0x1B; // ij<><C4B3><EFBFBD><EFBFBD> <20>ɷ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharBindPosition = 0x1C; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharRequireInfo = 0x1D; // ij<><C4B3><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
|
||||
const PktBase::CMDType CmdCharUpdateAddress = 0x1E; // ij<><C4B3><EFBFBD><EFBFBD> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdCharPartyCmd = 0x1F; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharPartyMemInfo = 0x20; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ <20>ɹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharExchangeCmd = 0x21; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdSysConnectAgent = 0x22; // <20>ý<EFBFBD><C3BD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> (UDP <20>߰<EFBFBD>) # <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdSysPacketTransmit = 0x23; // <20>ý<EFBFBD><C3BD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> (UDP <20>߰<EFBFBD>) # <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharLogout = 0x24; // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD> <20>ƿ<EFBFBD>
|
||||
const PktBase::CMDType CmdDBGetData = 0x25; // DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdDBUpdateData = 0x26; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdAgentParty = 0x27; // DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>Ƽ
|
||||
const PktBase::CMDType CmdSysServerLogin = 0x28; // <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdServerZone = 0x29; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdGameCellInfo = 0x2A; // <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharInfo = 0x2B; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>տ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharAddressInfo = 0x2C; // ij<><C4B3><EFBFBD><EFBFBD> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharCellLogin = 0x2D; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
const PktBase::CMDType CmdCharCellLogout = 0x2E; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>αƿ<D7BE>
|
||||
const PktBase::CMDType CmdMonMove = 0x2F; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
const PktBase::CMDType CmdCharAttackInfo = 0x30; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
const PktBase::CMDType CmdCharAttacked = 0x31; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharAward = 0x32; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharItemInfo = 0x33; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharPickUp = 0x34; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharPullDown = 0x35; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharPickUpInfo = 0x36; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharPullDownInfo = 0x37; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharCastObjectInfo = 0x38; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharInstallSocket = 0x39; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ
|
||||
const PktBase::CMDType CmdCharLevelUp = 0x3A; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
const PktBase::CMDType CmdCharPartyInfo = 0x3B; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharUpgradeItem = 0x3C; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD>
|
||||
const PktBase::CMDType CmdCharHPRegen = 0x3D; // ij<><C4B3><EFBFBD><EFBFBD> HP <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharLevelUpInfo = 0x3E; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharSplitItem = 0x3F; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdUpdateUIDTable = 0x40; // UID <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdCharQuickSlotMove = 0x41; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
const PktBase::CMDType CmdCharSwitchEQ = 0x42; // <20><><EFBFBD><EFBFBD> <20>ٲٱ<D9B2>
|
||||
const PktBase::CMDType CmdSysMngerRegistry = 0x43; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdSysMngerRequest = 0x44; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û
|
||||
const PktBase::CMDType CmdSysMngerResponse = 0x45; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharTakeItems = 0x46; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharTakeGold = 0x47; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharExchangeItem = 0x48; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ
|
||||
const PktBase::CMDType CmdCellBroadCasting = 0x49; // <20><> <20><><EFBFBD>ε<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdSysPatchAddress = 0x4A; // <20><>ġ <20>ּ<EFBFBD>
|
||||
const PktBase::CMDType CmdCharPartyCmdInfo = 0x4B; // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdServerLog = 0x4C; // <20>α<EFBFBD> <20><><EFBFBD><EFBFBD> (???)
|
||||
const PktBase::CMDType CmdCharWhisper = 0x4D; // ij<><C4B3><EFBFBD><EFBFBD> <20>ӼӸ<D3BC>
|
||||
const PktBase::CMDType CmdSysServerVerUpdate = 0x4E; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdSysMng = 0x4F; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ (<28>ӽ<EFBFBD>) (???)
|
||||
const PktBase::CMDType CmdSysChannelUpdate = 0x50; // <20><><EFBFBD><EFBFBD> ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdCharPartyFind = 0x51; // <20><>Ƽ ã<><C3A3>
|
||||
const PktBase::CMDType CmdCharPartyMemData = 0x52; // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharControlOption = 0x53; // ij<><C4B3><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharDuelCmd = 0x54; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharFameInfo = 0x55; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdLoginServerList = 0x56; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ #!! <20><>ȣ <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> !!#
|
||||
|
||||
const PktBase::CMDType CmdCharSpellInfo = 0x57; // ij<><C4B3><EFBFBD><EFBFBD> æƮ&<26><>æƮ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharSkillUnLock = 0x58; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdSysPing = 0x59; // <20><><EFBFBD><EFBFBD> <20><> <20><>Ŷ
|
||||
const PktBase::CMDType CmdCharMoveZone = 0x5A; // <20><> <20>̵<EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdAgentZone = 0x5B; // <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdDeposit = 0x5C; // â<><C3A2> ó<><C3B3> <20><>Ŷ (Client <--> GameServer)
|
||||
const PktBase::CMDType CmdDepositUpdate = 0x5D; // â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>Ŷ (GameServer <--> DBAgent)
|
||||
|
||||
const PktBase::CMDType CmdCharStallOpen = 0x5E; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharStallRegisterItem = 0x5F; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharStallEnter = 0x60; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharStallItemInfo = 0x61; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharAdminCmd = 0x62; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharTeamBattleInfo = 0x63; // <20><><EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdFriendAddRequest = 0x64; // ģ<><C4A3> <20>߰<EFBFBD>
|
||||
const PktBase::CMDType CmdFriendRemoveRequest = 0x65; // ģ<><C4A3> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdFriendEtcRequest = 0x66; // ģ<><C4A3> <20><>Ÿ
|
||||
const PktBase::CMDType CmdFriendAck = 0x67; // ģ<><C4A3> Ack
|
||||
const PktBase::CMDType CmdFriendDB = 0x68; // ģ<><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
const PktBase::CMDType CmdEliteBonus = 0x69; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ʽ<EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharStartQuest = 0x6A; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharOperateTrigger = 0x6B; // Ʈ<><C6AE><EFBFBD><EFBFBD> <20>ߵ<EFBFBD>
|
||||
const PktBase::CMDType CmdQuestDB = 0x6C; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> (DB<44><42> <20><><EFBFBD>̺<EFBFBD>/<2F>ε<EFBFBD>, ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharEndQuest = 0x6D; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharDisappearItem = 0x6E; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharAuthorizePanel = 0x6F; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>dz<EFBFBD>
|
||||
const PktBase::CMDType CmdCharPeaceMode = 0x70; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdConfigInfoDB = 0x71; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharAutoRouting = 0x72; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdRankingInfo = 0x73; // <20><>ŷ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharStateRedistribution = 0x74; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>й<EFBFBD> (Ŭ<><C5AC><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD>·<EFBFBD>)
|
||||
const PktBase::CMDType CmdBillingTimeoutNotify = 0x75; // <20><><EFBFBD><EFBFBD> Ÿ<>Ӿƿ<D3BE> Notify<66><79><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdAdminToolGetData = 0x76; // <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DBAgent<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
const PktBase::CMDType CmdAdminToolSetData = 0x77; // <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DBAgent<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
const PktBase::CMDType CmdEventDropItem = 0x78; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdCharCancelQuest = 0x79; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdBillingTimeCheckNotify = 0x7A; // <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> üũ
|
||||
const PktBase::CMDType CmdCharLotteryResult = 0x7B; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharSummonCmd = 0x7C; // <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdChatClientLogin = 0x7D; // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>
|
||||
const PktBase::CMDType CmdChatLogin = 0x7E; // <20>߰輭<DFB0><E8BCAD><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20>α<EFBFBD><CEB1><EFBFBD> <20><>.
|
||||
const PktBase::CMDType CmdChatLogout = 0x7F; // <20>߰輭<DFB0><E8BCAD><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20>αƿ<D7BE> <20><>.
|
||||
const PktBase::CMDType CmdChatInfoChanged = 0x80; // <20>߰輭<DFB0><E8BCAD><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>.
|
||||
|
||||
const PktBase::CMDType CmdCharSummon = 0x81; // <20><>ȯ
|
||||
|
||||
const PktBase::CMDType CmdJapanAuthAccount = 0x82; // <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (ID, Password<72><64><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ尡 <20>´<EFBFBD>.)
|
||||
|
||||
const PktBase::CMDType CmdCharBattleGroundRespawn = 0x83; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>Ʋ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharRespawnWaitQueue = 0x84; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ť <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><>Ʋ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdStatueInfo = 0x85; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCameraScript = 0x86; // ī<><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ
|
||||
const PktBase::CMDType CmdCharEquipDurability = 0x87; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCreateGuild = 0x88; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildCmd = 0x89; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildMark = 0x8A; // <20><><EFBFBD><EFBFBD> <20><>ũ <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildLevel = 0x8B; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildRelation = 0x8C; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildList = 0x8D; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdGuildDB = 0x8E; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildRight = 0x8F; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildMemberList = 0x90; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
const PktBase::CMDType CmdMyGuildInfo = 0x91; // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildSafe = 0x92; // <20><><EFBFBD><EFBFBD> <20>ݰ<EFBFBD>
|
||||
const PktBase::CMDType CmdGuildMemberInfoUpdate = 0x93; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
const PktBase::CMDType CmdCharStatusRetrain = 0x94; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD> <20><><EFBFBD>Ʒ<EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdSysServerLogout = 0x95; // <20><><EFBFBD><EFBFBD> <20>αƿ<D7BE>
|
||||
|
||||
const PktBase::CMDType CmdCharUseCashItem = 0x96; // ij<><C4B3><EFBFBD><EFBFBD> ij<><C4B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdExtraEvent = 0x97; // <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
//const PktBase::CMDType CmdCharPartyAddress = 0x96; // <20><>Ƽ<EFBFBD><C6BC> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//const PktBase::CMDType CmdCharPartyMemAddress = 0x97; // <20><>Ƽ<EFBFBD><C6BC> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
|
||||
const PktBase::CMDType CmdBGServerMapList = 0x98; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û
|
||||
const PktBase::CMDType CmdBGServerResultList = 0x99; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û
|
||||
const PktBase::CMDType CmdBGServerMoveZone = 0x9A; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><>) <20>̵<EFBFBD> (<28><> <20>̵<EFBFBD>)
|
||||
const PktBase::CMDType CmdBGServerMileageChange = 0x9B; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȯ<><C8AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdBGServerCharSlot = 0x9C; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
|
||||
|
||||
const PktBase::CMDType CmdHanBTNWarning = 0x9D; // <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
||||
const PktBase::CMDType CmdHanBTNUserKill = 0x9E; // <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharRepairAllItem = 0x9F; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCSAuth = 0xA0; // <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharItemChemical = 0xA1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ռ<EFBFBD>
|
||||
const PktBase::CMDType CmdItemQtyCheck = 0xA2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildInclination = 0xA3; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGuildMemberFameUpdate = 0xA4; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
const PktBase::CMDType CmdCastleInfo = 0xA5; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (DBAgentServer -> GameServer)
|
||||
const PktBase::CMDType CmdCampInfo = 0xA6; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (DBAgentServer -> GameServer)
|
||||
const PktBase::CMDType CmdCreateCastle = 0xA7; // <20><> <20><><EFBFBD><EFBFBD> (GameServer -> Client)
|
||||
const PktBase::CMDType CmdCreateCamp = 0xA8; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Client <- GameServer -> DBAgentServer)
|
||||
const PktBase::CMDType CmdCreateSiegeArms = 0xA9; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Client <- GameServer -> DBAgentServer)
|
||||
const PktBase::CMDType CmdCastleCmd = 0xAA; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
const PktBase::CMDType CmdCampCmd = 0xAB; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
const PktBase::CMDType CmdSiegeArmsCmd = 0xAC; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
const PktBase::CMDType CmdCastleRight = 0xAD; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
const PktBase::CMDType CmdCampRight = 0xAE; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
const PktBase::CMDType CmdSiegeBroadCast = 0xAF; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ
|
||||
const PktBase::CMDType CmdGameTimeInfo = 0xB0; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdStealthInfo = 0xB1; // <20><><EFBFBD>ڽ<EFBFBD> <20><><EFBFBD>밡<EFBFBD><EBB0A1> <20><><EFBFBD><EFBFBD>
|
||||
//const PktBase::CMDType CmdCastleUpdate = 0xB2; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ (DBAgentServer -> GameServer -> Client)
|
||||
|
||||
const PktBase::CMDType CmdCellBroadCast2nd = 0xB3; // <20><> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
|
||||
const PktBase::CMDType CmdCharRespawnInfo = 0xB4; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>)
|
||||
const PktBase::CMDType CmdCharRespawnAreaInfo = 0xB5; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCharEquipShopInfo = 0xB6; // NPC <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdSiegeBroadCast2nd = 0xB7; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharItemOptionGraft = 0xB8; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
const PktBase::CMDType CmdCharItemCompensation = 0xB9; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdGuildMemberGoldUpdate = 0xBA; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
const PktBase::CMDType CmdCampMessage = 0xBB; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD> <20><>Ŷ
|
||||
const PktBase::CMDType CmdCharDeadInfo = 0xBC; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdNewSiegeBroadCast = 0xBD; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>Ǿ<EFBFBD> Ʈ<><C6AE> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
|
||||
const PktBase::CMDType CmdSelectAccountNation = 0xBE; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
|
||||
const PktBase::CMDType CmdNationChangeResult = 0xBF; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
|
||||
const PktBase::CMDType CmdUnifiedCharInfo = 0xC0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdUnifiedCharSelect = 0xC1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> / â<><C3A2> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdChatBan = 0xC2; // ä<><C3A4> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdGiveItemToTempInven = 0xC3; // <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCharNameChange = 0xC4; // ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD> <20>ٲٱ<D9B2>
|
||||
|
||||
const PktBase::CMDType CmdFertilityInfo = 0xC5; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (DBAgentServer -> GameServer)
|
||||
const PktBase::CMDType CmdMiningCampMineralInfo = 0xC6; // ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (GameServer -> Client)
|
||||
const PktBase::CMDType CmdProcessMining = 0xC7; // ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdWorldWeaponInfo = 0xC8; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (DBAgentServer -> GameServer)
|
||||
const PktBase::CMDType CmdCampShopInfo = 0xC9; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (GameServer -> DBAgentServer)
|
||||
|
||||
const PktBase::CMDType CmdCharInstallRuneSocket = 0xCA; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
const PktBase::CMDType CmdTakeMaterial = 0xCB; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCastleTaxMove = 0xCC; // <20><><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCastleSiegeCount = 0xCD; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdCompressedPacket = 0xCE; // <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
const PktBase::CMDType CmdTakeCastleJewel = 0xCF; // <20><> <20><>¡<EFBFBD><C2A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
const PktBase::CMDType CmdCastleMineralInfo = 0xD0; // <20><><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// (GS -> DBAS), (GS -> Client)
|
||||
|
||||
const PktBase::CMDType CmdWarOnOff = 0xD1; // <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GS).
|
||||
|
||||
const PktBase::CMDType CmdRealmPoint = 0xD2; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> (DBAgentServer -> GameServer -> Client).
|
||||
|
||||
const PktBase::CMDType CmdStatueCmd = 0xD3; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD> <20><>Ŷ
|
||||
|
||||
const PktBase::CMDType CmdSaveEnemy = 0xD4; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (DBAgentServer <-> GameServer).
|
||||
|
||||
const PktBase::CMDType CmdGuildHostilityList = 0xD5; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><>Ŷ
|
||||
const PktBase::CMDType CmdGuildRelationInfo = 0xD6; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Խ<EFBFBD> <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><>Ŷ
|
||||
|
||||
const PktBase::CMDType CmdGuildPosition = 0xD7; // <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
const PktBase::CMDType CmdAdminCommandLog = 0xD8; // <20><EFBFBD><EEBFB5> <20><><EFBFBD>ɾ<EFBFBD> <20>α<EFBFBD> <20><>Ŷ.
|
||||
|
||||
const PktBase::CMDType CmdChatBanInfo = 0xD9; // ä<>ñ<EFBFBD><C3B1><EFBFBD> <20><><EFBFBD><EFBFBD> (GameServer <-> ChatServer).
|
||||
|
||||
const PktBase::CMDType CmdKeyInfo = 0xDA; // <20><><EFBFBD>̽<EFBFBD>ƽ Ű <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
const PktBase::CMDType CmdFinalPacketNum = 0xDB; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><>ȣ
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,93 @@
|
||||
#ifndef _RYL_SERVERLIB_PACKET_DISPATHCH_TABLE_H_
|
||||
#define _RYL_SERVERLIB_PACKET_DISPATHCH_TABLE_H_
|
||||
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
|
||||
template<typename FunctionType>
|
||||
class CPacketDispatchTable
|
||||
{
|
||||
public:
|
||||
|
||||
typedef std::pair<unsigned long, FunctionType> DispatchType;
|
||||
typedef std::vector<DispatchType> DispatchMap;
|
||||
|
||||
FunctionType GetDispatch(unsigned long dwCmd);
|
||||
|
||||
protected:
|
||||
|
||||
struct PredFirstPairOnly
|
||||
{
|
||||
template<typename Ty1, typename Ty2>
|
||||
bool operator () (const std::pair<Ty1, Ty2>& lhs, const std::pair<Ty1, Ty2>& rhs)
|
||||
{
|
||||
return lhs.first < rhs.first;
|
||||
}
|
||||
};
|
||||
|
||||
CPacketDispatchTable(size_t nReservedSize) { m_DispatchMap.reserve(nReservedSize); }
|
||||
|
||||
bool AddDispatch(unsigned long dwCmd, FunctionType fnDispatch);
|
||||
void RemoveDispatch(unsigned long dwCmd);
|
||||
|
||||
private:
|
||||
|
||||
DispatchMap m_DispatchMap;
|
||||
PredFirstPairOnly m_PredFirstPairOnly;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
template<typename FunctionType>
|
||||
FunctionType CPacketDispatchTable<FunctionType>::GetDispatch(unsigned long dwCmd)
|
||||
{
|
||||
DispatchType findVal(dwCmd, FunctionType());
|
||||
|
||||
DispatchMap::iterator end = m_DispatchMap.end();
|
||||
DispatchMap::iterator pos = std::lower_bound(m_DispatchMap.begin(),
|
||||
end, findVal, m_PredFirstPairOnly);
|
||||
|
||||
return (pos != end && !m_PredFirstPairOnly(findVal, *pos)) ? pos->second : findVal.second;
|
||||
}
|
||||
|
||||
|
||||
template<typename FunctionType>
|
||||
bool CPacketDispatchTable<FunctionType>::AddDispatch(unsigned long dwCmd, FunctionType lpDispatch)
|
||||
{
|
||||
DispatchType addVal(dwCmd, lpDispatch);
|
||||
|
||||
DispatchMap::iterator end = m_DispatchMap.end();
|
||||
DispatchMap::iterator pos = std::lower_bound(m_DispatchMap.begin(),
|
||||
end, addVal, m_PredFirstPairOnly);
|
||||
|
||||
if(pos == end || m_PredFirstPairOnly(addVal, *pos))
|
||||
{
|
||||
// <20>Ȱ<EFBFBD><C8B0><EFBFBD> Ŀ<>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD> <20>õ<EFBFBD>. <20>׳<EFBFBD> <20>ִ´<D6B4>.
|
||||
m_DispatchMap.insert(pos, addVal);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
template<typename FunctionType>
|
||||
void CPacketDispatchTable<FunctionType>::RemoveDispatch(unsigned long dwCmd)
|
||||
{
|
||||
DispatchType removeVal(dwCmd, FunctionType());
|
||||
|
||||
DispatchMap::iterator end = m_DispatchMap.end();
|
||||
DispatchMap::iterator pos = std::lower_bound(m_DispatchMap.begin(),
|
||||
end, removeVal, m_PredFirstPairOnly);
|
||||
|
||||
if(pos != end && !m_PredFirstPairOnly(removeVal, *pos))
|
||||
{
|
||||
// <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
m_DispatchMap.erase(pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,274 @@
|
||||
#include "stdafx.h"
|
||||
#include "PacketStatistics.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
#include <Utility/Debug/DebugUtils.h>
|
||||
|
||||
void MakeBytesToString(char* szString, unsigned long dwStringLen, double fBytes)
|
||||
{
|
||||
_snprintf(szString, dwStringLen - 1, "%16.4fMb/%16.4fKb/%16.4fBytes",
|
||||
fBytes / 1024 / 1024, fBytes / 1024, fBytes);
|
||||
|
||||
szString[dwStringLen - 1] = 0;
|
||||
}
|
||||
|
||||
void LogPacketStatData(FILE* logFile, const char* szTotalSummeryHeader, time_t tDiffTime,
|
||||
CPacketStatistics::PacketData* lpPos, CPacketStatistics::PacketData* lpEnd)
|
||||
|
||||
|
||||
{
|
||||
const int MAX_BUFFER = 128;
|
||||
char szTotalBytes[MAX_BUFFER];
|
||||
CPacketStatistics::PacketData totalData;
|
||||
|
||||
for(unsigned char cCmd = 0; lpPos != lpEnd; ++lpPos, ++cCmd)
|
||||
{
|
||||
if (0.0f != lpPos->m_Count)
|
||||
{
|
||||
MakeBytesToString(szTotalBytes, MAX_BUFFER, lpPos->m_Bytes);
|
||||
|
||||
fprintf(logFile, "\t %3d(0x%02X) : %16.4f : (%s) : %16.4fBytes/Sec\n",
|
||||
cCmd, cCmd, lpPos->m_Count, szTotalBytes,
|
||||
lpPos->m_Bytes / tDiffTime);
|
||||
|
||||
totalData.m_Bytes += lpPos->m_Bytes;
|
||||
totalData.m_Count += lpPos->m_Count;
|
||||
}
|
||||
}
|
||||
|
||||
MakeBytesToString(szTotalBytes, MAX_BUFFER, totalData.m_Bytes);
|
||||
|
||||
fprintf(logFile,
|
||||
"\n %s"
|
||||
"\n Total Data : %s/%16.4fBytes/Sec"
|
||||
"\n Total Count : %16.4f/%16.4f(Count/Sec)\n\n",
|
||||
szTotalSummeryHeader, szTotalBytes, totalData.m_Bytes / tDiffTime,
|
||||
totalData.m_Count, totalData.m_Count / tDiffTime);
|
||||
}
|
||||
|
||||
|
||||
CPacketStatistics::PacketData::PacketData()
|
||||
: m_Bytes(0.0f)
|
||||
, m_Count(0.0f)
|
||||
{
|
||||
|
||||
}
|
||||
void CPacketStatistics::PacketData::Clear()
|
||||
{
|
||||
m_Bytes = m_Count = 0.0f;
|
||||
}
|
||||
|
||||
CPacketStatistics::CompressData::CompressData()
|
||||
: m_CompressCount(0.0f)
|
||||
, m_FailedCount(0.0f)
|
||||
, m_TotalBytes(0.0f)
|
||||
, m_TotalCompressed(0.0f)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CPacketStatistics::CompressData::Clear()
|
||||
{
|
||||
m_CompressCount = m_FailedCount =
|
||||
m_TotalBytes = m_TotalCompressed = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
CPacketStatistics::CPacketStatistics()
|
||||
: m_StartTime(time(0)), m_fnPrefix(0), m_fnPostfix(0)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
CPacketStatistics::~CPacketStatistics()
|
||||
{
|
||||
Log();
|
||||
}
|
||||
|
||||
|
||||
CPacketStatistics& CPacketStatistics::GetInstance()
|
||||
{
|
||||
static CPacketStatistics packetStatistics;
|
||||
return packetStatistics;
|
||||
}
|
||||
|
||||
|
||||
void CPacketStatistics::Recv(unsigned char cCmd, unsigned long dwPacketSize)
|
||||
{
|
||||
PacketData& packetData = m_RecvData[cCmd];
|
||||
|
||||
packetData.m_Bytes += dwPacketSize;
|
||||
++packetData.m_Count;
|
||||
}
|
||||
|
||||
void CPacketStatistics::Send(unsigned char cCmd, unsigned long dwPacketSize)
|
||||
{
|
||||
PacketData& packetData = m_SendData[cCmd];
|
||||
|
||||
packetData.m_Bytes += dwPacketSize;
|
||||
++packetData.m_Count;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ۼ<EFBFBD>
|
||||
void CPacketStatistics::CheckCompression(unsigned char cCmd,
|
||||
unsigned long dwSrcSize, unsigned long dwDstSize)
|
||||
{
|
||||
CompressData& compressData = m_CompressionData[cCmd];
|
||||
|
||||
compressData.m_TotalBytes += dwSrcSize;
|
||||
compressData.m_TotalCompressed += dwDstSize;
|
||||
|
||||
++compressData.m_CompressCount;
|
||||
if (dwSrcSize < dwDstSize) { ++compressData.m_FailedCount; }
|
||||
}
|
||||
|
||||
void CPacketStatistics::Clear()
|
||||
{
|
||||
std::for_each(m_RecvData, m_RecvData + UCHAR_MAX, std::mem_fun_ref(&PacketData::Clear));
|
||||
std::for_each(m_SendData, m_SendData + UCHAR_MAX, std::mem_fun_ref(&PacketData::Clear));
|
||||
std::for_each(m_CompressionData, m_CompressionData + UCHAR_MAX, std::mem_fun_ref(&CompressData::Clear));
|
||||
|
||||
m_StartTime = time(0);
|
||||
}
|
||||
|
||||
void CPacketStatistics::SetUserMessageFunc(FnPrintUserMessage fnPreFix, FnPrintUserMessage fnPostFix)
|
||||
{
|
||||
m_fnPrefix = fnPreFix;
|
||||
m_fnPostfix = fnPostFix;
|
||||
}
|
||||
|
||||
bool CPacketStatistics::Log()
|
||||
{
|
||||
char strLogPath[MAX_PATH];
|
||||
char strLogFileName[MAX_PATH];
|
||||
|
||||
DbgUtils::SetProgramName(strLogPath, MAX_PATH, 0);
|
||||
|
||||
// create the directory if it doesn't exist
|
||||
if (INVALID_FILE_ATTRIBUTES == GetFileAttributes(strLogPath) &&
|
||||
!CreateDirectory(strLogPath, 0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned long dwSpinCount = 0;
|
||||
unsigned long dwMaxFileSize = 50 * 1024 * 1024;
|
||||
|
||||
while (true)
|
||||
{
|
||||
_sntprintf(strLogFileName, MAX_PATH, "%s/Statistics-%s-%05d.log",
|
||||
strLogPath, strLogPath, dwSpinCount);
|
||||
|
||||
HANDLE hLogFile = CreateFile(strLogFileName, GENERIC_WRITE,
|
||||
FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
|
||||
|
||||
if(INVALID_HANDLE_VALUE == hLogFile)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned long dwHighValue = 0;
|
||||
unsigned long dwFileSize = GetFileSize(hLogFile, &dwHighValue);
|
||||
|
||||
CloseHandle(hLogFile);
|
||||
|
||||
if(dwHighValue == 0 && dwFileSize < dwMaxFileSize)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
++dwSpinCount;
|
||||
}
|
||||
|
||||
FILE* logFile = fopen(strLogFileName, "at");
|
||||
|
||||
if(0 != logFile)
|
||||
{
|
||||
// Prefix
|
||||
if(0 != m_fnPrefix)
|
||||
{
|
||||
m_fnPrefix(logFile);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>α<EFBFBD>
|
||||
time_t tCurrent = time(0);
|
||||
time_t tDiffTime = tCurrent - m_StartTime;
|
||||
|
||||
time_t tDiffHour = tDiffTime / 3600;
|
||||
time_t tDiffMinute = (tDiffTime % 3600) / 60;
|
||||
time_t tDiffSecond = (tDiffTime % 3600) % 60;
|
||||
|
||||
struct tm tmServerStart = *localtime(&m_StartTime);
|
||||
struct tm tmCurrent = *localtime(&tCurrent);
|
||||
|
||||
fprintf(logFile, "\t-- Server Packet Statistics -- \n"
|
||||
"\tLog Start Time : %04dyear %02dmon %02dday %02dhour %02dmin %02dsec\n"
|
||||
"\tCurrent Log Time : %04dyear %02dmon %02dday %02dhour %02dmin %02dsec\n"
|
||||
"\tLog Duration : %02dhour %02dmin %02dsec\n\n",
|
||||
|
||||
tmServerStart.tm_year + 1900, tmServerStart.tm_mon + 1, tmServerStart.tm_mday,
|
||||
tmServerStart.tm_hour, tmServerStart.tm_min, tmServerStart.tm_sec,
|
||||
|
||||
tmCurrent.tm_year + 1900, tmCurrent.tm_mon + 1, tmCurrent.tm_mday,
|
||||
tmCurrent.tm_hour, tmCurrent.tm_min, tmCurrent.tm_sec,
|
||||
|
||||
tDiffHour, tDiffMinute, tDiffSecond);
|
||||
|
||||
const int MAX_BUFFER = 128;
|
||||
char szTotalBytes[MAX_BUFFER];
|
||||
char szCompressedBytes[MAX_BUFFER];
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD>
|
||||
LogPacketStatData(logFile, "Recv Packet", tDiffTime, m_RecvData, m_RecvData + UCHAR_MAX);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD>
|
||||
LogPacketStatData(logFile, "Send Packet", tDiffTime, m_SendData, m_SendData + UCHAR_MAX);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD>
|
||||
CompressData* lpCompressPos = m_CompressionData;
|
||||
CompressData* lpCompressEnd = m_CompressionData + UCHAR_MAX;
|
||||
|
||||
CompressData totalCount;
|
||||
for(unsigned char cCmd = 0; lpCompressPos != lpCompressEnd; ++lpCompressPos, ++cCmd)
|
||||
{
|
||||
if (0.0f != lpCompressPos->m_CompressCount)
|
||||
{
|
||||
MakeBytesToString(szTotalBytes, MAX_BUFFER, lpCompressPos->m_TotalBytes);
|
||||
MakeBytesToString(szCompressedBytes, MAX_BUFFER, lpCompressPos->m_TotalCompressed);
|
||||
|
||||
fprintf (logFile, "\t %3d(0x%02X) : %16.4f(Failed %16.4f) : Total(%16s) : Compressed(%16s)\n",
|
||||
cCmd, cCmd, lpCompressPos->m_CompressCount, lpCompressPos->m_FailedCount,
|
||||
szTotalBytes, szCompressedBytes);
|
||||
|
||||
totalCount.m_CompressCount += lpCompressPos->m_CompressCount;
|
||||
totalCount.m_FailedCount += lpCompressPos->m_FailedCount;
|
||||
totalCount.m_TotalBytes += lpCompressPos->m_TotalBytes;
|
||||
totalCount.m_TotalCompressed += lpCompressPos->m_TotalCompressed;
|
||||
}
|
||||
}
|
||||
|
||||
MakeBytesToString(szTotalBytes, MAX_BUFFER, totalCount.m_TotalBytes);
|
||||
MakeBytesToString(szCompressedBytes, MAX_BUFFER, totalCount.m_TotalCompressed);
|
||||
|
||||
fprintf(logFile,
|
||||
"\n Check compression status - not actually sent"
|
||||
"\n Total Data : %s"
|
||||
"\n Total Data Compressed : %s"
|
||||
"\n Total Count : %16.4f/Failed(%16.4f)\n\n\n",
|
||||
szTotalBytes, szCompressedBytes, totalCount.m_CompressCount, totalCount.m_FailedCount);
|
||||
|
||||
// Postfix
|
||||
if(0 != m_fnPostfix)
|
||||
{
|
||||
m_fnPostfix(logFile);
|
||||
}
|
||||
|
||||
fclose(logFile);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
#ifndef _GAMA_PACKET_STATISTICS_H_
|
||||
#define _GAMA_PACKET_STATISTICS_H_
|
||||
|
||||
#include <climits>
|
||||
#include <ctime>
|
||||
|
||||
class CPacketStatistics
|
||||
{
|
||||
public:
|
||||
|
||||
struct PacketData
|
||||
{
|
||||
double m_Bytes;
|
||||
double m_Count;
|
||||
|
||||
PacketData();
|
||||
void Clear();
|
||||
};
|
||||
|
||||
struct CompressData
|
||||
{
|
||||
double m_CompressCount;
|
||||
double m_FailedCount;
|
||||
|
||||
double m_TotalBytes;
|
||||
double m_TotalCompressed;
|
||||
|
||||
CompressData();
|
||||
void Clear();
|
||||
};
|
||||
|
||||
typedef void (*FnPrintUserMessage) (FILE* fDescriptor);
|
||||
|
||||
static CPacketStatistics& GetInstance();
|
||||
|
||||
void Recv(unsigned char cCmd, unsigned long dwPacketSize); // <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ)
|
||||
void Send(unsigned char cCmd, unsigned long dwPacketSize); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ)
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ۼ<EFBFBD>
|
||||
void CheckCompression(unsigned char cCmd, unsigned long dwSrcSize, unsigned long dwDstSize);
|
||||
|
||||
void Clear();
|
||||
bool Log();
|
||||
|
||||
void SetUserMessageFunc(FnPrintUserMessage fnPreFix = 0, FnPrintUserMessage fnPostFix = 0);
|
||||
|
||||
private:
|
||||
|
||||
CPacketStatistics();
|
||||
~CPacketStatistics();
|
||||
|
||||
time_t m_StartTime;
|
||||
FnPrintUserMessage m_fnPrefix;
|
||||
FnPrintUserMessage m_fnPostfix;
|
||||
|
||||
PacketData m_RecvData[UCHAR_MAX];
|
||||
PacketData m_SendData[UCHAR_MAX];
|
||||
|
||||
CompressData m_CompressionData[UCHAR_MAX];
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,237 @@
|
||||
#ifndef _AUTHSERVER_TO_DBAGENT_SERVER_PACKET_H_
|
||||
#define _AUTHSERVER_TO_DBAGENT_SERVER_PACKET_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <DB/DBDefine.h>
|
||||
#include "DataPacket.h"
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><>û AuthServer -> DBAgentServer
|
||||
typedef struct PktULD* LPPktULD;
|
||||
struct PktULD : public PktDD
|
||||
{
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwUserID;
|
||||
|
||||
IN_ADDR m_Address;
|
||||
|
||||
unsigned char m_cLoginType;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> DBAgentServer -> AuthServer
|
||||
typedef struct PktULDAck* LPPktULDAck;
|
||||
struct PktULDAck : public PktDD
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_CHAR_VIEW = 5
|
||||
};
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
sGuildData m_GuildData[MAX_CHAR_VIEW];
|
||||
CHAR_VIEW m_CharView[MAX_CHAR_VIEW];
|
||||
|
||||
STORE_INFO m_sStoreInfo;
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned char m_cAccountNation; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
int m_nPlayTime; // BillingType<70><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>¥. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)
|
||||
unsigned short m_usAdminLevel;
|
||||
unsigned char m_cBillingType; // D : <20><><EFBFBD><EFBFBD> T : <20><><EFBFBD><EFBFBD> N : <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cBillingUser; // 0 : <20><><EFBFBD><EFBFBD> 1 : <20>ǽù<C7BD>
|
||||
|
||||
unsigned char m_cLoginType;
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>αƿ<D7BE> AuthServer -> DBAgentServer
|
||||
typedef struct PktULoD *LPPktULoD;
|
||||
struct PktULoD : public PktDD
|
||||
{
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwUserID;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
typedef struct PktUMvD *LPPktUMvD;
|
||||
struct PktUMvD : public PktDD
|
||||
{
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwUserID;
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DBAgentServer -> AuthServer
|
||||
typedef struct PktSSD *LPPktSSD;
|
||||
struct PktSSD : public PktDD
|
||||
{
|
||||
enum
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MaxName = 24,
|
||||
MaxPass = 36,
|
||||
};
|
||||
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwUserID;
|
||||
char m_AccountName[MaxName];
|
||||
// edith 2008.01.15 <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>۾<EFBFBD>
|
||||
char m_Password[MaxPass];
|
||||
|
||||
unsigned char m_cAgentServerType;
|
||||
unsigned char m_cFirstLogin;
|
||||
|
||||
IN_ADDR m_Address;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
* cAgentServerType <20><><EFBFBD><EFBFBD>
|
||||
CServerSetup::AgentServerType <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
|
||||
|
||||
Part1 = 20,
|
||||
Part1Unified = 21,
|
||||
Part2 = 22,
|
||||
Part2Unified = 23,
|
||||
Part2Selectable = 24,
|
||||
|
||||
* cFirstLogin <20><><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20>̻<EFBFBD><CCBB≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
|
||||
cAgentServerType<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Part2Unified/Part2Selectable<6C><65> <20><><EFBFBD>츸 <20><><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD> <20><><EFBFBD>̴<EFBFBD>.
|
||||
|
||||
Part2Unified
|
||||
â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> : 0
|
||||
Part1 <20><><EFBFBD>տ<EFBFBD><D5BF><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> : 1
|
||||
Part2 <20><><EFBFBD>տ<EFBFBD><D5BF><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> : 2
|
||||
|
||||
Part2Selectable
|
||||
|
||||
<20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : 0
|
||||
<20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> : 2
|
||||
*/
|
||||
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û AuthServer -> DBAgentServer
|
||||
typedef struct PktCCD* LPPktCCD;
|
||||
struct PktCCD : public PktDD
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
|
||||
unsigned long m_dwSlot;
|
||||
unsigned long m_dwGold;
|
||||
POS m_Pos;
|
||||
CHAR_CREATE m_CharCreate;
|
||||
|
||||
unsigned short m_wSkill;
|
||||
};
|
||||
|
||||
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DBAgentServer -> AuthServer
|
||||
typedef struct PktCCDAck* LPPktCCDAck;
|
||||
struct PktCCDAck : public PktDD
|
||||
{
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwSlot;
|
||||
CHAR_VIEW m_CharView;
|
||||
};
|
||||
// ---------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
typedef struct PktCSD* LPPktCSD;
|
||||
struct PktCSD : public PktDD
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
};
|
||||
|
||||
typedef struct PktCSDAck* LPPktCSDAck;
|
||||
struct PktCSDAck : public PktDD
|
||||
{
|
||||
enum { MAX_CHANNEL_NUM = 5 };
|
||||
|
||||
unsigned char m_cZone;
|
||||
unsigned short m_wChannelNum[MAX_CHANNEL_NUM];
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
typedef struct PktCDD* LPPktCDD;
|
||||
struct PktCDD : public PktDD
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwSlotNum;
|
||||
unsigned long m_dwCharID;
|
||||
};
|
||||
// ---------------------------------------------------------
|
||||
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
// ---------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
typedef struct PktSAND* LPPktSAND;
|
||||
struct PktSAND : public PktDD
|
||||
{
|
||||
enum eType { TYPE_SET = 1, TYPE_CHANGE = 2 };
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
unsigned char m_cType;
|
||||
unsigned char m_cAccountNation;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>濡 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
typedef struct PktANCAck* LPPktANCAck;
|
||||
struct PktANCAck : public PktDD
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_CHAR_VIEW = 5
|
||||
};
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwGID[ MAX_CHAR_VIEW ];
|
||||
unsigned long m_dwFame[ MAX_CHAR_VIEW ];
|
||||
};
|
||||
// ---------------------------------------------------------
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
typedef struct PktCCID* LPPktCCID;
|
||||
struct PktCCID : public PktDD
|
||||
{
|
||||
unsigned __int64 m_dwItemSerial;
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwSize;
|
||||
};
|
||||
// ---------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
typedef struct PktCLiD* LPPktCLiD;
|
||||
struct PktCLiD : public PktDD
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwSerial;
|
||||
};
|
||||
// ---------------------------------------------------------
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,157 @@
|
||||
#ifndef _BATTLEGROUND_SERVER_PACKET_H_
|
||||
#define _BATTLEGROUND_SERVER_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Creature/Character/CharacterClass.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD>Ʈ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><> <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktBGServerMapList* LPPktBGServerMapList;
|
||||
struct PktBGServerMapList : public PktBase
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_MAP_NUM = 10
|
||||
};
|
||||
|
||||
bool m_bAll; // true <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ, false <20≯<EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cMapInfoNodeNum; // <20><><EFBFBD><EFBFBD> <20><>
|
||||
};
|
||||
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD>
|
||||
struct BGServerMapInfoNode
|
||||
{
|
||||
enum MapType
|
||||
{
|
||||
FRAG = 0, // <20><><EFBFBD>ھ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
STATUE = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
|
||||
MAX_MAP_TYPE
|
||||
};
|
||||
|
||||
// <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool m_bPlaying; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cMapType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cMaxCharNumOfNation; // <20><> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>ο<EFBFBD>
|
||||
unsigned char m_cRemainMin; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD> Ȥ<><C8A4> <20><><EFBFBD>½ð<C2BD>) (<28><>)
|
||||
unsigned short m_wTargetScore; // <20><>ǥ <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cCurrentCharNum[CClass::MAX_RACE]; // <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
|
||||
unsigned short m_wScore[CClass::MAX_RACE]; // <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktBGServerResultList* LPPktBGServerResultList;
|
||||
struct PktBGServerResultList : public PktBase
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_MAP_NUM = 10
|
||||
};
|
||||
|
||||
bool m_bAll; // true <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ, false <20≯<EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cResultInfoNodeNum; // <20><><EFBFBD><EFBFBD> <20><>
|
||||
};
|
||||
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct BGServerResultInfoNode
|
||||
{
|
||||
unsigned char m_cWinRace; // <20><><EFBFBD><EFBFBD> (CClass::MAX_RACE <20≯<EFBFBD> <20><><EFBFBD>º<EFBFBD>)
|
||||
unsigned char m_cPlayMin; // <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||||
unsigned char m_cKill; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
unsigned char m_cKilled; // <20><><EFBFBD><EFBFBD> <20><>
|
||||
unsigned short m_wAward; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>
|
||||
unsigned short m_wScore[CClass::MAX_RACE]; // <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
// BATTLEGROUND_SERVER <20><> <20>̵<EFBFBD>
|
||||
typedef struct PktBGServerMoveZone* LPPktBGServerMoveZone;
|
||||
struct PktBGServerMoveZone : public PktBase
|
||||
{
|
||||
enum MoveType
|
||||
{
|
||||
TYPE_PLAYER = 0, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
TYPE_SPECTATOR = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
MAX_TYPE_NUM
|
||||
};
|
||||
|
||||
enum Error
|
||||
{
|
||||
FAIL_FULL_MAP = 2, // <20><> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
|
||||
FAIL_FIX_RATE = 3 // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>߱<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
unsigned short m_wMapNumber; // <20>ش<EFBFBD> <20><> <20><>ȣ (0<><30> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
unsigned char m_cMoveType; // <20>濡 <20><><EFBFBD><EFBFBD><EEB0A1> Ÿ<><C5B8>
|
||||
unsigned char m_cZone; // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>ȣ (Ack)
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktBGServerCharSlot* LPPktBGServerCharSlot;
|
||||
struct PktBGServerCharSlot : public PktBase
|
||||
{
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> (Client <-> Game)
|
||||
unsigned long m_dwUID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> (Game <-> DBAgent)
|
||||
unsigned char m_cGroup; // <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
typedef struct PktBGServerCharSlotAck* LPPktBGServerCharSlotAck;
|
||||
struct PktBGServerCharSlotAck : public PktBase
|
||||
{
|
||||
enum PktCharSlotAckErr
|
||||
{
|
||||
FAIL_NOT_USER = 2, // DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_NOT_CHAR = 3 // DB<44><42><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned char m_cGroup; // <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
|
||||
unsigned long m_dwSlotCID[USER_INFO::MAX_CHAR_NUM]; // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> ID
|
||||
char m_szSlotName[USER_INFO::MAX_CHAR_NUM][CHAR_INFOST::MAX_NAME_LEN]; // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
// ȯ<><C8AF><EFBFBD><EFBFBD> <20>̿<EFBFBD>
|
||||
typedef struct PktBGServerMileageChange* LPPktBGServerMileageChange;
|
||||
struct PktBGServerMileageChange : public PktBase
|
||||
{
|
||||
enum PktBGSMCCmd
|
||||
{
|
||||
MC_REQUEST = 0, // <20><><EFBFBD><EFBFBD> <20><>û (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...)
|
||||
MC_INFO = 1, // <20><><EFBFBD><EFBFBD> Ack
|
||||
MC_CHANGE = 2, // <20><>ȯ <20><>û (BG<42><47> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>)
|
||||
MC_RESULT = 3 // <20><>ȯ Ack
|
||||
};
|
||||
|
||||
enum PktErr
|
||||
{
|
||||
SERVER_ERROR = 1,
|
||||
NOT_USED_STORE = 2, // â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - MC_RESULT (<28><EFBFBD><DEBD><EFBFBD> ó<><C3B3> <20>ʿ<EFBFBD>)
|
||||
NOT_ENOUGH_MEDAL = 3, // <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> - MC_RESULT (<28><EFBFBD><DEBD><EFBFBD> ó<><C3B3> <20>ʿ<EFBFBD>)
|
||||
MONEY_OVERFLOW = 4, // <20><> <20><><EFBFBD><EFBFBD><EFBFBD>÷ο<C3B7> <20><EFBFBD>(<28>Ա<EFBFBD> <20>Ұ<EFBFBD>) - MC_RESULT ( <20><EFBFBD><DEBD><EFBFBD> ó<><C3B3> <20>ʿ<EFBFBD>)
|
||||
DATA_REQUESTING = 5, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD> - MC_RESULT (<28><EFBFBD><DEBD><EFBFBD> ó<><C3B3> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
NONE_CHARACTER = 6 // ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - MC_INFO (<28><EFBFBD><DEBD><EFBFBD> ó<><C3B3> <20>ʿ<EFBFBD>)
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> ID
|
||||
unsigned char m_cGroup; // <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
|
||||
unsigned char m_cCmd; // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long m_dwGold; // <20><>
|
||||
unsigned long m_dwMileage; // <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,326 @@
|
||||
#ifndef _CLIENT_TO_AUTH_SERVER_PACKET_H_
|
||||
#define _CLIENT_TO_AUTH_SERVER_PACKET_H_
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û (Client to AuthServer)
|
||||
// - <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// - Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
// : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktAU* LPPktAU;
|
||||
struct PktAU : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ID_LEN = 24,
|
||||
PASS_LEN = 36
|
||||
};
|
||||
|
||||
char m_UserAccount[ID_LEN];
|
||||
char m_UserPassword[PASS_LEN];
|
||||
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwClientVer;
|
||||
unsigned long m_dwCheckSum;
|
||||
|
||||
unsigned short m_usFlag;
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û (Client to AuthServer)
|
||||
//
|
||||
// : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktJPAU* LPPktJPAU;
|
||||
struct PktJPAU : public PktBase
|
||||
{
|
||||
enum { NAME_LEN = 16 };
|
||||
|
||||
char m_szUserAccount[NAME_LEN];
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwClientVer;
|
||||
unsigned long m_dwCheckSum;
|
||||
|
||||
unsigned short m_usFlag;
|
||||
};
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (AuthServer to Client)
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
//
|
||||
// : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktAUAck* LPPktAUAck;
|
||||
struct PktAUAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned char m_cAgentServerType;
|
||||
unsigned char m_cFirstLogin;
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> (Client to AuthServer)
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - üũ<C3BC><C5A9>
|
||||
// - <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
// : <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20>Ŀ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktULi* LPPktULi;
|
||||
struct PktULi : public PktBase
|
||||
{
|
||||
enum LoginType
|
||||
{
|
||||
USERLOGIN_FIRST = 0, // <20><><EFBFBD><EFBFBD> <20>α<EFBFBD>
|
||||
USERLOGIN_CHAR_SELECT = 1 // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
};
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCheckSum;
|
||||
|
||||
unsigned char m_cLoginType;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> Ack (AuthServer to Client)
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
// (1 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 2 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktULiAck* LPPktULiAck;
|
||||
struct PktULiAck : public PktBase
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_CHAR_VIEW = 5
|
||||
};
|
||||
|
||||
enum PktULiAckErr
|
||||
{
|
||||
FAIL_GET_DATA = 2
|
||||
};
|
||||
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwUserID;
|
||||
CHAR_VIEW m_CharView[MAX_CHAR_VIEW];
|
||||
sGuildData m_GuildData[MAX_CHAR_VIEW];
|
||||
|
||||
unsigned long m_dwTabFlag;
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned char m_cAccountNation; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
time_t m_dwCurrentTime; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||||
int m_nPlayTime; // BillingType<70><65> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>¥. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>(<28><>)
|
||||
unsigned short m_usAdminLevel; // <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>.
|
||||
unsigned char m_cBillingType; // D : <20><><EFBFBD><EFBFBD> T : <20><><EFBFBD><EFBFBD> N : <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cBillingUser; // 0 : <20><><EFBFBD><EFBFBD> 1 : <20>ǽù<C7BD>
|
||||
|
||||
unsigned char m_cLoginType;
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ( Char Select )
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
//
|
||||
// : ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ش<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD> <20>ּҸ<D6BC> <20>Ѱ<EFBFBD> <20>´<DEB4>.
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktCS* LPPktCS;
|
||||
struct PktCS : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
};
|
||||
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
typedef struct PktCSAck* LPPktCSAck;
|
||||
struct PktCSAck : public PktBase
|
||||
{
|
||||
enum { MAX_CHANNEL_NUM = 5 };
|
||||
|
||||
unsigned char m_cZone; // <20><>
|
||||
unsigned short m_wChannelNum[MAX_CHANNEL_NUM]; // ä<><C3A4>
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ( Char Create )
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><>ȣ
|
||||
// - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktCC* LPPktCC;
|
||||
struct PktCC : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwSlotNum;
|
||||
CHAR_CREATE m_CreateChar;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
// - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><>ȣ
|
||||
// - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//
|
||||
// (1 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 2 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 3 = <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>, 4 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>,
|
||||
// 5 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>, 6 = <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktCCAck* LPPktCCAck;
|
||||
struct PktCCAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwSlotNum;
|
||||
CHAR_VIEW m_CharView;
|
||||
|
||||
enum
|
||||
{
|
||||
SERVER_ERROR = 1,
|
||||
FAIL_INSERT_DATA = 2,
|
||||
EXIST_CHAR_NAME = 3,
|
||||
EXIST_SLOT = 4,
|
||||
WRONG_CHAR_NAME = 5,
|
||||
WRONG_CHAR_DATA = 6,
|
||||
SLANG_FILTERED = 7,
|
||||
NULL_SESSION = 8,
|
||||
VIEW_RELOAD_FAILED = 9,
|
||||
SUPRESSED_CHAR_CREATE = 10
|
||||
};
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ( Char Delete )
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><>ȣ
|
||||
// - <20><>Ƽ <20><><EFBFBD>̵<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktCD* LPPktCD;
|
||||
struct PktCD : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwSlotNum;
|
||||
|
||||
unsigned char m_szPassword[STORE_INFO::MAX_PASS_LEN];
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><>ȣ
|
||||
//
|
||||
// (1 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 2 = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktCDAck* LPPktCDAck;
|
||||
struct PktCDAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwSlotNum;
|
||||
enum
|
||||
{
|
||||
SERVER_ERROR = 1,
|
||||
FAIL_DELETE_DATA = 2,
|
||||
|
||||
BLOCKED_DELETE_DATA = 6,
|
||||
|
||||
FAIL_PASSWORD = 7
|
||||
};
|
||||
};
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ( Select Account Nation )
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
// (1 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 2 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktSelectAccountNation* LPPktSelectAccountNation;
|
||||
struct PktSelectAccountNation : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned char m_cType;
|
||||
unsigned char m_cAccountNation;
|
||||
|
||||
enum eType
|
||||
{
|
||||
TYPE_SET = 1, // <20><> <20><><EFBFBD><EFBFBD>
|
||||
TYPE_CHANGE = 2 // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
enum { SERVER_ERROR = 1, FAIL_SET_NATION = 2 };
|
||||
};
|
||||
|
||||
// WORK_LIST 2.3 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>͵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
// - CID, GID, Fame
|
||||
//
|
||||
// (1 = <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> )
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktNationChangeResult* LPPktNationChangeResult;
|
||||
struct PktNationChangeResult : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_CHAR_VIEW = 5
|
||||
};
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwGID[ MAX_CHAR_VIEW ];
|
||||
unsigned long m_dwFame[ MAX_CHAR_VIEW ];
|
||||
};
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,85 @@
|
||||
#ifndef _CLIENT_TO_LOGIN_SERVER_PACKET_H_
|
||||
#define _CLIENT_TO_LOGIN_SERVER_PACKET_H_
|
||||
|
||||
#include "ServerInfo.h"
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// <20>α<EFBFBD><CEB1><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><>Ŷ.
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><>Ŷ : Launcher to LoginServer
|
||||
typedef struct PktSvL* LPPktSvL;
|
||||
struct PktSvL : public PktBase
|
||||
{
|
||||
unsigned long m_dwClientVer;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><>Ŷ : LoginServer to Launcher
|
||||
typedef struct PktSvLAck* LPPktSvLAck;
|
||||
struct PktSvLAck : public PktBase
|
||||
{
|
||||
enum { PATCH_ADDRESS_LENGTH = 100 };
|
||||
|
||||
unsigned long m_dwClientVer;
|
||||
char m_PatchAddress[PATCH_ADDRESS_LENGTH];
|
||||
|
||||
SERVER_LIST m_ServerList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
};
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û <20><>Ŷ : Launcher to LoginServer
|
||||
typedef struct PktSG* LPPktSG;
|
||||
struct PktSG : public PktBase
|
||||
{
|
||||
char m_cGroup;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ : LoginServer to Launcher
|
||||
typedef struct PktSGAck* LPPktSGAck;
|
||||
struct PktSGAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwServerID;
|
||||
IN_ADDR m_AuthAddress;
|
||||
};
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û <20><>Ŷ(OLD) : Launcher to LoginServer
|
||||
typedef struct PktAUO* LPPktAUO;
|
||||
struct PktAUO : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NAME_LEN = 24,
|
||||
PASS_LEN = 36
|
||||
};
|
||||
|
||||
char m_UserAccount[NAME_LEN];
|
||||
char m_UserPassword[PASS_LEN];
|
||||
|
||||
unsigned long m_ClientVerInfo;
|
||||
unsigned short m_cFlag;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ : LoginServer to Launcher
|
||||
typedef struct PktAUOAck* LPPktAUOAck;
|
||||
struct PktAUOAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
SERVER_LIST m_ServerList; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
#ifndef _DATA_PACKET_H_
|
||||
#define _DATA_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
typedef struct PktDD* LPPktDD;
|
||||
struct PktDD : public PktBase
|
||||
{
|
||||
unsigned long m_dwRequestKey;
|
||||
unsigned short m_wCmd;
|
||||
|
||||
enum SubCommands
|
||||
{
|
||||
SCmdUserLogin = 0x0001, // <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
SCmdUserLogout = 0x0002, // <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
SCmdUserMove = 0x0003, // <20><><EFBFBD><EFBFBD> <20><> <20>̵<EFBFBD>
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
SCmdSelectNation = 0x0004, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// WORK_LIST 2.3 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdNationChangeResult = 0x0005,
|
||||
|
||||
SCmdCharCreate = 0x0021, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdCharDelete = 0x0022, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdCharCreateItem = 0x0023, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SCmdCharSelect = 0x0024, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
SCmdCreateParty = 0x0031, // <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
SCmdDeleteParty = 0x0032, // <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
SCmdGetPartyInfo = 0x0033, // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdInsertPartyMem = 0x0034, // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
SCmdDeletePartyMem = 0x0035, // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdLoginPartyMem = 0x0036, // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
SCmdLogoutPartyMem = 0x0037, // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20>αƿ<D7BE>
|
||||
SCmdTransferLeader = 0x0038, // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20>絵
|
||||
SCmdAutoRoutingOn = 0x0039, // <20><>Ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѱ<EFBFBD>
|
||||
SCmdAutoRoutingOff = 0x003A, // <20><>Ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//SCmdPartyAddress = 0x003B, // <20><>Ƽ<EFBFBD><C6BC> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
SCmdDeadPartyMem = 0x003C, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD>
|
||||
SCmdMoveZonePartyMem = 0x003D, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD>̵<EFBFBD> : RefID = <20>̵<EFBFBD><CCB5><EFBFBD> <20><> ID
|
||||
SCmdLevelUpPartyMem = 0x003E, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RefID = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdChangeClassPartyMem = 0x003F, // <20><>Ƽ<EFBFBD><C6BC> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RefID = <20>ٲ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
SCmdChangeGuildPartyMem = 0x0040, // <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : RefID = <20>ٲ<EFBFBD> <20><><EFBFBD><EFBFBD> ID
|
||||
|
||||
SCmdStartSession = 0x0050, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SCmdServerZone = 0x0051, // <20><><EFBFBD><EFBFBD> <20><>
|
||||
SCmdCharMoveZone = 0x0052, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
SCmdServerZoneEnd = 0x0053 // <20><><EFBFBD><EFBFBD> <20><> <20><>
|
||||
};
|
||||
|
||||
inline void InitPtSubCmd(unsigned long dwRequestKey, unsigned short Cmd_In);
|
||||
};
|
||||
|
||||
inline void PktDD::InitPtSubCmd(unsigned long dwRequestKey, unsigned short Cmd_In)
|
||||
{
|
||||
m_dwRequestKey = dwRequestKey;
|
||||
m_wCmd = Cmd_In;
|
||||
}
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,364 @@
|
||||
#ifndef _CHAR_FRIEND_PACKET_H_
|
||||
#define _CHAR_FRIEND_PACKET_H_
|
||||
|
||||
// CharFriendPacket.h
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Network/Packet/PacketStruct/DataPacket.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/*
|
||||
struct PktFriendAddReq : public PktBase CMD : 0x64
|
||||
struct PktFriendRemoveReq : public PktBase CMD : 0x65
|
||||
struct PktFriendEtc : public PktBase CMD : 0x66
|
||||
struct PktFriendAck : public PktBase CMD : 0x67
|
||||
struct PktFriendDB : public PktBase CMD : 0x68
|
||||
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> Operations
|
||||
|
||||
<Client->GameServer>
|
||||
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> : PktFriendAddReq
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> : PktFriendAddReq
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> : PktFriendRemoveReq
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> : PktFriendRemoveReq
|
||||
<20><EFBFBD> <20><><EFBFBD><EFBFBD> : PktFriendEtc(Ack<63><6B><EFBFBD><EFBFBD>)
|
||||
|
||||
<GameServer->Client>
|
||||
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ <20>ֱ<EFBFBD> : PktFriendDB
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>߱<EFBFBD> : PktFriendDB
|
||||
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> Ack : PktFriendAck
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> Ack : PktFriendAck
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> Ack : PktFriendAck
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> Ack : PktFriendAck
|
||||
|
||||
ģ<><C4A3> <20>α<EFBFBD><CEB1><EFBFBD> : PktFriendAck
|
||||
ģ<><C4A3> <20>αƿ<D7BE> : PktFriendAck
|
||||
ģ<><C4A3> <20><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD> : PktFriendAddReq
|
||||
|
||||
|
||||
<GameServer->DBAgent>
|
||||
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> : PktFriendDB
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> : PktFriendDB
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD> : PktFriendDB
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> : PktFriendDB
|
||||
<20><EFBFBD> <20><><EFBFBD><EFBFBD> : PktFriendDB
|
||||
|
||||
|
||||
<DBAgent->GameServer>
|
||||
|
||||
ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ <20>ֱ<EFBFBD> : PktFriendDB
|
||||
<20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>ֱ<EFBFBD> : PktFriendDB
|
||||
*/
|
||||
|
||||
struct DBFriend
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwStatusFlag;
|
||||
char m_szName[MAX_NAME];
|
||||
};
|
||||
|
||||
struct DBFriendInfo
|
||||
{
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
unsigned short m_wClass; // Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
char m_cLevel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
};
|
||||
|
||||
struct FriendInfo
|
||||
{
|
||||
private:
|
||||
|
||||
enum StatusMask
|
||||
{
|
||||
IS_LOGINED = 0x00000001,
|
||||
GROUP = 0x000000F0,
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
MAX_NAME = 16,
|
||||
MOVE_ZONE = 0x00000100,
|
||||
};
|
||||
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwStatusFlag;
|
||||
char m_szName[MAX_NAME];
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
unsigned short m_wClass; // Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
char m_cLevel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
unsigned long m_dwServerID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
FriendInfo() : m_dwCID(0), m_dwStatusFlag(0), m_dwGID(0), m_wClass(0), m_cLevel(0), m_dwServerID(0) { }
|
||||
|
||||
bool IsLogined() { return (0 != (m_dwStatusFlag & IS_LOGINED)); }
|
||||
|
||||
void SetLoginStatus(bool bLogined)
|
||||
{
|
||||
unsigned long dwMoveZone = 0;
|
||||
|
||||
if(!bLogined)
|
||||
{
|
||||
if(m_dwStatusFlag&MOVE_ZONE )
|
||||
dwMoveZone = MOVE_ZONE;
|
||||
}
|
||||
|
||||
m_dwStatusFlag = bLogined ? (m_dwStatusFlag | IS_LOGINED) : (m_dwStatusFlag & (~IS_LOGINED));
|
||||
m_dwStatusFlag = (m_dwStatusFlag - dwMoveZone);
|
||||
}
|
||||
|
||||
unsigned long GetGroup() { return ((m_dwStatusFlag & GROUP) >> 4); }
|
||||
|
||||
bool IsMoveZone() { if(m_dwStatusFlag & MOVE_ZONE) return true; return false; }
|
||||
|
||||
void SetMoveZone(unsigned long dwMoveZone) { m_dwStatusFlag = (m_dwStatusFlag | MOVE_ZONE); }
|
||||
|
||||
bool SetGroup(unsigned long dwGroup)
|
||||
{
|
||||
if(dwGroup <= 0xF) { m_dwStatusFlag = (m_dwStatusFlag & (~GROUP)) | (dwGroup << 4); return true; }
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
struct DBBan
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
unsigned long m_dwCID;
|
||||
char m_szName[MAX_NAME];
|
||||
};
|
||||
|
||||
struct DBBanInfo
|
||||
{
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
unsigned short m_wClass; // Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
char m_cLevel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
};
|
||||
|
||||
struct BanInfo
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
unsigned long m_dwCID;
|
||||
char m_szName[MAX_NAME];
|
||||
|
||||
unsigned long m_dwGID;
|
||||
unsigned short m_wClass;
|
||||
char m_cLevel;
|
||||
|
||||
unsigned long m_dwServerID;
|
||||
|
||||
BanInfo() : m_dwCID(0) { }
|
||||
};
|
||||
|
||||
// <20>߰<EFBFBD> <20><>Ŷ
|
||||
struct PktFriendAddReq : public PktBase
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
enum CMD
|
||||
{
|
||||
ADD_FRIEND_REQ = 0, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> (Client->GameServer), m_szName<6D><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>.
|
||||
BAN_FRIEND_REQ = 1, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> (Client->GameServer), m_szName<6D><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>.
|
||||
ADDED_INFO = 2 // ģ<><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD>ϵ<EFBFBD> (GameServer->Client), m_szName<6D><65> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>.
|
||||
};
|
||||
|
||||
char m_szName[MAX_NAME]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>.
|
||||
unsigned long m_dwCID; // ADDED_INFO<46>϶<EFBFBD><CFB6><EFBFBD> CID<49><44> <20>־<EFBFBD> <20>ش<EFBFBD>.
|
||||
unsigned char m_cCmd;
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
struct PktFriendRemoveReq : public PktBase
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
enum CMD
|
||||
{
|
||||
REMOVE_FRIEND_REQ = 0, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> (Client->GameServer), m_dwCID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID.
|
||||
REMOVE_BAN_REQ = 1, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Client->GameServer), m_dwCID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID.
|
||||
NOFRIEND_REQ = 2, // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
char m_szName[MAX_NAME]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>.
|
||||
unsigned long m_dwCID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID;
|
||||
unsigned char m_cCmd;
|
||||
};
|
||||
|
||||
|
||||
// <20><>Ÿ <20><>Ŷ
|
||||
struct PktFriendEtc : public PktBase
|
||||
{
|
||||
enum CMD
|
||||
{
|
||||
SETGROUP = 0, // <20><EFBFBD> <20><><EFBFBD><EFBFBD> (Client->GameServer),
|
||||
// m_dwCID<49><44> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID, m_dwData<74><61> <20>ٲ<EFBFBD> <20><EFBFBD> <20><>ȣ
|
||||
|
||||
};
|
||||
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwData;
|
||||
unsigned char m_cCmd;
|
||||
};
|
||||
|
||||
|
||||
// ģ<><C4A3> <20><><EFBFBD><EFBFBD> <20><>Ŷ ( Client <--> GameServer )
|
||||
struct PktFriendAck : public PktBase
|
||||
{
|
||||
enum CMD
|
||||
{
|
||||
UNKNOWN_ERROR_ACK = 0, // <20><> <20><> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> (Ack)
|
||||
|
||||
ADD_FRIEND_ACK = 1, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> Ack (GameServer->Client)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_LOGINED (<28>α<EFBFBD><CEB1>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><>)
|
||||
// LIST_FULL (ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// REJECTED (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID, <20><><EFBFBD>н<EFBFBD> : 0
|
||||
|
||||
MOVE_BAN_TO_FRIEND = 2, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> Ack (GameServer->Client) <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_LOGINED (<28>α<EFBFBD><CEB1>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><>)
|
||||
// LIST_FULL (ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// REJECTED (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID, <20><><EFBFBD>н<EFBFBD> : 0
|
||||
|
||||
REMOVE_FRIEND_ACK = 3, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> Ack (GameServer->Client)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_IN_LIST (<28><>û<EFBFBD>ϴ<EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : 0
|
||||
|
||||
ADD_BAN_ACK = 4, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> Ack (GameServer->Client)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_LOGINED (<28>α<EFBFBD><CEB1>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><>)
|
||||
// LIST_FULL (ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID, <20><><EFBFBD>н<EFBFBD> : 0
|
||||
|
||||
MOVE_FRIEND_TO_BAN = 5, // ģ<><C4A3> <20>շ<EFBFBD> Ack (GameServer->Client) ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>źθ<C5BA> <20>߰<EFBFBD><DFB0><EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_LOGINED (<28>α<EFBFBD><CEB1>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><>)
|
||||
// LIST_FULL (ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// REJECTED (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID, <20><><EFBFBD>н<EFBFBD> : 0
|
||||
|
||||
REMOVE_BAN_ACK = 6, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> Ack (GameServer->Client)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_IN_LIST (<28><>û<EFBFBD>ϴ<EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : 0
|
||||
|
||||
FRIEND_LOGIN = 7, // ģ<><C4A3> <20>α<EFBFBD><CEB1><EFBFBD> (GameServer->Client), m_dwCID<49><44> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> CID, m_szName<6D><65> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
FRIEND_LOGOUT = 8, // ģ<><C4A3> <20>αƿ<D7BE> (GameServer->Client), m_dwCID<49><44> <20>αƿ<D7BE><C6BF><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> CID, m_szName<6D><65> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
|
||||
FRIEND_LOGIN_TO_GAME = 9, // ģ<><C4A3> <20>α<EFBFBD><CEB1><EFBFBD> (Chat->GameServer)
|
||||
// m_dwCID<49><44> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> CID, m_szName<6D><65> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
// <20><>Ŷ <20>ڿ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> CID<49><44><EFBFBD><EFBFBD>(2byte unsigned long)
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> CID<49><44> CID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>. <20>ش<EFBFBD> ij<><C4B3><EFBFBD>͵鿡<CDB5><E9BFA1> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȴ<EFBFBD>.
|
||||
|
||||
FRIEND_LOGOUT_TO_GAME = 10, // ģ<><C4A3> <20>αƿ<D7BE> (Chat->GameServer)
|
||||
// m_dwCID<49><44> <20>αƿ<D7BE><C6BF><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> CID, m_szName<6D><65> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> ģ<><C4A3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
// <20><>Ŷ <20>ڿ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> CID<49><44><EFBFBD><EFBFBD>(2byte unsigned long)
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> CID<49><44> CID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>. <20>ش<EFBFBD> ij<><C4B3><EFBFBD>͵鿡<CDB5><E9BFA1> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȴ<EFBFBD>.
|
||||
|
||||
FRIEND_INFO_UPDATE = 11, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ.
|
||||
|
||||
BAN_INFO_UPDATE = 12, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ.
|
||||
|
||||
BAN_LOGIN = 13, // <20>ź<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>. (GameServer->Client)
|
||||
BAN_LOGOUT = 14, // <20>ź<EFBFBD> <20>αƿ<D7BE>. (GameServer->Client)
|
||||
|
||||
BAN_LOGIN_TO_GAME = 15, // <20>ź<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>. (Chat->GameServer)
|
||||
BAN_LOGOUT_TO_GAME = 16, // <20>ź<EFBFBD> <20>αƿ<D7BE>. (Chat->GameServer)
|
||||
|
||||
// edith 2009.08.28 NoFriend <20>߰<EFBFBD>
|
||||
NOFRIEND_ACK = 17, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> Ack (GameServer->Client)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : SERVER_ERROR (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// CLIENT_ERROR (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
// NOT_IN_LIST (<28><>û<EFBFBD>ϴ<EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
// m_dwCID : 0
|
||||
};
|
||||
|
||||
enum FriendERROR
|
||||
{
|
||||
SERVER_ERROR = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
CLIENT_ERROR = 2, // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>߸<EFBFBD><DFB8><EFBFBD> Ŀ<>ǵ带 <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
NOT_LOGINED = 3, // <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD>
|
||||
LIST_FULL = 4, // <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> á<><C3A1>
|
||||
REJECTED = 5, // <20>źδ<C5BA><CEB4><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT_IN_LIST = 6, // <20><>û<EFBFBD>ϴ<EFBFBD> <20>۾<EFBFBD><DBBE><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_ENEMY = 7 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20>Ұ<EFBFBD><D2B0><EFBFBD>
|
||||
};
|
||||
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
unsigned long m_dwCID;
|
||||
char m_szName[MAX_NAME];
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>.
|
||||
unsigned short m_wClass; // Ŭ<><C5AC><EFBFBD><EFBFBD>.
|
||||
char m_cLevel; // <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
unsigned long m_dwServerID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>.
|
||||
|
||||
unsigned char m_cCmd;
|
||||
};
|
||||
|
||||
|
||||
// ģ<><C4A3> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
struct PktFriendDB : public PktDD
|
||||
{
|
||||
enum CMD
|
||||
{
|
||||
ADD_FRIEND = 0, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> (GameServer->DBAgent) Owner<65><72> Reference<63><65> <20><><EFBFBD><EFBFBD>.
|
||||
REMOVE_FRIEND = 1, // ģ<><C4A3> <20><><EFBFBD><EFBFBD> (GameServer->DBAgent) Owner<65><72> Reference<63><65> <20><><EFBFBD><EFBFBD>. <20>̶<EFBFBD><CCB6><EFBFBD> ReferenceUID = 0;
|
||||
ADD_BAN = 2, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> (GameServer->DBAgent) Owner<65><72> Reference<63><65> <20><><EFBFBD><EFBFBD>.
|
||||
REMOVE_BAN = 3, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD> (GameServer->DBAgent) Owner<65><72> Reference<63><65> <20><><EFBFBD><EFBFBD>. <20>̶<EFBFBD><CCB6><EFBFBD> ReferenceUID = 0;
|
||||
|
||||
SETGROUP = 4, // <20><EFBFBD> <20><><EFBFBD><EFBFBD> (GameServer->DBAgent)
|
||||
// Owner<65><72> Reference<63><65> m_dwData<74><61> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>̶<EFBFBD><CCB6><EFBFBD> ReferenceUID = 0;
|
||||
|
||||
FRIEND_LIST = 5, // ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ (DBAgent->GameServer, GameServer->Client)
|
||||
// FriendList<73><74> <20>迭<EFBFBD><E8BFAD> <20>ٴ´<D9B4>.
|
||||
// Reference<63><65> <20>ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>. m_dwData<74><61> <20>ڿ<EFBFBD> <20>ٴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>.
|
||||
|
||||
BAN_LIST = 6, // <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ (DBAgent->GameServer, GameServer->Client)
|
||||
// BanInfo<66><6F> <20>迭<EFBFBD><E8BFAD> <20>ٴ´<D9B4>.
|
||||
// Reference<63><65> <20>ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>. m_dwData<74><61> <20>ڿ<EFBFBD> <20>ٴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9>.
|
||||
|
||||
FRIEND_INFO_UPDATE = 7, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ.
|
||||
|
||||
FRIEND_INFO = 8, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ.
|
||||
BAN_INFO = 9, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ.
|
||||
};
|
||||
|
||||
unsigned long m_dwOwnerUID; // <20><><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> UID
|
||||
unsigned long m_dwOwnerCID; // <20><><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> CID
|
||||
unsigned long m_dwReferenceUID; // <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> UID
|
||||
unsigned long m_dwReferenceCID; // <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> CID
|
||||
unsigned long m_dwData; // Data
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
unsigned short m_wClass; // <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
char m_cLevel; // <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
unsigned long m_dwServerID; // <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
unsigned char m_cCmd;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
#ifndef _GAME_EVENT_PACKET_H_
|
||||
#define _GAME_EVENT_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
typedef struct PktEventDropItem* LPPktEventDropItem;
|
||||
struct PktEventDropItem : public PktBase
|
||||
{
|
||||
unsigned short m_usItemID;
|
||||
};
|
||||
|
||||
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_cGroup;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,119 @@
|
||||
#ifndef _GAME_LOG_PACKET_H_
|
||||
#define _GAME_LOG_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
|
||||
namespace GAMELOG
|
||||
{
|
||||
namespace CMD
|
||||
{
|
||||
enum Packet
|
||||
{
|
||||
DefaultInfo = 1,
|
||||
ItemInfo = 2,
|
||||
EquipInfo = 3,
|
||||
};
|
||||
|
||||
enum LogType
|
||||
{
|
||||
CHAR_LOGIN = 1, // <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
CHAR_LOGOUT = 2, // <20>αƿ<D7BE>
|
||||
PICKUP = 3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
DROP = 4, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
BUY_ITEM = 5, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
SELL_ITEM = 6, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȱ<EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
BEFORE_EXCHANGE = 7, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD> <20><>ȯâ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
AFTER_EXCHANGE = 8, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD> <20><>ȯâ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
USE_ITEM = 9, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
UPGRADE_ITEM = 10, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
INSTALL_SOCKET = 11, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڱ<EFBFBD>
|
||||
GET_QUEST_ITEM = 12, // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GET_QUEST_REWARD = 13, // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
REMOVE_QUEST_ITEM = 14, // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
REPAIR_ITEM = 15, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
ADMIN_DROP = 16, // <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
CHAR_LOGIN_INVENTORY_GOLD = 17, // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1>ν<EFBFBD> <20>κ<EFBFBD><CEBA>丮 <20><>
|
||||
CHAR_LOGIN_DEPOSIT_GOLD = 18, // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1>ν<EFBFBD> â<><C3A2> <20><>
|
||||
CHAR_LOGOUT_INVENTORY_GOLD = 19, // ij<><C4B3><EFBFBD><EFBFBD> <20>αƿ<D7BE><C6BF><EFBFBD> <20>κ<EFBFBD><CEBA>丮 <20><>
|
||||
CHAR_LOGOUT_DEPOSIT_GOLD = 20, // ij<><C4B3><EFBFBD><EFBFBD> <20>αƿ<D7BE><C6BF><EFBFBD> â<><C3A2> <20><>
|
||||
DEPOSIT_RENT_GOLD = 21, // â<><C3A2> <20>뿩<EFBFBD><EBBFA9>
|
||||
|
||||
FAME_GET_BATTLE = 22, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAME_LOSE_BATTLE = 23, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAME_GET_CAMP = 24, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAME_LOSE_CAMP = 25, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
QUEST_GET_REWARD = 26, // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
CHANGE_RIDE = 27, // <20><><EFBFBD>̴<EFBFBD> Ÿ<><C5B8> <20>α<EFBFBD>
|
||||
|
||||
MAX_LOG_TYPE = 28
|
||||
};
|
||||
};
|
||||
|
||||
namespace PACKET
|
||||
{
|
||||
enum Flags
|
||||
{
|
||||
ITEM_INFO = (1 << 0),
|
||||
EQUIP_INFO = (1 << 1)
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
MAX_SOCKET_NUM = 8,
|
||||
MAX_ATTRIBUTE_NUM = 35
|
||||
};
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
struct DefaultInfo : public PktBase
|
||||
{
|
||||
time_t m_dwTime;
|
||||
unsigned long m_dwFirstUID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UID
|
||||
unsigned long m_dwFirstCID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID
|
||||
unsigned long m_dwGold; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ް<EFBFBD> <20><> <20>ݾ<EFBFBD>
|
||||
unsigned long m_dwSecondUID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UID
|
||||
unsigned long m_dwSecondCID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID
|
||||
|
||||
unsigned short m_usPosX; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͼ <20><><EFBFBD><EFBFBD>(X)
|
||||
unsigned short m_usPosY; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͼ <20><><EFBFBD><EFBFBD>(Y)
|
||||
unsigned short m_usPosZ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ͼ <20><><EFBFBD><EFBFBD>(Z)
|
||||
unsigned char m_cCommand; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cFlags; // <20><>Ÿ <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٴ<EFBFBD><D9B4><EFBFBD> <20><>..)
|
||||
};
|
||||
|
||||
struct ItemInfo : public DefaultInfo
|
||||
{
|
||||
unsigned __int64 m_dwItemUID;
|
||||
unsigned short m_usItemProtoTypeID;
|
||||
unsigned char m_cTakeType;
|
||||
unsigned char m_cItemAmount;
|
||||
|
||||
unsigned char m_cItemPosX;
|
||||
unsigned char m_cItemPosY;
|
||||
unsigned char m_cItemPosZ;
|
||||
unsigned char m_cItemExtra; // <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
struct EquipInfo : public ItemInfo
|
||||
{
|
||||
unsigned short m_usRuneSocket; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cUpgradeStep; // <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>ܰ<EFBFBD>
|
||||
unsigned char m_cMaxSocket; // <20><><EFBFBD><EFBFBD> <20>շ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
unsigned char m_cMaxDurability; // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char m_cSocket[MAX_SOCKET_NUM]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
short m_usAttribute[MAX_ATTRIBUTE_NUM]; // <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,611 @@
|
||||
#ifndef _GUILD_PACKET_H_
|
||||
#define _GUILD_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Creature/Character/CharacterClass.h>
|
||||
#include <Creature/CreatureStructure.h>
|
||||
|
||||
#include <Community/Guild/GuildConstants.h>
|
||||
#include <Community/Guild/GuildStructure.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
using namespace Guild;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktCreateGuild : public PktBase
|
||||
{
|
||||
enum PktCreateGuildErr
|
||||
{
|
||||
FAIL_ALREADY_NAME = 2, // <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20≯<EFBFBD>
|
||||
FAIL_DISSOLVE_GUILD = 3, // <20><><EFBFBD><EFBFBD> <20><>ü
|
||||
FAIL_INVALID_NAME = 4 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
};
|
||||
|
||||
enum DissolveReason
|
||||
{
|
||||
NONE_LOGIN = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƹ<EFBFBD><C6B9><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
MIN_MEMBER_TIMEOUT = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>ο<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> ä <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
NONE_NEXT_GUILDMASTER_BY_NONE_LOGIN = 3, // <20><><EFBFBD><EFBFBD><EFBFBD>Ⱓ <20><><EFBFBD>帶<EFBFBD><E5B8B6><EFBFBD>Ͱ<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20>̾<EFBFBD><CCBE>Ϸ<EFBFBD> <20><> <20>ÿ<EFBFBD> <20>渶<EFBFBD><E6B8B6> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
NONE_NEXT_GUILDMASTER_BY_GUILDMASTER_OUT = 4, // <20><><EFBFBD>帶<EFBFBD><E5B8B6><EFBFBD><EFBFBD> Ż<><C5BB><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>̾<EFBFBD><CCBE>Ϸ<EFBFBD> <20><> <20>ÿ<EFBFBD> <20>渶<EFBFBD><E6B8B6> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
NONE_NEXT_GUILDMASTER_BY_GUILDMASTER_DELETED = 5 // <20><><EFBFBD>帶<EFBFBD><E5B8B6><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>̾<EFBFBD><CCBE>Ϸ<EFBFBD> <20><> <20>ÿ<EFBFBD> <20>渶<EFBFBD><E6B8B6> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwGID;
|
||||
unsigned char m_cInclination;
|
||||
char m_szGuildName[MAX_GUILD_NAME_LEN];
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildList : public PktBase
|
||||
{
|
||||
enum { MAX_NUM_PER_PAGE = 10 };
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
unsigned char m_cSortCmd; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cPage; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char m_cSmallNodeNum; // <20><><EFBFBD><EFBFBD> <20><> (C -> S : üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD>, S -> C : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
unsigned char m_cLargeNodeNum; // <20><><EFBFBD><EFBFBD> <20><> (<28><>ü <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (üũ<C3BC><C5A9>)
|
||||
struct GuildCheckSumNode
|
||||
{
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long m_dwCheckSum; // üũ<C3BC><C5A9>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ȥ <20><>û<EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>͵<EFBFBD>)
|
||||
struct GuildSmallInfoNode
|
||||
{
|
||||
// TODO : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> GuildLargeInfoNode<64><65> <20><><EFBFBD><EFBFBD> <20><> <20><> <20>մϴ<D5B4>.
|
||||
// (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>˴ϴ<CBB4>.)
|
||||
// <09><><EFBFBD>Ҿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GuildLargeInfoNode<64><65> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
|
||||
// (<28><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<CCB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> <20>մϴ<D5B4>.)
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned char m_cIndex; // <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
|
||||
unsigned char m_cInclination; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short m_wRank; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwFame; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cLevel; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cCurrentMemberNum; // <20>ο<EFBFBD><CEBF><EFBFBD>
|
||||
|
||||
char m_szName[MAX_GUILD_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
char m_szMasterName[MAX_MEMBER_NAME_LEN]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
|
||||
GuildSmallInfoNode()
|
||||
: m_dwGID(0), m_cIndex(0), m_cInclination(0), m_wRank(0), m_dwFame(0), m_cLevel(0), m_cCurrentMemberNum(0)
|
||||
{
|
||||
std::fill_n(m_szName, int(MAX_GUILD_NAME_LEN), 0);
|
||||
std::fill_n(m_szMasterName, int(MAX_MEMBER_NAME_LEN), 0);
|
||||
}
|
||||
|
||||
GuildSmallInfoNode(unsigned long dwGID, unsigned char cIndex, unsigned char cInclination,
|
||||
unsigned short wRank, unsigned long dwFame, unsigned char cLevel,
|
||||
unsigned char cCurrentMemberNum, const char* szGuildName, const char* szMasterName)
|
||||
: m_dwGID(dwGID), m_cIndex(cIndex), m_cInclination(cInclination),
|
||||
m_wRank(wRank), m_dwFame(dwFame), m_cLevel(cLevel), m_cCurrentMemberNum(cCurrentMemberNum)
|
||||
{
|
||||
if (NULL != szGuildName)
|
||||
{
|
||||
strncpy(m_szName, szGuildName, MAX_GUILD_NAME_LEN);
|
||||
}
|
||||
|
||||
if (NULL != szMasterName)
|
||||
{
|
||||
strncpy(m_szMasterName, szMasterName, MAX_MEMBER_NAME_LEN);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
||||
struct GuildLargeInfoNode : public GuildSmallInfoNode
|
||||
{
|
||||
char m_szMark[MAX_MARK_SIZE]; // <20><>ũ
|
||||
unsigned char m_cRelationByMine; // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ(<28><><EFBFBD><EFBFBD>)<29><> <20><> <20><><EFBFBD>忡 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cRelationByTarget; // <20><> <20><><EFBFBD>尡 Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
GuildLargeInfoNode()
|
||||
: GuildSmallInfoNode(), m_cRelationByMine(0), m_cRelationByTarget(0)
|
||||
{
|
||||
std::fill_n(m_szMark, int(MAX_MARK_SIZE), 0);
|
||||
}
|
||||
|
||||
GuildLargeInfoNode(unsigned long dwGID, unsigned char cIndex, unsigned char cInclination,
|
||||
unsigned short wRank, unsigned long dwFame, unsigned char cLevel,
|
||||
unsigned char cCurrentMemberNum, const char* szMasterName, const char* szGuildName,
|
||||
const char* szMark, unsigned char cRelationByMine, unsigned char cRelationByTarget)
|
||||
: GuildSmallInfoNode(dwGID, cIndex, cInclination, wRank, dwFame, cLevel, cCurrentMemberNum, szGuildName, szMasterName),
|
||||
m_cRelationByMine(cRelationByMine), m_cRelationByTarget(cRelationByTarget)
|
||||
{
|
||||
if (NULL != szMark)
|
||||
{
|
||||
memcpy(m_szMark, szMark, MAX_MARK_SIZE);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildCmd : public PktBase
|
||||
{
|
||||
enum GuildCmd
|
||||
{
|
||||
GC_INVITE = 0, // <20>ʴ<EFBFBD>
|
||||
GC_JOIN = 1, // <20><><EFBFBD><EFBFBD> (<28>ʴ뿡 <20><><EFBFBD><EFBFBD>)
|
||||
GC_REFUSE = 2, // <20><><EFBFBD><EFBFBD> (<28>ʴ뿡 <20><><EFBFBD><EFBFBD>)
|
||||
GC_ASK_ENTER = 3, // <20><><EFBFBD><EFBFBD> <20><>û
|
||||
GC_ASK_LEAVE = 4, // Ż<><C5BB> <20><>û
|
||||
GC_KICK = 5, // <20><><EFBFBD><EFBFBD> Ż<><C5BB>
|
||||
GC_SETUP_TITLE = 6, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GC_LOGINOUT = 7, // <20>α<EFBFBD><CEB1><EFBFBD>/<2F>ƿ<EFBFBD>
|
||||
GC_RANK_UP = 8, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GC_RANK_DOWN = 9, // <20><><EFBFBD><EFBFBD> <20>Ʒ<EFBFBD><C6B7><EFBFBD>
|
||||
GC_TACTICS = 10, // <20>뺴 <20><><EFBFBD><EFBFBD> <20><>û.
|
||||
GC_TACTICS_JOIN = 11, // <20>뺴 <20><><EFBFBD><EFBFBD> <20>ʴ<EFBFBD>.
|
||||
GC_TACTICS_TITLE = 12, // <20>뺴 <20>㰡.
|
||||
GC_TACTICS_KICK = 13, // <20>뺴 <20><><EFBFBD><EFBFBD>.
|
||||
GC_TACTICS_LEAVE = 14, // <20>뺴 Ż<><C5BB>.
|
||||
GC_TACTICS_REQUEST = 15, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>뺴 <20>㰡 <20><> ij<><C4B3><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><>û.
|
||||
};
|
||||
|
||||
enum PktGuildCmdErr
|
||||
{
|
||||
FAIL_NOT_MEMBER = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
||||
FAIL_NOT_RIGHT = 3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_ALREADY_MEMBER = 4, // <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
FAIL_OVER_MEMBER = 5, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
|
||||
FAIL_NATION = 6, // <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
FAIL_DIFFERENCE_TITLE = 7, // <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_OVER_MEMBER_NUM = 8, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
FAIL_GUILDWAR_TIME_KICK = 9, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> Ż<><C5BB><EFBFBD><EFBFBD> <20>õ<EFBFBD><C3B5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
FAIL_TACTICS_LIMITLEVEL = 10, // <20>뺴 <20><>û <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵǴ<C8B5> ij<><C4B3><EFBFBD><EFBFBD>.
|
||||
FAIL_TACTICS_NATION = 11, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>.
|
||||
FAIL_TACTICS_GUILDJOIN = 12, // <20><><EFBFBD>峪 <20>뺴<EFBFBD><EBBAB4> <20><><EFBFBD>ԵǾ<D4B5><C7BE>ְų<D6B0> <20><>û<EFBFBD><C3BB><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>.
|
||||
FAIL_TACTICS_OVER_MEMBER = 13, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>.
|
||||
|
||||
FAIL_TACTICS_LOGOUT = 14 // <20>뺴 <20>㰡 <20><> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>.
|
||||
};
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
unsigned long m_dwSenderID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> (<28><>ü)
|
||||
unsigned long m_dwReferenceID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> (<28><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><>Ʈ)
|
||||
|
||||
char m_szGuildName[MAX_GUILD_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
char m_szSenderName[MAX_MEMBER_NAME_LEN]; // ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD> (<28><>ü)
|
||||
|
||||
unsigned short m_wCmd; // <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildMemberList : public PktBase
|
||||
{
|
||||
enum { MAX_NUM_PER_PAGE = 10 };
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
unsigned char m_cMemberType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20>뺴<EFBFBD><EBBAB4><EFBFBD><EFBFBD>Ʈ
|
||||
unsigned char m_cSortCmd; // <20><><EFBFBD><EFBFBD> (Guild::MemberSort)
|
||||
unsigned char m_cPage; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char m_cTotalMemberNum; // <20><> <20><><EFBFBD><EFBFBD> <20><>
|
||||
unsigned char m_cNodeNum; // <20><><EFBFBD><EFBFBD> <20><> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct GuildMemberInfoNode
|
||||
{
|
||||
unsigned long m_dwCID;
|
||||
|
||||
char m_szName[MAX_MEMBER_NAME_LEN];
|
||||
unsigned char m_cTactics;
|
||||
|
||||
unsigned long m_dwFame;
|
||||
unsigned long m_dwGold;
|
||||
unsigned long m_dwServerID;
|
||||
|
||||
unsigned char m_cRank;
|
||||
unsigned char m_cTitle;
|
||||
unsigned char m_cLevel;
|
||||
unsigned char m_cClass;
|
||||
unsigned char m_cGuildWarFlag;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ (Game <-> DBAgent)
|
||||
struct PktGuildMemberInfoUpdate : public PktBase
|
||||
{
|
||||
unsigned long m_dwGID;
|
||||
unsigned long m_dwCID;
|
||||
|
||||
MemberListInfo m_MemberListInfo;
|
||||
MemberDetailInfo m_MemberDetailInfo;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
struct PktGuildMemberFameUpdate : public PktBase
|
||||
{
|
||||
unsigned long m_dwOurGID;
|
||||
unsigned long m_dwEnemyGID;
|
||||
unsigned long m_dwCID;
|
||||
unsigned char m_cType;
|
||||
int m_nAddFame;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
struct PktGuildMemberGoldUpdate : public PktBase
|
||||
{
|
||||
unsigned long m_dwGID;
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwGold;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><>ũ
|
||||
struct PktGuildMark : public PktBase
|
||||
{
|
||||
enum eError
|
||||
{
|
||||
FAIL_INVALID_GUILD = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_INVALID_MARK = 3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_INVALID_CHARACTER = 4, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʴ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>
|
||||
FAIL_NOT_MASTER = 5, // <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ƴ<EFBFBD>
|
||||
FAIL_NOT_ENOUGH_GOLD = 6, // <20>ݾ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
char m_szMark[MAX_MARK_SIZE]; // <20><>ũ
|
||||
unsigned long m_dwGold; // <20>ݰ<EFBFBD> <20>ܾ<EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildLevel : public PktBase
|
||||
{
|
||||
unsigned long m_dwUID; // <20><><EFBFBD>̵<EFBFBD> (C -> S : ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>, S -> C : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>)
|
||||
unsigned char m_cLevel; // <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwGold; // <20>ݰ<EFBFBD> <20>ܾ<EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildRelation : public PktBase
|
||||
{
|
||||
enum eSubCmd
|
||||
{
|
||||
GR_HOSTILITY = 0, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GR_PEACE = 1, // <20><>ȭ <20><><EFBFBD><EFBFBD>
|
||||
GR_ALERT = 2, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GR_COUNTER = 3, // ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GR_REQUEST = 4, // <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEBAB8> <20><>ȭâ
|
||||
GR_HOSTILITYDEL = 5 // A->B<><42> <20><><EFBFBD>뼱<EFBFBD><EBBCB1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> A->B<><42><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ص<EFBFBD> B<><42> Target<65><74> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
||||
// <20><><EFBFBD>뼱<EFBFBD><EBBCB1> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. B<><42> <20><><EFBFBD><EFBFBD> 5<><35> Ŀ<>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD>
|
||||
// <20><><EFBFBD>Ұ<EFBFBD> <20>ȴ<EFBFBD>.
|
||||
};
|
||||
|
||||
enum eError
|
||||
{
|
||||
FAIL_NOT_MEMBER = 2, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
||||
FAIL_NOT_HOSTILITY_TIME = 3, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||||
FAIL_NOT_ALERT_TIME = 4, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||||
FAIL_NOT_COUNTER_TIME = 5, // ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||||
FAIL_NOT_MASTER = 6, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ƴ<EFBFBD>
|
||||
FAIL_NOT_EXIST_GUILD = 7, // <20><><EFBFBD><EFBFBD> ID<49><44> 0 <20>̰ų<CCB0> <20><><EFBFBD>尡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_SELF_GUILD = 8, // <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20><><EFBFBD><EFBFBD>/<2F><>ȭ/<2F><><EFBFBD><EFBFBD>/ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_ALREADY_HOSTILITY = 9, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
||||
FAIL_ALREADY_COUNTER_HOSTILITY = 10, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
||||
FAIL_ALREADY_ALERT_HOSTILITY = 11, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
||||
FAIL_ALREADY_NEUTRALITY = 12, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20>߸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
||||
FAIL_MAX_ALERT_NUM = 13, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
|
||||
FAIL_NOT_HAVE_DEVELOPING_CAMP = 14, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_NOT_HAVE_ALERT = 15, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB> <20>Ϸ<EFBFBD><CFB7><EFBFBD>
|
||||
FAIL_TARGET_HOSTILITY_FULL = 16, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20>Ѱ<EFBFBD>ġ <20>ʰ<EFBFBD>
|
||||
|
||||
FAIL_REQUEST_WINDOW = 100, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FAIL_REQUEST_COUNTER = 101, // ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long m_dwGID; // <20>ڽ<EFBFBD><DABD><EFBFBD> GID
|
||||
unsigned long m_dwTargetGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long m_dwValue; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GID ( GR_REQUEST <20>϶<EFBFBD><CFB6><EFBFBD>... )
|
||||
char m_cSubCmd; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
||||
|
||||
char m_szGuildName[MAX_GUILD_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char m_szTempGuildName[MAX_GUILD_NAME_LEN]; // <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildInclination : public PktBase
|
||||
{
|
||||
enum PktGIErr
|
||||
{
|
||||
FAIL_SO_FAST = 2, // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
FAIL_WRONG_NATION_KARTERANT = 3, // ī<><C4AB><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
|
||||
FAIL_WRONG_NATION_MERKADIA = 4 // <20><EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD>忡<EFBFBD><E5BFA1> <20><>ĭ<EFBFBD><C4AD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>.
|
||||
};
|
||||
|
||||
unsigned long m_dwUID; // <20><><EFBFBD>̵<EFBFBD> (C -> S : ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>, S -> C : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>)
|
||||
unsigned char m_cInclination; // <20><><EFBFBD><EFBFBD> (Guild::Inclination <20><><EFBFBD><EFBFBD>)
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct GuildRight
|
||||
{
|
||||
enum Index
|
||||
{
|
||||
PUT_STOREHOUSE = 0,
|
||||
GET_STOREHOUSE = 1,
|
||||
USE_SAFE = 2,
|
||||
INVITE_MEMBER = 3,
|
||||
PERMIT_JOIN = 4,
|
||||
CHANGE_PASSWORD = 5,
|
||||
|
||||
REGULATE_TEX = 6,
|
||||
KICK_MEMBER = 7,
|
||||
BOARD_ADMIN = 8,
|
||||
|
||||
SETUP_MARK_N_LEVEL = 9,
|
||||
SETUP_MIDDLE = 10,
|
||||
DIVIDE_GOLD = 11,
|
||||
SETUP_POLICY = 12,
|
||||
|
||||
MAX_USING_RIGHT = 13
|
||||
};
|
||||
|
||||
unsigned char m_aryRight[MAX_RIGHT_SIZE];
|
||||
|
||||
GuildRight()
|
||||
{
|
||||
Init(false);
|
||||
}
|
||||
|
||||
GuildRight(bool bMaxRight)
|
||||
{
|
||||
Init(bMaxRight);
|
||||
}
|
||||
|
||||
void Init(bool bMaxRight)
|
||||
{
|
||||
std::fill_n(m_aryRight, int(MAX_RIGHT_SIZE), Guild::NONE);
|
||||
|
||||
m_aryRight[CHANGE_PASSWORD] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER;
|
||||
m_aryRight[PUT_STOREHOUSE] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER;
|
||||
m_aryRight[GET_STOREHOUSE] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER;
|
||||
m_aryRight[USE_SAFE] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER;
|
||||
m_aryRight[INVITE_MEMBER] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER;
|
||||
m_aryRight[PERMIT_JOIN] = (true == bMaxRight) ? Guild::COMMON : Guild::MASTER;
|
||||
|
||||
m_aryRight[REGULATE_TEX] = (true == bMaxRight) ? Guild::MIDDLE_ADMIN : Guild::MASTER;
|
||||
m_aryRight[KICK_MEMBER] = (true == bMaxRight) ? Guild::MIDDLE_ADMIN : Guild::MASTER;
|
||||
m_aryRight[BOARD_ADMIN] = (true == bMaxRight) ? Guild::MIDDLE_ADMIN : Guild::MASTER;
|
||||
|
||||
m_aryRight[SETUP_MARK_N_LEVEL] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER;
|
||||
m_aryRight[SETUP_MIDDLE] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER;
|
||||
m_aryRight[DIVIDE_GOLD] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER;
|
||||
m_aryRight[SETUP_POLICY] = (true == bMaxRight) ? Guild::MASTER : Guild::MASTER;
|
||||
}
|
||||
|
||||
int IsValid(void)
|
||||
{
|
||||
GuildRight MaxRight(true);
|
||||
|
||||
int nIndex = 0;
|
||||
for (; nIndex < MAX_RIGHT_SIZE; ++nIndex)
|
||||
{
|
||||
if (m_aryRight[nIndex] > MaxRight.m_aryRight[nIndex])
|
||||
{
|
||||
return nIndex;
|
||||
}
|
||||
}
|
||||
|
||||
return nIndex;
|
||||
}
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildRight : public PktBase
|
||||
{
|
||||
unsigned long m_dwUID; // <20><><EFBFBD>̵<EFBFBD> (C -> S : ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>, S -> C : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>)
|
||||
GuildRight m_GuildRight; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktMyGuildInfo : public PktBase
|
||||
{
|
||||
unsigned long m_dwGold; // <20><><EFBFBD><EFBFBD> <20>ݰ<EFBFBD>
|
||||
|
||||
GuildRight m_GuildRight; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cTitle; // <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><>Ȳ <20><><EFBFBD><EFBFBD>Ʈ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><><EFBFBD><EFBFBD> <20><>Ȳ <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildHostilityList : public PktBase
|
||||
{
|
||||
enum { MAX_NUM_PER_PAGE = 5 };
|
||||
|
||||
enum PageState
|
||||
{
|
||||
PAGE_CURRENT = 0,
|
||||
PAGE_PREV = 1,
|
||||
PAGE_NEXT = 2
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
unsigned char m_cCurrentPage; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned char m_cPageState; // <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cNodeNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned short m_wTotalItemNum; // <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD><C8B2> <20><> <20><><EFBFBD><EFBFBD>Ʈ <20><>
|
||||
|
||||
char m_szHostility[MAX_GUILD_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char m_szAlert[MAX_GUILD_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ <20><><EFBFBD><EFBFBD>
|
||||
struct GuildHostilityInfoNode
|
||||
{
|
||||
char m_szName[MAX_GUILD_NAME_LEN]; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
unsigned char m_cRelationType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> (Guild::Relation)
|
||||
};
|
||||
|
||||
// <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><>Ŷ (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildRelationInfo : public PktBase
|
||||
{
|
||||
unsigned long m_dwCID; // <20><>û ij<><C4B3><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwGID; // <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD> ID
|
||||
unsigned short m_wNodeNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct GuildRelationInfoNode
|
||||
{
|
||||
// GuildLargeInfo <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwGID;
|
||||
unsigned char m_cRelationByMine;
|
||||
unsigned char m_cRelationByTarget;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ݰ<EFBFBD>
|
||||
struct PktGuildSafe : public PktBase
|
||||
{
|
||||
enum PktGuildSafeErr
|
||||
{
|
||||
FAIL_NOT_ENOUGH_MONEY = 2, // <20>ݰ<EFBFBD><DDB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD>
|
||||
FAIL_NOT_CHAR_MONEY = 3, // ij<><C4B3><EFBFBD>Ϳ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD>
|
||||
FAIL_NOT_GUILD_DEPOSIT = 4, // <20>ݰ<EFBFBD> <20>Ա<EFBFBD><D4B1>ϴµ<CFB4> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
||||
FAIL_NOT_GUILD_UPDATE = 5, // <20>ݰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ϴµ<CFB4> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.
|
||||
FAIL_REQUEST_DATA = 6, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD><C3BB><EFBFBD>Դϴ<D4B4>.
|
||||
};
|
||||
|
||||
enum SafeCmd
|
||||
{
|
||||
SC_WITHDRAWAL = 0, // <20><><EFBFBD><EFBFBD>
|
||||
SC_DEPOSIT = 1, // <20>Ա<EFBFBD>
|
||||
SC_RELEASE = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SC_REFER = 3, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȸ
|
||||
SC_CAMPSHOP = 4, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ͱ<EFBFBD>
|
||||
SC_BONUS = 5, // <20><><EFBFBD>ʽ<EFBFBD> <20>Ա<EFBFBD>
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long m_dwGold; // <20>Ա<EFBFBD>/<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ݾ<EFBFBD>
|
||||
unsigned char m_cCmd; // <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ݰ<EFBFBD> Ack
|
||||
struct PktGuildSafeAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
unsigned long m_dwSafeGold; // <20>ݰ<EFBFBD> <20>ܾ<EFBFBD>
|
||||
unsigned long m_dwCharGold; // ij<><C4B3><EFBFBD><EFBFBD> <20>ܾ<EFBFBD> (C -> S : <20>Ա<EFBFBD>/<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ݾ<EFBFBD>)
|
||||
|
||||
unsigned char m_cCmd; // <20><><EFBFBD><EFBFBD>
|
||||
|
||||
char m_szCharName[Guild::MAX_MEMBER_NAME_LEN]; // ij<><C4B3><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> DB (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktGuildDB : public PktBase
|
||||
{
|
||||
bool m_bStartFlag; // <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD>ΰ<EFBFBD>? (PktGuildDB<44><42> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> ù<><C3B9>° <20><><EFBFBD>带 <20><EFBFBD><DEBE><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD>־<EFBFBD><D6BE><EFBFBD> <20>Ѵ<EFBFBD>.)
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
unsigned char m_cTotalMemberNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
unsigned char m_cRelationByMineNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned char m_cRelationByTargetNum; // <20>ٸ<EFBFBD> <20><><EFBFBD>尡 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short m_wSize; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (DB)
|
||||
struct GuildInfoDB
|
||||
{
|
||||
unsigned long m_dwGID;
|
||||
char m_strName[MAX_GUILD_NAME_FOR_DB];
|
||||
unsigned char m_cLevel;
|
||||
unsigned long m_dwFame;
|
||||
unsigned long m_dwGold;
|
||||
TIME m_tmLastLogout;
|
||||
TIME m_tmCheckMember;
|
||||
TIME m_tmGMLastLogout;
|
||||
char m_szMark[MAX_MARK_SIZE];
|
||||
char m_szRight[MAX_RIGHT_SIZE];
|
||||
unsigned char m_cInclination;
|
||||
TIME m_tmChangeInclination;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (DB)
|
||||
struct GuildMemberDB
|
||||
{
|
||||
unsigned long m_dwGID;
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwRank;
|
||||
char m_strName[MAX_MEMBER_NAME_LEN];
|
||||
unsigned long m_dwTitle;
|
||||
unsigned char m_cLevel;
|
||||
unsigned short m_wClass;
|
||||
unsigned long m_dwFame;
|
||||
unsigned long m_dwGold;
|
||||
unsigned char m_cGuildWarFlag;
|
||||
TIME m_LeaveGuildTime;
|
||||
|
||||
unsigned char m_cTactics;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (DB)
|
||||
struct GuildRelationDB
|
||||
{
|
||||
unsigned long m_dwGID;
|
||||
unsigned long m_dwTargetGID;
|
||||
unsigned char m_cRelation;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ.
|
||||
struct PktGuildPosition : public PktBase
|
||||
{
|
||||
enum PktErr
|
||||
{
|
||||
FAIL_GUILD = 1, // <20><><EFBFBD>尡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
FAIL_CONNECT_CHAR = 2, // ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>϶<EFBFBD>.
|
||||
FAIL_DB_UPDATE = 3, // DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>.
|
||||
FAIL_MEMBER_DELETE = 4 // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
};
|
||||
|
||||
enum Const
|
||||
{
|
||||
TYPE_POSITION = 0, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
TYPE_MEMBERDELETE = 1 // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
};
|
||||
|
||||
unsigned long m_dwGID;
|
||||
unsigned long m_dwCID;
|
||||
unsigned char m_cPosition;
|
||||
unsigned char m_cType;
|
||||
};
|
||||
|
||||
// <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD> <20>ӽ÷<D3BD>(<28><><EFBFBD>̽<EFBFBD>ƽ Ű <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>).
|
||||
struct PktKeyInfo : public PktBase
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_KEY_INFO = 34
|
||||
};
|
||||
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwKeyInfo[MAX_KEY_INFO];
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,174 @@
|
||||
#ifndef _PARTY_INFO_PACKET_H_
|
||||
#define _PARTY_INFO_PACKET_H_
|
||||
|
||||
#include "DataPacket.h"
|
||||
#include <DB/DBdefine.h>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktPID* LPPktPID;
|
||||
struct PktPID : public PktDD
|
||||
{
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwPartyID;
|
||||
|
||||
unsigned long m_dwServerID;
|
||||
unsigned long m_dwGID;
|
||||
unsigned short m_wClass;
|
||||
char m_cLevel;
|
||||
};
|
||||
|
||||
typedef struct PktPIDAck* LPPktPIDAck;
|
||||
struct PktPIDAck : public PktDD
|
||||
{
|
||||
PARTY m_Party;
|
||||
|
||||
unsigned long m_dwCharID;
|
||||
|
||||
unsigned long m_dwServerID;
|
||||
unsigned long m_dwGID;
|
||||
unsigned short m_wClass;
|
||||
char m_cLevel;
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktCPD* LPPktCPD;
|
||||
struct PktCPD : public PktDD
|
||||
{
|
||||
unsigned long m_dwLeaderID;
|
||||
unsigned long m_dwMemberID;
|
||||
|
||||
unsigned long m_dwLeaderGID;
|
||||
unsigned short m_wLeaderClass;
|
||||
char m_cLeaderLevel;
|
||||
|
||||
unsigned long m_dwMemberGID;
|
||||
unsigned short m_wMemberClass;
|
||||
char m_cMemberLevel;
|
||||
};
|
||||
|
||||
typedef struct PktCPDAck* LPPktCPDAck;
|
||||
struct PktCPDAck : public PktDD
|
||||
{
|
||||
PARTY m_Party;
|
||||
|
||||
unsigned long m_dwLeaderID;
|
||||
unsigned long m_dwMemberID;
|
||||
|
||||
unsigned long m_dwLeaderGID;
|
||||
unsigned short m_wLeaderClass;
|
||||
char m_cLeaderLevel;
|
||||
|
||||
unsigned long m_dwMemberGID;
|
||||
unsigned short m_wMemberClass;
|
||||
char m_cMemberLevel;
|
||||
|
||||
unsigned char m_cZone;
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktDPD* LPPktDPD;
|
||||
struct PktDPD : public PktDD
|
||||
{
|
||||
unsigned long m_dwPartyID;
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//
|
||||
// <09><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> : CID/CID 0/SID
|
||||
// <09><><EFBFBD><EFBFBD> <20>αƿ<D7BE> : CID/CID 0/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>(0 <20>ϰ<EFBFBD><CFB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20>絵 <20><><EFBFBD><EFBFBD>)
|
||||
// <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : CID/CID CID/CID
|
||||
// <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : CID/CID CID/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>(0 <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>絵 <20><><EFBFBD><EFBFBD>)
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
typedef struct PktPMD* LPPktPMD;
|
||||
struct PktPMD : public PktDD
|
||||
{
|
||||
enum PktPMDErr
|
||||
{
|
||||
NO_SERVER_ERR = 0,
|
||||
SERVER_ERROR = 1,
|
||||
FAIL_WRONG_PARTY = 2
|
||||
};
|
||||
|
||||
unsigned long m_dwPartyID;
|
||||
unsigned long m_dwSenderID;
|
||||
|
||||
unsigned long m_dwGID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>(<28><><EFBFBD><EFBFBD> Reference <20><> <20><><EFBFBD><EFBFBD>).
|
||||
unsigned long m_dwServerID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>.
|
||||
unsigned short m_wClass; // Ŭ<><C5AC><EFBFBD><EFBFBD>.
|
||||
char m_cLevel; // <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
char m_strSenderName[CHAR_INFOST::MAX_NAME_LEN];
|
||||
};
|
||||
|
||||
|
||||
struct PartyMemberData
|
||||
{
|
||||
// <20><>æƮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> CreatureStructure.h<><68> EnchantInfo<66><6F> <20><>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF>մϴ<D5B4>.
|
||||
|
||||
enum ChangedData
|
||||
{
|
||||
CHANGED_XPOS = ( 1 << 0 ),
|
||||
CHANGED_YPOS = ( 1 << 1 ),
|
||||
CHANGED_ZPOS = ( 1 << 2 ),
|
||||
CHANGED_MAX_HP = ( 1 << 3 ),
|
||||
CHANGED_MAX_MP = ( 1 << 4 ),
|
||||
CHANGED_CUR_HP = ( 1 << 5 ),
|
||||
CHANGED_CUR_MP = ( 1 << 6 ),
|
||||
CHANGED_LEVEL = ( 1 << 7 ),
|
||||
CHANGED_CLASS = ( 1 << 8 ),
|
||||
|
||||
CHANGED_ENCHANT_INFO_0 = ( 1 << 9 ),
|
||||
CHANGED_ENCHANT_INFO_1 = ( 1 << 10 ),
|
||||
CHANGED_ENCHANT_INFO_2 = ( 1 << 11 ),
|
||||
CHANGED_ENCHANT_INFO_3 = ( 1 << 12 )
|
||||
};
|
||||
|
||||
enum Const
|
||||
{
|
||||
MAX_ENCHANT_INFO_NUM = 4
|
||||
};
|
||||
|
||||
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> CID
|
||||
|
||||
float m_fXPos; // X<><58>ġ
|
||||
float m_fYPos; // Y<><59>ġ
|
||||
float m_fZPos; // Z<><5A>ġ
|
||||
|
||||
unsigned short m_usMaxHP; // <20>ִ<EFBFBD> HP
|
||||
unsigned short m_usMaxMP; // <20>ִ<EFBFBD> MP
|
||||
unsigned short m_usCurHP; // <20><><EFBFBD><EFBFBD> HP
|
||||
unsigned short m_usCurMP; // <20><><EFBFBD><EFBFBD> MP
|
||||
|
||||
unsigned char m_cLevel; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cClass; // ij<><C4B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long m_dwEnchantInfo[MAX_ENCHANT_INFO_NUM]; // <20><>æƮ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short m_usDataChanged; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,79 @@
|
||||
|
||||
#ifndef _RANKING_PACKET_H_
|
||||
#define _RANKING_PACKET_H_
|
||||
|
||||
#include <algorithm>
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// <20><>ŷ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
struct RankingNode
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
char m_szCharName[MAX_NAME];
|
||||
unsigned long m_dwPoint;
|
||||
unsigned char m_cLevel;
|
||||
unsigned char m_cClass;
|
||||
|
||||
RankingNode()
|
||||
: m_dwPoint(0), m_cLevel(0), m_cClass(0)
|
||||
{
|
||||
std::fill_n(m_szCharName, int(MAX_NAME), 0);
|
||||
}
|
||||
|
||||
RankingNode(const char* szCharName, unsigned long dwPoint, unsigned char cLevel, unsigned char cClass)
|
||||
: m_dwPoint(dwPoint), m_cLevel(cLevel), m_cClass(cClass)
|
||||
{
|
||||
strncpy(m_szCharName, szCharName, MAX_NAME);
|
||||
m_szCharName[MAX_NAME - 1] = 0;
|
||||
}
|
||||
|
||||
bool operator < (const RankingNode& rhs)
|
||||
{
|
||||
return (m_dwPoint < rhs.m_dwPoint);
|
||||
}
|
||||
|
||||
bool operator > (const RankingNode& rhs)
|
||||
{
|
||||
return (m_dwPoint > rhs.m_dwPoint);
|
||||
}
|
||||
|
||||
struct ComparePoint
|
||||
{
|
||||
int operator() (const RankingNode& node1, const RankingNode& node2)
|
||||
{
|
||||
return (node1.m_dwPoint > node2.m_dwPoint);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
typedef struct PktRankingInfo* LPPktRankingInfo;
|
||||
struct PktRankingInfo : public PktBase
|
||||
{
|
||||
enum Const
|
||||
{
|
||||
MAX_NUM_PER_PAGE = 18
|
||||
};
|
||||
|
||||
enum PktRankingInfoErr
|
||||
{
|
||||
FAIL_INVALID_PAGE = 2
|
||||
};
|
||||
|
||||
unsigned long m_dwCharID;
|
||||
|
||||
unsigned char m_cClass;
|
||||
unsigned char m_cPage;
|
||||
|
||||
unsigned short m_wNum;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,163 @@
|
||||
#ifndef _LOGIN_SERVER_INFO_
|
||||
#define _LOGIN_SERVER_INFO_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <algorithm>
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü<EFBFBD><C3BC>
|
||||
typedef union SERVER_ID* LPSERVER_ID;
|
||||
union SERVER_ID
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
enum Group
|
||||
{
|
||||
GROUP_TEST = 0, // <20><EFBFBD>Ʈ
|
||||
GROUP_OFFICIAL1 = 1, // Ichman
|
||||
GROUP_OFFICIAL2 = 2, //
|
||||
GROUP_OFFICIAL3 = 3, //
|
||||
GROUP_OFFICIAL4 = 4, //
|
||||
GROUP_OFFICIAL5 = 5, //
|
||||
GROUP_OFFICIAL6 = 6, //
|
||||
GROUP_OFFICIAL7 = 7, //
|
||||
GROUP_OFFICIAL8 = 8, //
|
||||
|
||||
GROUP_BATTLE_SERVER = 9, // <20><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>
|
||||
|
||||
// Rodin : MAX_GROUP_NUM<55><4D> 8<><38> <20>ϸ<EFBFBD> <20>α<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBFA1> <20><EFBFBD><D7BD>ϴ<EFBFBD>. <20><>?!?!
|
||||
MAX_GROUP_NUM = 10
|
||||
};
|
||||
|
||||
enum Zone
|
||||
{
|
||||
NONE = 0,
|
||||
ZONE1 = 1, // <20><EFBFBD><D7B7><EFBFBD> <20>ڽ<EFBFBD>Ʈ
|
||||
ZONE2 = 2, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ZONE3 = 3, // X <20><> <20><>Ʋ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
ZONE4 = 4, // <20><><EFBFBD>̳<EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
|
||||
ZONE5 = 5, // <20><><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
BATTLE_ZONE = 6, // X <20><>Ʋ <20><>
|
||||
ADMIN_TOOL_ZONE = 7, // X (Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) - <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰڼ<CFB0>.
|
||||
CAPITAL = 8, // ī<><C4AB><EFBFBD><EFBFBD>
|
||||
ZONE9 = 9, // X <20><> NEWZONE5 <20><><EFBFBD>ε<EFBFBD> <20>۷ι<DBB7><CEB9><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ZONE9<45><39> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
FRAG_ZONE = 10, // X <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
BATTLE_SERVER = 11, // X <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ZONE12 = 12, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
STATUE_ZONE = 13, // X <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
PRISON = 14, // <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ý<EFBFBD><C3BD><EFBFBD>)
|
||||
CHAR_SELECT = 15, // X ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD> <20><>
|
||||
STONE_WAR1 = 16, // <20>ο<EFBFBD> 40<34><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
STONE_WAR2 = 17, // <20>ο<EFBFBD> 80<38><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
STONE_WAR3 = 18, // <20>ο<EFBFBD> 80<38><30><EFBFBD>̻<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
MAX_ZONE_NUM = 19
|
||||
};
|
||||
|
||||
enum Channel
|
||||
{
|
||||
// sphawk : ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD>ƽ<EFBFBD><C6BD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ժη<D4BA> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// <20><>ģ <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
||||
// 1. <20><><EFBFBD><EFBFBD>.
|
||||
// 2. PktSCInfo (<28>߰<EFBFBD><DFB0>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ<EFBFBD>Դϴ<D4B4>)
|
||||
|
||||
// 3. PktCSAck
|
||||
// 4. PktSZMvAck
|
||||
|
||||
// 5. PktCSDAck (<28>߰<EFBFBD><DFB0>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ<EFBFBD>Դϴ<D4B4>)
|
||||
// 6. PktSZMvDAck (<28>߰<EFBFBD><DFB0>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ<EFBFBD>Դϴ<D4B4>)
|
||||
|
||||
// SERVER_GROUP<55><50><EFBFBD><EFBFBD> ä<><C3A4><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD> <20><EFBFBD>/<2F><>ĭ <20><> <20>ο<EFBFBD><CEBF><EFBFBD><EFBFBD>Դϴ<D4B4>.(<28>߰<EFBFBD> <20>ҽ<EFBFBD><D2BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>дϴ<D0B4>.)
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD> <20>ٶ<EFBFBD><D9B6>ϴ<EFBFBD>.
|
||||
MAX_CHANNEL_NUM = 5
|
||||
};
|
||||
|
||||
typedef struct SID* LPSID;
|
||||
struct SID
|
||||
{
|
||||
char Type;
|
||||
char Group;
|
||||
char Channel;
|
||||
char ID;
|
||||
};
|
||||
|
||||
SID sID;
|
||||
unsigned long dwID;
|
||||
|
||||
inline char GetType(void) { return sID.Type; }
|
||||
inline char GetChannel(void) { return sID.Channel; }
|
||||
inline char GetZone(void) { return sID.ID; }
|
||||
inline char GetGroup(void) { return sID.Group; }
|
||||
};
|
||||
|
||||
|
||||
typedef struct SERVER* LPSERVER_GROUP;
|
||||
struct SERVER_GROUP
|
||||
{
|
||||
enum { CHANNEL_NUM = 2, SERVER_NAME = 15 };
|
||||
|
||||
char m_Group; // <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
char m_Name[SERVER_NAME]; // <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>
|
||||
long m_ClientNum[CHANNEL_NUM]; // <20><><EFBFBD><EFBFBD> <20><> <20><>
|
||||
IN_ADDR m_Address; // <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD>
|
||||
};
|
||||
|
||||
typedef struct SERVER* LPSERVER_LIST;
|
||||
struct SERVER_LIST
|
||||
{
|
||||
enum { SERVER_NUM = 10 };
|
||||
|
||||
unsigned short m_ServerNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SERVER_GROUP m_ServerGroup[SERVER_NUM]; // <20><><EFBFBD><EFBFBD> <20><EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
|
||||
typedef struct RylServerInfo* LPRylServerInfo;
|
||||
struct RylServerInfo
|
||||
{
|
||||
enum
|
||||
{
|
||||
GROUP_NAME_LENGTH = 120,
|
||||
PATCH_ADDRESS_LENGTH = 100
|
||||
};
|
||||
|
||||
SERVER_ID m_ServerUID;
|
||||
IN_ADDR m_ServerAddress;
|
||||
unsigned long m_dwClientVer;
|
||||
unsigned long m_dwChecksum;
|
||||
|
||||
size_t m_nGroupNameLen;
|
||||
size_t m_nPatchAddressLen;
|
||||
|
||||
char m_szGroupName[GROUP_NAME_LENGTH];
|
||||
char m_szPatchAddress[PATCH_ADDRESS_LENGTH];
|
||||
|
||||
unsigned short m_usChannelClientNum[SERVER_GROUP::CHANNEL_NUM];
|
||||
unsigned short m_usChannelNum;
|
||||
|
||||
RylServerInfo::RylServerInfo()
|
||||
: m_dwClientVer(0), m_dwChecksum(0),
|
||||
m_nPatchAddressLen(0), m_usChannelNum(0)
|
||||
{
|
||||
m_ServerUID.dwID = 0;
|
||||
m_ServerAddress.S_un.S_addr = 0;
|
||||
|
||||
m_szPatchAddress[0] = '\0';
|
||||
|
||||
strncpy(m_szGroupName, "UnKnown", GROUP_NAME_LENGTH);
|
||||
m_nGroupNameLen = strlen(m_szGroupName);
|
||||
|
||||
std::fill_n(m_usChannelClientNum, int(SERVER_GROUP::CHANNEL_NUM), 0);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,34 @@
|
||||
#ifndef _RYL_SERVER_NETWORK_SERVER_LOG_H_
|
||||
#define _RYL_SERVER_NETWORK_SERVER_LOG_H_
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
struct PktServerLog : public PktBase
|
||||
{
|
||||
enum LogType
|
||||
{
|
||||
ITEM_DUPLICATED_LOG = 0x01
|
||||
};
|
||||
|
||||
unsigned char m_cLogCmd;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD>
|
||||
struct PktItemDuplicated : public PktServerLog
|
||||
{
|
||||
enum { MAX_NAME = 16 };
|
||||
|
||||
char m_szName[MAX_NAME];
|
||||
unsigned __int64 m_dwItemSerial;
|
||||
unsigned long m_dwUID;
|
||||
unsigned long m_dwCID;
|
||||
unsigned long m_dwQty;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,295 @@
|
||||
#ifndef _DBAGENT_TO_LOGIN_
|
||||
#define _DBAGENT_TO_LOGIN_
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Network/Packet/PacketStruct/DataPacket.h>
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
|
||||
// <20><> <20><>Ŷ ( Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5<>ʸ<EFBFBD><CAB8><EFBFBD>.. <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ŵ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> Ping<6E><67> <20>ش<EFBFBD>. )
|
||||
typedef struct PktSyP* LPPktSyP;
|
||||
struct PktSyP : public PktBase
|
||||
{
|
||||
unsigned long m_dwTickTime;
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><>û <20><>Ŷ
|
||||
typedef struct PktSL* LPPktSL;
|
||||
struct PktSL : public PktBase
|
||||
{
|
||||
unsigned long m_dwServerID;
|
||||
IN_ADDR m_Address;
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
typedef struct PktSLAck* LPPktSLAck;
|
||||
struct PktSLAck : public PktBase
|
||||
{
|
||||
enum { PATCH_ADDRESS_LENGTH = 100 };
|
||||
|
||||
unsigned __int64 m_dlItemUID;
|
||||
unsigned long m_dwServerID;
|
||||
|
||||
unsigned long m_dwClientVer;
|
||||
unsigned long m_dwCheckSum;
|
||||
|
||||
char m_PatchAddress[PATCH_ADDRESS_LENGTH];
|
||||
};
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktSVU* LPPktSVU;
|
||||
struct PktSVU : public PktBase
|
||||
{
|
||||
enum { PATCH_ADDRESS_LENGTH = 100 };
|
||||
|
||||
unsigned long m_dwServerID;
|
||||
IN_ADDR m_ServerAddr;
|
||||
unsigned long m_dwClientVer;
|
||||
unsigned long m_dwCheckSum;
|
||||
char m_PatchAddress[PATCH_ADDRESS_LENGTH];
|
||||
};
|
||||
|
||||
|
||||
// ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktSCInfo* LPPktSCInfo;
|
||||
struct PktSCInfo : public PktBase
|
||||
{
|
||||
enum { MAX_CHANNEL_NUM = 5 };
|
||||
|
||||
unsigned long m_dwServerID;
|
||||
unsigned char m_cChannelNum;
|
||||
unsigned short m_usChannelClientNum[MAX_CHANNEL_NUM];
|
||||
};
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// <20><>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
|
||||
|
||||
// <20><>ġ <20><><EFBFBD><EFBFBD> <20><>û <20><>Ŷ
|
||||
typedef struct PktSPI* LPPktSPI;
|
||||
struct PktSPI : public PktBase
|
||||
{
|
||||
unsigned long m_dwServerID;
|
||||
};
|
||||
|
||||
// <20><>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
typedef struct PktSPIAck* LPPktSPIAck;
|
||||
struct PktSPIAck : public PktBase
|
||||
{
|
||||
enum { PATCH_ADDRESS_LENGTH = 100 };
|
||||
unsigned long m_dwClientVer;
|
||||
char m_PatchAddress[PATCH_ADDRESS_LENGTH];
|
||||
};
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Zone <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktSZ* LPPktSZ;
|
||||
struct PktSZ : public PktBase
|
||||
{
|
||||
unsigned short m_cChannel;
|
||||
unsigned char m_cZone;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
typedef struct PktSZAck* LPPktSZAck;
|
||||
struct PktSZAck : public PktBase
|
||||
{
|
||||
unsigned long m_dwServerID;
|
||||
sockaddr_in m_GameServerTCPAddr;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
typedef struct PktSZMv* LPPktSZMv;
|
||||
struct PktSZMv : public PktBase
|
||||
{
|
||||
POS m_NewPos;
|
||||
char m_cZone;
|
||||
char m_cChannel;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
typedef struct PktSZMvAck* LPPktSZMvAck;
|
||||
struct PktSZMvAck : public PktBase
|
||||
{
|
||||
enum { MAX_CHANNEL_NUM = 5 };
|
||||
|
||||
unsigned short m_wChannelNum[MAX_CHANNEL_NUM];
|
||||
unsigned char m_cZone;
|
||||
};
|
||||
|
||||
typedef struct PktSZMvD* LPPktSZMvD;
|
||||
struct PktSZMvD : public PktDD
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
char m_cZone;
|
||||
char m_cChannel;
|
||||
|
||||
POS m_NewPos;
|
||||
};
|
||||
|
||||
typedef struct PktSZMvDAck* LPPktSZMvDAck;
|
||||
struct PktSZMvDAck : public PktDD
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_CHANNEL_NUM = 5
|
||||
};
|
||||
|
||||
enum PktSZMvDAckErr
|
||||
{
|
||||
FAIL_INVALID_ZONE = 3,
|
||||
FAIL_INVALID_CHAR = 5,
|
||||
FAIL_PERSONNEL_OVER = 6,
|
||||
FAIL_LIMIT_LEVEL = 7
|
||||
};
|
||||
|
||||
unsigned char m_cZone;
|
||||
unsigned short m_wChannelNum[MAX_CHANNEL_NUM];
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
typedef struct PktSA* LPPktSA;
|
||||
struct PktSA : public PktDD
|
||||
{
|
||||
unsigned long m_dwUserID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
char m_cZone; // <20><> <20><>ȣ
|
||||
char m_cChannel; // ä<><C3A4> <20><>ȣ
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> Ack
|
||||
typedef struct PktSAAck* LPPktSAAck;
|
||||
struct PktSAAck : public PktDD
|
||||
{
|
||||
enum PktSAAckErr
|
||||
{
|
||||
NO_SERVER_ERR = 0,
|
||||
SERVER_ERROR = 1,
|
||||
FAIL_USER_LIMIT = 4
|
||||
};
|
||||
|
||||
unsigned long m_dwServerID;
|
||||
IN_ADDR m_GameAddress;
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
typedef struct PktUUT *LPPktUUT;
|
||||
struct PktUUT : public PktBase
|
||||
{
|
||||
enum UpdateType
|
||||
{
|
||||
UpdateUIDTableNone = 0, // <20><><EFBFBD><EFBFBD>
|
||||
UpdateUIDTableUserLogin = 1, // <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
UpdateUIDTableUserLogout = 2, // <20><><EFBFBD><EFBFBD> <20>αƿ<D7BE>
|
||||
UpdateUIDTableUserMove = 3, // <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
UpdateUIDTableCharLogin = 4, // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
UpdateUIDTableCharLogout = 5, // ij<><C4B3><EFBFBD><EFBFBD> <20>αƿ<D7BE>
|
||||
UpdateUIDTableCharMove = 6, // ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
|
||||
UpdateUIDTableBillingCheck = 7, // <20><><EFBFBD><EFBFBD> üũ
|
||||
|
||||
MAX_UPDATE_TYPE = 8
|
||||
};
|
||||
|
||||
enum Err
|
||||
{
|
||||
DISCONNECT_USER = 1
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MaxAccountLen = 24,
|
||||
MaxPasswordLen = 36
|
||||
};
|
||||
|
||||
unsigned char m_cCmd;
|
||||
char m_strAccount[MaxAccountLen];
|
||||
|
||||
// edith 2008.01.15 <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>۾<EFBFBD>
|
||||
char m_strPassword[MaxPasswordLen];
|
||||
|
||||
IN_ADDR m_IPAddress;
|
||||
|
||||
unsigned long m_dwSessionID;
|
||||
unsigned long m_dwServerID;
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
};
|
||||
|
||||
typedef struct PktUUTAck *LPPktUUTAck;
|
||||
struct PktUUTAck : public PktBase
|
||||
{
|
||||
unsigned char m_cCmd;
|
||||
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwFlag; // Success(=0)
|
||||
int m_nPlayTime; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (<28><>, <20><>)
|
||||
unsigned long m_dwCRMIndex1; // <20>ǽù<C7BD> ID(0<≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
char m_cstrBillingType; // D, T(N: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̱<EFBFBD>.
|
||||
typedef struct PktUK* LPPktUK;
|
||||
struct PktUK : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwServerID;
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> Ÿ<>Ӿƿ<D3BE> <20><><EFBFBD><EFBFBD>. (Billing Timeout Notify)
|
||||
typedef struct PktBTN* LPPktBTN;
|
||||
struct PktBTN : public PktBase
|
||||
{
|
||||
unsigned long m_dwUserID;
|
||||
unsigned long m_dwCharID;
|
||||
unsigned long m_dwServerID;
|
||||
unsigned char m_cRemainMinute; // <20><><EFBFBD><EFBFBD> <20><>..
|
||||
unsigned char m_cBillingType; // 'D' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'T' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
// <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
||||
typedef struct PktHanBTN* LPPktHanBTN;
|
||||
struct PktHanBTN : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_HAN_BTN = 70
|
||||
};
|
||||
|
||||
unsigned long m_dwIP;
|
||||
unsigned long m_dwUID;
|
||||
unsigned long m_dwCID;
|
||||
char m_szAccount[PktUUT::MaxAccountLen];
|
||||
char m_szMsg[MAX_HAN_BTN];
|
||||
};
|
||||
|
||||
// <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, IP<49><50>)
|
||||
typedef struct PktHanUserKill* LPPktHanUserKill;
|
||||
struct PktHanUserKill : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
DISCONN_ALL_IP = 0xFFFFFFFF
|
||||
};
|
||||
|
||||
unsigned long m_dwIP;
|
||||
char m_szAccount[PktUUT::MaxAccountLen];
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,99 @@
|
||||
#ifndef _UNIFIED_CHAR_DATA_PACKET_H_
|
||||
#define _UNIFIED_CHAR_DATA_PACKET_H_
|
||||
|
||||
#include <DB/DBdefine.h>
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
|
||||
namespace UnifiedConst
|
||||
{
|
||||
enum AgentServerType
|
||||
{
|
||||
// OldServerGroupID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. 0 ~ 10 <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49>̴<EFBFBD>.
|
||||
|
||||
Part1 = 20,
|
||||
Part1Unified = 21,
|
||||
ROW = 22,
|
||||
Part2Unified = 23,
|
||||
Part2Selectable = 24,
|
||||
};
|
||||
|
||||
enum StoreSelected
|
||||
{
|
||||
NONE_SELECTED = 0,
|
||||
SELECTED_PART1 = (1 << 0),
|
||||
SELECTED_PART2 = (1 << 1)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
struct PktUnifiedCharInfo : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
MAX_STORE_INFO = 10,
|
||||
MAX_CHAR_DATA = 30
|
||||
};
|
||||
|
||||
enum ErrorCode
|
||||
{
|
||||
STORE_READ_ERROR = 1,
|
||||
CHARINFO_READ_ERROR = 2
|
||||
};
|
||||
|
||||
unsigned long dwUID;
|
||||
|
||||
unsigned char cStoreInfoNum;
|
||||
unsigned char cCharDataNum;
|
||||
unsigned char cRestrictedPart1ToPart2Level; // Part1 <20><><EFBFBD><EFBFBD> Part2 <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char cRemainCharTransferCount; // Part1 <20><><EFBFBD><EFBFBD> Part2 <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ƚ<><C8BD>
|
||||
|
||||
USER_INFO userInfo;
|
||||
UnifiedStoreInfo unifiedStoreInfo[MAX_STORE_INFO];
|
||||
UnifiedCharData unifiedCharData[MAX_CHAR_DATA];
|
||||
};
|
||||
|
||||
struct PktUnifiedCharSelectReq : public PktBase
|
||||
{
|
||||
enum
|
||||
{
|
||||
// edith 2008.03.17 ID,PASS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MAX_PASSWORD_LEN = 36
|
||||
};
|
||||
|
||||
char szPassword[MAX_PASSWORD_LEN]; // <20><><EFBFBD><EFBFBD> <20>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned char cSelectedServerGroupID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ
|
||||
unsigned char cSelectedNation; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long dwRequestKey; // RequestKey
|
||||
|
||||
unsigned long dwUID; // UID
|
||||
unsigned long dwCID[USER_INFO::MAX_CHAR_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> CID<49><44> ä<><C3A4> <20>ش<EFBFBD>.
|
||||
};
|
||||
|
||||
struct PktUnifiedCharSelectAck : public PktBase
|
||||
{
|
||||
enum ErrorCode
|
||||
{
|
||||
SERVER_ERROR = 1,
|
||||
PACKET_ERROR = 2,
|
||||
PASSWORD_FAILED = 3,
|
||||
|
||||
WRONG_STORE_SELECTED = 4, // <20>߸<EFBFBD><DFB8><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD>(<28><> <20><><EFBFBD><EFBFBD> <20>ƴѰ<C6B4> <20><><EFBFBD><EFBFBD>)
|
||||
WRONG_CHAR_SELECTED = 5, // <20>߸<EFBFBD><DFB8><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><> <20><><EFBFBD><EFBFBD> <20>ƴѰ<C6B4> <20><><EFBFBD><EFBFBD>. <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
UNIFIED_STORE_READ_ERROR = 6, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
UNIFIED_STORE_WRITE_ERROR = 7, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
UNIFIED_CHAR_READ_ERROR = 8, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
UNIFIED_CHAR_WRITE_ERROR = 9, // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
CHAR_VIEW_RELOAD_ERROR = 10, // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
PART1_DB_LOGINED = 11, // Part1 DB<44><42> <20>α<EFBFBD><CEB1><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
TRANSFER_COUNT_OVER = 12 // TransferCount<6E><74> <20><><EFBFBD><EFBFBD> ȸ<><C8B8> <20>̻<EFBFBD> <20>ʰ<EFBFBD><CAB0>Ǿ<EFBFBD> <20>ִ<EFBFBD>.
|
||||
};
|
||||
|
||||
unsigned long dwUID;
|
||||
unsigned long dwRequestKey;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,233 @@
|
||||
#include "stdafx.h"
|
||||
#include "WrapPacket.h"
|
||||
#include "PacketStatistics.h"
|
||||
|
||||
#include <Log/ServerLog.h>
|
||||
#include <Stream/Buffer/Buffer.h>
|
||||
#include <Network/XORCrypt/XORCrypt.h>
|
||||
#include <Utility/Compress/MiniLZO/MiniLZOWrapper.h>
|
||||
|
||||
|
||||
bool PacketWrap::WrapHeader(CBuffer* lpBuffer_In, unsigned short usUsed_In, unsigned char cCMD_In,
|
||||
unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
if (WrapHeader(lpBuffer_In->wr_ptr(), usUsed_In, cCMD_In, usState_In, usError_In))
|
||||
{
|
||||
lpBuffer_In->wr_ptr(usUsed_In);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PacketWrap::WrapCryptOld(CBuffer* lpBuffer_In, unsigned short usUsed_In, unsigned char cCMD_In,
|
||||
unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
if (WrapCryptOld(lpBuffer_In->wr_ptr(), usUsed_In, cCMD_In, usState_In, usError_In))
|
||||
{
|
||||
lpBuffer_In->wr_ptr(usUsed_In);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool PacketWrap::WrapCrypt(CBuffer* lpBuffer_In, unsigned short usUsed_In, unsigned char cCMD_In,
|
||||
unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
if (WrapCrypt(lpBuffer_In->wr_ptr(), usUsed_In, cCMD_In, usState_In, usError_In))
|
||||
{
|
||||
lpBuffer_In->wr_ptr(usUsed_In);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PacketWrap::WrapCompress(CBuffer* lpDstBuffer, const char* lpSourceData, unsigned short usSourceLength,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
char* lpBuffer = lpDstBuffer->wr_ptr();
|
||||
unsigned long dwDstBufferSize_InOut = static_cast<unsigned long>(lpDstBuffer->remain());
|
||||
|
||||
if (WrapCompress(lpBuffer, dwDstBufferSize_InOut,
|
||||
lpSourceData, usSourceLength, cCMD_In, usState_In, usError_In))
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD≯<EFBFBD> <20>˾ƾ<CBBE> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
lpDstBuffer->wr_ptr(dwDstBufferSize_InOut);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool PacketWrap::WrapHeader(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
reinterpret_cast<PktBase*>(lpBuffer_In)->InitPtHead(usUsed_In, cCMD_In, usState_In, usError_In);
|
||||
CXORCrypt::GetInstance().EncodeHeader(lpBuffer_In + 1, sizeof(PktBase) - 1, 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool PacketWrap::WrapCryptOld(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
CXORCrypt& Crypt = CXORCrypt::GetInstance();
|
||||
unsigned long dwCodePage = Crypt.GetCodePage(1);
|
||||
|
||||
if(Crypt.EncodePacket(lpBuffer_In + sizeof(PktBase), usUsed_In - sizeof(PktBase), dwCodePage))
|
||||
{
|
||||
PktBase* lpPktBase = reinterpret_cast<PktBase*>(lpBuffer_In);
|
||||
|
||||
lpPktBase->InitPtHead(usUsed_In, cCMD_In, usState_In, usError_In);
|
||||
lpPktBase->SetCodePage(dwCodePage);
|
||||
lpPktBase->SetCrypt();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ<EFBFBD>
|
||||
Crypt.EncodeHeader(lpBuffer_In + 1, sizeof(PktBase) - 1, 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PacketWrap::WrapCryptOld(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned long dwTick)
|
||||
{
|
||||
CXORCrypt& Crypt = CXORCrypt::GetInstance();
|
||||
unsigned long dwCodePage = Crypt.GetCodePage(1);
|
||||
|
||||
if(Crypt.EncodePacket(lpBuffer_In + sizeof(PktBase), usUsed_In - sizeof(PktBase), dwCodePage))
|
||||
{
|
||||
PktBase* lpPktBase = reinterpret_cast<PktBase*>(lpBuffer_In);
|
||||
|
||||
lpPktBase->InitPtHead(usUsed_In, cCMD_In, dwTick);
|
||||
lpPktBase->SetCodePage(dwCodePage);
|
||||
lpPktBase->SetCrypt();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ<EFBFBD>
|
||||
Crypt.EncodeHeader(lpBuffer_In + 1, sizeof(PktBase) - 1, 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PacketWrap::WrapCrypt(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
CXORCrypt& Crypt = CXORCrypt::GetInstance();
|
||||
unsigned long dwCodePage = Crypt.GetCodePage();
|
||||
|
||||
if(Crypt.EncodePacket(lpBuffer_In + sizeof(PktBase), usUsed_In - sizeof(PktBase), dwCodePage))
|
||||
{
|
||||
PktBase* lpPktBase = reinterpret_cast<PktBase*>(lpBuffer_In);
|
||||
|
||||
lpPktBase->InitPtHead(usUsed_In, cCMD_In, usState_In, usError_In);
|
||||
lpPktBase->SetCodePage(dwCodePage);
|
||||
lpPktBase->SetCrypt();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ<EFBFBD>
|
||||
Crypt.EncodeHeader(lpBuffer_In + 1, sizeof(PktBase) - 1, 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PacketWrap::WrapCrypt(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned long dwTick)
|
||||
{
|
||||
CXORCrypt& Crypt = CXORCrypt::GetInstance();
|
||||
unsigned long dwCodePage = Crypt.GetCodePage();
|
||||
|
||||
if(Crypt.EncodePacket(lpBuffer_In + sizeof(PktBase), usUsed_In - sizeof(PktBase), dwCodePage))
|
||||
{
|
||||
PktBase* lpPktBase = reinterpret_cast<PktBase*>(lpBuffer_In);
|
||||
|
||||
lpPktBase->InitPtHead(usUsed_In, cCMD_In, dwTick);
|
||||
lpPktBase->SetCodePage(dwCodePage);
|
||||
lpPktBase->SetCrypt();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ<EFBFBD>
|
||||
Crypt.EncodeHeader(lpBuffer_In + 1, sizeof(PktBase) - 1, 0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PacketWrap::WrapCompress(char* lpDstBuffer, unsigned long& dwDstBufferSize_InOut,
|
||||
const char* lpSourceData, unsigned short usSourceLength,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In)
|
||||
{
|
||||
if(usSourceLength < sizeof(PktBase) || PktMaxLen < usSourceLength)
|
||||
{
|
||||
// <20><>Ŷ ũ<>Ⱑ <20><><EFBFBD><EFBFBD> ũ<>⺸<EFBFBD><E2BAB8> <20>۰ų<DBB0>, <20>ҽ<EFBFBD> ũ<>Ⱑ <20>ִ<EFBFBD> <20><>Ŷ <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> ū <20><><EFBFBD><EFBFBD>
|
||||
ERRLOG2(g_Log, "Cmd:0x%02x Invalid packet size, Can't compress now.",
|
||||
reinterpret_cast<const PktBase*>(lpSourceData)->GetCmd(), usSourceLength);
|
||||
}
|
||||
else if(dwDstBufferSize_InOut < usSourceLength)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ũ<>Ⱑ <20>ҽ<EFBFBD> ũ<>⺸<EFBFBD><E2BAB8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SERLOG1(g_Log, "Cmd:0x%02x Insufficient buffer size, Can't compress now.",
|
||||
reinterpret_cast<const PktBase*>(lpSourceData)->GetCmd());
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned long dwArchiveSrcLen = usSourceLength - sizeof(PktBase);
|
||||
unsigned long dwArchiveDstLen = dwDstBufferSize_InOut - sizeof(PktBase);
|
||||
|
||||
bool bCompressResult =
|
||||
CMiniLZO::Compress(lpSourceData + sizeof(PktBase), dwArchiveSrcLen,
|
||||
lpDstBuffer + sizeof(PktBase), &dwArchiveDstLen);
|
||||
|
||||
// <20><>ü <20><><EFBFBD><EFBFBD> ũ<>⸦ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
dwArchiveDstLen += sizeof(PktBase);
|
||||
|
||||
if (!bCompressResult)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
SERLOG2(g_Log, "Cmd:0x%02x Packet compress failed. Packet length is %d.",
|
||||
reinterpret_cast<const PktBase*>(lpSourceData)->GetCmd(), usSourceLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD>踦 <20><><EFBFBD><EFBFBD>. <20><>Ŷ Ŀ<>ǵ<EFBFBD>, <20><><EFBFBD><EFBFBD> ũ<><C5A9>, <20><><EFBFBD>ົ ũ<>⸦ <20>ѱ<EFBFBD><D1B1><EFBFBD>.
|
||||
CPacketStatistics::GetInstance().CheckCompression(cCMD_In,
|
||||
usSourceLength, dwArchiveDstLen);
|
||||
}
|
||||
|
||||
if (!bCompressResult || usSourceLength <= dwArchiveDstLen)
|
||||
{
|
||||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߰ų<DFB0>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ũ<>Ⱑ <20><><EFBFBD>ų<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Ŀ<><C4BF> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ŀ<EFBFBD>, WrapCrypt<70><74> <20>ٽ<EFBFBD> <20>۾<EFBFBD><DBBE>Ѵ<EFBFBD>.
|
||||
memcpy(lpDstBuffer, lpSourceData, usSourceLength);
|
||||
|
||||
dwDstBufferSize_InOut = usSourceLength;
|
||||
|
||||
return PacketWrap::WrapCrypt(lpDstBuffer, usSourceLength,
|
||||
cCMD_In, usState_In, usError_In);
|
||||
}
|
||||
else
|
||||
{
|
||||
PktBase* lpPktDst = reinterpret_cast<PktBase*>(lpDstBuffer);
|
||||
|
||||
lpPktDst->InitPtHead(static_cast<PktBase::LengthType>(dwArchiveDstLen),
|
||||
cCMD_In, usState_In, usError_In);
|
||||
|
||||
lpPktDst->SetCompress();
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڵ<EFBFBD>
|
||||
CXORCrypt::GetInstance().EncodeHeader(lpDstBuffer + 1, sizeof(PktBase) - 1, 0, 0);
|
||||
|
||||
dwDstBufferSize_InOut = dwArchiveDstLen;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef _WRAP_PACKET_
|
||||
#define _WRAP_PACKET_
|
||||
|
||||
#include "PacketBase.h"
|
||||
#include <Stream/Buffer/Buffer.h>
|
||||
|
||||
namespace PacketWrap
|
||||
{
|
||||
// WrapHeader
|
||||
bool WrapHeader(CBuffer* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
bool WrapHeader(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
// WrapCrypt Old
|
||||
bool WrapCryptOld(CBuffer* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
bool WrapCryptOld(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
bool WrapCryptOld(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned long dwTick);
|
||||
|
||||
// WrapCrypt
|
||||
bool WrapCrypt(CBuffer* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
bool WrapCrypt(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
bool WrapCrypt(char* lpBuffer_In, unsigned short usUsed_In,
|
||||
unsigned char cCMD_In, unsigned long dwTick);
|
||||
|
||||
// WrapCompress
|
||||
bool WrapCompress(CBuffer* lpDstBuffer, const char* lpSourceData, unsigned short usSourceLength,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
|
||||
bool WrapCompress(char* lpDstBuffer, unsigned long& dwDstBufferSize_InOut,
|
||||
const char* lpSourceData, unsigned short usSourceLength,
|
||||
unsigned char cCMD_In, unsigned short usState_In, unsigned short usError_In);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user