client/UserInterface/PythonNetworkStream.h

730 lines
20 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "../eterLib/FuncObject.h"
#include "../eterlib/NetStream.h"
#include "../eterLib/NetPacketHeaderMap.h"
#include "InsultChecker.h"
#include "packet.h"
class CInstanceBase;
class CNetworkActorManager;
struct SNetworkActorData;
struct SNetworkUpdateActorData;
class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNetworkStream>
{
public:
enum
{
SERVER_COMMAND_LOG_OUT = 0,
SERVER_COMMAND_RETURN_TO_SELECT_CHARACTER = 1,
SERVER_COMMAND_QUIT = 2,
MAX_ACCOUNT_PLAYER
};
enum
{
ERROR_NONE,
ERROR_UNKNOWN,
ERROR_CONNECT_MARK_SERVER,
ERROR_LOAD_MARK,
ERROR_MARK_WIDTH,
ERROR_MARK_HEIGHT,
// MARK_BUG_FIX
ERROR_MARK_UPLOAD_NEED_RECONNECT,
ERROR_MARK_CHECK_NEED_RECONNECT,
// END_OF_MARK_BUG_FIX
};
enum
{
ACCOUNT_CHARACTER_SLOT_ID,
ACCOUNT_CHARACTER_SLOT_NAME,
ACCOUNT_CHARACTER_SLOT_RACE,
ACCOUNT_CHARACTER_SLOT_LEVEL,
ACCOUNT_CHARACTER_SLOT_STR,
ACCOUNT_CHARACTER_SLOT_DEX,
ACCOUNT_CHARACTER_SLOT_HTH,
ACCOUNT_CHARACTER_SLOT_INT,
ACCOUNT_CHARACTER_SLOT_PLAYTIME,
ACCOUNT_CHARACTER_SLOT_FORM,
ACCOUNT_CHARACTER_SLOT_ADDR,
ACCOUNT_CHARACTER_SLOT_PORT,
ACCOUNT_CHARACTER_SLOT_GUILD_ID,
ACCOUNT_CHARACTER_SLOT_GUILD_NAME,
ACCOUNT_CHARACTER_SLOT_CHANGE_NAME_FLAG,
ACCOUNT_CHARACTER_SLOT_HAIR,
};
enum
{
PHASE_WINDOW_LOGO,
PHASE_WINDOW_LOGIN,
PHASE_WINDOW_SELECT,
PHASE_WINDOW_CREATE,
PHASE_WINDOW_LOAD,
PHASE_WINDOW_GAME,
PHASE_WINDOW_EMPIRE,
PHASE_WINDOW_NUM,
};
public:
CPythonNetworkStream();
virtual ~CPythonNetworkStream();
bool SendSpecial(int nLen, void * pvBuf);
void StartGame();
void Warp(LONG lGlobalX, LONG lGlobalY);
void NotifyHack(const char* c_szMsg);
void SetWaitFlag();
void SendEmoticon(UINT eEmoticon);
void ExitApplication();
void ExitGame();
void LogOutGame();
void AbsoluteExitGame();
void AbsoluteExitApplication();
void EnableChatInsultFilter(bool isEnable);
bool IsChatInsultIn(const char* c_szMsg);
bool IsInsultIn(const char* c_szMsg);
DWORD GetGuildID();
UINT UploadMark(const char* c_szImageFileName);
UINT UploadSymbol(const char* c_szImageFileName);
bool LoadInsultList(const char* c_szInsultListFileName);
bool LoadConvertTable(DWORD dwEmpireID, const char* c_szFileName);
UINT GetAccountCharacterSlotDatau(UINT iSlot, UINT eType);
const char* GetAccountCharacterSlotDataz(UINT iSlot, UINT eType);
// SUPPORT_BGM
const char* GetFieldMusicFileName();
float GetFieldMusicVolume();
// END_OF_SUPPORT_BGM
bool IsSelectedEmpire();
void ToggleGameDebugInfo();
void SetMarkServer(const char* c_szAddr, UINT uPort);
void ConnectLoginServer(const char* c_szAddr, UINT uPort);
void ConnectGameServer(UINT iChrSlot);
void SetLoginInfo(const char* c_szID, const char* c_szPassword);
void SetLoginKey(DWORD dwLoginKey);
void ClearLoginInfo( void );
void SetHandler(PyObject* poHandler);
void SetPhaseWindow(UINT ePhaseWnd, PyObject* poPhaseWnd);
void ClearPhaseWindow(UINT ePhaseWnd, PyObject* poPhaseWnd);
void SetServerCommandParserWindow(PyObject* poPhaseWnd);
bool SendSyncPositionElementPacket(DWORD dwVictimVID, DWORD dwVictimX, DWORD dwVictimY);
bool SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim);
bool SendCharacterStatePacket(const TPixelPosition& c_rkPPosDst, float fDstRot, UINT eFunc, UINT uArg);
bool SendUseSkillPacket(DWORD dwSkillIndex, DWORD dwTargetVID=0);
bool SendTargetPacket(DWORD dwVID);
// OLDCODE:
bool SendCharacterStartWalkingPacket(float fRotation, long lx, long ly);
bool SendCharacterEndWalkingPacket(float fRotation, long lx, long ly);
bool SendCharacterCheckWalkingPacket(float fRotation, long lx, long ly);
bool SendCharacterPositionPacket(BYTE iPosition);
bool SendItemUsePacket(TItemPos pos);
bool SendItemUseToItemPacket(TItemPos source_pos, TItemPos target_pos);
bool SendItemDropPacket(TItemPos pos, DWORD elk);
bool SendItemDropPacketNew(TItemPos pos, DWORD elk, DWORD count);
bool SendItemMovePacket(TItemPos pos, TItemPos change_pos, BYTE num);
bool SendItemPickUpPacket(DWORD vid);
bool SendQuickSlotAddPacket(BYTE wpos, BYTE type, BYTE pos);
bool SendQuickSlotDelPacket(BYTE wpos);
bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
// PointReset <20><> <20>ӽ<EFBFBD>
bool SendPointResetPacket();
// Shop
bool SendShopEndPacket();
bool SendShopBuyPacket(BYTE byCount);
bool SendShopSellPacket(BYTE bySlot);
bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);
// Exchange
bool SendExchangeStartPacket(DWORD vid);
bool SendExchangeItemAddPacket(TItemPos ItemPos, BYTE byDisplayPos);
bool SendExchangeElkAddPacket(DWORD elk);
bool SendExchangeItemDelPacket(BYTE pos);
bool SendExchangeAcceptPacket();
bool SendExchangeExitPacket();
// Quest
bool SendScriptAnswerPacket(int iAnswer);
bool SendScriptButtonPacket(unsigned int iIndex);
bool SendAnswerMakeGuildPacket(const char * c_szName);
bool SendQuestInputStringPacket(const char * c_szString);
bool SendQuestConfirmPacket(BYTE byAnswer, DWORD dwPID);
// Event
bool SendOnClickPacket(DWORD vid);
// Fly
bool SendFlyTargetingPacket(DWORD dwTargetVID, const TPixelPosition& kPPosTarget);
bool SendAddFlyTargetingPacket(DWORD dwTargetVID, const TPixelPosition& kPPosTarget);
bool SendShootPacket(UINT uSkill);
// Command
bool ClientCommand(const char * c_szCommand);
void ServerCommand(char * c_szCommand);
// Emoticon
void RegisterEmoticonString(const char * pcEmoticonString);
// Party
bool SendPartyInvitePacket(DWORD dwVID);
bool SendPartyInviteAnswerPacket(DWORD dwLeaderVID, BYTE byAccept);
bool SendPartyRemovePacket(DWORD dwPID);
bool SendPartySetStatePacket(DWORD dwVID, BYTE byState, BYTE byFlag);
bool SendPartyUseSkillPacket(BYTE bySkillIndex, DWORD dwVID);
bool SendPartyParameterPacket(BYTE byDistributeMode);
// SafeBox
bool SendSafeBoxMoneyPacket(BYTE byState, DWORD dwMoney);
bool SendSafeBoxCheckinPacket(TItemPos InventoryPos, BYTE bySafeBoxPos);
bool SendSafeBoxCheckoutPacket(BYTE bySafeBoxPos, TItemPos InventoryPos);
bool SendSafeBoxItemMovePacket(BYTE bySourcePos, BYTE byTargetPos, BYTE byCount);
// Mall
bool SendMallCheckoutPacket(BYTE byMallPos, TItemPos InventoryPos);
// Guild
bool SendGuildAddMemberPacket(DWORD dwVID);
bool SendGuildRemoveMemberPacket(DWORD dwPID);
bool SendGuildChangeGradeNamePacket(BYTE byGradeNumber, const char * c_szName);
bool SendGuildChangeGradeAuthorityPacket(BYTE byGradeNumber, BYTE byAuthority);
bool SendGuildOfferPacket(DWORD dwExperience);
bool SendGuildPostCommentPacket(const char * c_szMessage);
bool SendGuildDeleteCommentPacket(DWORD dwIndex);
bool SendGuildRefreshCommentsPacket(DWORD dwHighestIndex);
bool SendGuildChangeMemberGradePacket(DWORD dwPID, BYTE byGrade);
bool SendGuildUseSkillPacket(DWORD dwSkillID, DWORD dwTargetVID);
bool SendGuildChangeMemberGeneralPacket(DWORD dwPID, BYTE byFlag);
bool SendGuildInvitePacket(DWORD dwVID);
bool SendGuildInviteAnswerPacket(DWORD dwGuildID, BYTE byAnswer);
bool SendGuildChargeGSPPacket(DWORD dwMoney);
bool SendGuildDepositMoneyPacket(DWORD dwMoney);
bool SendGuildWithdrawMoneyPacket(DWORD dwMoney);
// Mall
bool RecvMallOpenPacket();
bool RecvMallItemSetPacket();
bool RecvMallItemDelPacket();
// Lover
bool RecvLoverInfoPacket();
bool RecvLovePointUpdatePacket();
// Dig
bool RecvDigMotionPacket();
// Fishing
bool SendFishingPacket(int iRotation);
bool SendGiveItemPacket(DWORD dwTargetVID, TItemPos ItemPos, int iItemCount);
// Private Shop
bool SendBuildPrivateShopPacket(const char * c_szName, const std::vector<TShopItemTable> & c_rSellingItemStock);
// Refine
bool SendRefinePacket(BYTE byPos, BYTE byType);
bool SendSelectItemPacket(DWORD dwItemPos);
// Client Version
bool SendClientVersionPacket();
// CRC Report
bool __SendCRCReportPacket();
// <20><>ȫ<EFBFBD><C8AB> <20><>ȭ
bool SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos);
// Handshake
bool RecvHandshakePacket();
bool RecvHandshakeOKPacket();
bool RecvHybridCryptKeyPacket();
bool RecvHybridCryptSDBPacket();
// ETC
DWORD GetMainActorVID();
DWORD GetMainActorRace();
DWORD GetMainActorEmpire();
DWORD GetMainActorSkillGroup();
void SetEmpireID(DWORD dwEmpireID);
DWORD GetEmpireID();
void __TEST_SetSkillGroupFake(int iIndex);
//////////////////////////////////////////////////////////////////////////
// Phase <20><><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////
public:
void SetOffLinePhase();
void SetHandShakePhase();
void SetLoginPhase();
void SetSelectPhase();
void SetLoadingPhase();
void SetGamePhase();
void ClosePhase();
// Login Phase
bool SendLoginPacket(const char * c_szName, const char * c_szPassword);
bool SendLoginPacketNew(const char * c_szName, const char * c_szPassword);
bool SendChinaMatrixCardPacket(const char * c_szMatrixCardString);
bool SendRunupMatrixAnswerPacket(const char * c_szMatrixCardString);
bool SendNEWCIBNPasspodAnswerPacket(const char * answer);
bool SendDirectEnterPacket(const char * c_szName, const char * c_szPassword, UINT uChrSlot);
bool SendEnterGame();
// Select Phase
bool SendSelectEmpirePacket(DWORD dwEmpireID);
bool SendSelectCharacterPacket(BYTE account_Index);
bool SendChangeNamePacket(BYTE index, const char *name);
bool SendCreateCharacterPacket(BYTE index, const char *name, BYTE job, BYTE shape, BYTE byStat1, BYTE byStat2, BYTE byStat3, BYTE byStat4);
bool SendDestroyCharacterPacket(BYTE index, const char * szPrivateCode);
// Main Game Phase
bool SendC2CPacket(DWORD dwSize, void * pData);
bool SendChatPacket(const char * c_szChat, BYTE byType = CHAT_TYPE_TALKING);
bool SendWhisperPacket(const char * name, const char * c_szChat);
bool SendMobileMessagePacket(const char * name, const char * c_szChat);
bool SendMessengerAddByVIDPacket(DWORD vid);
bool SendMessengerAddByNamePacket(const char * c_szName);
bool SendMessengerRemovePacket(const char * c_szKey, const char * c_szName);
protected:
bool OnProcess(); // State<74><65><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
void OffLinePhase();
void HandShakePhase();
void LoginPhase();
void SelectPhase();
void LoadingPhase();
void GamePhase();
bool __IsNotPing();
void __DownloadMark();
void __DownloadSymbol(const std::vector<DWORD> & c_rkVec_dwGuildID);
void __PlayInventoryItemUseSound(TItemPos uSlotPos);
void __PlayInventoryItemDropSound(TItemPos uSlotPos);
//void __PlayShopItemDropSound(UINT uSlotPos);
void __PlaySafeBoxItemDropSound(UINT uSlotPos);
void __PlayMallItemDropSound(UINT uSlotPos);
bool __CanActMainInstance();
enum REFRESH_WINDOW_TYPE
{
RefreshStatus = (1 << 0),
RefreshAlignmentWindow = (1 << 1),
RefreshCharacterWindow = (1 << 2),
RefreshEquipmentWindow = (1 << 3),
RefreshInventoryWindow = (1 << 4),
RefreshExchangeWindow = (1 << 5),
RefreshSkillWindow = (1 << 6),
RefreshSafeboxWindow = (1 << 7),
RefreshMessengerWindow = (1 << 8),
RefreshGuildWindowInfoPage = (1 << 9),
RefreshGuildWindowBoardPage = (1 << 10),
RefreshGuildWindowMemberPage = (1 << 11),
RefreshGuildWindowMemberPageGradeComboBox = (1 << 12),
RefreshGuildWindowSkillPage = (1 << 13),
RefreshGuildWindowGradePage = (1 << 14),
RefreshTargetBoard = (1 << 15),
RefreshMallWindow = (1 << 16),
};
void __RefreshStatus();
void __RefreshAlignmentWindow();
void __RefreshCharacterWindow();
void __RefreshEquipmentWindow();
void __RefreshInventoryWindow();
void __RefreshExchangeWindow();
void __RefreshSkillWindow();
void __RefreshSafeboxWindow();
void __RefreshMessengerWindow();
void __RefreshGuildWindowInfoPage();
void __RefreshGuildWindowBoardPage();
void __RefreshGuildWindowMemberPage();
void __RefreshGuildWindowMemberPageGradeComboBox();
void __RefreshGuildWindowSkillPage();
void __RefreshGuildWindowGradePage();
void __RefreshTargetBoardByVID(DWORD dwVID);
void __RefreshTargetBoardByName(const char * c_szName);
void __RefreshTargetBoard();
void __RefreshMallWindow();
bool __SendHack(const char* c_szMsg);
protected:
bool RecvObserverAddPacket();
bool RecvObserverRemovePacket();
bool RecvObserverMovePacket();
// Common
bool RecvErrorPacket(int header);
bool RecvPingPacket();
bool RecvDefaultPacket(int header);
bool RecvPhasePacket();
// Login Phase
bool __RecvLoginSuccessPacket3();
bool __RecvLoginSuccessPacket4();
bool __RecvLoginFailurePacket();
bool __RecvEmpirePacket();
bool __RecvChinaMatrixCardPacket();
bool __RecvRunupMatrixQuizPacket();
bool __RecvNEWCIBNPasspodRequestPacket();
bool __RecvNEWCIBNPasspodFailurePacket();
bool __RecvLoginKeyPacket();
// Select Phase
bool __RecvPlayerCreateSuccessPacket();
bool __RecvPlayerCreateFailurePacket();
bool __RecvPlayerDestroySuccessPacket();
bool __RecvPlayerDestroyFailurePacket();
bool __RecvPreserveItemPacket();
bool __RecvPlayerPoints();
bool __RecvChangeName();
// Loading Phase
bool RecvMainCharacter();
bool RecvMainCharacter2_EMPIRE();
bool RecvMainCharacter3_BGM();
bool RecvMainCharacter4_BGM_VOL();
void __SetFieldMusicFileName(const char* musicName);
void __SetFieldMusicFileInfo(const char* musicName, float vol);
// END_OF_SUPPORT_BGM
// Main Game Phase
bool RecvWarpPacket();
bool RecvPVPPacket();
bool RecvDuelStartPacket();
bool RecvGlobalTimePacket();
bool RecvCharacterAppendPacket();
bool RecvCharacterAdditionalInfo();
bool RecvCharacterAppendPacketNew();
bool RecvCharacterUpdatePacket();
bool RecvCharacterUpdatePacketNew();
bool RecvCharacterDeletePacket();
bool RecvChatPacket();
bool RecvOwnerShipPacket();
bool RecvSyncPositionPacket();
bool RecvWhisperPacket();
bool RecvPointChange(); // Alarm to python
bool RecvChangeSpeedPacket();
bool RecvStunPacket();
bool RecvDeadPacket();
bool RecvCharacterMovePacket();
bool RecvItemSetPacket(); // Alarm to python
bool RecvItemSetPacket2(); // Alarm to python
bool RecvItemUsePacket(); // Alarm to python
bool RecvItemUpdatePacket(); // Alarm to python
bool RecvItemGroundAddPacket();
bool RecvItemGroundDelPacket();
bool RecvItemOwnership();
bool RecvQuickSlotAddPacket(); // Alarm to python
bool RecvQuickSlotDelPacket(); // Alarm to python
bool RecvQuickSlotMovePacket(); // Alarm to python
bool RecvCharacterPositionPacket();
bool RecvMotionPacket();
bool RecvShopPacket();
bool RecvShopSignPacket();
bool RecvExchangePacket();
// Quest
bool RecvScriptPacket();
bool RecvQuestInfoPacket();
bool RecvQuestConfirmPacket();
bool RecvRequestMakeGuild();
// Skill
bool RecvSkillLevel();
bool RecvSkillLevelNew();
bool RecvSkillCoolTimeEnd();
// Target
bool RecvTargetPacket();
bool RecvViewEquipPacket();
bool RecvDamageInfoPacket();
// Mount
bool RecvMountPacket();
// Fly
bool RecvCreateFlyPacket();
bool RecvFlyTargetingPacket();
bool RecvAddFlyTargetingPacket();
// Messenger
bool RecvMessenger();
// Guild
bool RecvGuild();
// Party
bool RecvPartyInvite();
bool RecvPartyAdd();
bool RecvPartyUpdate();
bool RecvPartyRemove();
bool RecvPartyLink();
bool RecvPartyUnlink();
bool RecvPartyParameter();
// SafeBox
bool RecvSafeBoxSetPacket();
bool RecvSafeBoxDelPacket();
bool RecvSafeBoxWrongPasswordPacket();
bool RecvSafeBoxSizePacket();
bool RecvSafeBoxMoneyChangePacket();
// Fishing
bool RecvFishing();
// Dungeon
bool RecvDungeon();
// Time
bool RecvTimePacket();
// WalkMode
bool RecvWalkModePacket();
// ChangeSkillGroup
bool RecvChangeSkillGroupPacket();
// Refine
bool RecvRefineInformationPacket();
bool RecvRefineInformationPacketNew();
// Use Potion
bool RecvSpecialEffect();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>ߵ<EFBFBD> <20><>Ŷ.
bool RecvSpecificEffect();
// <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD>
bool RecvDragonSoulRefine();
// MiniMap Info
bool RecvNPCList();
bool RecvLandPacket();
bool RecvTargetCreatePacket();
bool RecvTargetCreatePacketNew();
bool RecvTargetUpdatePacket();
bool RecvTargetDeletePacket();
// Affect
bool RecvAffectAddPacket();
bool RecvAffectRemovePacket();
// Channel
bool RecvChannelPacket();
//Security
bool RecvHSCheckRequest();
bool RecvXTrapVerifyRequest();
protected:
// <20≯<EFBFBD>Ƽ<EFBFBD><C6BC>
bool ParseEmoticon(const char * pChatMsg, DWORD * pdwEmoticon);
// <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݵ<EFBFBD>
void OnConnectFailure();
void OnScriptEventStart(int iSkin, int iIndex);
void OnRemoteDisconnect();
void OnDisconnect();
void SetGameOnline();
void SetGameOffline();
BOOL IsGameOnline();
protected:
bool CheckPacket(TPacketHeader * pRetHeader);
void __InitializeGamePhase();
void __InitializeMarkAuth();
void __GlobalPositionToLocalPosition(LONG& rGlobalX, LONG& rGlobalY);
void __LocalPositionToGlobalPosition(LONG& rLocalX, LONG& rLocalY);
bool __IsPlayerAttacking();
bool __IsEquipItemInSlot(TItemPos Cell);
void __ShowMapName(LONG lLocalX, LONG lLocalY);
void __LeaveOfflinePhase() {}
void __LeaveHandshakePhase() {}
void __LeaveLoginPhase() {}
void __LeaveSelectPhase() {}
void __LeaveLoadingPhase() {}
void __LeaveGamePhase();
void __ClearNetworkActorManager();
void __ClearSelectCharacterData();
// DELETEME
//void __SendWarpPacket();
void __ConvertEmpireText(DWORD dwEmpireID, char* szText);
void __RecvCharacterAppendPacket(SNetworkActorData * pkNetActorData);
void __RecvCharacterUpdatePacket(SNetworkUpdateActorData * pkNetUpdateActorData);
void __FilterInsult(char* szLine, UINT uLineLen);
void __SetGuildID(DWORD id);
protected:
TPacketGCHandshake m_HandshakeData;
DWORD m_dwChangingPhaseTime;
DWORD m_dwBindupRetryCount;
DWORD m_dwMainActorVID;
DWORD m_dwMainActorRace;
DWORD m_dwMainActorEmpire;
DWORD m_dwMainActorSkillGroup;
BOOL m_isGameOnline;
BOOL m_isStartGame;
DWORD m_dwGuildID;
DWORD m_dwEmpireID;
struct SServerTimeSync
{
DWORD m_dwChangeServerTime;
DWORD m_dwChangeClientTime;
} m_kServerTimeSync;
void __ServerTimeSync_Initialize();
//DWORD m_dwBaseServerTime;
//DWORD m_dwBaseClientTime;
DWORD m_dwLastGamePingTime;
std::string m_stID;
std::string m_stPassword;
std::string m_strLastCommand;
std::string m_strPhase;
DWORD m_dwLoginKey;
BOOL m_isWaitLoginKey;
std::string m_stMarkIP;
CFuncObject<CPythonNetworkStream> m_phaseProcessFunc;
CFuncObject<CPythonNetworkStream> m_phaseLeaveFunc;
PyObject* m_poHandler;
PyObject* m_apoPhaseWnd[PHASE_WINDOW_NUM];
PyObject* m_poSerCommandParserWnd;
TSimplePlayerInformation m_akSimplePlayerInfo[PLAYER_PER_ACCOUNT4];
DWORD m_adwGuildID[PLAYER_PER_ACCOUNT4];
std::string m_astrGuildName[PLAYER_PER_ACCOUNT4];
bool m_bSimplePlayerInfo;
CRef<CNetworkActorManager> m_rokNetActorMgr;
bool m_isRefreshStatus;
bool m_isRefreshCharacterWnd;
bool m_isRefreshEquipmentWnd;
bool m_isRefreshInventoryWnd;
bool m_isRefreshExchangeWnd;
bool m_isRefreshSkillWnd;
bool m_isRefreshSafeboxWnd;
bool m_isRefreshMallWnd;
bool m_isRefreshMessengerWnd;
bool m_isRefreshGuildWndInfoPage;
bool m_isRefreshGuildWndBoardPage;
bool m_isRefreshGuildWndMemberPage;
bool m_isRefreshGuildWndMemberPageGradeComboBox;
bool m_isRefreshGuildWndSkillPage;
bool m_isRefreshGuildWndGradePage;
// Emoticon
std::vector<std::string> m_EmoticonStringVector;
struct STextConvertTable
{
char acUpper[26];
char acLower[26];
BYTE aacHan[5000][2];
} m_aTextConvTable[3];
struct SMarkAuth
{
CNetworkAddress m_kNetAddr;
DWORD m_dwHandle;
DWORD m_dwRandomKey;
} m_kMarkAuth;
DWORD m_dwSelectedCharacterIndex;
CInsultChecker m_kInsultChecker;
bool m_isEnableChatInsultFilter;
bool m_bComboSkillFlag;
std::deque<std::string> m_kQue_stHack;
private:
struct SDirectEnterMode
{
bool m_isSet;
DWORD m_dwChrSlotIndex;
} m_kDirectEnterMode;
void __DirectEnterMode_Initialize();
void __DirectEnterMode_Set(UINT uChrSlotIndex);
bool __DirectEnterMode_IsSet();
public:
DWORD EXPORT_GetBettingGuildWarValue(const char* c_szValueName);
private:
struct SBettingGuildWar
{
DWORD m_dwBettingMoney;
DWORD m_dwObserverCount;
} m_kBettingGuildWar;
CInstanceBase * m_pInstTarget;
void __BettingGuildWar_Initialize();
void __BettingGuildWar_SetObserverCount(UINT uObserverCount);
void __BettingGuildWar_SetBettingMoney(UINT uBettingMoney);
};