Hikayeler

Reklam vermek için turkmmo@gmail.com

[Frozen] Kostüm Efsunu Artırma ve Değiştirme

godhack35

Level 6
TM Üye
Üye
Katılım
17 Mar 2015
Konular
75
Mesajlar
1,326
Reaksiyon Skoru
215
Altın Konu
0
Başarım Puanı
92
Yaş
32
TM Yaşı
11 Yıl 1 Ay 6 Gün
MmoLira
0
DevLira
0

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Yabancı Forumdan Alıntıdır

Kostüm Efsunlama ve Değiştirmedir.



Kostümü efsunla

Köstümü dönüştür


char_item.cpp açılır ve aratılır;

Kod:
if (ITEM_COSTUME == item2->GetType()

;
Kod:
                        if (ITEM_COSTUME == item2->GetType() &&  item->GetVnum() != 70063 && item->GetVnum() != 70064)  //Kostumu Donustur ve Kostumu efsunla
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ogenin ozelligi degistirilemez."));
                            return false;
                        }

tekrar aratılır;

Kod:
case USE_CHANGE_ATTRIBUTE :



Kod:
                                case USE_CHANGE_ATTRIBUTE :
                                    if (item->GetVnum() == 70063)
                                    {
                                         if (item2->GetType() != ITEM_COSTUME)
                                         {
                                             ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_ISNT_COSTUME"));
                                             return false;
                                         }
                                         if  (item2->GetAttributeCount() < 3 &&  item2->GetAttributeCount() > 0)
                                          {
                                             if (number(1, 100) < 30)
                                             {
                                                 while(item2->GetAttributeCount() < number(2, 3))
                                                   item2->AddAttribute();
                                             }
                                         }
                                    }
                                      // Enchant costume
                                    if (item->GetVnum() == 70064)
                                    {
                                         if (item2->GetType() != ITEM_COSTUME)
                                         {
                                         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_ISNT_COSTUME"));
                                          return false;
                                         }
                                    }
                                    if (item2->GetAttributeSetIndex() == -1)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ì†ë³â‚¬ê²½í•  ìˆËÅ“ ìâ€â€â€  ëІì•â€ì´í…œì…니다."));
                                        return false;
                                    }


                                    if (item2->GetAttributeCount() == 0)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ë³â‚¬ê²½í•  ì†ìâ€±ì´ ìâ€â€â€ ìÅ  µë‹ˆë‹¤."));
                                        return false;
                                    }


                                    if (GM_PLAYER == GetGMLevel() && false == test_server)
                                    {
                                        //
                                        // Event Flag 를 통해  ì´ì â€ìâ۠ì•â€ì´í…œ ì†ì‱  ë³â‚¬ê²½ì†í•œ 시ê°â€ìÅ“¼ë¡Å“  ë¶â‚¬í‰ ì¶©ë¶â€í•œ 시ê°ââ‚¬ì´ íËÅ“ë €ëÅ  â€ì§â‚¬ ê²â‚¬ì‚¬í•ËÅ“ê³
                                        // 시ê°ââ‚¬ì´  ì¶©ë¶â€íˆ íËÅ“ë €ë‹¤ë©´ íËÅ“ââ‚¬ì¬ ì† ì‱ë³â‚¬ê²½ìâ۠ëÅâ€â•€í•œ  시ê°â€ì†ì․ì •í•´ ì¤â‚¬ë‹¤.
                                        //


                                        DWORD dwChangeItemAttrCycle =  quest::CQuestManager::instance().GetEventFlag(msc_szChangeItemAttrCycleFlag);
                                        if (dwChangeItemAttrCycle < msc_dwDefaultChangeItemAttrCycle)
                                            dwChangeItemAttrCycle = msc_dwDefaultChangeItemAttrCycle;


                                        quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID());


                                    if (pPC)
                                  
                                    {
                                        DWORD dwNowMin = get_global_time() / 60;
                                  
                                        //Comment for 0 switch players start
                                        //DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag);
                                  
                                        //if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)
                                        //{
                                            //ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("LOL?R≫ aU¸UAo %d?D REl≫z^´A ´U¨A ?Z°cCN Lo  lr¨R´D´U.(%d ?D l¸R¨)"),
                                                //dwChangeItemAttrCycle,  dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));
                                            //return false;
                                            //}
                                        //Comment for 0 switch players end
                                  
                                        pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin);
                                        }
                                    }


                                    if (item->GetSubType() == USE_CHANGE_ATTRIBUTE2)
                                    {
                                        int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =
                                        {
                                            0, 0, 30, 40, 3
                                        };


                                        item2->ChangeAttribute(aiChangeProb);
                                    }
                                    else if (item->GetVnum() == 76014)
                                    {
                                        int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =
                                        {
                                            0, 10, 50, 39, 1
                                        };


                                        item2->ChangeAttribute(aiChangeProb);
                                    }


                                    else
                                    {
                                        // ì ì¬ê²½ íÅ ¹ìˆËÅ“ì²ËÅ“리
                                        // ì ˆëÅâ€â•€ë¡Å“  ì ì¬ê°â‚¬ ì¶â€ê°â‚¬ 안ë ê±°ë¼  í•ËÅ“ìâ€‬ í•Ëœ드 ì½â€ë
함.
                                        if (item->GetVnum() == 71151 || item->GetVnum() == 76023)
                                        {
                                            if ((item2->GetType() == ITEM_WEAPON)
                                                || (item2->GetType()  == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
                                            {
                                                bool bCanUse = true;
                                                for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
                                                {
                                                    if  (item2->GetLimitType(i) == LIMIT_LEVEL &&  item2->GetLimitValue(i) > 40)
                                                    {
                                                        bCanUse = false;
                                                        break;
                                                    }
                                                }
                                                if (false == bCanUse)
                                                {
                                                     ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ì ìÅ¡© ë ˆ벨보다 ë† â€â•앆사ìÅ¡©ì´ ë¶Ë†ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                 ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기ìâ•€  ê°â€ËÅ“ìËÅ“·ìâ€â€ë§Åâ€╠사ìÅ¡© ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));
                                                break;
                                            }
                                        }
                                        item2->ChangeAttribute();
                                    }


                                    ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ì†ë³â‚¬ê²½í•ËÅ“ìËœ€ìÅ  µë‹ˆë‹¤."));
                                    {
                                        char buf[21];
                                        snprintf(buf, sizeof(buf), "%u", item2->GetID());
                                        LogManager::instance().ItemLog(this, item, "CHANGE_ATTRIBUTE", buf);
                                    }


                                    item->SetCount(item->GetCount() - 1);
                                    break;


                                case USE_ADD_ATTRIBUTE :
                                    if (item2->GetAttributeSetIndex() == -1)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ì†ë³â‚¬ê²½í•  ìˆËÅ“ ìâ€â€â€  ëІì•â€ì´í…œì…니다."));
                                        return false;
                                    }


                                    if (item2->GetAttributeCount() < 4)
                                    {
                                        // ì ì¬ê°â‚¬ íÅ ¹ìˆËÅ“ì²ËÅ“리
                                        // ì ˆëÅâ€â•€ë¡Å“  ì ì¬ê°â‚¬ ì¶â€ê°â‚¬ 안ë ê±°ë¼  í•ËÅ“ìâ€‬ í•Ëœ드 ì½â€ë
함.
                                        if (item->GetVnum() == 71152 || item->GetVnum() == 76024)
                                        {
                                            if ((item2->GetType() == ITEM_WEAPON)
                                                || (item2->GetType()  == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
                                            {
                                                bool bCanUse = true;
                                                for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
                                                {
                                                    if  (item2->GetLimitType(i) == LIMIT_LEVEL &&  item2->GetLimitValue(i) > 40)
                                                    {
                                                        bCanUse = false;
                                                        break;
                                                    }
                                                }
                                                if (false == bCanUse)
                                                {
                                                     ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ì ìÅ¡© ë ˆ벨보다 ë† â€â•앆사ìÅ¡©ì´ ë¶Ë†ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                 ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기ìâ•€  ê°â€ËÅ“ìËÅ“·ìâ€â€ë§Åâ€╠사ìÅ¡© ê°â‚¬ëÅ  ¥í•©ë‹ˆë‹¤."));
                                                break;
                                            }
                                        }
                                        char buf[21];
                                        snprintf(buf, sizeof(buf), "%u", item2->GetID());


                                        if (number(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
                                        {
                                            item2->AddAttribute();
                                            ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ ì¶â€ê°â‚¬ìâ۠ ì‱공í•ËÅ“ìËœ€ìÅ µë‹ˆë‹¤."));


                                            int iAddedIdx = item2->GetAttributeCount() - 1;
                                            LogManager::instance().ItemLog(
                                                    GetPlayerID(),
                                                    item2->GetAttributeType(iAddedIdx),
                                                    item2->GetAttributeValue(iAddedIdx),
                                                    item->GetID(),
                                                    "ADD_ATTRIBUTE_SUCCESS",
                                                    buf,
                                                    GetDesc()->GetHostName(),
                                                    item->GetOriginalVnum());
                                        }
                                        else
                                        {
                                            ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ì†ì‱ ì¶â€ê°â‚¬ìâ۠ 실íÅâ€╨í•ËÅ“ìËœ€ìÅ µë‹ˆë‹¤."));
                                            LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE_FAIL", buf);
                                        }


                                        item->SetCount(item->GetCount() - 1);
                                    }
                                    else
                                    {
                                        ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("ëâ€ì´ìÆââ‚¬â• ì´ ì•â€ì´í…œì† ì´ìÅ¡©í•ËÅ“ìâ€‬ ì†ì‱ì†ì¶â€ê°â‚¬í•   ìˆËÅ“ ìâ€â€â€ ìÅ µë‹ˆë‹¤."));
                                    }
                                    break;



uiinventory.py açılır ve aratılır;

Kod:
elif "USE_CHANGE_ATTRIBUTE" == useType:

;
Kod:
            elif "USE_CHANGE_ATTRIBUTE" == useType:
                if srcItemVNum == 70063 or srcItemVNum == 70064:
                    if self.__CanChangeCostumeAttrList(dstSlotPos):
                        return True
                else:
                    if self.__CanChangeItemAttrList(dstSlotPos):
                        return True
tekrar aratılır;
Kod:
                if item.ITEM_TYPE_BELT == item.GetItemType():
                    return True


        return False

;
Kod:
    def __CanChangeCostumeAttrList(self, dstSlotPos):
        dstItemVNum = player.GetItemIndex(dstSlotPos)
        if dstItemVNum == 0:
            return False


        item.SelectItem(dstItemVNum)


        if item.ITEM_TYPE_COSTUME != item.GetItemType() and not  item.GetItemSubType() in (item.COSTUME_TYPE_BODY,  item.COSTUME_TYPE_HAIR):
            return False


        for i in xrange(player.COSTUME_ATTRIBUTE_MAX_NUM):
            if player.GetItemAttribute(dstSlotPos, i)[0] != 0:
                return True


        return False


    def __CanResetCostumeAttr(self, dstSlotPos):
        dstItemVNum = player.GetItemIndex(dstSlotPos)
        if dstItemVNum == 0:
            return False


        item.SelectItem(dstItemVNum)
        if item.ITEM_TYPE_COSTUME != item.GetItemType() and not  item.GetItemSubType() in (item.COSTUME_TYPE_BODY,  item.COSTUME_TYPE_HAIR):
            return False


        return True



item_proto.txt eklenecekler;
Kod:
70063    transform_costume    ITEM_USE    USE_CHANGE_ATTRIBUTE    1    ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP    ITEM_STACKABLE | LOG    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
70064    enchant_costume    ITEM_USE    USE_CHANGE_ATTRIBUTE    1    ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP    ITEM_STACKABLE | LOG    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

item_names.txt eklenecekler;
Kod:
70063 Köstümü dönüştür
70064 Kostümü efsunla

itemdesc.txt eklenecekler;
Kod:
70063 Köstümü  dönüştür    Kostümlerinden birinin bonuslarını kaldırır ve yenilerini  ekler. Şansın yaver giderse bu arada bonuslarının sayısı değişir. (en  fazla 3 olacak kadar)

70064 Kostümü efsunla    Kostümlerinden birinin bonuslarını kaldırır ve yenilerini ekler.

item_list.txt eklenecekler;
Kod:
70063    ETC    icon/item/70063.tga 
70064    ETC    icon/item/70064.tga


icon linkleri tarafımca yenilenmiştir

Link :

VT:
 
Moderatör tarafında düzenlendi:
Teşekkürler
 
Yabancı Forumdan Alıntıdır
Kostüm Efsunlama ve Değiştirmedir.



Kostümü efsunla
Köstümü dönüştür


  • Open "char_item.cpp" (Server-Source, game)
  • Search for:Code:
    if (ITEM_COSTUME == item2->GetType()
    inCode:
    case USE_PUT_INTO_BELT_SOCKET:
    case USE_PUT_INTO_RING_SOCKET:
    case USE_PUT_INTO_ACCESSORY_SOCKET:
    case USE_ADD_ACCESSORY_SOCKET:
    case USE_CLEAN_SOCKET:
    case USE_CHANGE_ATTRIBUTE:
    case USE_CHANGE_ATTRIBUTE2 :
    case USE_ADD_ATTRIBUTE:
    case USE_ADD_ATTRIBUTE2:
  • Replace the if-statement with following:Code:
    if (ITEM_COSTUME == item2->GetType() && item->GetVnum() != 70063 && item->GetVnum() != 70064)
  • Search for:Code:
    if (item2->GetAttributeSetIndex() == -1)
    inCode:
    case USE_CHANGE_ATTRIBUTE :
  • Paste this under itCode:
    // Transform costume
    if (item->GetVnum() == 70063)
    {
    if (item2->GetType() != ITEM_COSTUME)
    {
    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_ISNT_COSTUME"));
    return false;
    }
    if (item2->GetAttributeCount() == 0)
    {
    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_HASNT_ATTRIBUTE"));
    return false;
    }
    if (item2->GetAttributeCount() < 3)
    {
    if (number(1, 100) < 30)
    {
    while(item2->GetAttributeCount() < number(2, 3))
    item2->AddAttribute();
    }
    }
    }
    // Enchant costume
    if (item->GetVnum() == 70064)
    {
    if (item2->GetType() != ITEM_COSTUME)
    {
    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_ISNT_COSTUME"));
    return false;
    }
    if (item2->GetAttributeCount() == 0)
    {
    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ITEM_HASNT_ATTRIBUTE"));
    return false;
    }
    }






Clientside:
  • Open "uiinventory.py" (Client, root)
  • Search forCode:
    elif "USE_CHANGE_ATTRIBUTE" == useType:
  • Replace the elif-statement withCode:
    elif "USE_CHANGE_ATTRIBUTE" == useType:
    if srcItemVNum == 70063 or srcItemVNum == 70064:
    if self.__CanChangeCostumeAttrList(dstSlotPos):
    return True
    else:
    if self.__CanChangeItemAttrList(dstSlotPos):
    return True
  • Search forCode:
    def __CanPutAccessorySocket(self, dstSlotPos, mtrlVnum):
  • And paste this above it:Code:
    def __CanChangeCostumeAttrList(self, dstSlotPos):
    dstItemVNum = player.GetItemIndex(dstSlotPos)
    if dstItemVNum == 0:
    return False

    item.SelectItem(dstItemVNum)

    if item.GetItemType() == item.ITEM_TYPE_COSTUME:
    return True

    return False






item_proto.txt, serverside
Code:
70063 transform_costume ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG 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
70064 enchant_costume ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG 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
item_names.txt, serverside
Code:
70063 Transform Costume
70064 Enchant Costume
itemdesc.txt, clientside
Code:
70063 Transform Costume Removes the bonuses from one of your costumes and replaces them with new ones. With a bit of luck, the number of bonuses might also change (up to max. 3).
70064 Enchant Costume Removes the bonuses from one of your costumes and replaces them with new ones.
item_list.txt, clientside
Code:
70063 ETC icon/item/70063.tga
70064 ETC icon/item/70064.tga
You can download the icons in the attachment.

İTEM DESC EKLİYEBİLİRSİNİZ.


  • 70063 Köstümü dönüştür Kostümlerinden birinin bonuslarını kaldırır ve yenilerini ekler. Şansın yaver giderse bu arada bonuslarının sayısı değişir. (en fazla 3 olacak kadar)
  • 70064 Kostümü efsunla Kostümlerinden birinin bonuslarını kaldırır ve yenilerini ekler.


türkcelestirip kodları duzenleyıp anlatımı kolaylastırsan ve calıstıgına dair kanıt eklesen kullanacak arkadaslar ıcın cok daha iyi olacaktır.
 
türkcelestirip kodları duzenleyıp anlatımı kolaylastırsan ve calıstıgına dair kanıt eklesen kullanacak arkadaslar ıcın cok daha iyi olacaktır.

Code içerisine alınıp tab ayarlı kodlar paste2'ye yüklendi,itemdesc.txt Türkçe karşılıkları eklendi.Düzenlemeye çalışmış ama olmamış benden düzeltmemi rica etti düzelttim :)
 

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

Geri
Üst