client/UserInterface/PythonNetworkStream.h

730 lines
20 KiB
C
Raw Normal View History

#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);
};