Files
Client/Server/AdminTool/AdminToolServer/RYL_AdminMgrDispatch.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

181 lines
8.7 KiB
C++

#ifndef _RYL_ADMIN_MGR_DISPATCH_H_
#define _RYL_ADMIN_MGR_DISPATCH_H_
#include <DBComponent/RYL_DetailLog.h>
#include <Network/Dispatch/RylServerDispatch.h>
#include <Stream/Buffer/BufferFactory.h>
namespace PktAdminMgr
{
struct PktCreateItem;
struct PktUpdateItem;
struct PktRemoveItem;
struct PktItemReset;
};
namespace ItemData
{
class CDepositLock;
};
/*!
\class CRylAdminMgrDispatch
운영 클라이언트로부터 받은 패킷 처리
*/
class CRylAdminMgrDispatch : public CRylServerDispatch
{
public:
CRylAdminMgrDispatch(CSession& Session);
virtual void Destroy(void); // 객체 파괴 이벤트
virtual void Disconnected(void); // 접속 끊김 이벤트
virtual void Connected(void);
bool SendResult(unsigned char cResult); // 결과 패킷 보내기
bool SendResultnRequestKey(unsigned char cResult, unsigned long dwRequestKey); // 결과 패킷과 리퀘스트 키 보내기
private:
virtual bool DispatchPacket(PktBase* lpPktBase); // 받은 패킷 처리
bool PktAuthority(); // 사용 권한 없음 알리기
bool PktUnkonwnPacket(); // 알 수 없는 패킷을 받았을 경우 처리
// 운영 계정 관리
bool PktLogin (PktBase* lpPktBase); // 운영자 로그인
bool PktNewAdmin (PktBase* lpPktBase); // 새 운영 계정 생성
bool PktAdminList (PktBase* lpPktBase=0); // 등록된 운영 계정 리스트 요청
bool PktDelAdmin (PktBase* lpPktBase); // 운영 계정 삭제
bool PktUpdateLev (PktBase* lpPktBase); // 운영 계정LV 변경
bool PktUpdateIP (PktBase* lpPktBase); // 운영 계정 접속 제한 IP변경
bool PktUpdatePasswd (PktBase* lpPktBase); // 운영계정 패스 변경
bool PktLogList (PktBase* lpPktBase); // 툴 사용내역 요청
bool PktDetailLog (PktBase* lpPktBase); // 상세 사용내역 요청
bool PktBeforAfter (PktBase* lpPktBase); // 수정전후 내역 요청
bool PktLogUseMessage (PktBase* lpPktBase); // 툴 사용내역 기록
// 캐릭터 정보 수정
bool PktSearchID (PktBase* lpPktBase); // 캐릭터 검색 (UID, CID)
bool PktSearchName (PktBase* lpPktBase); // 캐릭터 검색 (계정명, 캐릭명)
bool PktCloseCharacter (PktBase* lpPktBase); // 캐릭 수정 독점권 해제
bool PktUpdateStatus (PktBase* lpPktBase); // 캐릭터 스테이터스 수정
bool PktCreateItem (PktBase* lpPktBase); // 아이템 생성
bool PktUpdateItem (PktBase* lpPktBase); // 아이템 수정
bool PktRemoveItem (PktBase* lpPktBase); // 아이템 삭제
bool PktItemReset (PktBase* lpPktBase); // 각종 아이템 컨테이너 초기화
bool PktSkillEdit (PktBase* lpPktBase); // 스킬 관련 (수정, 추가, 삭제)
bool PktChangePos (PktBase* lpPktBase); // 캐릭터 위치 정보 수정
bool PktDepositPasswd (PktBase* lpPktBase); // 창고 패스워드 변경
bool PktChangeName (PktBase* lpPktBase); // 캐릭명 변경
bool PktSetGold (PktBase* lpPktBase); // 인벤토리 골드 수정
bool PktInvenGold (PktBase* lpPktBase); // 인벤토리 골드 수정 2
bool PktStoreGoldUpdate (PktBase* lpPktBase); // 창고 골드 수정
bool PktCancelExecuteQuest (PktBase* lpPktBase); // 수행 중인 퀘스트 취소
bool PktDeleteHistoryQuest (PktBase* lpPktBase); // 완료한 퀘스트 목록에서 제거
bool PktUserNation (PktBase* lpPktBase); // 계정의 국적 얻기
bool PktStoreTabEdit (PktBase* lpPktBase); // 창고 탭 수정
bool PktNameChangeCount (PktBase* lpPktBase); // 캐릭명 변경 기회 수정
bool PktGetCharacter (PktBase* lpPktBase); // 캐릭터 정보 얻기
bool PktSetCharacter (PktBase* lpPktBase); // 캐릭터를 수정한 정보 저장
bool PktDelCharacter (PktBase* lpPktBase); // 캐릭터 삭제 (보류기능)
// 길드
bool PktGuildSearch (PktBase* lpPktBase); // 길드 검색
bool PktRequestGuildMemberList (PktBase* lpPktBase); // 길드 멤버 리스트 요청
bool PktGuildRestoreDataList (PktBase* lpPktBase); // 지워진 길드 리스트 요청
bool PktGuildRight (PktBase* lpPktBase); // 길드 권한
bool PktGuildMemberEdit (PktBase* lpPktBase); // 길드 멤버 권한 수정, 축출
//요새
bool PktFortSearch (PktBase* lpPktBase); // 요새 검색
bool PktMiningCamp (PktBase* lpPktBase); // 채굴요새 정보 얻기
bool PktShopCamp (PktBase* lpPktBase); // 상점요새 정보 얻기
bool PktShopCampGold (PktBase* lpPktBase); // 상점요새 골드 수정
bool PktShopCampTax (PktBase* lpPktBase); // 상점요새 세금 수정
//성
bool PktCastleSearch (PktBase* lpPktBase); // 성 검색
bool PktCastleCreature (PktBase* lpPktBase); // 성 검색
// 운영 창고
bool SendAdminStoreList (void); // 운영자 창고 정보 보내기
bool PktAdminStoreInsert (PktBase* lpPktBase); // 운영자 창고 사용 (아이템 등록)
bool PktAdminStoreDelete (PktBase* lpPktBase); // 운영자 창고 사용 (아이템 삭제)
bool PktGetAdminStoreItem (PktBase* lpPktBase); // 운영자 창고 아이템 정보 요청
bool PktUpdateAdminStore (PktBase* lpPktBase); // 운영자 창고 사용 (아이템 수정)
// 복구 및 블럭
bool PktDelCharList (PktBase* lpPktBase); // 삭제된 캐릭터 목록 검색
bool PktCharRestore (PktBase* lpPktBase); // 캐릭터 복구
bool PktSearchBlock (PktBase* lpPktBase); // 블럭 목록 검색
bool PktAddBlockUser (PktBase* lpPktBase); // 블럭
bool PktDelBlockUser (PktBase* lpPktBase); // 블럭 해제
// 서버 통합 관련
bool PktUnifiedCharInfo (PktBase* lpPktBase); // 통합 캐릭터 정보
bool PktUnifiedGuildInfo (PktBase* lpPktBase); // 통합 길드 정보
bool PktDetailCharInfo (PktBase* lpPktBase); // 통합 캐릭터 상세 정보
// 기타
bool PktGameAdmin (PktBase* lpPktBase); // 게임 운영자 관련
bool PktItemQtyControlData (PktBase* lpPktBase); // 이벤트 아이템 수량 제어
bool PktCheckName (PktBase* lpPktBase); // 캐릭명 중복 체크
bool PktForcedDis (PktBase* lpPktBase); // 강제 접속 끊기
bool PktUserBillingLogRequest (PktBase* lpPktBase); // 유저 과금 내역 로그 요청
bool PktSetZoneList (PktBase* lpPktBase); // 존 좌표 템플릿 저장
bool SendZoneList (void); // 존 좌표 템플릿 리스트 보내기
bool PktConnectAllServerz (PktBase* lpPktBase); // 운영서버에서 모든 중계서버 접속
bool SendConnectedServerIndex (void); // 접속 중인 중계서버 리스트 보내기
bool PktInterestedUser (PktBase* lpPktBase); // 관심 유저 관련 (등록, 삭제, 리스트 요청)
bool ReqInterestedUserList (char* szQuery); // 관심 유저 리스트 요청
bool PktConnectionChk (PktBase* lpPktBase); // 접속 확인 및 접속 정보 요청
bool PktConnectedUserList (void); // 접속한 관심 유저 리스트 보내기
bool PktDuplicatedItem (PktBase* lpPktBase); // 중복 아이템 관련 패킷
bool PktItemDistribute (PktBase* lpPktBase); // 아이템 분배
bool PktShiftToUID (PktBase* lpPktBase); // UID, 계정명간 변환
bool PktAmountOfGold (PktBase* lpPktBase); // 서버그룹 골드량 확인
bool PktGMLogMsg (PktBase* lpPktBase); // GM 로그 메세지 (UID, CID 단위 로그)
bool PktSearchCharInfoTime (PktBase* lpPktBase); // 캐릭터 생성/수정 정보 확인
// Ack 전용
bool PktNewAdminAck(char* szAccount); // 운영 계정 생성 Ack
bool PktDelAdminAck(char* szAccount); // 운영 계정 삭제 Ack
bool PktUpdateLevAck(char* szAccount, unsigned char Level); // 운영 계정LV 변경 Ack
bool PktUpdateIPAck(char* szAccount, char* szIP); // 운영 계정 접속 제한 IP변경 Ack
bool PktSearchUIDAck(unsigned long UID, unsigned int nOldServerID, unsigned long dwKey, bool& bResult); // UID 검색 Ack
bool PktSearchCIDAck(unsigned long CID, unsigned long dwGroup, unsigned long dwKey, bool& bResult); // CID 검색 Ack
bool PktSearchResultAck (unsigned char Result, unsigned long dwRequestKey); // 검색 결과 Ack
CBuffer* MakeCreateItemAck(unsigned long dwRequestKey, unsigned long dwCID, unsigned __int64 dwItemID, unsigned short dwPrototypeID, PktAdminMgr::PktCreateItem* lpCreateItem);
CBuffer* MakeUpdateItemAck(unsigned long dwRequestKey, unsigned long dwCID, unsigned __int64 dwItemID, unsigned short dwPrototypeID, PktAdminMgr::PktUpdateItem* lpUpdateItem);
CBuffer* MakeRemoveItemAck(unsigned long dwRequestKey, unsigned long dwCID, unsigned __int64 dwItemID, unsigned short dwPrototypeID, PktAdminMgr::PktRemoveItem* lpRemoveItem);
CBuffer* MakeItemResetAck(unsigned long dwRequestKey, unsigned long dwCID, PktAdminMgr::PktItemReset* lpPktItemReset);
bool DepositCheckIt(ItemData::CDepositLock& DepositLock, unsigned long dwUID, unsigned long dwCID); // 창고 사용 가능 여부 판별
bool m_bLogin; // 로그인 여부
unsigned char m_MyAuthority; // 현재 로그인된 관리자의 권한마스크
unsigned int m_MyUID; // 클라이언트 식별자
unsigned int m_MyLogID; // 업데이트할 LogID
unsigned int m_nAgentType; // 중계서버 타입
unsigned int m_nIPCheck; // 운영자 로그인시 IP 체크
char m_szToolNation[256]; // 국가 타입
CDetailLog m_DetailLog; // DB에 로그 남기기 위한 인스턴스
char m_szAccount[20]; // Dispatch를 사용하고 있는 관리자 계정
bool SendLoginInfo(char* szAccount); // 계정정로를 클라이이언트로 보냄
bool SendAgentServerInfo(void); // 중계서버명과 인덱스를 보냄
char* GetItemState(unsigned char cTake); // 아이템 위치 정보 문자열 얻기
unsigned char SetAuthorityMask(unsigned char cLV);
};
#endif