www.pudn.com > back.rar > userinfo.h
//_________________________________________________________________________________
//
// UserInfo.H
//
// ÃßÈÄ¿¡ ¼ÒÄÏ Å¬·¡½º Ãß°¡
// user class ´Â °èÁ¤ÀÌ ¾Æ´Ñ
// °ÔÀÓ³» ij¸¯ÅÍ °ü·Ã 󸮸¦ ÇÑ´Ù.
//_________________________________________________________________________________
//
#ifndef _USERINFO_H_
#define _USERINFO_H_
//_________________________________________________________________________________
//
// userinfo class.....
//_________________________________________________________________________________
//
class CItem;
// Á¾Á· ¼±¾ð
#define RACE_UNION 0
#define RACE_FAIRY 1
// 2Â÷ÀüÁ÷½ºÅ³ BUFFSKILL 10->12
#define MAX_BUFF 12 // ³ªÁß¿¡ ¹Ù²ãÁÖÀÚ..Áö±ÝÀº 10°³°¡ ÇѰè
#define MAX_WARPID 20 // Á×À»¶§ ¼Òȯ ¿öÇÁ ¾ÆÀ̵ð ÀúÀåÀ§Ä¡ 20°³
enum Character_Status
{
CHR_ALIVE = 0, // ÀÏ¹Ý »óÅÂ
CHR_RESSIVE, // ÆÐ½Ãºê½ºÅ³ÀÌ °É¸° »óÅÂ
CHR_REST, // ÈÞ½Ä »óÅÂ
CHR_PAGIC, // º¸Á¶¸¶¹ý »óÅÂ
CHR_POISON, // µ¶¿¡ °É¸° »óÅÂ
CHR_STUN, // ½ºÅÏ
CHR_DEATH, // Á×Àº »óÅÂ
CHR_WARP, // ¿öÇÁÁßÀÎ »óÅÂ...ÀÌ »óÅ¿¡¼´Â ³¯¶ó¿À´Â ¸ðµç ¸Þ¼¼Áö ¾Ã±â...2-19
CHR_WALK, // ÇÇ·Î ¶Ç´Â ¾Æ´Ï¸¶ ¾ÆÀÌÅÛ¿¡ ÀÇÇÑ °È±â»óÅÂ
APP_LOGIN, // ·Î±×ÀÎ »óÅ¿¡¼ ¿öÇÁ 032
};
struct CP_Change_Stat;
//#ifdef KOREA
const int SPEED_HACK_TIME = 5000; // 2005.2.21 3000->5000 ¼öÁ¤
//#else
//const int SPEED_HACK_TIME = 3000;
//#endif
#define FTIMECHECK 3000.0f
class CSpeedInfo // 2004.9.13 Donny SPEEDHACK
{
public:
DWORD m_lPreTime;
BYTE m_byCount;
DWORD m_dwSendTime[2];
DWORD m_dwRecvTime[2];
DWORD m_dwClientTime[2];
CSpeedInfo() { Clear(); }
~CSpeedInfo() { }
void Clear()
{
m_lPreTime = 0;
m_byCount = 0;
memset( m_dwSendTime, 0, sizeof(m_dwSendTime) );
memset( m_dwRecvTime, 0, sizeof(m_dwRecvTime) );
memset( m_dwClientTime, 0, sizeof(m_dwClientTime) );
}
void Reset()
{
m_byCount = 0;
memset( m_dwSendTime, 0, sizeof(m_dwSendTime) );
memset( m_dwRecvTime, 0, sizeof(m_dwRecvTime) );
memset( m_dwClientTime, 0, sizeof(m_dwClientTime) );
}
};
/////////////////////////////////////////////////////////////////////
// 2004.11.10 Donny : 2Â÷½ºÅ³ : º£¾î¾îÅØ (Æê°ø°Ý)
// Class Name : CPetAttackInfo
// Description : Æê°ø°ÝÀÇ Á¤º¸ÀÇ ¸â¹öº¯¼ö¿Í ¼ÂÆÃ ¹× ¸®¼ÂÀÇ ¸â¹öÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù.
/////////////////////////////////////////////////////////////////////
#define PET_ATTACK_GAP 3000 // Æê°ø°Ý½Ã ÆêÀÇ °ø°Ý ½Ã°£ GAP Áï, 3Ãʸ¶´Ù °ø°ÝÇÑ´Ù.
class CPetAttackInfo
{
public:
bool m_bCanAttack; // ÆêÀÇ °ø°Ý°¡´É¿©ºÎ
DWORD m_dwTimeWhenAttack; // ÆêÀÌ Å¸°ÙÀ» °ø°ÝÇϱ⠽ÃÀÛÇÑ ½Ã°£
DWORD m_dwTargetUnique; // Ÿ°ÙÀÇ À¯´ÐÅ©¹øÈ£
int m_nTargetIndex; // Ÿ°ÙÀÇ À妽º ( À¯Àú°¡ Ÿ°ÙÀ϶§ -1 )
int m_nDamage; // µ¥¹ÌÁö
bool m_bSummon; // Ÿ°ÙÀÌ npcÀ϶§ ±× npc°¡ ¼ÒȯµÇ¾ú´Â ÁöÀÇ ¿©ºÎ
CPetAttackInfo() { Clear(); }
~CPetAttackInfo() { }
void MakeAttack( DWORD TargetUnique, int TargetIndex, int Damage, bool Summon = false )
{
if ( m_bCanAttack == false )
{
m_dwTimeWhenAttack = g_dwCurTickTime;
}
m_bCanAttack = true;
m_dwTargetUnique = TargetUnique; // **¸ó½ºÅͰø°Ý½Ã nArrayPos°ªÀÌ µé¾î°£´Ù.**
m_nTargetIndex = TargetIndex;
m_nDamage = Damage;
m_bSummon = Summon;
}
void Clear()
{
m_bCanAttack = false;
m_dwTimeWhenAttack = 0;
m_dwTargetUnique = 0;
m_nTargetIndex = 0;
m_nDamage = 0;
m_bSummon = false;
}
};
// 2Â÷ÀüÁ÷½ºÅ³ BUFFSKILL
struct OnBuffSkill
{
bool AuraSword; // ¿À¶ó¼Òµå°¡ °É·Á ÀÖÀ¸¸é, true
BYTE AuraDeffender; // ¿À¶óµðÆæ´õ°¡ °É·Á ÀÖÀ¸¸é 0º¸´Ù Å©´Ù. ¿ÏÀü¹æ¾î Ƚ¼ö°¡ µé¾î°£´Ù.
BYTE HawkDistance; // ¼Ò¿ïȣũ¼ÒȯÀ¸·Î½á ´Ã¾î³ª´Â »çÁ¤°Å¸®.
bool BlessShield; // ºí·¡½º½¯µå°¡ °É·Á ÀÖÀ¸¸é, true
// 2Â÷ÀüÁ÷½ºÅ³ º¯°æ
BYTE HolyWeapon; // ¿Ã¶ó°¥ ±âº» °ø°Ý·Â ÆÛ¼¾Æ®
BYTE HolyShield; // ¿Ã¶ó°¥ ±âº» ¹æ¾î·Â ÆÛ¼¾Æ®
BYTE HolyLife; // ¿Ã¶ó°¥ HP Áõ°¡·® ÆÛ¼¾Æ®
BYTE HolyLifeSpeed; // ÀÚ¿¬È¸º¹¼Óµµ
};
class CUserInfo
{
public:
CUserInfo();
~CUserInfo();
// Á¢¼Ó Á¾·á ¹× ÃʱâÈ
void CloseClient() {
if( m_pxClient != NULL )
m_pxClient->Close(1000);
}
void Clear();
void Mode_Clear();
// ¸â¹ö º¯¼ö°ü·Ã ¸®ÅÏ
long Return_Unique ( ) { return m_character_unique; }
DWORD Return_Account_ID() { return m_account_id; }
int Return_Floor() { return m_floor; }
int Return_Map_ID() { return m_map_id; }
char* Return_Character_Name() { return m_character_info.ID; }
int Return_Character_Race() { return m_character_info.race; }
int Return_Character_Sex() { return m_character_info.sex; }
DWORD Return_Character_Head() { return m_character_info.head; }
DWORD Return_Character_Body() { return m_character_info.body; }
DWORD Return_Character_LHand() { return m_character_info.l_hand; }
DWORD Return_Character_RHand()
{
if( m_EquipArray[2].Return_Item_Index() != 0 )
return m_EquipArray[2].Return_Item_Index();
return 0;
}
DWORD Return_Character_Arm() { return m_character_info.arm; }
DWORD Return_Character_Foot() { return m_character_info.foot; }
DWORD Return_Character_FAccessory() { return m_character_info.accessory1; }
DWORD Return_Character_SAccessory() { return m_character_info.accessory2; }
int Return_Character_Effect( int num ) { return m_character_info.effect[num]; }
int Return_Character_XBlock() { return m_cur_block->Return_Xblock_No(); }
Char_Info_All* Return_Character_Info() { return &m_character_info; }
CItem* Return_Equip_Item( int pos ) { return &m_EquipArray[pos]; }
CItem* Return_EquipSkin_Item( int pos ) { return &m_EquipSkinArray[pos]; } // 2005.3.11 Donny ij¸¯ÅͽºÅ² : Âø¿ëÇÑ À§Ä¡ÀÇ ½ºÅ²¾ÆÀÌÅÛÆ÷ÀÎÅÍ ¸®ÅÏÇÏ´Â ÇÔ¼ö
CItem* Return_Tool_Item( int pos ) { return &m_Tool_Inventory[pos]; }
DWORD Return_Pos();
CItem* Return_TarNecta( BYTE bTar , DWORD unique ); // 0 : ³ØÅ¸ 1 : Ÿ¸£ 2 : °ÇÃÊ
CItem* Return_Item( DWORD itemidx, DWORD itemunique, bool equip );
CItem* Return_Item_Unique( DWORD dwItemunique );
CItem* Return_Item_Index( DWORD dwItemIndex );
bool Return_Have_Item( DWORD dwItemIndex ); // ¾ÆÀÌÅÛÀ» ÀÚ±â°í ÀÖ´ÂÁö À¯¹«
// 1005-LIM //
void Return_Check_Have_Item( DWORD ItemIndex ); //¾ÆÀÌÅÛÀ» ¹ö¸®°Å³ª ÆÈ°Å³ª µîÀ» Çҽÿ¡ Ç×»ó È£ÃâÈÄ ¾ÆÀÌÅÛ ÀÖ´ÂÁö ¿©ºÎ Á¶»ç.
char* Return_IP();
// ij¸¯ÅÍ À§Ä¡¼öÁ¤..À̵¿µµÂø ¿Ï·á½Ã ºí·° ¼Ó¤¸¼º ±îÁö º¯°æ
void Position_Modify( CBlock *dest_block, int floor ); // 7-5
// ij¸¯ÅÍ À§Ä¡¼öÁ¤...À̵¿ °¡´É ¿©ºÎ¿Í »ó°ü¾øÀÌ Ä³¸¯ÅÍÀÇ À§Ä¡¸¸ º¯°æ
void Position_Change( CBlock *dest_block ) { m_cur_block = dest_block; }
void Do_Nothing( );
// 1005-LIM //
void Check_EsotericaZone( int map, int pos );
// À¯Àú ¹æ¼Û °ü·Ã
// bool WriteBuffer( BYTE* buf, DWORD size );
void WriteBuffer( BYTE* buf, DWORD size );
void WriteError( BYTE byCode )
{
SP_Error_Code code;
code.m_byErr = byCode;
WriteBuffer( (BYTE*)&code, sizeof( SP_Error_Code ) );
}
// º¯¼ö ¼ÂÆÃ °ü·Ã
void Set_Unique( long unique ) { m_character_unique = unique; }
void Set_Account_ID( DWORD id ) { m_account_id = id; }
void Set_Start_Block( CBlock* cb )
{
cb->Block_Occupy( m_character_unique , START_FLOOR );
m_cur_block = cb;
}
void Set_Now_Block( CBlock* nb )
{
m_cur_block = nb;
}
void Set_Client( CXClient* set_client ) { m_pxClient = set_client; }
void Set_Character_Sex( int sex ) { m_character_info.sex = sex; }
void Set_Items( CItem* item, DWORD itemidx, DWORD itemunique )
{
item->Set_ID( itemidx );
item->m_Item_Unique = itemunique;
};
void Set_CXClient( CXClient* cx ) { m_pxClient = cx; }
void Set_Map_ID( int mid ){ m_map_id = mid; }
void Set_Char_Info( int pos );
void Set_Character_Stat(); // ij¸¯ÅÍ ±âº» °è»ê
void Set_Horse_Item(); // ¸»¾ÈÀå°ú Åõ±¸¼¼ÆÃ
// Âø¿ë °ü·Ã
DWORD Takeoff_Equipment( DWORD itemidx , DWORD itemequippos , DWORD itempos );
int Change_Equipment( DWORD itemidx, DWORD itemunique , BYTE pos );
DWORD Takeoff_Potion_Equipment( DWORD itemidx , DWORD itempos );
bool Input_Potion_Equipment(DWORD itemidx, DWORD itemunique , int *pos); //¹°¾àÀ» Âø¿ëÇÒ¶§ ¾´´Ù.
bool Check_Item_Ability( int nIndex ); // Àü¿ª iteminfo¿¡¼ ÂüÁ¶ÇÒ ¾ÆÀÌÅÛ ´É·ÂÄ¡ ÃæºÐÇϸé true
int GetEquipIdx( DWORD _dwItemIdx );
// ¾ÆÀÌÅÛ °ü·Ã
bool Drop_Item( DWORD itemidx, DWORD itemunique, bool equip, CItem* item );
bool Takeout_Item( DWORD itemidx );
int Pickup_Item( DWORD itemidx, DWORD itemunique, DWORD tileno , _Value4 *iteminfo , int anama = 0 );
int Take_Item( DWORD itemidx, DWORD itemunique , _Value4 *iteminfo );
DWORD Buy_Item( DWORD itemidx, int count, int marketindex ,DWORD* Pos ,DWORD OverIndex, DWORD OverUnique , _Value4 *iteminfo);
void Sell_Item( CItem* sell );
void Delete_Item( DWORD index , DWORD unique , int count , bool quest );
void Item_Life_Change( bool bAttack ); // ¾ÆÀÌÅÛ ¼ö¸í °ü·Ã.°ø°ÝÀ̸é true ¹æ¾î¸é false
void ArrowBox_Life_Change();
bool Check_Item( DWORD dwIndex, int nCount ); // ÇØ´ç¾ÆÀÌÅÛ °¹¼ö¸¸Å ÀÖ³ª?
// ItemBill-LIM //
bool Is_Check_Item_Index( DWORD dwIndex );
// ItemMall-LIM //
bool Is_Check_Item_Unique( DWORD dwIndex, DWORD dwUnique );
// 1117-LIM
void Unique_Item_Del( DWORD itemidx );
void Unique_Item_Get( DWORD itemidx );
// 1117-LIM
void Get_Random_Item( int type, DWORD itemidx, DWORD itemunique );
// 6.4 ÀÓâ¿ø.Äù½ºÆ® °ü·Ã ÇÔ¼ö//
int Check_Item_Count( DWORD dwIndex ); //ÇØ´ç ¾ÆÀÌÅÛÀÇ °³¼ö¸¦ ±¸ÇÑ´Ù.
void Check_Limit_Quest_Fail( int LimitQuest ); //Á¦ÇÑÀÌ ÀÖ´Â Äù½ºÆ®½Ã Äù½ºÆ® ½ÇÆÐ °ü·Ã?
void NormalQuest_Bonus( int index ); //ÀϹÝÄù½ºÆ®ÀÇ ÀϹݺ¸³Ê½º
bool NormalQuest_SpecialBonus( int index ); //ÀϹÝÄù½ºÆ®ÀÇ Æ¯º°º¸³Ê½º
void SpecialQuest_Bonus( int index ); //½ºÆä¼ÈÄù½ºÆ®ÀÇ ÀϹݺ¸³Ê½º
bool SpecialQuest_SpecialBonus( int index ); //½ºÆä¼ÈÄù½ºÆ®ÀÇ Æ¯º°º¸³Ê½º
void ScenarioQuest_Bonus( int index ); //½Ã³ª¸®¿ÀÄù½ºÆ®ÀÇ ÀϹݺ¸³Ê½º
// bool ScenarioQuest_SpecialBonus( int index ); //½Ã³ª¸®¿ÀÄù½ºÆ®ÀÇ Æ¯º°º¸³Ê½º
void Quest_Init( int index ); //Äù½ºÆ® ÃʱâÈ
void Quest_ReStart( int index ); //Äù½ºÆ® Àç½ÃÀÛ( ½ÇÆÐÇϰųª ¼º°ø½Ã¿¡ ´Ù½Ã ½ÃÀÛÇÑ´Ù.)
void Check_NPC_Quest_Suc( CP_Quest* msg ); //NPCº¸»óÀϰæ¿ì ¼º°ø¿©ºÎ.
int Etc_Bonus(); //±âŸ º¸»ó°ü·Ã
// void Check_PreQuest( BYTE quest_class, int quest_index ); //»çÀüÄù½ºÆ® Ãß°¡.
void Check_Killed_NPC_Quest( int npc_index, int npc_map_id); //NPC¸¦ Á×ÀÌ´Â Äù½ºÆ® °ü·Ã üũ
void Check_Item_Quest( DWORD ItemIdx = 0); //¾ÆÀÌÅÛ °ü·Ã
void Quest_WriteBuffer( BYTE bycommand, BYTE byreason, _MyQuest myquest );
bool Quest_Require( BYTE byClass, WORD wIndex, BYTE quest_count, DWORD &dwtime );
#ifdef FULLMOON_IVENT
void Delete_Moon_Item();
#endif
// 1108-LIM //
#ifdef THIN_THIN_RO_DAY
void Delete_THIN_THIN_RO_Item();
#endif
////////////////////////////////////////////////////////////////////////////////////////////////
// ½ºÅ³¹× ½ºÅÈ °ü·Ã ÃʱâÈ
bool Change_Stat( CP_Change_Stat* change );
void Init_Stat();
void Init_Skill();
void Change_Job_Skill_Init(); // 2Â÷ÀüÁ÷-LIM //
// ItemBill-LIM //
int Return_Skill_Point();
// ȸº¹ °ü·Ã.À¯Àú »ç¸Á°ü·Ã
void Recover_HP( DWORD cur_time, BYTE flag );
void Die_Drop(); // Á×À»¶§ ¾ÆÀÌÅÛ ¶³±¸±â
void User_Die( DWORD dwTick, bool bNPC, bool bBothPK ); // boolÀº npc¿¡°Ô Á×¾ú³ª??, ½Ö¹æ PKÀÌ¿´´ÂÁö
// À¯Àú º¯È
void Change_User_HPMP( int nChangeHP, int nChangeMP );
void Change_User_ChargeExtacy( int nChangeCharge, int nChangeExtacy );
void Check_Charge();
void Check_Extacy();
void Check_Horse_Extacy();
void Change_Money( int nCash );
bool Use_Skillbook( BYTE byPoint ); // ¿Ã¶ó°¥ Æ÷ÀÎÆ®
bool Use_Expbook( long nExperience ); // 2004.8.2 °æÇèÄ¡ºÏ »ç¿ë½Ã.
bool Use_Hexpbook( long nExperience ); // 2004.2.22 ¸»°æÇèÄ¡ºÏ »ç¿ë½Ã.
void Change_Fame( int fame ); //¸í¼ºÄ¡ º¯È¯.ÀÓâ¿ø Ãß°¡.
void Check_FamebyMake( BYTE byType, bool bSuc ); // ¾ÆÀÌÅÛ Á¦Á¶ Á¾·ù, ¼º°ø ¿©ºÎ
// À¯Àústatus °ü·Ã
void Restore_Status();
void Restore_ExtraStatus(); // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ)
void ResetExtraStatusSkillData(); // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ)
// 2Â÷ÀüÁ÷½ºÅ³ STATUS : ºÒÀÇ º¸È£¸·
void ContinueDamage( DWORD dwTime, DWORD byGetTime, BYTE byAttackRate, BYTE byUntillHp ); // ?Ãʸ¶´Ù ü·ÂÀÇ ?%¾¿ ü·ÂÀÇ ?±îÁö Áö¼Óµ¥¹ÌÁö¸¦ ¹Þ´Â´Ù.
void Set_Status( BYTE byStatus, DWORD dwTime );
void Set_ExtraStatus( BYTE byExtraStatus, DWORD dwTime ); // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ)
void Check_User_Status( DWORD cur_time );
void Check_User_TarNecta();
bool Check_CanMoveAndAttack_FromStatus(); // 2004.12.27 Donny PVP : À¯Àú »óŰ¡ ¿òÁ÷ÀÌ°í °ø°ÝÇÒ¼ö ÀÖ´Â »óÅÂÀÎÁö üũÇÏ´Â ÇÔ¼öÀÌ´Ù.
// ÇÕü °ü·Ã
void Unite_Character( int ArrayNo );
void Set_Unite( int ArrayNo );
void Seperate();
// À¯Àú ¸»»óÅ °ü·Ã
void Set_Horse_Status( bool bHave, BYTE byStatus )
{
m_bHave = bHave;
m_istatus = byStatus;
}
bool Horse_Wear( long lUnique ); // ²Ù¹Ð ¾ÆÀÌÅÛ À¯´ÏÅ©
bool Horse_Change( BYTE byType, BYTE byNumber, CItem* Item, int No ); // ¾ÈÀå/Åõ±¸, ÇØ´ç¾ÆÀÌÅÛÀÇ ¹øÈ£
BYTE Get_Horse_Percent(); // ¸» ½ºÆ®·¹½º ÆÛ¼¾Æ®
void Set_Horse_Stress(); // ¸»ÀÇ ÃÖ´ë ½ºÆ®·¹½º ¼öÄ¡ ¼³Á¤
void Set_Horse_Data( BYTE byType, int No ); // ¾ÈÀå/Åõ±¸, ÇØ´ç¾ÆÀÌÅÛ ¹è¿ ¹øÈ£
void Set_Horse_Data_First(); // Á¢¼Ó½Ã ¸»ÀÇ Âø¿ë¾ÆÀÌÅÛ ¹è¿ ¹øÈ£ ¼ÂÆÃ
void Set_Horse_Trade( Horse_Info_Load* pData );
// Åä±Û
void Toggle_Run()
{
if( m_bToggle )
m_bToggle = false;
else m_bToggle = true;
}
bool Toggle_AttackMode(); // ½Ã°£Á¦ÇÑ ¶§¸Å
// ½ºÅ³ °ü·Ã
bool Check_Skill( BYTE bySkill ); // ÇØ´ç ½ºÅ³ ¹è¿üÀ¸¸é true, ¾È¹è¿üÀ¸¸é false
bool Check_BasicSkill( BYTE bySkill ); // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âº»½ºÅ³Áß¿¡¸¸ üũÇÑ´Ù.
bool Check_SpecialSkill( BYTE bySkill ); // 2Â÷ÀüÁ÷½ºÅ³ ETC
int Learn_Skill( BYTE bySkill );
int Upgrade_Skill( BYTE bySkill ); // ÇØ´ç ½ºÅ³ ¾÷..¼º°øÇÏ¸é ¾÷±×·¹ÀÌµå ¼öÄ¡, ½ÇÆÐÇϸé -1..½ÇÆÐ´Â ¾÷±×·¹À̵å Ç® ¶Ç´Â ½ºÅ³ Æ÷ÀÎÆ® 0
void User_Under_Skill( CUserInfo* pUser, int nSkill, BYTE bySkillLevel, int x, int y, MAP& rMap ); // À¯Àú°¡ ¹üÀ§°ø°Ý ´çÇÑ´Ù..°ø°ÝÀÚ..½ºÅ³..½ºÅ³·¹º§..±âÁØÁ¡, ¸Ê
void User_Under_Range( int nAtt, bool bSkill, DWORD dwNpcIndex ); // npc°ø°Ý½Ã ¹üÀ§ °ø°ÝÀ϶§ ÁÖº¯ À¯Àú ó¸®..°ø°Ý·Â // 2004.11.10 Donny NPC¹üÀ§°ø°Ý : ¼öÁ¤
bool Check_NeedSkillsForLearning( BYTE bySkill ); // 2Â÷ÀüÁ÷½ºÅ³ ETC
// buff°ü·Ã
void Remove_All_Buff(); // Áװųª Á¢¼Ó Á¾·á ÇßÀ»¶§ ¹öÇÁ ¹è¿
void SendBuff( CUserInfo* pTarget ); // target user¿¡°Ô ÇöÀç ¹öÇÁ »óÅ ½÷ÁÖ±â
void Check_Buff();
void Check_PassiveSkill(); // 2004.10.27 Donny 2Â÷½ºÅ³ : ÆÐ½Ãºê½ºÅ³À» °¡Áö°í Àִ üũÇÑ´Ù.
int Return_StatPoint( BYTE bySkill, BYTE byLevel );
DWORD Return_Buff_Time( BYTE bySkill, BYTE byLevel );
int Check_Light_Shield( int nDmg ); // ¶óÀÌÆ®´× ½¯µå °ü·Ã...°É·Á ÀÖÀ¸¸é npc°¡ ÀÔÀ» µ¥¹ÌÁö ¸®ÅÏ
BYTE Return_SkillLevel( DWORD dwSkillIndex ); // ÇØ´ç ½ºÅ³ ·¹º§ ¸®ÅÏ
BYTE Return_OriginSkillLevel( DWORD dwSkillIndex ); // 2Â÷ÀüÁ÷½ºÅ³ ETC
BYTE Return_BasicSkillLevel( DWORD dwSkillIndex ); // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âº»½ºÅ³Áß¿¡¼¸¸ °Ë»öÇÏ¿© ·¹º§À» ¸®ÅÏÇÑ´Ù.
// ¼ö¸® °ü·Ã
bool Is_Equip_Item(); // true¸é Âø¿ëÇѰŠÀÖ°í false¸é Çϳªµµ ¾Èá´Ù
void Repair_Item( long lUnique ); // ÀϹݼö¸®
void Repair_Life( long lUnique ); // ¼ö¸í¼ö¸®
// ÆÄƼ °ü·Ã
void Withdraw_Party()
{
m_nPartyPos = NON_PARTY; // ÇØ´ç ÆÄƼ ¹è¿¹øÈ£..¼ÓÇØÀÖÁö ¾ÊÀ¸¸é -1...Á¨Àå ¼¹ö°¡ ´Þ¶óÁö¸é ¾î¶»°Ô ÇϳÄ??
m_lLeaderUnique = -1; // ¼ÓÇÑ ÆÄƼÀÇ ¸®´õÀÇ À¯´ÏÅ©..¼¹ö°¡ ´Þ¶óÁö¸é °°¾ÆÁú¶§ ¸®´õÀÇ À¯´ÏÅ©·Î ã´Â´Ù..
}
//Äù½ºÆ® °ü·Ã
void Check_Quest( BYTE classnum , int casenum , DWORD index );
bool Success_Quest( BYTE QuestClass , BYTE casenum , DWORD index );
void Get_Quest_Pay( BYTE questclass , BYTE cur_index );
void Get_Quest_Item( DWORD index , int count );
void Get_Quest_Cash( int count );
//itembill
BYTE Item_Bill( DWORD itemidx , int count );
// ItemBill-LIM //
BYTE Return_PrivateShop_Grade();
// 1007-LIM //
void Return_ItemMaster_Grade();
// â°í °ü·Ã
int Storage_Input( BYTE pos , int style , byte tab , byte array ); // â°í¿¡ ³Ö´Â´Ù.
// ItemBill-LIM //
int Storage_DefaultInput(int tab, int style, byte array );
int Storage_Output( BYTE pos , BYTE tab , int style ); // â°í¿¡¼ »«´Ù.
DWORD Storage_Input_Item( DWORD itemidx , DWORD itemunique , BYTE tab , BYTE itemposarray );
DWORD Storage_Output_Item( DWORD itemidx , DWORD itemunique , BYTE tab , BYTE itemposarray );
bool Check_Input_Storage_Item( int style, int array = 254 ); // ItemBill-LIM //
void Get_Item_Storage( DWORD index , int count ); // ItemBill-LIM //
bool Auto_Storage_Item_Input( int tab, DWORD index ); // 1004-LIM //
// ¾ÆÀÌÅÛ °È °ü·Ã
int Find_Item_Upgrade_type( BYTE* jewel , DWORD* jewelunique );
int Can_Upgrade( int type , _uItemType itemindex , DWORD itemunique , int caem , CItem* pItem, bool redjewel );
int Fail_Upgrade( CItem* pItem, int type , BYTE* downrate); // ½ÇÆÐ½Ã ó¸®
int Basic_Pay( BYTE* jewel , DWORD *Unique , int caem ); // ¼º°ø½Ã ó¸®
// YD 6_24Á¦Á¶
bool Son_Inven_Input(int style, int array, int pos);
int Check_Inven_Input(int style);
bool Making_Item(DWORD MakingItemIndex,int type=0 ,int up=0);
DWORD Making_Item_Type5(DWORD *pItemIndex,DWORD *pItemUnique ,DWORD makingItemIndex);
DWORD Making_Item_Type4( DWORD* pItemIndex,DWORD *pItemUnique,DWORD makingItemIndex);
DWORD Making_Item_Type3 ( DWORD* AlloyIndex ,DWORD *pItemUnique,DWORD makingItemIndex);
DWORD Making_Item_Type2(DWORD *pItemIndex,DWORD *pItemUnique ,DWORD makingItemIndex);
DWORD Making_Item_Type1(DWORD *pItemIndex,DWORD *pItemUnique ,DWORD makingItemIndex);
// Àκ¥Å丮 °ü·Ã
BYTE Find_Item_size( DWORD ItemIndex ); // Àκ¥Å丮¿¡¼ ¾ÆÀÌÅÛÀÌ Â÷ÁöÇϴ ļö È®ÀÎ
bool Check_Input_Item( int style , int array = 254 ); // Àι꿡 ³ÖÀ» ¼ö ÀÖ´ÂÁö °Ë»ç
int Inven_Input( BYTE pos , int style , byte array); // Àκ¥¿¡ ³Ö´Â´Ù.
int Inven_DefaultInput(int style , byte array ); // ½ºÅ¸ÀÏ¿¡ µû¶ó Â÷ÁöÇÏ´Â À§Ä¡ µ¹¸®±â
int Inven_Output( BYTE pos , int style); // Àκ¥¿¡¼ »«´Ù.
int Find_Item( DWORD pos , byte scale ); // ÀιêÅ丮¿¡¼ ¾ÆÀÌÅÛÀÇ °ãħ À¯¹« ÆÇ´ÜÇØ¼ °ãÄ¡¸é ÀÎ¹ê ¹è¿À» ¹ÝȯÇÑ´Ù.
int Find_Storage_Item( BYTE tab , BYTE pos , byte scale ); // â°í¿¡¼ ¾ÆÀÌÅÛÀÇ °ãħ À¯¹« ÆÇ´ÜÇØ¼ °ãÄ¡¸é â°í ¹è¿À» ¹ÝȯÇÑ´Ù.
void Clean_Chack_Inven();
// 2004-2-8
bool Check_Guild_Condition(); // ±æµå »ý¼º Á¶°Ç È®ÀÎ
// ³ªÁß¿¡ »ç¿ëÇÒ ÇÔ¼ö
bool Register_Board( DWORD index, DWORD unique );
// ¸»°ü·Ã
void Rebirth_Horse( ); // ¿©·¯¸» Àϰæ¿ì ÀÎÀÚ°¡ ÇÊ¿äÇÏ´Ù.
void Horse_Keepin( ); // ¸»À» ¸¶±Â°£¿¡ ³Ö´Â´Ù
void Horse_Keepout( ); // ¸»À» ¸¶±Â°£¿¡¼ »«´Ù.
void Delete_Horse( int flag ); // ¸»À» DB¿¡¼ Á¦°ÅÇÑ´Ù. 0,ȯ»ýÇÒ¸» 1, »ê¸» 2, ±³È¯½Ã »èÁ¦
BYTE Check_Upgrade_Horse();
// Ÿ¶ôµµ °ü·Ã
void Check_PK_Count( int nCount ); // º¯ÇÒ¾ç
// Æ÷ÀÎÆ® °ü·Ã È®ÀÎ..¹× º¸³»±â
void WritePoint( BYTE byType ); // º¸³¾ ŸÀÔ..À̰ſ¡ µû¶ó
// pkÆä³ÎƼ ¸Ô°í ·¹º§ ´Ù¿î
void User_LevelDown( BYTE byCause );
// 2004.9.14 Donny Áß±¹PK½Ã½ºÅÛ : ¸ó½ºÅÍÇÑÅ× Á×À¸¸é : 0, À¯ÀúÇÑÅ× Á×À¸¸é : 1, ÀϹÝÀ¯Àú¸¦ Á×ÀÓÀ¸·Î½á : 2
// ItemBill-LIM //
void Check_Storage_copy();
// ½Ã°£ È®Àΰü·Ã
DWORD m_dwStartTime; // warp_ready·Î °ÔÀÓ ½ÃÀÛ ½Ã°£...
DWORD m_dwLoadingTime; // ·Îµù ³¡³µÀ»½Ã ½Ã°£.
bool Check_Time( DWORD dwTick ); // ©·ÈÀ¸¸é true ¾È©·ÈÀ¸¸é false
// °è±Þ °ü·Ã
void Set_MyClass(); // Á¢¼Ó½Ã ³» °è±Þ¼³Á¤
bool Check_MyClass(); // ¸í¼ºÄ¡ º¯°æ½Ã ³» °è±Þ ¼³Á¤..¹Ù²î¸é true..¾È¹Ù²î¸é false..¹Ù²î¸é ¹æ¼Û
// Donny 2004.8.3 Á¦´ÏÀ̺¥Æ® ´ãû. ·¹º§¾÷½Ã.. ÀüÁ÷½Ã..
void ActJenniEvent(byte type);
BYTE Check_Pet_State(); // 2004.9.1 Donny ÆêÁ¤º¸ : ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â ÆêÀÇ »óŸ¦ ¸®ÅÏÇÑ´Ù.
BYTE Check_User_Race(); // 2004.10.27 Donny 2Â÷½ºÅ³ : ÀÚ½ÅÀÇ Á¾Á·À» ¸®ÅÏÇÑ´Ù.
bool Has_User_Job(); // 2004.10.27 Donny 2Â÷½ºÅ³ : Á÷¾÷À» °¡Á³´Â ÁöÀÇ ¿©ºÎ
// 2004.10.6 Donny ¾ÆÀÌÅÛ¼Ó¼º //-------------------------------
int Check_Item_SpecialAblity( int iAblity, int iSkillIndex );
void HpMpFromItemWhenAttackSuccess();
int DecreaseMPFromItemWhenUsingSkill( int iMp );
int DecreaseDamageFromItem( int iDamage, int iKind );
bool NeglectEnemyDefence();
int IncreaseDamageFromItem( int iDamage, int iKind );
void Set_Item_SpecialAblity();
//-------------------------------------------------------------
// 2Â÷ÀüÁ÷½ºÅ³ STATUS : ºÒÀǺ¸È£¸·
int Return_Damage_Apply_FairyShield( int iDamage ); // ½¯µå¸¦ ÅëÇÑ µ¥¹ÌÁö¸¦ ÁÙ¿© ÁÖ´Â ÇÔ¼öÀÌ´Ù.
// 2Â÷ÀüÁ÷½ºÅ³ MODE : ½¯µåÇÁ·ÎÅØÆ®
int Return_Damage_Apply_KnightShield( int iDamage );
// 2Â÷ÀüÁ÷½ºÅ³ STATUS : ¾óÀ½µ¥¹ÌÁö¸¦ ÁÖ´Â ÇÔ¼öÀÌ´Ù.
void ApplyIceDamage( CUserInfo* pAttack );
// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú ÇÊ¿äÇÑ ¸¶³ª¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù.
int returnNeedMp( int nSkill, int i, BYTE bySkillLevel );
// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú Æê°úÀÇ °ü°è¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù.
bool CheckCanUseSkillRelatedWithPet( int nSkill );
// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú ÆÄƼ¿ÍÀÇ °ü°è¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù.
bool CheckCanUseSkillRelatedWithParty( int nSkill );
// 2Â÷ÀüÁ÷½ºÅ³ ETC : ½ºÅ³°ú ¾ÆÀÌÅÛ°úÀÇ °ü°è¸¦ üũÇÏ´Â ÇÔ¼öÀÌ´Ù.
bool CheckCanUseSkillRelatedWithEquipItem( int nSkill );
// 2Â÷ÀüÁ÷½ºÅ³ º¯°æ : ¸ÊÀÇ »óÅ Á¤º¸¸¦ ÃʱâÈÇØÁÖ´Â ÇÔ¼öÀÌ´Ù.
void Release_Block_Buff();
// 1005-LIM //
void Change_Pet_Color( int type ); // ÆêÀÇ »öÀÇ ¹Ù²Û´Ù.
bool Check_Duplicate_Chat( char* chat_info );
// 2Â÷ÀüÁ÷½ºÅ³ ETC
bool IsRestoreStatusWhenBeAttacked();
// 2Â÷ÀüÁ÷-LIM //
bool Change_2ndJob( int job );
// 20050602 Ȧ¸®¿þÆù, Ȧ¸®½¯µå, Ȧ¸®¶óÀÌÇÁ ¹öÇÁ¸¦ °Ç À¯Àú¿Í ÀÚ±â¿ÍÀÇ °ü°è¸¦ üũÇÏ¿© ¹öÇÁÇØÁ¦ ¿©ºÎ¸¦ °Ë»çÇÑ´Ù.
bool CheckBuffReleaseCondition( BYTE bType );
private:
CXClient* m_pxClient;
DWORD m_account_id;
long m_character_unique;
public:
BYTE m_Storage_Tab;
Char_Info_All m_character_info; // ij¸¯ÅÍ Á¤º¸
CItem m_EquipArray[MAX_EQUIPED]; // Âø¿ë¾ÆÀÌÅÛ ¹è¿
// 2005.3.11 Donny ij¸¯ÅͽºÅ² : Âø¿ë½ºÅ²¾ÆÀÌÅÛ ¹è¿
CItem m_EquipSkinArray[MAX_EQUIPED_SKIN];
CItem m_Tool_Inventory[MAX_INVENTORY1]; // ¹«±â ¹æ¾î±¸ Àκ¥Å丮
bool m_bLiveEquip[MAX_EQUIPED]; //Item-Life-LIM
Char_info_Tab_Storage m_StorageTab[MAX_STORAGE_TAB];
DWORD m_StorageCoin; // Çüº¯È¯ long -> DWORD // â°í µ·²Ù·¯¹Ì
BYTE m_StorageInven[MAX_STORAGE_TAB][STORAGE_X][STORAGE_Y]; // â°íÀιê°ü·Ã
CBlock *m_cur_block; // ÇöÀç ¼ ÀÖ´Â ºí·° ----------
int m_floor; // ÇöÀç ¼ÀÖ´Â Ãþ
int m_map_id; // À¯Àú°¡ ÀÖ´Â ¸ÊÀÇ ¾ÆÀ̵ð
// °ÔÀÓ ³»ºÎ Á¤º¸µé
int m_level; // ij¸¯ÅÍ ·¾
Character_Status m_status; // »óÅ Á×Àº »óŶó¸é ü·Âȸº¹ ¾ÈÇÑ´Ù
BYTE m_statustime; // »óź° Áö¼Ó½Ã°£
int m_Max_HP; // ÃÖ´ë ü·Â
int m_Max_MP; // ÃÖ´ë ¸¶·Â
int m_Cur_HP; // ÇöÀç ü·Â
int m_Cur_MP; // ÇöÀç ¸¶·Â
DWORD m_Chr_EXP; // °æÇèÄ¡
int m_Chr_Str; // Èû
int m_Chr_Dex; // ¹Î
int m_Chr_End; // Áö±¸.......ÄÜ->Áö±¸
int m_Chr_Wis; // ÁöÇý
int m_Chr_Bra; // ¿ë±â.......
int m_Chr_Fam; // ¸í¼º........
int m_Chr_Pos; // ÆÛÁ¦¼Ç.............6-16pk°ü·Ã ·¹º§ ´Ù¿î Ƚ¼ö
int m_Ori_Pow;
int m_Ori_Dex;
int m_Ori_Wis;
int m_Chr_Att; // ¹°¸® °ø°Ý·Â
int m_Chr_AC; // ¹°¸® ¹æ¾î·Â
int m_Cur_CP; // cp...Á¢¼ÓÇϸé 0 ÃÖ´ë 100..............
int m_Chr_Magic_Att; // ¸¶¹ý °ø°Ý·Â
int m_Chr_Magic_AC; // ¸¶¹ý ¹æ¾î·Â.................
int m_Chr_Evade_Rate; // ȸÇÇÀ²
int m_Chr_Succ_Rate; // ¼º°øÀ²
DWORD m_Cash; // Ç뺯ȯ long -> DWORD
int m_remain_point; // ³²Àº ´É·ÂÄ¡ Æ÷ÀÎÆ®
// ü·Â ȸº¹ °ü·Ãº¯¼ö
DWORD m_Last_Recover_Time; // ¸¶Áö¸·À¸·Î ü·Â ȸº¹ÇÑ ½Ã°£...Á¢¼ÓÇÏ¸é °ÔÀÓ¿¡ µé¾î¿Â ½Ã°£ºÎÅÍ
DWORD m_Holy_Recover_Time; // 2Â÷ÀüÁ÷½ºÅ³ º¯°æ : Ȧ¸®¶óÀÌÇÁ¹öÇÁ¸¦ ÅëÇÑ Ã¼·Â ȸº¹ÇÑ ½Ã°£À» ÀúÀå
DWORD m_Heal_Recover_Time; // 2Â÷ÀüÁ÷½ºÅ³ º¯°æ : ÈúÀ» ÅëÇÑ Ã¼·Â ȸº¹ÇÑ ½Ã°£À» ÀúÀå
bool m_bUnite,m_bPickTurn; // Æä¾î¸®¿Í ÇÕü ¿©ºÎ.ÇÕü½Ã ¾ÆÀÌÅÛ ÁýÀ» ÅÏ
int m_nArray; // ÇÕüÇÑ ³ÑÀÇ ¹è¿¹øÈ£
bool m_bUniteStatus;
bool m_bToggle; // °È±â/¶Ù±â....false¸é ¶Ù±â...true ¸é °È±â
bool m_bAttackMode; // ¹æ¾î ¸ðµå
bool m_bShieldPTMode; // 2Â÷ÀüÁ÷½ºÅ³ MODE : ½¯µåÇÁ·ÎÅØÆ®¸ðµå
DWORD m_dwToggleTime; // ¹æ¾î¸ðµå Åä±Û ½Ã°£
//¸»¿¡ °üÇѰÅ
//CHorseData horsedata; //ÀúÀåÇÏ´Â ºÎºÐ
//CHorseRise *m_pHorseRise;
int m_nHorseArrayNo; // g_TempNPCArray¿¡¼ ³»¸»ÀÇ À§Ä¡
BYTE m_Harray; // m_Horsedata¿¡¼ ÇöÀç ³»°¡Åº ¸»ÀÇ ¹è¿ ¹øÈ£
bool m_bHave; //¸»À» °¡Áø À¯¹«
bool m_btame; // ±æµé¾îÁø À¯¹« 0 : no 1: YES
BYTE m_istatus; //¸»ÀÇ Çö »óÅ 7°¡ÁöÀÇ ¸»»óŸ¦ Á¤ÀÇ ÇÑ´Ù.
BYTE m_byHorseColor; // ¸»»ö±ò appear
bool m_bHorsepaper; // ¸»ÀÎÁõ¼¸¦ °¡ÁøÀ¯¹«
Horse_Info_Load m_Horsedata[MAX_HORSE_PER]; // ³»°¡°¡Áø ¸»µéÀÇ Àüü Á¤º¸ ¹è¿..ÃÖ´ë 8¸¶¸®
// ½ºÅ³ °ü·Ã... db¿¡ ÀúÀåÇØ¾ßÇÑ´Ù...
int m_byRemain_Skill_Point; // ³²Àº ½ºÅ³ Æ÷ÀÎÆ®...ÃÖ´ë 100
CCharacterSkillBox m_Basic_Skill[MAX_BASIC_SKILL]; // Á¾Á·¿¡ µû¸¥ ±âº» ½ºÅ³
CCharacterSkillBox m_Special_Skill[MAX_SPECIAL_SKILL]; // ÀüÁ÷ÈÄ Á÷¾÷¿¡ µû¸¥ Æ¯È ½ºÅ³
DWORD m_dwMagicTime; // ´©±¸¿¡°Ô »óź¯È ¸¶¹ý °É·ÈÀ»¶§ ½Ã°£¿ë
BYTE inven[MAX_INVEN_X][MAX_INVEN_Y]; // Àκ¥Å丮 »óÅÂ
int item_pos; // Àӽà À§Ä¡ ±â¾ï Àå¼Ò
// 6-11
BYTE m_byMP_Kind; // µî·ÏµÈ mp¹°¾à Á¾·ù
BYTE m_byMP_Potion; // µî·ÏµÈ mp¹°¾à ¾ç
BYTE m_byHP_Kind; // µî·ÏµÈ hp¹°¾à Á¾·ù
BYTE m_byHP_Potion; // µî·ÏµÈ hp¹°¾à ¾ç
char m_ChatInfo[64]; // äÆÃ ³»¿ë ±â·Ï. 0126-LIM
DWORD m_dwChatTime; // äÆÃ Áߺ¹µÆÀ»¶§ ¸»ÇÑ ½Ã°£ ±â·Ï. 0126-LIM
// ½ºÇÙ°ü·Ã
DWORD m_dwCheckTimeClient;
DWORD m_dwCheckTimeServer;
long m_lTotalGap;
BYTE m_byCount;
BYTE m_byChatCount; // °°Àº ¸» ¹Ýº¹ Ƚ¼ö. 0126-LIM
// 2Â÷ÀüÁ÷½ºÅ³ º¯°æ
BYTE m_byHealCount; // Èú½ºÅ³ °ü·Ã º¯¼ö
int m_nHealValue; // Èú½ºÅ³ °ü·Ã º¯¼ö
/* // ½ºÇÙ°ü·Ã
#define MAX_TIME_CHCEK 10
DWORD m_dwPacketTime; // ÆÐŶ ¿Ô´ø ½Ã°£
DWORD m_dwCheckTimeClient[MAX_TIME_CHCEK]; // ½Ã°£check
DWORD m_dwCheckTimeServer[MAX_TIME_CHCEK]; // ½Ã°£check
DWORD m_dwClientGap[MAX_TIME_CHCEK];
DWORD m_dwServerGap[MAX_TIME_CHCEK];
int m_nWarnCount; // ½ºÇÙ °æ°í ½Ã°£
long m_lTotalGap;
void Reset_CheckTime()
{
for( int i= 0; i < MAX_TIME_CHCEK; i++ )
{
m_dwCheckTimeClient[i] = 0;
m_dwCheckTimeServer[i] = 0;
m_dwClientGap[i] = 0;
m_dwServerGap[i] = 0;
}
}
BYTE m_byCount;
*/
DWORD m_dwPacketCountMove; //À̵¿ÆÐŶ,ÀÓâ¿ø ¼öÁ¤
DWORD m_dwPacketCountAttack; // °ø°ÝÆÐŶ °¹¼ö
DWORD m_dwPacketCountSoulAttack; // °ø°ÝÆÐŶ °¹¼ö
DWORD m_dwPacketCountCheckTimeMove; // ÆÐŶ °¹¼ö üũ ½Ã°£..À̵¿
DWORD m_dwPacketCountCheckTimeAttack; // ÆÐŶ °¹¼ö üũ ½Ã°£..°ø°Ý
void Check_PacketCount( bool bMove, DWORD dwTick ); // À̵¿À϶§´Â true °ø°ÝÀ϶§´Â false
// 6-13 ÀúÀå Ç÷¡±×
bool m_bSave; // true¸é ´ÙÀ½ ƽ¿¡ ÀúÀå
DWORD m_dwSaveTime; // ÀúÀ嵯´ø ½Ã°£
bool m_bCheck; // Á¢¼Ó üũ
int m_nCheckCount; // Á¢¼Óüũ 1¹øÀº ºÁÁÖÀÚ
// 6-17
DWORD m_dwPotionTime[2]; // ¹°¾à »ç¿ëÇß´ø ½Ã°£
// 6-23 ü·Â ȸº¹ ¼öÁ¤
BYTE m_byRecoverType; // 0:ÀÏ¹Ý 1:ÇÕü¸¸.½Ã°£Àº ÀϹݰú °°´Ù ¾çÀº Áõ°¡ 2:¹öÇÁ¸¸ ½Ã°£´ÜÃà, ¾çÀº Áõ°¡ 3:µÑ´Ù µÑ´Ù ÁÁ°Ô 4:ÈÞ½Ä »óÅÂ
// 5:È޽Ŀ¡ ÇÕü
// ij¸¯ÅÍÀÇ ¸ð½À
BYTE m_HairColor; // ¸Ó¸® »ö±ò
BYTE m_HairStyle; // ¸Ó¸® ¸ð¾ç
BYTE m_FaceStyle; // ¾ó±¼ ¸ð¾ç
BYTE m_Bodysize; // ¸öÅëÅ©±â
// 7-30 Â÷ÁöÆ÷ÀÎÆ® & ¿¢½ºÅͽÃ
WORD m_Charge;
WORD m_Extacy;
bool m_bCharge; // Â÷Áö¸ðµå ¹ßµ¿ on/off
bool m_bNecta; // ³ØÅ¸ ¸¶½Ã°í ÀÖ´Ù
bool m_bTar; // ´ã¹èÇǰí ÀÖ´Ù
bool m_bRomerNecta; // ÀÓâ¿ø Ãß°¡.·Î¸Þ¸£ ³ØÅ¸ ¸¶½Å½Ã°£.
// ItemBill-LIM //
bool m_bSpecialCharge; // ¾ÆÀÌÅÛ¸ô°ü·Ã ¿À¹öÂ÷Áö ¾ÆÀÌÅÛÀ» °¡Áö°í ÀÖÀ» °æ¿ì.
DWORD m_dwChargeTime; // Â÷Áö¸ðµå ¹ßµ¿ °É¸° ½Ã°£
DWORD m_dwNectaTime; // ³ØÅ¸¸¶½Ã´Â ½Ã°£
DWORD m_dwTarTime; // ´ã¹èÇÇ´Â ½Ã°£
bool m_bPK;
// 2004.8.31 Donny ¼Ò¿ï¸¶½ºÅͽºÅ³
// float m_rateUpMaxHp; // ¼Ò¿ïº£¾î¸¦ Ÿ¸é¼ ¿Ã¶ó°£ MAX_HP ºñÀ²
// 04-1-29
int m_nMaxHorseCount; // ¸»ÀÇ ÃÖ´ë ¿¢½ºÅͽÃ
int m_nHorseCount; // ¸»ÀÇ ¿¢½ºÅͽÃ...ÇöÀç°ªÀÌÁö..ÀÌ°É ÀúÀåÇÒ²¨¾ß
bool m_bHorseWalk; // ¸» °È±â
// 2004.11.30 Donny Æê¾ÆÀÌÅÛ¼öÁ¤
// int m_nHelm; // ÇöÀç ¸»ÀÌ Â÷°íÀÖ´Â Çï¸ä ¾ÆÀÌÅÛ ¹è¿ ¹øÈ£..ÀÏÀÏÀÌ Ã£±â ±×·¸´Ù..Á¢¼Ó½Ã ¼ÂÆÃ ..°¥¾ÆÂû¶§ ¼ÂÆÃ..
// int m_nBack; // ÇöÀç ¸»ÀÌ Â÷°íÀÖ´Â ¾ÈÀå ¾ÆÀÌÅÛ ¹è¿ ¹øÈ£
// ½Ã³ª¸®¿À Äù½ºÆ® ¿ë 8-1
BYTE m_storagecheck[12];
//BYTE m_SQIndex; // ÇöÀç Äù½ºÆ® À妽º
//BYTE m_SQarray; // Äù½ºÆ® Á¤º¸ ±¸Á¶Ã¼ Á¤º¸
//BYTE m_SQCount[MAX_QUEST_SLOT]; // db ÀúÀå
//DWORD m_SQTime; // Äù½ºÆ® Áö¼Ó½Ã°£
// À̺¥Æ® Äù½ºÆ®
BYTE m_EQIndex; // ÇöÀç Äù½ºÆ® À妽º
BYTE m_EQarray; // Äù½ºÆ® Á¤º¸ ±¸Á¶Ã¼ Á¤º¸
BYTE m_EQCount[MAX_QUEST_SLOT]; // db ÀúÀå
DWORD m_EQTime; // Äù½ºÆ® Áö¼Ó½Ã°£
// task Äù½ºÆ®
BYTE m_TQIndex; // ÇöÀç Äù½ºÆ® À妽º
BYTE m_TQarray; // Äù½ºÆ® Á¤º¸ ±¸Á¶Ã¼ Á¤º¸
BYTE m_TQCount[MAX_QUEST_SLOT]; // db ÀúÀå
DWORD m_TQTime; // Äù½ºÆ® Áö¼Ó½Ã°£
//6.1 ÀÓâ¿ø////////////////////////////////////////////////////////////////////////////////////////////
_MyQuest m_MyQuest[MAX_MY_QUEST_COUNT]; //ÇÑ À¯Àú°¡ °¡Áö´Â Äù½ºÆ®
DWORD m_Quest_Start_Time[MAX_MY_QUEST_COUNT]; //Äù½ºÆ® ½ÃÀ۽à ½Ã°£.
BYTE m_byScenarioQuestCnt; //Äù½ºÆ® ½ÃÀÛ À妽º.
/////////////////////////////////////////////////////////////////////////////////////////////////////
// 8-2
DWORD m_nMyBoard; // ³»°¡ ¸ÂÃß°í ÀÖ´Â ÆÇ ¹øÈ£
DWORD m_aryPiece[MAX_PIECE]; // Â¥¸ÂÃá Á¶°¢µé
// 8-16
bool m_bSword; // Ä®À§Ä¡ true: ¼Õ false : µî
bool m_bSit; // ¾É¾ÆÀÖ³ª?
// 9-16
bool m_bCritical; // ¹æ±ÝÀü °ø°ÝÀÇ critical¿©ºÎ
// ´ëÈ Àç°¥
bool m_Operator; // ¿î¿µÀÚÀΰ¡?
bool m_dialog;
DWORD m_dialogTime;
// buff °ü·Ã
int m_nCurBuff[MAX_BUFF];
DWORD m_dwCurBuffTime[MAX_BUFF];
BYTE m_byCurBuffLevel[MAX_BUFF];
OnBuffSkill m_OnSpecialBuff; // 2Â÷ÀüÁ÷½ºÅ³ BUFFSKILL
// 2004.10.14 Donny 2Â÷½ºÅ³ : ÆÐ½Ãºê½ºÅ³°ü·Ã
bool m_bSetPassiveSkill; // À¯Àú°¡ ÆÐ½Ãºê ½ºÅ³Ã¼Å©¸¦ Çß´Â Áö ¿©ºÎ
// 2Â÷ÀüÁ÷½ºÅ³ PASSIVESKILL : bool->byte
BYTE m_bHasPassiveSkill[MAX_PASSIVE]; // À¯Àú°¡ °¡Áö°í ÆÐ½Ãºê½ºÅ³
// party
bool m_bAccepParty; // °ÅºÎ»óÅ ¿©ºÎ
int m_nPartyPos; // ÇØ´ç ÆÄƼ ¹è¿¹øÈ£..¼ÓÇØÀÖÁö ¾ÊÀ¸¸é -1...Á¨Àå ¼¹ö°¡ ´Þ¶óÁö¸é ¾î¶»°Ô ÇϳÄ??
long m_lLeaderUnique; // ¼ÓÇÑ ÆÄƼÀÇ ¸®´õÀÇ À¯´ÏÅ©..¼¹ö°¡ ´Þ¶óÁö¸é °°¾ÆÁú¶§ ¸®´õÀÇ À¯´ÏÅ©·Î ã´Â´Ù..
// Á¨Àå..±×·¯¸é ÆÄƼ°¡ ±úÁö¸é ´Ù¸¥ ¼¹ö¿¡ ÀÖ´Â ¾ÖµéÀº ¾îÄÉÇÏÁö??..±ÛÄɵǷÁ¸é ¸ÊÀ» ¹Ù²Ü¼ö ¾ø¾î¾î¾ß Çϳª?
// trade
int m_nTradePos; // °Å·¡¹æÀ§Ä¡
bool m_bTrade; // ±âº»Àº ±³È¯ °ÅºÎ»óÅÂ
//save warp
BYTE m_byWarpID; // Á×À»¶§ ¿öÇÁÁ¸
//±æµå Àӽÿë
int m_Guild;
int m_nMarkVer;
// 2004-2-10
BYTE m_byAngle;
// user status
BYTE m_byStatusSkill; // ÇöÀç °É·ÁÀÖ´Â ½ºÅ³ ¹øÈ£....base.h ÂüÁ¶..0ÀÌ¸é ¾È°É¸° »óÅÂ
BYTE m_byExtraStatusSkill; // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅ (ex. ÆÄÀ̾îÇÁ·¹ÀÓ)
DWORD m_dwStatusTime; // °É¸° ½Ã°£...ÀÌ ¾Æ´Ï¶ó ²¨Áú ½Ã°£
DWORD m_dwExtraStatusTime; // 2004.11.2 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅÂ
DWORD m_byStatusSkillUnique; // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óŸ¦ ¾´ À¯ÀúÀÇ Ä³¸¯ÅÍ À¯´ÏÅ© ¹øÈ£
DWORD m_dwTickControlDamageTime; // 2004.10.27 Donny 2Â÷½ºÅ³ : ±âÁ¸¿Ü »óÅÂÀ» °É¸° À¯ÀúÀÇ µ¥¹ÌÁö Áִ ŸÀ̹Ö
bool m_bDashFlag; // ´ë½¬¾´ ´ÙÀ½¿¡ ÇѹøÀº ´É·ÂÄ¡..½ºÅ³ °ø°ÝÀ¸·Î ÇØÁØ´Ù
BYTE m_byDashLevel; // ´ë½¬·¹º§
// 2Â÷ÀüÁ÷-LIM ½ÃÀÛ//
bool m_b2ndDashFlag; // ÇÑ Á¾Á·¿¡ ´ë½¬ ½ºÅ³ÀÌ 2°¡Áö°¡ µÇ¹Ç·Î À§¿¡ °É ¾²¸é ¾ÈµÈ´Ù.
BYTE m_by2ndDashLevel; // ¸¶Âù°¡Áö
BYTE m_by2ndDashCount; // ¹é½ºÅ× ´õºí ¼¦ µ¥½¬ Ä«¿îÆ®.
// 2Â÷ÀüÁ÷-LIM ³¡//
// Á¾·á °ü·Ã
bool m_bLogout; // true¸é Á¤»ó Á¾·á..false¸é ƨ±è
// unique°ü·Ã
int m_nUniqueItem; // À¯´ÏÅ© ¾ÆÀÌÅÛ
int m_nUniqueSkill[MAX_UNIQUE]; // À¯´ÏÅ© ½ºÅ³ -- dungeon-LIM // 1117-LIM
bool m_bFirst; // óÀ½·Îµù ³¡?
// pkÆä³ÎƼ °ü·Ã
BYTE m_byPKCount; // pk°ü·Ã Ƚ¼ö
// ¿öÇÁ·Î °¡¸é¼ ²÷±ä°ÇÁö..¾Æ´Ô Á¢¼Ó ²÷Àº°ÇÁö
bool m_bWarp; // true¸é ¿öÇÁ´Ï±î ÆÄƼÁ¤º¸¸¦ ÃʱâÈ ÇÏÁö ¾Ê´Â´Ù
DWORD m_dwDest; // À̵¿½Ã ¸ñÀû ŸÀÏ
// °è±Þ
BYTE m_byMyClass; // ³» Á÷¾÷
// ¿¡¼ÒÅ׸®Ä« °ü·Ã
bool m_bEsotericaIn; // ¿¡¼ÒÅ׸®Ä« Á¸¿¡ ÀÖÀ¸¸é true, ¹þ¾î³ª¸é false
DWORD m_dwEsotericaTime; // ¿¡¼ÒÅ׸®Ä« ½Ã°£..¸Å 10Ãʸ¦ È®ÀÎÇϴµ¥ »ç¿ë
//6.15 ÀÓâ¿ø Ãß°¡.°³ÀλóÁ¡ °ü·Ã..//
int m_nPrivateShop; // °Å·¡¹æÀ§Ä¡
DWORD m_dwEnterGameTime; //°ÔÀÓ µé¾î¿Â ½Ã°£.(Æò±Õ ·Î±× ³²±â±â À§Çؼ)
// ItemBill-LIM //
Item_Billing m_ItemBill[50]; //¾ÆÀÌÅÛºô¸µ °ü·Ã 50°³ ¹è¿.
// 2004.9.13 Donny SPEEDHACK
CSpeedInfo m_SpeedInfo;
BYTE m_byCurMove;
BYTE m_byCurAttack;
DWORD m_dwPreMoveTime;
DWORD m_dwPreAttackTime;
bool m_DropAsSpeedHack; // true : ½ºÇǵåÇÙÀ¸·Î °É¸° °ÍÀÌ´Ù.
void ClearTime();
// 2004.9.23 Donny Ãß¼®À̺¥Æ®
bool m_bEatEventItem;
DWORD m_dwEatTime;
//2004. 9 .15 032 china ºô¸µ °ü·Ã
DWORD m_dwReturnValue; // ¸®ÅϰªÀÇ Àý´ë °ª¸¸ÅÀÇ ·¡¹ë±îÁö ¹«·á ÀÌ¿ë
// 1005-LIM //
bool m_bOverPet; // ¿À¹öÆê ¾ÆÀÌÅÛ °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bPetProject2; // Æê ÇÁ·ÎÁ§Æ®2 °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bPetMaster; // Æê¸¶½ºÅÍ ¾ÆÀÌÅÛ °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bMagicArrow; // ¸ÅÁöÈ»ì °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bOverCharge; // ¿À¹öÂ÷Áö °¡ÁøÀÇ ¿©ºÎ.
bool m_bOverPet2; // ¿À¹öÆÖ2 °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bOverBuff; // ¿À¹ö¹öÇÁ ¾ÆÀÌÅÛ °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bStableBook; // ¾ÈÁ¤ÀÇ ÁÖ¹®¼ °¡ÁøÁöÀÇ ¿©ºÎ.
// 1006-LIM //
bool m_bSkillMaster1; // ½ºÅ³¸¶½ºÅÍ1 °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bSkillMaster2; // ½ºÅ³¸¶½ºÅÍ2 °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bUpgradeBook1; // °ÈÁÖ¹®¼1 °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bUpgradeBook2; // °ÈÁÖ¹®¼1 °¡ÁøÁöÀÇ ¿©ºÎ.
bool m_bSecretItem; // ¾¾Å©¸´ ¾ÆÀÌÅÛÀ» °¡ÁøÁöÀÇ ¿©ºÎ.
// 1116-LIM //
bool m_bFourLeafClover;
// bool m_bPassPrayerAmulet;
BYTE m_byPassPrayerAmuletCount; //0425-LIM
bool m_bHongPae;
// 1117-LIM //
bool m_b2ndSkillMaster1;
bool m_bSkillUp;
bool m_b2ndSkillUp;
bool m_bWalnut;
// 1108-LIM //
#ifdef SOONEUNG
bool m_bChap_Rice_Cake; // Âý½Ò¶±
bool m_bTaffy; // ¿³
#endif
// 1117-LIM
bool m_bDungeonRoomShow[MAX_UNIQUE]; // ´øÀü¹æ º¸°í ÀÖ´ÂÁö.
// 1007-LIM //
int m_nItemMaster; // ¾ÆÀÌÅÛ¸¶½ºÅÍ µî±Þ( ¾øÀ¸¸é 0 )
// 2004.10.18 Donny ¾ÆÀÌÅÛ¼Ó¼º
int m_MinDamageIncreaseAblityValue;
int m_MaxDamageIncreaseAblityValue;
int m_SkillDamageIncreaseAblityValue;
int m_NeglectEnemyAttackAblityValue;
int m_PhysicalAttackDamageDecreaseValue;
int m_MagicAttackDamageDecreaseValue;
int m_HPGetAttackAblityValue;
int m_MPGetAttackAblityValue;
int m_HPMPGetAttackAblityValue;
int m_UsageMPDecreaseAblityValue;
// 2004.11.10 Donny 2Â÷½ºÅ³ : º£¾î¾îÅØ
CPetAttackInfo m_PetAttackInfo;
// 2004.10.26 032 Áß±¹ °èÁ¤ ºô¸µ
DWORD m_logouttime;
int m_RecordID;
//ncash newchina billing
DWORD m_dwUserCheckTime; // 1ºÐ¸¶´Ù À¯Àú°¡ ÀÖ´ÂÁö¸¦ ºô¸µ¼¹ö¿¡ ¹æ¼Û
// 1108-LIM //
#ifdef SOONEUNG
DWORD m_dwChap_Rice_Cake;
DWORD m_dwTaffy;
#endif
// 1117-LIM //
DWORD m_dwSkillUpTime;
DWORD m_dw2ndSkillUpTime;
// 20050602
int iCharUniqueForWeapon; // Ȧ¸®¿þÆù¹öÇÁ¸¦ °É¾îÁØ iClient
int iCharUniqueForShield; // Ȧ¸®½¯µå¹öÇÁ¸¦ °É¾îÁØ iClient
int iCharUniqueForLife; // Ȧ¸®¶óÀÌÇÁ¹öÇÁ¸¦ °É¾îÁØ iClient
// 20050602
};
struct WarpID
{
BYTE m_byID;
DWORD m_pos1x;
DWORD m_pos1y;
DWORD m_pos2x;
DWORD m_pos2y;
DWORD m_pos3x;
DWORD m_pos3y;
DWORD m_pos4x;
DWORD m_pos4y;
BYTE m_byFloor;
};
extern WarpID g_WarpID[MAX_WARPID];
typedef vector< CUserInfo* > UserVector;
void Add_Vector( UserVector *source, UserVector* dest );
void Copy_User_Info_All( Char_Info_All* source, Char_Info_All* dest );
void Copy_User_Class( CUserInfo* source, CUserInfo* dest );
void Copy_User_From_InfoServer( Char_Info_Save source, CUserInfo* dest );
void Copy_User_Info_Save( CUserInfo *source, Char_Info_Save *dest );
#endif
//_________________________________________________________________________________
//
// end of UserInfo.H
//_________________________________________________________________________________
//