Çözüldü Yürürken Market Ekranının Kapanması

  • Konuyu açan Konuyu açan lmaohw
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 194
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

lmaohw

Premium Üye
Premium Üye
MT Üye
Mesaj
187
Çözümler
11
Beğeni
65
Puan
474
Ticaret Puanı
0
Selamlar, oto av ile metin farmı atarken uzaktan market açıyorum fakat karakter belli bir mesafe yürüdüğünde pencere kapanıyor bunu nasıl değiştirebilirim kapanmasını istemiyorum
 
Çözüm
Kullandığın uzaktan market sisteminin .py dosyasında şuna benzer bir kod olmalı.
Eğer yoksa uiShop.py içinden düzenlemen gerekir. Ancak bu işlemden sonra shop npcler de etkilenecektir. Yani npc ye normal tıklandığında da, uzaklaşmasına rağmen kapanmayacaktır.
Python:
Genişlet Daralt Kopyala
    def OnUpdate(self):
        USE_SHOP_LIMIT_RANGE = 1000

        (x, y, z) = player.GetMainCharacterPosition()
        if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE:
            self.Close()

Bunu şu şekilde değiştir:
Python:
Genişlet Daralt Kopyala
    def OnUpdate(self):
        pass
        # USE_SHOP_LIMIT_RANGE = 1000

        # (x, y, z) = player.GetMainCharacterPosition()
        # if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE...
Bunun için shop_manager içerisindeki mesafe kontrollerini kaldırmanız gerekir, şu şekilde;

shop_manager.cpp:
Genişlet Daralt Kopyala
//ARA
CShopManager::StartShopping

//İÇİNDE ARA
    long distance = DISTANCE_APPROX (pkChr->GetX() - pkChrShopKeeper->GetX(), pkChr->GetY() - pkChrShopKeeper->GetY());
    if (distance >= SHOP_DISTANCE)
    {
        sys_log (1, "SHOP: TOO_FAR: %s distance %d", pkChr->GetName(), distance);
        return false;
    }

//DEĞİŞTİR
    /* long distance = DISTANCE_APPROX (pkChr->GetX() - pkChrShopKeeper->GetX(), pkChr->GetY() - pkChrShopKeeper->GetY());
    if (distance >= SHOP_DISTANCE)
    {
        sys_log (1, "SHOP: TOO_FAR: %s distance %d", pkChr->GetName(), distance);
        return false;
    } */

//ARA (DİKKAT BUNDAN İKİ ADET VAR BİR ADET BUY FONKSİYONUNDA BİR ADET SELL FONKSİYONUNDA İKİSİNE DE AYNI İŞLEMİ YAP)
    if (DISTANCE_APPROX (ch->GetX() - ch->GetShopOwner()->GetX(), ch->GetY() - ch->GetShopOwner()->GetY()) > SHOP_MAX_DISTANCE)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("상점과의 거리가 너무 멀어 물건을 살 수 없습니다."));
        return;
    }

//DEĞİŞTİR
    /* if (DISTANCE_APPROX (ch->GetX() - ch->GetShopOwner()->GetX(), ch->GetY() - ch->GetShopOwner()->GetY()) > SHOP_MAX_DISTANCE)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("상점과의 거리가 너무 멀어 물건을 살 수 없습니다."));
        return;
    } */
 
Kullandığın uzaktan market sisteminin .py dosyasında şuna benzer bir kod olmalı.
Eğer yoksa uiShop.py içinden düzenlemen gerekir. Ancak bu işlemden sonra shop npcler de etkilenecektir. Yani npc ye normal tıklandığında da, uzaklaşmasına rağmen kapanmayacaktır.
Python:
Genişlet Daralt Kopyala
    def OnUpdate(self):
        USE_SHOP_LIMIT_RANGE = 1000

        (x, y, z) = player.GetMainCharacterPosition()
        if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE:
            self.Close()

Bunu şu şekilde değiştir:
Python:
Genişlet Daralt Kopyala
    def OnUpdate(self):
        pass
        # USE_SHOP_LIMIT_RANGE = 1000

        # (x, y, z) = player.GetMainCharacterPosition()
        # if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE:
            # self.Close()

Bu işlemden sonra pencere kapanmaz ama satın alma işlemi yapmayabilir. (Chat ekranında "Satın almak için çok uzaktasın." yazabilir.)
Bunun için de @MT2Dev 'in gösterdiği işlemleri de yapman gerekir.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst