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

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 64

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
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.
❤️
Bir teşekkürü çok görmeyip forumda paylaşım yapan kişileri daha fazla paylaşıma teşvik edebilirsiniz.

Kod:
//müsait bir yere ekle; #define ENABLE_AURA_SYSTEM

Kod:
//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

Kod:
//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

Kod:
//arat;         "COSTUME_WEAPON", //altına ekle; #ifdef ENABLE_AURA_SYSTEM         "COSTUME_AURA", #endif

Kod:
//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[i])             continue;         pkItemMaterial[i]->Lock(false);         pkItemMaterial[i] = 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[i])             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[i] != nullptr)             {                 if ((pkItemMaterial[i]->GetType() == ITEM_COSTUME) && (pkItemMaterial[i]->GetSubType() == COSTUME_AURA))                     bReturn = 1;                 else if ((pkItemMaterial[i]->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

Kod:
//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

Kod:
//arat;     Cube_close(this); //altına ekle; #ifdef ENABLE_AURA_SYSTEM     if (IsPC())         CloseAura(); #endif

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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[i].bType == APPLY_NONE) //değiştir; #ifdef ENABLE_AURA_SYSTEM         if ((m_pProto->aApplies[i].bType == APPLY_NONE) && (GetSubType() != COSTUME_AURA)) #else         if (m_pProto->aApplies[i].bType == APPLY_NONE) #endif //tekrar arat;         long value = m_pProto->aApplies[i].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[i].bType == APPLY_NONE)                     continue;                 value = pkItemAbsorbed->aApplies[i].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[i].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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//arat;         void SetHair(DWORD eHair); //altına ekle; #ifdef ENABLE_AURA_SYSTEM         void AttachAura(CItemData * pItemData); #endif

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//arat;             PART_HAIR, //altına ekle; #ifdef ENABLE_AURA_SYSTEM             PART_AURA, #endif

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//müsait bir yere ekle; #define ENABLE_AURA_SYSTEM

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//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

Kod:
//arat; extern const std::string& ApplicationStringTable_GetString(DWORD dwID); //üstüne ekle; #ifdef ENABLE_AURA_SYSTEM void initAura(); #endif

Kod:
//arat;     NANOBEGIN //üstüne ekle; #ifdef ENABLE_AURA_SYSTEM     initAura(); #endif

Kod:
#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)

Kod:
#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()

Kod:
#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.

Kod:
#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

Kod:
#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[i][0]                 value = attrSlot[i][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[i]                 flag = flagList[i]                 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()

Kod:
#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.

Ö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



Metin2 Lobby olarak Metin2 özel sunucu dünyasında geliştirme yapmaya devam ediyoruz. Bu yazıda Aura Sistemi'nin Geri Dönüş Şerefine nasıl entegre edildiğini detaylıca ele alacağız. Metin2 özel sunucularında sunucu sahipleri genellikle oyuncuların daha fazla aktif kalması ve gelişim gösterebilmesi için benzersiz sistemler geliştirmektedir. Aura Sistemi, oyuncuların karakterlerini güçlendirme konusunda önemli avantajlar sunar. Bu sistem, oyuncuların karakterlerinde bulunan aura slotlarını doldurarak belirli bonuslar kazanmalarını sağlar.

Aura Sistemi Nedir?
Aura Sistemi, Metin2 özel sunucularında geliştirilen bir C++ sistemidir. Bu sistem sayesinde oyuncular, karakterlerinin aura slotlarına farklı aura tipleri yerleştirerek pasif bonuslar elde edebilirler. Her aura farklı bonuslar sağlar ve bazıları özel kombinasyonlarla ekstra etkiler yaratabilir. Bu sistem genellikle PvP odaklı sunucularda tercih edilir çünkü karakterlerin savaş esnasındaki performansını doğrudan etkiler.

Geri Dönüş Şerefi Nedir?
Geri Dönüş Şerefi, Metin2'de karakterlerin PvP sırasında kullandıkları Şeref puanları ile ilişkilidir. Oyuncular bir düşmanı öldürdükçe şeref puanı kazanır. Ancak bu puanlar belirli bir süre sonra düşmeye başlar. Bu durumda Geri Dönüş Şerefi sistemi devreye girer. Bu sistem sayesinde oyuncular, düşen şeref puanlarını belirli aralıklarla geri kazanabilir. Bu, oyuncuların uzun süre yüksek şeref seviyesinde kalmasını sağlar ve PvP deneyimini zenginletir.

Aura Sistemi ile Geri Dönüş Şerefi Entegrasyonu
Metin2 özel sunucularında aura sistemine özel bonuslar eklemek mümkündür. Örneğin, belirli bir aura kombinasyonuyla Geri Dönüş Şerefi bonusu sağlanabilir. Bu bonuslar C++ kaynak kod üzerinde geliştirilir ve game core kısmında tanımlanır. Bu sayede oyuncular, hem PvP performanslarını artırmak hem de şeref puanlarını korumak için stratejik aura kombinasyonları kullanırlar. Bu entegrasyon, oyuncuların oyun içi strateji seviyesini yükseltir ve Metin2 özel sunucularında daha fazla rekabet ortamı yaratır.

Python GUI ve Py Root Kullanımı
Bu sistemlerin çoğu zaman Python GUI ile kontrol edilebilir hale getirilir. Sunucu sahipleri, py root dosyaları üzerinden aura ve şeref sistemlerini kolayca yönetebilirler. Bu sayede Metin2 özel sunucularında kullanıcı dostu bir arayüzle tüm gelişmiş sistemler kontrol edilebilir hale gelir. Bu da geliştiricilerin ve sunucu sahiplerinin işini kolaylaştırır.

Martysama ve Metin2 Development
Martysama gibi sistemler, Metin2 özel sunucu geliştiricileri tarafından sıkça kullanılır. Bu sistemler sayesinde source edit işlemleri daha kolay hale gelir. Metin2 development sürecinde db core ve auth server gibi yapılar da önemli rol oynar. Tüm bu sistemler uyumlu çalışarak güçlü bir PvP ortamı yaratır. Aura sistemi gibi gelişmiş sistemler, bu yapıların üzerine inşa edilir ve oyunculara unikal deneyimler sunar.

Sonuç
Aura Sistemi ile Geri Dönüş Şerefi entegrasyonu, Metin2 özel sunucularında stratejik derinlik katmanı sağlar. Oyuncular hem karakterlerini güçlendirebilir hem de PvP esnasında şeref puanlarını koruyabilirler. Bu tür sistemlerin geliştirilmesi, Metin2 özel sunucularının rekabet gücünü artırır ve oyuncu sadakatini yükseltir. Metin2 Lobby olarak bu tür gelişmeleri yakından takip ediyor ve topluluğa aktarıyoruz.


Metin2 Lobby continues to develop within the world of Metin2 private servers. In this article, we will examine in detail how the Aura System is integrated with the Return Honor feature. In Metin2 private servers, server owners often develop unique systems to keep players active and help them progress. The Aura System provides significant advantages for enhancing player characters. This system allows players to gain specific bonuses by filling aura slots on their characters.

What Is the Aura System?
The Aura System is a C++ based system developed for Metin2 private servers. With this system, players can place different aura types into their character's aura slots to obtain passive bonuses. Each aura grants different benefits, and certain combinations can trigger additional effects. This system is commonly preferred on PvP-focused servers since it directly impacts a character's performance during combat.

What Is Return Honor?
Return Honor is related to the Honor points used by characters during PvP in Metin2. Players earn honor points by defeating enemies. However, these points begin to decrease after a certain period. In such cases, the Return Honor system comes into play. It allows players to regain lost honor points at certain intervals. This ensures that players can maintain high honor levels for longer periods, enriching the PvP experience.

Integrating Aura System with Return Honor
It is possible to add custom bonuses to the Aura System in Metin2 private servers. For example, specific aura combinations can grant Return Honor bonuses. These bonuses are developed within the C++ source code and defined in the game core section. Thus, players use strategic aura combinations to both enhance their PvP performance and maintain their honor scores. This integration increases strategic depth in Metin2 private servers and creates more competitive environments.

Using Python GUI and Py Root
Many of these systems can be made controllable through Python GUI. Server owners can manage aura and honor systems easily via py root files. This enables user-friendly interfaces for controlling advanced systems in Metin2 private servers, simplifying tasks for developers and server owners alike.

Martysama and Metin2 Development
Systems like Martysama are frequently used by Metin2 private server developers. These systems simplify source edit processes. During Metin2 development, structures like db core and auth server play crucial roles. All these systems work together to create a robust PvP environment. Advanced systems like the Aura System are built on top of these foundations, offering players unique experiences.

Conclusion
The integration of the Aura System with Return Honor adds strategic layers in Metin2 private servers. Players can both strengthen their characters and maintain their honor points during PvP. Developing such systems enhances the competitiveness of Metin2 private servers and increases player loyalty. As Metin2 Lobby, we closely follow such developments and share them with our community.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt