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>
371 lines
10 KiB
C
371 lines
10 KiB
C
#ifndef _CHAR_ADMIN_PACKET_H_
|
|
#define _CHAR_ADMIN_PACKET_H_
|
|
|
|
// CharAdminPacket.h
|
|
#include <winsock2.h>
|
|
#include <windows.h>
|
|
#include <Network/Packet/PacketBase.h>
|
|
#include <Item/ItemStructure.h>
|
|
#include <DB/DBdefine.h>
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct PktAdmin* LPPktAdmin;
|
|
struct PktAdmin : public PktBase
|
|
{
|
|
enum { MAX_NAME_LEN = 16 };
|
|
enum CMD
|
|
{
|
|
NONE = 0, // 운영자 명령
|
|
|
|
MOVE_ZONE_CHAR = 1, // 캐릭터 존 이동
|
|
MOVE_ZONE_PARTY = 2, // 파티 존 이동
|
|
MOVE_CHAR = 3, // 캐릭터 이동
|
|
MOVE_PARTY = 4, // 파티 이동
|
|
|
|
RESPAWN_CHAR = 5, // 캐릭터 리스폰
|
|
RESPAWN_PARTY = 6, // 파티 리스폰
|
|
KILL_CHAR = 7, // 캐릭터 킬
|
|
KILL_PARTY = 8, // 파티 킬
|
|
|
|
DUEL_INIT = 9, // 듀얼 초기화
|
|
|
|
CREATE_ITEM = 10, // 아이템 드롭
|
|
CREATE_MON = 11, // 몬스터 생성
|
|
|
|
INFO_CHAR = 12, // 캐릭터 정보
|
|
|
|
GET_EXP = 13, // 경험치 얻기
|
|
GET_GOLD = 14, // 돈 얻기
|
|
LEVEL_UP = 15, // 레벨업
|
|
|
|
PEACE_MODE = 16, // 반전단체 가입
|
|
WAR_MODE = 17, // 반전단체 탈퇴
|
|
|
|
GET_FAME = 18, // 명성 얻기
|
|
GET_MILEAGE = 19, // 마일리지 얻기
|
|
|
|
TRACE_CHAR = 20, // 캐릭터 추적
|
|
HIDE_CHAR = 21, // 캐릭터 투명
|
|
SHOW_CHAR = 22, // 캐릭터 투명 해제
|
|
INVINCIBLE_CHAR = 23, // 캐릭터 무적
|
|
NORMAL_CHAR = 24, // 캐릭터 무적 해제
|
|
LOGOUT_CHAR = 25, // 캐릭터 강제 로그아웃
|
|
|
|
APOCALYPSE = 26, // 주위 생물체 모두 킬
|
|
|
|
CREATE_EQUIP = 27, // 랜덤 옵션이 붙는 장비 드롭
|
|
|
|
ELITE_BONUS = 28, // 엘리트 보너스 조절
|
|
|
|
STATUE_INIT = 29, // 명예의 석상 초기화
|
|
RESPAWN_ALL = 30, // 모든 캐릭터 리스폰
|
|
|
|
CHANGE_CLASS = 31, // 전직 하기
|
|
LEARN_SKILL = 32, // 해당 스킬 배우기
|
|
ERASE_SKILL = 33, // 해당 스킬 지우기
|
|
LEVEL_DOWN = 34, // 레벨 다운
|
|
|
|
GET_QUEST = 35, // 퀘스트 받음
|
|
ADD_QUEST = 36, // 완료 퀘스트에 추가
|
|
DELETE_QUEST = 37, // 수행/완료 퀘스트를 삭제
|
|
|
|
// BATTLEGROUND_SERVER 운영자 명령
|
|
FINISH_GAME = 38, // 해당 방의 경기 종료 (승패 결정)
|
|
DRAW_GAME = 39, // 해당 방의 경기 종료 (무승부)
|
|
IGNORE_GAME = 40, // 해당 방의 경기 종료 (승패 무시)
|
|
SET_MAX = 41, // 해당 방의 최대 인원수 설정
|
|
SET_SCORE = 42, // 해당 방의 목표 점수 설정
|
|
SET_LIMIT_TIME = 43, // 해당 방의 시간 제한 설정
|
|
SET_REST_TIME = 44, // 해당 방의 쉬는 시간 설정
|
|
|
|
SET_ITEM_TEMP_INVEN = 45, // 임시 인벤토리에 아이템 넣기
|
|
|
|
ADD_SPELL = 46, // 해당 스펠을 부여
|
|
DELETE_SPELL = 47, // 부여된 해당 스펠을 파괴
|
|
|
|
STOP = 48, // 해당 캐릭터 묶어두기
|
|
STOP_OFF = 49, // 묶어둔 해당 캐릭터를 풀어주기
|
|
|
|
CHAT_BAN = 50, // 채팅 금지
|
|
CHAT_OK = 51, // 채금 해제
|
|
|
|
NEO = 52, // 네오
|
|
SMITH = 53, // 스미스
|
|
|
|
RELATION = 55, // 적아군 식별.
|
|
|
|
GM_FORM = 56, // PC 에서 GM 으로.
|
|
PC_FORM = 57, // GM 에서 PC 로.
|
|
|
|
REALM_POINT = 58, // 국가 전쟁 공헌 훈장.
|
|
DBAGENT_KILL = 59, // 중계 서버 강제 종료
|
|
|
|
LEARN_ABILITY = 60, // 해당 스킬 배우기
|
|
ERASE_ABILITY = 61, // 해당 스킬 지우기
|
|
|
|
REQUEST_TRACE_POS = 100 // DBAgent 가 게임 서버에게 추적할 캐릭터의 위치를 요청하는 명령
|
|
// 해당 게임 서버가 DBAgent 에게 추적한 캐릭터의 좌표를 넘겨줄때의 명령
|
|
|
|
};
|
|
|
|
enum eError
|
|
{
|
|
E_LOGOUT_CHAR = 2, // 로그아웃한 캐릭터 입니다.
|
|
};
|
|
|
|
unsigned short m_usCmd; // 운영자 명령
|
|
|
|
char m_stName[MAX_NAME_LEN]; // 이름
|
|
|
|
union
|
|
{
|
|
struct ZoneInfo
|
|
{
|
|
char m_cZone; // 존 번호
|
|
char m_cChannel; // 채널 번호
|
|
} m_ZoneInfo;
|
|
|
|
struct EliteBonusInfo
|
|
{
|
|
char m_cNation; // 국가
|
|
char m_cLevel; // 레벨
|
|
} m_EliteBonusInfo;
|
|
|
|
unsigned short m_usProtoTypeID; // 타입 아이디
|
|
};
|
|
|
|
POS m_Position; // 위치
|
|
|
|
unsigned long m_dwAmount; // 양
|
|
unsigned long m_dwAdminCID; // Action 의 주체가 되는 Admin 캐릭터의 CID
|
|
unsigned long m_dwAmount2; // 양2
|
|
unsigned long m_dwAmount3; // 양3
|
|
};
|
|
|
|
|
|
// 어드민 툴에 데이터 업데이트하기.
|
|
struct PktAdminToolGetData : public PktBase
|
|
{
|
|
enum GetDataType
|
|
{
|
|
// DB중계 -> 운영서버
|
|
CHAR_BASIC_DATA = 10, // 캐릭터 정보. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOST 캐릭터 기본 정보
|
|
// CHAR_POS 캐릭터 위치 정보
|
|
// SKILL 캐릭터 스킬 정보
|
|
// QUICK 캐릭터 퀵 슬롯
|
|
// EQUIP 캐릭터 장비
|
|
// INVEN 캐릭터 인벤
|
|
// EXTRA 캐릭터 여분
|
|
// EXCHANGE 캐릭터 교환
|
|
|
|
CHAR_EXTRA_DATA = 11, // 캐릭터 추가 정보들. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOEX 캐릭터 추가 정보
|
|
// QUEST 퀘스트
|
|
// HISTORY 히스토리
|
|
// CONFIG 설정
|
|
// STORE_INFO 창고 정보
|
|
|
|
CHAR_FRIEND_DATA = 12, // 캐릭터 친구 정보
|
|
CHAR_BAN_DATA = 13, // 캐릭터 거부 정보
|
|
|
|
STORE_12_DATA = 14, // 창고 1, 2탭 데이터
|
|
STORE_34_DATA = 15, // 창고 3, 4탭 데이터
|
|
|
|
FINISH_GET_DATA = 19, // DB중계에서 운영서버로 데이터를 전부 보냈음.
|
|
|
|
// 운영서버 -> DB중계
|
|
GET_CHAR_DATA = 20, // 캐릭터 데이터 요청 패킷
|
|
|
|
CHANGE_CHAR_NAME = 30 // 캐릭터 이름 바꾸기
|
|
};
|
|
|
|
enum GetError
|
|
{
|
|
UNKNOWN_ERROR = 1, // 알 수 없는 에러
|
|
INVALID_REQUEST = 2, // 잘못된 데이터 패킷
|
|
|
|
GET_UIDCID_QUERY_FAILED = 3, // DB에서 이름으로 UID, CID를 얻어오는 데 실패했다.
|
|
INVALID_UID_CID_DATA = 4, // DB에서 이름으로 얻어온 UID, CID데이터가 이상하다.
|
|
|
|
GET_STORE_QUERY_FAILED = 5, // DB에서 창고 데이터를 얻어오는 데 실패했다.
|
|
GET_CHAR_DATA_QUERY_FAILED = 6 // DB에서 캐릭터 데이터를 얻어오는 데 실패했다.
|
|
};
|
|
|
|
char m_szName[CHAR_INFOST::MAX_NAME_LEN];
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktAdminToolGetDataAck : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
|
|
// 어드민 툴에서 데이터 업데이트하기. (뒤에 데이터를 넣음)
|
|
struct PktAdminToolSetData : public PktBase
|
|
{
|
|
enum SetDataType
|
|
{
|
|
CHAR_BASIC_DATA = 10, // 캐릭터 정보. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOST 캐릭터 기본 정보
|
|
// CHAR_POS 캐릭터 위치 정보
|
|
// SKILL 캐릭터 스킬 정보
|
|
// QUICK 캐릭터 퀵 슬롯
|
|
// EQUIP 캐릭터 장비
|
|
// INVEN 캐릭터 인벤
|
|
// EXTRA 캐릭터 여분
|
|
// EXCHANGE 캐릭터 교환
|
|
|
|
CHAR_EXTRA_DATA = 11, // 캐릭터 추가 정보들. 다음 정보들이 들어감.
|
|
|
|
// CHAR_INFOEX 캐릭터 추가 정보
|
|
// QUEST 퀘스트
|
|
// HISTORY 히스토리
|
|
// CONFIG 설정
|
|
// STORE_INFO 창고 정보
|
|
|
|
CHAR_FRIEND_DATA = 12, // 캐릭터 친구 정보
|
|
CHAR_BAN_DATA = 13, // 캐릭터 거부 정보
|
|
|
|
STORE_12_DATA = 14, // 창고 1, 2탭 데이터
|
|
STORE_34_DATA = 15, // 창고 3, 4탭 데이터
|
|
|
|
OPEN_UPDATE_DATA = 20, // 세션을 열고 DB에 업데이트하려 시도한다.
|
|
FINISH_UPDATE_DATA = 21, // 데이터를 DB에 업데이트하고 세션을 닫는다.
|
|
|
|
RELOAD_ADMINLIST = 30
|
|
};
|
|
|
|
enum SetError
|
|
{
|
|
UNKNOWN_ERROR = 1, // 알 수 없는 에러.
|
|
INVALID_UID_CID_ERROR = 2, // 알 수 없는 UID/CID
|
|
LOGIN_ANOTHER_GAMESERVER = 3, // 다른 게임 서버에 로그인 해 있어서 업데이트 불가.
|
|
|
|
SESSION_OPEN_FAILED = 4, // 세션 열기 실패
|
|
ALREADY_LOGIN_USER_SESSION_OPEN = 5, // 이미 로그인 되어 있는 유저 세션을 열려고 했음
|
|
ANOTHER_CHAR_LOAD_FAILED = 6, // 캐릭터 정보를 DB에서 읽어오는 데 실패
|
|
SETTING_DATA_FAILED = 7, // 데이터 세팅 실패 (데이터 길이등이 맞지 않음)
|
|
SESSION_START_FAILED = 8 // 세션 시작 실패.
|
|
};
|
|
|
|
unsigned __int64 m_dwSerial;
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
unsigned char m_cOldServerGroupID;
|
|
};
|
|
|
|
struct PktAdminToolSetDataAck : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned char m_cType;
|
|
};
|
|
|
|
|
|
struct PktNewAdminToolSetDataAck : public PktBase
|
|
{
|
|
unsigned long m_dwRequestKey;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned char m_cType;
|
|
};
|
|
|
|
|
|
struct GiveItemInfo
|
|
{
|
|
enum GiveItemType
|
|
{
|
|
MIN_DAMAGE = 0,
|
|
MAX_DAMAGE = 1,
|
|
ARMOR = 2,
|
|
HIT_RATE = 3,
|
|
EVADE = 4,
|
|
MAX_HP = 5,
|
|
HP_REGEN = 6,
|
|
MAX_MP = 7,
|
|
MP_REGEN = 8,
|
|
CRITICAL = 9,
|
|
BLOCK = 10,
|
|
SPEED = 11,
|
|
MAGIC_POWER = 12,
|
|
MAGIC_RESIST = 13,
|
|
MAX_GIVEITEM_ATTRIBUTE = 14
|
|
};
|
|
|
|
unsigned long m_dwCreateID;
|
|
unsigned long m_dwUID;
|
|
unsigned long m_dwCID;
|
|
unsigned short m_usPrototypeID;
|
|
unsigned char m_cAmount;
|
|
unsigned char m_cAttribute[MAX_GIVEITEM_ATTRIBUTE];
|
|
unsigned __int64 m_dwItemUID;
|
|
};
|
|
|
|
struct UpdateItemUID
|
|
{
|
|
unsigned __int64 m_dwItemUID;
|
|
unsigned long m_dwCreateID;
|
|
};
|
|
|
|
struct PktGiveItemToTempInven : public PktBase
|
|
{
|
|
enum Const
|
|
{
|
|
MAX_GIVE_ITEM = 10
|
|
};
|
|
|
|
GiveItemInfo m_GiveItemInfo[MAX_GIVE_ITEM];
|
|
unsigned char m_cGiveItemNum;
|
|
};
|
|
|
|
struct PktCharNameChange : public PktBase
|
|
{
|
|
enum Error
|
|
{
|
|
ERR_SERVER = 1, // 서버 에러
|
|
ERR_CANNOT_FIND_CHARACTER = 2, // 캐릭터 찾을 수 없음(로그인된 캐릭터가 아님)
|
|
ERR_NAMECHANGE_ITEM = 3, // 이름 변경 아이템 없음
|
|
ERR_INVALID_NAME = 4, // 만들 수 없는 이름(특수문자등이 들어간 이상한 이름)
|
|
ERR_CANNOT_USE_NAME = 5, // 사용할 수 없는 이름
|
|
ERR_ALREADY_USE_NAME = 6 // 이미 사용하고 있는 이름
|
|
|
|
};
|
|
|
|
char m_szCharName[CHAR_INFOST::MAX_NAME_LEN]; // 바꿀 이름
|
|
unsigned long m_dwUID; // 자기 캐릭터 UID
|
|
unsigned long m_dwCID; // 자기 캐릭터 CID
|
|
unsigned char m_cNameChangeCount; // 갱신된 이름 변경 카운트 숫자.
|
|
|
|
Item::ItemPos m_ItemPos; // 계명허가서 (추가작업됨)
|
|
};
|
|
|
|
struct PktAdminCommandLog : public PktBase
|
|
{
|
|
enum Const
|
|
{
|
|
MAX_COMMAND_SIZE = 128
|
|
};
|
|
|
|
unsigned long m_dwAdminCID; // 해당 GM UID
|
|
unsigned long m_dwCID; // 해당 캐릭터 CID.
|
|
char m_szCommand[MAX_COMMAND_SIZE]; // 해당 명령어 텍스트.
|
|
};
|
|
|
|
#pragma pack()
|
|
|
|
#endif |