Files
Client/Server/RylServerProject/RylGameLibrary/Network/Packet/PacketStruct/CharAdminPacket.h
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

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