Welcome to Darkmmo

Şimdi bize katılın ve tüm özelliklerimize erişim sağlayın. Kayıt olup giriş yaptıktan sonra, yeni konular oluşturabilir, mevcut konulara yanıtlar yazabilir, kendi özel mesajlaşma sisteminize sahip olabilir ve çok daha fazlasını yapabilirsiniz. Ayrıca hızlı ve tamamen ücretsizdir, öyleyse ne bekliyorsunuz?

Kuşak Evrim Sistemi - Acce Bonus Booster System

Reklam vermek içinTıklayın!

FarquesFarques doğrulanmış üye.

~ Everything has an end
Admin
Developer
VİP Üye
Katılım
Tem 11, 2024
Mesajlar
259
Tepkime puanı
339
Konum
ANKARA
Dark Puan
3,198
Konuyu Vurgula
Profil Müziği
Kullanıcı Başlığı Stili
Discord
farques6
TagLise
farques
Ekran Alıntısı.webp



Çalışma mantığı;

1)Mevcut seviyeden aşağıya inmez. Örn: Leveli 3 ise 2'ye veya 1'e düşmez.

2)Seviye kademeli olarak artar. Örn: Leveli 1 ise 3.seviye yapılamaz öncelikle 2. sevive yapılmalıdır.

3)Mevcut seviyesine bir daha ulaşamaz. Örn: Kuşağın levelini 1 yapmak için kullandığınız item'ı aynı kuşak üzerinde bir daha kullanamazsınız.

4)Kuşakları kombinlerken alt tarafa koyduğunuz kuşak leveli atlatılmış bir kuşak olamaz. Nedeni şu yanlışlıkla level atlatılmış kuşağınızı kaybetmeyin diye bu engeli koydum.
Anlatım;
common/item_length.h:
C++:
//ARAT;

    ACCE_GRADE_4_ABS_MAX = 25,


//DEĞİŞTİR;

#ifdef ACCE_BONUS_BOOSTER
    ACCE_LEVEL_SOCKET = 2,
    ACCE_GRADE_4_ABS_MAX = 25,
    ACCE_NEW_MAX_K = 50,
#else
    ACCE_GRADE_4_ABS_MAX = 25,
#endif

common/service.h:

C++:
//EKLE;

#define ACCE_BONUS_BOOSTER

game/char.cpp:

C++:
//ARAT;

                DWORD dwMaxAbsCalc = (dwMinAbs + ACCE_GRADE_4_ABS_RANGE > ACCE_GRADE_4_ABS_MAX ? ACCE_GRADE_4_ABS_MAX : (dwMinAbs + ACCE_GRADE_4_ABS_RANGE));


//DEĞİŞTİR;

#ifdef ACCE_BONUS_BOOSTER
                auto ACCE_ABS_MAX = pkItemMaterial[0]->GetSocket(ACCE_LEVEL_SOCKET) * ACCE_NEW_MAX_K;
                DWORD dwMaxAbsCalc;
                if (ACCE_ABS_MAX != 0)
                {
                    dwMaxAbsCalc = (dwMinAbs + ACCE_GRADE_4_ABS_RANGE > ACCE_ABS_MAX ? ACCE_ABS_MAX : (dwMinAbs + ACCE_GRADE_4_ABS_RANGE));
                }
                else
                {
                    dwMaxAbsCalc = (dwMinAbs + ACCE_GRADE_4_ABS_RANGE > ACCE_GRADE_4_ABS_MAX ? ACCE_GRADE_4_ABS_MAX : (dwMinAbs + ACCE_GRADE_4_ABS_RANGE));
                }
#else
                DWORD dwMaxAbsCalc = (dwMinAbs + ACCE_GRADE_4_ABS_RANGE > ACCE_GRADE_4_ABS_MAX ? ACCE_GRADE_4_ABS_MAX : (dwMinAbs + ACCE_GRADE_4_ABS_RANGE));
#endif


//ARAT;

    else if ((m_bAcceCombination) && (pkItem->GetSocket(ACCE_ABSORPTION_SOCKET) >= ACCE_GRADE_4_ABS_MAX))
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu kanat zaten maksimum emiş oranına sahip."));
        return;
    }


//DEĞİŞTİR;

#ifdef ACCE_BONUS_BOOSTER
    else if (m_bAcceCombination)
    {
        if (pkItem->GetSocket(ACCE_LEVEL_SOCKET) != 0)
        {
            if (pkItem->GetSocket(ACCE_ABSORPTION_SOCKET) >= (pkItem->GetSocket(ACCE_LEVEL_SOCKET) * ACCE_NEW_MAX_K))
            {
                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu kanat zaten maksimum emiş oranına sahip."));
                return;
            }
        }
        else
        {
            if (pkItem->GetSocket(ACCE_ABSORPTION_SOCKET) >= ACCE_GRADE_4_ABS_MAX)
            {
                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu kanat zaten maksimum emiş oranına sahip."));
                return;
            }
        }
    }
    else if ((bPos == 1) && (m_bAcceCombination) && (pkItem->GetSocket(ACCE_ABSORPTION_SOCKET) >= ACCE_GRADE_4_ABS_MAX))
    {
        ChatPacket(CHAT_TYPE_INFO,"%d Emiş üzeri kuşakları kullanamazsınız.",ACCE_GRADE_4_ABS_MAX);
        return;
    }
#else
    else if ((m_bAcceCombination) && (pkItem->GetSocket(ACCE_ABSORPTION_SOCKET) >= ACCE_GRADE_4_ABS_MAX))
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu kanat zaten maksimum emiş oranına sahip."));
        return;
    }
#endif


//ARAT;

            pkItem->SetSocket(ACCE_ABSORBED_SOCKET, pkItemMaterial[0]->GetSocket(ACCE_ABSORBED_SOCKET));


//ALTINA EKLE;

#ifdef ACCE_BONUS_BOOSTER
            pkItem->SetSocket(ACCE_LEVEL_SOCKET, pkItemMaterial[0]->GetSocket(ACCE_LEVEL_SOCKET));
#endif

game/char_item.cpp:

C++:
//ARAT;
                            case 71109:


//ÜSTÜNE EKLE;

#ifdef ACCE_BONUS_BOOSTER
                            case 71260:
                            case 71261:
                            case 71262:
                            case 71263:
                            case 71264:
                            case 71265:
                                {
                                    LPITEM item2;

                                    if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
                                        return false;

                                    if (item2->IsExchanging())
                                        return false;

                                    if (item2->IsEquipped())
                                        return false;

                                    if (item2->GetType() != ITEM_COSTUME)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO,"Bu eşya kostümlere özeldir.");
                                        return false;
                                    }

                                    if (item2->GetSubType() != COSTUME_ACCE)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO,"Bu eşya kuşaklara özeldir.");
                                        return false;
                                    }

                                    if (item2->GetValue(ACCE_GRADE_VALUE_FIELD) != 4)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO, "Bu öğe sadece 11 emiş ve üzeri kuşaklara özeldir.");
                                        return false;
                                    }

                                    auto Acce_Level = item2->GetSocket(ACCE_LEVEL_SOCKET);//kuşağın mevcut level bilgisi
                                    auto Item_Level = item->GetValue(0);//Value(0) DA KAÇINCI LEVEL OLACAĞINI BELİRTİYORUZ

                                    if (Acce_Level > Item_Level)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO, "Kuşağın mevcut seviyesini düşüremeyeceğiniz için bu öğeyi bu kuşak için kullanamazsınız.");
                                        return false;
                                    }
                                    else if (Acce_Level == Item_Level)
                                    {
                                        ChatPacket(CHAT_TYPE_INFO, "Bu öğe bu kuşak için daha önce kullanılmış.");
                                        return false;
                                    }
                                    else
                                    {
                                        auto New_Max = (Acce_Level + 1) * ACCE_NEW_MAX_K;

                                        if (Item_Level == Acce_Level + 1)
                                        {
                                            item2->SetSocket(ACCE_LEVEL_SOCKET, Item_Level);
                                            ChatPacket(CHAT_TYPE_INFO, "Yeni bonus emiş sınırı: %d ", New_Max);
                                        }
                                        else
                                        {
                                            ChatPacket(CHAT_TYPE_INFO, "Yeteri kadar seviye arttırmamışsınız. Lütfen Kuşak Bonus Arttırıcı %d kullanın", New_Max);
                                            return false;
                                        }
                                    }

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

                                }
                                break;
#endif

item_proto:

C++:
71260    Kuşak Bonus Arttırıcı (50)    ITEM_USE    USE_SPECIAL    1    NONE    ITEM_STACKABLE    NONE        0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    1    0    0    0    0    0    0    0    0
71261    Kuşak Bonus Arttırıcı (100)    ITEM_USE    USE_SPECIAL    1    NONE    ITEM_STACKABLE    NONE        0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    2    0    0    0    0    0    0    0    0
71262    Kuşak Bonus Arttırıcı (150)    ITEM_USE    USE_SPECIAL    1    NONE    ITEM_STACKABLE    NONE        0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    3    0    0    0    0    0    0    0    0
71263    Kuşak Bonus Arttırıcı (200)    ITEM_USE    USE_SPECIAL    1    NONE    ITEM_STACKABLE    NONE        0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    4    0    0    0    0    0    0    0    0
71264    Kuşak Bonus Arttırıcı (250)    ITEM_USE    USE_SPECIAL    1    NONE    ITEM_STACKABLE    NONE        0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    5    0    0    0    0    0    0    0    0
71265    Kuşak Bonus Arttırıcı (300)    ITEM_USE    USE_SPECIAL    1    NONE    ITEM_STACKABLE    NONE        0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    6    0    0    0    0    0    0    0    0

item_names:

C++:
71260    Kuşak Bonus Arttırıcı(50)
71261    Kuşak Bonus Arttırıcı(100)
71262    Kuşak Bonus Arttırıcı(150)
71263    Kuşak Bonus Arttırıcı(200)
71264    Kuşak Bonus Arttırıcı(250)
71265    Kuşak Bonus Arttırıcı(300)

locale/item_list:

C++:
71260    ETC    icon/item/+200.png
71261    ETC    icon/item/+200.png
71262    ETC    icon/item/+200.png
71263    ETC    icon/item/+200.png
71264    ETC    icon/item/+200.png
71265    ETC    icon/item/+200.png

locale/itemdesc:

C++:
71260    Kuşak Bonus Arttırıcı(50)    Halihazırda ekipmanlarınızda bulunan bonus değerinin sınırını (50)'e çıkarmak için bu özel öğeyi kullanın. Öğe kullanımdan sonra kaybolur.
71261    Kuşak Bonus Arttırıcı(100)    Halihazırda ekipmanlarınızda bulunan bonus değerinin sınırını (100)'e çıkarmak için bu özel öğeyi kullanın. Öğe kullanımdan sonra kaybolur.
71262    Kuşak Bonus Arttırıcı(150)    Halihazırda ekipmanlarınızda bulunan bonus değerinin sınırını (150)'e çıkarmak için bu özel öğeyi kullanın. Öğe kullanımdan sonra kaybolur.
71263    Kuşak Bonus Arttırıcı(200)    Halihazırda ekipmanlarınızda bulunan bonus değerinin sınırını (200)'e çıkarmak için bu özel öğeyi kullanın. Öğe kullanımdan sonra kaybolur.
71264    Kuşak Bonus Arttırıcı(250)    Halihazırda ekipmanlarınızda bulunan bonus değerinin sınırını (250)'e çıkarmak için bu özel öğeyi kullanın. Öğe kullanımdan sonra kaybolur.
71265    Kuşak Bonus Arttırıcı(300)    Halihazırda ekipmanlarınızda bulunan bonus değerinin sınırını (300)'e çıkarmak için bu özel öğeyi kullanın. Öğe kullanımdan sonra kaybolur.

root/uitooltip.py:

Python:
#ARAT;

        self.__AdjustMaxWidth(attrSlot, itemDesc)
        self.__SetItemTitle(itemVnum, metinSlot, attrSlot)
 
        ### Hair Preview Image ###
        if self.__IsHair(itemVnum):
            self.__AppendHairIcon(itemVnum)

        ### Description ###
        self.AppendDescription(itemDesc, 26)
        self.AppendDescription(itemSummary, 26, self.CONDITION_COLOR)


#ALTINA EKLE;

        if item.ITEM_TYPE_COSTUME == itemType:
            if itemSubType == item.COSTUME_TYPE_ACCE:
                kusak_level = metinSlot[2]
                self.AppendTextLine("Kuşak leveli: %s " % (kusak_level), self.SINIRSIZ_COLOR)

root/uiinventory.py:

Python:
#ARAT;

    def __CanUseSrcItemToDstItem(self, srcItemVNum, srcSlotPos, dstSlotPos):
        "´ë»ó ¾ÆÀÌÅÛ¿¡ »ç¿ëÇÒ ¼ö Àִ°¡?"

        if srcSlotPos == dstSlotPos:
            return False


#ALTINA EKLE;

        if srcItemVNum >= 71260 and srcItemVNum <= 71265:
            dstItemVNum = player.GetItemIndex(dstSlotPos)
            item.SelectItem(dstItemVNum)
            if item.ITEM_TYPE_COSTUME == item.GetItemType() and item.GetItemSubType() == item.COSTUME_TYPE_ACCE:
                return True

Ekte verdiğim ikonları pack\icon\icon\item içerisine atın.

Dikkat!!!
Not: common/item_length.h içerisindeki "ACCE_NEW_MAX_K" isimli değişken katsayıyı belirtmektedir. Bu ne anlama geliyor derseniz de şu anlama geliyor Örn: Ben bu değişkene 50 değerini verdim bu yüzden itemler sınırı 50 şer arttırıyor eğer 50 değilde 100 yazsaydım 100 er arttırırdı. Bu değişkene 24,20,10 gibi 25'in altında bir değer vermeden kendinize göre ayarlayın.
Dikkat!!!

İcons
 
193Konular
554Mesajlar
4,430Kullanıcılar
test20Son üye
Üst