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>
181 lines
8.7 KiB
C++
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 |