Hikayeler

Reklam vermek için turkmmo@gmail.com

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

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:
[COLOR=#006666]70063[/COLOR]    transform_costume    ITEM_USE    USE_CHANGE_ATTRIBUTE    [COLOR=#006666]1[/COLOR]    ANTI_DROP [COLOR=#666600]|[/COLOR] ANTI_SELL [COLOR=#666600]|[/COLOR] ANTI_GIVE [COLOR=#666600]|[/COLOR] ANTI_MYSHOP    ITEM_STACKABLE [COLOR=#666600]|[/COLOR] LOG    NONE    NONE    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    LIMIT_NONE    [COLOR=#006666]0[/COLOR]    LIMIT_NONE    [COLOR=#006666]0[/COLOR]    APPLY_NONE    [COLOR=#006666]0[/COLOR]    APPLY_NONE    [COLOR=#006666]0[/COLOR]    APPLY_NONE    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]
[COLOR=#006666]70064[/COLOR]    enchant_costume    ITEM_USE    USE_CHANGE_ATTRIBUTE    [COLOR=#006666]1[/COLOR]    ANTI_DROP [COLOR=#666600]|[/COLOR] ANTI_SELL [COLOR=#666600]|[/COLOR] ANTI_GIVE [COLOR=#666600]|[/COLOR] ANTI_MYSHOP    ITEM_STACKABLE [COLOR=#666600]|[/COLOR] LOG    NONE    NONE    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    LIMIT_NONE    [COLOR=#006666]0[/COLOR]    LIMIT_NONE    [COLOR=#006666]0[/COLOR]    APPLY_NONE    [COLOR=#006666]0[/COLOR]    APPLY_NONE    [COLOR=#006666]0[/COLOR]    APPLY_NONE    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0[/COLOR]    [COLOR=#006666]0
[/COLOR]

item_names.txt eklenecekler;

Kod:
[COLOR=#006666]70063[/COLOR] [COLOR=#282828][FONT=InconsolataMedium]Köstümü dönüştür[/FONT][/COLOR]
[COLOR=#006666]70064[/COLOR] [COLOR=#282828][FONT=InconsolataMedium]Kostümü efsunla
[/FONT][/COLOR]


itemdesc.txt eklenecekler;

Kod:
[COLOR=#006666]70063[/COLOR] [COLOR=#282828][FONT=InconsolataMedium]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)[/FONT][/COLOR][COLOR=#666600]
[/COLOR]
[COLOR=#006666]70064[/COLOR] [COLOR=#282828][FONT=InconsolataMedium]Kostümü efsunla    Kostümlerinden birinin bonuslarını kaldırır ve yenilerini ekler.
[/FONT][/COLOR]

item_list.txt eklenecekler;

Kod:
[COLOR=#006666]70063[/COLOR]    ETC    icon[COLOR=#666600]/[/COLOR]item[COLOR=#666600]/[/COLOR][COLOR=#006666]70063.tga[/COLOR]    
[COLOR=#006666]70064[/COLOR]    ETC    icon[COLOR=#666600]/[/COLOR]item[COLOR=#666600]/[/COLOR][COLOR=#006666]70064.tga
[/COLOR]




txt siz item proto sql kodlarını atarmısın
 
Kişi isteği üzerine konu açılmıştır.
 
Teşekkürler
 
link kırık yeniler misiniz acaba?
 

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

Geri
Üst