forked from metin2/client
361 lines
9.4 KiB
C
361 lines
9.4 KiB
C
|
#pragma once
|
|||
|
#include "../GameLib/ItemData.h"
|
|||
|
|
|||
|
struct SAffects
|
|||
|
{
|
|||
|
enum
|
|||
|
{
|
|||
|
AFFECT_MAX_NUM = 32,
|
|||
|
};
|
|||
|
|
|||
|
SAffects() : dwAffects(0) {}
|
|||
|
SAffects(const DWORD & c_rAffects)
|
|||
|
{
|
|||
|
__SetAffects(c_rAffects);
|
|||
|
}
|
|||
|
int operator = (const DWORD & c_rAffects)
|
|||
|
{
|
|||
|
__SetAffects(c_rAffects);
|
|||
|
}
|
|||
|
|
|||
|
BOOL IsAffect(BYTE byIndex)
|
|||
|
{
|
|||
|
return dwAffects & (1 << byIndex);
|
|||
|
}
|
|||
|
|
|||
|
void __SetAffects(const DWORD & c_rAffects)
|
|||
|
{
|
|||
|
dwAffects = c_rAffects;
|
|||
|
}
|
|||
|
|
|||
|
DWORD dwAffects;
|
|||
|
};
|
|||
|
|
|||
|
extern std::string g_strGuildSymbolPathName;
|
|||
|
|
|||
|
const DWORD c_Name_Max_Length = 64;
|
|||
|
const DWORD c_FileName_Max_Length = 128;
|
|||
|
const DWORD c_Short_Name_Max_Length = 32;
|
|||
|
|
|||
|
const DWORD c_Inventory_Page_Size = 5*9; // x*y
|
|||
|
const DWORD c_Inventory_Page_Count = 2;
|
|||
|
const DWORD c_ItemSlot_Count = c_Inventory_Page_Size * c_Inventory_Page_Count;
|
|||
|
const DWORD c_Equipment_Count = 12;
|
|||
|
|
|||
|
const DWORD c_Equipment_Start = c_ItemSlot_Count;
|
|||
|
|
|||
|
const DWORD c_Equipment_Body = c_Equipment_Start + 0;
|
|||
|
const DWORD c_Equipment_Head = c_Equipment_Start + 1;
|
|||
|
const DWORD c_Equipment_Shoes = c_Equipment_Start + 2;
|
|||
|
const DWORD c_Equipment_Wrist = c_Equipment_Start + 3;
|
|||
|
const DWORD c_Equipment_Weapon = c_Equipment_Start + 4;
|
|||
|
const DWORD c_Equipment_Neck = c_Equipment_Start + 5;
|
|||
|
const DWORD c_Equipment_Ear = c_Equipment_Start + 6;
|
|||
|
const DWORD c_Equipment_Unique1 = c_Equipment_Start + 7;
|
|||
|
const DWORD c_Equipment_Unique2 = c_Equipment_Start + 8;
|
|||
|
const DWORD c_Equipment_Arrow = c_Equipment_Start + 9;
|
|||
|
const DWORD c_Equipment_Shield = c_Equipment_Start + 10;
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20>ű<EFBFBD> <20><><EFBFBD><EFBFBD> & <20><>Ʈ
|
|||
|
// <20><><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>.
|
|||
|
// <20>̰<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>
|
|||
|
//
|
|||
|
// <20><><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 <20>̰<EFBFBD>,
|
|||
|
// 2013<31><33> <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>.
|
|||
|
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
|
|||
|
const DWORD c_New_Equipment_Start = c_Equipment_Start + 21;
|
|||
|
const DWORD c_New_Equipment_Count = 3;
|
|||
|
const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
|
|||
|
const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
|
|||
|
const DWORD c_Equipment_Belt = c_New_Equipment_Start + 2;;
|
|||
|
#endif
|
|||
|
|
|||
|
enum EDragonSoulDeckType
|
|||
|
{
|
|||
|
DS_DECK_1,
|
|||
|
DS_DECK_2,
|
|||
|
DS_DECK_MAX_NUM = 2,
|
|||
|
};
|
|||
|
|
|||
|
enum EDragonSoulGradeTypes
|
|||
|
{
|
|||
|
DRAGON_SOUL_GRADE_NORMAL,
|
|||
|
DRAGON_SOUL_GRADE_BRILLIANT,
|
|||
|
DRAGON_SOUL_GRADE_RARE,
|
|||
|
DRAGON_SOUL_GRADE_ANCIENT,
|
|||
|
DRAGON_SOUL_GRADE_LEGENDARY,
|
|||
|
DRAGON_SOUL_GRADE_MAX,
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
enum EDragonSoulStepTypes
|
|||
|
{
|
|||
|
DRAGON_SOUL_STEP_LOWEST,
|
|||
|
DRAGON_SOUL_STEP_LOW,
|
|||
|
DRAGON_SOUL_STEP_MID,
|
|||
|
DRAGON_SOUL_STEP_HIGH,
|
|||
|
DRAGON_SOUL_STEP_HIGHEST,
|
|||
|
DRAGON_SOUL_STEP_MAX,
|
|||
|
};
|
|||
|
|
|||
|
#ifdef ENABLE_COSTUME_SYSTEM
|
|||
|
const DWORD c_Costume_Slot_Start = c_Equipment_Start + 19; // [<5B><><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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EWearPositions <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
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_Count = 2;
|
|||
|
const DWORD c_Costume_Slot_End = c_Costume_Slot_Start + c_Costume_Slot_Count;
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
// [<5B><><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>.
|
|||
|
// <20><><EFBFBD><EFBFBD> common/length.h <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EWearPositions <20><><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>.),
|
|||
|
// <20><> <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_DragonSoul_Equip_Start = c_ItemSlot_Count + c_Wear_Max;
|
|||
|
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;
|
|||
|
|
|||
|
// NOTE: 2013<31><33> 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>
|
|||
|
const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;
|
|||
|
|
|||
|
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
|
|||
|
// <20><>Ʈ <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_Width = 4;
|
|||
|
const DWORD c_Belt_Inventory_Height= 4;
|
|||
|
const DWORD c_Belt_Inventory_Slot_Count = c_Belt_Inventory_Width * c_Belt_Inventory_Height;
|
|||
|
const DWORD c_Belt_Inventory_Slot_End = c_Belt_Inventory_Slot_Start + c_Belt_Inventory_Slot_Count;
|
|||
|
|
|||
|
const DWORD c_Inventory_Count = c_Belt_Inventory_Slot_End;
|
|||
|
#else
|
|||
|
const DWORD c_Inventory_Count = c_DragonSoul_Equip_End;
|
|||
|
#endif
|
|||
|
|
|||
|
// <20><>ȥ<EFBFBD><C8A5> <20><><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA>丮
|
|||
|
const DWORD c_DragonSoul_Inventory_Start = 0;
|
|||
|
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_End = c_DragonSoul_Inventory_Start + c_DragonSoul_Inventory_Count;
|
|||
|
|
|||
|
enum ESlotType
|
|||
|
{
|
|||
|
SLOT_TYPE_NONE,
|
|||
|
SLOT_TYPE_INVENTORY,
|
|||
|
SLOT_TYPE_SKILL,
|
|||
|
SLOT_TYPE_EMOTION,
|
|||
|
SLOT_TYPE_SHOP,
|
|||
|
SLOT_TYPE_EXCHANGE_OWNER,
|
|||
|
SLOT_TYPE_EXCHANGE_TARGET,
|
|||
|
SLOT_TYPE_QUICK_SLOT,
|
|||
|
SLOT_TYPE_SAFEBOX,
|
|||
|
SLOT_TYPE_PRIVATE_SHOP,
|
|||
|
SLOT_TYPE_MALL,
|
|||
|
SLOT_TYPE_DRAGON_SOUL_INVENTORY,
|
|||
|
SLOT_TYPE_MAX,
|
|||
|
};
|
|||
|
|
|||
|
enum EWindows
|
|||
|
{
|
|||
|
RESERVED_WINDOW,
|
|||
|
INVENTORY, // <20>⺻ <20>κ<EFBFBD><CEBA>丮. (45ĭ ¥<><C2A5><EFBFBD><EFBFBD> 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> = 90ĭ)
|
|||
|
EQUIPMENT,
|
|||
|
SAFEBOX,
|
|||
|
MALL,
|
|||
|
DRAGON_SOUL_INVENTORY,
|
|||
|
GROUND, // NOTE: 2013<31><33> 2<><32>5<EFBFBD><35> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> unused.. <20><> <20>ִ°<D6B4><C2B0><EFBFBD>???
|
|||
|
BELT_INVENTORY, // NOTE: W2.1 <20><><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>丮
|
|||
|
|
|||
|
WINDOW_TYPE_MAX,
|
|||
|
};
|
|||
|
|
|||
|
enum EDSInventoryMaxNum
|
|||
|
{
|
|||
|
DS_INVENTORY_MAX_NUM = c_DragonSoul_Inventory_Count,
|
|||
|
DS_REFINE_WINDOW_MAX_NUM = 15,
|
|||
|
};
|
|||
|
|
|||
|
#pragma pack (push, 1)
|
|||
|
#define WORD_MAX 0xffff
|
|||
|
|
|||
|
typedef struct SItemPos
|
|||
|
{
|
|||
|
BYTE window_type;
|
|||
|
WORD cell;
|
|||
|
SItemPos ()
|
|||
|
{
|
|||
|
window_type = INVENTORY;
|
|||
|
cell = WORD_MAX;
|
|||
|
}
|
|||
|
SItemPos (BYTE _window_type, WORD _cell)
|
|||
|
{
|
|||
|
window_type = _window_type;
|
|||
|
cell = _cell;
|
|||
|
}
|
|||
|
|
|||
|
// <20><><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
|
|||
|
// <20> <20>κ<EFBFBD><CEBA><EFBFBD> int, <20> <20>κ<EFBFBD><CEBA><EFBFBD> WORD<52><44> <20>Ǿ<EFBFBD><C7BE>־<EFBFBD>,
|
|||
|
// <20><><EFBFBD><EFBFBD> ū <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD> int<6E><74> <20>´<DEB4>.
|
|||
|
// int operator=(const int _cell)
|
|||
|
// {
|
|||
|
//window_type = INVENTORY;
|
|||
|
// cell = _cell;
|
|||
|
// return cell;
|
|||
|
// }
|
|||
|
bool IsValidCell()
|
|||
|
{
|
|||
|
switch (window_type)
|
|||
|
{
|
|||
|
case INVENTORY:
|
|||
|
return cell < c_Inventory_Count;
|
|||
|
break;
|
|||
|
case EQUIPMENT:
|
|||
|
return cell < c_DragonSoul_Equip_End;
|
|||
|
break;
|
|||
|
case DRAGON_SOUL_INVENTORY:
|
|||
|
return cell < (DS_INVENTORY_MAX_NUM);
|
|||
|
break;
|
|||
|
default:
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
bool IsEquipCell()
|
|||
|
{
|
|||
|
switch (window_type)
|
|||
|
{
|
|||
|
case INVENTORY:
|
|||
|
case EQUIPMENT:
|
|||
|
return (c_Equipment_Start + c_Wear_Max > cell) && (c_Equipment_Start <= cell);
|
|||
|
break;
|
|||
|
|
|||
|
case BELT_INVENTORY:
|
|||
|
case DRAGON_SOUL_INVENTORY:
|
|||
|
return false;
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
|
|||
|
bool IsBeltInventoryCell()
|
|||
|
{
|
|||
|
bool bResult = c_Belt_Inventory_Slot_Start <= cell && c_Belt_Inventory_Slot_End > cell;
|
|||
|
return bResult;
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
bool operator==(const struct SItemPos& rhs) const
|
|||
|
{
|
|||
|
return (window_type == rhs.window_type) && (cell == rhs.cell);
|
|||
|
}
|
|||
|
|
|||
|
bool operator<(const struct SItemPos& rhs) const
|
|||
|
{
|
|||
|
return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell));
|
|||
|
}
|
|||
|
} TItemPos;
|
|||
|
#pragma pack(pop)
|
|||
|
|
|||
|
const DWORD c_QuickBar_Line_Count = 3;
|
|||
|
const DWORD c_QuickBar_Slot_Count = 12;
|
|||
|
|
|||
|
const float c_Idle_WaitTime = 5.0f;
|
|||
|
|
|||
|
const int c_Monster_Race_Start_Number = 6;
|
|||
|
const int c_Monster_Model_Start_Number = 20001;
|
|||
|
|
|||
|
const float c_fAttack_Delay_Time = 0.2f;
|
|||
|
const float c_fHit_Delay_Time = 0.1f;
|
|||
|
const float c_fCrash_Wave_Time = 0.2f;
|
|||
|
const float c_fCrash_Wave_Distance = 3.0f;
|
|||
|
|
|||
|
const float c_fHeight_Step_Distance = 50.0f;
|
|||
|
|
|||
|
enum
|
|||
|
{
|
|||
|
DISTANCE_TYPE_FOUR_WAY,
|
|||
|
DISTANCE_TYPE_EIGHT_WAY,
|
|||
|
DISTANCE_TYPE_ONE_WAY,
|
|||
|
DISTANCE_TYPE_MAX_NUM,
|
|||
|
};
|
|||
|
|
|||
|
const float c_fMagic_Script_Version = 1.0f;
|
|||
|
const float c_fSkill_Script_Version = 1.0f;
|
|||
|
const float c_fMagicSoundInformation_Version = 1.0f;
|
|||
|
const float c_fBattleCommand_Script_Version = 1.0f;
|
|||
|
const float c_fEmotionCommand_Script_Version = 1.0f;
|
|||
|
const float c_fActive_Script_Version = 1.0f;
|
|||
|
const float c_fPassive_Script_Version = 1.0f;
|
|||
|
|
|||
|
// Used by PushMove
|
|||
|
const float c_fWalkDistance = 175.0f;
|
|||
|
const float c_fRunDistance = 310.0f;
|
|||
|
|
|||
|
#define FILE_MAX_LEN 128
|
|||
|
|
|||
|
enum
|
|||
|
{
|
|||
|
ITEM_SOCKET_SLOT_MAX_NUM = 3,
|
|||
|
ITEM_ATTRIBUTE_SLOT_MAX_NUM = 7,
|
|||
|
};
|
|||
|
|
|||
|
#pragma pack(push)
|
|||
|
#pragma pack(1)
|
|||
|
|
|||
|
typedef struct SQuickSlot
|
|||
|
{
|
|||
|
BYTE Type;
|
|||
|
BYTE Position;
|
|||
|
} TQuickSlot;
|
|||
|
|
|||
|
typedef struct TPlayerItemAttribute
|
|||
|
{
|
|||
|
BYTE bType;
|
|||
|
short sValue;
|
|||
|
} TPlayerItemAttribute;
|
|||
|
|
|||
|
typedef struct packet_item
|
|||
|
{
|
|||
|
DWORD vnum;
|
|||
|
BYTE count;
|
|||
|
DWORD flags;
|
|||
|
DWORD anti_flags;
|
|||
|
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
|
|||
|
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
|
|||
|
} TItemData;
|
|||
|
|
|||
|
typedef struct packet_shop_item
|
|||
|
{
|
|||
|
DWORD vnum;
|
|||
|
DWORD price;
|
|||
|
BYTE count;
|
|||
|
BYTE display_pos;
|
|||
|
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
|
|||
|
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
|
|||
|
} TShopItemData;
|
|||
|
|
|||
|
#pragma pack(pop)
|
|||
|
|
|||
|
inline float GetSqrtDistance(int ix1, int iy1, int ix2, int iy2) // By sqrt
|
|||
|
{
|
|||
|
float dx, dy;
|
|||
|
|
|||
|
dx = float(ix1 - ix2);
|
|||
|
dy = float(iy1 - iy2);
|
|||
|
|
|||
|
return sqrtf(dx*dx + dy*dy);
|
|||
|
}
|
|||
|
|
|||
|
// DEFAULT_FONT
|
|||
|
void DefaultFont_Startup();
|
|||
|
void DefaultFont_Cleanup();
|
|||
|
void DefaultFont_SetName(const char * c_szFontName);
|
|||
|
CResource* DefaultFont_GetResource();
|
|||
|
CResource* DefaultItalicFont_GetResource();
|
|||
|
// END_OF_DEFAULT_FONT
|
|||
|
|
|||
|
void SetGuildSymbolPath(const char * c_szPathName);
|
|||
|
const char * GetGuildSymbolFileName(DWORD dwGuildID);
|
|||
|
BYTE SlotTypeToInvenType(BYTE bSlotType);
|