Dali - OfflineShop

  • Konuyu açan Konuyu açan bosymax
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 103
  • Gösterim Gösterim 16K
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

bosymax

Development
Geliştirici
MT Üye
Mesaj
225
Çözümler
14
Beğeni
113
Puan
749
Ticaret Puanı
0
Great benzeri ve daha iyisiymiş öyle söylentiler var

Sistem sahibinin forumda satış konusu bulunduğu için konu kapatılmıştır.
[Paid Services]Dali

Başka bir forumdan alıntıdır.

image.png

Bir arkadaşımın isteği üzerine birlikte kontrol ettik. Saat kısmı shopta gözükmüyor. İlk bakışta pack taraflı bir eksik gibi gözüksede sonradan kodu okutmadığı için okumadığını farkettim. Elbet başka bir çözüm yolu da vardır fakat ben böyle çözdüm. Sadece bu foruma özel olarak veriyorum çözümü. Kullanacaklar bunu da uygulamayı unutmasın. Hatta mümkünse konuya eklenebilir.

uishop.py:
Genişlet Daralt Kopyala
arat

def SetShopInfo(self, sign, channel, index, x, y, timeLeft, update):
  
içeriğiyle birlikte değiştir

        def SetShopInfo(self, sign, channel, index, x, y, timeLeft, update):
            expired = self.expireTime <= time.clock()
            self.expireTime = time.clock() + timeLeft

            (mapName, xBase, yBase) = background.GlobalPositionToMapInfo(x, y)
            localeMapName = localeInfo.MINIMAP_ZONE_NAME_DICT.get(mapName, "")
            self.posInfoText.SetText("CH %d, %s (%d, %d)" % (channel, localeMapName, int(x - xBase) / 100, int(y - yBase) / 100))

            m, s = divmod(self.expireTime - time.clock(), 60)
            h, m = divmod(m, 60)
            d, h = divmod(h, 24)
          
            self.timeLeftText.SetText(uiScriptLocale.OFFLINE_SHOP_TIME_LEFT % ((d, h, m) if not expired else (0, 0, 0)))
          
            if expired:
                self.lockButton.SetText(uiScriptLocale.OFFLINE_SHOP_BUTTON_RENEW)

            self.signInputBoard.SetDescription(uiScriptLocale.OFFLINE_SHOP_INPUT_SIGN_DESC % sign)
            self.signText.SetText(sign if len(sign) < 18 else sign[:17] + "...")

Konuya ekleyeceğin yeni bir ek daha vereyim. Pazarı açarken yang istemiyor onu için ufak bir ekleme yapayım.

Char.cpp Aratılır:
Genişlet Daralt Kopyala
void CHARACTER::CreateMyOfflineShop(const char *c_pszSign, TShopItemTable *pTable, BYTE bItemCount)
{

Altına Eklenir:
Genişlet Daralt Kopyala
    int iOpenPrice = OFFLINE_SHOP_OPEN_PRICE;

    if (GetGold() < iOpenPrice)
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You don't have enough gold to open an offline shop! (%d)"), iOpenPrice);
        return;
    }

    PointChange(POINT_GOLD, -iOpenPrice);

Service.h yada CommonDefines.h Hangi Kullanılıyorsa Filesinizde İçine Eklenir:
Genişlet Daralt Kopyala
#define OFFLINE_SHOP_OPEN_PRICE 1000000        //ÇEVRİMDIŞI PAZAR AÇILIŞ ÜCRETİ

ticaret camı ekleyip sorun çıktığında uygulanacak düzenleme
arkadaşlar o kadar uzatmışsınız ki konuyu ordan oraya burdan şuraya aslında çok basit


ara:
Genişlet Daralt Kopyala
            pack2.dwShopPID = GetOwner->GetPlayerID();
değiştir:
Genişlet Daralt Kopyala
            if (item->GetOwner())
                pack2.dwShopPID = item->GetOwner()->GetVID();
            else
                pack2.dwShopPID = 0;

kod bloğunu bulunla tamamen değiştir:
Genişlet Daralt Kopyala
void CShopManager::ShopSearchBuy(LPCHARACTER ch, const TPacketCGPrivateShopSearchBuyItem* p)
{
    if (ch == NULL || ch->GetDesc() == NULL || p == NULL)
        return;

    int32_t shopVid = p->dwShopPID;

    if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_CLOSE_TABS"));
        return;
    }

    LPCHARACTER ShopCH = CHARACTER_MANAGER::instance().Find(shopVid);

    if (ShopCH == NULL)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_NO_SHOP"));
        return;
    }

    if (ch == ShopCH) // what?
        return;

    CShop* pkShop = ShopCH->GetMyShop();
    if (pkShop == NULL || pkShop->IsPCShop() == false)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_NO_SHOP"));
        return;
    }

    const BYTE bState = ch->GetPrivateShopSearchState();
    switch (bState)
    {
    case SHOP_SEARCH_LOOKING:
    {
        if (ch->CountSpecifyItem(PRIVATE_SHOP_SEARCH_LOOKING_GLASS) == 0)
        {
            const TItemTable* GlassTable = ITEM_MANAGER::instance().GetTable(PRIVATE_SHOP_SEARCH_LOOKING_GLASS);
            if (GlassTable)
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_WHERE_IS_ITEM"), GlassTable->szLocaleName);
            return;
        }
        if (ch->GetMapIndex() != ShopCH->GetMapIndex())
        {
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_SAMEMAP_ERR"));
            return;
        }

        const DWORD dwSellerVID(ShopCH->GetVID());
        if (CTargetManager::instance().GetTargetInfo(ch->GetPlayerID(), TARGET_TYPE_VID_SHOP_SEARCH, dwSellerVID))
            CTargetManager::instance().DeleteTarget(ch->GetPlayerID(), SHOP_SEARCH_INDEX, "__SHOPSEARCH_TARGET__");

        CTargetManager::Instance().CreateTarget(ch->GetPlayerID(), SHOP_SEARCH_INDEX, "__SHOPSEARCH_TARGET__", TARGET_TYPE_VID_SHOP_SEARCH, dwSellerVID, 0, ch->GetMapIndex(), "Ticaret Camı", 1);

        if (CTargetManager::instance().GetTargetInfo(ch->GetPlayerID(), TARGET_TYPE_VID_SHOP_SEARCH, dwSellerVID))
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_SUCCESS_TARGET"));
        break;
    }

    case SHOP_SEARCH_TRADING:
    {
        if (ch->CountSpecifyItem(PRIVATE_SHOP_SEARCH_TRADING_GLASS) == 0)
        {
            const TItemTable* GlassTable = ITEM_MANAGER::instance().GetTable(PRIVATE_SHOP_SEARCH_TRADING_GLASS);
            if (GlassTable)
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_WHERE_IS_ITEM"), GlassTable->szLocaleName);
            return;
        }

        ch->SetMyShopTime();
        int ret = pkShop->Buy(ch, p->bPos, true);

        if (SHOP_SUBHEADER_GC_OK != ret)
        {
            TPacketGCShop pack;
            pack.header = HEADER_GC_SHOP;
            pack.subheader = static_cast<BYTE>(ret);
            pack.size = sizeof(TPacketGCShop);
            ch->GetDesc()->Packet(&pack, sizeof(pack));
        }
        else
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SHOP_SEARCH_OK"));

        break;
    }
    default:
        sys_err("ShopSearchBuy ch(%s) wrong state(%d)", ch->GetName(), bState);
        break;
    }
}


pazar süresinin gözükmeme hatası fixi
Bugün Sistemi Kontrol Ettim Sistem Anlatımında Eksikler Var Bu Saat Gözükmeme Sorunu Ondan Kaynaklanıyor Senin Düzenlediğin Kod Sadece Gösteriş Olarak Duracaktır Orada Bir İşlevi Olmayacaktır. Yine de Uğraşın İçin Sağ ol Bu Sorunu Sadece Bir Kod Ekleyerek Çözebiliriz Aşağıda Paylaştım İsteyen Ekleyebilir.

uishop.py:
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()

        self.offlineShopWnd.UpdateTime() #Bu Kodu Ekliyoruz Bu Kadar


8236 eklentisini görüntüle
 
En son bir moderatör tarafından düzenlenmiş:
greatı cacheye ve kanallar arasına taşımış diye biliyorum. çoğu kişi kodlamasının temiz olduğundan bahsediyor. bende guisinden felan hoşnut kaldım şans verilebilir. paylaşım için teşekkürler.
 
global bir sunucu kullanıyordu eğer o sürümse sıkıntısız
greatı cacheye ve kanallar arasına taşımış diye biliyorum. çoğu kişi kodlamasının temiz olduğundan bahsediyor. bende guisinden felan hoşnut kaldım şans verilebilir. paylaşım için teşekkürler.
 
Linkin kırılma ihtimaline karşılık, dosyayı konuya dahil ettim. Paylaşım için teşekkürler.
Görüntü olarak hoşuma gitti ama kesin bir kanıya varmadan kullanmak istemedim açıkcası. Özellikle yüksek onlineda herhangi bir sorunu var mı yokmu vs. gibi soru işaretlerinin cevaplanması gerek diye düşünüyorum...
 
