Sandık Aynası Sistemi

TheAdmin33

Ah, bu şarkıların gözü kör olsun
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
1.179
Çözümler
62
Beğeni
3.850
Puan
1.859
Ticaret Puanı
0
Ekran Alıntısı.webp




Not-1: "alt + sağ tık" yaparak guiyi açabilirsiniz.

Not-2: İtem tipi "ITEM_GIFTBOX" olan sandıklarda çalışır. Sandıkların tiplerine item protodan bakabilirsiniz.

İndir;
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Vt;
Linkleri görebilmek için giriş yap veya kayıt ol.

 
Son düzenleme:
Sandıkların açılımında kasma veya donmalar yaşanıyor mu ?
Ben yaşamadım. Videoda bir yerde duraksama oluyor gibi o oyun donduğundan değil sadece basmam gereken tuşlara basamadığım için öyle oldu. Sistemde sıkıntı yok.
 
Video da fark ettim gui açıldığında itemlerin anlık gecikmeyle load olduğu görülüyor. Bunu indirdiğimde şöyle bir düzenlemeyle çözülür gibi serverdan cliente gidecek herşeyi clientte kayıt edecek Python’da gui load olmadan önce mesela __LoadWindow öncesine clientten bunları alacaksın gui açıldığında gecikme olmadan slotlara zaten eklenmiş olacak.
 
Son düzenleme:
Linkleri görebilmek için giriş yap veya kayıt ol.


client src de " PythonItemModule.cpp dosyasında " yoksa ekleyin yoksa çalışmıyor
Kod:
Genişlet Daralt Kopyala
PyModule_AddIntConstant(poModule, "ITEM_TYPE_GIFTBOX",            CItemData::ITEM_TYPE_GIFTBOX);

boş sandıkda core veriyormu onu kontrol edip güncelleme yapacagım
 
Son düzenleme:
Linkleri görebilmek için giriş yap veya kayıt ol.


client src de " PythonItemModule.cpp dosyasında " yoksa ekleyin yoksa çalışmıyor
Kod:
Genişlet Daralt Kopyala
PyModule_AddIntConstant(poModule, "ITEM_TYPE_GIFTBOX",            CItemData::ITEM_TYPE_GIFTBOX);

boş sandıkda core veriyormu onu kontrol edip güncelleme yapacagım
Bundan bahsetmeyi unutmuşuyum, teşekkürler konuya ekliyorum.
 
sistemi ekledim bir kaç eksik var benim gözüme çarpan buğün fazla uğraşamadım misal sandık açtıktan sonra envanterde veya k envanter de sandık olmamasına ragman sandık aynasının hala açık olması ona bir kontrol eklesek güzel olur diye düşünüyorum
 
Güncelleme;
Artık açılan sandık tükendiğinde gui kapanacak.

Konudaki dosya güncellendi tekrardan indirip uichestdrop.py dosyasını root un içine atmanız yeterli olur.
 
Güncelleme;

Simya envanterinin doluluk kontrolü.

56ht8v9.PNG


char_item.cpp:
Genişlet Daralt Kopyala
//Arat;

void CHARACTER::CopyDragonSoulItemGrid(std::vector<WORD>& vDragonSoulItemGrid) const


//Üstüne ekle;

int CHARACTER::GetEmptyDragonSoulInventoryType() const
{
    auto bSize = 1;

    bool foundEmptySlot = false; // Boş yer bulunup bulunmadığını kontrol etmek için flag

    for (auto i = 0; i < DS_SLOT_MAX; ++i)
    {
        for (auto j = 0; j < DRAGON_SOUL_GRADE_MAX; ++j)
        {
            WORD wBaseCell = i * DRAGON_SOUL_STEP_MAX * DRAGON_SOUL_BOX_SIZE + j * DRAGON_SOUL_BOX_SIZE;

            if (WORD_MAX == wBaseCell)
                return -1;

            foundEmptySlot = false;

            for (auto k = 0; k < DRAGON_SOUL_BOX_SIZE; ++k)
            {
                if (IsEmptyItemGrid(TItemPos(DRAGON_SOUL_INVENTORY, k + wBaseCell), bSize))
                {
                    foundEmptySlot = true;
                    break;
                }
            }

            if (!foundEmptySlot)
            {
                return i * 10 + j;
            }
        }
    }

    return 0;
}


//Arat;(case ITEM_GIFTBOX: içerisinde)

                DWORD dwBoxVnum = item->GetVnum();


//Altına ekle;

                if((dwBoxVnum > 51500 && dwBoxVnum < 52000) || (dwBoxVnum >= 50255 && dwBoxVnum <= 50260))
                {
                    auto DragonSoulInventoryCheck = GetEmptyDragonSoulInventoryType();

                    if (DragonSoulInventoryCheck != 0)
                    {
                        auto DragonSoulGradeTypes = DragonSoulInventoryCheck / 10;
                        auto DragonSoulStepTypes = DragonSoulInventoryCheck % 10;

                        if (DragonSoulStepTypes == -1)
                        {
                            return false;
                        }

                        std::string col_type = "";
                        std::string row_type = "";

                        if (DragonSoulGradeTypes == 0)
                            col_type = "Elmas";
                        else if (DragonSoulGradeTypes == 1)
                            col_type = "Yakut";
                        else if (DragonSoulGradeTypes == 2)
                            col_type = "Yeşim";
                        else if (DragonSoulGradeTypes == 3)
                            col_type = "Safir";
                        else if (DragonSoulGradeTypes == 4)
                            col_type = "Grena";
                        else if (DragonSoulGradeTypes == 5)
                            col_type = "Oniks";

                        if (DragonSoulStepTypes == 0)
                            row_type = "İşlenmemiş";
                        else if (DragonSoulStepTypes == 1)
                            row_type = "Yontulmuş";
                        else if (DragonSoulStepTypes == 2)
                            row_type = "Ender";
                        else if (DragonSoulStepTypes == 3)
                            row_type = "Antika";
                        else if (DragonSoulStepTypes == 4)
                            row_type = "Efsanevi";

                        ChatPacket(CHAT_TYPE_INFO, "%s simyasının %s envanteri dolu.!", col_type.c_str(), row_type.c_str());
                        return false;
                    }
                }

char.h:
Genişlet Daralt Kopyala
//Arat;

GetEmptyDragonSoulInventory() const

//Altına ekle;

int                GetEmptyDragonSoulInventoryType() const
 
Son düzenleme:
18350 eklentisini görüntüle



Not-1: "alt + sağ tık" yaparak guiyi açabilirsiniz.

Not-2: İtem tipi "ITEM_GIFTBOX" olan sandıklarda çalışır. Sandıkların tiplerine item protodan bakabilirsiniz.

İndir;
Alıntılarda özel içerikler gözükmez.

Vt;
Linkleri görebilmek için giriş yap veya kayıt ol.


Teşekkürler fixlenmesi gereken birşey var mı bu arada ?

18350 eklentisini görüntüle



Not-1: "alt + sağ tık" yaparak guiyi açabilirsiniz.

Not-2: İtem tipi "ITEM_GIFTBOX" olan sandıklarda çalışır. Sandıkların tiplerine item protodan bakabilirsiniz.

İndir;
Alıntılarda özel içerikler gözükmez.

Vt;
Linkleri görebilmek için giriş yap veya kayıt ol.


Alt tuşuna basarak sağ click yaptıgımda perncere acılır gibi olup kapanıyor login ekranına atıyor ve syserr log hiçbişi yok

Game:
Genişlet Daralt Kopyala
            elif app.IsPressed(app.DIK_LSHIFT):
                if player.GetItemTypeBySlot(slotIndex) == item.ITEM_TYPE_GIFTBOX and\
                    ItemVNum != 31374 and ItemVNum != 50255 and\
                    ItemVNum != 50187 and ItemVNum != 50197 and\
                    ItemVNum != 50188 and ItemVNum != 50189 and\
                    ItemVNum != 50190 and ItemVNum != 50191 and\
                    ItemVNum != 50192 and ItemVNum != 50193 and\
                    ItemVNum != 50194 and ItemVNum != 50195:
                    if app.ENABLE_CHEST_INFO_SYSTEM:
                        if self.interface:
                            if self.interface.dlgChestDrop:
                                if not self.interface.dlgChestDrop.IsShow():
                                    self.interface.dlgChestDrop.Open(slotIndex)
                                    net.SendChestDropInfo(ItemVNum, player.INVENTORY, slotIndex)
 
En son bir moderatör tarafından düzenlenmiş:
Alt tuşuna basarak sağ click yaptıgımda perncere acılır gibi olup kapanıyor login ekranına atıyor ve syserr log hiçbişi yok

Game:
Genişlet Daralt Kopyala
            elif app.IsPressed(app.DIK_LSHIFT):
                if player.GetItemTypeBySlot(slotIndex) == item.ITEM_TYPE_GIFTBOX and\
                    ItemVNum != 31374 and ItemVNum != 50255 and\
                    ItemVNum != 50187 and ItemVNum != 50197 and\
                    ItemVNum != 50188 and ItemVNum != 50189 and\
                    ItemVNum != 50190 and ItemVNum != 50191 and\
                    ItemVNum != 50192 and ItemVNum != 50193 and\
                    ItemVNum != 50194 and ItemVNum != 50195:
                    if app.ENABLE_CHEST_INFO_SYSTEM:
                        if self.interface:
                            if self.interface.dlgChestDrop:
                                if not self.interface.dlgChestDrop.IsShow():
                                    self.interface.dlgChestDrop.Open(slotIndex)
                                    net.SendChestDropInfo(ItemVNum, player.INVENTORY, slotIndex)
shift tusunda gözüküyor ama

Python:
Genişlet Daralt Kopyala
        elif app.IsPressed(app.DIK_LALT):
            if item.GetItemType() == item.ITEM_TYPE_GIFTBOX:
                if app.ENABLE_CHEST_INFO_SYSTEM:
                    if self.interface:
                        if self.interface.dlgChestDrop:
                            if not self.interface.dlgChestDrop.IsShow():
                                self.interface.dlgChestDrop.Open(slotIndex)
                                net.SendChestDropInfo(ItemVNum, player.INVENTORY, slotIndex)

aynı sistemi kullanıyorum bende çalışıyor
 
En son bir moderatör tarafından düzenlenmiş:
Geri
Üst