- Katılım
- 20 Nis 2019
- Konular
- 5,131
- Mesajlar
- 19,082
- Online süresi
- 12ay 4g
- Reaksiyon Skoru
- 14,957
- Altın Konu
- 486
- Başarım Puanı
- 494
- TM Yaşı
- 7 Yıl 1 Gün
- MmoLira
- 31,445
- DevLira
- 51
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Ellerine sağlık, Paylaşım için teşekkürler 
- Katılım
- 27 Nis 2017
- Konular
- 91
- Mesajlar
- 2,386
- Online süresi
- 17g 11973s
- Reaksiyon Skoru
- 1,571
- Altın Konu
- 2
- Başarım Puanı
- 248
- TM Yaşı
- 8 Yıl 11 Ay 29 Gün
- MmoLira
- 439
- DevLira
- 13
Rica ederim.Paylaşım için teşekkürler.
- Katılım
- 27 Nis 2017
- Konular
- 91
- Mesajlar
- 2,386
- Online süresi
- 17g 11973s
- Reaksiyon Skoru
- 1,571
- Altın Konu
- 2
- Başarım Puanı
- 248
- TM Yaşı
- 8 Yıl 11 Ay 29 Gün
- MmoLira
- 439
- DevLira
- 13
Rica ederim.Ellerine sağlık, Paylaşım için teşekkürler![]()
- Katılım
- 7 Eyl 2020
- Konular
- 3
- Mesajlar
- 55
- Online süresi
- 1ay 3g
- Reaksiyon Skoru
- 13
- Altın Konu
- 0
- Başarım Puanı
- 29
- TM Yaşı
- 5 Yıl 7 Ay 14 Gün
- MmoLira
- 210
- DevLira
- 0
rüya ruhunun özellikleri nereden değişiyor
- Katılım
- 1 May 2016
- Konular
- 64
- Mesajlar
- 327
- Online süresi
- 1ay 16g
- Reaksiyon Skoru
- 173
- Altın Konu
- 1
- Başarım Puanı
- 126
- TM Yaşı
- 9 Yıl 11 Ay 24 Gün
- MmoLira
- 6,140
- DevLira
- 21
Paylaşım için teşekkürlerMerhaba arkadaşlar.
@AsiLZаde
Sistem özellikleri;
- Rüya Ruhu saldırı hasarını artırır.
- Gök Ruhu beceri hasarını artırır.
- PvP ve Dönüşüm sırasında herhangi bir işleve sahip değiller, sadece PvE modunda çalışır.
- Eşya efektleri Official sunucudaki ile aynıdır.
- Aynı anda çalıştırılabilir.
- Rüya Ruhu düşmana karşı vurulan her bir darbede etki gösterir.
- Gök Ruhu düşmana karşı beceri kullanımı başına etki gösterir.
common\CommonDefines.h://müsait bir yere ekle; #define ENABLE_ITEM_SOUL_SYSTEM
common\item_length.h://arat; enum EItemTypes //fonksiyonun içinde bul; ITEM_BELT, //altına ekle; (ITEM_BELT'in altında tür varsa o türün altına ekleyin, yani aynı blok içerisinde fakat bloğun sonunda olsun yapacağınız eklenti.) #ifdef ENABLE_ITEM_SOUL_SYSTEM ITEM_SOUL, #endif //tekrar arat; enum EDragonSoulSubType //fonksiyonun altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM enum ESoulSubType { RED_SOUL, BLUE_SOUL, }; #endif //tekrar arat; REFINE_TYPE_BDRAGON, //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM REFINE_TYPE_SOUL_SCROLL, #endif
db\src\ProtoReader.cpp://arat; "ITEM_BELT", //altına ekle; (ITEM_BELT'in altında tür varsa o türün altına ekleyin, yani aynı blok içerisinde fakat bloğun sonunda olsun yapacağınız eklenti.) #ifdef ENABLE_ITEM_SOUL_SYSTEM "ITEM_SOUL", #endif //tekrar arat; static string arSub31[] = { "EXTRACT_DRAGON_SOUL", "EXTRACT_DRAGON_HEART", }; //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM static string arSub37[] = { "SOUL_RED", "SOUL_BLUE", "0", }; #endif //tekrar arat; static string* arSubType[] = //fonksiyonun içinde bul; 0, //değiştir; (Fonksiyon içinde birden fazla " 0," olacaktır, fonksiyonun sonundakini değiştirin.) #ifdef ENABLE_ITEM_SOUL_SYSTEM arSub37, #endif //tekrar arat; static int arNumberOfSubtype[_countof(arSubType)] = //fonksiyonun içinde bul; 0, //değiştir; (Fonksiyon içinde birden fazla " 0," olacaktır, fonksiyonun sonundakini değiştirin.) #ifdef ENABLE_ITEM_SOUL_SYSTEM sizeof(arSub37) / sizeof(arSub37[0]), #endif
game\src\affect.h://arat; AFFECT_QUEST_START_IDX = 1000 //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM AFFECT_SOUL, #endif //tekrar arat; AFF_BITS_MAX //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM AFF_RED_SOUL, AFF_BLUE_SOUL, AFF_MIX_SOUL, #endif
game\src\battle.cpp://arat; if (pkVictim->Damage(pkAttacker, iDam, DAMAGE_TYPE_NORMAL)) return (BATTLE_DEAD); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM if (!pkAttacker->IsPolymorphed() && !pkVictim->IsPC()) iDam *= pkAttacker->GetSoulDamVal(true); #endif
game\src\char.h://arat; int GetSyncHackCount() { return m_iSyncHackCount; } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM public: void CheckSoul(); float GetSoulDamVal(bool bMelee); bool CheckSoulItem(bool bBlue); #endif
game\src\char_item.cpp://arat; BDRAGON_SCROLL = 6, //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM SOUL_SCROLL = 7,//Buradaki 7'nin sıraya göre değişmesi gerekebilir. #endif //tekrar arat; else if (pkItemScroll->GetValue(0) == BDRAGON_SCROLL) { if (item->GetType() != ITEM_METIN || item->GetRefineLevel() != 4) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 아이템으로 개량할 수 없습니다.")); return false; } } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM else if (pkItemScroll->GetValue(0) == SOUL_SCROLL) { if (item->GetType() != ITEM_SOUL) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("you can only upgrade soul items")); return false; } } #endif //tekrar arat; pkItemScroll->GetValue(0) == YAGONG_SCROLL) //değiştir; pkItemScroll->GetValue(0) == YAGONG_SCROLL #ifdef ENABLE_ITEM_SOUL_SYSTEM || pkItemScroll->GetValue(0) == SOUL_SCROLL #endif ) //tekrar arat; else if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) {} //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM else if (pkItemScroll->GetValue(0) == SOUL_SCROLL) { success_prob += pkItemScroll->GetValue(1); } #endif //tekrar arat; else if (pkItemScroll->GetValue(0) == YAGONG_SCROLL) { szRefineType = "YAGONG_SCROLL"; } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM else if (pkItemScroll->GetValue(0) == SOUL_SCROLL) { szRefineType = "SOUL_SCROLL"; } #endif //tekrar arat; bool CHARACTER::DoRefineWithScroll(LPITEM item) //fonksiyonun altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM void CHARACTER::CheckSoul() { for (int i = 0; i < INVENTORY_MAX_NUM; ++i) { LPITEM item = GetInventoryItem(i); if (!item) continue; if (item->GetType() == ITEM_SOUL) { if (item->GetSocket(1) > 0) { UseItemEx(item, TItemPos(item->GetWindow(), item->GetCell())); } } } } float CHARACTER::GetSoulDamVal(bool bMelee) { for (int i = 0; i < INVENTORY_MAX_NUM; ++i) { LPITEM item = GetInventoryItem(i); if (!item) continue; if (item->GetType() == ITEM_SOUL) { if (bMelee) { if (item->GetSocket(2) == 0) { if (item->GetSubType() == RED_SOUL) { if (IsAffectFlag(AFF_MIX_SOUL)) { RemoveAffect(AFF_MIX_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_BLUE_SOUL, INFINITE_AFFECT_DURATION, 0, false); } else if (IsAffectFlag(AFF_RED_SOUL)) { RemoveAffect(AFFECT_SOUL); } } item->SetCount(item->GetCount()-1); } if (item->GetSubType() == RED_SOUL && item->GetSocket(1) > 0) { item->SetSocket(2, item->GetSocket(2) - 1); if (item->GetSocket(1) > 0) return float(item->GetValue(3)/10.0f); return 1.0f; } } else { if (item->GetSocket(2) == 0) { if (item->GetSubType() == BLUE_SOUL) { if (IsAffectFlag(AFF_MIX_SOUL)) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_RED_SOUL, INFINITE_AFFECT_DURATION, 0, false); } else if (IsAffectFlag(AFF_BLUE_SOUL)) { RemoveAffect(AFFECT_SOUL); } } item->SetCount(item->GetCount()-1); } if (item->GetSubType() == BLUE_SOUL && item->GetSocket(1) > 0) { item->SetSocket(2, item->GetSocket(2) - 1); if (item->GetSocket(1) > 0) return float(item->GetValue(3)/10.0f); return 1.0f; } } } } return 1.0f; } bool CHARACTER::CheckSoulItem(bool bBlue) { for (int i = 0; i < INVENTORY_MAX_NUM; ++i) { LPITEM item = GetInventoryItem(i); if (!item) continue; if (item->GetType() == ITEM_SOUL) { if (bBlue) { if (item->GetSubType() == BLUE_SOUL) { if (item->GetSocket(1) > 0) { return true; } return false; } } else { if (item->GetSubType() == RED_SOUL) { if (item->GetSocket(1) > 0) { return true; } return false; } } } } return false; } #endif //tekrar arat; else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { if (pkTarget->GetRefineSet() != 702) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM else if (pkTarget->GetValue(0) == SOUL_SCROLL) { if (pkTarget->GetType() != ITEM_SOUL) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SOUL_SCROLL, pkItem->GetCell()); } #endif //tekrar arat; if (item2->GetVnum() >= 28330 && item2->GetVnum() <= 28343) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("+3 영석은 이 아이템으로 개량할 수 없습니다")); return false; } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM if (item2->GetType() == ITEM_SOUL) { if (item->GetValue(0) != SOUL_SCROLL) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SADECE_RUH_PARSOMENI_ILE_YUKSELTEBILIRSIN")); return false; } } #endif //tekrar arat; case ITEM_EXTRACT: { LPITEM pDestItem = GetItem(DestCell); if (NULL == pDestItem) { return false; } switch (item->GetSubType()) { case EXTRACT_DRAGON_SOUL: if (pDestItem->IsDragonSoul()) { return DSManager::instance().PullOut(this, NPOS, pDestItem, item); } return false; case EXTRACT_DRAGON_HEART: if (pDestItem->IsDragonSoul()) { return DSManager::instance().ExtractDragonHeart(this, pDestItem, item); } return false; default: return false; } } break; //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM case ITEM_SOUL: { switch (item->GetSubType()) { case RED_SOUL: { if (item->GetSocket(1) != 0) { if (!IsAffectFlag(AFF_RED_SOUL)) { item->SetSocket(1, 0); item->Lock(false); } if (IsAffectFlag(AFF_MIX_SOUL)) { if (CheckSoulItem(true) == true) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_BLUE_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1, 0); item->Lock(false); return true; } else if (CheckSoulItem(false) == true) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_RED_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1, 1); item->Lock(true); return true; } else { RemoveAffect(AFFECT_SOUL); item->SetSocket(1, 0); item->Lock(false); return true; } } else if (IsAffectFlag(AFF_BLUE_SOUL)) { RemoveAffect(AFFECT_SOUL); if (IsAffectFlag(AFF_RED_SOUL)) { AddAffect(AFFECT_SOUL, 0, 0, AFF_RED_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1, 1); item->Lock(true); return true; } item->SetSocket(1,0); item->Lock(false); return true; } else if (IsAffectFlag(AFF_RED_SOUL)) { RemoveAffect(AFFECT_SOUL); item->SetSocket(1,0); item->Lock(false); return true; } } else { if (IsAffectFlag(AFF_RED_SOUL)) return true; if (IsAffectFlag(AFF_BLUE_SOUL)) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_MIX_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1,1); item->Lock(true); return true; } else if (!IsAffectFlag(AFF_MIX_SOUL)) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_RED_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1,1); item->Lock(true); return true; } } } break; case BLUE_SOUL: { if (item->GetSocket(1) != 0) { if (IsAffectFlag(AFF_MIX_SOUL)) { if (CheckSoulItem(false) == true) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_RED_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1, 0); item->Lock(false); return true; } else if (CheckSoulItem(true) == true) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_BLUE_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1, 1); item->Lock(true); return true; } else { RemoveAffect(AFFECT_SOUL); item->SetSocket(1, 0); item->Lock(false); return true; } } else if (IsAffectFlag(AFF_RED_SOUL)) { RemoveAffect(AFFECT_SOUL); if (IsAffectFlag(AFF_BLUE_SOUL)) { AddAffect(AFFECT_SOUL, 0, 0, AFF_BLUE_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1, 1); item->Lock(true); return true; } item->SetSocket(1,0); item->Lock(false); return true; } else if (IsAffectFlag(AFF_BLUE_SOUL)) { RemoveAffect(AFFECT_SOUL); item->SetSocket(1,0); item->Lock(false); return true; } } else // tiklanmamis { if (IsAffectFlag(AFF_BLUE_SOUL)) return true; if (IsAffectFlag(AFF_RED_SOUL)) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_MIX_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1,1); item->Lock(true); return true; } else if (!IsAffectFlag(AFF_MIX_SOUL)) { RemoveAffect(AFFECT_SOUL); AddAffect(AFFECT_SOUL, 0, 0, AFF_BLUE_SOUL, INFINITE_AFFECT_DURATION, 0, false); item->SetSocket(1,1); item->Lock(true); return true; } } } break; } } break; #endif
game\src\char_skill.cpp://arat; iDam -= iDam * (ResistAmount / 100.0); } } } } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM if (!m_pkChr->IsPolymorphed() && !pkChrVictim->IsPC()) iDam *= m_pkChr->GetSoulDamVal(false); #endif
game\src\cmd_general.cpp://arat; return; } if (true == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex())) //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM ch->CheckSoul(); #endif //tekrar arat; else { ch->Show(ch->GetMapIndex(), GetSungziStartX(ch->GetEmpire()), GetSungziStartY(ch->GetEmpire())); } ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP()); ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP()); ch->ReviveInvisible(5); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM ch->CheckSoul(); #endif //tekrar arat; if (CWarMapManager::instance().GetStartPosition(ch->GetMapIndex(), ch->GetGuild()->GetID() < dwGuildOpponent ? 0 : 1, pos)) ch->Show(ch->GetMapIndex(), pos.x, pos.y); else ch->ExitToSavedLocation(); ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP()); ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP()); ch->ReviveInvisible(5); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM ch->CheckSoul(); #endif //tekrar arat; case SCMD_RESTART_HERE: sys_log(0, "do_restart: restart here"); ch->RestartAtSamePos(); //ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY()); ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP()); ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP()); ch->ReviveInvisible(5); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM ch->CheckSoul(); #endif //tekrar arat; case SCMD_RESTART_HERE: sys_log(0, "do_restart: restart here"); ch->RestartAtSamePos(); //ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY()); ch->PointChange(POINT_HP, 50 - ch->GetHP()); ch->DeathPenalty(0); ch->ReviveInvisible(5); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM ch->CheckSoul(); #endif
game\src\input_main.cpp://arat; if (Race < JOB_WARRIOR || Race > JOB_WOLFMAN) return; //altına ekle; if (Cat < ITEM_NONE || Cat > ITEM_SOUL) return;
game\src\item_manager.cpp://arat; if (item->IsDragonSoul() && 0 == id) { DSManager::instance().DragonSoulItemInitialize(item); } //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM if (item->GetType() == ITEM_SOUL) { item->SetSocket(2, item->GetValue(2)); } #endif
dump_proto\ItemCSVReader.cpp://arat; "ITEM_BELT", //altına ekle; (ITEM_BELT'in altında tür varsa o türün altına ekleyin, yani aynı blok içerisinde fakat bloğun sonunda olsun yapacağınız eklenti.) "ITEM_SOUL", //tekrar arat; string arIAFVSub31[] = { "EXTRACT_DRAGON_SOUL", "EXTRACT_DRAGON_HEART" }; //altına ekle; string arIAFVSub37[] = { "SOUL_RED", "SOUL_BLUE", "0", }; //tekrar arat; string* arIAFVSubType[] = { //fonksiyon içinde bul; 0, //değiştir; (Fonksiyon içinde birden fazla " 0," olacaktır, fonksiyonun sonundakini değiştirin.) arIAFVSub37, //tekrar arat; int arNumberOfSubtype[] = //fonksiyonun içinde bul; 0, //değiştir; (Fonksiyon içinde birden fazla " 0," olacaktır, fonksiyonun sonundakini değiştirin.) sizeof(arIAFVSub37) / sizeof(arIAFVSub37[0]),
UserInterface\InstanceBase.h://arat; AFFECT_RAMADAN_RING, // 41 //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM AFFECT_RED_SOUL, // 42 AFFECT_BLUE_SOUL, // 43 AFFECT_MIX_SOUL, // 44 #endif //arat, NEW_AFFECT_QUEST_START_IDX = 1000, //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM AFFECT_SOUL, #endif
UserInterface\Locale_inc.h://müsait bir yere ekle; #define ENABLE_ITEM_SOUL_SYSTEM
UserInterface\PythonApplicationModule.cpp://arat; #ifdef ENABLE_COSTUME_SYSTEM PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM", 1); #else PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM", 0); #endif //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM PyModule_AddIntConstant(poModule, "ENABLE_ITEM_SOUL_SYSTEM", 1); #else PyModule_AddIntConstant(poModule, "ENABLE_ITEM_SOUL_SYSTEM", 0); #endif
UserInterface\PythonCharacterModule.cpp://arat; PyModule_AddIntConstant(poModule, "NEW_AFFECT_DRAGON_SOUL_DECK2", CInstanceBase::NEW_AFFECT_DRAGON_SOUL_DECK2); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM PyModule_AddIntConstant(poModule, "AFFECT_RED_SOUL", CInstanceBase::AFFECT_RED_SOUL); PyModule_AddIntConstant(poModule, "AFFECT_BLUE_SOUL", CInstanceBase::AFFECT_BLUE_SOUL); PyModule_AddIntConstant(poModule, "AFFECT_MIX_SOUL", CInstanceBase::AFFECT_MIX_SOUL); #endif
UserInterface\PythonItemModule.cpp://arat; PyModule_AddIntConstant(poModule, "ITEM_TYPE_BELT", CItemData::ITEM_TYPE_BELT); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM PyModule_AddIntConstant(poModule, "ITEM_TYPE_SOUL", CItemData::ITEM_TYPE_SOUL); PyModule_AddIntConstant(poModule, "RED_SOUL", 0); PyModule_AddIntConstant(poModule, "BLUE_SOUL", 1); #endif
UserInterface\PythonPlayer.cpp://arat; DWORD CPythonPlayer::GetItemCount(TItemPos Cell) //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM DWORD CPythonPlayer::GetItemAntiFlags(TItemPos Cell) { if (!Cell.IsValidCell()) return 0; const TItemData * pItem = GetItemData(Cell); assert(pItem != nullptr); return pItem->anti_flags; } BYTE CPythonPlayer::GetItemTypeBySlot(TItemPos Cell) { if (!Cell.IsValidCell()) return 0; CItemData * pItemDataPtr = nullptr; if (CItemManager::Instance().GetItemDataPointer(GetItemIndex(Cell), &pItemDataPtr)) return pItemDataPtr->GetType(); else { TraceError("FAILED\t\tCPythonPlayer::GetItemTypeBySlot()\t\tCell(%d, %d) item is nullptr", Cell.window_type, Cell.cell); return 0; } } BYTE CPythonPlayer::GetItemSubTypeBySlot(TItemPos Cell) { if (!Cell.IsValidCell()) return 0; CItemData * pItemDataPtr = nullptr; if (CItemManager::Instance().GetItemDataPointer(GetItemIndex(Cell), &pItemDataPtr)) return pItemDataPtr->GetSubType(); else { TraceError("FAILED\t\tCPythonPlayer::GetItemSubTypeBySlot()\t\tCell(%d, %d) item is nullptr", Cell.window_type, Cell.cell); return 0; } } #endif
UserInterface\PythonPlayer.h://arat; DWORD GetItemFlags(TItemPos Cell); //altına ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM DWORD GetItemAntiFlags(TItemPos Cell); BYTE GetItemTypeBySlot(TItemPos Cell); BYTE GetItemSubTypeBySlot(TItemPos Cell); #endif
UserInterface\PythonPlayerModule.cpp://arat; void initPlayer() //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM PyObject * playerIsAntiFlagBySlot(PyObject * poSelf, PyObject * poArgs) { TItemPos Cell; int antiflag; switch (PyTuple_Size(poArgs)) { case 2: if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell)) return Py_BadArgument(); if (!PyTuple_GetInteger(poArgs, 1, &antiflag)) return Py_BadArgument(); break; case 3: if (!PyTuple_GetInteger(poArgs, 0, &Cell.window_type)) return Py_BadArgument(); if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell)) return Py_BadArgument(); if (!PyTuple_GetInteger(poArgs, 2, &antiflag)) return Py_BadArgument(); break; default: return Py_BuildException(); } DWORD itemAntiFlags = CPythonPlayer::Instance().GetItemAntiFlags(Cell); return Py_BuildValue("i", IS_SET(itemAntiFlags, antiflag) != 0 ? TRUE : FALSE); } PyObject * playerGetItemTypeBySlot(PyObject * poSelf, PyObject * poArgs) { TItemPos Cell; switch (PyTuple_Size(poArgs)) { case 1: if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell)) return Py_BadArgument(); break; case 2: if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type)) return Py_BadArgument(); if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell)) return Py_BadArgument(); break; default: return Py_BuildException(); } return Py_BuildValue("i", CPythonPlayer::Instance().GetItemTypeBySlot(Cell)); } PyObject * playerGetItemSubTypeBySlot(PyObject * poSelf, PyObject * poArgs) { TItemPos Cell; switch (PyTuple_Size(poArgs)) { case 1: if (!PyTuple_GetInteger(poArgs, 0, &Cell.cell)) return Py_BadArgument(); break; case 2: if (!PyTuple_GetByte(poArgs, 0, &Cell.window_type)) return Py_BadArgument(); if (!PyTuple_GetInteger(poArgs, 1, &Cell.cell)) return Py_BadArgument(); break; default: return Py_BuildException(); } return Py_BuildValue("i", CPythonPlayer::Instance().GetItemSubTypeBySlot(Cell)); } #endif //tekrar arat; { NULL, NULL, NULL }, //üstüne ekle; #ifdef ENABLE_ITEM_SOUL_SYSTEM { "IsAntiFlagBySlot", playerIsAntiFlagBySlot, METH_VARARGS }, { "GetItemTypeBySlot", playerGetItemTypeBySlot, METH_VARARGS }, { "GetItemSubTypeBySlot", playerGetItemSubTypeBySlot, METH_VARARGS }, #endif
root\playersettingmodule.py:#arat; chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse") #altına ekle; if app.ENABLE_ITEM_SOUL_SYSTEM: chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+42, "", "d:/ymir work/effect/etc/soul/soul_red_001.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+43, "", "d:/ymir work/effect/etc/soul/soul_blue_001.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+44, "", "d:/ymir work/effect/etc/soul/soul_mix_001.mse")
root\uiinventory.py:#arat; self.wndItem.RefreshSlot() #üstüne ekle; if app.ENABLE_ITEM_SOUL_SYSTEM: if player.GetItemTypeBySlot(slotNumber) == item.ITEM_TYPE_SOUL: metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)] if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex: slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex isActivated = 0 != metinSocket[1] if isActivated: self.wndItem.ActivateSlot(i) else: self.wndItem.DeactivateSlot(i)
root\uitooltip.py:#arat; def AddRefineItemData(self, itemVnum, metinSlot, attrSlot = 0): #fonksiyonun altına ekle; if app.ENABLE_ITEM_SOUL_SYSTEM: def __SoulItemToolTip(self, itemVnum, metinSlot, flags): self.itemVnum = itemVnum item.SelectItem(itemVnum) itemType = item.GetItemType() itemSubType = item.GetItemSubType() (limit_Type, limit_Value) = item.GetLimit(1) max_time = limit_Value if 0 != flags: metinSlot[2] = item.GetValue(2) remain_count = metinSlot[2] value_index = 3 if value_index < 3: value_index = 3 if value_index > 5: value_index = 5 damage_value = float( item.GetValue(value_index) / 10.0 ) self.ClearToolTip() soul_desc = "" if item.RED_SOUL == itemSubType: soul_desc += localeInfo.SOUL_ITEM_TOOLTIP_RED2 % (damage_value) elif item.BLUE_SOUL == itemSubType: soul_desc += localeInfo.SOUL_ITEM_TOOLTIP_BLUE2 % (damage_value) self.__AdjustMaxWidth(0, soul_desc) self.__SetNormalItemTitle() board_width = self.__AdjustDescMaxWidth(soul_desc) desc_color = 0xfff15f5f # RGB(241,95,95) self.AppendDescription( soul_desc, 26, desc_color) self.AppendDescription(localeInfo.SOUL_ITEM_TOOLTIP_COMMON, 26, 0xfff15f5f) self.AppendSpace(10) if metinSlot[1] == 1 and remain_count > 0: self.AppendTextLine( localeInfo.SOUL_ITEM_TOOLTIP_APPLY, 0xff86e57f ) else: self.AppendTextLine( localeInfo.SOUL_ITEM_TOOLTIP_UNAPPLIED, 0xfff15f5f ) self.AppendSpace(5) self.AppendTextLine( localeInfo.SOUL_ITEM_TOOLTIP_REMAIN_COUNT % remain_count ) self.AppendSpace(5) if 0 == flags: for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: self.AppendSoulItemLastTime(metinSlot[0]) else: (limitType, limitValue) = item.GetLimit(0) self.AppendSoulItemLastTime(limitValue + app.GetGlobalTimeStamp()) self.ShowToolTip() #tekrar arat; itemDesc = item.GetItemDescription() #üstüne ekle; if app.ENABLE_ITEM_SOUL_SYSTEM: if item.ITEM_TYPE_SOUL == itemType: self.__SoulItemToolTip(itemVnum, metinSlot, flags) return
locale\locale\tr\item_list.txt:70500 ETC icon/item/70500.tga 70501 ETC icon/item/70501.tga 70502 ETC icon/item/70502.tga 70503 ETC icon/item/70503.tga 70504 ETC icon/item/70504.tga 70505 ETC icon/item/70505.tga 70506 ETC icon/item/70506.tga 70507 ETC icon/item/70507.tga 70508 ETC icon/item/70508.tga 70509 ETC icon/item/70509.tga 70601 ETC icon/item/70601.tga 70602 ETC icon/item/70602.tga 70603 ETC icon/item/70603.tga
item_names.txt:70500 Rüya Ruhu 70501 Parıldayan Rüya Ruhu 70502 Yanardöner Rüya Ruhu 70503 Prizmatik Rüya Ruhu 70504 Aydınlanmış Rüya Ruhu 70505 Gök Ruhu 70506 Parıldayan Gök Ruhu 70507 Yanardöner Gök Ruhu 70508 Prizmatik Gök Ruhu 70509 Aydınlanmış Gök Ruhu 70601 Mavi Saç Bandı 70602 Ruh Parşömeni 70603 Ruh Parşömeni
item_proto.txt:70500 붉은영혼(일반) ITEM_SOUL SOUL_RED 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70501 0 0 REAL_TIME 86400 LIMIT_NONE 60 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 1 500 12 12 12 0 0 0 70501 붉은영혼(화려) ITEM_SOUL SOUL_RED 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70502 0 0 REAL_TIME 86400 LIMIT_NONE 60 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 2 500 15 15 15 0 0 0 70502 붉은영혼(고귀) ITEM_SOUL SOUL_RED 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70503 0 0 REAL_TIME 172800 LIMIT_NONE 120 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 3 500 15 18 18 0 0 0 70503 붉은영혼(고대) ITEM_SOUL SOUL_RED 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70504 0 0 REAL_TIME 259200 LIMIT_NONE 180 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 4 500 15 18 25 0 0 0 70504 붉은영혼(전설) ITEM_SOUL SOUL_RED 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 0 0 0 REAL_TIME 604800 LIMIT_NONE 180 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 5 1000 15 18 25 0 0 0 70505 푸른영혼(일반) ITEM_SOUL SOUL_BLUE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70506 0 0 REAL_TIME 86400 LIMIT_NONE 60 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 1 500 12 12 12 0 0 0 70506 푸른영혼(화려) ITEM_SOUL SOUL_BLUE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70507 0 0 REAL_TIME 86400 LIMIT_NONE 60 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 2 500 15 15 15 0 0 0 70507 푸른영혼(고귀) ITEM_SOUL SOUL_BLUE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70508 0 0 REAL_TIME 172800 LIMIT_NONE 120 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 3 500 15 18 18 0 0 0 70508 푸른영혼(고대) ITEM_SOUL SOUL_BLUE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 70509 0 0 REAL_TIME 259200 LIMIT_NONE 180 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 4 500 15 18 25 0 0 0 70509 푸른영혼(전설) ITEM_SOUL SOUL_BLUE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 0 0 0 REAL_TIME 604800 LIMIT_NONE 180 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 5 1000 15 18 25 0 0 0 70601 머리띠 ITEM_QUEST 0 1 ANTI_DROP | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 70602 진화의 혼 ITEM_USE USE_TUNING 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 8 0 0 0 0 0 0 0 0 70603 각성의 혼 ITEM_USE USE_TUNING 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 9 0 0 0 0 0 0 0 0
itemdesc.txt:70500 Rüya Ruhu 70501 Parıldayan Rüya Ruhu 70502 Yanardöner Rüya Ruhu 70503 Prizmatik Rüya Ruhu 70504 Aydınlanmış Rüya Ruhu 70505 Gök Ruhu 70506 Parıldayan Gök Ruhu 70507 Yanardöner Gök Ruhu 70508 Prizmatik Gök Ruhu 70509 Aydınlanmış Gök Ruhu 70601 Mavi Saç Bandı Ah-Yu'nun Kaybettiği Saç Bandı. 70602 Ruh Parşömeni (%100) Bu parşömenle ruhunu bir basamak ilerleyecek şekilde geliştir. 70603 Ruh Parşömeni Bu parşömenle ruhunu bir basamağa kadar ilerleyecek şekilde geliştir. Deneme başarısız olabilir.
soul pack dosyalarını pack klasörünüze atıp Index'e eklemeyi unutmayın.
refine_proto'dan dönüşümleri ayarlamayı unutmayın.
Kanıt;
Ekli dosyayı görüntüle 48699
Ekli dosyayı görüntüle 48700
Ekli dosyayı görüntüle 48701
Hayırlı kullanımlar
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 213
- Cevaplar
- 13
- Görüntüleme
- 847
- Cevaplar
- 1
- Görüntüleme
- 289
- Cevaplar
- 2
- Görüntüleme
- 271