Bir arkadaşımın isteği üzerine birlikte kontrol ettik. Saat kısmı shopta gözükmüyor. İlk bakışta pack taraflı bir eksik gibi gözüksede sonradan kodu okutmadığı için okumadığını farkettim. Elbet başka bir çözüm yolu da vardır fakat ben böyle çözdüm. Sadece bu foruma özel olarak veriyorum çözümü. Kullanacaklar bunu da uygulamayı unutmasın. Hatta mümkünse konuya eklenebilir.

uishop.py:
Genişlet Daralt Kopyala
arat

def SetShopInfo(self, sign, channel, index, x, y, timeLeft, update):
    
içeriğiyle birlikte değiştir

        def SetShopInfo(self, sign, channel, index, x, y, timeLeft, update):
            expired = self.expireTime <= time.clock()
            self.expireTime = time.clock() + timeLeft

            (mapName, xBase, yBase) = background.GlobalPositionToMapInfo(x, y)
            localeMapName = localeInfo.MINIMAP_ZONE_NAME_DICT.get(mapName, "")
            self.posInfoText.SetText("CH %d, %s (%d, %d)" % (channel, localeMapName, int(x - xBase) / 100, int(y - yBase) / 100))

            m, s = divmod(self.expireTime - time.clock(), 60)
            h, m = divmod(m, 60)
            d, h = divmod(h, 24)
            
            self.timeLeftText.SetText(uiScriptLocale.OFFLINE_SHOP_TIME_LEFT % ((d, h, m) if not expired else (0, 0, 0)))
            
            if expired:
                self.lockButton.SetText(uiScriptLocale.OFFLINE_SHOP_BUTTON_RENEW)

            self.signInputBoard.SetDescription(uiScriptLocale.OFFLINE_SHOP_INPUT_SIGN_DESC % sign)
            self.signText.SetText(sign if len(sign) < 18 else sign[:17] + "...")
 
Bir arkadaşımın isteği üzerine birlikte kontrol ettik. Saat kısmı shopta gözükmüyor. İlk bakışta pack taraflı bir eksik gibi gözüksede sonradan kodu okutmadığı için okumadığını farkettim. Elbet başka bir çözüm yolu da vardır fakat ben böyle çözdüm. Sadece bu foruma özel olarak veriyorum çözümü. Kullanacaklar bunu da uygulamayı unutmasın. Hatta mümkünse konuya eklenebilir.

uishop.py:
Genişlet Daralt Kopyala
arat

def SetShopInfo(self, sign, channel, index, x, y, timeLeft, update):
   
içeriğiyle birlikte değiştir

        def SetShopInfo(self, sign, channel, index, x, y, timeLeft, update):
            expired = self.expireTime <= time.clock()
            self.expireTime = time.clock() + timeLeft

            (mapName, xBase, yBase) = background.GlobalPositionToMapInfo(x, y)
            localeMapName = localeInfo.MINIMAP_ZONE_NAME_DICT.get(mapName, "")
            self.posInfoText.SetText("CH %d, %s (%d, %d)" % (channel, localeMapName, int(x - xBase) / 100, int(y - yBase) / 100))

            m, s = divmod(self.expireTime - time.clock(), 60)
            h, m = divmod(m, 60)
            d, h = divmod(h, 24)
           
            self.timeLeftText.SetText(uiScriptLocale.OFFLINE_SHOP_TIME_LEFT % ((d, h, m) if not expired else (0, 0, 0)))
           
            if expired:
                self.lockButton.SetText(uiScriptLocale.OFFLINE_SHOP_BUTTON_RENEW)

            self.signInputBoard.SetDescription(uiScriptLocale.OFFLINE_SHOP_INPUT_SIGN_DESC % sign)
            self.signText.SetText(sign if len(sign) < 18 else sign[:17] + "...")
kullanacak arkadaşlar adına geliştirme için teşekkürler konuya ekledim
 
greatı cacheye ve kanallar arasına taşımış diye biliyorum. çoğu kişi kodlamasının temiz olduğundan bahsediyor. bende guisinden felan hoşnut kaldım şans verilebilir. paylaşım için teşekkürler.
Peki arama camı olarak great a uyumlu olan camı deneyebilirmiyiz
 
Sistemi ekledim fakat bu sisteme buton atamam gerekiyor sanarım bunu nasıl yapabilirim ?
 
paket ile normal pazara dönüşüyor maalesef
Oyun içinde var olan bir butonun işlevini değiştirerek yada rastgele bir buton ekleyerek def OpenOfflineShop fonksiyonuna yönlendirmeyi dene istersen. Büyük ihtimalle bu fonksiyondan açılıyordur.
 
/open_shop ile açılıyor pazar eğer açamamışsan bir hata vardır syserr kontrol etmen lazım
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst