convert comments in h files to utf8

This commit is contained in:
2024-12-17 22:41:21 +01:00
parent 361a62853d
commit 373c184dfe
69 changed files with 634 additions and 634 deletions

View File

@ -42,8 +42,8 @@ class CEffectData
void __ClearLightDataVector(); void __ClearLightDataVector();
void __ClearMeshDataVector(); void __ClearMeshDataVector();
// FIXME : <EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20>״<EFBFBD><D7B4><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5> ã<>Ƴ<EFBFBD><C6B3><EFBFBD> <20><>ġ<EFBFBD><C4A1>. // FIXME : 이 부분은 그다지 맘에 들지 않는다. 좋은 아이디어를 찾아내어 고치자.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Ưȭ<C6AF><C8AD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD> <20>Ѵٴ<D1B4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD>. - [levites] // 상위가 (특화된) 상위의 인터페이스 때문에 모양이 바뀌어야 한다는 것은 옳지 못하다. - [levites]
virtual CParticleSystemData * AllocParticle(); virtual CParticleSystemData * AllocParticle();
virtual CEffectMeshScript * AllocMesh(); virtual CEffectMeshScript * AllocMesh();
virtual CLightData * AllocLight(); virtual CLightData * AllocLight();

View File

@ -62,8 +62,8 @@ class CEffectManager : public CScreen, public CSingleton<CEffectManager>
bool GetEffectData(DWORD dwID, CEffectData ** ppEffect); bool GetEffectData(DWORD dwID, CEffectData ** ppEffect);
bool GetEffectData(DWORD dwID, const CEffectData ** c_ppEffect); bool GetEffectData(DWORD dwID, const CEffectData ** c_ppEffect);
// Area<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Effect<EFBFBD><EFBFBD> <20>Լ<EFBFBD>... EffectInstance<EFBFBD><EFBFBD> Pointer<EFBFBD><EFBFBD> <20><>ȯ<EFBFBD>Ѵ<EFBFBD>. // Area에 직접 찍는 Effect용 함수... EffectInstance Pointer를 반환한다.
// EffectManager <EFBFBD><EFBFBD><EFBFBD><EFBFBD> EffectInstanceMap<EFBFBD><EFBFBD> <20>̿<EFBFBD><CCBF><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. // EffectManager 내부 EffectInstanceMap을 이용하지 않는다.
void CreateUnsafeEffectInstance(DWORD dwEffectDataID, CEffectInstance ** ppEffectInstance); void CreateUnsafeEffectInstance(DWORD dwEffectDataID, CEffectInstance ** ppEffectInstance);
bool DestroyUnsafeEffectInstance(CEffectInstance * pEffectInstance); bool DestroyUnsafeEffectInstance(CEffectInstance * pEffectInstance);

View File

@ -9,7 +9,7 @@
class CEffectMeshInstance : public CEffectElementBaseInstance class CEffectMeshInstance : public CEffectElementBaseInstance
{ {
public: public:
// NOTE : Mesh <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD><CFBD>̴<EFBFBD>. // NOTE : Mesh 단위 텍스춰 데이타의 인스턴스이다.
typedef struct STextureInstance typedef struct STextureInstance
{ {
CFrameController TextureFrameController; CFrameController TextureFrameController;

View File

@ -71,12 +71,12 @@ enum EBillBoardType
BILLBOARD_TYPE_ALL, BILLBOARD_TYPE_ALL,
BILLBOARD_TYPE_Y, BILLBOARD_TYPE_Y,
BILLBOARD_TYPE_LIE, // <EFBFBD>ٴڿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BILLBOARD_TYPE_LIE, // 바닥에 누은 형상
BILLBOARD_TYPE_2FACE, // / and \ BILLBOARD_TYPE_2FACE, // / and \
BILLBOARD_TYPE_3FACE, // / and \ and - BILLBOARD_TYPE_3FACE, // / and \ and -
//BILLBOARD_TYPE_RAY, // <EFBFBD>ܻ<EFBFBD> //BILLBOARD_TYPE_RAY, // 잔상
}; };
@ -220,8 +220,8 @@ typedef std::vector<TTimeEventTypeVector2> TTimeEventTableVector2;
typedef std::vector<TTimeEventTypeVector3> TTimeEventTableVector3; typedef std::vector<TTimeEventTypeVector3> TTimeEventTableVector3;
// NOTE : TimeEventValue <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƾ<EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> // NOTE : TimeEventValue 함수들은 값을 넘겨 받지 말아야 하는 때도 있으므로
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ۼ<EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>. - [levites] // 값의 직접 리턴이 아닌 포인터 리턴으로 작성 했습니다. - [levites]
template <typename T> template <typename T>
__forceinline void GetTimeEventBlendValue(float fElapsedTime, std::vector<CTimeEvent<T> >& rVector, T * pReturnValue) __forceinline void GetTimeEventBlendValue(float fElapsedTime, std::vector<CTimeEvent<T> >& rVector, T * pReturnValue)

View File

@ -6,14 +6,14 @@ class _CPostItMemoryBlock;
/** /**
* @class CPostIt * @class CPostIt
* @brief <EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> * @brief 게임런처에서 게임 클라이언트로 정보를 전달 및 클라이언트에서 수신하기 위하여 사용되는 클래스
*/ */
class CPostIt class CPostIt
{ {
public: public:
/** /**
* @brief CPostIt constructor * @brief CPostIt constructor
* @param [in] szAppName : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A3>. * @param [in] szAppName : 게임의 이름이 들어간다.
*/ */
explicit CPostIt( LPCSTR szAppName ); explicit CPostIt( LPCSTR szAppName );
@ -23,45 +23,45 @@ public:
~CPostIt( void ); ~CPostIt( void );
/** /**
* @brief CPostIt class<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. * @brief CPostIt class에서 보유하고 있는 데이타를 클립보드에 저장한다.
*/ */
BOOL Flush( void ); BOOL Flush( void );
/** /**
* @brief CPostIt class<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. * @brief CPostIt class에서 보유하고 있는 데이타 및 클립보드에 있는 내용을 지운다.
*/ */
void Empty( void ); void Empty( void );
/** /**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE>´<EFBFBD>. * @brief 데이타를 읽어온다.
* @param [in] lpszKeyName : <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Ű. "KEY" <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>. * @param [in] lpszKeyName : 불러올 데이타의 키. "KEY" 식의 내용을 넣는다.
* @param [in] lpszData : <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD> * @param [in] lpszData : 불러올 데이타의 버퍼
* @param [in] nSize : lpszData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * @param [in] nSize : lpszData 버퍼의 최대사이즈
*/ */
BOOL Get( LPCSTR lpszKeyName, LPSTR lpszData, DWORD nSize ); BOOL Get( LPCSTR lpszKeyName, LPSTR lpszData, DWORD nSize );
/** /**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>ִ´<D6B4>. * @brief 저장할 데이타를 넣는다.
* @param [in] lpBuffer : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ. "KEY=DATA" <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>. * @param [in] lpBuffer : 저장할 데이타. "KEY=DATA" 식의 내용을 넣는다.
*/ */
BOOL Set( LPCSTR lpszData ); BOOL Set( LPCSTR lpszData );
/** /**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>ִ´<D6B4>. * @brief 저장할 데이타를 넣는다.
* @param [in] lpszKeyName : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Ű. "KEY" <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>. * @param [in] lpszKeyName : 저장할 데이타의 키. "KEY" 식의 내용을 넣는다.
* @param [in] lpszData : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ. "DATA" <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>. * @param [in] lpszData : 저장할 데이타. "DATA" 식의 내용을 넣는다.
*/ */
BOOL Set( LPCSTR lpszKeyName, LPCSTR lpszData ); BOOL Set( LPCSTR lpszKeyName, LPCSTR lpszData );
/** /**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ(DWORD)<29><> <20>ִ´<D6B4>. * @brief 저장할 데이타(DWORD)를 넣는다.
* @param [in] lpBuffer : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ. "KEY=DATA" <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>ִ´<D6B4>. * @param [in] lpBuffer : 저장할 데이타. "KEY=DATA" 식의 데이타를 넣는다.
* @param [in] dwValue : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ. (DWORD) * @param [in] dwValue : 저장할 데이타. (DWORD)
*/ */
BOOL Set( LPCSTR lpszKeyName, DWORD dwValue ); BOOL Set( LPCSTR lpszKeyName, DWORD dwValue );
/** /**
* @brief CPostIt class<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. (Ŭ<><C5AC><EFBFBD><EFBFBD> constructor<6F><72> <20≯<EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>) * @brief CPostIt class를 복사한다. (클래스 constructor에 이름 인자가 있기 때문에, 새 이름을 지정해야함)
* @param [in] pPostIt : Destination class * @param [in] pPostIt : Destination class
* @param [in] lpszKeyName : Destination class's new app-name * @param [in] lpszKeyName : Destination class's new app-name
*/ */

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#pragma warning(disable:4786) // character 255 <EFBFBD>Ѿ<EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD> #pragma warning(disable:4786) // character 255 넘어가는거 끄기
#include <windows.h> #include <windows.h>
#include <vector> #include <vector>

View File

@ -6,7 +6,7 @@
#endif #endif
#pragma warning(disable:4710) // not inlined #pragma warning(disable:4710) // not inlined
#pragma warning(disable:4786) // character 255 <EFBFBD>Ѿ<EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD> #pragma warning(disable:4786) // character 255 넘어가는거 끄기
#pragma warning(disable:4244) // type conversion possible lose of data #pragma warning(disable:4244) // type conversion possible lose of data
#include <windows.h> #include <windows.h>

View File

@ -64,9 +64,9 @@ extern void GetExceptionPathName(const char * sz_Name, std::string & OnlyFileN
extern void GetWorkingFolder(std::string & strFileName); extern void GetWorkingFolder(std::string & strFileName);
extern void StringLowers(char * pString); extern void StringLowers(char * pString);
extern void StringPath(std::string & rString); extern void StringPath(std::string & rString);
extern void StringPath(char * pString); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҹ<EFBFBD><D2B9>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, \<5C><> /<2F><> <20>ٲ۴<D9B2>. extern void StringPath(char * pString); // 모두 소문자로 만들고, \는 /로 바꾼다.
extern void StringPath(const char * c_szSrc, char * szDest); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҹ<EFBFBD><D2B9>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, \<5C><> /<2F><> <20>ٲ۴<D9B2>. extern void StringPath(const char * c_szSrc, char * szDest); // 모두 소문자로 만들고, \는 /로 바꾼다.
extern void StringPath(const char * c_szSrc, std::string & rString); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ҹ<EFBFBD><D2B9>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, \<5C><> /<2F><> <20>ٲ۴<D9B2>. extern void StringPath(const char * c_szSrc, std::string & rString); // 모두 소문자로 만들고, \는 /로 바꾼다.
extern void PrintAsciiData(const void* data, int bytes); extern void PrintAsciiData(const void* data, int bytes);
bool IsFile(const char* filename); bool IsFile(const char* filename);
bool IsGlobalFileName(const char * c_szFileName); bool IsGlobalFileName(const char * c_szFileName);

View File

@ -12,9 +12,9 @@ class CLZObject
typedef struct SHeader typedef struct SHeader
{ {
DWORD dwFourCC; DWORD dwFourCC;
DWORD dwEncryptSize; // <EFBFBD><EFBFBD>ȣȭ<EFBFBD><EFBFBD> ũ<><C5A9> DWORD dwEncryptSize; // 암호화된 크기
DWORD dwCompressedSize; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9> DWORD dwCompressedSize; // 압축된 데이터 크기
DWORD dwRealSize; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9> DWORD dwRealSize; // 실제 데이터 크기
} THeader; } THeader;
#pragma pack() #pragma pack()

View File

@ -269,7 +269,7 @@ class CGrannyLODController : public CGraphicBase
BOOL isModelInstance(); BOOL isModelInstance();
CGrannyModelInstance* GetModelInstance(); CGrannyModelInstance* GetModelInstance();
bool HaveBlendThing() { return 0 != GetModelInstance() ? GetModelInstance()->HaveBlendThing() : false; } // NOTE: GetModelInstance() == 0<EFBFBD><EFBFBD> <20><> Ŭ<><C5AC> ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(2012. 05. 07) bool HaveBlendThing() { return 0 != GetModelInstance() ? GetModelInstance()->HaveBlendThing() : false; } // NOTE: GetModelInstance() == 0일 때 클라 크래쉬나는 문제 수정(2012. 05. 07)
protected: protected:
void SetCurrentModelInstance(CGrannyModelInstance * pgrnModelInstance); void SetCurrentModelInstance(CGrannyModelInstance * pgrnModelInstance);

View File

@ -55,12 +55,12 @@ class CGrannyModelInstance : public CGraphicCollisionObject
void DeformNoSkin(const D3DXMATRIX * c_pWorldMatrix); void DeformNoSkin(const D3DXMATRIX * c_pWorldMatrix);
void Deform(const D3DXMATRIX * c_pWorldMatrix); void Deform(const D3DXMATRIX * c_pWorldMatrix);
// FIXME : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѱ<EFBFBD><D1B0><EFBFBD> 2<><32><EFBFBD><EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̱⿡ <20>̷<EFBFBD> // FIXME : 현재는 하드웨어의 한계로 2장의 텍스춰로 제한이 되어있는 상태이기에 이런
// <EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ű<EFBFBD><C5B0><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD> <20><><EFBFBD><EFBFBD>) + (ȿ<><C8BF><EFBFBD><EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD>) // 불안정한 아키텍춰가 가능하지만, 궁극적인 방향은 (모델 텍스춰 전부) + (효과용 텍스춰)
// <EFBFBD>̷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. - [levites] // 이런식의 자동 셋팅이 이뤄져야 되지 않나 생각합니다. - [levites]
// NOTE : <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> if<69><66><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ű<EFBFBD><C5B0> <20><><EFBFBD>ٴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD> <20>Լ<EFBFBD> <20><> <20><>ü<EFBFBD><C3BC> <20>и<EFBFBD> // NOTE : 내부에 if문을 포함 시키기 보다는 조금은 번거롭지만 이렇게 함수 콜 자체를 분리
// <EFBFBD><EFBFBD>Ű<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E9BFA1><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. - [levites] // 시키는 것이 퍼포먼스 적인 측면에서는 더 나은 것 같습니다. - [levites]
// NOTE : <EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OneTexture. ij<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> TwoTexture. // NOTE : 건물은 무조건 OneTexture. 캐릭터는 경우에 따라 TwoTexture.
void RenderWithOneTexture(); void RenderWithOneTexture();
void RenderWithTwoTexture(); void RenderWithTwoTexture();
void BlendRenderWithOneTexture(); void BlendRenderWithOneTexture();
@ -160,7 +160,7 @@ class CGrannyModelInstance : public CGraphicCollisionObject
// Granny Data // Granny Data
granny_model_instance * m_pgrnModelInstance; granny_model_instance * m_pgrnModelInstance;
//granny_world_pose * m_pgrnWorldPose; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //granny_world_pose * m_pgrnWorldPose; // 현재 월드 포즈 포인터
granny_control * m_pgrnCtrl; granny_control * m_pgrnCtrl;
granny_animation * m_pgrnAni; granny_animation * m_pgrnAni;
@ -182,7 +182,7 @@ class CGrannyModelInstance : public CGraphicCollisionObject
CGrannyMaterialPalette m_kMtrlPal; CGrannyMaterialPalette m_kMtrlPal;
// WORK // WORK
granny_world_pose* m_pgrnWorldPoseReal; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޸𸮴<DEB8> <20><><EFBFBD><20>Ҵ<EFBFBD> granny_world_pose* m_pgrnWorldPoseReal; // 실제 메모리는 여기에 할당
std::vector<granny_mesh_binding*> m_vct_pgrnMeshBinding; std::vector<granny_mesh_binding*> m_vct_pgrnMeshBinding;
// Dynamic Vertex Buffer // Dynamic Vertex Buffer

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#pragma warning(disable:4786) // character 255 <EFBFBD>Ѿ<EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD> #pragma warning(disable:4786) // character 255 넘어가는거 끄기
//#include <crtdbg.h> //#include <crtdbg.h>
#include <granny/granny.h> #include <granny/granny.h>

View File

@ -34,7 +34,7 @@ class CGraphicThingInstance : public CGraphicObjectInstance
void UpdateLODLevel(); void UpdateLODLevel();
void UpdateTime(); void UpdateTime();
void DeformAll(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> LOD <EFBFBD><EFBFBD><EFBFBD><EFBFBD> void DeformAll(); // 모든 LOD 디폼
bool LessRenderOrder(CGraphicThingInstance* pkThingInst); bool LessRenderOrder(CGraphicThingInstance* pkThingInst);

View File

@ -9,11 +9,11 @@
struct TGA_HEADER struct TGA_HEADER
{ {
char idLen; // 0 char idLen; // 0
char palType; // <EFBFBD>ķ<EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1, <20><><EFBFBD><EFBFBD> 0 char palType; // 파레트있으면 1, 없음 0
char imgType; // <EFBFBD>ķ<EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1, <20><><EFBFBD><EFBFBD> 2 char imgType; // 파레트있으면 1, 없음 2
WORD colorBegin; // 0 WORD colorBegin; // 0
WORD colorCount; // <EFBFBD>ķ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 256, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 WORD colorCount; // 파레트 있으면 256, 없음 0
char palEntrySize; // <EFBFBD>ķ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 24, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 char palEntrySize; // 파레트 있으면 24, 없음 0
WORD left; WORD left;
WORD top; WORD top;
WORD width; WORD width;

View File

@ -15,7 +15,7 @@ class CAttributeInstance
const char * GetDataFileName() const; const char * GetDataFileName() const;
// NOTE : Object <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // NOTE : Object 전용
void SetObjectPointer(CAttributeData * pAttributeData); void SetObjectPointer(CAttributeData * pAttributeData);
void RefreshObject(const D3DXMATRIX & c_rmatGlobal); void RefreshObject(const D3DXMATRIX & c_rmatGlobal);
CAttributeData * GetObjectPointer() const; CAttributeData * GetObjectPointer() const;

View File

@ -51,8 +51,8 @@ class CCamera
void SetResistance(float fResistance); void SetResistance(float fResistance);
private: private:
const CCamera & operator = (const CCamera &) ; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> const CCamera & operator = (const CCamera &) ; // 지원하지 않음
CCamera (const CCamera & ) ; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> CCamera (const CCamera & ) ; //지원하지 않음
// Camera Update // Camera Update
eCameraState m_eCameraState; eCameraState m_eCameraState;
@ -85,14 +85,14 @@ class CCamera
D3DXMATRIX m_matInverseView; D3DXMATRIX m_matInverseView;
D3DXMATRIX m_matBillboard; // Special matrix for billboarding effects D3DXMATRIX m_matBillboard; // Special matrix for billboarding effects
//<EFBFBD>߰<EFBFBD><EFBFBD><EFBFBD> //추가분
float m_fPitch; float m_fPitch;
float m_fRoll; float m_fRoll;
float m_fDistance; float m_fDistance;
// ī<EFBFBD>޶<EFBFBD> AI<41><49> <20><><EFBFBD><EFBFBD> Ray <EFBFBD><EFBFBD> // 카메라 AI를 위한 Ray
// ī<EFBFBD>޶<EFBFBD><EFBFBD><EFBFBD> <20>ѷ<EFBFBD><D1B7><EFBFBD> Ray // 카메라를 둘러싼 Ray
CRay m_kCameraBottomToTerrainRay; CRay m_kCameraBottomToTerrainRay;
CRay m_kCameraFrontToTerrainRay; CRay m_kCameraFrontToTerrainRay;
CRay m_kCameraBackToTerrainRay; CRay m_kCameraBackToTerrainRay;
@ -124,14 +124,14 @@ class CCamera
bool m_bDrag; bool m_bDrag;
// protected: // protected:
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 물리
D3DXVECTOR3 m_v3AngularAcceleration; D3DXVECTOR3 m_v3AngularAcceleration;
D3DXVECTOR3 m_v3AngularVelocity; D3DXVECTOR3 m_v3AngularVelocity;
float m_fResistance; float m_fResistance;
public: public:
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 물리
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
void SetAngularAcceleration(D3DXVECTOR3 v3AngularAcceleration) { m_v3AngularAcceleration = v3AngularAcceleration; } void SetAngularAcceleration(D3DXVECTOR3 v3AngularAcceleration) { m_v3AngularAcceleration = v3AngularAcceleration; }
@ -185,7 +185,7 @@ class CCamera
float GetRoll() const { return m_fRoll; } float GetRoll() const { return m_fRoll; }
float GetDistance() const { return m_fDistance; } float GetDistance() const { return m_fDistance; }
void Pitch(const float fPitchDelta); //<EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ´<D6B4>. void Pitch(const float fPitchDelta); //돌아가는 각도를 넣는다.
void Roll(const float fRollDelta); void Roll(const float fRollDelta);
void SetDistance(const float fdistance); void SetDistance(const float fdistance);
@ -193,35 +193,35 @@ class CCamera
// camera movement // camera movement
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// <EFBFBD><EFBFBD><EFBFBD>״<EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>... ī<>޶<EFBFBD> <20><>ġ<EFBFBD><C4A1> Ÿ<><C5B8> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD>. // 말그대로 이동... 카메라 위치와 타겟 위치가 모두 달라진다.
void Move(const D3DXVECTOR3 & v3Displacement); void Move(const D3DXVECTOR3 & v3Displacement);
// <EFBFBD><EFBFBD>.. ī<EFBFBD>޶<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>̵<EFBFBD>.. Ÿ<><C5B8> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD>... // .. 카메라 위치만 이동.. 타겟 위치는 고정...
void Zoom(float fRatio); void Zoom(float fRatio);
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>.. Ÿ<><C5B8><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20>޶<EFBFBD><DEB6><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>... // 뷰 방향으로 이동.. 타겟위치가 달라지므로 줌과는 다르다...
void MoveAlongView(float fDistance); void MoveAlongView(float fDistance);
// ī<EFBFBD>޶<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>.. // 카메라 옆 방향으로 이동..
void MoveAlongCross(float fDistance); void MoveAlongCross(float fDistance);
// ī<EFBFBD>޶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>... // 카메라 업벡터 방향으로 이동...
void MoveAlongUp(float fDistance); void MoveAlongUp(float fDistance);
// ī<EFBFBD>޶<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>... MoveAlongCross<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.. // 카메라 옆 방향으로 이동... MoveAlongCross과 동일..
void MoveLateral(float fDistance); void MoveLateral(float fDistance);
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XY<58><59><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>.. // 뷰 방향의 Z 성분을 무시한 XY평면 방향으로 이동..
void MoveFront(float fDistance); void MoveFront(float fDistance);
// Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD> <20>̵<EFBFBD>... // Z방향(연직 방향)으로 이동...
void MoveVertical(float fDistance); void MoveVertical(float fDistance);
// //ī<EFBFBD>޶<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20>Ӹ<EFBFBD><D3B8><EFBFBD> <20><><EFBFBD><EFBFBD>. Ÿ<><C5B8><EFBFBD><EFBFBD> <20>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? // //카메라 위치는 고정시키고 머리만 든다. 타겟이 달라지겠죠?
// //ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> "<22><>(Degree)"<EFBFBD><EFBFBD> <20>ִ´<D6B4>. // //회전각을 라디안이 아닌 "도(Degree)"로 넣는다.
// void RotateUpper(float fDegree); // void RotateUpper(float fDegree);
// Ÿ<EFBFBD><EFBFBD> <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. Eterlib<EFBFBD><EFBFBD> SetAroundCamera<EFBFBD><EFBFBD> <20><><EFBFBD>ɰ<EFBFBD> <20><><EFBFBD><EFBFBD>... // 타겟 중심으로 돈다. Eterlib SetAroundCamera의 기능과 유사...
// fPitchDegree<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(0<><30>)<29>κ<EFBFBD><CEBA><EFBFBD> <20>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>... // fPitchDegree는 수평(0도)로부터 아랫쪽으로 꺽어지는 각도...
// fRollDegree<EFBFBD><EFBFBD> Ÿ<><C5B8> <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>... // fRollDegree는 타겟 중심으로 시계방향으로 도는 각도...
void RotateEyeAroundTarget(float fPitchDegree, float fRollDegree); void RotateEyeAroundTarget(float fPitchDegree, float fRollDegree);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? // 도는 중심점을 따로 지정 그 점을 중심으로 돈다. 타겟 점도 달라지겠죠?
void RotateEyeAroundPoint(const D3DXVECTOR3 & v3Point, float fPitchDegree, float fRollDegree); void RotateEyeAroundPoint(const D3DXVECTOR3 & v3Point, float fPitchDegree, float fRollDegree);
protected: protected:

View File

@ -27,10 +27,10 @@ class CColorTransitionHelper
bool isTransitionStarted() { return m_bTransitionStarted; } bool isTransitionStarted() { return m_bTransitionStarted; }
private: private:
D3DCOLOR m_dwCurColor; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> D3DCOLOR m_dwCurColor; // 현재 색
DWORD m_dwStartTime; // <EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ð<EFBFBD> DWORD m_dwStartTime; // 바뀌기 시작하는 시간
DWORD m_dwDuration; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ȿ<EFBFBD> <20>ٲ<EFBFBD><D9B2>°<EFBFBD>? DWORD m_dwDuration; // 얼마 동안에 바뀌는가?
bool m_bTransitionStarted; bool m_bTransitionStarted;

View File

@ -42,15 +42,15 @@ protected:
D3DXPLANE m_v4FrontPlane; D3DXPLANE m_v4FrontPlane;
D3DXPLANE m_v4BackPlane; D3DXPLANE m_v4BackPlane;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 개수
DWORD m_dwVertexCount; DWORD m_dwVertexCount;
DWORD m_dwPrimitiveCount; DWORD m_dwPrimitiveCount;
// <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD> <20>δ콺 <20><><EFBFBD><EFBFBD> // 버택스 버퍼와 인댁스 버퍼
// CGraphicVertexBuffer m_GraphicVertexBuffer; // CGraphicVertexBuffer m_GraphicVertexBuffer;
// CGraphicIndexBuffer m_GraphicIndexBuffer; // CGraphicIndexBuffer m_GraphicIndexBuffer;
// <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD> <20><><EFBFBD>ۿ<EFBFBD> <20>δ콺 <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ſ<EFBFBD> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DrawIndexedPrimitiveUP<EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8><EFBFBD>. // 버택스 버퍼와 인댁스 버퍼 대신에 배열 만들고 DrawIndexedPrimitiveUP로 그리자.
typedef struct typedef struct
{ {
WORD m_wMinIndex; WORD m_wMinIndex;

View File

@ -230,7 +230,7 @@ class CGraphicBase
void UpdatePipeLineMatrix(); void UpdatePipeLineMatrix();
protected: protected:
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> D3DX Mesh <EFBFBD><EFBFBD> (<28>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ǥ<><C7A5>Ȱ <20><> <20><><EFBFBD><EFBFBD>) // 각종 D3DX Mesh 들 (컬루젼 데이터 등을 표시활 때 쓴다)
static LPD3DXMESH ms_lpSphereMesh; static LPD3DXMESH ms_lpSphereMesh;
static LPD3DXMESH ms_lpCylinderMesh; static LPD3DXMESH ms_lpCylinderMesh;
@ -274,7 +274,7 @@ class CGraphicBase
static float ms_fNearY; static float ms_fNearY;
static float ms_fFarY; static float ms_fFarY;
// 2004.11.18.myevan.DynamicVertexBuffer<EFBFBD><EFBFBD> <20><>ü // 2004.11.18.myevan.DynamicVertexBuffer로 교체
/* /*
static std::vector<TIndex> ms_lineIdxVector; static std::vector<TIndex> ms_lineIdxVector;
static std::vector<TIndex> ms_lineTriIdxVector; static std::vector<TIndex> ms_lineTriIdxVector;
@ -292,7 +292,7 @@ class CGraphicBase
static DWORD ms_dwFlashingEndTime; static DWORD ms_dwFlashingEndTime;
static D3DXCOLOR ms_FlashingColor; static D3DXCOLOR ms_FlashingColor;
// Terrain picking<EFBFBD><EFBFBD> Ray... CCamera <EFBFBD>̿<EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ray<61><79> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD>... // Terrain picking Ray... CCamera 이용하는 버전.. 기존의 Ray와 통합 필요...
static CRay ms_Ray; static CRay ms_Ray;
// //

View File

@ -18,8 +18,8 @@ class CGraphicCollisionObject : public CGraphicBase
bool IntersectSphere(const D3DXVECTOR3 & c_rv3Position, float fRadius, const D3DXVECTOR3 & c_rv3RayOriginal, const D3DXVECTOR3 & c_rv3RayDirection); bool IntersectSphere(const D3DXVECTOR3 & c_rv3Position, float fRadius, const D3DXVECTOR3 & c_rv3RayOriginal, const D3DXVECTOR3 & c_rv3RayDirection);
bool IntersectCylinder(const D3DXVECTOR3 & c_rv3Position, float fRadius, float fHeight, const D3DXVECTOR3 & c_rv3RayOriginal, const D3DXVECTOR3 & c_rv3RayDirection); bool IntersectCylinder(const D3DXVECTOR3 & c_rv3Position, float fRadius, float fHeight, const D3DXVECTOR3 & c_rv3RayOriginal, const D3DXVECTOR3 & c_rv3RayDirection);
// NOTE : ms_vtPickRayOrig<EFBFBD><EFBFBD> ms_vtPickRayDir<EFBFBD><EFBFBD> CGraphicBGase<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִµ<D6B4> // NOTE : ms_vtPickRayOrig ms_vtPickRayDir CGraphicBGase가 가지고 있는데
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ°<D6B4>? Customize<EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>? - [levites] // 굳이 인자로 넣어줘야 하는 이유가 있는가? Customize를 위해서? - [levites]
bool IntersectSphere(const D3DXVECTOR3 & c_rv3Position, float fRadius); bool IntersectSphere(const D3DXVECTOR3 & c_rv3Position, float fRadius);
bool IntersectCylinder(const D3DXVECTOR3 & c_rv3Position, float fRadius, float fHeight); bool IntersectCylinder(const D3DXVECTOR3 & c_rv3Position, float fRadius, float fHeight);
}; };

View File

@ -23,8 +23,8 @@ public:
CREATE_GET_DEVICE_CAPS2 = (1 << 3), CREATE_GET_DEVICE_CAPS2 = (1 << 3),
CREATE_DEVICE = (1 << 4), CREATE_DEVICE = (1 << 4),
CREATE_REFRESHRATE = (1 << 5), CREATE_REFRESHRATE = (1 << 5),
CREATE_ENUM = (1 << 6), // 2003. 01. 09. myevan <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> CREATE_ENUM = (1 << 6), // 2003. 01. 09. myevan 모드 리스트 얻기 실패
CREATE_DETECT = (1 << 7), // 2003. 01. 09. myevan <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> CREATE_DETECT = (1 << 7), // 2003. 01. 09. myevan 모드 선택 실패
CREATE_NO_TNL = (1 << 8), CREATE_NO_TNL = (1 << 8),
CREATE_BAD_DRIVER = (1 << 9), CREATE_BAD_DRIVER = (1 << 9),
CREATE_FORMAT = (1 << 10), CREATE_FORMAT = (1 << 10),

View File

@ -93,8 +93,8 @@ class CLightManager : public CGraphicBase, public CLightBase, public CSingleton<
void Initialize(); void Initialize();
// NOTE : FlushLight<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // NOTE : FlushLight후 렌더링
// <EFBFBD><EFBFBD> <20><> <20>ݵ<EFBFBD><DDB5><EFBFBD> RestoreLight<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD> <20>Ѵ<EFBFBD>. // 그 후 반드시 RestoreLight를 해줘야만 한다.
void Update(); void Update();
void FlushLight(); void FlushLight();
void RestoreLight(); void RestoreLight();

View File

@ -81,7 +81,7 @@ public:
CLensFlare(); CLensFlare();
virtual ~CLensFlare(); virtual ~CLensFlare();
void Compute(const D3DXVECTOR3 & c_rv3LightDirection); // D3DTS_VIEW<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ī<>޶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>, ī<>޶<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڿ<EFBFBD> <20>ؾ<EFBFBD> <20><>. void Compute(const D3DXVECTOR3 & c_rv3LightDirection); // D3DTS_VIEW로 부터 카메라 방향을 얻어오므로, 카메라 설정 뒤에 해야 함.
void DrawBeforeFlare(); void DrawBeforeFlare();
void DrawAfterFlare(); void DrawAfterFlare();

View File

@ -26,7 +26,7 @@ class CResourceManager : public CSingleton<CResourceManager>
CResource * GetResourcePointer(const char * c_szFileName); CResource * GetResourcePointer(const char * c_szFileName);
CResource * GetTypeResourcePointer(const char * c_szFileName, int iType=-1); CResource * GetTypeResourcePointer(const char * c_szFileName, int iType=-1);
// <EFBFBD>߰<EFBFBD> // 추가
bool isResourcePointerData(DWORD dwFileCRC); bool isResourcePointerData(DWORD dwFileCRC);
void RegisterResourceNewFunctionPointer(const char* c_szFileExt, CResource* (*pResNewFunc)(const char* c_szFileName)); void RegisterResourceNewFunctionPointer(const char* c_szFileExt, CResource* (*pResNewFunc)(const char* c_szFileName));
@ -63,7 +63,7 @@ class CResourceManager : public CSingleton<CResourceManager>
TResourceNewFunctionPointerMap m_pResNewFuncMap; TResourceNewFunctionPointerMap m_pResNewFuncMap;
TResourceNewFunctionByTypePointerMap m_pResNewFuncByTypeMap; TResourceNewFunctionByTypePointerMap m_pResNewFuncByTypeMap;
TResourceDeletingMap m_ResourceDeletingMap; TResourceDeletingMap m_ResourceDeletingMap;
TResourceRequestMap m_RequestMap; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD> <20><>û<EFBFBD><C3BB> <20><><EFBFBD><EFBFBD>Ʈ TResourceRequestMap m_RequestMap; // 쓰레드로 로딩 요청한 리스트
TResourceRequestMap m_WaitingMap; TResourceRequestMap m_WaitingMap;
TResourceRefDecreaseWaitingMap m_pResRefDecreaseWaitingMap; TResourceRefDecreaseWaitingMap m_pResRefDecreaseWaitingMap;

View File

@ -63,7 +63,7 @@ public:
private: private:
TPDTVertex m_Vertex[4]; TPDTVertex m_Vertex[4];
TIndex m_Indices[4]; // <EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>... TIndex m_Indices[4]; // 인덱스 버퍼...
CColorTransitionHelper m_Helper[4]; CColorTransitionHelper m_Helper[4];
}; };
@ -99,7 +99,7 @@ protected:
protected: protected:
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// Ÿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 타입 정의
typedef std::vector<CSkyObjectQuad> TSkyObjectQuadVector; typedef std::vector<CSkyObjectQuad> TSkyObjectQuadVector;
typedef TSkyObjectQuadVector::iterator TSkyObjectQuadIterator; typedef TSkyObjectQuadVector::iterator TSkyObjectQuadIterator;
@ -118,8 +118,8 @@ protected:
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>... // 구름...
TSkyObjectFace m_FaceCloud; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>... TSkyObjectFace m_FaceCloud; // 구름 일단 한장...
D3DXMATRIX m_matWorldCloud, m_matTranslationCloud, m_matTextureCloud; D3DXMATRIX m_matWorldCloud, m_matTranslationCloud, m_matTextureCloud;
D3DXVECTOR3 m_v3PositionCloud; D3DXVECTOR3 m_v3PositionCloud;
float m_fCloudScaleX, m_fCloudScaleY, m_fCloudHeight; float m_fCloudScaleX, m_fCloudScaleY, m_fCloudHeight;
@ -129,7 +129,7 @@ protected:
DWORD m_dwlastTime; DWORD m_dwlastTime;
// <EFBFBD><EFBFBD>ī<EFBFBD><EFBFBD> <20>ڽ<EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD>... // 스카이 박스 이미지...
TGraphicImageInstanceMap m_GraphicImageInstanceMap; TGraphicImageInstanceMap m_GraphicImageInstanceMap;
// Transform... // Transform...
@ -137,7 +137,7 @@ protected:
D3DXVECTOR3 m_v3Position; D3DXVECTOR3 m_v3Position;
float m_fScaleX, m_fScaleY, m_fScaleZ; float m_fScaleX, m_fScaleY, m_fScaleZ;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>... <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>.. // 랜더링 관련... 임시 변수..
unsigned char m_ucRenderMode; unsigned char m_ucRenderMode;
std::string m_strCurTime; std::string m_strCurTime;

View File

@ -8,7 +8,7 @@
#define _WIN32_DCOM #define _WIN32_DCOM
#pragma warning(disable:4710) // not inlined #pragma warning(disable:4710) // not inlined
#pragma warning(disable:4786) // character 255 <EFBFBD>Ѿ<EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD> #pragma warning(disable:4786) // character 255 넘어가는거 끄기
#pragma warning(disable:4244) // type conversion possible lose of data #pragma warning(disable:4244) // type conversion possible lose of data
#pragma warning(disable:4018) #pragma warning(disable:4018)

View File

@ -10,8 +10,8 @@ class CThread
protected: protected:
static UINT CALLBACK EntryPoint(void * pThis); static UINT CALLBACK EntryPoint(void * pThis);
virtual UINT Setup() = 0; // Execute<EFBFBD><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>. virtual UINT Setup() = 0; // Execute이 불려지기 전에 불려진다.
virtual UINT Execute(void * arg) = 0; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1> <20><> virtual UINT Execute(void * arg) = 0; // 실제 쓰레드가 하는 일이 들어가는 곳
UINT Run(void * arg); UINT Run(void * arg);

View File

@ -55,30 +55,30 @@ namespace script
~Group(); ~Group();
public: public:
/** <EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ <20>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. /** 스트링으로 부터 스크립트 그룹을 만든다.
* *
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> GetError <EFBFBD>޼ҵ<EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD>. * 실패하면 GetError 메소드로 확인할 수 있다.
* *
* @param stSource <EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. * @param stSource 이 스트링으로 부터 그룹이 만들어 진다.
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> false * @return 성공시 true, 실패하면 false
*/ */
bool Create(const std::string & stSource); bool Create(const std::string & stSource);
/** <EFBFBD><EFBFBD><EFBFBD>ɾ <20>޴<EFBFBD> <20>޼ҵ<DEBC> /** 명령어를 받는 메소드
* *
* @param cmd <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ü<EFBFBD><C3BC> <20><><EFBFBD>ɾ <20><><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>. * @param cmd 성공시에 이 구조체로 명령어가 복사 된다.
* @return <EFBFBD><EFBFBD><EFBFBD>ɾ <20><><EFBFBD><EFBFBD> <20>ִٸ<D6B4> true, <EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD> false * @return 명령어가 남아 있다면 true, 없다면 false
*/ */
bool GetCmd(TCmd & cmd); bool GetCmd(TCmd & cmd);
/* /*
<EFBFBD><EFBFBD><EFBFBD>ɾ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. 명령어를 가져오되 꺼내지는 않는다.
*/ */
bool ReadCmd(TCmd & cmd); bool ReadCmd(TCmd & cmd);
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޴<EFBFBD> <20>޼ҵ<DEBC> /** 에러를 출력 받는 메소드
* *
* @return stError <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>. * @return stError 이 곳으로 에러가 출력 된다.
*/ */
std::string & GetError(); std::string & GetError();

View File

@ -134,7 +134,7 @@ class CEterPack
bool EncryptIndexFile(); bool EncryptIndexFile();
bool DecryptIndexFile(); bool DecryptIndexFile();
DWORD DeleteUnreferencedData(); // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>. DWORD DeleteUnreferencedData(); // 몇개가 삭제 되었는지 리턴 한다.
bool GetNames(std::vector<std::string>* retNames); bool GetNames(std::vector<std::string>* retNames);
@ -177,7 +177,7 @@ class CEterPack
std::unordered_map<DWORD, DWORD> m_map_indexRefCount; std::unordered_map<DWORD, DWORD> m_map_indexRefCount;
TDataPositionMap m_DataPositionMap; TDataPositionMap m_DataPositionMap;
TFreeIndexList m_FreeIndexList[FREE_INDEX_MAX_SIZE + 1]; // MAX <EFBFBD><EFBFBD> <20><EFBFBD><EFBCBC> <20>ϹǷ<CFB9> + 1 ũ<>⸸ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. TFreeIndexList m_FreeIndexList[FREE_INDEX_MAX_SIZE + 1]; // MAX 도 억세스 하므로 + 1 크기만큼 만든다.
std::string m_stDataFileName; std::string m_stDataFileName;
std::string m_stPathName; std::string m_stPathName;
@ -193,8 +193,8 @@ class CEterPack
//private: //private:
// bool m_bIsDataLoaded; // bool m_bIsDataLoaded;
// // <EFBFBD>׳<EFBFBD> time_t<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, 32bit time_t<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, // // 그냥 time_t를 쓰면, 32bit time_t를 사용하는 소스에서는,
// // CEterPack<EFBFBD><EFBFBD> size<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> size - 4<EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD> <20><> <20>ִ<EFBFBD>. // // CEterPack size를 실제 size - 4로 인식하기 때문에 문제가 발생할 수 있다.
// __time64_t m_tLastAccessTime; // __time64_t m_tLastAccessTime;
//public: //public:
// __time64_t GetLastAccessTime() { return m_tLastAccessTime; } // __time64_t GetLastAccessTime() { return m_tLastAccessTime; }

View File

@ -60,12 +60,12 @@ class CEterPackManager : public CSingleton<CEterPackManager>
void RetrieveHybridCryptPackKeys( const BYTE* pStream ); void RetrieveHybridCryptPackKeys( const BYTE* pStream );
void RetrieveHybridCryptPackSDB( const BYTE* pStream ); void RetrieveHybridCryptPackSDB( const BYTE* pStream );
// <EFBFBD>޸𸮿<EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20>ѵ<EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD> <20>͵<EFBFBD> <20><><EFBFBD><EFBFBD>. // 메모리에 매핑된 팩들 가운데, 정리해야할 것들 정리.
public: public:
void ArrangeMemoryMappedPack(); void ArrangeMemoryMappedPack();
protected: protected:
int ConvertFileName(const char * c_szFileName, std::string & rstrFileName); // StringPath std::string <EFBFBD><EFBFBD><EFBFBD><EFBFBD> int ConvertFileName(const char * c_szFileName, std::string & rstrFileName); // StringPath std::string 버전
bool CompareName(const char * c_szDirectoryName, DWORD iLength, const char * c_szFileName); bool CompareName(const char * c_szDirectoryName, DWORD iLength, const char * c_szFileName);
CEterPack* FindPack(const char* c_szPathName); CEterPack* FindPack(const char* c_szPathName);

View File

@ -24,7 +24,7 @@ namespace UI
SLOT_STATE_LOCK = (1 << 0), SLOT_STATE_LOCK = (1 << 0),
SLOT_STATE_CANT_USE = (1 << 1), SLOT_STATE_CANT_USE = (1 << 1),
SLOT_STATE_DISABLE = (1 << 2), SLOT_STATE_DISABLE = (1 << 2),
SLOT_STATE_ALWAYS_RENDER_COVER = (1 << 3), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Cover <EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD> <20><><EFBFBD>Կ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴµ<CFB4>, <20><> flag<61><67> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>̾ Ŀ<><C4BF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SLOT_STATE_ALWAYS_RENDER_COVER = (1 << 3), // 현재 Cover 버튼은 슬롯에 무언가 들어와 있을 때에만 렌더링 하는데, 이 flag가 있으면 빈 슬롯이어도 커버 렌더링
}; };
class CSlotWindow : public CWindow class CSlotWindow : public CWindow
@ -44,9 +44,9 @@ namespace UI
{ {
DWORD dwState; DWORD dwState;
DWORD dwSlotNumber; DWORD dwSlotNumber;
DWORD dwCenterSlotNumber; // NOTE : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ū <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ <20><>ȣ DWORD dwCenterSlotNumber; // NOTE : 사이즈가 큰 아이템의 경우 아이템의 실제 위치 번호
DWORD dwItemIndex; // NOTE : <EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> Item<65>̶<EFBFBD><CCB6><EFBFBD> <20>ܾ<EFBFBD><DCBE><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ƴ<EFBFBD>, DWORD dwItemIndex; // NOTE : 여기서 사용되는 Item이라는 단어는 좁은 개념의 것이 아닌,
BOOL isItem; // "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>빰"<22>̶<EFBFBD><CCB6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? - [levites] BOOL isItem; // "슬롯의 내용물"이라는 포괄적인 개념어. 더 좋은 것이 있을까? - [levites]
// CoolTime // CoolTime
float fCoolTime; float fCoolTime;

View File

@ -28,16 +28,16 @@ namespace UI
enum EFlags enum EFlags
{ {
FLAG_MOVABLE = (1 << 0), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> â FLAG_MOVABLE = (1 << 0), // 움직일 수 있는 창
FLAG_LIMIT = (1 << 1), // â<EFBFBD><EFBFBD> ȭ<><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> <20><><EFBFBD><EFBFBD> FLAG_LIMIT = (1 << 1), // 창이 화면을 벗어나지 않음
FLAG_SNAP = (1 << 2), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20>ִ<EFBFBD> â FLAG_SNAP = (1 << 2), // 스냅 될 수 있는 창
FLAG_DRAGABLE = (1 << 3), FLAG_DRAGABLE = (1 << 3),
FLAG_ATTACH = (1 << 4), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD><CEB8><EFBFBD> <20>پ<EFBFBD> <20>ִ<EFBFBD> â (For Drag / ex. ScriptWindow) FLAG_ATTACH = (1 << 4), // 완전히 부모에 붙어 있는 창 (For Drag / ex. ScriptWindow)
FLAG_RESTRICT_X = (1 << 5), // <EFBFBD>¿<EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> FLAG_RESTRICT_X = (1 << 5), // 좌우 이동 제한
FLAG_RESTRICT_Y = (1 << 6), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> FLAG_RESTRICT_Y = (1 << 6), // 상하 이동 제한
FLAG_NOT_CAPTURE = (1 << 7), FLAG_NOT_CAPTURE = (1 << 7),
FLAG_FLOAT = (1 << 8), // <EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD>־ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20>Ǵ<EFBFBD> â FLAG_FLOAT = (1 << 8), // 공중에 떠있어서 순서 재배치가 되는 창
FLAG_NOT_PICK = (1 << 9), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Pick<63><6B><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> â FLAG_NOT_PICK = (1 << 9), // 마우스에 의해 Pick되지 않는 창
FLAG_IGNORE_SIZE = (1 << 10), FLAG_IGNORE_SIZE = (1 << 10),
FLAG_RTL = (1 << 11), // Right-to-left FLAG_RTL = (1 << 11), // Right-to-left
}; };
@ -91,8 +91,8 @@ namespace UI
bool IsIn(long x, long y); bool IsIn(long x, long y);
bool IsIn(); bool IsIn();
CWindow * PickWindow(long x, long y); CWindow * PickWindow(long x, long y);
CWindow * PickTopWindow(long x, long y); // NOTE : Children<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CWindow * PickTopWindow(long x, long y); // NOTE : Children으로 내려가지 않고 상위에서만
// üũ <20>ϴ<EFBFBD> Ưȭ<C6AF><C8AD> <20>Լ<EFBFBD> // 체크 하는 특화된 함수
void __RemoveReserveChildren(); void __RemoveReserveChildren();
@ -166,10 +166,10 @@ namespace UI
EHorizontalAlign m_HorizontalAlign; EHorizontalAlign m_HorizontalAlign;
EVerticalAlign m_VerticalAlign; EVerticalAlign m_VerticalAlign;
long m_x, m_y; // X,Y <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ long m_x, m_y; // X,Y 상대좌표
long m_lWidth, m_lHeight; // ũ<EFBFBD><EFBFBD> long m_lWidth, m_lHeight; // 크기
RECT m_rect; // Global <EFBFBD><EFBFBD>ǥ RECT m_rect; // Global 좌표
RECT m_limitBiasRect; // limit bias <EFBFBD><EFBFBD> RECT m_limitBiasRect; // limit bias
bool m_bMovable; bool m_bMovable;
bool m_bShow; bool m_bShow;

View File

@ -2,8 +2,8 @@
// class CActorInstance // class CActorInstance
// Note : ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Lighting, Local Point Light, Weapon Trace <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȿ<><C8BF><EFBFBD><EFBFBD> <20>޺<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ, // Note : 캐릭터의 Lighting, Local Point Light, Weapon Trace 등의 효과와 콤보 데이타, 사운드 데이타,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD>, <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>̴<EFBFBD>. // 모션 데이타 들을 추상적, 총체적으로 관리하는 개별 매니저가 될 것이다.
#include "FlyTarget.h" #include "FlyTarget.h"
#include "RaceData.h" #include "RaceData.h"
@ -64,7 +64,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
virtual void OnChangeShape() = 0; virtual void OnChangeShape() = 0;
}; };
// 2004.07.05.myevan.<EFBFBD>ý<EFBFBD>ź<EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ذ<EFBFBD> // 2004.07.05.myevan.궁신탄영 맵에 끼이는 문제해결
private: private:
static IBackground& GetBackground(); static IBackground& GetBackground();
@ -217,7 +217,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
CActorInstance(); CActorInstance();
virtual ~CActorInstance(); virtual ~CActorInstance();
// 20041201.myevan.<EFBFBD>ν<EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> // 20041201.myevan.인스턴스베이스용 함수
void INSTANCEBASE_Transform(); void INSTANCEBASE_Transform();
void INSTANCEBASE_Deform(); void INSTANCEBASE_Deform();
@ -294,13 +294,13 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////
// Motion Queueing System // Motion Queueing System
void SetMotionMode(int iMotionMode); // FIXME : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰԲ<CFB0> <20>Ѵ<EFBFBD>. void SetMotionMode(int iMotionMode); // FIXME : 모드의 시간차 적용이 가능하게끔 한다.
int GetMotionMode(); int GetMotionMode();
void SetLoopMotion(DWORD dwMotion, float fBlendTime = 0.1f, float fSpeedRatio=1.0f); void SetLoopMotion(DWORD dwMotion, float fBlendTime = 0.1f, float fSpeedRatio=1.0f);
bool InterceptOnceMotion(DWORD dwMotion, float fBlendTime = 0.1f, UINT uSkill=0, float fSpeedRatio=1.0f); bool InterceptOnceMotion(DWORD dwMotion, float fBlendTime = 0.1f, UINT uSkill=0, float fSpeedRatio=1.0f);
bool InterceptLoopMotion(DWORD dwMotion, float fBlendTime = 0.1f); bool InterceptLoopMotion(DWORD dwMotion, float fBlendTime = 0.1f);
bool PushOnceMotion(DWORD dwMotion, float fBlendTime = 0.1f, float fSpeedRatio=1.0f); // FIXME : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰԲ<CFB0> <20>Ѵ<EFBFBD>. bool PushOnceMotion(DWORD dwMotion, float fBlendTime = 0.1f, float fSpeedRatio=1.0f); // FIXME : 모드의 시간차 적용이 가능하게끔 한다.
bool PushLoopMotion(DWORD dwMotion, float fBlendTime = 0.1f, float fSpeedRatio=1.0f); // FIXME : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰԲ<CFB0> <20>Ѵ<EFBFBD>. bool PushLoopMotion(DWORD dwMotion, float fBlendTime = 0.1f, float fSpeedRatio=1.0f); // FIXME : 모드의 시간차 적용이 가능하게끔 한다.
void SetMotionLoopCount(int iCount); void SetMotionLoopCount(int iCount);
bool IsPushing(); bool IsPushing();
@ -346,9 +346,9 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////
// Battle // Battle
// Input // Input
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ű<EFBFBD> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> <20>ִ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD> // 하위로 옮길 가능성이 있는 코드들
// <EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ܼ<EFBFBD><DCBC><EFBFBD> Showing Type<EFBFBD>̱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 네트웍 연동시 전투 관련은 플레이어를 제외하곤 단순히 Showing Type이기 때문에
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻簡 <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD>. // 조건 검사가 필요 없다.
void InputNormalAttackCommand(float fDirRot); // Process input - Only used by player's character void InputNormalAttackCommand(float fDirRot); // Process input - Only used by player's character
bool InputComboAttackCommand(float fDirRot); // Process input - Only used by player's character bool InputComboAttackCommand(float fDirRot); // Process input - Only used by player's character
@ -524,7 +524,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
void ClearFlyEventHandler(); void ClearFlyEventHandler();
void SetFlyEventHandler(IFlyEventHandler * pHandler); void SetFlyEventHandler(IFlyEventHandler * pHandler);
// 2004. 07. 07. [levites] - <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ذ<EFBFBD><D8B0><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> // 2004. 07. 07. [levites] - 스킬 사용중 타겟이 바뀌는 문제 해결을 위한 코드
bool CanChangeTarget(); bool CanChangeTarget();
protected: protected:
@ -567,7 +567,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
void CurrentMotionProcess(); void CurrentMotionProcess();
MOTION_KEY GetRandomMotionKey(MOTION_KEY dwMotionKey); MOTION_KEY GetRandomMotionKey(MOTION_KEY dwMotionKey);
float GetLastMotionTime(float fBlendTime); // NOTE : <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlendTime<EFBFBD><EFBFBD>ŭ<EFBFBD><EFBFBD> <20>մ<EFBFBD><D5B4><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD> float GetLastMotionTime(float fBlendTime); // NOTE : 자동으로 BlendTime만큼을 앞당긴 시간을 리턴
float GetMotionDuration(DWORD dwMotionKey); float GetMotionDuration(DWORD dwMotionKey);
bool InterceptMotion(EMotionPushType iMotionType, WORD wMotion, float fBlendTime = 0.1f, UINT uSkill=0, float fSpeedRatio=1.0f); bool InterceptMotion(EMotionPushType iMotionType, WORD wMotion, float fBlendTime = 0.1f, UINT uSkill=0, float fSpeedRatio=1.0f);
@ -637,31 +637,31 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
protected: protected:
float __GetAttackSpeed(); float __GetAttackSpeed();
DWORD __SetMotion(const SSetMotionData& c_rkSetMotData, DWORD dwRandMotKey=0); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> DWORD __SetMotion(const SSetMotionData& c_rkSetMotData, DWORD dwRandMotKey=0); // 모션 데이터 설정
void __ClearMotion(); void __ClearMotion();
bool __BindMotionData(DWORD dwMotionKey); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD>ε<EFBFBD> bool __BindMotionData(DWORD dwMotionKey); // 모션 데이터를 바인딩
void __ClearHittedActorInstanceMap(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> void __ClearHittedActorInstanceMap(); // 때려진 액터 인스턴스 맵을 지운다
UINT __GetMotionType(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> UINT __GetMotionType(); // 모션 타입 얻기
bool __IsNeedFlyTargetMotion(); // FlyTarget <EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? bool __IsNeedFlyTargetMotion(); // FlyTarget 이 필요한 모션인가?
bool __HasMotionFlyEvent(); // <EFBFBD><EFBFBD><EFBFBD>𰡸<EFBFBD> <20><><EFBFBD>°<EFBFBD>? bool __HasMotionFlyEvent(); // 무언가를 쏘는가?
bool __IsWaitMotion(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD>? bool __IsWaitMotion(); // 대기 모션 인가?
bool __IsMoveMotion(); // <EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD>? bool __IsMoveMotion(); // 이동 모션 인가?
bool __IsAttackMotion(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD>? bool __IsAttackMotion(); // 공격 모션 인가?
bool __IsComboAttackMotion(); // <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD>? bool __IsComboAttackMotion(); // 콤보 공격 모션 인가?
bool __IsDamageMotion(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? bool __IsDamageMotion(); // 데미지 모션인가?
bool __IsKnockDownMotion(); // <EFBFBD>˴ٿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? bool __IsKnockDownMotion(); // 넉다운 모션인가?
bool __IsDieMotion(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD>? bool __IsDieMotion(); // 사망 모션 인가?
bool __IsStandUpMotion(); // <EFBFBD>Ͼ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? bool __IsStandUpMotion(); // 일어서기 모션인가?
bool __IsMountingHorse(); bool __IsMountingHorse();
bool __CanAttack(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҽ<EFBFBD> <20>ִ°<D6B4>? bool __CanAttack(); // 공격 할수 있는가?
bool __CanNextComboAttack(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>? bool __CanNextComboAttack(); // 다음 콤보 어택이 가능한가?
bool __IsComboAttacking(); // <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? bool __IsComboAttacking(); // 콤보 공격중인가?
void __CancelComboAttack(); // <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> void __CancelComboAttack(); // 콤보 공격 취소
WORD __GetCurrentMotionIndex(); WORD __GetCurrentMotionIndex();
DWORD __GetCurrentMotionKey(); DWORD __GetCurrentMotionKey();
@ -683,9 +683,9 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
D3DXVECTOR3 __GetFlyTargetPosition(); D3DXVECTOR3 __GetFlyTargetPosition();
protected: protected:
void __DestroyWeaponTrace(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܻ<EFBFBD><DCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD> void __DestroyWeaponTrace(); // 무기 잔상을 제거한다
void __ShowWeaponTrace(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܻ<EFBFBD><DCBB><EFBFBD> <20><><EFBFBD>δ<EFBFBD> void __ShowWeaponTrace(); // 무기 잔상을 보인다
void __HideWeaponTrace(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܻ<EFBFBD><DCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> void __HideWeaponTrace(); // 무기 잔상을 감춘다
protected: protected:
// collision data // collision data
@ -705,7 +705,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
// For Collision Detection // For Collision Detection
TCollisionPointInstanceList m_BodyPointInstanceList; TCollisionPointInstanceList m_BodyPointInstanceList;
TCollisionPointInstanceList m_DefendingPointInstanceList; TCollisionPointInstanceList m_DefendingPointInstanceList;
SSplashArea m_kSplashArea; // TODO : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD> - [levites] SSplashArea m_kSplashArea; // TODO : 복수에 대한 고려를 해야한다 - [levites]
CAttributeInstance * m_pAttributeInstance; CAttributeInstance * m_pAttributeInstance;
///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////
@ -736,7 +736,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
float m_fInvisibleTime; float m_fInvisibleTime;
BOOL m_isHiding; BOOL m_isHiding;
// TODO : State<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // TODO : State로 통합 시킬 수 있는지 고려해 볼것
BOOL m_isResistFallen; BOOL m_isResistFallen;
BOOL m_isSleep; BOOL m_isSleep;
BOOL m_isFaint; BOOL m_isFaint;
@ -822,7 +822,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
void __InitializeRotationData(); void __InitializeRotationData();
void __InitializePositionData(); void __InitializePositionData();
public: // InstanceBase <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽ÷<D3BD> public public: // InstanceBase 통합전 임시로 public
IEventHandler* __GetEventHandlerPtr(); IEventHandler* __GetEventHandlerPtr();
IEventHandler& __GetEventHandlerRef(); IEventHandler& __GetEventHandlerRef();

View File

@ -157,7 +157,7 @@ class CArea
typedef std::vector<CDungeonBlock *> TDungeonBlockInstanceVector; typedef std::vector<CDungeonBlock *> TDungeonBlockInstanceVector;
typedef std::vector<TObjectInstance *> TObjectInstanceVector; typedef std::vector<TObjectInstance *> TObjectInstanceVector;
typedef std::vector<TAmbienceInstance *> TAmbienceInstanceVector; typedef std::vector<TAmbienceInstance *> TAmbienceInstanceVector;
typedef std::map<CGraphicThingInstance *, DWORD> TGraphicThingInstanceCRCMap; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD> by <20><><EFBFBD><EFBFBD> typedef std::map<CGraphicThingInstance *, DWORD> TGraphicThingInstanceCRCMap; // 최적화용 by 동현
typedef std::set<int> TShowingPortalIDSet; typedef std::set<int> TShowingPortalIDSet;
typedef struct SCRCWithNumber typedef struct SCRCWithNumber
@ -264,7 +264,7 @@ class CArea
protected: protected:
// Static Data // Static Data
TObjectDataVector m_ObjectDataVector; // Area <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> TObjectDataVector m_ObjectDataVector; // Area 상에 있는 오브젝트들
// Rendering Instances // Rendering Instances
TObjectInstanceVector m_ObjectInstanceVector; TObjectInstanceVector m_ObjectInstanceVector;
@ -280,7 +280,7 @@ class CArea
TCRCWithNumberVector m_kRenderedThingInstanceCRCWithNumberVector; TCRCWithNumberVector m_kRenderedThingInstanceCRCWithNumberVector;
TThingInstanceVector m_kRenderedGrapphicThingInstanceVector; TThingInstanceVector m_kRenderedGrapphicThingInstanceVector;
// <EFBFBD><EFBFBD>ǥ : <20>ɸ<EFBFBD><C9B8><EFBFBD> <20><> <20><>ü <20>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ... <EFBFBD>Ѵ<EFBFBD> 0~999 // 좌표 : 심리스 맵 전체 중에서의 좌표... 둘다 0~999
WORD m_wX; WORD m_wX;
WORD m_wY; WORD m_wY;

View File

@ -11,8 +11,8 @@ class CActorInstance;
class CFlyingInstance class CFlyingInstance
{ {
public: public:
// 2004. 3. 26. myevan. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD> <20>ʿ<EFBFBD>. <20><><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´ٸ<C2B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ӹ޾<D3B9> <20><><EFBFBD><EFBFBD><E9B5B5> <20><><EFBFBD><EFBFBD> // 2004. 3. 26. myevan. 적절한 네이밍이 필요. 게임에서 사용하지 않는다면 툴에서 툴 전용으로 상속받아 만들도록 하자
void Clear(); // Destroy<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> void Clear(); // Destroy와 같다
void SetDataPointer(CFlyingData * pData, const D3DXVECTOR3 & v3StartPosition); void SetDataPointer(CFlyingData * pData, const D3DXVECTOR3 & v3StartPosition);
void SetFlyTarget(const CFlyTarget & cr_Target); // Shot at Target void SetFlyTarget(const CFlyTarget & cr_Target); // Shot at Target
@ -56,7 +56,7 @@ public:
void SetOwner(IActorInstance * pOwner) { m_pOwner = pOwner; } void SetOwner(IActorInstance * pOwner) { m_pOwner = pOwner; }
void SetSkillIndex(DWORD dwIndex) { m_dwSkillIndex = dwIndex; } void SetSkillIndex(DWORD dwIndex) { m_dwSkillIndex = dwIndex; }
// FIXME : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. <20>ӽ÷<D3BD> <20><><EFBFBD><EFBFBD>.. - [levites] // FIXME : 툴에서 사용하고 있습니다. 임시로 위로.. - [levites]
void __Explode(bool bBomb=true); void __Explode(bool bBomb=true);
void __Bomb(); void __Bomb();
@ -67,7 +67,7 @@ protected:
void __SetDataPointer(CFlyingData * pData, const D3DXVECTOR3 & v3StartPosition); void __SetDataPointer(CFlyingData * pData, const D3DXVECTOR3 & v3StartPosition);
void __SetTargetDirection(const CFlyTarget& c_rkTarget); void __SetTargetDirection(const CFlyTarget& c_rkTarget);
void __SetTargetNormalizedDirection(const D3DXVECTOR3 & v3NormalizedDirection ); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> void __SetTargetNormalizedDirection(const D3DXVECTOR3 & v3NormalizedDirection ); // 시작 타겟 방향 설정
protected: protected:

View File

@ -6,10 +6,10 @@
// //
// CGameEventManager // CGameEventManager
// //
// Note : Game<EFBFBD>󿡼<EFBFBD> <20>Ͼ<CFBE><EEB3AA> <20><><EFBFBD><EFBFBD>, ȭ<><C8AD> <20><><EFBFBD>鸲, Range <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> Event // Note : Game상에서 일어나는 폭발, 화면 흔들림, Range 무기들의 움직임과 타격 등의 Event
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>. - [levites] // 를 종합적으로 관리하는 클래스. - [levites]
// //
// Note : <EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD> Cinematic Event <EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD>ϴ<EFBFBD> <20>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. 2004.07.19 - [levites] // Note : 게임상의 Cinematic Event 를 컨트롤하는 매니져로 사용한다. 2004.07.19 - [levites]
// //
class CGameEventManager : public CSingleton<CGameEventManager>, public CScreen class CGameEventManager : public CSingleton<CGameEventManager>, public CScreen

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
// 2004.07.05.myevan.<EFBFBD>ý<EFBFBD>ź<EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ذ<EFBFBD> // 2004.07.05.myevan.궁신탄영 맵에 끼이는 문제해결
class IBackground : public CSingleton<IBackground> class IBackground : public CSingleton<IBackground>
{ {
public: public:

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
// NOTE : Item<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. // NOTE : Item의 통합 관리 클래스다.
// Icon, Model (droped on ground), Game Data // Icon, Model (droped on ground), Game Data
#include "../eterLib/GrpSubImage.h" #include "../eterLib/GrpSubImage.h"
@ -22,18 +22,18 @@ class CItemData
enum EItemType enum EItemType
{ {
ITEM_TYPE_NONE, //0 ITEM_TYPE_NONE, //0
ITEM_TYPE_WEAPON, //1//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_WEAPON, //1//무기
ITEM_TYPE_ARMOR, //2//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_ARMOR, //2//갑옷
ITEM_TYPE_USE, //3//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ITEM_TYPE_USE, //3//아이템 사용
ITEM_TYPE_AUTOUSE, //4 ITEM_TYPE_AUTOUSE, //4
ITEM_TYPE_MATERIAL, //5 ITEM_TYPE_MATERIAL, //5
ITEM_TYPE_SPECIAL, //6 //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_SPECIAL, //6 //스페셜 아이템
ITEM_TYPE_TOOL, //7 ITEM_TYPE_TOOL, //7
ITEM_TYPE_LOTTERY, //8//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_LOTTERY, //8//복권
ITEM_TYPE_ELK, //9//<EFBFBD><EFBFBD> ITEM_TYPE_ELK, //9//
ITEM_TYPE_METIN, //10 ITEM_TYPE_METIN, //10
ITEM_TYPE_CONTAINER, //11 ITEM_TYPE_CONTAINER, //11
ITEM_TYPE_FISH, //12//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_FISH, //12//낚시
ITEM_TYPE_ROD, //13 ITEM_TYPE_ROD, //13
ITEM_TYPE_RESOURCE, //14 ITEM_TYPE_RESOURCE, //14
ITEM_TYPE_CAMPFIRE, //15 ITEM_TYPE_CAMPFIRE, //15
@ -41,21 +41,21 @@ class CItemData
ITEM_TYPE_SKILLBOOK, //17 ITEM_TYPE_SKILLBOOK, //17
ITEM_TYPE_QUEST, //18 ITEM_TYPE_QUEST, //18
ITEM_TYPE_POLYMORPH, //19 ITEM_TYPE_POLYMORPH, //19
ITEM_TYPE_TREASURE_BOX, //20//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_TREASURE_BOX, //20//보물상자
ITEM_TYPE_TREASURE_KEY, //21//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ITEM_TYPE_TREASURE_KEY, //21//보물상자 열쇠
ITEM_TYPE_SKILLFORGET, //22 ITEM_TYPE_SKILLFORGET, //22
ITEM_TYPE_GIFTBOX, //23 ITEM_TYPE_GIFTBOX, //23
ITEM_TYPE_PICK, //24 ITEM_TYPE_PICK, //24
ITEM_TYPE_HAIR, //25//<EFBFBD>Ӹ<EFBFBD> ITEM_TYPE_HAIR, //25//머리
ITEM_TYPE_TOTEM, //26//<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_TYPE_TOTEM, //26//토템
ITEM_TYPE_BLEND, //27//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20>ٴ<EFBFBD> <20> ITEM_TYPE_BLEND, //27//생성될때 랜덤하게 속성이 붙는 약물
ITEM_TYPE_COSTUME, //28//<EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (2011<31><31> 8<><38> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) ITEM_TYPE_COSTUME, //28//코스츔 아이템 (2011년 8월 추가된 코스츔 시스템용 아이템)
ITEM_TYPE_DS, //29 //<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> ITEM_TYPE_DS, //29 //용혼석
ITEM_TYPE_SPECIAL_DS, //30 // Ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȥ<EFBFBD><C8A5> (DS_SLOT<4F><54> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> UNIQUE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><>) ITEM_TYPE_SPECIAL_DS, //30 // 특수한 용혼석 (DS_SLOT에 착용하는 UNIQUE 아이템이라 생각하면 됨)
ITEM_TYPE_EXTRACT, //31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ITEM_TYPE_EXTRACT, //31 추출도구.
ITEM_TYPE_SECONDARY_COIN, //32 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ITEM_TYPE_SECONDARY_COIN, //32 명도전.
ITEM_TYPE_RING, //33 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>ũ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) ITEM_TYPE_RING, //33 반지 (유니크 슬롯이 아닌 순수 반지 슬롯)
ITEM_TYPE_BELT, //34 <EFBFBD><EFBFBD>Ʈ ITEM_TYPE_BELT, //34 벨트
ITEM_TYPE_MAX_NUM, ITEM_TYPE_MAX_NUM,
}; };
@ -63,7 +63,7 @@ class CItemData
enum EWeaponSubTypes enum EWeaponSubTypes
{ {
WEAPON_SWORD, WEAPON_SWORD,
WEAPON_DAGGER, //<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD> WEAPON_DAGGER, //이도류
WEAPON_BOW, WEAPON_BOW,
WEAPON_TWO_HANDED, WEAPON_TWO_HANDED,
WEAPON_BELL, WEAPON_BELL,
@ -100,8 +100,8 @@ class CItemData
enum ECostumeSubTypes enum ECostumeSubTypes
{ {
COSTUME_BODY, //0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(main look) COSTUME_BODY, //0 갑옷(main look)
COSTUME_HAIR, //1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) COSTUME_HAIR, //1 헤어(탈착가능)
COSTUME_NUM_TYPES, COSTUME_NUM_TYPES,
}; };
@ -136,8 +136,8 @@ class CItemData
USE_UNBIND, USE_UNBIND,
USE_TIME_CHARGE_PER, USE_TIME_CHARGE_PER,
USE_TIME_CHARGE_FIX, // 28 USE_TIME_CHARGE_FIX, // 28
USE_PUT_INTO_BELT_SOCKET, // 29 <EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> USE_PUT_INTO_BELT_SOCKET, // 29 벨트 소켓에 사용할 수 있는 아이템
USE_PUT_INTO_RING_SOCKET, // 30 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>ũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) USE_PUT_INTO_RING_SOCKET, // 30 반지 소켓에 사용할 수 있는 아이템 (유니크 반지 말고, 새로 추가된 반지 슬롯)
}; };
enum EDragonSoulSubType enum EDragonSoulSubType
@ -168,16 +168,16 @@ class CItemData
LIMIT_CON, LIMIT_CON,
LIMIT_PCBANG, LIMIT_PCBANG,
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ǽð<C7BD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> (socket0<74><30> <20>Ҹ<EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD>: unix_timestamp Ÿ<EFBFBD><EFBFBD>) /// 착용 여부와 상관 없이 실시간으로 시간 차감 (socket0에 소멸 시간이 박힘: unix_timestamp 타입)
LIMIT_REAL_TIME, LIMIT_REAL_TIME,
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ó<><C3B3> <20><><EFBFBD><EFBFBD><><C8A4> <20><><EFBFBD><EFBFBD>) <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Ÿ<≯<EFBFBD> <20><><EFBFBD><EFBFBD> /// 아이템을 맨 처음 사용(혹은 착용) 한 순간부터 리얼타임 타이머 시작
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> socket0<74><30> <20><><EFBFBD><EFBFBD>ɽð<C9BD>(<28>ʴ<EFBFBD><CAB4><EFBFBD>, 0<≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> limit value<75><65> <20><><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִٰ<D6B4> /// 최초 사용 전에는 socket0에 사용가능시간(초단위, 0이면 프로토의 limit value값 사용) 값이 쓰여있다가
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> socket1<74><31> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> socket0<EFBFBD><EFBFBD> unix_timestamp Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҹ<EFBFBD><D2B8>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD>. /// 아이템 사용시 socket1에 사용 횟수가 박히고 socket0 unix_timestamp 타입의 소멸시간이 박힘.
LIMIT_REAL_TIME_START_FIRST_USE, LIMIT_REAL_TIME_START_FIRST_USE,
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /// 아이템을 착용 중일 때만 사용 시간이 차감되는 아이템
/// socket0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20>ʴ<EFBFBD><CAB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> 0<≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> limit value<EFBFBD><EFBFBD><EFBFBD><EFBFBD> socket0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) /// socket0에 남은 시간이 초단위로 박힘. (아이템 최초 사용시 해당 값이 0이면 프로토의 limit value값을 socket0에 복사)
LIMIT_TIMER_BASED_ON_WEAR, LIMIT_TIMER_BASED_ON_WEAR,
LIMIT_MAX_NUM LIMIT_MAX_NUM
@ -185,41 +185,41 @@ class CItemData
enum EItemAntiFlag enum EItemAntiFlag
{ {
ITEM_ANTIFLAG_FEMALE = (1 << 0), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_FEMALE = (1 << 0), // 여성 사용 불가
ITEM_ANTIFLAG_MALE = (1 << 1), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_MALE = (1 << 1), // 남성 사용 불가
ITEM_ANTIFLAG_WARRIOR = (1 << 2), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_WARRIOR = (1 << 2), // 무사 사용 불가
ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // <EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_ASSASSIN = (1 << 3), // 자객 사용 불가
ITEM_ANTIFLAG_SURA = (1 << 4), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_SURA = (1 << 4), // 수라 사용 불가
ITEM_ANTIFLAG_SHAMAN = (1 << 5), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_SHAMAN = (1 << 5), // 무당 사용 불가
ITEM_ANTIFLAG_GET = (1 << 6), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_GET = (1 << 6), // 집을 수 없음
ITEM_ANTIFLAG_DROP = (1 << 7), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_DROP = (1 << 7), // 버릴 수 없음
ITEM_ANTIFLAG_SELL = (1 << 8), // <EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_SELL = (1 << 8), // 팔 수 없음
ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_EMPIRE_A = (1 << 9), // A 제국 사용 불가
ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_EMPIRE_B = (1 << 10), // B 제국 사용 불가
ITEM_ANTIFLAG_EMPIRE_R = (1 << 11), // C <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_EMPIRE_R = (1 << 11), // C 제국 사용 불가
ITEM_ANTIFLAG_SAVE = (1 << 12), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_SAVE = (1 << 12), // 저장되지 않음
ITEM_ANTIFLAG_GIVE = (1 << 13), // <EFBFBD>ŷ<EFBFBD> <20>Ұ<EFBFBD> ITEM_ANTIFLAG_GIVE = (1 << 13), // 거래 불가
ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_PKDROP = (1 << 14), // PK시 떨어지지 않음
ITEM_ANTIFLAG_STACK = (1 << 15), // <EFBFBD><EFBFBD>ĥ <20><> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_STACK = (1 << 15), // 합칠 수 없음
ITEM_ANTIFLAG_MYSHOP = (1 << 16), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ø<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> ITEM_ANTIFLAG_MYSHOP = (1 << 16), // 개인 상점에 올릴 수 없음
}; };
enum EItemFlag enum EItemFlag
{ {
ITEM_FLAG_REFINEABLE = (1 << 0), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ITEM_FLAG_REFINEABLE = (1 << 0), // 개량 가능
ITEM_FLAG_SAVE = (1 << 1), ITEM_FLAG_SAVE = (1 << 1),
ITEM_FLAG_STACKABLE = (1 << 2), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ĥ <20><> <20><><EFBFBD><EFBFBD> ITEM_FLAG_STACKABLE = (1 << 2), // 여러개 합칠 수 있음
ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ITEM_FLAG_COUNT_PER_1GOLD = (1 << 3), // 가격이 개수 / 가격으로 변함
ITEM_FLAG_SLOW_QUERY = (1 << 4), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> SQL<51><4C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ITEM_FLAG_SLOW_QUERY = (1 << 4), // 게임 종료시에만 SQL에 쿼리함
ITEM_FLAG_RARE = (1 << 5), ITEM_FLAG_RARE = (1 << 5),
ITEM_FLAG_UNIQUE = (1 << 6), ITEM_FLAG_UNIQUE = (1 << 6),
ITEM_FLAG_MAKECOUNT = (1 << 7), ITEM_FLAG_MAKECOUNT = (1 << 7),
ITEM_FLAG_IRREMOVABLE = (1 << 8), ITEM_FLAG_IRREMOVABLE = (1 << 8),
ITEM_FLAG_CONFIRM_WHEN_USE = (1 << 9), ITEM_FLAG_CONFIRM_WHEN_USE = (1 << 9),
ITEM_FLAG_QUEST_USE = (1 << 10), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ITEM_FLAG_QUEST_USE = (1 << 10), // 퀘스트 스크립트 돌리는지?
ITEM_FLAG_QUEST_USE_MULTIPLE= (1 << 11), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ITEM_FLAG_QUEST_USE_MULTIPLE= (1 << 11), // 퀘스트 스크립트 돌리는지?
ITEM_FLAG_UNUSED03 = (1 << 12), // UNUSED03 ITEM_FLAG_UNUSED03 = (1 << 12), // UNUSED03
ITEM_FLAG_LOG = (1 << 13), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α׸<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>? ITEM_FLAG_LOG = (1 << 13), // 사용시 로그를 남기는 아이템인가?
ITEM_FLAG_APPLICABLE = (1 << 14), ITEM_FLAG_APPLICABLE = (1 << 14),
}; };
@ -319,17 +319,17 @@ class CItemData
APPLY_ATT_BONUS_TO_SURA, // 61 APPLY_ATT_BONUS_TO_SURA, // 61
APPLY_ATT_BONUS_TO_SHAMAN, // 62 APPLY_ATT_BONUS_TO_SHAMAN, // 62
APPLY_ATT_BONUS_TO_MONSTER, // 63 APPLY_ATT_BONUS_TO_MONSTER, // 63
APPLY_MALL_ATTBONUS, // 64 <EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD> +x% APPLY_MALL_ATTBONUS, // 64 공격력 +x%
APPLY_MALL_DEFBONUS, // 65 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x% APPLY_MALL_DEFBONUS, // 65 방어력 +x%
APPLY_MALL_EXPBONUS, // 66 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ +x% APPLY_MALL_EXPBONUS, // 66 경험치 +x%
APPLY_MALL_ITEMBONUS, // 67 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<EFBFBD><EFBFBD> APPLY_MALL_ITEMBONUS, // 67 아이템 드롭율 x/10
APPLY_MALL_GOLDBONUS, // 68 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<EFBFBD><EFBFBD> APPLY_MALL_GOLDBONUS, // 68 돈 드롭율 x/10
APPLY_MAX_HP_PCT, // 69 <EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x% APPLY_MAX_HP_PCT, // 69 최대 생명력 +x%
APPLY_MAX_SP_PCT, // 70 <EFBFBD>ִ<EFBFBD> <20><><EFBFBD>ŷ<EFBFBD> +x% APPLY_MAX_SP_PCT, // 70 최대 정신력 +x%
APPLY_SKILL_DAMAGE_BONUS, // 71 <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * (100+x)% APPLY_SKILL_DAMAGE_BONUS, // 71 스킬 데미지 * (100+x)%
APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * (100+x)% APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 평타 데미지 * (100+x)%
APPLY_SKILL_DEFEND_BONUS, // 73 <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> * (100-x)% APPLY_SKILL_DEFEND_BONUS, // 73 스킬 데미지 방어 * (100-x)%
APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> * (100-x)% APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 평타 데미지 방어 * (100-x)%
APPLY_EXTRACT_HP_PCT, //75 APPLY_EXTRACT_HP_PCT, //75
APPLY_PC_BANG_EXP_BONUS, //76 APPLY_PC_BANG_EXP_BONUS, //76
APPLY_PC_BANG_DROP_BONUS, //77 APPLY_PC_BANG_DROP_BONUS, //77
@ -338,17 +338,17 @@ class CItemData
APPLY_RESIST_SURA, //80 APPLY_RESIST_SURA, //80
APPLY_RESIST_SHAMAN, //81 APPLY_RESIST_SHAMAN, //81
APPLY_ENERGY, //82 APPLY_ENERGY, //82
APPLY_DEF_GRADE, // 83 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. DEF_GRADE_BONUS<EFBFBD><EFBFBD> Ŭ<>󿡼<EFBFBD> <20>ι<EFBFBD><CEB9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD>(...)<29><> <20>ִ<EFBFBD>. APPLY_DEF_GRADE, // 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다.
APPLY_COSTUME_ATTR_BONUS, // 84 <EFBFBD>ڽ<EFBFBD>Ƭ <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD>ġ <20><><EFBFBD>ʽ<EFBFBD> APPLY_COSTUME_ATTR_BONUS, // 84 코스튬 아이템에 붙은 속성치 보너스
APPLY_MAGIC_ATTBONUS_PER, // 85 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD> +x% APPLY_MAGIC_ATTBONUS_PER, // 85 마법 공격력 +x%
APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20>и<EFBFBD> <20><><EFBFBD>ݷ<EFBFBD> +x% APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 마법 + 밀리 공격력 +x%
APPLY_RESIST_ICE, // 87 <EFBFBD>ñ<EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_RESIST_ICE, // 87 냉기 저항
APPLY_RESIST_EARTH, // 88 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_RESIST_EARTH, // 88 대지 저항
APPLY_RESIST_DARK, // 89 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_RESIST_DARK, // 89 어둠 저항
APPLY_ANTI_CRITICAL_PCT, //90 ũ<EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_ANTI_CRITICAL_PCT, //90 크리티컬 저항
APPLY_ANTI_PENETRATE_PCT, //91 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_ANTI_PENETRATE_PCT, //91 관통타격 저항
MAX_APPLY_NUM, // MAX_APPLY_NUM, //
}; };

View File

@ -22,13 +22,13 @@ class CMapBase : public CScreen
virtual bool Update(float fX, float fY, float fZ) = 0; virtual bool Update(float fX, float fY, float fZ) = 0;
virtual void UpdateAroundAmbience(float fX, float fY, float fZ) = 0; virtual void UpdateAroundAmbience(float fX, float fY, float fZ) = 0;
virtual float GetHeight(float fx, float fy) = 0; virtual float GetHeight(float fx, float fy) = 0;
virtual void OnBeginEnvironment() = 0; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⼭ Environment<6E><74> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>͵<EFBFBD><CDB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>. virtual void OnBeginEnvironment() = 0; // 렌더링 할 때 불려지며 여기서 Environment에 관련 있는 것들을 셋팅 한다.
virtual void ApplyLight(DWORD dwVersion, const D3DLIGHT9& c_rkLight) = 0; virtual void ApplyLight(DWORD dwVersion, const D3DLIGHT9& c_rkLight) = 0;
protected: protected:
virtual void OnRender() = 0; virtual void OnRender() = 0;
virtual void OnSetEnvironmentDataPtr() = 0; // Environment <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD>. virtual void OnSetEnvironmentDataPtr() = 0; // Environment 데이터가 설정될 때 불려진다.
virtual void OnResetEnvironmentDataPtr() = 0; virtual void OnResetEnvironmentDataPtr() = 0;
public: public:
@ -50,14 +50,14 @@ class CMapBase : public CScreen
const std::string & GetName() const { return m_strName; } const std::string & GetName() const { return m_strName; }
void SetName(const std::string & cr_strName) { m_strName = cr_strName; } void SetName(const std::string & cr_strName) { m_strName = cr_strName; }
bool IsCopiedMap() const { return m_strParentMapName.length() > 0; } // "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD>" <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ΰ<EFBFBD>? bool IsCopiedMap() const { return m_strParentMapName.length() > 0; } // "원본 데이터는 따로 있는" 복사 맵인가?
const std::string& GetParentMapName() const { return m_strParentMapName; } // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʼ<EFBFBD><CABC><EFBFBD> <20><><EFBFBD>õǾ<C3B5><C7BE><EFBFBD> <20><>) const std::string& GetParentMapName() const { return m_strParentMapName; } // 원본 데이터를 갖고있는 맵의 이름을 리턴 (복사맵의 경우 필수로 세팅되어야 함)
const std::string& GetMapDataDirectory() const { return IsCopiedMap() ? m_strParentMapName : m_strName; } const std::string& GetMapDataDirectory() const { return IsCopiedMap() ? m_strParentMapName : m_strName; }
protected: protected:
EMAPTYPE m_eType; // <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>... <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Indoor<EFBFBD><EFBFBD> Ourdoor<EFBFBD><EFBFBD> <20>ִ<EFBFBD>. EMAPTYPE m_eType; // 맵 종류... 현재는 Indoor Ourdoor가 있다.
std::string m_strName; // <EFBFBD><EFBFBD> <20≯<EFBFBD>. <20><> <20≯<EFBFBD><CCB8><EFBFBD> <20><> <20>ĺ<EFBFBD><C4BA>ڰ<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? std::string m_strName; // 맵 이름. 맵 이름이 맵 식별자가 될 수 있을까?
std::string m_strParentMapName; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD>. <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>õǾ<C3B5> <20>ִٸ<D6B4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> ParentMap/* <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20>о<EFBFBD><D0BE>´<EFBFBD>. <20><><EFBFBD><EFBFBD> <20>Ϻθ<CFBA> <20>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><20>н<EFBFBD>. std::string m_strParentMapName; // 원본 맵의 이름. 이 값이 세팅되어 있다면 실제 모든 맵 데이터는 ParentMap/* 경로에서 읽어온다. 맵의 일부만 읽어오는 기능은 필요없대서 패스.
bool m_bReady; bool m_bReady;
const TEnvironmentData * mc_pEnvironmentData; const TEnvironmentData * mc_pEnvironmentData;

View File

@ -27,13 +27,13 @@ class CMapManager : public CScreen, public IPhysicsWorld
void Initialize(); void Initialize();
void Destroy(); void Destroy();
void Create(); // AllocMap ȣ<EFBFBD><EFBFBD> <20>ؼ<EFBFBD> m_pMap <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> void Create(); // AllocMap 호출 해서 m_pMap 을 만듬
virtual void Clear(); virtual void Clear();
virtual CMapBase * AllocMap(); virtual CMapBase * AllocMap();
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// Map <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Լ<EFBFBD> // Map 관리 함수
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
bool IsMapReady(); bool IsMapReady();
@ -51,9 +51,9 @@ class CMapManager : public CScreen, public IPhysicsWorld
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// Environment // Environment
/// ///
// NOTE : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Environment<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ų<EFBFBD><C5B2> // NOTE : 다음 Environment로 서서히 블렌딩 시킨다
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> Protected<EFBFBD><EFBFBD> <20>ְ<EFBFBD>, // 아직 세부 구현은 되어있지 않음. 이 함수들은 Protected로 넣고,
// MapManager<EFBFBD><EFBFBD> TimeControl <EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20>Ѵ<EFBFBD>. - [levites] // MapManager TimeControl 부분을 구현하도록 한다. - [levites]
void SetEnvironmentDataPtr(const TEnvironmentData * c_pEnvironmentData); void SetEnvironmentDataPtr(const TEnvironmentData * c_pEnvironmentData);
void ResetEnvironmentDataPtr(const TEnvironmentData * c_pEnvironmentData); void ResetEnvironmentDataPtr(const TEnvironmentData * c_pEnvironmentData);
void SetEnvironmentData(int nEnvDataIndex); void SetEnvironmentData(int nEnvDataIndex);

View File

@ -27,7 +27,7 @@
typedef struct SOutdoorMapCoordinate typedef struct SOutdoorMapCoordinate
{ {
short m_sTerrainCoordX; // Terrain <EFBFBD><EFBFBD>ǥ short m_sTerrainCoordX; // Terrain 좌표
short m_sTerrainCoordY; short m_sTerrainCoordY;
} TOutdoorMapCoordinate; } TOutdoorMapCoordinate;
@ -161,7 +161,7 @@ class CMapOutdoor : public CMapBase
bool isTerrainLoaded(WORD wX, WORD wY); bool isTerrainLoaded(WORD wX, WORD wY);
bool isAreaLoaded(WORD wX, WORD wY); bool isAreaLoaded(WORD wX, WORD wY);
void AssignTerrainPtr(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(ex. 3x3)<29><> <20>ִ<EFBFBD> <20>͵<EFBFBD><CDB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><> <20>ҷ<EFBFBD><D2B7><EFBFBD>) void AssignTerrainPtr(); // 현재 좌표에서 주위(ex. 3x3)에 있는 것들의 포인터를 연결한다. (업데이트 시 불려짐)
void SaveAlphaFogOperation(); void SaveAlphaFogOperation();
void RestoreAlphaFogOperation(); void RestoreAlphaFogOperation();
@ -169,7 +169,7 @@ class CMapOutdoor : public CMapBase
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// New // New
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD>´<EFBFBD>. // 여러가지 맵들을 얻는다.
void GetHeightMap(const BYTE & c_rucTerrainNum, WORD ** pwHeightMap); void GetHeightMap(const BYTE & c_rucTerrainNum, WORD ** pwHeightMap);
void GetNormalMap(const BYTE & c_rucTerrainNum, char ** pucNormalMap); void GetNormalMap(const BYTE & c_rucTerrainNum, char ** pucNormalMap);
@ -182,19 +182,19 @@ class CMapOutdoor : public CMapBase
// Terrain // Terrain
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
protected: protected:
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 데이터
CTerrain * m_pTerrain[AROUND_AREA_NUM]; // Terrain CTerrain * m_pTerrain[AROUND_AREA_NUM]; // Terrain
CTerrainPatchProxy * m_pTerrainPatchProxyList; // CTerrain<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1>... Seamless Map <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> CTerrain<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>... CTerrainPatchProxy * m_pTerrainPatchProxyList; // CTerrain을 랜더링 할때 실제로 랜더링하는 폴리곤 패치들... Seamless Map 을 위해 CTerrain으로부터 독립...
long m_lViewRadius; // <EFBFBD>þ<EFBFBD> <20>Ÿ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.. long m_lViewRadius; // 시야 거리.. 셀단위임..
float m_fHeightScale; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... 1.0<EFBFBD>϶<EFBFBD> 0~655.35<EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD>. float m_fHeightScale; // 높이 스케일... 1.0일때 0~655.35미터까지 표현 가능.
short m_sTerrainCountX, m_sTerrainCountY; // seamless map <EFBFBD>ȿ<EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1> Terrain<EFBFBD><EFBFBD><EFBFBD><EFBFBD> short m_sTerrainCountX, m_sTerrainCountY; // seamless map 안에 들어가는 Terrain개수
TOutdoorMapCoordinate m_CurCoordinate; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ TOutdoorMapCoordinate m_CurCoordinate; // 현재의 좌표
long m_lCurCoordStartX, m_lCurCoordStartY; long m_lCurCoordStartX, m_lCurCoordStartY;
TOutdoorMapCoordinate m_PrevCoordinate; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ TOutdoorMapCoordinate m_PrevCoordinate; // 현재의 좌표
TOutdoorMapCoordinateMap m_EntryPointMap; TOutdoorMapCoordinateMap m_EntryPointMap;
WORD m_wPatchCount; WORD m_wPatchCount;
@ -316,7 +316,7 @@ class CMapOutdoor : public CMapBase
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// New // New
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
long m_lCenterX, m_lCenterY; // Terrain <EFBFBD><EFBFBD>ǥ <20><><EFBFBD><EFBFBD> <20><> <20><>ǥ... long m_lCenterX, m_lCenterY; // Terrain 좌표 내의 셀 좌표...
long m_lOldReadX, m_lOldReadY; /* Last center */ long m_lOldReadX, m_lOldReadY; /* Last center */
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -182,7 +182,7 @@ typedef struct SEnvironmentData
std::string strMainFlareTextureFileName; std::string strMainFlareTextureFileName;
float fMainFlareSize; float fMainFlareSize;
BOOL bReserve; // <EFBFBD>ܺο<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> BOOL bReserve; // 외부에서 설정을 고치지 않음
} TEnvironmentData; } TEnvironmentData;
typedef std::map<DWORD, TEnvironmentData*> TEnvironmentDataMap; typedef std::map<DWORD, TEnvironmentData*> TEnvironmentDataMap;

View File

@ -89,17 +89,17 @@ protected:
protected: protected:
EMonsterAreaInfoType m_eMonsterAreaInfoType; EMonsterAreaInfoType m_eMonsterAreaInfoType;
// Group Type <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // Group Type 정보
DWORD m_dwGroupID; DWORD m_dwGroupID;
std::string m_strGroupName; std::string m_strGroupName;
std::string m_strLeaderName; std::string m_strLeaderName;
DWORD m_dwFollowerCount; DWORD m_dwFollowerCount;
// Monster Type <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // Monster Type 정보
DWORD m_dwVID; DWORD m_dwVID;
std::string m_strMonsterName; std::string m_strMonsterName;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 공통 정보
DWORD m_dwMonsterCount; DWORD m_dwMonsterCount;
EMonsterDir m_eMonsterDir; EMonsterDir m_eMonsterDir;
D3DXVECTOR2 m_v2Monsterdirection; D3DXVECTOR2 m_v2Monsterdirection;

View File

@ -29,8 +29,8 @@ private:
}; };
class CActorInstance; class CActorInstance;
//NOTE : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD> Dependency Inversion<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> interface<63><65> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20>̹<EFBFBD><CCB9>Ĵ<EFBFBD><C4B4><EFBFBD> <20><><EFBFBD><EFBFBD> //NOTE : 맘에 안들지만 Dependency Inversion을 막고 이전과 동일한 interface를 유지하기 위해서 이방식대로 간다
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>Ѵٸ<D1B4> world<EFBFBD><EFBFBD> live object<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ݴ<EFBFBD> base project<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (gamelib<EFBFBD>̳<EFBFBD> <20><> base project<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD> <20>Ѵ<EFBFBD> ) //하지만 제대로 설계를 한다면 world live object들의 관리는 조금더 base project에서 (gamelib이나 더 base project에서 해야 한다 )
class IObjectManager class IObjectManager
{ {
public: public:

View File

@ -16,8 +16,8 @@ class CRaceData
enum EParts enum EParts
{ {
// Share index with server // Share index with server
// ECharacterEquipmentPart<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>. // ECharacterEquipmentPart도 수정해주세요.
//<EFBFBD><EFBFBD>Ŷ ũ<><20><><EFBFBD>մϴ<D5B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>. //패킷 크기가 변합니다 서버와 상의후 추가해주세요.
PART_MAIN, PART_MAIN,
PART_WEAPON, PART_WEAPON,
PART_HEAD, PART_HEAD,

View File

@ -56,41 +56,41 @@ class CRaceMotionData
enum EName enum EName
{ {
NAME_NONE, // 0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> NAME_NONE, // 0 없음
NAME_WAIT, // 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (00.msa) NAME_WAIT, // 1 대기 (00.msa)
NAME_WALK, // 2 <EFBFBD>ȱ<EFBFBD> (02.msa) NAME_WALK, // 2 걷기 (02.msa)
NAME_RUN, // 3 <EFBFBD>ٱ<EFBFBD> (03.msa) NAME_RUN, // 3 뛰기 (03.msa)
NAME_CHANGE_WEAPON, // 4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲٱ<EFBFBD> NAME_CHANGE_WEAPON, // 4 무기바꾸기
NAME_DAMAGE, // 5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD> (30.msa) NAME_DAMAGE, // 5 정면맞기 (30.msa)
NAME_DAMAGE_FLYING, // 6 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD> (32.msa) NAME_DAMAGE_FLYING, // 6 정면날아가기 (32.msa)
NAME_STAND_UP, // 7 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><EFBFBD> (33.msa) NAME_STAND_UP, // 7 정면일어나기 (33.msa)
NAME_DAMAGE_BACK, // 8 <EFBFBD>ĸ<EFBFBD><EFBFBD>±<EFBFBD> (34.msa) NAME_DAMAGE_BACK, // 8 후면맞기 (34.msa)
NAME_DAMAGE_FLYING_BACK, // 9 <EFBFBD>ĸ鳯<EFBFBD>ư<EFBFBD><EFBFBD><EFBFBD> (35.msa) NAME_DAMAGE_FLYING_BACK, // 9 후면날아가기 (35.msa)
NAME_STAND_UP_BACK, // 10 <EFBFBD>ĸ<EFBFBD><EFBFBD>Ͼ<EFBFBD><EFBFBD> (36.msa) NAME_STAND_UP_BACK, // 10 후면일어나기 (36.msa)
NAME_DEAD, // 11 <EFBFBD>ױ<EFBFBD> (31.msa) NAME_DEAD, // 11 죽기 (31.msa)
NAME_DEAD_BACK, // 12 <EFBFBD>ĸ<EFBFBD><EFBFBD>ױ<EFBFBD> (37.msa) NAME_DEAD_BACK, // 12 후면죽기 (37.msa)
NAME_NORMAL_ATTACK, // 13 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (20.msa) NAME_NORMAL_ATTACK, // 13 공격 (20.msa)
NAME_COMBO_ATTACK_1, // 14 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_1, // 14 콤보 공격
NAME_COMBO_ATTACK_2, // 15 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_2, // 15 콤보 공격
NAME_COMBO_ATTACK_3, // 16 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_3, // 16 콤보 공격
NAME_COMBO_ATTACK_4, // 17 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_4, // 17 콤보 공격
NAME_COMBO_ATTACK_5, // 18 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_5, // 18 콤보 공격
NAME_COMBO_ATTACK_6, // 19 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_6, // 19 콤보 공격
NAME_COMBO_ATTACK_7, // 20 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_7, // 20 콤보 공격
NAME_COMBO_ATTACK_8, // 21 <EFBFBD>޺<EFBFBD> <20><><EFBFBD><EFBFBD> NAME_COMBO_ATTACK_8, // 21 콤보 공격
NAME_INTRO_WAIT, // 22 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NAME_INTRO_WAIT, // 22 선택화면 대기
NAME_INTRO_SELECTED, // 23 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NAME_INTRO_SELECTED, // 23 선택화면 선택
NAME_INTRO_NOT_SELECTED, // 24 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NAME_INTRO_NOT_SELECTED, // 24 선택화면 비선택
NAME_SPAWN, // 25 <EFBFBD><EFBFBD>ȯ NAME_SPAWN, // 25 소환
NAME_FISHING_THROW, // 26 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NAME_FISHING_THROW, // 26 낚시 던지기
NAME_FISHING_WAIT, // 27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NAME_FISHING_WAIT, // 27 낚시 대기
NAME_FISHING_STOP, // 28 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8>α<EFBFBD> NAME_FISHING_STOP, // 28 낚시 그만두기
NAME_FISHING_REACT, // 29 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NAME_FISHING_REACT, // 29 낚시 반응
NAME_FISHING_CATCH, // 30 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NAME_FISHING_CATCH, // 30 낚시 잡기
NAME_FISHING_FAIL, // 31 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NAME_FISHING_FAIL, // 31 낚시 실패
NAME_STOP, // 32 <EFBFBD><EFBFBD> <20><><EFBFBD>߱<EFBFBD> NAME_STOP, // 32 말 멈추기
NAME_SPECIAL_1, // 33 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/NPC Ư<><C6AF> <20><><EFBFBD><EFBFBD> (24.msa) NAME_SPECIAL_1, // 33 몬스터/NPC 특수 동작 (24.msa)
NAME_SPECIAL_2, // 34 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/NPC Ư<><C6AF> <20><><EFBFBD><EFBFBD> (25.msa) NAME_SPECIAL_2, // 34 몬스터/NPC 특수 동작 (25.msa)
NAME_SPECIAL_3, NAME_SPECIAL_3,
NAME_SPECIAL_4, NAME_SPECIAL_4,
NAME_SPECIAL_5, NAME_SPECIAL_5,
@ -139,7 +139,7 @@ class CRaceMotionData
NAME_DANCE_3, NAME_DANCE_3,
NAME_DANCE_4, NAME_DANCE_4,
NAME_DANCE_5, NAME_DANCE_5,
NAME_DANCE_6, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> NAME_DANCE_6, // 강남스타일
NAME_DANCE_END = NAME_DANCE_1 + 16, NAME_DANCE_END = NAME_DANCE_1 + 16,
@ -210,8 +210,8 @@ class CRaceMotionData
void SetName(UINT eName); void SetName(UINT eName);
UINT GetType() const; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> UINT GetType() const; // 모션 타입 얻기
bool IsLock() const; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD>? (<28>ٸ<EFBFBD> <20><><EFBFBD>ǿ<EFBFBD> ĵ<><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) bool IsLock() const; // 락된 모션 인가? (다른 모션에 캔슬되지 않음)
int GetLoopCount() const; int GetLoopCount() const;
@ -225,7 +225,7 @@ class CRaceMotionData
void SetAccumulationPosition(const TPixelPosition & c_rPos); void SetAccumulationPosition(const TPixelPosition & c_rPos);
const TPixelPosition & GetAccumulationPosition() { return m_accumulationPosition; } const TPixelPosition & GetAccumulationPosition() { return m_accumulationPosition; }
BOOL IsComboInputTimeData() const; // <EFBFBD>޺<EFBFBD> <20>Է<EFBFBD> Ÿ<>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ִ°<D6B4>? BOOL IsComboInputTimeData() const; // 콤보 입력 타이밍 데이터가 있는가?
float GetComboInputStartTime() const; float GetComboInputStartTime() const;
float GetNextComboTime() const; float GetNextComboTime() const;

View File

@ -6,7 +6,7 @@
#endif #endif
#pragma warning(disable:4710) // not inlined #pragma warning(disable:4710) // not inlined
#pragma warning(disable:4786) // character 255 <EFBFBD>Ѿ<EFBFBD>°<EFBFBD> <20><><EFBFBD><EFBFBD> #pragma warning(disable:4786) // character 255 넘어가는거 끄기
#pragma warning(disable:4244) // type conversion possible lose of data #pragma warning(disable:4244) // type conversion possible lose of data
#pragma warning(disable:4018) #pragma warning(disable:4018)

View File

@ -74,7 +74,7 @@ class CTerrainImpl
public: public:
static void SetTextureSet(CTextureSet * pTextureSet); static void SetTextureSet(CTextureSet * pTextureSet);
static CTextureSet * GetTextureSet(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20><> static CTextureSet * GetTextureSet(); // 무조건 성공해야 함
protected: protected:
static CTextureSet * ms_pTextureSet; static CTextureSet * ms_pTextureSet;
@ -134,7 +134,7 @@ class CTerrainImpl
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// TileMap<EFBFBD><EFBFBD> HeightMap <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // TileMap HeightMap 비율
// int m_iHeightTileRatio; // int m_iHeightTileRatio;
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////

View File

@ -28,7 +28,7 @@ typedef struct STerrainTexture
float UOffset; float UOffset;
float VOffset; float VOffset;
bool bSplat; bool bSplat;
unsigned short Begin, End; // 0 ~ 65535 <EFBFBD><EFBFBD> 16bit heightfield <EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>. unsigned short Begin, End; // 0 ~ 65535 16bit heightfield 높이값.
D3DXMATRIX m_matTransform; D3DXMATRIX m_matTransform;
} TTerrainTexture; } TTerrainTexture;

View File

@ -64,8 +64,8 @@ class CAccountConnector : public CNetworkStream, public CSingleton<CAccountConne
bool __AuthState_RecvHybridCryptSDB(int VarSize); bool __AuthState_RecvHybridCryptSDB(int VarSize);
bool __AnalyzePacket(UINT uHeader, UINT uPacketSize, bool (CAccountConnector::*pfnDispatchPacket)()); bool __AnalyzePacket(UINT uHeader, UINT uPacketSize, bool (CAccountConnector::*pfnDispatchPacket)());
// TODO: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽô<D3BD>. header<EFBFBD>ڿ<EFBFBD> size 4byte<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´ٴ<C2B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. // TODO: 지금 현재는 임시다. header뒤에 size 4byte가 무조건 온다는 가정임.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> Packet System Refactoring<EFBFBD>ؾ<EFBFBD> <20>Ѵ<EFBFBD>. // 제대로 하려면 Packet System Refactoring해야 한다.
bool __AnalyzeVarSizePacket(UINT uHeader, bool (CAccountConnector::*pfnDispatchPacket)(int)); bool __AnalyzeVarSizePacket(UINT uHeader, bool (CAccountConnector::*pfnDispatchPacket)(int));
protected: protected:

View File

@ -56,12 +56,12 @@ const DWORD c_Equipment_Unique2 = c_Equipment_Start + 8;
const DWORD c_Equipment_Arrow = c_Equipment_Start + 9; const DWORD c_Equipment_Arrow = c_Equipment_Start + 9;
const DWORD c_Equipment_Shield = c_Equipment_Start + 10; const DWORD c_Equipment_Shield = c_Equipment_Start + 10;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ű<EFBFBD> <20><><EFBFBD><EFBFBD> & <20><>Ʈ // 새로 추가된 신규 반지 & 벨트
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20>Ҵ<EFBFBD><D2B4><EFBFBD> <20><> <20>ִ<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>, <20>ڽ<EFBFBD>Ƭ <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߷<EFBFBD><DFB7>ִ<EFBFBD>. // 장착형 아이템에 할당할 수 있는 위치가 기존 장비, 채기랍 퀘스트 보상, 코스튬 시스템 등으로 인해서 공간이 잘려있다.
// <EFBFBD>̰<EFBFBD> <20><> ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... <20><><EFBFBD><EFBFBD> // 이게 다 채기랍 보상 버프를 장착아이템처럼 구현한 ㅅㄲ 때문에 난리났따... ㅆㅂ
// //
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>â<EFBFBD><C3A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>DB<44><42> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 90 ~ 102 <EFBFBD>̰<EFBFBD>, // 정리하면, 기존 장비창들은 서버DB상 아이템 포지션이 90 ~ 102 이고,
// 2013<EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ǵ<EFBFBD> <20><><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD> 111 ~ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>񿡼<EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> 121 <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>, 122<32><32><EFBFBD>ʹ<EFBFBD> <20><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. // 2013년 초에 새로 추가되는 슬롯들은 111 ~ 부터 시작한다. 착용 장비에서 최대로 사용할 수 있는 값은 121 까지이고, 122부터는 용혼석에서 사용한다.
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
const DWORD c_New_Equipment_Start = c_Equipment_Start + 21; const DWORD c_New_Equipment_Start = c_Equipment_Start + 21;
const DWORD c_New_Equipment_Count = 3; const DWORD c_New_Equipment_Count = 3;
@ -99,7 +99,7 @@ enum EDragonSoulStepTypes
}; };
#ifdef ENABLE_COSTUME_SYSTEM #ifdef ENABLE_COSTUME_SYSTEM
const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD>(19) <20>ϵ<EFBFBD><CFB5>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 19<31><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> common/length.h <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EWearPositions <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [주의] 숫자(19) 하드코딩 주의. 현재 서버에서 코스츔 슬롯은 19부터임. 서버 common/length.h 파일의 EWearPositions 열거형 참고.
const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + 0; const DWORD c_Costume_Slot_Body = c_Costume_Slot_Start + 0;
const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + 1; const DWORD c_Costume_Slot_Hair = c_Costume_Slot_Start + 1;
const DWORD c_Costume_Slot_Count = 2; const DWORD c_Costume_Slot_Count = 2;
@ -107,19 +107,19 @@ enum EDragonSoulStepTypes
#endif #endif
// [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD>(32) <20>ϵ<EFBFBD><CFB5>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. // [주의] 숫자(32) 하드코딩 주의. 현재 서버에서 용혼석 슬롯은 32부터임.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> common/length.h <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EWearPositions <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32<33><32><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>(32 <20>̻<EFBFBD><CCBB><EFBFBD> Ȯ<><C8AE> <20>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>.), // 서버 common/length.h 파일의 EWearPositions 열거형이 32까지 확장될 것을 염두하고(32 이상은 확장 하기 힘들게 되어있음.),
// <EFBFBD><EFBFBD> <20><><EFBFBD>ĺ<EFBFBD><C4BA>͸<EFBFBD> <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. // 그 이후부터를 용혼석 장착 슬롯으로 사용.
const DWORD c_Wear_Max = 32; const DWORD c_Wear_Max = 32;
const DWORD c_DragonSoul_Equip_Start = c_ItemSlot_Count + c_Wear_Max; const DWORD c_DragonSoul_Equip_Start = c_ItemSlot_Count + c_Wear_Max;
const DWORD c_DragonSoul_Equip_Slot_Max = 6; const DWORD c_DragonSoul_Equip_Slot_Max = 6;
const DWORD c_DragonSoul_Equip_End = c_DragonSoul_Equip_Start + c_DragonSoul_Equip_Slot_Max * DS_DECK_MAX_NUM; const DWORD c_DragonSoul_Equip_End = c_DragonSoul_Equip_Start + c_DragonSoul_Equip_Slot_Max * DS_DECK_MAX_NUM;
// NOTE: 2013<EFBFBD><EFBFBD> 2<><32> 5<><35> <20><><EFBFBD><EFBFBD>... <20><>ȥ<EFBFBD><C8A5> <20><>ũ<EFBFBD><C5A9> 2<><32><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴµ<CFB4>, <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> <20>־ 3<><33> <20><>ũ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> <20><> <20><>. <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ <20>κ<EFBFBD><CEBA><EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD> // NOTE: 2013년 2월 5일 현재... 용혼석 데크는 2개가 존재하는데, 향후 확장 가능성이 있어서 3개 데크 여유분을 할당 해 둠. 그 뒤 공간은 벨트 인벤토리로 사용
const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3; const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
// <EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κ<EFBFBD><CEBA> // 벨트 아이템이 제공하는 인벤토리
const DWORD c_Belt_Inventory_Slot_Start = c_DragonSoul_Equip_End + c_DragonSoul_Equip_Reserved_Count; const DWORD c_Belt_Inventory_Slot_Start = c_DragonSoul_Equip_End + c_DragonSoul_Equip_Reserved_Count;
const DWORD c_Belt_Inventory_Width = 4; const DWORD c_Belt_Inventory_Width = 4;
const DWORD c_Belt_Inventory_Height= 4; const DWORD c_Belt_Inventory_Height= 4;
@ -131,7 +131,7 @@ const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;
const DWORD c_Inventory_Count = c_DragonSoul_Equip_End; const DWORD c_Inventory_Count = c_DragonSoul_Equip_End;
#endif #endif
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA> // 용혼석 전용 인벤토리
const DWORD c_DragonSoul_Inventory_Start = 0; const DWORD c_DragonSoul_Inventory_Start = 0;
const DWORD c_DragonSoul_Inventory_Box_Size = 32; const DWORD c_DragonSoul_Inventory_Box_Size = 32;
const DWORD c_DragonSoul_Inventory_Count = CItemData::DS_SLOT_NUM_TYPES * DRAGON_SOUL_GRADE_MAX * c_DragonSoul_Inventory_Box_Size; const DWORD c_DragonSoul_Inventory_Count = CItemData::DS_SLOT_NUM_TYPES * DRAGON_SOUL_GRADE_MAX * c_DragonSoul_Inventory_Box_Size;
@ -157,13 +157,13 @@ enum ESlotType
enum EWindows enum EWindows
{ {
RESERVED_WINDOW, RESERVED_WINDOW,
INVENTORY, // <EFBFBD><20>κ<EFBFBD><CEBA>丮. (45ĭ ¥<><C2A5><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> = 90ĭ) INVENTORY, // 기본 인벤토리. (45칸 짜리가 2페이지 존재 = 90)
EQUIPMENT, EQUIPMENT,
SAFEBOX, SAFEBOX,
MALL, MALL,
DRAGON_SOUL_INVENTORY, DRAGON_SOUL_INVENTORY,
GROUND, // NOTE: 2013<EFBFBD><EFBFBD> 2<><32>5<EFBFBD><35> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> unused.. <EFBFBD><EFBFBD> <20>ִ°<D6B4><C2B0><EFBFBD>??? GROUND, // NOTE: 2013년 2월5일 현재까지 unused.. 왜 있는거지???
BELT_INVENTORY, // NOTE: W2.1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ǵ<EFBFBD> <20><>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ʈ <20>κ<EFBFBD><CEBA> BELT_INVENTORY, // NOTE: W2.1 버전에 새로 추가되는 벨트 슬롯 아이템이 제공하는 벨트 인벤토리
WINDOW_TYPE_MAX, WINDOW_TYPE_MAX,
}; };
@ -192,9 +192,9 @@ typedef struct SItemPos
cell = _cell; cell = _cell;
} }
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cell<6C><6C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BYTE<54><45> <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, oi // 기존에 cell의 형을 보면 BYTE가 대부분이지만, oi
// <EFBFBD><20>κ<EFBFBD><CEBA><EFBFBD> int, <20><20>κ<EFBFBD><CEBA><EFBFBD> WORD<52><44> <20>Ǿ<EFBFBD><C7BE>־<EFBFBD>, // 어떤 부분은 int, 어떤 부분은 WORD로 되어있어,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ū <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD> int<6E><74> <20>޴´<DEB4>. // 가장 큰 자료형인 int로 받는다.
// int operator=(const int _cell) // int operator=(const int _cell)
// { // {
//window_type = INVENTORY; //window_type = INVENTORY;

View File

@ -73,8 +73,8 @@ class CInstanceBase
AFFECT_SLOW, AFFECT_SLOW,
AFFECT_STUN, AFFECT_STUN,
AFFECT_DUNGEON_READY, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>غ<EFBFBD> <20><><EFBFBD><EFBFBD> AFFECT_DUNGEON_READY, // 던전에서 준비 상태
AFFECT_SHOW_ALWAYS, // AFFECT_DUNGEON_UNIQUE <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AFFECT_SHOW_ALWAYS, // AFFECT_DUNGEON_UNIQUE 에서 변경(클라이언트에서 컬링되지않음)
AFFECT_BUILDING_CONSTRUCTION_SMALL, AFFECT_BUILDING_CONSTRUCTION_SMALL,
AFFECT_BUILDING_CONSTRUCTION_LARGE, AFFECT_BUILDING_CONSTRUCTION_LARGE,
@ -85,34 +85,34 @@ class CInstanceBase
AFFECT_FISH_MIND, // 13 AFFECT_FISH_MIND, // 13
AFFECT_JEONGWI, // 14 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ AFFECT_JEONGWI, // 14 전귀혼
AFFECT_GEOMGYEONG, // 15 <EFBFBD>˰<EFBFBD> AFFECT_GEOMGYEONG, // 15 검경
AFFECT_CHEONGEUN, // 16 õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_CHEONGEUN, // 16 천근추
AFFECT_GYEONGGONG, // 17 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_GYEONGGONG, // 17 경공술
AFFECT_EUNHYEONG, // 18 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_EUNHYEONG, // 18 은형법
AFFECT_GWIGEOM, // 19 <EFBFBD>Ͱ<EFBFBD> AFFECT_GWIGEOM, // 19 귀검
AFFECT_GONGPO, // 20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_GONGPO, // 20 공포
AFFECT_JUMAGAP, // 21 <EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD> AFFECT_JUMAGAP, // 21 주마갑
AFFECT_HOSIN, // 22 ȣ<EFBFBD><EFBFBD> AFFECT_HOSIN, // 22 호신
AFFECT_BOHO, // 23 <EFBFBD><EFBFBD>ȣ AFFECT_BOHO, // 23 보호
AFFECT_KWAESOK, // 24 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_KWAESOK, // 24 쾌속
AFFECT_HEUKSIN, // 25 <EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD>ȣ AFFECT_HEUKSIN, // 25 흑신수호
AFFECT_MUYEONG, // 26 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_MUYEONG, // 26 무영진
AFFECT_REVIVE_INVISIBILITY, // 27 <EFBFBD><EFBFBD>Ȱ <20><><EFBFBD><EFBFBD> AFFECT_REVIVE_INVISIBILITY, // 27 부활 무적
AFFECT_FIRE, // 28 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> AFFECT_FIRE, // 28 지속 불
AFFECT_GICHEON, // 29 <EFBFBD><EFBFBD>õ <20><><EFBFBD><EFBFBD> AFFECT_GICHEON, // 29 기천 대공
AFFECT_JEUNGRYEOK, // 30 <EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> AFFECT_JEUNGRYEOK, // 30 증력술
AFFECT_DASH, // 31 <EFBFBD> AFFECT_DASH, // 31 대쉬
AFFECT_PABEOP, // 32 <EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD> AFFECT_PABEOP, // 32 파법술
AFFECT_FALLEN_CHEONGEUN, // 33 <EFBFBD>ٿ<EFBFBD> <20>׷<EFBFBD><D7B7>̵<EFBFBD> õ<><C3B5><EFBFBD><EFBFBD> AFFECT_FALLEN_CHEONGEUN, // 33 다운 그레이드 천근추
AFFECT_POLYMORPH, // 34 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AFFECT_POLYMORPH, // 34 폴리모프
AFFECT_WAR_FLAG1, // 35 AFFECT_WAR_FLAG1, // 35
AFFECT_WAR_FLAG2, // 36 AFFECT_WAR_FLAG2, // 36
AFFECT_WAR_FLAG3, // 37 AFFECT_WAR_FLAG3, // 37
AFFECT_CHINA_FIREWORK, // 38 AFFECT_CHINA_FIREWORK, // 38
AFFECT_PREMIUM_SILVER, AFFECT_PREMIUM_SILVER,
AFFECT_PREMIUM_GOLD, AFFECT_PREMIUM_GOLD,
AFFECT_RAMADAN_RING, // 41 <EFBFBD>ʽ´<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Affect AFFECT_RAMADAN_RING, // 41 초승달 반지 착용 Affect
AFFECT_NUM = 64, AFFECT_NUM = 64,
@ -154,31 +154,31 @@ class CInstanceBase
NEW_AFFECT_BOW_DISTANCE, // 225 NEW_AFFECT_BOW_DISTANCE, // 225
NEW_AFFECT_EXP_BONUS = 500, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NEW_AFFECT_EXP_BONUS = 500, // 경험의 반지
NEW_AFFECT_ITEM_BONUS = 501, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> NEW_AFFECT_ITEM_BONUS = 501, // 도둑의 장갑
NEW_AFFECT_SAFEBOX = 502, // PREMIUM_SAFEBOX, NEW_AFFECT_SAFEBOX = 502, // PREMIUM_SAFEBOX,
NEW_AFFECT_AUTOLOOT = 503, // PREMIUM_AUTOLOOT, NEW_AFFECT_AUTOLOOT = 503, // PREMIUM_AUTOLOOT,
NEW_AFFECT_FISH_MIND = 504, // PREMIUM_FISH_MIND, NEW_AFFECT_FISH_MIND = 504, // PREMIUM_FISH_MIND,
NEW_AFFECT_MARRIAGE_FAST = 505, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ݽ<EFBFBD>), NEW_AFFECT_MARRIAGE_FAST = 505, // 원앙의 깃털 (금슬),
NEW_AFFECT_GOLD_BONUS = 506, NEW_AFFECT_GOLD_BONUS = 506,
NEW_AFFECT_MALL = 510, // <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ NEW_AFFECT_MALL = 510, // 몰 아이템 에펙트
NEW_AFFECT_NO_DEATH_PENALTY = 511, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ (<28><><EFBFBD><EFBFBD>ġ <20>г<EFBFBD>Ƽ<EFBFBD><C6BC> <20>ѹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>) NEW_AFFECT_NO_DEATH_PENALTY = 511, // 용신의 가호 (경험치 패널티를 한번 막아준다)
NEW_AFFECT_SKILL_BOOK_BONUS = 512, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> 50% <EFBFBD><EFBFBD><EFBFBD><EFBFBD>) NEW_AFFECT_SKILL_BOOK_BONUS = 512, // 선인의 교훈 (책 수련 성공 확률이 50% 증가)
NEW_AFFECT_SKILL_BOOK_NO_DELAY = 513, // <EFBFBD>־<EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) NEW_AFFECT_SKILL_BOOK_NO_DELAY = 513, // 주안 술서 (책 수련 딜레이 없음)
NEW_AFFECT_EXP_BONUS_EURO_FREE = 516, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 14 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>⺻ ȿ<><C8BF>) NEW_AFFECT_EXP_BONUS_EURO_FREE = 516, // 경험의 반지 (유럽 버전 14 레벨 이하 기본 효과)
NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 = 517, NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 = 517,
NEW_AFFECT_AUTO_HP_RECOVERY = 534, // <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HP NEW_AFFECT_AUTO_HP_RECOVERY = 534, // 자동물약 HP
NEW_AFFECT_AUTO_SP_RECOVERY = 535, // <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SP NEW_AFFECT_AUTO_SP_RECOVERY = 535, // 자동물약 SP
NEW_AFFECT_DRAGON_SOUL_QUALIFIED = 540, NEW_AFFECT_DRAGON_SOUL_QUALIFIED = 540,
NEW_AFFECT_DRAGON_SOUL_DECK1 = 541, NEW_AFFECT_DRAGON_SOUL_DECK1 = 541,
NEW_AFFECT_DRAGON_SOUL_DECK2 = 542, NEW_AFFECT_DRAGON_SOUL_DECK2 = 542,
NEW_AFFECT_RAMADAN_ABILITY = 300, NEW_AFFECT_RAMADAN_ABILITY = 300,
NEW_AFFECT_RAMADAN_RING = 301, // <EFBFBD>󸶴<EFBFBD> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> Ư<><C6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ´<CABD><C2B4><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NEW_AFFECT_RAMADAN_RING = 301, // 라마단 이벤트용 특수아이템 초승달의 반지 착용 유무
NEW_AFFECT_NOG_POCKET_ABILITY = 302, NEW_AFFECT_NOG_POCKET_ABILITY = 302,
@ -263,7 +263,7 @@ class CInstanceBase
TITLE_NONE = 4, TITLE_NONE = 4,
}; };
enum //<EFBFBD>Ʒ<EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20>ٲ<EFBFBD><D9B2><EFBFBD> registerEffect <EFBFBD>ʵ<EFBFBD> <20>ٲپ<D9B2> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>. enum //아래 번호가 바뀌면 registerEffect 쪽도 바꾸어 줘야 한다.
{ {
EFFECT_REFINED_NONE, EFFECT_REFINED_NONE,
@ -291,8 +291,8 @@ class CInstanceBase
EFFECT_BODYARMOR_REFINED8, EFFECT_BODYARMOR_REFINED8,
EFFECT_BODYARMOR_REFINED9, EFFECT_BODYARMOR_REFINED9,
EFFECT_BODYARMOR_SPECIAL, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-2-1 EFFECT_BODYARMOR_SPECIAL, // 갑옷 4-2-1
EFFECT_BODYARMOR_SPECIAL2, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4-2-2 EFFECT_BODYARMOR_SPECIAL2, // 갑옷 4-2-2
EFFECT_REFINED_NUM, EFFECT_REFINED_NUM,
}; };
@ -305,7 +305,7 @@ class CInstanceBase
DAMAGE_BLOCK = (1<<3), DAMAGE_BLOCK = (1<<3),
DAMAGE_PENETRATE= (1<<4), DAMAGE_PENETRATE= (1<<4),
DAMAGE_CRITICAL = (1<<5), DAMAGE_CRITICAL = (1<<5),
// <EFBFBD><EFBFBD>-_-<EFBFBD><EFBFBD> // -_-
}; };
enum enum
@ -359,17 +359,17 @@ class CInstanceBase
EFFECT_SUCCESS, EFFECT_SUCCESS,
EFFECT_FAIL, EFFECT_FAIL,
EFFECT_FR_SUCCESS, EFFECT_FR_SUCCESS,
EFFECT_LEVELUP_ON_14_FOR_GERMANY, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) EFFECT_LEVELUP_ON_14_FOR_GERMANY, //레벨업 14일때 ( 독일전용 )
EFFECT_LEVELUP_UNDER_15_FOR_GERMANY,//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) EFFECT_LEVELUP_UNDER_15_FOR_GERMANY,//레벨업 15일때 ( 독일전용 )
EFFECT_PERCENT_DAMAGE1, EFFECT_PERCENT_DAMAGE1,
EFFECT_PERCENT_DAMAGE2, EFFECT_PERCENT_DAMAGE2,
EFFECT_PERCENT_DAMAGE3, EFFECT_PERCENT_DAMAGE3,
EFFECT_AUTO_HPUP, EFFECT_AUTO_HPUP,
EFFECT_AUTO_SPUP, EFFECT_AUTO_SPUP,
EFFECT_RAMADAN_RING_EQUIP, // <EFBFBD>ʽ´<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ EFFECT_RAMADAN_RING_EQUIP, // 초승달 반지 착용 순간에 발동하는 이펙트
EFFECT_HALLOWEEN_CANDY_EQUIP, // <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ EFFECT_HALLOWEEN_CANDY_EQUIP, // 할로윈 사탕 착용 순간에 발동하는 이펙트
EFFECT_HAPPINESS_RING_EQUIP, // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ EFFECT_HAPPINESS_RING_EQUIP, // 행복의 반지 착용 순간에 발동하는 이펙트
EFFECT_LOVE_PENDANT_EQUIP, // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ EFFECT_LOVE_PENDANT_EQUIP, // 행복의 반지 착용 순간에 발동하는 이펙트
EFFECT_TEMP, EFFECT_TEMP,
EFFECT_NUM, EFFECT_NUM,
}; };
@ -434,7 +434,7 @@ class CInstanceBase
void MountHorse(UINT eRace); void MountHorse(UINT eRace);
void DismountHorse(); void DismountHorse();
// <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <20>׽<EFBFBD>Ʈ <20>Լ<EFBFBD>. <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 스크립트용 테스트 함수. 나중에 없에자
void SCRIPT_SetAffect(UINT eAffect, bool isVisible); void SCRIPT_SetAffect(UINT eAffect, bool isVisible);
float CalculateDistanceSq3d(const TPixelPosition& c_rkPPosDst); float CalculateDistanceSq3d(const TPixelPosition& c_rkPPosDst);
@ -604,7 +604,7 @@ class CInstanceBase
BOOL CanAttackHorseLevel(); BOOL CanAttackHorseLevel();
#ifdef __MOVIE_MODE__ #ifdef __MOVIE_MODE__
BOOL IsMovieMode(); // <EFBFBD><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ⱥ<EFBFBD><C8BA>̴°<CCB4> BOOL IsMovieMode(); // 운영자용 완전히 안보이는거
#endif #endif
bool NEW_CanMoveToDestPixelPosition(const TPixelPosition& c_rkPPosDst); bool NEW_CanMoveToDestPixelPosition(const TPixelPosition& c_rkPPosDst);
@ -750,8 +750,8 @@ class CInstanceBase
//void SetParts(const WORD * c_pParts); //void SetParts(const WORD * c_pParts);
void Refresh(DWORD dwMotIndex, bool isLoop); void Refresh(DWORD dwMotIndex, bool isLoop);
//void AttachEffectByID(DWORD dwParentPartIndex, const char * c_pszBoneName, DWORD dwEffectID, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ms<6D><73><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. //void AttachEffectByID(DWORD dwParentPartIndex, const char * c_pszBoneName, DWORD dwEffectID, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // 수명은 ms단위입니다.
//void AttachEffectByName(DWORD dwParentPartIndex, const char * c_pszBoneName, const char * c_pszEffectName, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ms<6D><73><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>. //void AttachEffectByName(DWORD dwParentPartIndex, const char * c_pszBoneName, const char * c_pszEffectName, int dwLife = CActorInstance::EFFECT_LIFE_INFINITE ); // 수명은 ms단위입니다.
float GetDistance(CInstanceBase * pkTargetInst); float GetDistance(CInstanceBase * pkTargetInst);
float GetDistance(const TPixelPosition & c_rPixelPosition); float GetDistance(const TPixelPosition & c_rPixelPosition);
@ -763,7 +763,7 @@ class CInstanceBase
bool __Background_IsWaterPixelPosition(const TPixelPosition& c_rkPPos); bool __Background_IsWaterPixelPosition(const TPixelPosition& c_rkPPos);
bool __Background_GetWaterHeight(const TPixelPosition& c_rkPPos, float* pfHeight); bool __Background_GetWaterHeight(const TPixelPosition& c_rkPPos, float* pfHeight);
// 2004.07.25.myevan.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 2004.07.25.myevan.이펙트 안나오는 문제
///////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////
void __ClearAffectFlagContainer(); void __ClearAffectFlagContainer();
void __ClearAffects(); void __ClearAffects();
@ -817,7 +817,7 @@ class CInstanceBase
void __DisableChangingTCPState(); void __DisableChangingTCPState();
BOOL __IsEnableTCPProcess(UINT eCurFunc); BOOL __IsEnableTCPProcess(UINT eCurFunc);
// 2004.07.17.levites.isShow<EFBFBD><EFBFBD> ViewFrustumCheck<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 2004.07.17.levites.isShow ViewFrustumCheck로 변경
bool __CanRender(); bool __CanRender();
bool __IsInViewFrustum(); bool __IsInViewFrustum();

View File

@ -1,2 +1,2 @@
#define LOCALE_SERVICE_VIETNAM // <EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> #define LOCALE_SERVICE_VIETNAM // 베트남
#define LOCALE_SERVICE_VIETNAM_MILD // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> #define LOCALE_SERVICE_VIETNAM_MILD // 심의 버전

View File

@ -16,7 +16,7 @@ struct SGuildMark
}; };
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
Pixel m_apxBuf[SIZE]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD> Pixel m_apxBuf[SIZE]; // 실제 이미지
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
void Clear(); void Clear();
@ -38,11 +38,11 @@ struct SGuildMarkBlock
}; };
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
Pixel m_apxBuf[SIZE]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD> Pixel m_apxBuf[SIZE]; // 실제 이미지
BYTE m_abCompBuf[MAX_COMP_SIZE]; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BYTE m_abCompBuf[MAX_COMP_SIZE]; // 압축된 데이터
size_t m_sizeCompBuf; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9> size_t m_sizeCompBuf; // 압축된 크기
DWORD m_crc; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRC DWORD m_crc; // 압축된 데이터의 CRC
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
DWORD GetCRC() const; DWORD GetCRC() const;
@ -87,9 +87,9 @@ class CGuildMarkImage
bool SaveMark(DWORD posMark, BYTE * pbMarkImage); bool SaveMark(DWORD posMark, BYTE * pbMarkImage);
bool DeleteMark(DWORD posMark); bool DeleteMark(DWORD posMark);
bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // 서버 -> 클라이언트
DWORD GetEmptyPosition(); // <EFBFBD><EFBFBD> <20><>ũ <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD>´<EFBFBD>. DWORD GetEmptyPosition(); // 빈 마크 위치를 얻는다.
void GetBlockCRCList(DWORD * crcList); void GetBlockCRCList(DWORD * crcList);
void GetDiffBlocks(const DWORD * crcList, std::map<BYTE, const SGuildMarkBlock *> & mapDiffBlocks); void GetDiffBlocks(const DWORD * crcList, std::map<BYTE, const SGuildMarkBlock *> & mapDiffBlocks);

View File

@ -32,11 +32,11 @@ class CGuildMarkManager : public singleton<CGuildMarkManager>
// //
void SetMarkPathPrefix(const char * prefix); void SetMarkPathPrefix(const char * prefix);
bool LoadMarkIndex(); // <EFBFBD><EFBFBD>ũ <20>ε<EFBFBD><CEB5><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>) bool LoadMarkIndex(); // 마크 인덱스 불러오기 (서버에서만 사용)
bool SaveMarkIndex(); // <EFBFBD><EFBFBD>ũ <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> bool SaveMarkIndex(); // 마크 인덱스 저장하기
void LoadMarkImages(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> void LoadMarkImages(); // 모든 마크 이미지를 불러오기
void SaveMarkImage(DWORD imgIdx); // <EFBFBD><EFBFBD>ũ <20>̹<EFBFBD><CCB9><EFBFBD> <20><><EFBFBD><EFBFBD> void SaveMarkImage(DWORD imgIdx); // 마크 이미지 저장
bool GetMarkImageFilename(DWORD imgIdx, std::string & path) const; bool GetMarkImageFilename(DWORD imgIdx, std::string & path) const;
bool AddMarkIDByGuildID(DWORD guildID, DWORD markID); bool AddMarkIDByGuildID(DWORD guildID, DWORD markID);

View File

@ -1,11 +1,11 @@
#pragma once #pragma once
// <EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD>ƿ<EFBFBD> <20><><EFBFBD><EFBFBD>(<28><>) // 페이드아웃 길이(초)
#define MOVIEMAN_FADE_DURATION 1300 #define MOVIEMAN_FADE_DURATION 1300
#define MOVIEMAN_SKIPPABLE_YES true #define MOVIEMAN_SKIPPABLE_YES true
#define MOVIEMAN_POSTEFFECT_FADEOUT 1 #define MOVIEMAN_POSTEFFECT_FADEOUT 1
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DX 7.0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 동영상 재생에 DX 7.0 사용
struct IDirectDraw; struct IDirectDraw;
struct IDirectDrawSurface; struct IDirectDrawSurface;
struct IDirectDrawMediaStream; struct IDirectDrawMediaStream;

View File

@ -90,7 +90,7 @@ struct SNetworkUpdateActorData
short m_sAlignment; short m_sAlignment;
BYTE m_byPKMode; BYTE m_byPKMode;
DWORD m_dwMountVnum; DWORD m_dwMountVnum;
DWORD m_dwStateFlags; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Create <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DWORD m_dwStateFlags; // 본래 Create 때만 쓰이는 변수임
CAffectFlagContainer m_kAffectFlags; CAffectFlagContainer m_kAffectFlags;
SNetworkUpdateActorData() SNetworkUpdateActorData()

View File

@ -4,18 +4,18 @@
#include "Hackshield.h" #include "Hackshield.h"
#include METIN2HS_INCLUDE_ANTICPXSVR #include METIN2HS_INCLUDE_ANTICPXSVR
#else #else
#pragma pack(push) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> alignment <EFBFBD><EFBFBD><EFBFBD><EFBFBD> #pragma pack(push) //기존 alignment 저장
#pragma pack(8) #pragma pack(8)
#define ANTICPX_TRANS_BUFFER_MAX 400 #define ANTICPX_TRANS_BUFFER_MAX 400
typedef struct _AHNHS_TRANS_BUFFER typedef struct _AHNHS_TRANS_BUFFER
{ {
unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* <EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20>ִ<EFBFBD> ũ<><C5A9> */]; unsigned char byBuffer[ANTICPX_TRANS_BUFFER_MAX/* 송수신 패킷의 최대 크기 */];
unsigned short nLength; unsigned short nLength;
} AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER; } AHNHS_TRANS_BUFFER, *PAHNHS_TRANS_BUFFER;
#pragma pack(pop) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> alignment <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. #pragma pack(pop) // 기존 alignment 복구.
#endif /* !USE_AHNLAB_HACKSHIELD */ #endif /* !USE_AHNLAB_HACKSHIELD */
#include "../gamelib/RaceData.h" #include "../gamelib/RaceData.h"
@ -30,8 +30,8 @@ enum
HEADER_CG_LOGIN = 1, HEADER_CG_LOGIN = 1,
HEADER_CG_ATTACK = 2, HEADER_CG_ATTACK = 2,
HEADER_CG_CHAT = 3, HEADER_CG_CHAT = 3,
HEADER_CG_PLAYER_CREATE = 4, // <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> <20>÷<EFBFBD><C3B7>̾ <20><><EFBFBD><EFBFBD> HEADER_CG_PLAYER_CREATE = 4, // 새로운 플래이어를 생성
HEADER_CG_PLAYER_DESTROY = 5, // <EFBFBD>÷<EFBFBD><EFBFBD>̾ <20><><EFBFBD><EFBFBD>. HEADER_CG_PLAYER_DESTROY = 5, // 플래이어를 삭제.
HEADER_CG_PLAYER_SELECT = 6, HEADER_CG_PLAYER_SELECT = 6,
HEADER_CG_CHARACTER_MOVE = 7, HEADER_CG_CHARACTER_MOVE = 7,
HEADER_CG_SYNC_POSITION = 8, HEADER_CG_SYNC_POSITION = 8,
@ -95,8 +95,8 @@ enum
HEADER_CG_MESSENGER = 67, HEADER_CG_MESSENGER = 67,
//HEADER_BLANK68 = 68, //HEADER_BLANK68 = 68,
HEADER_CG_MALL_CHECKOUT = 69, HEADER_CG_MALL_CHECKOUT = 69,
HEADER_CG_SAFEBOX_CHECKIN = 70, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20>ִ´<D6B4>. HEADER_CG_SAFEBOX_CHECKIN = 70, // 아이템을 창고에 넣는다.
HEADER_CG_SAFEBOX_CHECKOUT = 71, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>. HEADER_CG_SAFEBOX_CHECKOUT = 71, // 아이템을 창고로 부터 빼온다.
HEADER_CG_PARTY_INVITE = 72, HEADER_CG_PARTY_INVITE = 72,
HEADER_CG_PARTY_INVITE_ANSWER = 73, HEADER_CG_PARTY_INVITE_ANSWER = 73,
HEADER_CG_PARTY_REMOVE = 74, HEADER_CG_PARTY_REMOVE = 74,
@ -144,7 +144,7 @@ enum
HEADER_CG_GUILD_SYMBOL_CRC = 113, HEADER_CG_GUILD_SYMBOL_CRC = 113,
HEADER_CG_SCRIPT_SELECT_ITEM = 114, HEADER_CG_SCRIPT_SELECT_ITEM = 114,
HEADER_CG_LOGIN4 = 115, HEADER_CG_LOGIN4 = 115,
HEADER_CG_LOGIN5_OPENID = 116, //OpenID : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. HEADER_CG_LOGIN5_OPENID = 116, //OpenID : 실행시 받은 인증키를 서버에 보냄.
HEADER_CG_RUNUP_MATRIX_ANSWER = 201, HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202, HEADER_CG_NEWCIBN_PASSPOD_ANSWER = 202,
@ -188,17 +188,17 @@ enum
HEADER_GC_CHANGE_SPEED = 18, HEADER_GC_CHANGE_SPEED = 18,
HEADER_GC_CHARACTER_UPDATE = 19, HEADER_GC_CHARACTER_UPDATE = 19,
#if defined(GAIDEN) #if defined(GAIDEN)
HEADER_GC_ITEM_DEL = 20, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_DEL = 20, // 아이템 창에 추가
HEADER_GC_ITEM_SET = 21, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_SET = 21, // 아이템 창에 추가
#else #else
HEADER_GC_ITEM_SET = 20, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_SET = 20, // 아이템 창에 추가
HEADER_GC_ITEM_SET2 = 21, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20>߰<EFBFBD> HEADER_GC_ITEM_SET2 = 21, // 아이템 창에 추가
#endif #endif
HEADER_GC_ITEM_USE = 22, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BFA1> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>) HEADER_GC_ITEM_USE = 22, // 아이템 사용 (주위 사람들에게 보여주기 위해)
HEADER_GC_ITEM_DROP = 23, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HEADER_GC_ITEM_DROP = 23, // 아이템 버리기
HEADER_GC_ITEM_UPDATE = 25, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ HEADER_GC_ITEM_UPDATE = 25, // 아이템 수치 업데이트
HEADER_GC_ITEM_GROUND_ADD = 26, // <EFBFBD>ٴڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> HEADER_GC_ITEM_GROUND_ADD = 26, // 바닥에 아이템 추가
HEADER_GC_ITEM_GROUND_DEL = 27, // <EFBFBD>ٴڿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> HEADER_GC_ITEM_GROUND_DEL = 27, // 바닥에서 아이템 삭제
HEADER_GC_QUICKSLOT_ADD = 28, HEADER_GC_QUICKSLOT_ADD = 28,
HEADER_GC_QUICKSLOT_DEL = 29, HEADER_GC_QUICKSLOT_DEL = 29,
HEADER_GC_QUICKSLOT_SWAP = 30, HEADER_GC_QUICKSLOT_SWAP = 30,
@ -386,13 +386,13 @@ enum
PLAYER_PER_ACCOUNT3 = 3, PLAYER_PER_ACCOUNT3 = 3,
PLAYER_PER_ACCOUNT4 = 4, PLAYER_PER_ACCOUNT4 = 4,
PLAYER_ITEM_SLOT_MAX_NUM = 20, // <EFBFBD>÷<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Դ<EFBFBD> <20><><EFBFBD><EFBFBD><EEB0A1> <20><><EFBFBD><EFBFBD>. PLAYER_ITEM_SLOT_MAX_NUM = 20, // 플래이어의 슬롯당 들어가는 갯수.
QUICKSLOT_MAX_LINE = 4, QUICKSLOT_MAX_LINE = 4,
QUICKSLOT_MAX_COUNT_PER_LINE = 8, // Ŭ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> QUICKSLOT_MAX_COUNT_PER_LINE = 8, // 클라이언트 임의 결정값
QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE, QUICKSLOT_MAX_COUNT = QUICKSLOT_MAX_LINE * QUICKSLOT_MAX_COUNT_PER_LINE,
QUICKSLOT_MAX_NUM = 36, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><> QUICKSLOT_MAX_NUM = 36, // 서버와 맞춰져 있는 값
SHOP_HOST_ITEM_MAX_NUM = 40, SHOP_HOST_ITEM_MAX_NUM = 40,
@ -465,7 +465,7 @@ typedef struct packet_mark_idxlist
BYTE header; BYTE header;
DWORD bufSize; DWORD bufSize;
WORD count; WORD count;
//<EFBFBD>ڿ<EFBFBD> size * (WORD + WORD)<EFBFBD><EFBFBD>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> //뒤에 size * (WORD + WORD)만큼 데이터 붙음
} TPacketGCMarkIDXList; } TPacketGCMarkIDXList;
typedef struct packet_mark_block typedef struct packet_mark_block
@ -474,7 +474,7 @@ typedef struct packet_mark_block
DWORD bufSize; DWORD bufSize;
BYTE imgIdx; BYTE imgIdx;
DWORD count; DWORD count;
// <EFBFBD>ڿ<EFBFBD> 64 x 48 x <EFBFBD>ȼ<EFBFBD>ũ<EFBFBD><EFBFBD>(4<><34><EFBFBD><EFBFBD>Ʈ) = 12288<38><38>ŭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
} TPacketGCMarkBlock; } TPacketGCMarkBlock;
typedef struct command_symbol_upload typedef struct command_symbol_upload
@ -543,7 +543,7 @@ typedef struct command_login
char pwd[PASS_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1];
} TPacketCGLogin; } TPacketCGLogin;
// start - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> // start - 권한 서버 접속을 위한 패킷들
typedef struct command_login2 typedef struct command_login2
{ {
BYTE header; BYTE header;
@ -566,7 +566,7 @@ typedef struct command_login5
char authKey[OPENID_AUTHKEY_LEN + 1]; char authKey[OPENID_AUTHKEY_LEN + 1];
DWORD adwClientKey[4]; DWORD adwClientKey[4];
} TPacketCGLogin5; } TPacketCGLogin5;
// end - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> // end - 권한 서버 접속을 위한 패킷들
typedef struct command_direct_enter typedef struct command_direct_enter
{ {
@ -585,8 +585,8 @@ typedef struct command_player_select
typedef struct command_attack typedef struct command_attack
{ {
BYTE header; BYTE header;
BYTE bType; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BYTE bType; // 공격 유형
DWORD dwVictimVID; // <EFBFBD><EFBFBD> VID DWORD dwVictimVID; // VID
BYTE bCRCMagicCubeProcPiece; BYTE bCRCMagicCubeProcPiece;
BYTE bCRCMagicCubeFilePiece; BYTE bCRCMagicCubeFilePiece;
} TPacketCGAttack; } TPacketCGAttack;
@ -1014,9 +1014,9 @@ typedef struct SShopItemTable
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
TItemPos pos; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD> TItemPos pos; // PC 상점에만 이용
DWORD price; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD> DWORD price; // PC 상점에만 이용
BYTE display_pos; // PC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̿<EFBFBD>, <20><><EFBFBD><EFBFBD> <20><>ġ. BYTE display_pos; // PC 상점에만 이용, 보일 위치.
} TShopItemTable; } TShopItemTable;
typedef struct SPacketCGMyShop typedef struct SPacketCGMyShop
@ -1116,18 +1116,18 @@ typedef struct command_script_select_item
// From Server // From Server
enum EPhase enum EPhase
{ {
PHASE_CLOSE, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>) PHASE_CLOSE, // 끊기는 상태 (또는 끊기 전 상태)
PHASE_HANDSHAKE, // <EFBFBD>Ǽ<EFBFBD>..;; PHASE_HANDSHAKE, // 악수..;;
PHASE_LOGIN, // <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD> <20><> PHASE_LOGIN, // 로그인 중
PHASE_SELECT, // ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȭ<><C8AD> PHASE_SELECT, // 캐릭터 선택 화면
PHASE_LOADING, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ε<EFBFBD> ȭ<><C8AD> PHASE_LOADING, // 선택 후 로딩 화면
PHASE_GAME, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȭ<><C8AD> PHASE_GAME, // 게임 화면
PHASE_DEAD, // <EFBFBD>׾<EFBFBD><EFBFBD><EFBFBD> <20><>.. (<28><><EFBFBD><EFBFBD> <20>ȿ<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..) PHASE_DEAD, // 죽었을 때.. (게임 안에 있는 것일 수도..)
PHASE_DBCLIENT_CONNECTING, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PHASE_DBCLIENT_CONNECTING, // 서버용
PHASE_DBCLIENT, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PHASE_DBCLIENT, // 서버용
PHASE_P2P, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PHASE_P2P, // 서버용
PHASE_AUTH, // <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> PHASE_AUTH, // 로그인 인증 용
}; };
typedef struct packet_phase typedef struct packet_phase
@ -1136,7 +1136,7 @@ typedef struct packet_phase
BYTE phase; BYTE phase;
} TPacketGCPhase; } TPacketGCPhase;
typedef struct packet_blank // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ. typedef struct packet_blank // 공백패킷.
{ {
BYTE header; BYTE header;
} TPacketGCBlank; } TPacketGCBlank;
@ -1273,7 +1273,7 @@ enum EPKModes
PK_MODE_MAX_NUM, PK_MODE_MAX_NUM,
}; };
// 2004.11.20.myevan.CRaceData::PART_MAX_NUM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°Ͱ<C2B0> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 2004.11.20.myevan.CRaceData::PART_MAX_NUM 사용안하게 수정 - 서버에서 사용하는것과 일치하지 않음
enum ECharacterEquipmentPart enum ECharacterEquipmentPart
{ {
CHR_EQUIPPART_ARMOR, CHR_EQUIPPART_ARMOR,
@ -1293,7 +1293,7 @@ typedef struct packet_char_additional_info
BYTE bEmpire; BYTE bEmpire;
DWORD dwGuildID; DWORD dwGuildID;
DWORD dwLevel; DWORD dwLevel;
short sAlignment; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ short sAlignment; //선악치
BYTE bPKMode; BYTE bPKMode;
DWORD dwMountVnum; DWORD dwMountVnum;
} TPacketGCCharacterAdditionalInfo; } TPacketGCCharacterAdditionalInfo;
@ -1405,14 +1405,14 @@ typedef struct packet_GlobalTime
enum EChatType enum EChatType
{ {
CHAT_TYPE_TALKING, /* <EFBFBD>׳<EFBFBD> ä<><C3A4> */ CHAT_TYPE_TALKING, /* 그냥 채팅 */
CHAT_TYPE_INFO, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>) */ CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */
CHAT_TYPE_NOTICE, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ CHAT_TYPE_NOTICE, /* 공지사항 */
CHAT_TYPE_PARTY, /* <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> */ CHAT_TYPE_PARTY, /* 파티말 */
CHAT_TYPE_GUILD, /* <EFBFBD><EFBFBD><EFBFBD> */ CHAT_TYPE_GUILD, /* 길드말 */
CHAT_TYPE_COMMAND, /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ CHAT_TYPE_COMMAND, /* 명령 */
CHAT_TYPE_SHOUT, /* <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> */ CHAT_TYPE_SHOUT, /* 외치기 */
CHAT_TYPE_WHISPER, // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Only Client Enum CHAT_TYPE_WHISPER, // 서버와는 연동되지 않는 Only Client Enum
CHAT_TYPE_BIG_NOTICE, CHAT_TYPE_BIG_NOTICE,
CHAT_TYPE_MAX_NUM, CHAT_TYPE_MAX_NUM,
}; };
@ -1426,7 +1426,7 @@ typedef struct packet_chatting
BYTE bEmpire; BYTE bEmpire;
} TPacketGCChat; } TPacketGCChat;
typedef struct packet_whisper // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ typedef struct packet_whisper // 가변 패킷
{ {
BYTE bHeader; BYTE bHeader;
WORD wSize; WORD wSize;
@ -1513,57 +1513,57 @@ enum EPointTypes
POINT_MAX_HP, // 6 POINT_MAX_HP, // 6
POINT_SP, // 7 POINT_SP, // 7
POINT_MAX_SP, // 8 POINT_MAX_SP, // 8
POINT_STAMINA, // 9 <EFBFBD><EFBFBD><EFBFBD>׹̳<EFBFBD> POINT_STAMINA, // 9 스테미너
POINT_MAX_STAMINA, // 10 <EFBFBD>ִ<EFBFBD> <20><><EFBFBD>׹̳<D7B9> POINT_MAX_STAMINA, // 10 최대 스테미너
POINT_GOLD, // 11 POINT_GOLD, // 11
POINT_ST, // 12 <EFBFBD>ٷ<EFBFBD> POINT_ST, // 12 근력
POINT_HT, // 13 ü<EFBFBD><EFBFBD> POINT_HT, // 13 체력
POINT_DX, // 14 <EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD> POINT_DX, // 14 민첩성
POINT_IQ, // 15 <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> POINT_IQ, // 15 정신력
POINT_ATT_POWER, // 16 <EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD> POINT_ATT_POWER, // 16 공격력
POINT_ATT_SPEED, // 17 <EFBFBD><EFBFBD><EFBFBD>ݼӵ<EFBFBD> POINT_ATT_SPEED, // 17 공격속도
POINT_EVADE_RATE, // 18 ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_EVADE_RATE, // 18 회피율
POINT_MOV_SPEED, // 19 <EFBFBD>̵<EFBFBD><EFBFBD>ӵ<EFBFBD> POINT_MOV_SPEED, // 19 이동속도
POINT_DEF_GRADE, // 20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_DEF_GRADE, // 20 방어등급
POINT_CASTING_SPEED, // 21 <EFBFBD>ֹ<EFBFBD><EFBFBD>ӵ<EFBFBD> (<28><><EFBFBD>ٿ<EFBFBD>Ÿ<EFBFBD><C5B8>*100) / (100 + <EFBFBD>̰<EFBFBD>) = <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٿ<EFBFBD> Ÿ<><C5B8> POINT_CASTING_SPEED, // 21 주문속도 (쿨다운타임*100) / (100 + 이값) = 최종 쿨다운 타임
POINT_MAGIC_ATT_GRADE, // 22 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD> POINT_MAGIC_ATT_GRADE, // 22 마법공격력
POINT_MAGIC_DEF_GRADE, // 23 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_MAGIC_DEF_GRADE, // 23 마법방어력
POINT_EMPIRE_POINT, // 24 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_EMPIRE_POINT, // 24 제국점수
POINT_LEVEL_STEP, // 25 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.. (1 2 3 <20><> <20><> <20><><EFBFBD><EFBFBD>, 4 <20>Ǹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>) POINT_LEVEL_STEP, // 25 한 레벨에서의 단계.. (1 2 3 될 때 보상, 4 되면 레벨 업)
POINT_STAT, // 26 <EFBFBD>ɷ<EFBFBD>ġ <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> POINT_STAT, // 26 능력치 올릴 수 있는 개수
POINT_SUB_SKILL, // 27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ POINT_SUB_SKILL, // 27 보조 스킬 포인트
POINT_SKILL, // 28 <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ POINT_SKILL, // 28 액티브 스킬 포인트
// POINT_SKILL_PASV, // 27 <EFBFBD>нú<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ø<EFBFBD> <20><> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> // POINT_SKILL_PASV, // 27 패시브 기술 올릴 수 있는 개수
// POINT_SKILL_ACTIVE, // 28 <EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>Ʈ // POINT_SKILL_ACTIVE, // 28 액티브 스킬 포인트
POINT_MIN_ATK, // 29 <EFBFBD>ּ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD> POINT_MIN_ATK, // 29 최소 파괴력
POINT_MAX_ATK, // 30 <EFBFBD>ִ<EFBFBD> <20>ı<EFBFBD><C4B1><EFBFBD> POINT_MAX_ATK, // 30 최대 파괴력
POINT_PLAYTIME, // 31 <EFBFBD>÷<EFBFBD><EFBFBD>̽ð<EFBFBD> POINT_PLAYTIME, // 31 플레이시간
POINT_HP_REGEN, // 32 HP ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_HP_REGEN, // 32 HP 회복률
POINT_SP_REGEN, // 33 SP ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_SP_REGEN, // 33 SP 회복률
POINT_BOW_DISTANCE, // 34 Ȱ <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ġ (meter) POINT_BOW_DISTANCE, // 34 활 사정거리 증가치 (meter)
POINT_HP_RECOVERY, // 35 ü<EFBFBD><EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_HP_RECOVERY, // 35 체력 회복 증가량
POINT_SP_RECOVERY, // 36 <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_SP_RECOVERY, // 36 정신력 회복 증가량
POINT_POISON_PCT, // 37 <EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_POISON_PCT, // 37 독 확률
POINT_STUN_PCT, // 38 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_STUN_PCT, // 38 기절 확률
POINT_SLOW_PCT, // 39 <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> Ȯ<><C8AE> POINT_SLOW_PCT, // 39 슬로우 확률
POINT_CRITICAL_PCT, // 40 ũ<EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_CRITICAL_PCT, // 40 크리티컬 확률
POINT_PENETRATE_PCT, // 41 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_PENETRATE_PCT, // 41 관통타격 확률
POINT_CURSE_PCT, // 42 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE> POINT_CURSE_PCT, // 42 저주 확률
POINT_ATTBONUS_HUMAN, // 43 <EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_HUMAN, // 43 인간에게 강함
POINT_ATTBONUS_ANIMAL, // 44 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_ANIMAL, // 44 동물에게 데미지 % 증가
POINT_ATTBONUS_ORC, // 45 <EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_ORC, // 45 웅귀에게 데미지 % 증가
POINT_ATTBONUS_MILGYO, // 46 <EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_MILGYO, // 46 밀교에게 데미지 % 증가
POINT_ATTBONUS_UNDEAD, // 47 <EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_UNDEAD, // 47 시체에게 데미지 % 증가
POINT_ATTBONUS_DEVIL, // 48 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Ǹ<EFBFBD>)<29><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % <20><><EFBFBD><EFBFBD> POINT_ATTBONUS_DEVIL, // 48 마귀(악마)에게 데미지 % 증가
POINT_ATTBONUS_INSECT, // 49 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_ATTBONUS_INSECT, // 49 벌레족
POINT_ATTBONUS_FIRE, // 50 ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_ATTBONUS_FIRE, // 50 화염족
POINT_ATTBONUS_ICE, // 51 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_ATTBONUS_ICE, // 51 빙설족
POINT_ATTBONUS_DESERT, // 52 <EFBFBD><EFBFBD><EFBFBD> POINT_ATTBONUS_DESERT, // 52 사막족
POINT_ATTBONUS_UNUSED0, // 53 UNUSED0 POINT_ATTBONUS_UNUSED0, // 53 UNUSED0
POINT_ATTBONUS_UNUSED1, // 54 UNUSED1 POINT_ATTBONUS_UNUSED1, // 54 UNUSED1
POINT_ATTBONUS_UNUSED2, // 55 UNUSED2 POINT_ATTBONUS_UNUSED2, // 55 UNUSED2
@ -1575,42 +1575,42 @@ enum EPointTypes
POINT_ATTBONUS_UNUSED8, // 61 UNUSED8 POINT_ATTBONUS_UNUSED8, // 61 UNUSED8
POINT_ATTBONUS_UNUSED9, // 62 UNUSED9 POINT_ATTBONUS_UNUSED9, // 62 UNUSED9
POINT_STEAL_HP, // 63 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_STEAL_HP, // 63 생명력 흡수
POINT_STEAL_SP, // 64 <EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> <20><><EFBFBD><EFBFBD> POINT_STEAL_SP, // 64 정신력 흡수
POINT_MANA_BURN_PCT, // 65 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> POINT_MANA_BURN_PCT, // 65 마나 번
/// <EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD> /// /// 피해시 보너스 ///
POINT_DAMAGE_SP_RECOVER, // 66 <EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ŷ<EFBFBD> ȸ<><C8B8> Ȯ<><C8AE> POINT_DAMAGE_SP_RECOVER, // 66 공격당할 시 정신력 회복 확률
POINT_BLOCK, // 67 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_BLOCK, // 67 블럭율
POINT_DODGE, // 68 ȸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_DODGE, // 68 회피율
POINT_RESIST_SWORD, // 69 POINT_RESIST_SWORD, // 69
POINT_RESIST_TWOHAND, // 70 POINT_RESIST_TWOHAND, // 70
POINT_RESIST_DAGGER, // 71 POINT_RESIST_DAGGER, // 71
POINT_RESIST_BELL, // 72 POINT_RESIST_BELL, // 72
POINT_RESIST_FAN, // 73 POINT_RESIST_FAN, // 73
POINT_RESIST_BOW, // 74 ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_BOW, // 74 화살 저항 : 대미지 감소
POINT_RESIST_FIRE, // 75 ȭ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : ȭ<><C8AD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_FIRE, // 75 화염 저항 : 화염공격에 대한 대미지 감소
POINT_RESIST_ELEC, // 76 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_ELEC, // 76 전기 저항 : 전기공격에 대한 대미지 감소
POINT_RESIST_MAGIC, // 77 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_MAGIC, // 77 술법 저항 : 모든술법에 대한 대미지 감소
POINT_RESIST_WIND, // 78 <EFBFBD>ٶ<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_RESIST_WIND, // 78 바람 저항 : 바람공격에 대한 대미지 감소
POINT_REFLECT_MELEE, // 79 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݻ<EFBFBD> POINT_REFLECT_MELEE, // 79 공격 반사
/// Ư<EFBFBD><EFBFBD> <20><><EFBFBD>ؽ<EFBFBD> /// /// 특수 피해시 ///
POINT_REFLECT_CURSE, // 80 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݻ<EFBFBD> POINT_REFLECT_CURSE, // 80 저주 반사
POINT_POISON_REDUCE, // 81 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> POINT_POISON_REDUCE, // 81 독데미지 감소
/// <EFBFBD><EFBFBD> <20>Ҹ<EFBFBD><D2B8><EFBFBD> /// /// 적 소멸시 ///
POINT_KILL_SP_RECOVER, // 82 <EFBFBD><EFBFBD> <20>Ҹ<EFBFBD><D2B8><EFBFBD> MP ȸ<EFBFBD><EFBFBD> POINT_KILL_SP_RECOVER, // 82 적 소멸시 MP 회복
POINT_EXP_DOUBLE_BONUS, // 83 POINT_EXP_DOUBLE_BONUS, // 83
POINT_GOLD_DOUBLE_BONUS, // 84 POINT_GOLD_DOUBLE_BONUS, // 84
POINT_ITEM_DROP_BONUS, // 85 POINT_ITEM_DROP_BONUS, // 85
/// ȸ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> /// /// 회복 관련 ///
POINT_POTION_BONUS, // 86 POINT_POTION_BONUS, // 86
POINT_KILL_HP_RECOVER, // 87 POINT_KILL_HP_RECOVER, // 87
@ -1635,32 +1635,32 @@ enum EPointTypes
POINT_STAT_RESET_COUNT = 112, POINT_STAT_RESET_COUNT = 112,
POINT_HORSE_SKILL = 113, POINT_HORSE_SKILL = 113,
POINT_MALL_ATTBONUS, // 114 <EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD> +x% POINT_MALL_ATTBONUS, // 114 공격력 +x%
POINT_MALL_DEFBONUS, // 115 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x% POINT_MALL_DEFBONUS, // 115 방어력 +x%
POINT_MALL_EXPBONUS, // 116 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ +x% POINT_MALL_EXPBONUS, // 116 경험치 +x%
POINT_MALL_ITEMBONUS, // 117 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<EFBFBD><EFBFBD> POINT_MALL_ITEMBONUS, // 117 아이템 드롭율 x/10
POINT_MALL_GOLDBONUS, // 118 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x/10<EFBFBD><EFBFBD> POINT_MALL_GOLDBONUS, // 118 돈 드롭율 x/10
POINT_MAX_HP_PCT, // 119 <EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +x% POINT_MAX_HP_PCT, // 119 최대생명력 +x%
POINT_MAX_SP_PCT, // 120 <EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD> +x% POINT_MAX_SP_PCT, // 120 최대정신력 +x%
POINT_SKILL_DAMAGE_BONUS, // 121 <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)% POINT_SKILL_DAMAGE_BONUS, // 121 스킬 데미지 *(100+x)%
POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *(100+x)% POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 평타 데미지 *(100+x)%
POINT_SKILL_DEFEND_BONUS, // 123 <EFBFBD><EFBFBD>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_SKILL_DEFEND_BONUS, // 123 스킬 방어 데미지
POINT_NORMAL_HIT_DEFEND_BONUS, // 124 <EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_NORMAL_HIT_DEFEND_BONUS, // 124 평타 방어 데미지
POINT_PC_BANG_EXP_BONUS, // 125 POINT_PC_BANG_EXP_BONUS, // 125
POINT_PC_BANG_DROP_BONUS, // 126 PC<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ӷ<EFBFBD> <20><><EFBFBD>ʽ<EFBFBD> POINT_PC_BANG_DROP_BONUS, // 126 PC방 전용 드롭률 보너스
POINT_ENERGY = 128, // 128 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> POINT_ENERGY = 128, // 128 기력
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ui <EFBFBD><EFBFBD>. // 기력 ui .
// <EFBFBD>̷<EFBFBD><EFBFBD><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>, // 이렇게 하고 싶지 않았지만,
// uiTaskBar<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> affect<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, // uiTaskBar에서는 affect에 접근할 수 없고,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<>󸮾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> blend_affect<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD>, // 더구나 클라리언트에서는 blend_affect는 관리하지 않아,
// <EFBFBD>ӽ÷<EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD> <20>д<EFBFBD>. // 임시로 이렇게 둔다.
POINT_ENERGY_END_TIME = 129, // 129 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> POINT_ENERGY_END_TIME = 129, // 129 기력 종료 시간
// Ŭ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ // 클라이언트 포인트
POINT_MIN_WEP = 200, POINT_MIN_WEP = 200,
POINT_MAX_WEP, POINT_MAX_WEP,
POINT_MIN_MAGIC_WEP, POINT_MIN_MAGIC_WEP,
@ -1668,7 +1668,7 @@ enum EPointTypes
POINT_HIT_RATE, POINT_HIT_RATE,
//POINT_MAX_NUM = 255,=>stdafx.h <EFBFBD><EFBFBD>/ //POINT_MAX_NUM = 255,=>stdafx.h /
}; };
typedef struct packet_points typedef struct packet_points
@ -1684,8 +1684,8 @@ typedef struct packet_point_change
DWORD dwVID; DWORD dwVID;
BYTE Type; BYTE Type;
long amount; // <EFBFBD>ٲ<EFBFBD> <20><> long amount; // 바뀐 값
long value; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> long value; // 현재 값
} TPacketGCPointChange; } TPacketGCPointChange;
typedef struct packet_motion typedef struct packet_motion
@ -1723,7 +1723,7 @@ typedef struct packet_set_item
BYTE pos; BYTE pos;
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
DWORD flags; // <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> DWORD flags; // 플래그 추가
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemSet; } TPacketGCItemSet;
@ -1750,8 +1750,8 @@ typedef struct packet_set_item2
TItemPos Cell; TItemPos Cell;
DWORD vnum; DWORD vnum;
BYTE count; BYTE count;
DWORD flags; // <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> DWORD flags; // 플래그 추가
DWORD anti_flags; // <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> DWORD anti_flags; // 플래그 추가
bool highlight; bool highlight;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
@ -1832,7 +1832,7 @@ typedef struct packet_shop_start
struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM]; struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM];
} TPacketGCShopStart; } TPacketGCShopStart;
typedef struct packet_shop_start_ex // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TSubPacketShopTab* shop_tabs <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. typedef struct packet_shop_start_ex // 다음에 TSubPacketShopTab* shop_tabs 이 따라옴.
{ {
typedef struct sub_packet_shop_tab typedef struct sub_packet_shop_tab
{ {
@ -1975,12 +1975,12 @@ typedef struct packet_move
enum enum
{ {
QUEST_SEND_IS_BEGIN = 1 << 0, QUEST_SEND_IS_BEGIN = 1 << 0,
QUEST_SEND_TITLE = 1 << 1, // 28<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> QUEST_SEND_TITLE = 1 << 1, // 28자 까지
QUEST_SEND_CLOCK_NAME = 1 << 2, // 16<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> QUEST_SEND_CLOCK_NAME = 1 << 2, // 16자 까지
QUEST_SEND_CLOCK_VALUE = 1 << 3, QUEST_SEND_CLOCK_VALUE = 1 << 3,
QUEST_SEND_COUNTER_NAME = 1 << 4, // 16<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> QUEST_SEND_COUNTER_NAME = 1 << 4, // 16자 까지
QUEST_SEND_COUNTER_VALUE = 1 << 5, QUEST_SEND_COUNTER_VALUE = 1 << 5,
QUEST_SEND_ICON_FILE = 1 << 6, // 24<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> QUEST_SEND_ICON_FILE = 1 << 6, // 24자 까지
}; };
typedef struct packet_quest_info typedef struct packet_quest_info
@ -2003,8 +2003,8 @@ typedef struct packet_attack
{ {
BYTE header; BYTE header;
DWORD dwVID; DWORD dwVID;
DWORD dwVictimVID; // <EFBFBD><EFBFBD> VID DWORD dwVictimVID; // VID
BYTE bType; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> BYTE bType; // 공격 유형
} TPacketGCAttack; } TPacketGCAttack;
typedef struct packet_c2c typedef struct packet_c2c
@ -2074,7 +2074,7 @@ enum EPVPModes
typedef struct packet_duel_start typedef struct packet_duel_start
{ {
BYTE header ; BYTE header ;
WORD wSize ; // DWORD<EFBFBD><EFBFBD> <20>? <20><><EFBFBD><EFBFBD> = (wSize - sizeof(TPacketGCPVPList)) / 4 WORD wSize ; // DWORD가 몇개? 개수 = (wSize - sizeof(TPacketGCPVPList)) / 4
} TPacketGCDuelStart ; } TPacketGCDuelStart ;
typedef struct packet_pvp typedef struct packet_pvp
@ -2230,7 +2230,7 @@ enum
typedef struct packet_guild_sub_grade typedef struct packet_guild_sub_grade
{ {
char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD> char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 길드장, 길드원 등의 이름
BYTE auth_flag; BYTE auth_flag;
} TPacketGCGuildSubGrade; } TPacketGCGuildSubGrade;
@ -2271,7 +2271,7 @@ enum EGuildWarState
GUILD_WAR_ON_WAR, GUILD_WAR_ON_WAR,
GUILD_WAR_END, GUILD_WAR_END,
GUILD_WAR_DURATION = 2*60*60, // 2<EFBFBD>ð<EFBFBD> GUILD_WAR_DURATION = 2*60*60, // 2시간
}; };
typedef struct packet_guild_war typedef struct packet_guild_war
@ -2347,8 +2347,8 @@ typedef struct SRefineTable
DWORD src_vnum; DWORD src_vnum;
DWORD result_vnum; DWORD result_vnum;
BYTE material_count; BYTE material_count;
int cost; // <EFBFBD>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD> int cost; // 소요 비용
int prob; // Ȯ<EFBFBD><EFBFBD> int prob; // 확률
TMaterial materials[REFINE_MATERIAL_MAX_NUM]; TMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TRefineTable; } TRefineTable;
@ -2383,17 +2383,17 @@ enum SPECIAL_EFFECT
SE_SUCCESS, SE_SUCCESS,
SE_FAIL, SE_FAIL,
SE_FR_SUCCESS, SE_FR_SUCCESS,
SE_LEVELUP_ON_14_FOR_GERMANY, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 14<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) SE_LEVELUP_ON_14_FOR_GERMANY, //레벨업 14일때 ( 독일전용 )
SE_LEVELUP_UNDER_15_FOR_GERMANY,//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15<31>϶<EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ) SE_LEVELUP_UNDER_15_FOR_GERMANY,//레벨업 15일때 ( 독일전용 )
SE_PERCENT_DAMAGE1, SE_PERCENT_DAMAGE1,
SE_PERCENT_DAMAGE2, SE_PERCENT_DAMAGE2,
SE_PERCENT_DAMAGE3, SE_PERCENT_DAMAGE3,
SE_AUTO_HPUP, SE_AUTO_HPUP,
SE_AUTO_SPUP, SE_AUTO_SPUP,
SE_EQUIP_RAMADAN_RING, // <EFBFBD>ʽ´<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ SE_EQUIP_RAMADAN_RING, // 초승달의 반지를 착용하는 순간에 발동하는 이펙트
SE_EQUIP_HALLOWEEN_CANDY, // <EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(-_-;)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트
SE_EQUIP_HAPPINESS_RING, // ũ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0BAB9> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지를 착용하는 순간에 발동하는 이펙트
SE_EQUIP_LOVE_PENDANT, // <EFBFBD>߷<EFBFBD>Ÿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD>Ʈ(71145) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ʈ (<28>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ƴ<EFBFBD>) SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
}; };
typedef struct SPacketGCSpecialEffect typedef struct SPacketGCSpecialEffect
@ -2696,7 +2696,7 @@ typedef struct packet_hs_check_req
AHNHS_TRANS_BUFFER Req; AHNHS_TRANS_BUFFER Req;
} TPacketHSCheck; } TPacketHSCheck;
//NOTE : recv/send<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, bPacketData<74><61> <20><><EFBFBD><20>ٲ<EFBFBD><D9B2><EFBFBD>. //NOTE : recv/send에 공통으로 생김, bPacketData의 내용만 바뀐다.
typedef struct packet_xtrap_verify typedef struct packet_xtrap_verify
{ {
BYTE bHeader; BYTE bHeader;
@ -2714,7 +2714,7 @@ typedef struct packet_autoban_quiz
// END_OF_AUTOBAN // END_OF_AUTOBAN
#ifdef __AUCTION__ #ifdef __AUCTION__
// Argument<EFBFBD><EFBFBD> <20><EFBFBD><EBB5B5> cmd<6D><64> <20><><EFBFBD><EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>. // Argument의 용도는 cmd에 따라 다르다.
typedef struct SPacketCGAuctionCmd typedef struct SPacketCGAuctionCmd
{ {
BYTE bHeader; BYTE bHeader;
@ -2740,7 +2740,7 @@ typedef struct SPacketGCSpecificEffect
char effect_file[128]; char effect_file[128];
} TPacketGCSpecificEffect; } TPacketGCSpecificEffect;
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> // 용혼석
enum EDragonSoulRefineWindowRefineType enum EDragonSoulRefineWindowRefineType
{ {
DragonSoulRefineWindow_UPGRADE, DragonSoulRefineWindow_UPGRADE,

View File

@ -80,7 +80,7 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
CURSOR_SHAPE_COUNT, CURSOR_SHAPE_COUNT,
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̹<EFBFBD> <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> enumerate // 안정적인 네이밍 변환을 위한 임시 enumerate
NORMAL = CURSOR_SHAPE_NORMAL, NORMAL = CURSOR_SHAPE_NORMAL,
ATTACK = CURSOR_SHAPE_ATTACK, ATTACK = CURSOR_SHAPE_ATTACK,
TARGET = CURSOR_SHAPE_TARGET, TARGET = CURSOR_SHAPE_TARGET,
@ -254,16 +254,16 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
protected: protected:
IGraphBuilder* m_pGraphBuilder; // Graph Builder IGraphBuilder* m_pGraphBuilder; // Graph Builder
IBaseFilter* m_pFilterSG; // Sample Grabber <EFBFBD><EFBFBD><EFBFBD><EFBFBD> IBaseFilter* m_pFilterSG; // Sample Grabber 필터
ISampleGrabber* m_pSampleGrabber; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD> ĸó<C4B8><C3B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD> ISampleGrabber* m_pSampleGrabber; // 영상 이미지 캡처를 위한 샘플 그래버
IMediaControl* m_pMediaCtrl; // Media Control IMediaControl* m_pMediaCtrl; // Media Control
IMediaEventEx* m_pMediaEvent; // Media Event IMediaEventEx* m_pMediaEvent; // Media Event
IVideoWindow* m_pVideoWnd; // Video Window IVideoWindow* m_pVideoWnd; // Video Window
IBasicVideo* m_pBasicVideo; IBasicVideo* m_pBasicVideo;
BYTE* m_pCaptureBuffer; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD> ĸó<C4B8><C3B3> <20><><EFBFBD><EFBFBD> BYTE* m_pCaptureBuffer; // 영상 이미지를 캡처한 버퍼
LONG m_lBufferSize; // Video <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9> <20><><EFBFBD><EFBFBD> LONG m_lBufferSize; // Video 버퍼 크기 변수
CGraphicImageTexture* m_pLogoTex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD> CGraphicImageTexture* m_pLogoTex; // 출력할 텍스쳐
bool m_bLogoError; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD> bool m_bLogoError; // 영상 읽기 상태
bool m_bLogoPlay; bool m_bLogoPlay;
int m_nLeft, m_nRight, m_nTop, m_nBottom; int m_nLeft, m_nRight, m_nTop, m_nBottom;

View File

@ -3,7 +3,7 @@
#include "Packet.h" #include "Packet.h"
/* /*
* <EFBFBD><EFBFBD>ȯ â <20><><EFBFBD><EFBFBD> * 교환 창 관련
*/ */
class CPythonExchange : public CSingleton<CPythonExchange> class CPythonExchange : public CSingleton<CPythonExchange>
{ {
@ -86,7 +86,7 @@ class CPythonExchange : public CSingleton<CPythonExchange>
protected: protected:
bool m_isTrading; bool m_isTrading;
bool m_elk_mode; // <EFBFBD><EFBFBD>ũ<EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>ؼ<EFBFBD> <20><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. bool m_elk_mode; // 엘크를 클릭해서 교환했을때를 위한 변종임.
TExchangeData m_self; TExchangeData m_self;
TExchangeData m_victim; TExchangeData m_victim;
}; };

View File

@ -1,8 +1,8 @@
#pragma once #pragma once
// Note : ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Item<EFBFBD><EFBFBD> Update<EFBFBD><EFBFBD> Rendering<EFBFBD><EFBFBD> å<><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // Note : 화면상에 떨어진 Item Update Rendering을 책임지는 한편
// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> Icon Image Instance<EFBFBD><EFBFBD> <20>Ŵ<EFBFBD><C5B4><EFBFBD> <20><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD> <20>ְ<EFBFBD> // 각 아이템의 데이타와 Icon Image Instance의 매니져 역할까지 주관
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>ϴ<EFBFBD> - 2003. 01. 13. [levites] // 조금 난잡해진거 같기도 하다 - 2003. 01. 13. [levites]
#include "../EterGrnLib/ThingInstance.h" #include "../EterGrnLib/ThingInstance.h"

View File

@ -148,7 +148,7 @@ class CPythonMiniMap : public CScreen, public CSingleton<CPythonMiniMap>
DWORD dwDstTime; DWORD dwDstTime;
}; };
// ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ // 캐릭터 리스트
typedef struct typedef struct
{ {
float m_fX; float m_fX;
@ -180,14 +180,14 @@ class CPythonMiniMap : public CScreen, public CSingleton<CPythonMiniMap>
float m_fMiniMapRadius; float m_fMiniMapRadius;
// <EFBFBD><EFBFBD> <20>׸<EFBFBD>... // 맵 그림...
LPDIRECT3DTEXTURE9 m_lpMiniMapTexture[AROUND_AREA_NUM]; LPDIRECT3DTEXTURE9 m_lpMiniMapTexture[AROUND_AREA_NUM];
// <EFBFBD>̴ϸ<EFBFBD> Ŀ<><C4BF> // 미니맵 커버
CGraphicImageInstance m_MiniMapFilterGraphicImageInstance; CGraphicImageInstance m_MiniMapFilterGraphicImageInstance;
CGraphicExpandedImageInstance m_MiniMapCameraraphicImageInstance; CGraphicExpandedImageInstance m_MiniMapCameraraphicImageInstance;
// ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ // 캐릭터 마크
CGraphicExpandedImageInstance m_PlayerMark; CGraphicExpandedImageInstance m_PlayerMark;
CGraphicImageInstance m_WhiteMark; CGraphicImageInstance m_WhiteMark;

View File

@ -154,7 +154,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
bool SendQuickSlotDelPacket(BYTE wpos); bool SendQuickSlotDelPacket(BYTE wpos);
bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos); bool SendQuickSlotMovePacket(BYTE wpos, BYTE change_pos);
// PointReset <EFBFBD><EFBFBD> <20>ӽ<EFBFBD> // PointReset 개 임시
bool SendPointResetPacket(); bool SendPointResetPacket();
// Shop // Shop
@ -257,7 +257,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
// CRC Report // CRC Report
bool __SendCRCReportPacket(); bool __SendCRCReportPacket();
// <EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD> <20><>ȭ // 용홍석 강화
bool SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos); bool SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos);
// Handshake // Handshake
@ -277,7 +277,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
void __TEST_SetSkillGroupFake(int iIndex); void __TEST_SetSkillGroupFake(int iIndex);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// Phase <EFBFBD><EFBFBD><EFBFBD><EFBFBD> // Phase 관련
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
public: public:
void SetOffLinePhase(); void SetOffLinePhase();
@ -314,7 +314,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
bool SendMessengerRemovePacket(const char * c_szKey, const char * c_szName); bool SendMessengerRemovePacket(const char * c_szKey, const char * c_szName);
protected: protected:
bool OnProcess(); // State<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. bool OnProcess(); // State들을 실제로 실행한다.
void OffLinePhase(); void OffLinePhase();
void HandShakePhase(); void HandShakePhase();
void LoginPhase(); void LoginPhase();
@ -528,10 +528,10 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
// Use Potion // Use Potion
bool RecvSpecialEffect(); bool RecvSpecialEffect();
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>ߵ<EFBFBD> <20><>Ŷ. // 서버에서 지정한 이팩트 발동 패킷.
bool RecvSpecificEffect(); bool RecvSpecificEffect();
// <EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // 용혼석 관련
bool RecvDragonSoulRefine(); bool RecvDragonSoulRefine();
// MiniMap Info // MiniMap Info
@ -554,10 +554,10 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
bool RecvXTrapVerifyRequest(); bool RecvXTrapVerifyRequest();
protected: protected:
// <EFBFBD≯<EFBFBD>Ƽ<EFBFBD><EFBFBD> // 이모티콘
bool ParseEmoticon(const char * pChatMsg, DWORD * pdwEmoticon); bool ParseEmoticon(const char * pChatMsg, DWORD * pdwEmoticon);
// <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ݵ<EFBFBD> // 파이썬으로 보내는 콜들
void OnConnectFailure(); void OnConnectFailure();
void OnScriptEventStart(int iSkin, int iIndex); void OnScriptEventStart(int iSkin, int iIndex);

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
/* /*
* NPC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>. * NPC 데이터 프로토 타잎을 관리 한다.
*/ */
class CPythonNonPlayer : public CSingleton<CPythonNonPlayer> class CPythonNonPlayer : public CSingleton<CPythonNonPlayer>
{ {

View File

@ -7,13 +7,13 @@
class CInstanceBase; class CInstanceBase;
/* /*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> (<28>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>) <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. * 메인 캐릭터 (자신이 조정하는 캐릭터) 가 가진 정보들을 관리한다.
* *
* 2003-01-12 Levites <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CPythonCharacter<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD> <20>Ը<EFBFBD><D4B8><EFBFBD> <20>ʹ<EFBFBD> Ŀ<><C4BF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * 2003-01-12 Levites 본래는 CPythonCharacter가 가지고 있었지만 규모가 너무 커져 버린데다
* <EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <20>ָ<EFBFBD><D6B8>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>и<EFBFBD> * 위치도 애매해서 따로 분리
* 2003-07-19 Levites <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> ó<><C3B3> CharacterInstance<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> * 2003-07-19 Levites 메인 캐릭터의 이동 처리 CharacterInstance에서 떼어다 붙임
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD> <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * 기존의 데이타 보존의 역할에서 완벽한 메인 플레이어 제어 클래스로
* Ż<EFBFBD>ٲ<EFBFBD> <20><>. * 탈바꿈 함.
*/ */
class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
@ -88,8 +88,8 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
float fnextEfficientPercentage; float fnextEfficientPercentage;
BOOL isCoolTime; BOOL isCoolTime;
float fCoolTime; // NOTE : <EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> float fCoolTime; // NOTE : 쿨타임 중인 스킬 슬롯을
float fLastUsedTime; // <EFBFBD><EFBFBD>â<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> float fLastUsedTime; // 퀵창에 등록할 때 사용하는 변수
BOOL bActive; BOOL bActive;
} TSkillInstance; } TSkillInstance;
@ -161,15 +161,15 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
SKILL_PERFECT_MASTER, SKILL_PERFECT_MASTER,
}; };
// <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ưȭ <20><><EFBFBD><EFBFBD>ü.. <20>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD> Ưȭ ó<><C3B3> <20>۾<EFBFBD><DBBE><EFBFBD> <20><> <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ᱹ Ưȭó<C8AD><C3B3>. // 자동물약 상태 관련 특화 구조체.. 이런식의 특화 처리 작업을 안 하려고 최대한 노력했지만 실패하고 결국 특화처리.
struct SAutoPotionInfo struct SAutoPotionInfo
{ {
SAutoPotionInfo() : bActivated(false), totalAmount(0), currentAmount(0) {} SAutoPotionInfo() : bActivated(false), totalAmount(0), currentAmount(0) {}
bool bActivated; // Ȱ<EFBFBD><EFBFBD>ȭ <20>Ǿ<EFBFBD><C7BE>°<EFBFBD>? bool bActivated; // 활성화 되었는가?
long currentAmount; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> long currentAmount; // 현재 남은 양
long totalAmount; // <EFBFBD><EFBFBD>ü <20><> long totalAmount; // 전체 양
long inventorySlotIndex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> long inventorySlotIndex; // 사용중인 아이템의 인벤토리상 슬롯 인덱스
}; };
enum EAutoPotionType enum EAutoPotionType
@ -227,7 +227,7 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
// Reserved // Reserved
bool NEW_IsEmptyReservedDelayTime(float fElapsedtime); // <EFBFBD><EFBFBD><EFBFBD>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> - [levites] bool NEW_IsEmptyReservedDelayTime(float fElapsedtime); // 네이밍 교정 논의 필요 - [levites]
// Dungeon // Dungeon
@ -240,7 +240,7 @@ class CPythonPlayer : public CSingleton<CPythonPlayer>, public IAbstractPlayer
// flying target set // flying target set
void Clear(); void Clear();
void ClearSkillDict(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD> ClearGame <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD> <20>Լ<EFBFBD> void ClearSkillDict(); // 없어지거나 ClearGame 쪽으로 포함될 함수
void NEW_ClearSkillData(bool bAll = false); void NEW_ClearSkillData(bool bAll = false);
void Update(); void Update();

View File

@ -63,9 +63,9 @@ class CPythonPlayerEventHandler : public CActorInstance::IEventHandler
virtual void OnSetFlyTarget(); virtual void OnSetFlyTarget();
virtual void OnShoot(DWORD dwSkillIndex); virtual void OnShoot(DWORD dwSkillIndex);
virtual void OnNoTarget() { /*Tracenf("Shoot : target<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");*/ } virtual void OnNoTarget() { /*Tracenf("Shoot : target이 없습니다.");*/ }
virtual void OnExplodingOutOfRange() { /*Tracenf("Shoot : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");*/ } virtual void OnExplodingOutOfRange() { /*Tracenf("Shoot : 사정거리가 끝났습니다.");*/ }
virtual void OnExplodingAtBackground() { /*Tracenf("Shoot : <EFBFBD><EFBFBD><EFBFBD><20>¾ҽ<C2BE><D2BD>ϴ<EFBFBD>.");*/ } virtual void OnExplodingAtBackground() { /*Tracenf("Shoot : 배경에 맞았습니다.");*/ }
virtual void OnExplodingAtAnotherTarget(DWORD dwSkillIndex, DWORD dwVID); virtual void OnExplodingAtAnotherTarget(DWORD dwSkillIndex, DWORD dwVID);
virtual void OnExplodingAtTarget(DWORD dwSkillIndex); virtual void OnExplodingAtTarget(DWORD dwSkillIndex);

View File

@ -3,12 +3,12 @@
#include "Packet.h" #include "Packet.h"
/* /*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3> * 상점 처리
* *
* 2003-01-16 anoa <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD> * 2003-01-16 anoa 일차 완료
* 2003-12-26 levites <EFBFBD><EFBFBD><EFBFBD><EFBFBD> * 2003-12-26 levites 수정
* *
* 2012-10-29 rtsummit <EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD> ȭ<><C8AD> <20><><EFBFBD><EFBFBD> <20><> tab <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> shop Ȯ<EFBFBD><EFBFBD>. * 2012-10-29 rtsummit 새로운 화폐 출현 및 tab 기능 추가로 인한 shop 확장.
* *
*/ */
typedef enum typedef enum

View File

@ -104,7 +104,7 @@ class CPythonSkill : public CSingleton<CPythonSkill>
SKILL_ATTRIBUTE_NEED_EMPTY_BOTTLE = (1 << 12), SKILL_ATTRIBUTE_NEED_EMPTY_BOTTLE = (1 << 12),
SKILL_ATTRIBUTE_NEED_POISON_BOTTLE = (1 << 13), SKILL_ATTRIBUTE_NEED_POISON_BOTTLE = (1 << 13),
SKILL_ATTRIBUTE_ATTACK_SKILL = (1 << 14), SKILL_ATTRIBUTE_ATTACK_SKILL = (1 << 14),
SKILL_ATTRIBUTE_TIME_INCREASE_SKILL = (1 << 15), // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> attribute SKILL_ATTRIBUTE_TIME_INCREASE_SKILL = (1 << 15), // 증지술 전용 attribute
SKILL_ATTRIBUTE_CHARGE_ATTACK = (1 << 16), SKILL_ATTRIBUTE_CHARGE_ATTACK = (1 << 16),
SKILL_ATTRIBUTE_PASSIVE = (1 << 17), SKILL_ATTRIBUTE_PASSIVE = (1 << 17),
SKILL_ATTRIBUTE_CANNOT_LEVEL_UP = (1 << 18), SKILL_ATTRIBUTE_CANNOT_LEVEL_UP = (1 << 18),
@ -138,7 +138,7 @@ class CPythonSkill : public CSingleton<CPythonSkill>
enum enum
{ {
SKILL_GRADE_COUNT = 3, SKILL_GRADE_COUNT = 3,
SKILL_EFFECT_COUNT = 4, //<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD> <20><>,<2C><>,<2C><><EFBFBD><EFBFBD> <20>̿ܿ<CCBF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20>߰<EFBFBD>. SKILL_EFFECT_COUNT = 4, //스킬은 초,중,고급 이외에 마스터일때 이펙트 추가.
SKILL_GRADE_STEP_COUNT = 20, SKILL_GRADE_STEP_COUNT = 20,
SKILL_GRADEGAP = 25, SKILL_GRADEGAP = 25,
}; };
@ -243,8 +243,8 @@ class CPythonSkill : public CSingleton<CPythonSkill>
DWORD dwSkillAttribute; DWORD dwSkillAttribute;
DWORD dwNeedWeapon; DWORD dwNeedWeapon;
DWORD dwTargetRange; DWORD dwTargetRange;
WORD wMotionIndex; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> WORD wMotionIndex; // 없어질 변수
WORD wMotionIndexForMe; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> WORD wMotionIndexForMe; // 없어질 변수
BOOL isRequirement; BOOL isRequirement;
std::string strRequireSkillName; std::string strRequireSkillName;

View File

@ -3,7 +3,7 @@
#include "../eterBase/Singleton.h" #include "../eterBase/Singleton.h"
/* /*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴϴ<EFBFBD> <20>ؽ<EFBFBD>Ʈ ó<><C3B3> * 따라다니는 텍스트 처리
*/ */
class CPythonTextTail : public CSingleton<CPythonTextTail> class CPythonTextTail : public CSingleton<CPythonTextTail>
{ {
@ -20,8 +20,8 @@ class CPythonTextTail : public CSingleton<CPythonTextTail>
CGraphicTextInstance* pLevelTextInstance; CGraphicTextInstance* pLevelTextInstance;
// Todo : <EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD> VID<49><44> <20>ٲٵ<D9B2><D9B5><EFBFBD> <20>Ѵ<EFBFBD>. // Todo : 이건 전부 VID로 바꾸도록 한다.
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ƨ<><C6A8> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD><EFBFBD> // 도중 캐릭터가 없어질 경우 튕길 가능성이 있음
CGraphicObjectInstance * pOwner; CGraphicObjectInstance * pOwner;
DWORD dwVirtualID; DWORD dwVirtualID;
@ -29,7 +29,7 @@ class CPythonTextTail : public CSingleton<CPythonTextTail>
float x, y, z; float x, y, z;
float fDistanceFromPlayer; float fDistanceFromPlayer;
D3DXCOLOR Color; D3DXCOLOR Color;
BOOL bNameFlag; // <EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <20>Բ<EFBFBD> <20>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> BOOL bNameFlag; // 이름도 함께 켤것인지의 플래그
float xStart, yStart; float xStart, yStart;
float xEnd, yEnd; float xEnd, yEnd;