Hikayeler

Reklam vermek için turkmmo@gmail.com

İkarus offlineshop v2 pazarın üst üste açma sorunu fix'i

devemoji

dev.mmooyun.com
Telefon Numarası Onaylanmış Üye
Yönetici
VIP Üye
Paylaşım
Ayın Üyesi
Katılım
4 Ocak 2016
Konular
163
Mesajlar
818
Online süresi
1ay 29g
Reaksiyon Skoru
761
Altın Konu
59
Başarım Puanı
214
TM Yaşı
10 Yıl 3 Ay 18 Gün
MmoLira
3,698
DevLira
3

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

Merhabalar arkadaşlar,


ZibaGames olarak, Ikarus OfflineShop V2 sürümünde tespit edilen pazarların iç içe açılabilmesi sorununu giderdik. Yeni güncelleme ile birlikte pazarlar arasında mesafe kontrolü eklenmiştir ve bu sayede sorun tamamen çözülmüştür.


🛠️ Sorunsuz bir şekilde kullanabilirsiniz.
🎉 Güle güle kullanın!


Saygılar,


ikarus_shop_manager.cpp:
// ARAT VE AŞAĞIDA Kİ İLE DEĞİŞTİR

void CShopManager::CreateShopEntity(SHOP_HANDLE shop)



C++:
#ifndef DISTANCE_APPROX
#define DISTANCE_APPROX(x, y) (abs(x) + abs(y))
#endif

void CShopManager::CreateShopEntity(SHOP_HANDLE shop)
{
    auto& spawn = shop->GetSpawn();
   
    // Karakter opsiyonel — sadece bilgi amaçlı
    LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(shop->GetOwnerPID());
   
    if (auto sectree = SECTREE_MANAGER::Instance().Get(spawn.map, spawn.x, spawn.y))
    {
        long new_x = spawn.x;
        long new_y = spawn.y;
        bool conflict = true;
        int max_try = 20;
   
        std::random_device rd;
        std::mt19937 gen(rd());
        std::uniform_int_distribution<> dis(-150, 150);
   
        while (conflict && max_try > 0)
        {
            conflict = false;
   
            new_x = spawn.x + dis(gen);
            new_y = spawn.y + dis(gen);
   
            auto check_shops = [&](LPENTITY ent)
            {
                if (ent->IsType(ENTITY_NEWSHOPS))
                {
                    if (DISTANCE_APPROX(ent->GetX() - new_x, ent->GetY() - new_y) < 100)
                        conflict = true;
                }
            };
   
            sectree->ForEachAround(check_shops);
            --max_try;
        }
   
        if (conflict)
        {
            if (ch)
                ch->ChatPacket(CHAT_TYPE_INFO, "Bu konumda çok fazla pazar var. Lütfen farklı bir yerde deneyin.");
            return;
        }
   
        auto entity = std::make_shared<ShopEntity>();
        entity->SetShopName(shop->GetName());
        entity->SetMapIndex(spawn.map);
        entity->SetXYZ(new_x, new_y, 0);
        entity->SetShop(shop);

#ifdef EXTEND_IKASHOP_ULTIMATE
        entity->SetShopType(shop->GetDecoration());
#endif

        sectree->InsertEntity(entity.get());
        entity->UpdateSectree();
        shop->SetEntity(entity);
   
        m_entityByVID[entity->GetVID()] = entity;
    }
}







Ekran görüntüsü 2025-05-17 210907.png
 
Son düzenleme:
Paylaşım için teşekkürler kardeşim.
 
Paylaşım için teşekkürler kardeşim.
 

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

Geri
Üst