#pragma once #include "DNDataManagerBase.h" #include "DNTableFile.h" #if defined(_LOGINSERVER) #define FLAG_NICK_EQUAL 0 #define FLAG_NICK_INCLUDE 1 #define PROHIBITWORDMAX 64 struct ProhibitWordInfo { unsigned int nFlag; wchar_t szNick[PROHIBITWORDMAX]; }; #endif // _LOGINSERVER enum GlobalWeightTableIndex // village, gameÀº DnTableDB.h¿¡ Àֱ⠶§¹®¿¡ serverdefº¸´Ù´Â À̰÷¿¡ ¿Å°Ü³ùÀ½ { CharacterSlotMax = 34, // 34: ij¸¯ÅÍ ½½·Ô °³¼öÁ¦ÇÑ CHARACTERNAME_MAXLENGTH = 1010, //GlobalWeightTable¿¡ ÀÖ´Â °ªÀ» °¡Á®¿À±â¶§¹®¿¡ À妽º °ªÀÓ PVPCHANNEL_LIMITLEVEL = 1018, //GlobalWeightTable¿¡ ÀÖ´Â °ªÀ» °¡Á®¿À±â¶§¹®¿¡ À妽º °ªÀÓ Login_Max_CreateCharCount = 1022, // °èÁ¤´ç ÃÖ´ë»ý¼º °¡´ÉÇÑ Ä³¸¯ÅÍ ¼ö·® (GlobalWeight 1022) Login_Base_CreateCharCount = 1023, // °èÁ¤´ç ±âº»»ý¼º ij¸¯ÅÍ ¼ö·® (GlobalWeight 1023) BeginnerGuild_UserMax = 1026, // Ãʺ¸ÀÚ±æµå Á¦ÇÑÀοø 1026 BeginnerGuild_GiftMailID = 1027, // Ãʺ¸ÀÚ±æµå °¡ÀÔ¼±¹° 1027 MasterSystem_MasterAndPupilAllowLevelGap = 1038 // 1038 »çÁ¦½Ã½ºÅÛ_½º½Â°úÁ¦ÀÚ·¹º§Â÷ÀÌ }; enum GlobalWeightIntTableIndex // village, gameÀº DnTableDB.h¿¡ Àֱ⠶§¹®¿¡ serverdefº¸´Ù´Â À̰÷¿¡ ¿Å°Ü³ùÀ½ { ComebackTerm_Day = 10006, ComebackEffectItemID_Login = 10009, SpecialBoxKeepPeriod = 10010, NewbieReConnectReward_Hour = 10011, }; class CDNExtManager #if defined(_LOGINSERVER) || defined(_MASTERSERVER) : public CDNDataManagerBase #endif // #if defined(_LOGINSERVER) || defined(_MASTERSERVER) { private: typedef map TMapInfoMap; TMapInfoMap m_pMapInfo; typedef map TMapPCBangData; TMapPCBangData m_pPCBangData; typedef map TMapDefaultCreate; // first: ClassID TMapDefaultCreate m_pMapDefaultCreate; typedef map TNewCharCreate; TNewCharCreate m_pMapNewCharCreate; #if defined( PRE_ADD_DWC ) typedef map TMapDWCCreate; // first: JobCode TMapDWCCreate m_pMapDWCCreate; #endif // #if defined( PRE_ADD_DWC ) typedef map TMapSkillData; // ±âº»ÀûÀ¸·Î unlock µÈ ½ºÅ³À» °ñ¶ó¼­ º¸À¯ ½ºÅ³ ¸®½ºÆ®¿¡ ·¹º§ 0À¸·Î ³Ö¾îÁÜ. TMapSkillData m_pMapSkillData; map > m_mapDefaultUnlockSkillsByClass; typedef map TMapCoinCount; // first: Level TMapCoinCount m_pMapCoinCount; typedef map TMapLevelData; TMapLevelData m_pLevelData; #if defined(_LOGINSERVER) typedef std::map TProhibitWord; #if defined(PRE_ADD_MULTILANGUAGE) std::map m_ProhibitWordList; #else //#if defined(PRE_ADD_MULTILANGUAGE) TProhibitWord m_ProhibitWordList; #endif //#if defined(PRE_ADD_MULTILANGUAGE) #endif // #if defined(_LOGINSERVER) typedef map TMapWeaponData; TMapWeaponData m_pWeaponData; typedef map TMapPartData; TMapPartData m_pPartData; typedef map TPvPGameStartConditionData; TPvPGameStartConditionData m_PvPGameStartConditionTable; typedef map TScheduleData; TScheduleData m_ScheduleTable; typedef map TPvPGameModeTableData; TPvPGameModeTableData m_PvPGameModeTable; std::map> m_MatchTypePvPGameModeID; typedef map TPvPMapTableData; TPvPMapTableData m_PvPMapTable; typedef map TGuildWarMapInfoData; TGuildWarMapInfoData m_GuildWarMapInfo; typedef map TMapMailTableData; TMapMailTableData m_MailTableData; std::vector m_pGuildWarRewardData; typedef map TMapJobTableData; TMapJobTableData m_JobTableData; typedef map TMapCashCommodity; // first: ItemSN TMapCashCommodity m_pMapCashCommodity; typedef map TMapCashPackage; // first: ItemSN TMapCashPackage m_pMapCashPackage; typedef map TMapCashLimit; // first: ItemSN TMapCashLimit m_pMapCashLimit; typedef map TMapVehicleData; // first: ItemID TMapVehicleData m_MapVehicle; typedef map TMapVehicleParts; // first: ItemID TMapVehicleParts m_MapVehicleParts; typedef map TMapItemData; TMapItemData m_pItemData; typedef map TMapGlobalWeight; // first: ID TMapGlobalWeight m_pMapGlobalWeight; typedef map TMapGlobalWeightInt; // first: ID TMapGlobalWeightInt m_pMapGlobalWeightInt; CSyncLock m_Sync; //m_pMapCashCommodity¿Í m_pMapCashPackageº¸È£ bool LoadCashCommodity(bool bReload = false); bool LoadCashPackage(bool bReload = false); bool LoadCashLimit(); bool LoadItemData(); bool LoadPlayerLevel(); bool LoadGlobalWeight(); bool LoadGlobalWeightInt(); // VehicleTable bool LoadVehicleData(); // VehiclePartsTable bool LoadVehiclePartsData(); bool LoadPvPGameStartConditionTable(); bool LoadScheduleTable(); bool LoadPvPGameModeTable(); bool LoadGuildWarMapInfoTable(); bool LoadPvPMapTable(); bool LoadMailTableData(); bool LoadGuildWarRewardData(); bool LoadJobTableData(); unsigned int MemoryToRSHashKey(const wchar_t* pszData, long nSize); void FindExtFileList( const char *szFileName, std::vector &szVecList ); DNTableFileFormat* LoadExtTable( const char *szFileName ); public: struct PlayerLevelTableIndex{ enum ePlayerLevelTableIndex { Strength, Agility, Intelligence, Stamina, Experience, SuperAmmor, SkillPoint, Fatigue, DeadDurabilityRatio, KillScore, AssistScore, AssistDecision, AggroPer, WeekFatigue, SPDecreaseRatio, Amount, }; }; protected: struct LevelValue { union { int nValue[PlayerLevelTableIndex::Amount]; float fValue[PlayerLevelTableIndex::Amount]; }; }; std::map m_nMapTable; public: CDNExtManager(void); ~CDNExtManager(void); bool AllLoad(); int GetValue( int nClassID, int nLevel, PlayerLevelTableIndex::ePlayerLevelTableIndex Index ); float GetValueFloat( int nClassID, int nLevel, PlayerLevelTableIndex::ePlayerLevelTableIndex Index ); TPvPGameStartConditionTable* GetPvPGameStartConditionTable( const UINT uiMaxUser ); TSchedule* GetSchedule( int nSchedule ); const TPvPGameModeTable* GetPvPGameModeTableByMatchType( LadderSystem::MatchType::eCode MatchType ); UINT GetGuildWarMapInfoID(char cMonth); const TPvPMapTable* GetPvPMapTable( const int nItemID ); const TPvPGameModeTable* GetPvPGameModeTable( const int nItemID ); bool LoadMapInfo(); //MapInfo int GetMapIndexByGateNo(int nMapIndex, int nGateNo, int nSelect=0); int GetGateNoByGateNo( int nMapIndex, int nGateNo, int nSelect=0); GlobalEnum::eMapTypeEnum GetMapType( int nMapIndex ); const char * GetMapName(int nMapIdx); #if defined(_LOGINSERVER) || defined(_MASTERSERVER) void SetOnOffServerInfo(char cWorldSetID, bool bOnline); int GetWorldID(); WCHAR* GetWorldName(int nWorldID); bool GetLocalIp(OUT std::vector& Out); #endif // #if defined(_LOGINSERVER) || defined(_MASTERSERVER) #if defined(_LOGINSERVER) void GetChannelListByMapIndex(char cWorldID, int nMapIndex, int nLastMapIndex, sChannelInfo *ChannelArray, BYTE &cCount, TMapChannel *ChannelList); void GetServerList(TServerListData *ServerList, BYTE &cCount, bool DenyWorld=false); // DefaultCreateData bool LoadDefaultCreateData(); bool LoadSkillData(); TDefaultCreateData* GetDefaultCreateData(BYTE cClassID); TDefaultCreateData* GetDefaultCreateData_2(BYTE cClassID); // TDefaultCreateData* GetDefaultCreateData(BYTE cClassID,bool bIsDarkClass); int GetCreateDefaultItem(BYTE cClassID, TCreateCharacterItem *CreateItemArray); bool IsDefaultParts(BYTE cClassID, char cEquipType, int nPartID); bool IsDefaultHairColor(BYTE cClassID, DWORD dwColor); bool IsDefaultSkinColor(BYTE cClassID, DWORD dwColor); bool IsDefaultEyeColor(BYTE cClassID, DWORD dwColor); bool GetCreateDefaultPosition(BYTE cClassID, int &nPosX, int &nPosY); bool GetCreateDefaultMapInfo(BYTE cClassID, int &nMapIndex, int &nTutorialMapIndex, char &cTutorialGateNo); bool GetCreateDefaultSkill(BYTE cClassID, int *CreateSkillArray); bool GetCreateDefaultQuickSlot(BYTE cClassID, TQuickSlot *QuickSlotArray); bool GetCreateDefaultGesture(BYTE cClassID, int * CreateGestureArr); bool GetCreateDefaultUnlockSkill(BYTE cClassID, int *CreateUnlockSkillArray); //rlkt_dark bool GetCreateDarkSecondClassID(BYTE cClassID, int &ClassID); // DefaultCreateData #if defined( PRE_ADD_DWC ) bool LoadDWCCreateData(); TDWCCreateData* GetDWCCreateData(BYTE cJobCode); int GetCreateDWCItem(BYTE cJobCode, TCreateCharacterItem *CreateItemArray); bool GetCreateDWCPosition(BYTE cJobCode, int &nPosX, int &nPosY); bool GetCreateDWCEquip(BYTE cJobCode, int * CreateEquipArray); bool GetCreateDWCSkill(BYTE cJobCode, int *CreateSkillArray); bool GetCreateDWCQuickSlot(BYTE cJobCode, TQuickSlot *QuickSlotArray); bool GetCreateDWCGesture(BYTE cJobCode, int * CreateGestureArr); #endif // #if defined( PRE_ADD_DWC ) // CoinCountByLevel bool LoadCoinCount(); int GetRebirthCoin(BYTE cLevel, char cWorldID); int GetCashRebirthCoin(BYTE cLevel, char cWorldID); bool LoadLevelData(); int GetFatigue(char cClass, char cLevel); // ±ÝÄ¢¾î #if defined(PRE_ADD_MULTILANGUAGE) bool LoadProhibitWord(int nLanguage, const char * pszFilePath); TProhibitWord * GetLanguageSlangFilter(int nLanguage); bool CheckProhibitWord(int nLanguage, const wchar_t *pwszWord); #else //#if defined(PRE_ADD_MULTILANGUAGE) bool LoadProhibitWord(); bool CheckProhibitWord(const wchar_t *pwszWord); #endif //#if defined(PRE_ADD_MULTILANGUAGE) bool CheckSpecialCharacter(const wchar_t *pwszWord); bool LoadWeaponData(); TWeaponData* GetWeaponData(int nWeaponIndex); bool LoadPartData(); TPartData* GetPartData(int nPartIndex); int GetItemDurability( int nItemID ); #endif // PCBang bool LoadPCBangData(); int GetPCBangDataCount(); TPCBangData *GetPCBangData(int nPCBangType); int GetPCBangParam1(int nPCBangType, int nPCBangGrade); // µ¥ÀÌÅÍ 1ÁÙ¸¸ Àִ°æ¿ì (PCBang::Type::)Exp, Appellation, Fatigue, RebirthCoin, Mission int GetPCBangParam2(int nPCBangType, int nPCBangGrade); // µ¥ÀÌÅÍ 1ÁÙ¸¸ Àִ°æ¿ì (PCBang::Type::)Exp, Appellation, Fatigue, RebirthCoin, Mission int GetPCBangNestClearCount(int nPCBangGrade, int nMapID); bool GetPCBangClearBoxFlag(int nPCBangGrade); // CashÂÊ bool ReLoadCashCommodity(); bool ReLoadCashPackage(); bool GetCashCommodityData(int nSN, TCashCommodityData &Data); int GetCashCommodityPrice(int nSN); bool IsReserveCommodity(int nSN); // Àû¸³±Ý °¡´É »óǰÀÎÁö bool IsPresentCommodity(int nSN); // ¼±¹° °¡´É »óǰÀÎÁö bool IsOnSaleCommodity(int nSN); // ÆÇ¸Å °¡´É »óǰÀÎÁö bool IsLimitCommodity(int nSN); // ÇÑÁ¤ÆÇ¸ÅÀÎÁö int GetCashCommodityPeriod(int nSN); int GetCashCommodityCount(int nSN); int GetCashCommodityReserve(int nSN); // ±¸ÀԽà ÁÖ¾îÁö´Â Àû¸³±Ý #if defined( PRE_ADD_NEW_MONEY_SEED ) int GetCashCommoditySeed(int nSN); // ±¸ÀԽà ÁÖ¾îÁö´Â ½Ãµå #endif bool GetCashCommodityName(int nSN, std::string &outStr); bool GetCashCommodityNameW(int nSN, std::wstring &outStr); #if defined(_JP) bool GetCashCommodityJPSN(int nSN, std::string &outStr); #endif // #if defined(_JP) int GetCashCommodityItem0(int nSN); int GetCashCommodityVIPPoint(int nSN); // vippoint¾ò±â bool GetCashCommodityPay(int nSN); int GetCashCommodityPaySale(int nSN); int GetCashCommodityVIPAutomaticPaySalePrice(int nSN); // VIPÀÚµ¿°áÁ¦¶§ ÇÒÀΰ¡°Ý std::vector m_VecProhibitSaleList; void SetProhibitSaleList(); #if defined(PRE_ADD_CASH_REFUND) bool GetCashCommodityNoRefund(int nID, int nSN); // ij½¬ ȯºÒ ºÒ°¡´É #endif #if defined(PRE_ADD_SALE_COUPON) bool GetCashCommodityUseCoupon(int nSN); #endif bool GetCashPackageData(int nSN, TCashPackageData &Data); TCashLimitData *GetCashLimitData(int nSN); int GetCashBuyAbleCount(int nSN); #if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER) int GetCashLimitedItemCount(int nSN); #endif //#if defined(PRE_ADD_LIMITED_CASHITEM) && defined(_CASHSERVER) TItemData* GetItemData(int nItemID); int GetItemMainType(int nItemID); // ¾ÆÀÌÅÛ Å¸ÀÔÁß¿¡ eItemTypeEnum ÀÎÁö int GetItemOverlapCount(int nItemID); bool IsCashItem(int nItemID); // GlobalWeight TGlobalWeightData *GetGlobalWeightData(int nID); float GetGlobalWeightValueFloat(int nID); int GetGlobalWeightValue(int nID); TGlobalWeightIntData *GetGlobalWeightIntData(int nID); float GetGlobalWeightIntValueFloat(int nID); int GetGlobalWeightIntValue(int nID); // VehicleTable TVehicleData *GetVehicleData(int nItemID); int GetVehicleClassID(int nItemID); // VehiclePartsTable TVehiclePartsData *GetVehiclePartsData(int nItemID); int GetVehiclePartsType(int nItemID); TMailTableData* GetMailTableData( int iItemID ); TGuildWarRewardData* GetGuildWarRewardData(char cType, char cClass); TJobTableData* GetJobTableData( int nJobTableID ); time_t GetTimeForTextDate(std::string& strDate); // "00/00/00" Text¿¡¼­ time_t ¾ò¾î¿À±â bool IsOnSaleDate(int nSN); void GetXMLAccountDBID(UINT nAccountDBID, std::wstring &wstrOut); void GetXMLAccountName(WCHAR *pAccountName, std::wstring &wstrOut); void GetXMLCharacterDBID(INT64 biCharacterDBID, std::wstring &wstrOut); void GetXMLCharacterName(WCHAR *pCharacterName, std::wstring &wstrOut); void GetXMLItems(int nItemTotalCount, TSpecialBoxItemInfo *Items, std::wstring &wstrOut); /// bool LoadNewCharCreate(); }; extern CDNExtManager *g_pExtManager;