BlackFullMoon 1
BlackFullMoon
Agora Metin2 1
Agora Metin2
PrimeAC 1
PrimeAC
ShadowFon 1
ShadowFon
noisiv 1
noisiv
Manwe Work 1
Manwe Work
romegames 1
romegames
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
NovaLst 1
NovaLst
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

AURA SİSTEMİ GERİ DÖNÜŞ ŞEREFİNE

Eric Bloodaxe

Özgürsün, onun için mahvoldun.
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
TM Üye
Katılım
27 Nis 2017
Konular
91
Mesajlar
2,386
Çözüm
47
Online süresi
17d 3h
Reaksiyon Skoru
1,571
Altın Konu
2
TM Yaşı
9 Yıl 1 Ay 17 Gün
Başarım Puanı
248
MmoLira
439
DevLira
13
Ticaret - 100%
3   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Merhaba arkadaşlar.
Dün paylaşılan filesten söktüğüm bu sistemi sizlerle paylaşmak istedim.
Eksik kalan yerler olabilir fakat bildirmeniz durumunda tamamlayacağımdan şüpheniz olmasın.
@Player 1 ❤️
Bir teşekkürü çok görmeyip forumda paylaşım yapan kişileri daha fazla paylaşıma teşvik edebilirsiniz.

[CODE lang="cpp" title="common\CommonDefines.h"]//müsait bir yere ekle;

#define ENABLE_AURA_SYSTEM[/CODE]

[CODE lang="cpp" title="common\item_length.h"]//arat;

enum ECostumeSubTypes

//fonksiyon içindeki sıraya göre ekle;

#ifdef ENABLE_AURA_SYSTEM
COSTUME_AURA = 5,//Buradaki 5'in sıraya göre değişmesi gerekebilir.
#endif

//tekrar arat;

enum EDragonSoulSubType

//fonksiyonun altına ekle;

#ifdef ENABLE_AURA_SYSTEM
enum EAuraInfo
{
AURA_ABSORPTION_SOCKET = 0,
AURA_ABSORBED_SOCKET = 1,
AURA_GRADE_VALUE_FIELD = 2,
AURA_WINDOW_MAX_MATERIALS = 2,
AURA_ICE_RUNIC = 49990,
AURA_MAX_ABS = 250,
AURA_REFINE_PRICE = 25000000,
AURA_GRADE_1_REFINE = 65,
AURA_GRADE_2_REFINE = 60,
AURA_GRADE_3_REFINE = 50,
AURA_GRADE_4_REFINE = 45,
AURA_GRADE_5_REFINE = 35,
AURA_GRADE_6_REFINE = 25,
AURA_TYPE_VALUE_FIELD = 0,
};
#endif

//tekrar arat;

enum EItemWearableFlag

//fonksiyon içindeki sıraya göre ekle;

#ifdef ENABLE_AURA_SYSTEM
WEARABLE_COSTUME_AURA = (1 << 18),//Buradaki 18'in sıraya göre değişmesi gerekebilir.
#endif[/CODE]

[CODE lang="cpp" title="common\length.h"]//arat;

WEAR_COSTUME_WEAPON,

altına ekle;

#ifdef ENABLE_AURA_SYSTEM
WEAR_COSTUME_AURA,
#endif

//tekrar arat;

PART_HAIR,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
PART_AURA,
#endif[/CODE]

[CODE lang="cpp" title="db\src\ProtoReader.cpp"]//arat;

"COSTUME_WEAPON",

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
"COSTUME_AURA",
#endif[/CODE]

[CODE lang="cpp" title="game\src\char.cpp"]//arat;

m_pointsInstant.iDragonSoulActiveDeck = -1;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
m_bAuraRefine = false;
m_bAuraAbsorption = false;
#endif

//tekrar arat;

addPacket.awPart[CHR_EQUIPPART_HAIR] = GetPart(PART_HAIR);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
addPacket.awPart[CHR_EQUIPPART_AURA] = GetPart(PART_AURA);
#endif

//tekrar arat;

pack.awPart[CHR_EQUIPPART_HAIR] = GetPart(PART_HAIR);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
pack.awPart[CHR_EQUIPPART_AURA] = GetPart(PART_AURA);
#endif

//tekrar arat;

SetPart(PART_HAIR, t->parts[PART_HAIR]);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
SetPart(PART_AURA, t->parts[PART_AURA]);
#endif

//tekrar arat;

SetPart(PART_HAIR, GetOriginalPart(PART_HAIR));

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
SetPart(PART_AURA, GetOriginalPart(PART_AURA));
#endif

//tekrar arat; (Opsiyonel: void CHARACTER::OpenMyOfflineShop(const char * c_pszSign, TShopItemTable * pTable, BYTE bItemCount, BYTE bTime))

if (IsDead() || GetExchange() || GetMyShop() || GetOfflineShop() || IsCubeOpen() || IsOpenSafebox() || GetShop())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Make sure you don't have any open windows!"));
return;
}

//altına ekle; (Opsiyonel: void CHARACTER::OpenMyOfflineShop(const char * c_pszSign, TShopItemTable * pTable, BYTE bItemCount, BYTE bTime))

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat;

case PART_HAIR:
return GetPart(PART_HAIR);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
case PART_AURA:
return GetPart(PART_AURA);
#endif

//tekrar arat;

if ((GetExchange() || IsOpenSafebox() || GetShopOwner()) || IsCubeOpen())
{
pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 개인상점을 사용할 수 없습니다."));
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat;

if ((pkChrCauser->GetExchange() || pkChrCauser->IsOpenSafebox() || pkChrCauser->GetMyShop() || pkChrCauser->GetShopOwner()) || pkChrCauser->IsCubeOpen())
{
pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 개인상점을 사용할 수 없습니다."));
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (pkChrCauser->isAuraOpened(true) || pkChrCauser->isAuraOpened(false))
{
pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat;

if ((GetExchange() || IsOpenSafebox() || IsCubeOpen()))
{
pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("상대방이 다른 거래를 하고 있는 중입니다."));
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
if (bSendMsg)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 다른곳으로 이동,종료 할수 없습니다"));

return true;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
if (bSendMsg)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 다른곳으로 이동,종료 할수 없습니다"));

return true;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || IsOpenSafebox() || IsCubeOpen())
{
if (bSendMsg)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 다른곳으로 이동,종료 할수 없습니다"));

return true;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
if (bSendMsg)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 다른곳으로 이동,종료 할수 없습니다"));

return true;
}
#endif

//dosyanın sonuna ekle;

#ifdef ENABLE_AURA_SYSTEM
void CHARACTER::OpenAura(bool bCombination)
{
if (isAuraOpened(bCombination))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The aura window it's already opened."));
return;
}

if (bCombination)
{
if (m_bAuraAbsorption)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Before you may close the aura absorption window."));
return;
}

m_bAuraRefine = true;
}
else
{
if (m_bAuraRefine)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Before you may close the aura combine window."));
return;
}

m_bAuraAbsorption = true;
}

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_GC_AURA;
sPacket.subheader = AURA_SUBHEADER_GC_OPEN;
sPacket.bWindow = bCombination;
sPacket.dwPrice = 0;
sPacket.bPos = 0;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
GetDesc()->Packet(&sPacket, sizeof(TPacketAura));

ClearAuraMaterials();
}

void CHARACTER::CloseAura()
{
if ((!m_bAuraRefine) && (!m_bAuraAbsorption))
return;

bool bWindow = (m_bAuraRefine == true ? true : false);

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_GC_AURA;
sPacket.subheader = AURA_SUBHEADER_GC_CLOSE;
sPacket.bWindow = bWindow;
sPacket.dwPrice = 0;
sPacket.bPos = 0;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
GetDesc()->Packet(&sPacket, sizeof(TPacketAura));

if (bWindow)
m_bAuraRefine = false;
else
m_bAuraAbsorption = false;

ClearAuraMaterials();
}

void CHARACTER::ClearAuraMaterials()
{
LPITEM* pkItemMaterial;
pkItemMaterial = GetAuraMaterials();
for (int i = 0; i < AURA_WINDOW_MAX_MATERIALS; ++i)
{
if (!pkItemMaterial)
continue;

pkItemMaterial->Lock(false);
pkItemMaterial = nullptr;
}
}

bool CHARACTER::AuraIsSameGrade(long lGrade)
{
LPITEM* pkItemMaterial;
pkItemMaterial = GetAuraMaterials();
if (!pkItemMaterial[0])
return false;

bool bReturn = (pkItemMaterial[0]->GetValue(AURA_GRADE_VALUE_FIELD) == lGrade ? true : false);
return bReturn;
}

DWORD CHARACTER::GetAuraCombinePrice(long lGrade)
{
DWORD dwPrice = AURA_REFINE_PRICE;
return dwPrice;
}

BYTE CHARACTER::CheckAuraEmptyMaterialSlot()
{
LPITEM* pkItemMaterial;
pkItemMaterial = GetAuraMaterials();
for (int i = 0; i < AURA_WINDOW_MAX_MATERIALS; ++i)
{
if (!pkItemMaterial)
return i;
}

return 255;
}

void CHARACTER::GetAuraCombineResult(DWORD & dwItemVnum, DWORD & dwMinAbs, DWORD & dwMaxAbs)
{
LPITEM* pkItemMaterial;
pkItemMaterial = GetAuraMaterials();

if (m_bAuraRefine)
{
if ((pkItemMaterial[0]) && (pkItemMaterial[1]))
{
long lVal = pkItemMaterial[0]->GetValue(AURA_TYPE_VALUE_FIELD);
if (lVal == 6)
{
dwItemVnum = pkItemMaterial[0]->GetOriginalVnum();
}
else
{
DWORD dwMaskVnum = pkItemMaterial[0]->GetOriginalVnum();
TItemTable* pTable = ITEM_MANAGER::instance().GetTable(dwMaskVnum + 1);
if (pTable)
dwMaskVnum += 1;

dwItemVnum = dwMaskVnum;
}
}
else
{
dwItemVnum = 0;
dwMinAbs = 0;
dwMaxAbs = 0;
}
}
else
{
if ((pkItemMaterial[0]) && (pkItemMaterial[1]))
{
dwItemVnum = pkItemMaterial[0]->GetOriginalVnum();
dwMinAbs = pkItemMaterial[0]->GetSocket(AURA_ABSORPTION_SOCKET);
dwMaxAbs = dwMinAbs;
}
else
{
dwItemVnum = 0;
dwMinAbs = 0;
dwMaxAbs = 0;
}
}
}

void CHARACTER::AddAuraMaterial(TItemPos tPos, BYTE bPos)
{
if (bPos >= AURA_WINDOW_MAX_MATERIALS)
{
if (bPos == 255)
{
bPos = CheckEmptyMaterialSlot();
if (bPos >= AURA_WINDOW_MAX_MATERIALS)
return;
}
else
return;
}

LPITEM pkItem = GetItem(tPos);
if (!pkItem)
return;
else if ((pkItem->GetCell() >= INVENTORY_MAX_NUM) || (pkItem->IsEquipped()) || (tPos.IsBeltInventoryPosition()) || (pkItem->IsDragonSoul()))
return;
else if ((pkItem->GetType() != ITEM_COSTUME && pkItem->GetType() != COSTUME_AURA) && (bPos == 0) && (m_bAuraRefine))
return;
else if ((pkItem->GetType() != ITEM_COSTUME && pkItem->GetType() != COSTUME_AURA) && (bPos == 0) && (m_bAuraAbsorption))
return;
else if (pkItem->isLocked())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't add locked items."));
return;
}
#ifdef ENABLE_ITEM_SEALBIND_SYSTEM
else if ((pkItem->IsSealed()))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Aura] You can't add binded items."));
return;
}
#endif
#ifdef ENABLE_BASIC_ITEM_SYSTEM
else if (pkItem->IsBasicItem())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_IS_BASIC_CANNOT_DO"));
return;
}
#endif
else if ((m_bAuraRefine) && (pkItem->GetSocket(AURA_ABSORPTION_SOCKET) >= AURA_MAX_ABS))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This aura got already maximum absorption chance."));
return;
}
else if ((bPos == 1) && (m_bAuraAbsorption))
{
if ((pkItem->GetType() != ITEM_ARMOR))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura You can absorb just the bonuses from armors and weapons."));
return;
}
else if ((pkItem->GetType() == ITEM_ARMOR) && (pkItem->GetSubType() != ARMOR_SHIELD) && (pkItem->GetSubType() != ARMOR_EAR) && (pkItem->GetSubType() != ARMOR_WRIST) && (pkItem->GetSubType() != ARMOR_NECK))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura You can absorb just the bonuses from armors and weapons."));
return;
}
}
else if ((bPos == 1) && (m_bAuraRefine))
{
if ((pkItem->GetVnum() != AURA_ICE_RUNIC))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura Only Refine Material Ice Runic"));
return;
}
}
else if ((pkItem->GetSubType() != COSTUME_AURA) && (m_bAuraAbsorption))
return;
else if ((pkItem->GetSubType() != COSTUME_AURA) && (bPos == 0) && (m_bAuraAbsorption))
return;
else if ((pkItem->GetSocket(AURA_ABSORBED_SOCKET) > 0) && (bPos == 0) && (m_bAuraAbsorption))
return;

LPITEM * pkItemMaterial;
pkItemMaterial = GetAuraMaterials();
if ((bPos == 1) && (!pkItemMaterial[0]))
return;

if (pkItemMaterial[bPos])
return;

pkItemMaterial[bPos] = pkItem;
pkItemMaterial[bPos]->Lock(true);

DWORD dwItemVnum, dwMinAbs, dwMaxAbs;
GetAuraCombineResult(dwItemVnum, dwMinAbs, dwMaxAbs);

TPacketAura sPacket;
sPacket.header = HEADER_GC_AURA;
sPacket.subheader = AURA_SUBHEADER_GC_ADDED;
sPacket.bWindow = m_bAuraRefine == true ? true : false;
sPacket.dwPrice = GetAuraCombinePrice(pkItem->GetValue(AURA_GRADE_VALUE_FIELD));
sPacket.bPos = bPos;
sPacket.tPos = tPos;
sPacket.dwItemVnum = dwItemVnum;
sPacket.dwMinAbs = dwMinAbs;
sPacket.dwMaxAbs = dwMaxAbs;
GetDesc()->Packet(&sPacket, sizeof(TPacketAura));
}

void CHARACTER::RemoveAuraMaterial(BYTE bPos)
{
if (bPos >= AURA_WINDOW_MAX_MATERIALS)
return;

LPITEM * pkItemMaterial;
pkItemMaterial = GetAuraMaterials();

DWORD dwPrice = 0;

if (bPos == 1)
{
if (pkItemMaterial[bPos])
{
pkItemMaterial[bPos]->Lock(false);
pkItemMaterial[bPos] = nullptr;
}

if (pkItemMaterial[0])
dwPrice = GetAuraCombinePrice(pkItemMaterial[0]->GetValue(AURA_GRADE_VALUE_FIELD));
}
else
ClearAuraMaterials();

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_GC_AURA;
sPacket.subheader = AURA_SUBHEADER_GC_REMOVED;
sPacket.bWindow = m_bAuraRefine == true ? true : false;
sPacket.dwPrice = dwPrice;
sPacket.bPos = bPos;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
GetDesc()->Packet(&sPacket, sizeof(TPacketAura));
}

BYTE CHARACTER::CanRefineAuraMaterials()
{
BYTE bReturn = 0;
LPITEM* pkItemMaterial = GetAuraMaterials();
if (m_bAuraRefine)
{
for (int i = 0; i < AURA_WINDOW_MAX_MATERIALS; ++i)
{
if (pkItemMaterial != nullptr)
{
if ((pkItemMaterial->GetType() == ITEM_COSTUME) && (pkItemMaterial->GetSubType() == COSTUME_AURA))
bReturn = 1;
else if ((pkItemMaterial->GetVnum() == AURA_ICE_RUNIC))
bReturn = 1;
else
{
bReturn = 0;
break;
}
}
else
{
bReturn = 0;
break;
}
}
}
else if (m_bAuraAbsorption)
{
if ((pkItemMaterial[0]) && (pkItemMaterial[1]))
{
if ((pkItemMaterial[0]->GetType() == ITEM_COSTUME) && (pkItemMaterial[0]->GetSubType() == COSTUME_AURA))
bReturn = 2;
else
bReturn = 0;

if ((pkItemMaterial[1]->GetType() == ITEM_ARMOR) && ((pkItemMaterial[1]->GetSubType() == ARMOR_EAR) || (pkItemMaterial[1]->GetSubType() == ARMOR_WRIST) || (pkItemMaterial[1]->GetSubType() == ARMOR_NECK) || (pkItemMaterial[1]->GetSubType() == ARMOR_SHIELD)))
bReturn = 2;
else
bReturn = 0;

if (pkItemMaterial[0]->GetSocket(AURA_ABSORBED_SOCKET) > 0)
bReturn = 0;
}
else
bReturn = 0;
}

return bReturn;
}

void CHARACTER::RefineAuraMaterials()
{
BYTE bCan = CanRefineAuraMaterials();
if (bCan == 0)
return;

LPITEM * pkItemMaterial;
pkItemMaterial = GetAuraMaterials();

if (!pkItemMaterial[0] || !pkItemMaterial[1])
return;

DWORD dwItemVnum, dwMinAbs, dwMaxAbs;
GetAuraCombineResult(dwItemVnum, dwMinAbs, dwMaxAbs);
DWORD dwPrice = AURA_REFINE_PRICE;

if (bCan == 1)
{
int iSuccessChance = 0;
long lVal = pkItemMaterial[0]->GetValue(AURA_TYPE_VALUE_FIELD);
switch (lVal)
{
case 2:
{
iSuccessChance = AURA_GRADE_2_REFINE;
}
break;
case 3:
{
iSuccessChance = AURA_GRADE_3_REFINE;
}
break;
case 4:
{
iSuccessChance = AURA_GRADE_4_REFINE;
}
break;
case 5:
{
iSuccessChance = AURA_GRADE_5_REFINE;
}
break;
case 6:
{
iSuccessChance = AURA_GRADE_6_REFINE;
}
break;
default:
{
iSuccessChance = AURA_GRADE_1_REFINE;
}
break;
}

if (GetGold() < dwPrice)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura You don't have enough Yang."));
return;
}

int iChance = number(1, 100);
bool bSucces = (iChance <= iSuccessChance ? true : false);
if (pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 49 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 99 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 149 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 199 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 249)
bSucces = true;
int oldGradeValue = pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD);
bool bPacket = true;
if (bSucces)
{
if (pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 49 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 99 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 149 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 199 && pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) != 249)
{
PointChange(POINT_GOLD, -dwPrice);
pkItemMaterial[0]->SetSocket(AURA_ABSORPTION_SOCKET, pkItemMaterial[0]->GetSocket(AURA_ABSORPTION_SOCKET)+1);
pkItemMaterial[0]->SetSocket(AURA_GRADE_VALUE_FIELD, pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD)+1);
bool bDelete = false;
if (pkItemMaterial[1]->GetCount() - 1 < 1)
bDelete = true;
pkItemMaterial[1]->SetCount(pkItemMaterial[1]->GetCount()-1);
if (bDelete == true)
pkItemMaterial[1] = NULL;
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura Success."));
}
else
{
LPITEM pkItem = ITEM_MANAGER::instance().CreateItem(dwItemVnum, 1, 0, false);
if (!pkItem)
{
sys_err("%d can't be created.", dwItemVnum);
return;
}

ITEM_MANAGER::CopyAllAttrTo(pkItemMaterial[0], pkItem);
LogManager::instance().ItemLog(this, pkItem, "AURA REFINE SUCCESS", pkItem->GetName());
pkItem->SetSocket(AURA_ABSORPTION_SOCKET, pkItem->GetSocket(AURA_ABSORPTION_SOCKET)+1);
pkItem->SetSocket(AURA_ABSORBED_SOCKET, pkItemMaterial[0]->GetSocket(AURA_ABSORBED_SOCKET));
pkItem->SetSocket(AURA_GRADE_VALUE_FIELD, pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD)+1);

PointChange(POINT_GOLD, -dwPrice);
DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, pkItemMaterial[0]->GetVnum(), -dwPrice);

WORD wCell = pkItemMaterial[0]->GetCell();
ITEM_MANAGER::instance().RemoveItem(pkItemMaterial[0], "AURA (REFINE SUCCESS)");
pkItemMaterial[1]->SetCount(pkItemMaterial[1]->GetCount()-1);

pkItem->AddToCharacter(this, TItemPos(INVENTORY, wCell));
ITEM_MANAGER::instance().FlushDelayedSave(pkItem);
pkItem->AttrLog();

if (lVal == 6)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura New absorption rate: %2f%"), float(pkItem->GetSocket(AURA_ABSORPTION_SOCKET)/10.0f));
else
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura Success."));

ClearAuraMaterials();
bPacket = false;
}
}
else
{
PointChange(POINT_GOLD, -dwPrice);
pkItemMaterial[1]->SetCount(pkItemMaterial[1]->GetCount()-1);
DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, pkItemMaterial[0]->GetVnum(), -dwPrice);

//ITEM_MANAGER::instance().RemoveItem(pkItemMaterial[1], "COMBINE (REFINE FAIL)");

if (lVal == 6)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura New absorption rate: %d%"), pkItemMaterial[0]->GetSocket(AURA_ABSORPTION_SOCKET));
else
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura Failed."));

if (pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) == 50 || pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) == 100 || pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) == 150 || pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) == 200 || pkItemMaterial[0]->GetSocket(AURA_GRADE_VALUE_FIELD) == 250)
ClearAuraMaterials();
bPacket = false;
}

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_GC_AURA;
sPacket.subheader = AURA_SUBHEADER_GC_REFINED;
sPacket.bWindow = m_bAuraRefine == true ? true : false;
sPacket.dwPrice = dwPrice;
if (pkItemMaterial[0])
{
if (bPacket)
if (oldGradeValue != 49 && oldGradeValue != 99 && oldGradeValue != 149 && oldGradeValue != 199 && oldGradeValue != 249)
sPacket.bPos = 255;
else
sPacket.bPos = 0;
else
sPacket.bPos = 0;
}
else
sPacket.bPos = 0;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
if (bSucces)
sPacket.dwMaxAbs = 100;
else
sPacket.dwMaxAbs = 0;

GetDesc()->Packet(&sPacket, sizeof(TPacketAura));
}
else
{
pkItemMaterial[1]->CopyAttributeTo(pkItemMaterial[0]);
LogManager::instance().ItemLog(this, pkItemMaterial[0], "ABSORB (REFINE SUCCESS)", pkItemMaterial[0]->GetName());
pkItemMaterial[0]->SetSocket(AURA_ABSORBED_SOCKET, pkItemMaterial[1]->GetOriginalVnum());
for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; ++i)
{
if (pkItemMaterial[0]->GetAttributeValue(i) < 0)
pkItemMaterial[0]->SetForceAttribute(i, pkItemMaterial[0]->GetAttributeType(i), 0);
}

ITEM_MANAGER::instance().RemoveItem(pkItemMaterial[1], "ABSORBED (REFINE SUCCESS)");

ITEM_MANAGER::instance().FlushDelayedSave(pkItemMaterial[0]);
pkItemMaterial[0]->AttrLog();

ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Aura Success."));

ClearAuraMaterials();

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_GC_AURA;
sPacket.subheader = AURA_SUBHEADER_GC_REFINED;
sPacket.bWindow = m_bAuraRefine == true ? true : false;
sPacket.dwPrice = dwPrice;
sPacket.bPos = 255;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 1;
GetDesc()->Packet(&sPacket, sizeof(TPacketAura));
}
}

bool CHARACTER::CleanAuraAttr(LPITEM pkItem, LPITEM pkTarget)
{
if (!CanHandleItem())
return false;
else if ((!pkItem) || (!pkTarget))
return false;
else if ((pkTarget->GetType() != ITEM_COSTUME) && (pkTarget->GetSubType() != COSTUME_AURA))
return false;

if (pkTarget->GetSocket(AURA_ABSORBED_SOCKET) <= 0)
return false;

pkTarget->SetSocket(AURA_ABSORBED_SOCKET, 0);
for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; ++i)
pkTarget->SetForceAttribute(i, 0, 0);

pkItem->SetCount(pkItem->GetCount() - 1);
LogManager::instance().ItemLog(this, pkTarget, "USE_DETACHMENT (CLEAN ATTR)", pkTarget->GetName());
return true;
}
#endif[/CODE]

[CODE lang="cpp" title="game\src\char.h"]//arat;

LPCHARACTER pCubeNpc;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
LPITEM pAuraMaterials[AURA_WINDOW_MAX_MATERIALS];
#endif

//tekrar arat;

int GetSyncHackCount() { return m_iSyncHackCount; }

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
protected:
bool m_bAuraRefine, m_bAuraAbsorption;

public:
bool isAuraOpened(bool bCombination) { return bCombination ? m_bAuraRefine : m_bAuraAbsorption; }
void OpenAura(bool bCombination);
void CloseAura();
void ClearAuraMaterials();
bool CleanAuraAttr(LPITEM pkItem, LPITEM pkTarget);
LPITEM* GetAuraMaterials() { return m_pointsInstant.pAuraMaterials; }
bool AuraIsSameGrade(long lGrade);
DWORD GetAuraCombinePrice(long lGrade);
void GetAuraCombineResult(DWORD & dwItemVnum, DWORD & dwMinAbs, DWORD & dwMaxAbs);
BYTE CheckAuraEmptyMaterialSlot();
void AddAuraMaterial(TItemPos tPos, BYTE bPos);
void RemoveAuraMaterial(BYTE bPos);
BYTE CanRefineAuraMaterials();
void RefineAuraMaterials();
#endif[/CODE]

[CODE lang="cpp" title="game\src\char_battle.cpp"]//arat;

Cube_close(this);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (IsPC())
CloseAura();
#endif[/CODE]

[CODE lang="cpp" title="game\src\char_item.cpp"]//arat;

if (IsWarping())
return false;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if ((m_bAuraRefine) || (m_bAuraAbsorption))
return false;
#endif

//tekrar arat; (Opsiyonel: bool CHARACTER::DoRefine_Rarity(LPITEM item))

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle; (Opsiyonel: bool CHARACTER::DoRefine_Rarity(LPITEM item))

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 귀환부,귀환기억부 를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("거래창,창고 등을 연 상태에서는 보따리,비단보따리를 사용할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat; (Opsiyonel; bool CHARACTER::DeleteItem(TItemPos Cell))

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Make sure you don't have any open windows!"));
return false;
}

//altına ekle; (Opsiyonel; bool CHARACTER::DeleteItem(TItemPos Cell))

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Make sure you don't have any open windows!"));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif[/CODE]

[CODE lang="cpp" title="game\src\cmd_general.cpp"]//arat; (Opsiyonel: ACMD(do_open_range_npc))

if (ch->IsDead() || ch->GetExchange() || ch->GetMyShop() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("PLEASE_BEFORE_CLOSE_WINDOW_AND_USE_THIS_FUNCTION"));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_open_range_npc))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("PLEASE_BEFORE_CLOSE_WINDOW_AND_USE_THIS_FUNCTION"));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_bkoku))

if(ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->isAcceOpened(true) || ch->isAcceOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 개인상점을 사용할 수 없습니다."));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_bkoku))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_ruhoku))

if(ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->isAcceOpened(true) || ch->isAcceOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 개인상점을 사용할 수 없습니다."));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_ruhoku))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_costum_effect))

if (ch->IsDead() || ch->GetExchange() || ch->GetMyShop() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->isAcceOpened(true) || ch->isAcceOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Kullanilamaz diger islemlere (depolama, doviz ve dukkanlar) arasinda."));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_costum_effect))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_transfer_gold))

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Make sure you don't have any open windows!"));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_transfer_gold))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_transfer_cheque))

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Make sure you don't have any open windows!"));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_transfer_cheque))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_biyolog))

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 개인상점을 사용할 수 없습니다."));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_biyolog))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_PetEvo))

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Pet Gelistirme] Pencere Acik."));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_PetEvo))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_use_won_ticket))

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Make sure you don't have any open windows!"));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_use_won_ticket))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: ACMD(do_refine_rarity))

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->GetOfflineShopOwner())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래창이 열린상태에서는 상점거래를 할수 가 없습니다."));
return;
}

//altına ekle; (Opsiyonel: ACMD(do_refine_rarity))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif[/CODE]

[CODE lang="cpp" title="game\src\cmd_gm.cpp"]//arat;

if (ch->GetShop())
strlcat(buf, ", Shop", sizeof(buf));

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true))
strlcat(buf, ", Aura Refine", sizeof(buf));

if (ch->isAuraOpened(false))
strlcat(buf, ", Aura Absorption", sizeof(buf));
#endif[/CODE]

[CODE lang="cpp" title="game\src\cube.cpp"]//arat;

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif[/CODE]

[CODE lang="cpp" title="game\src\exchange.cpp"]//arat;

if (IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래창이 열려있을경우 거래를 할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (isAuraOpened(true) || isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif

//tekrar arat;

if (victim->IsOpenSafebox() || victim->GetShopOwner() || victim->GetMyShop() || victim->IsCubeOpen())
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("상대방이 다른 거래중이라 거래를 할수 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (victim->isAuraOpened(true) || victim->isAuraOpened(false))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif[/CODE]

[CODE lang="cpp" title="game\src\input.h"]//arat;

void Refine(LPCHARACTER ch, const char* c_pData);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
void Aura(LPCHARACTER pkChar, const char* c_pData);
#endif[/CODE]

[CODE lang="cpp" title="game\src\input_db.cpp"]//arat;

if (ch->GetShopOwner() || ch->GetExchange() || ch->GetMyShop() || ch->IsCubeOpen())
{
d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른거래창이 열린상태에서는 창고를 열수가 없습니다."));
d->GetCharacter()->CancelSafeboxLoad();
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
d->GetCharacter()->CancelSafeboxLoad();
return;
}
#endif[/CODE]

[CODE lang="cpp" title="game\src\input_main.cpp"]//arat;

if (ch->GetMyShop() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중일경우 개인상점을 열수가 없습니다."));
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat;

if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중일경우 개인상점을 열수가 없습니다."));
return (iExtraLen);
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return (iExtraLen);
}
#endif

//tekrar arat; (Opsiyonel: int CInputMain::MyOfflineShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes))

if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen() || ch->GetOfflineShopOwner())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("?? ?????? ????? ??? ????."));
return (iExtraLen);
}

//altına ekle; (Opsiyonel: int CInputMain::MyOfflineShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return (iExtraLen);
}
#endif

//tekrar arat;

if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->GetMyShop() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("창고,거래창등이 열린 상태에서는 개량을 할수가 없습니다"));
ch->ClearRefineMode();
return;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
ch->ClearRefineMode();
return;
}
#endif

//tekrar arat;

void CInputMain::Refine(LPCHARACTER ch, const char* c_pData)

//fonksiyonun altına ekle;

#ifdef ENABLE_AURA_SYSTEM
void CInputMain::Aura(LPCHARACTER pkChar, const char* c_pData)
{
quest::PC* pPC = quest::CQuestManager::instance().GetPCForce(pkChar->GetPlayerID());
if (pPC->IsRunning())
return;

TPacketAura* sPacket = (TPacketAura*)c_pData;
switch (sPacket->subheader)
{
case AURA_SUBHEADER_CG_CLOSE:
{
pkChar->CloseAura();
}
break;
case AURA_SUBHEADER_CG_ADD:
{
pkChar->AddAuraMaterial(sPacket->tPos, sPacket->bPos);
}
break;
case AURA_SUBHEADER_CG_REMOVE:
{
pkChar->RemoveAuraMaterial(sPacket->bPos);
}
break;
case AURA_SUBHEADER_CG_REFINE:
{
pkChar->RefineAuraMaterials();
}
break;
default:
break;
}
}
#endif

//tekrar arat; (Opsiyonel: void CInputMain::ShopSearch(LPCHARACTER ch, const char * data, bool bName))

if (ch->IsOpenSafebox() || ch->GetShop() || ch->IsCubeOpen() || ch->IsDead() || ch->GetExchange() || ch->GetMyShop())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANT_DO_THIS_BECAUSE_OTHER_WINDOW_OPEN"));
return;
}

//altına ekle; (Opsiyonel: void CInputMain::ShopSearch(LPCHARACTER ch, const char * data, bool bName))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat; (Opsiyonel: void CInputMain::ShopSearchBuy(LPCHARACTER ch, const char * data))

if (ch->IsOpenSafebox() || ch->GetShop() || ch->IsCubeOpen() || ch->IsDead() || ch->GetExchange() || ch->GetMyShop())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANT_DO_THIS_BECAUSE_OTHER_WINDOW_OPEN"));
return;
}

//altına ekle; (Opsiyonel: void CInputMain::ShopSearchBuy(LPCHARACTER ch, const char * data))

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return;
}
#endif

//tekrar arat;

}
return (iExtraLen);
}

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
case HEADER_CG_AURA:
Aura(ch, c_pData);
break;
#endif[/CODE]

[CODE lang="cpp" title="game\src\item.cpp"]//arat;

if (ch->GetDesc())
m_dwLastOwnerPID = ch->GetPlayerID();

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if ((GetType() == ITEM_COSTUME && GetSubType() == COSTUME_AURA) && (GetSocket(AURA_ABSORPTION_SOCKET) == 0))
{
long lVal = GetValue(AURA_GRADE_VALUE_FIELD);
if (lVal < 1)
{
SetSocket(AURA_GRADE_VALUE_FIELD, 1);
SetSocket(AURA_ABSORPTION_SOCKET, 1);
}
else
SetSocket(AURA_ABSORPTION_SOCKET, lVal);
}
#endif

//tekrar arat;

else if (GetSubType() == COSTUME_HAIR)
return WEAR_COSTUME_HAIR;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
else if (GetSubType() == COSTUME_AURA)
return WEAR_COSTUME_AURA;
#endif

//tekrar arat;

if (false == IsAccessoryForSocket())
{
[...]
}
else
{
[...]
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_AURA) && (GetSocket(AURA_ABSORBED_SOCKET)))
{
TItemTable* pkItemAbsorbed = ITEM_MANAGER::instance().GetTable(GetSocket(AURA_ABSORBED_SOCKET));
if (pkItemAbsorbed)
{
if ((pkItemAbsorbed->bType == ITEM_ARMOR) && ((pkItemAbsorbed->bSubType == ARMOR_SHIELD) || (pkItemAbsorbed->bSubType == ARMOR_HEAD)))
{
long lDefGrade = pkItemAbsorbed->alValues[1] + long(pkItemAbsorbed->alValues[5] * 2);
double dValue = lDefGrade * (GetSocket(AURA_ABSORPTION_SOCKET));
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
lDefGrade = (long)dValue;
if (((pkItemAbsorbed->alValues[1] > 0) && (lDefGrade <= 0)) || ((pkItemAbsorbed->alValues[5] > 0) && (lDefGrade < 1)))
lDefGrade += 1;
else if ((pkItemAbsorbed->alValues[1] > 0) || (pkItemAbsorbed->alValues[5] > 0))
lDefGrade += 1;

m_pOwner->ApplyPoint(APPLY_DEF_GRADE_BONUS, bAdd ? lDefGrade : -lDefGrade);

long lDefMagicBonus = pkItemAbsorbed->alValues[0];
dValue = lDefMagicBonus * (GetSocket(AURA_ABSORPTION_SOCKET));
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
lDefMagicBonus = (long)dValue;
if ((pkItemAbsorbed->alValues[0] > 0) && (lDefMagicBonus < 1))
lDefMagicBonus += 1;
else if (pkItemAbsorbed->alValues[0] > 0)
lDefMagicBonus += 1;

m_pOwner->ApplyPoint(APPLY_MAGIC_DEF_GRADE, bAdd ? lDefMagicBonus : -lDefMagicBonus);
}
}
}
#endif

//tekrar arat;

if (m_pProto->aApplies.bType == APPLY_NONE)

//değiştir;

#ifdef ENABLE_AURA_SYSTEM
if ((m_pProto->aApplies.bType == APPLY_NONE) && (GetSubType() != COSTUME_AURA))
#else
if (m_pProto->aApplies.bType == APPLY_NONE)
#endif

//tekrar arat;

long value = m_pProto->aApplies.lValue;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_AURA))
{
TItemTable* pkItemAbsorbed = ITEM_MANAGER::instance().GetTable(GetSocket(AURA_ABSORBED_SOCKET));
if (pkItemAbsorbed)
{
if (pkItemAbsorbed->aApplies.bType == APPLY_NONE)
continue;

value = pkItemAbsorbed->aApplies.lValue;
if (value < 0)
continue;

double dValue = value * (GetSocket(AURA_ABSORPTION_SOCKET));
dValue = (double)dValue / 100;
dValue = (double)dValue + .5;
dValue = (double)dValue / 10;
value = (long)dValue;
if ((pkItemAbsorbed->aApplies.lValue > 0) && (value <= 0))
value += 1;
}
else
continue;
}
#endif

//tekrar arat;

if (ia.bType == APPLY_SKILL)
m_pOwner->ApplyPoint(ia.bType, bAdd ? ia.sValue : ia.sValue ^ 0x00800000);
else
m_pOwner->ApplyPoint(ia.bType, bAdd ? ia.sValue : -ia.sValue);

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
if ((GetType() == ITEM_COSTUME) && (GetSubType() == COSTUME_AURA))
{
double dValue = sValue * GetSocket(AURA_ABSORPTION_SOCKET);
dValue = (double)dValue / 100;
dValue = (double)dValue / 10;
dValue = (double)dValue + .5;
sValue = (long) dValue;
if ((ia.sValue > 0) && (sValue <= 0))
sValue += 1;
}
#endif

//tekrar arat;

if (false == bAdd)
{
const CItem* pArmor = m_pOwner->GetWear(WEAR_BODY);
toSetValue = (NULL != pArmor) ? pArmor->GetVnum() : m_pOwner->GetOriginalPart(PART_MAIN);
}
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
else if (GetSubType() == COSTUME_AURA)
{
toSetValue = (bAdd == true) ? toSetValue : 0;
toSetPart = PART_AURA;
}
#endif[/CODE]

[CODE lang="cpp" title="Opsiyonel: game\src\offlineshop.cpp"]//arat;

if (ch->GetExchange() || ch->GetShop() || ch->GetMyShop() || ch->GetOfflineShop())
return false;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
return false;
#endif[/CODE]

[CODE lang="cpp" title="Opsiyonel: game\src\offlineshop_manager.cpp"]//arat;

if (ch->IsDead() || ch->GetExchange() || ch->GetMyShop() || ch->GetOfflineShop() || ch->IsCubeOpen() || ch->IsOpenSafebox() || ch->GetShop())
return false;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
return false;
#endif[/CODE]

[CODE lang="cpp" title="game\src\packet.h"]//arat;

HEADER_CG_ITEM_GIVE = 83,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
HEADER_CG_AURA = 84,//Buradaki 84'ün değişmesi gerekebilir.
#endif

//tekrar arat;

HEADER_GC_AUTH_SUCCESS_OPENID = 154,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
HEADER_GC_AURA = 156,//Buradaki 156'nın değişmesi gerekebilir.
#endif

//tekrar arat;

CHR_EQUIPPART_HAIR,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
CHR_EQUIPPART_AURA,
#endif

//tekrar arat;

typedef struct SPacketGCStateCheck

//fonksiyonun altına ekle;

#ifdef ENABLE_AURA_SYSTEM
enum
{
AURA_SUBHEADER_GC_OPEN = 0,
AURA_SUBHEADER_GC_CLOSE,
AURA_SUBHEADER_GC_ADDED,
AURA_SUBHEADER_GC_REMOVED,
AURA_SUBHEADER_GC_REFINED,
AURA_SUBHEADER_CG_CLOSE = 0,
AURA_SUBHEADER_CG_ADD,
AURA_SUBHEADER_CG_REMOVE,
AURA_SUBHEADER_CG_REFINE,
};

typedef struct SPacketAura
{
BYTE header;
BYTE subheader;
bool bWindow;
DWORD dwPrice;
BYTE bPos;
TItemPos tPos;
DWORD dwItemVnum;
DWORD dwMinAbs;
DWORD dwMaxAbs;
} TPacketAura;
#endif[/CODE]

[CODE lang="cpp" title="game\src\packet_info.cpp"]//arat;

Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
Set(HEADER_CG_AURA, sizeof(TPacketAura), "Aura", false);
#endif[/CODE]

[CODE lang="cpp" title="game\src\questlua_pc.cpp"]//arat;

lua_pushboolean(L, (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()));

//değiştir;

lua_pushboolean(L, (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->isAuraOpened(true) || ch->isAuraOpened(false)));

//tekrar arat;

lua_pushboolean(L, (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()));

//değiştir;

lua_pushboolean(L, (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->isAuraOpened(true) || ch->isAuraOpened(false)));

//tekrar arat;

if (ch->IsOpenSafebox() || ch->GetExchange() || ch->GetMyShop() || ch->IsCubeOpen())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래창이 열린상태에서는 상점거래를 할수 가 없습니다."));
return 0;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (ch->isAuraOpened(true) || ch->isAuraOpened(false))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANT_DO_THIS_BECAUSE_OTHER_WINDOW_OPEN"));
return 0;
}
#endif

//tekrar arat;

void RegisterPCFunctionTable()

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
ALUA(pc_open_aura)
{
if (lua_isboolean(L, 1))
{
CQuestManager& qMgr = CQuestManager::instance();
LPCHARACTER pkChar = qMgr.GetCurrentCharacterPtr();
if (pkChar)
pkChar->OpenAura(lua_toboolean(L, 1));
}
else
sys_err("Invalid argument: arg1 must be boolean.");

return 0;
}
#endif

//tekrar arat;

{ "set_dx", pc_set_dx },

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
{"open_aura", pc_open_aura},
#endif[/CODE]

[CODE lang="cpp" title="game\src\shop_manager.cpp"]//arat;

if (pkChr->IsOpenSafebox() || pkChr->GetExchange() || pkChr->GetMyShop() || pkChr->IsCubeOpen())
{
pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래창이 열린상태에서는 상점거래를 할수 가 없습니다."));
return false;
}

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
if (pkChr->isAuraOpened(true) || pkChr->isAuraOpened(false))
{
pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("다른 거래중(창고,교환,상점)에는 사용할 수 없습니다."));
return false;
}
#endif[/CODE]

[CODE lang="cpp" title="GameLib\ActorInstance.h"]//arat;

void SetHair(DWORD eHair);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
void AttachAura(CItemData * pItemData);
#endif[/CODE]

[CODE lang="cpp" title="GameLib\ActorInstanceAttach.cpp"]//arat;

void CActorInstance::__ClearAttachingEffect()

//fonksiyonun altına ekle;

#ifdef ENABLE_AURA_SYSTEM
void CActorInstance::AttachAura(CItemData * pItemData)
{
if (!pItemData)
{
RegisterModelThing(CRaceData::PART_AURA, nullptr);
SetModelInstance(CRaceData::PART_AURA, CRaceData::PART_AURA, 0);
RefreshActorInstance();
return;
}

RegisterModelThing(CRaceData::PART_AURA, pItemData->GetModelThing());
SetModelInstance(CRaceData::PART_AURA, CRaceData::PART_AURA, 0);
AttachModelInstance(CRaceData::PART_MAIN, "Bip01 Spine2", CRaceData::PART_AURA);
}
#endif[/CODE]

[CODE lang="cpp" title="GameLib\ItemData.cpp"]//include'lerin olduğu bölüme yoksa ekle;

#ifdef ENABLE_AURA_SYSTEM
#include "../EffectLib/EffectManager.h"
#endif

//arat;

BOOL CItemData::IsEquipment() const

//fonksiyonun altına ekle;

#ifdef ENABLE_AURA_SYSTEM
void CItemData::SetAuraEffectID(const char* szAuraEffectPath)
{
if (szAuraEffectPath)
CEffectManager::Instance().RegisterEffect2(szAuraEffectPath, &m_dwAuraEffectID);
}
#endif

//tekrar arat;

memset(&m_ItemTable, 0, sizeof(m_ItemTable));

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
m_dwAuraEffectID = 0;
#endif[/CODE]

[CODE lang="cpp" title="GameLib\ItemData.h"]//arat;

enum ECostumeSubTypes

//fonksiyon içindeki sıraya göre ekle;

#ifdef ENABLE_AURA_SYSTEM
COSTUME_AURA = 5,//Buradaki 5'in sıraya göre değişmesi gerekebilir.
#endif

//tekrar arat;

WEAR_ABILITY8,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
WEAR_COSTUME_AURA,
#endif

//tekrar arat;

enum EItemWearableFlag

//fonksiyonun içindeki sıraya göre ekle;

#ifdef ENABLE_AURA_SYSTEM
WEARABLE_COSTUME_AURA = (1 << 18),//Buradaki 18'in sıraya göre değişmesi gerekebilir.
#endif

//tekrar arat;

void SetItemTableData(TItemTable * pItemTable);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
protected:
DWORD m_dwAuraEffectID;
public:
void SetAuraEffectID(const char* szAuraEffectPath);
DWORD GetAuraEffectID() const { return m_dwAuraEffectID; }

enum EAuraMisc
{
AURA_GRADE_MAX_NUM = 6,
};
#endif[/CODE]

[CODE lang="cpp" title="GameLib\ItemManager.cpp"]//arat;

const std::string & c_rstrModelFileName = TokenVector[3];
pItemData->SetDefaultItemData(c_rstrIcon.c_str(), c_rstrModelFileName.c_str());

//değiştir;

#ifdef ENABLE_AURA_SYSTEM
if (!strcmp(c_rstrType.c_str(), "AURA"))
{
const std::string& c_rstrAuraEffectFileName = TokenVector[3];
pItemData->SetAuraEffectID(c_rstrAuraEffectFileName.c_str());
pItemData->SetDefaultItemData(c_rstrIcon.c_str());
}
else
{
const std::string & c_rstrModelFileName = TokenVector[3];
pItemData->SetDefaultItemData(c_rstrIcon.c_str(), c_rstrModelFileName.c_str());
}
#else
const std::string & c_rstrModelFileName = TokenVector[3];
pItemData->SetDefaultItemData(c_rstrIcon.c_str(), c_rstrModelFileName.c_str());
#endif[/CODE]

[CODE lang="cpp" title="GameLib\RaceData.h"]//arat;

PART_HAIR,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
PART_AURA,
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\GameType.h"]//arat;

const DWORD c_New_Equipment_Start = c_Equipment_Start + 24;//Buradaki 24 sayısı dosyana göre değişebilir.

//değiştir;

#ifdef ENABLE_AURA_SYSTEM
const DWORD c_New_Equipment_Start = c_Equipment_Start + 25;//Buradaki 25 sayısını dosyana göre artırman ya da azaltman gerekebilir. Değiştiğin sayının 1 üstünü yap.
#else
const DWORD c_New_Equipment_Start = c_Equipment_Start + 24;//Buradaki 24 sayısı dosyana göre değişebilir.
#endif

//tekrar arat;

const DWORD c_Costume_Slot_Acce = c_Costume_Slot_Start + 4;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
const DWORD c_Costume_Slot_Aura = c_Costume_Slot_Start + 5;//Bu 5 rakamını fonksiyon içindeki sıraya göre değiştirmen gerekebilir. Gördüğün kısımdaki son rakamın 1 üstünü yaz.
#endif

//tekrar arat;

const DWORD c_Costume_Slot_Count = 5;//Buradaki 5 rakamı dosyana göre değişkenlik gösterebilir.

//değiştir;

#ifdef ENABLE_AURA_SYSTEM
const DWORD c_Costume_Slot_Count = 6;//Buradaki 6 rakamını değiştirdiğin rakamın 1 üstüyle değiştirmen gerekir.
#else
const DWORD c_Costume_Slot_Count = 5;//Buradaki 5 rakamı dosyana göre değişkenlik gösterebilir.
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\InstanceBase.cpp"]//arat;

SetHair(c_rkCreateData.m_dwHair);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
SetAura(c_rkCreateData.m_dwAura);
#endif

//tekrar arat;

void CInstanceBase::SetArmor(DWORD dwArmor)

//fonksiyonun altına ekle;

#ifdef ENABLE_AURA_SYSTEM
bool CInstanceBase::SetAura(DWORD eAura)
{
if (!IsPC() || IsPoly() || __IsShapeAnimalWear())
return false;

//m_GraphicThingInstance.ChangePart(CRaceData::PART_AURA, eAura);
if (!eAura)
{
if (m_auraRefineEffect)
{
__DetachEffect(m_auraRefineEffect);
m_auraRefineEffect = 0;
}
m_awPart[CRaceData::PART_AURA] = 0;
return true;
}

CItemData* pItemData;
if (!CItemManager::Instance().GetItemDataPointer(eAura, &pItemData))
{
if (m_auraRefineEffect)
{
__DetachEffect(m_auraRefineEffect);
m_auraRefineEffect = 0;
}
m_awPart[CRaceData::PART_AURA] = 0;
return true;
}

ClearAuraEffect();

BYTE byRace = (BYTE)GetRace();
BYTE byJob = (BYTE)RaceToJob(byRace);
BYTE bySex = (BYTE)RaceToSex(byRace);

byJob += 1;
if (bySex == 0)
byJob += 5;

//m_GraphicThingInstance.AttachAura(pItemData);

float fScaleX, fScaleY, fScaleZ, fPositionX, fPositionY, fPositionZ;
if (pItemData->GetItemScale(byJob, fScaleX, fScaleY, fScaleZ, fPositionX, fPositionY, fPositionZ))
{
if (m_kHorse.IsMounting() && byJob != NRaceData::JOB_WOLFMAN)
fPositionZ += 15.0f;

// D3DXVECTOR3 * sendPosition;
// sendPosition->x = fPositionX;
// sendPosition->y = fPositionY;
// sendPosition->z = fPositionZ;

m_auraRefineEffect = m_GraphicThingInstance.AttachEffectByID(NULL, "Bip01 Spine2", pItemData->GetAuraEffectID(), NULL);
m_awPart[CRaceData::PART_AURA] = eAura;
//__EffectContainer_AttachEffect(m_auraRefineEffect);
}

return true;
}

void CInstanceBase::ChangeAura(DWORD eAura)
{
if (!IsPC())
return;

SetAura(eAura);
}

void CInstanceBase::ClearAuraEffect()
{
if (!m_auraRefineEffect)
return;

__DetachEffect(m_auraRefineEffect);
m_auraRefineEffect = 0;
}
#endif

//tekrar arat;

DWORD eHair = GetPart(CRaceData::PART_HAIR);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
DWORD eAura = GetPart(CRaceData::PART_AURA);
#endif

//tekrar arat;

SetHair(eHair);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
SetAura(eAura);
#endif

//tekrar arat;

m_armorRefineEffect = 0;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
m_auraRefineEffect = 0;
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\InstanceBase.h"]//arat;

bool m_isMain;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
DWORD m_dwAura;
#endif

//tekrar arat;

AFFECT_NUM = 64,

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
AFFECT_AURA1,
AFFECT_AURA2,
AFFECT_AURA3,
AFFECT_AURA4,
AFFECT_AURA5,
AFFECT_AURA6,
#endif

//tekrar arat;

void SetHair(DWORD eHair);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
bool SetAura(DWORD eAura);
void ChangeAura(DWORD eAura);
#endif

//tekrar arat;

void __ClearArmorRefineEffect();

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
void ClearAuraEffect();
#endif

//tekrar arat;

DWORD m_armorRefineEffect;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
DWORD m_auraRefineEffect;
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\Locale_inc.h"]//müsait bir yere ekle;

#define ENABLE_AURA_SYSTEM[/CODE]

[CODE lang="cpp" title="UserInterface\NetworkActorManager.cpp"]//arat;

m_dwHair = src.m_dwHair;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
m_dwAura = src.m_dwAura;
#endif

//tekrar arat;

m_dwHair=0;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
m_dwAura = 0;
#endif

//tekrar arat;

kCreateData.m_dwHair=rkNetActorData.m_dwHair;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
kCreateData.m_dwAura = rkNetActorData.m_dwAura;
#endif

//tekrar arat;

pkInstFind->ChangeGuild(c_rkNetUpdateActorData.m_dwGuildID);

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
pkInstFind->ChangeAura(c_rkNetUpdateActorData.m_dwAura);
#endif

//tekrar arat;

rkNetActorData.m_dwHair=c_rkNetUpdateActorData.m_dwHair;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
rkNetActorData.m_dwAura = c_rkNetUpdateActorData.m_dwAura;
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\NetworkActorManager.h"]//arat;

DWORD m_dwHair;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
DWORD m_dwAura;
#endif

//tekrar arat;

DWORD m_dwHair;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
DWORD m_dwAura;
#endif

//tekrar arat;

m_dwHair=0;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
m_dwAura = 0;
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\Packet.h"]//arat;

HEADER_CG_GIVE_ITEM = 83,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
HEADER_CG_AURA = 84,//Buradaki 84'ün değişmesi gerekebilir.
#endif

//tekrar arat;

HEADER_GC_AUTH_SUCCESS_OPENID = 154,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
HEADER_GC_AURA = 156,//Buradaki 156'nın değişmesi gerekebilir.
#endif

//tekrar arat;

CHR_EQUIPPART_HAIR,

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
CHR_EQUIPPART_AURA,
#endif

//tekrar arat;

#pragma pack(pop)

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
enum EAuraInfo
{
AURA_ABSORPTION_SOCKET = 0,
AURA_ABSORBED_SOCKET = 1,
AURA_LEVEL_SOCKET = 2,
AURA_WINDOW_MAX_MATERIALS = 2,
AURA_ICE_RUNIC = 49990,
};

enum
{
AURA_SUBHEADER_GC_OPEN = 0,
AURA_SUBHEADER_GC_CLOSE,
AURA_SUBHEADER_GC_ADDED,
AURA_SUBHEADER_GC_REMOVED,
AURA_SUBHEADER_GC_REFINED,
AURA_SUBHEADER_CG_CLOSE = 0,
AURA_SUBHEADER_CG_ADD,
AURA_SUBHEADER_CG_REMOVE,
AURA_SUBHEADER_CG_REFINE,
};

typedef struct SPacketAura
{
BYTE header;
BYTE subheader;
bool bWindow;
DWORD dwPrice;
BYTE bPos;
TItemPos tPos;
DWORD dwItemVnum;
DWORD dwMinAbs;
DWORD dwMaxAbs;
} TPacketAura;

typedef struct SAuraMaterial
{
BYTE bHere;
WORD wCell;
} TAuraMaterial;

typedef struct SAuraResult
{
DWORD dwItemVnum;
DWORD dwMinAbs;
DWORD dwMaxAbs;
} TAuraResult;
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonApplication.h"]//include'lerin olduğu bölüme ekle;

#ifdef ENABLE_AURA_SYSTEM
#include "PythonAura.h"
#endif

//arat;

CPythonSafeBox m_pySafeBox;

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
CPythonAura m_pyAura;
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonApplicationModule.cpp"]//arat;

#ifdef ENABLE_COSTUME_SYSTEM
PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM", 1);
#else
PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM", 0);
#endif

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
PyModule_AddIntConstant(poModule, "ENABLE_AURA_SYSTEM", 1);
#else
PyModule_AddIntConstant(poModule, "ENABLE_AURA_SYSTEM", 0);
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonCharacterModule.cpp"]//arat;

PyModule_AddIntConstant(poModule, "NEW_AFFECT_DRAGON_SOUL_DECK2", CInstanceBase::NEW_AFFECT_DRAGON_SOUL_DECK2);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
PyModule_AddIntConstant(poModule, "AFFECT_AURA1", CInstanceBase::AFFECT_AURA1);
PyModule_AddIntConstant(poModule, "AFFECT_AURA2", CInstanceBase::AFFECT_AURA2);
PyModule_AddIntConstant(poModule, "AFFECT_AURA3", CInstanceBase::AFFECT_AURA3);
PyModule_AddIntConstant(poModule, "AFFECT_AURA4", CInstanceBase::AFFECT_AURA4);
PyModule_AddIntConstant(poModule, "AFFECT_AURA5", CInstanceBase::AFFECT_AURA5);
PyModule_AddIntConstant(poModule, "AFFECT_AURA6", CInstanceBase::AFFECT_AURA6);
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonItemModule.cpp"]//arat;

PyModule_AddIntConstant(poModule, "COSTUME_TYPE_HAIR", CItemData::COSTUME_HAIR);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
PyModule_AddIntConstant(poModule, "COSTUME_TYPE_AURA", CItemData::COSTUME_AURA);
#endif

//tekrar arat;

PyModule_AddIntConstant(poModule, "COSTUME_SLOT_HAIR", c_Costume_Slot_Hair);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
PyModule_AddIntConstant(poModule, "COSTUME_TYPE_AURA", CItemData::COSTUME_AURA);
PyModule_AddIntConstant(poModule, "COSTUME_SLOT_AURA", c_Costume_Slot_Aura);
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonNetworkStream.cpp"]//arat;

Set(HEADER_GC_DRAGON_SOUL_REFINE, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCDragonSoulRefine), STATIC_SIZE_PACKET));

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
Set(HEADER_GC_AURA, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketAura), false));
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonNetworkStream.h"]//arat;

void __TEST_SetSkillGroupFake(int iIndex);

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
bool SendAuraClosePacket();
bool SendAuraAddPacket(TItemPos tPos, BYTE bPos);
bool SendAuraRemovePacket(BYTE bPos);
bool SendAuraRefinePacket();
#endif

//tekrar arat;

bool RecvChannelPacket();

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
bool RecvAuraPacket(bool bReturn = false);
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonNetworkStreamPhaseGame.cpp"]//arat;

case HEADER_GC_DRAGON_SOUL_REFINE:
ret = RecvDragonSoulRefine();
break;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
case HEADER_GC_AURA:
ret = RecvAuraPacket();
break;
#endif

//dosyanın sonuna ekle;

#ifdef ENABLE_AURA_SYSTEM
bool CPythonNetworkStream::RecvAuraPacket(bool bReturn)
{
TPacketAura sPacket;
if (!Recv(sizeof(sPacket), &sPacket))
return bReturn;

bReturn = true;
switch (sPacket.subheader)
{
case AURA_SUBHEADER_GC_OPEN:
{
CPythonAura::Instance().Clear();
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "ActAura", Py_BuildValue("(ib)", 1, sPacket.bWindow));
}
break;
case AURA_SUBHEADER_GC_CLOSE:
{
CPythonAura::Instance().Clear();
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "ActAura", Py_BuildValue("(ib)", 2, sPacket.bWindow));
}
break;
case AURA_SUBHEADER_GC_ADDED:
{
CPythonAura::Instance().AddMaterial(sPacket.dwPrice, sPacket.bPos, sPacket.tPos);
if (sPacket.bPos == 1)
{
CPythonAura::Instance().AddResult(sPacket.dwItemVnum, sPacket.dwMinAbs, sPacket.dwMaxAbs);
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "AlertAura", Py_BuildValue("(b)", sPacket.bWindow));
}

PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "ActAura", Py_BuildValue("(ib)", 3, sPacket.bWindow));
}
break;
case AURA_SUBHEADER_GC_REMOVED:
{
CPythonAura::Instance().RemoveMaterial(sPacket.dwPrice, sPacket.bPos);
if (sPacket.bPos == 0)
CPythonAura::Instance().RemoveMaterial(sPacket.dwPrice, 1);

PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "ActAura", Py_BuildValue("(ib)", 4, sPacket.bWindow));
}
break;
case AURA_SUBHEADER_GC_REFINED:
{
if (sPacket.bPos != 255)
{
if (sPacket.dwMaxAbs == 0)
CPythonAura::Instance().RemoveMaterial(sPacket.dwPrice, 1);
else
{
CPythonAura::Instance().RemoveMaterial(sPacket.dwPrice, 0);
CPythonAura::Instance().RemoveMaterial(sPacket.dwPrice, 1);
}
}

PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "ActAura", Py_BuildValue("(ib)", 4, sPacket.bWindow));
}
break;
default:
TraceError("CPythonNetworkStream::RecvAuraPacket: unknown subheader %d\n.", sPacket.subheader);
break;
}

return bReturn;
}

bool CPythonNetworkStream::SendAuraClosePacket()
{
if (!__CanActMainInstance())
return true;

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_CG_AURA;
sPacket.subheader = AURA_SUBHEADER_CG_CLOSE;
sPacket.dwPrice = 0;
sPacket.bPos = 0;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
if (!Send(sizeof(sPacket), &sPacket))
return false;

return true;
}

bool CPythonNetworkStream::SendAuraAddPacket(TItemPos tPos, BYTE bPos)
{
if (!__CanActMainInstance())
return true;

TPacketAura sPacket;
sPacket.header = HEADER_CG_AURA;
sPacket.subheader = AURA_SUBHEADER_CG_ADD;
sPacket.dwPrice = 0;
sPacket.bPos = bPos;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
if (!Send(sizeof(sPacket), &sPacket))
return false;

return true;
}

bool CPythonNetworkStream::SendAuraRemovePacket(BYTE bPos)
{
if (!__CanActMainInstance())
return true;

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_CG_AURA;
sPacket.subheader = AURA_SUBHEADER_CG_REMOVE;
sPacket.dwPrice = 0;
sPacket.bPos = bPos;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
if (!Send(sizeof(sPacket), &sPacket))
return false;

return true;
}

bool CPythonNetworkStream::SendAuraRefinePacket()
{
if (!__CanActMainInstance())
return true;

TItemPos tPos;
tPos.window_type = INVENTORY;
tPos.cell = 0;

TPacketAura sPacket;
sPacket.header = HEADER_CG_AURA;
sPacket.subheader = AURA_SUBHEADER_CG_REFINE;
sPacket.dwPrice = 0;
sPacket.bPos = 0;
sPacket.tPos = tPos;
sPacket.dwItemVnum = 0;
sPacket.dwMinAbs = 0;
sPacket.dwMaxAbs = 0;
if (!Send(sizeof(sPacket), &sPacket))
return false;

return true;
}
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\PythonNetworkStreamPhaseGameActor.cpp"]//arat;

kNetActorData.m_dwHair=0;

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
kNetActorData.m_dwAura = 0;
#endif

//tekrar arat;

kNetActorData.m_dwHair = chrInfoPacket.awPart[CHR_EQUIPPART_HAIR];

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
kNetActorData.m_dwAura = chrInfoPacket.awPart[CHR_EQUIPPART_AURA];
#endif

//tekrar arat;

kNetUpdateActorData.m_dwHair = chrUpdatePacket.awPart[CHR_EQUIPPART_HAIR];

//altına ekle;

#ifdef ENABLE_AURA_SYSTEM
kNetUpdateActorData.m_dwAura = chrUpdatePacket.awPart[CHR_EQUIPPART_AURA];
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\StdAfx.h"]//arat;

extern const std::string& ApplicationStringTable_GetString(DWORD dwID);

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
void initAura();
#endif[/CODE]

[CODE lang="cpp" title="UserInterface\UserInterface.cpp"]//arat;

NANOBEGIN

//üstüne ekle;

#ifdef ENABLE_AURA_SYSTEM
initAura();
#endif[/CODE]

[CODE lang="python" title="root\game.py"]#dosyanın sonuna ekle;

if app.ENABLE_AURA_SYSTEM:
def ActAura(self, iAct, bWindow):
if self.interface:
self.interface.ActAura(iAct, bWindow)

def AlertAura(self, bWindow):
snd.PlaySound("sound/ui/make_soket.wav")
# if bWindow:
# self.PopupMessage(localeInfo.AURA_DEL_SERVEITEM)
# else:
# self.PopupMessage(localeInfo.AURA_DEL_ABSORDITEM)[/CODE]

[CODE lang="python" title="root\interfacemodule.py"]#import'ların olduğu bölüme ekle;

if app.ENABLE_AURA_SYSTEM:
import uiaura

#arat;

def __MakeCubeWindow(self):

#fonksiyonun altına ekle;

if app.ENABLE_AURA_SYSTEM:
def __MakeAuraWindow(self):
self.wndAuraRefine = uiaura.RefineWindow(self.wndInventory, self)
self.wndAuraRefine.LoadWindow()
self.wndAuraRefine.Hide()

self.wndAuraAbsorption = uiaura.AbsorbWindow(self.wndInventory, self)
self.wndAuraAbsorption.LoadWindow()
self.wndAuraAbsorption.Hide()

if self.wndInventory:
self.wndInventory.SetAuraWindow(self.wndAuraAbsorption, self.wndAuraRefine)

#tekrar arat;

self.__MakeWebWindow()

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
self.__MakeAuraWindow()

#tekrar arat;

self.privateShopBuilder.SetItemToolTip(self.tooltipItem)

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
self.wndAuraAbsorption.SetItemToolTip(self.tooltipItem)
self.wndAuraRefine.SetItemToolTip(self.tooltipItem)

#tekrar arat;

self.wndChatLog.Destroy()

#üstüne ekle;

if app.ENABLE_AURA_SYSTEM:
if self.wndAuraAbsorption:
self.wndAuraAbsorption.Destroy()

if self.wndAuraRefine:
self.wndAuraRefine.Destroy()

#tekrar arat;

del self.bigBoard

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
del self.wndAuraAbsorption
del self.wndAuraRefine

#tekrar arat;

def CloseWbWindow(self):

#fonksiyonun altına ekle;

if app.ENABLE_AURA_SYSTEM:
def ActAura(self, iAct, bWindow):
if iAct == 1:
if bWindow == True:
if not self.wndAuraRefine.IsOpened():
self.wndAuraRefine.Open()

if not self.wndInventory.IsShow():
self.wndInventory.Show()
else:
if not self.wndAuraAbsorption.IsOpened():
self.wndAuraAbsorption.Open()

if not self.wndInventory.IsShow():
self.wndInventory.Show()

self.wndInventory.RefreshBagSlotWindow()
elif iAct == 2:
if bWindow == True:
if self.wndAuraRefine.IsOpened():
self.wndAuraRefine.Close()
else:
if self.wndAuraAbsorption.IsOpened():
self.wndAuraAbsorption.Close()

self.wndInventory.RefreshBagSlotWindow()
elif iAct == 3 or iAct == 4:
if bWindow == True:
if self.wndAuraRefine.IsOpened():
self.wndAuraRefine.Refresh(iAct)
else:
if self.wndAuraAbsorption.IsOpened():
self.wndAuraAbsorption.Refresh(iAct)

self.wndInventory.RefreshBagSlotWindow()[/CODE]

[CODE lang="python" title="root\playersettingmodule.py"]#arat;

chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse")

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + 60, "Bip01 Spine2", "d:/ymir work/pc/common/effect/aura/aura_01_49_001.mse")#Buradaki 60 sayısı InstanceBase.h'de AFFECT_AURA1,'in sırasıdır. Oradaki sıraya göre değişkenlik gösterebilir.
chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + 61, "Bip01 Spine2", "d:/ymir work/pc/common/effect/aura/aura_50_99_002.mse")#Buradaki 61 sayısı InstanceBase.h'de AFFECT_AURA2,'in sırasıdır. Oradaki sıraya göre değişkenlik gösterebilir.
chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + 62, "Bip01 Spine2", "d:/ymir work/pc/common/effect/aura/aura_100_149_003.mse")#Buradaki 62 sayısı InstanceBase.h'de AFFECT_AURA3,'in sırasıdır. Oradaki sıraya göre değişkenlik gösterebilir.
chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + 63, "Bip01 Spine2", "d:/ymir work/pc/common/effect/aura/aura_150_199_004.mse")#Buradaki 63 sayısı InstanceBase.h'de AFFECT_AURA4,'in sırasıdır. Oradaki sıraya göre değişkenlik gösterebilir.
chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + 64, "Bip01 Spine2", "d:/ymir work/pc/common/effect/aura/aura_200_249_005.mse")#Buradaki 64 sayısı InstanceBase.h'de AFFECT_AURA5,'in sırasıdır. Oradaki sıraya göre değişkenlik gösterebilir.
chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT + 65, "Bip01 Spine1", "d:/ymir work/pc/common/effect/aura/aura_250_006.mse")#Buradaki 65 sayısı InstanceBase.h'de AFFECT_AURA6,'in sırasıdır. Oradaki sıraya göre değişkenlik gösterebilir.[/CODE]

[CODE lang="python" title="root\uiinventory.py"]#import'ların olduğu bölüme ekle;

if app.ENABLE_AURA_SYSTEM:
import aura

#arat;

self.wndCostume = None

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
self.listAttachedAuras = []

#arat;

self.wndItem.RefreshSlot()

#üstüne ekle;

if app.ENABLE_AURA_SYSTEM:
slotNumberChecked = 0
for j in xrange(aura.WINDOW_MAX_MATERIALS):
(isHere, iCell) = aura.GetAttachedItem(j)
if isHere:
if iCell == slotNumber:
self.wndItem.ActivateSlot(i, (36.00 / 255.0), (222.00 / 255.0), (3.00 / 255.0), 1.0)
if not slotNumber in self.listAttachedAuras:
self.listAttachedAuras.append(slotNumber)

slotNumberChecked = 1
else:
if slotNumber in self.listAttachedAuras and not slotNumberChecked:
self.wndItem.DeactivateSlot(i)
self.listAttachedAuras.remove(slotNumber)

#arat;

if app.ENABLE_DRAGON_SOUL_SYSTEM:
if self.wndDragonSoulRefine.IsShow():
self.wndDragonSoulRefine.AutoSetItem((player.INVENTORY, slotIndex), 1)
return

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
itemVNum = player.GetItemIndex(slotIndex)
if self.isShowAuraWindow():
if itemVNum >= 21900 and itemVNum <= 21999:
return
aura.Add(player.INVENTORY, slotIndex, 255)
return

#arat;

def OnMoveWindow(self, x, y):

#üstüne ekle;

if app.ENABLE_AURA_SYSTEM:
def SetAuraWindow(self, wndAuraAbsorption, wndAuraRefine):
self.wndAuraRefine = wndAuraRefine
self.wndAuraAbsorption = wndAuraAbsorption

def isShowAuraWindow(self):
if self.wndAuraRefine:
if self.wndAuraRefine.IsShow():
return 1

if self.wndAuraAbsorption:
if self.wndAuraAbsorption.IsShow():
return 1

return 0[/CODE]

[CODE lang="python" title="root\uitooltip.py"]#import'ların olduğu bölüme ekle;

if app.ENABLE_AURA_SYSTEM:
import aura

#arat;

affectString = self.__GetAffectString(type, value)

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
if item.GetItemType() == item.ITEM_TYPE_COSTUME and item.GetItemSubType() == item.COSTUME_TYPE_AURA and itemAbsChance:
value = self.CalcAcceValue(value, itemAbsChance)
affectString = self.__GetAffectString(type, value)

#tekrar arat;

isCostumeBody = 0

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
isCostumeAura = 0

#tekrar arat;

isCostumeBody = item.COSTUME_TYPE_BODY == itemSubType

#altına ekle;

if app.ENABLE_AURA_SYSTEM:
isCostumeAura = item.COSTUME_TYPE_AURA == itemSubType

#tekrar arat;

elif 0 != isCostumeItem:
self.__AppendLimitInformation()

#altına ekle;

if app.ENABLE_AURA_SYSTEM and (itemVnum >= 49001 and itemVnum <= 49006):
## ABSORPTION RATE
absChance = (float(metinSlot[aura.ABSORPTION_SOCKET]) / 10.0)
self.AppendTextLine(localeInfo.AURA_LEVEL_STEP % (int(metinSlot[aura.LEVEL_SOCKET]), int(metinSlot[aura.LEVEL_SOCKET])), self.CONDITION_COLOR)
self.AppendTextLine(localeInfo.AURA_DRAIN_PER % (absChance), self.CONDITION_COLOR)
## END ABSOPRTION RATE

itemAbsorbedVnum = int(metinSlot[aura.ABSORBED_SOCKET])
if itemAbsorbedVnum:
## ATTACK / DEFENCE
item.SelectItem(itemAbsorbedVnum)
if item.GetItemType() == item.ITEM_TYPE_WEAPON:
if item.GetItemSubType() == item.WEAPON_FAN:
self.__AppendMagicAttackInfo(absChance)
item.SelectItem(itemAbsorbedVnum)
self.__AppendAttackPowerInfo(absChance)
else:
self.__AppendAttackPowerInfo(absChance)
item.SelectItem(itemAbsorbedVnum)
self.__AppendMagicAttackInfo(absChance)
elif item.GetItemType() == item.ITEM_TYPE_ARMOR:
defGrade = item.GetValue(1)
defBonus = item.GetValue(5) * 2
defGrade = self.CalcAcceValue(defGrade, absChance)
defBonus = self.CalcAcceValue(defBonus, absChance)

