2024-12-21 10:04:04 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_VILLAGESERVER) || defined(_GAMESERVER)
|
|
|
|
|
|
class CDNGameDataManager;
|
|
|
|
|
|
#else
|
|
|
|
|
|
#include "DNTableFile.h"
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
/**
|
|
|
|
|
|
Note <EFBFBD>ѱ<EFBFBD>:
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD>ų Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ε<EFBFBD><EFBFBD>ؼ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ִٰ<EFBFBD>
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>û/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȸ <EFBFBD><EFBFBD>û<EFBFBD><EFBFBD> ó<EFBFBD><EFBFBD><EFBFBD>մϴ<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ŀ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>𰡸<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰų<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>о<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʱ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʽ<EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|
|
|
|
|
*/
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ų <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. Ʈ<><C6AE><EFBFBD><EFBFBD> <20><EFBFBD><EEB6BB> <20>ٹ̴<D9B9><CCB4>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> <20>Ѵٸ<D1B4> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>
|
|
|
|
|
|
// R:/GameRes/Resource/UI/Skill/SkillTreeContentDlg.ui <20><><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>մϴ<D5B4>.
|
|
|
|
|
|
const int MAX_SKILL_SLOT_COUNT = 28;
|
|
|
|
|
|
|
|
|
|
|
|
const int MAX_PARENT_SKILL_COUNT = 3;
|
|
|
|
|
|
const int MAX_SKILL_PER_LINE = 4;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CDnSkillTreeSystem
|
|
|
|
|
|
{
|
|
|
|
|
|
private:
|
|
|
|
|
|
struct S_UNLOCK_CONDITION
|
|
|
|
|
|
{
|
|
|
|
|
|
int iUnlockSkillBookItemID;
|
|
|
|
|
|
|
|
|
|
|
|
S_UNLOCK_CONDITION( void ) : iUnlockSkillBookItemID( 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct S_ACQUIRE_CONDITION
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> 1<><31><EFBFBD><EFBFBD> <20><><EFBFBD>ǵǾ<C7B5><C7BE><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
int iNeedLevel;
|
|
|
|
|
|
|
|
|
|
|
|
// <20>䱸<EFBFBD>Ǵ<EFBFBD> <20>θ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>. NodeInfo <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD>ϸ<EFBFBD> <20><> <20><EFBFBD><D7B7>߸<EFBFBD> <20><>.
|
|
|
|
|
|
vector<int> vlParentSkillNeedLevel;
|
|
|
|
|
|
|
|
|
|
|
|
S_ACQUIRE_CONDITION( void ) : iNeedLevel( 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
// UI ǥ<>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ü.
|
|
|
|
|
|
struct S_NODE_RENDER_INFO
|
|
|
|
|
|
{
|
|
|
|
|
|
int iSkillID;
|
|
|
|
|
|
int iSlotIndex;
|
|
|
|
|
|
int iJobID;
|
|
|
|
|
|
const S_UNLOCK_CONDITION* pUnLockCondition;
|
|
|
|
|
|
const S_ACQUIRE_CONDITION* pAcquireCondition;
|
|
|
|
|
|
vector<int> vlChildSlotIndexInJob; // <20><><EFBFBD>ʺ<EFBFBD><CABA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ʈ<><C6AE> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ʈ<><C6AE> <20>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>ڽ<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
// <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20>θ<EFBFBD> <20><>ų<EFBFBD><C5B3> <20><> <20><> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
vector<int> vlParentSkillJobIDs;
|
|
|
|
|
|
vector<int> vlParentSkillIDs;
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(PRE_ADD_SKILL_LEVELUP_LIMIT_BY_SP)
|
|
|
|
|
|
vector<int> vlNeedJobSP; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ʿ<EFBFBD> sp<73><70>
|
|
|
|
|
|
#endif // PRE_ADD_SKILL_LEVELUP_LIMIT_BY_SP
|
|
|
|
|
|
|
|
|
|
|
|
S_NODE_RENDER_INFO() : iSkillID( 0 ), iSlotIndex( 0 ), iJobID( 0 ), pUnLockCondition( NULL ) , pAcquireCondition( NULL ){};
|
|
|
|
|
|
S_NODE_RENDER_INFO( int argiSkillID, int argiSlotIndex, int argiJobID,
|
|
|
|
|
|
const S_UNLOCK_CONDITION* argpUnLockCondition, const S_ACQUIRE_CONDITION* argpAcquireCondition ) :
|
|
|
|
|
|
iSkillID( argiSkillID ), iSlotIndex( argiSlotIndex ), iJobID( argiJobID ),
|
|
|
|
|
|
pUnLockCondition( argpUnLockCondition ), pAcquireCondition( argpAcquireCondition ) {};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
// <20><>ų Ʈ<><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
struct S_NODE_INFO
|
|
|
|
|
|
{
|
|
|
|
|
|
int iJobID;
|
|
|
|
|
|
int iSkillID;
|
|
|
|
|
|
int iNeedSkillPointToAcquire; // ȹ<><C8B9><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ
|
|
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
/**
|
|
|
|
|
|
Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 ĭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
*/
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
int iTreeSlotIndex;
|
|
|
|
|
|
bool bDefaultLocked;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD>, ȹ<><C8B9><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
S_UNLOCK_CONDITION UnLockCondition;
|
|
|
|
|
|
S_ACQUIRE_CONDITION AcquireCondition;
|
|
|
|
|
|
|
|
|
|
|
|
vector<S_NODE_INFO*> vlpChildNodeInfo;
|
|
|
|
|
|
vector<S_NODE_INFO*> vlpParentNodeInfo; // <20>θ<EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> 3<><33><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><>ų ȹ<><C8B9> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
#if defined( PRE_ADD_PRESET_SKILLTREE )
|
|
|
|
|
|
vector<int> vecAdviceSkillLevel;
|
|
|
|
|
|
#endif // #if defined( PRE_ADD_PRESET_SKILLTREE )
|
|
|
|
|
|
|
|
|
|
|
|
#if defined( PRE_ADD_ONLY_SKILLBOOK )
|
|
|
|
|
|
bool bNeedSkillBook;
|
|
|
|
|
|
#endif // #if defined( PRE_ADD_ONLY_SKILLBOOK )
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
S_NODE_RENDER_INFO* pNodeRenderInfo;
|
|
|
|
|
|
|
|
|
|
|
|
S_NODE_INFO() : iTreeSlotIndex( 0 ), iJobID( 0 ), iSkillID( 0 ), iNeedSkillPointToAcquire( 0 ),
|
|
|
|
|
|
bDefaultLocked( false ), pNodeRenderInfo( NULL )
|
|
|
|
|
|
#if defined( PRE_ADD_ONLY_SKILLBOOK )
|
|
|
|
|
|
, bNeedSkillBook( false )
|
|
|
|
|
|
#endif // #if defined( PRE_ADD_ONLY_SKILLBOOK )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct S_SKILLTREE_INFO
|
|
|
|
|
|
{
|
|
|
|
|
|
int iJobID;
|
|
|
|
|
|
|
|
|
|
|
|
vector<S_NODE_INFO*> vlpNodeList; // <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
map<int, S_NODE_INFO*> mapNodeBySkillID; // <20><>ų ID<49><44> Ű <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD>忡 <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
vector<S_NODE_RENDER_INFO> vlNodeRenderInfo; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
~S_SKILLTREE_INFO()
|
|
|
|
|
|
{
|
|
|
|
|
|
SAFE_DELETE_PVEC( vlpNodeList );
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
vector<S_SKILLTREE_INFO*> m_vlpJobSkillTreeList;
|
|
|
|
|
|
map<int, S_SKILLTREE_INFO*> m_mapSkillTreeByJobID; // <20><><EFBFBD><EFBFBD>(<28><>) ID <20><> <20><>ų Ʈ<><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
map<int, S_NODE_INFO*> m_mapNodeListBySkillBookID; // <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
S_NODE_INFO* _FindNode( int iSkillID );
|
|
|
|
|
|
void _MakeupParentSkillLinks( DNTableFileFormat* pSkillTreeTable, DNTableFileFormat* pSkillTable );
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CDnSkillTreeSystem(void);
|
|
|
|
|
|
~CDnSkillTreeSystem(void);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>̺<EFBFBD> <20>ε<EFBFBD><CEB5>ؼ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ.
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DataManager <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>Ѵ<EFBFBD>.
|
|
|
|
|
|
#if defined(_VILLAGESERVER) || defined(_GAMESERVER)
|
|
|
|
|
|
bool InitializeTableUsingDataManager( CDNGameDataManager* pDataManager );
|
|
|
|
|
|
#endif
|
|
|
|
|
|
bool InitializeTable( void );
|
|
|
|
|
|
|
|
|
|
|
|
struct S_POSSESSED_SKILL_INFO
|
|
|
|
|
|
{
|
|
|
|
|
|
int iSkillID;
|
|
|
|
|
|
int iSkillLevel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD> ID <20>ƴ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool bCurrentLock; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD><C6B4><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
|
|
S_POSSESSED_SKILL_INFO() : iSkillID( 0 ), iSkillLevel( 0 ), bCurrentLock( true )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
S_POSSESSED_SKILL_INFO( int argiSkillID, int argiSkillLevel, bool argbCurrentLock ) : iSkillID(argiSkillID),
|
|
|
|
|
|
iSkillLevel(argiSkillLevel), bCurrentLock(argbCurrentLock)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ʺ<EFBFBD><CABA><EFBFBD> ȣ<><C8A3><EFBFBD>Ǹ<EFBFBD> <20>ȵǴ<C8B5> <20><><EFBFBD>̽<EFBFBD>.
|
|
|
|
|
|
enum ERROR_CODE
|
|
|
|
|
|
{
|
|
|
|
|
|
E_NONE = 0, // <20><><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>
|
|
|
|
|
|
E_CANT_FIND_SKILLNODE, // <20><>ų Ʈ<><C6AE><EFBFBD><EFBFBD><EFBFBD>带 ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD>쵵 <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
E_MISMATCH_JOB,
|
|
|
|
|
|
E_INVALID_CALL, // <20>߸<EFBFBD><DFB8><EFBFBD> ȣ<><C8A3>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
enum RESULT_CODE
|
|
|
|
|
|
{
|
|
|
|
|
|
R_SUCCESS,
|
|
|
|
|
|
R_NOT_ENOUGH_CHAR_LEVEL, // ij<><C4B3><EFBFBD><EFBFBD> <20>䱸<EFBFBD><E4B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڶ<EFBFBD>.
|
|
|
|
|
|
R_INVALID_SKILLBOOK_ITEMID, // <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
R_DONT_HAVE_PARENT_SKILL, // <20><><EFBFBD><EFBFBD>(<28>θ<EFBFBD>) <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
R_LOCKED_PARENTSKILL, // <20>θ<EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
R_NOT_ENOUGH_PARENT_SKILL_LEVEL, // <20>θ<EFBFBD><CEB8><EFBFBD>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
R_NOT_ENOUGH_SKILLPOINT_TO_ACQUIRE, // <20><>ų <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD> <20><>ų<EFBFBD><C5B3> ȹ<><C8B9><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
R_EXCLUSIVE_SKILL,
|
|
|
|
|
|
R_ONLY_SKILL_BOOK, // <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><>ų.
|
|
|
|
|
|
R_FAIL,
|
|
|
|
|
|
R_ERROR,
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#if defined( PRE_ADD_PRESET_SKILLTREE )
|
|
|
|
|
|
enum
|
|
|
|
|
|
{
|
|
|
|
|
|
E_ADVICE_SKILL_LEVEL_COUNT = 3
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif // #if defined( PRE_ADD_PRESET_SKILLTREE )
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> ȹ<><C8B9> <20><>ų, <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
struct S_TRY_UNLOCK
|
|
|
|
|
|
{
|
|
|
|
|
|
int iCurrentCharLevel;
|
|
|
|
|
|
int iTryUnlockSkillID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><>ų ID
|
|
|
|
|
|
int iSkillBookItemID; // <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>ų <20><> ItemID
|
|
|
|
|
|
int iJobID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>.
|
|
|
|
|
|
//const vector<S_POSSESSED_SKILL_INFO>& vlPossessedSkillInfo; // <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
|
|
|
|
|
|
//S_CURRENT_USERSKILL_INFO( const vector<S_POSSESSED_SKILL_INFO>& _vlSkillInfo ) :
|
|
|
|
|
|
// vlPossessedSkillInfo( _vlSkillInfo ),
|
|
|
|
|
|
// iCurrentCharLevel( 0 ), iSkillBookItemID( 0 ), iTryUnlockSkillID( 0 ), iJobID( 0 )
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
|
|
//};
|
|
|
|
|
|
|
|
|
|
|
|
S_TRY_UNLOCK( void ) : iCurrentCharLevel( 0 ), iTryUnlockSkillID( 0 ),
|
|
|
|
|
|
iSkillBookItemID( 0 ), iJobID( 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct S_TRY_ACQUIRE
|
|
|
|
|
|
{
|
|
|
|
|
|
int iCurrentCharLevel;
|
|
|
|
|
|
int iTryAcquireSkillID;
|
|
|
|
|
|
int iHasSkillPoint;
|
|
|
|
|
|
int iJobID;
|
|
|
|
|
|
|
|
|
|
|
|
const vector<S_POSSESSED_SKILL_INFO>& vlPossessedSkillInfo;
|
|
|
|
|
|
|
|
|
|
|
|
S_TRY_ACQUIRE( const vector<S_POSSESSED_SKILL_INFO>& _vlSkillInfo ) :
|
|
|
|
|
|
vlPossessedSkillInfo( _vlSkillInfo ), iCurrentCharLevel( 0 ),
|
|
|
|
|
|
iTryAcquireSkillID( 0 ),
|
|
|
|
|
|
iHasSkillPoint( 0 ), iJobID( 0 )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>û <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
struct S_OUTPUT
|
|
|
|
|
|
{
|
|
|
|
|
|
RESULT_CODE eResult;
|
|
|
|
|
|
ERROR_CODE eErrorCode;
|
|
|
|
|
|
|
|
|
|
|
|
S_OUTPUT() : eResult( R_FAIL ), eErrorCode( E_NONE )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef PRE_ADD_ONLY_SKILLBOOK
|
|
|
|
|
|
bool IsNeedSkillBook( int iSkillID, bool& bExistSkill );
|
|
|
|
|
|
#endif // PRE_ADD_ONLY_SKILLBOOK
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ų <20><><EFBFBD><EFBFBD> <20>õ<EFBFBD>. <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>!
|
|
|
|
|
|
void TryUnLockSkill( /*IN*/ const S_TRY_UNLOCK& PresentInfo, /*OUT*/ S_OUTPUT* pResult );
|
|
|
|
|
|
void TryAcquireSkill( /**/ const S_TRY_ACQUIRE& TryAcquire, /*OUT*/ S_OUTPUT* pResult );
|
|
|
|
|
|
int FindSkillBySkillBook( int iSkillBookItemID );
|
|
|
|
|
|
#ifdef PRE_ADD_LEVELUP_GUIDE
|
|
|
|
|
|
void GetLevelUpSkillInfo(std::vector<int>& newSkillIdList, int newLevel, int jobId);
|
|
|
|
|
|
void GetLevelUpSkillInfo(std::vector<int>& newSkillIdList, int newLevel, const std::vector<int>& jobHistoryVec);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
//#ifndef (_GAMESERVER)&(_VILLAGESERVER)
|
|
|
|
|
|
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Ʈ<><C6AE> Ÿ<><C5B8>.
|
|
|
|
|
|
int GetNodeCount( int iJobID ) const; // <20><>ȿ<EFBFBD><C8BF> <20><>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|
|
|
|
|
int GetSlotCount( int iJobID ) const; // <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. (<28>߰<EFBFBD><DFB0><EFBFBD> <20><>ĭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
|
|
|
|
|
|
void GetNodeRenderInfo( int iSlotIndex, int iJobID, /*OUT*/S_NODE_RENDER_INFO* pNodeRenderInfo ) const;
|
|
|
|
|
|
//#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(PRE_ADD_SKILL_LEVELUP_LIMIT_BY_SP)
|
|
|
|
|
|
void GetNeedSPValuesByJob(int nSkillID, std::vector<int>& nNeedSPValues);
|
|
|
|
|
|
#endif // PRE_ADD_SKILL_LEVELUP_LIMIT_BY_SP
|
|
|
|
|
|
|
|
|
|
|
|
int IsParentSkill( const int nParentSkillID, const int nChildSkillID );
|
|
|
|
|
|
|
|
|
|
|
|
void GetParentSkillData( const int nChildSkillID, std::vector< std::pair<int, int> > & vecParentSkillData );
|
|
|
|
|
|
|
|
|
|
|
|
#if defined( PRE_ADD_PRESET_SKILLTREE )
|
|
|
|
|
|
void GetAdviceSkillTree( const int nAdviceSkill_Index, const std::vector<int> & vecJobList, std::vector< std::pair<int, BYTE> > & vecData );
|
|
|
|
|
|
#endif // #if defined( PRE_ADD_PRESET_SKILLTREE )
|
|
|
|
|
|
};
|