if defGrade > 0:
self.AppendSpace(5)
self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade))

item.SelectItem(itemAbsorbedVnum)
self.__AppendMagicDefenceInfo(absChance)
## END ATTACK / DEFENCE

## EFFECT
item.SelectItem(itemAbsorbedVnum)
for i in xrange(item.ITEM_APPLY_MAX_NUM):
(affectType, affectValue) = item.GetAffect(i)
affectValue = self.CalcAcceValue(affectValue, absChance)
affectString = self.__GetAffectString(affectType, affectValue)
if affectString and affectValue > 0:
self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue))

item.SelectItem(itemAbsorbedVnum)
# END EFFECT

item.SelectItem(itemVnum)
## ATTR
self.__AppendAttributeInformation(attrSlot, absChance)
# END ATTR
else:
# ATTR
self.__AppendAttributeInformation(attrSlot)
# END ATTR
else:
if item.COSTUME_TYPE_MOUNT == itemSubType:
if app.ENABLE_MODEL_RENDER_TARGET and systemSetting.IsPreviewModel() == 1:
(affectType, affectValue) = item.GetAffect(0)
if affectValue != 0:
self.__ModelPreview(affectValue)
else:
self.__AppendAffectInformation()#mount bonusses are hidden now.
self.__AppendAttributeInformation(attrSlot)

#tekrar arat;

class HyperlinkItemToolTip(ItemToolTip):

#üstüne ekle;

if app.ENABLE_AURA_SYSTEM:
def SetAuraResultItem(self, slotIndex, window_type = player.INVENTORY):
(itemVnum, MinAbs, MaxAbs) = aura.GetResultItem()
if not itemVnum:
return

self.ClearToolTip()

metinSlot = [player.GetItemMetinSocket(window_type, slotIndex, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
attrSlot = [player.GetItemAttribute(window_type, slotIndex, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]

item.SelectItem(itemVnum)
itemType = item.GetItemType()
itemSubType = item.GetItemSubType()
if itemType != item.ITEM_TYPE_COSTUME and itemSubType != item.COSTUME_TYPE_AURA:
return

absChance = float(MinAbs) / 10.0
itemDesc = item.GetItemDescription()
self.__AdjustMaxWidth(attrSlot, itemDesc)
self.__SetItemTitle(itemVnum, metinSlot, attrSlot)
self.AppendDescription(itemDesc, 26)
self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
self.__AppendLimitInformation()

## ABSORPTION RATE
self.AppendTextLine(localeInfo.AURA_LEVEL_STEP % (int(metinSlot[aura.LEVEL_SOCKET]), int(metinSlot[aura.LEVEL_SOCKET])), self.CONDITION_COLOR)
self.AppendTextLine(localeInfo.AURA_DRAIN_PER % (absChance), self.CONDITION_COLOR)
## END ABSOPRTION RATE

itemAbsorbedVnum = int(metinSlot[aura.ABSORBED_SOCKET])
if itemAbsorbedVnum:
## ATTACK / DEFENCE
item.SelectItem(itemAbsorbedVnum)
if item.GetItemType() == item.ITEM_TYPE_WEAPON:
if item.GetItemSubType() == item.WEAPON_FAN:
self.__AppendMagicAttackInfo(absChance)
item.SelectItem(itemAbsorbedVnum)
self.__AppendAttackPowerInfo(absChance)
else:
self.__AppendAttackPowerInfo(absChance)
item.SelectItem(itemAbsorbedVnum)
self.__AppendMagicAttackInfo(absChance)
elif item.GetItemType() == item.ITEM_TYPE_ARMOR:
defGrade = item.GetValue(1)
defBonus = item.GetValue(5) * 2
defGrade = self.CalcAcceValue(defGrade, absChance)
defBonus = self.CalcAcceValue(defBonus, absChance)

if defGrade > 0:
self.AppendSpace(5)
self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade))

item.SelectItem(itemAbsorbedVnum)
self.__AppendMagicDefenceInfo(absChance)
## END ATTACK / DEFENCE

## EFFECT
item.SelectItem(itemAbsorbedVnum)
for i in xrange(item.ITEM_APPLY_MAX_NUM):
(affectType, affectValue) = item.GetAffect(i)
affectValue = self.CalcAcceValue(affectValue, absChance)
affectString = self.__GetAffectString(affectType, affectValue)
if affectString and affectValue > 0:
self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue))

item.SelectItem(itemAbsorbedVnum)
# END EFFECT

item.SelectItem(itemVnum)
## ATTR
self.__AppendAttributeInformation(attrSlot, MaxAbs)
# END ATTR

self.AppendWearableInformation()
self.ShowToolTip()

def SetAuraResultAbsItem(self, slotIndex1, slotIndex2, window_type = player.INVENTORY):
itemVnumAura = player.GetItemIndex(window_type, slotIndex1)
itemVnumTarget = player.GetItemIndex(window_type, slotIndex2)
if not itemVnumAura or not itemVnumTarget:
return

self.ClearToolTip()

item.SelectItem(itemVnumAura)
itemType = item.GetItemType()
itemSubType = item.GetItemSubType()
if itemType != item.ITEM_TYPE_COSTUME and itemSubType != item.COSTUME_TYPE_AURA:
return

metinSlot = [player.GetItemMetinSocket(window_type, slotIndex1, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
attrSlot = [player.GetItemAttribute(window_type, slotIndex2, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)]

itemDesc = item.GetItemDescription()
self.__AdjustMaxWidth(attrSlot, itemDesc)
self.__SetItemTitle(itemVnumAura, metinSlot, attrSlot)
self.AppendDescription(itemDesc, 26)
self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
item.SelectItem(itemVnumAura)
self.__AppendLimitInformation()

absChance = float(metinSlot[aura.ABSORPTION_SOCKET]) / 10.0

## ABSORPTION RATE
self.AppendTextLine(localeInfo.AURA_LEVEL_STEP % (int(metinSlot[aura.LEVEL_SOCKET]), int(metinSlot[aura.LEVEL_SOCKET])), self.CONDITION_COLOR)
self.AppendTextLine(localeInfo.AURA_DRAIN_PER % (absChance), self.CONDITION_COLOR)
## END ABSOPRTION RATE

## ATTACK / DEFENCE
itemAbsorbedVnum = itemVnumTarget
item.SelectItem(itemAbsorbedVnum)
if item.GetItemType() == item.ITEM_TYPE_WEAPON:
if item.GetItemSubType() == item.WEAPON_FAN:
self.__AppendMagicAttackInfo(absChance)
item.SelectItem(itemAbsorbedVnum)
self.__AppendAttackPowerInfo(absChance)
else:
self.__AppendAttackPowerInfo(absChance)
item.SelectItem(itemAbsorbedVnum)
self.__AppendMagicAttackInfo(absChance)
elif item.GetItemType() == item.ITEM_TYPE_ARMOR:
defGrade = item.GetValue(1)
defBonus = item.GetValue(5) * 2
defGrade = self.CalcAcceValue(defGrade, absChance)
defBonus = self.CalcAcceValue(defBonus, absChance)

if defGrade > 0:
self.AppendSpace(5)
self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade + defBonus), self.GetChangeTextLineColor(defGrade))

item.SelectItem(itemAbsorbedVnum)
self.__AppendMagicDefenceInfo(absChance)
## END ATTACK / DEFENCE

## EFFECT
item.SelectItem(itemAbsorbedVnum)
for i in xrange(item.ITEM_APPLY_MAX_NUM):
(affectType, affectValue) = item.GetAffect(i)
affectValue = self.CalcAcceValue(affectValue, absChance)
affectString = self.__GetAffectString(affectType, affectValue)
if affectString and affectValue > 0:
self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue))

item.SelectItem(itemAbsorbedVnum)
## END EFFECT

## ATTR
item.SelectItem(itemAbsorbedVnum)
for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
type = attrSlot[0]
value = attrSlot[1]
if not value:
continue

value = self.CalcAcceValue(value, absChance)
affectString = self.__GetAffectString(type, value)
if affectString and value > 0:
affectColor = self.__GetAttributeColor(i, value)
self.AppendTextLine(affectString, affectColor)

item.SelectItem(itemAbsorbedVnum)
## END ATTR

## WEARABLE
item.SelectItem(itemVnumAura)
self.AppendSpace(5)
self.AppendTextLine(localeInfo.TOOLTIP_ITEM_WEARABLE_JOB, self.NORMAL_COLOR)

item.SelectItem(itemVnumAura)
flagList = (
not item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR),
not item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN),
not item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA),
not item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN)
)
flagList += (not item.IsAntiFlag(item.ITEM_ANTIFLAG_WOLFMAN),)

characterNames = ""
for i in xrange(self.CHARACTER_COUNT):
name = self.CHARACTER_NAMES
flag = flagList
if flag:
characterNames += " "
characterNames += name

textLine = self.AppendTextLine(characterNames, self.NORMAL_COLOR, True)
textLine.SetFeather()

item.SelectItem(itemVnumAura)
if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE):
textLine = self.AppendTextLine(localeInfo.FOR_FEMALE, self.NORMAL_COLOR, True)
textLine.SetFeather()

if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE):
textLine = self.AppendTextLine(localeInfo.FOR_MALE, self.NORMAL_COLOR, True)
textLine.SetFeather()
## END WEARABLE

self.ShowToolTip()[/CODE]

[CODE lang="python" title="uiscript\costumewindow.py"]#arat;

{"index":COSTUME_START_INDEX+1, "x":62, "y": 9, "width":32, "height":32},

#altına ekle;

{"index":COSTUME_START_INDEX+5, "x":37, "y":126, "width":32, "height":32},#Buradaki 5 rakamı GameType.h'de bulunan const DWORD c_Costume_Slot_Aura = c_Costume_Slot_Start + 5; bu satırda yapacağın değişikliğe göre değişmesi gerekmekte.[/CODE]

ÖNEMLİ: Kostüm penceresine .jpg dosyası üzerinden bir slot açmanız ve COSTUME_START_INDEX+5'in konumunu ona göre ayarlamanız gerekiyor.

Ekte vereceğim dosyaları gerekli yerlere atmayı unutmayın.
İyi forumlar.

Kanıt;
9zMPQf.png


 

Ekli dosyalar

Son düzenleme:
Teşekkürler Paylasım İçin

24 Saat İçinde Çalıstıgına Dair Kanıt Ekleyiniz
 
Konuda Link Virüs Total Eklendi
 
konudaki hatalar
1- okurken kör oldum
2- kanıt yok aura ne onu bilmiyorum
3- bana for verilmemiş
bunları düzeltirsen repimi vereyim <3
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst