Dali - OfflineShop

Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

bosymax

Geliştirici
Geliştirici
MT Üye
Mesaj
214
Çözümler
14
Beğeni
95
Puan
729
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:
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:
void CHARACTER::CreateMyOfflineShop(const char *c_pszSign, TShopItemTable *pTable, BYTE bItemCount)
{

Altına Eklenir:
    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:
#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:
            pack2.dwShopPID = GetOwner->GetPlayerID();
değiştir:
            if (item->GetOwner())
                pack2.dwShopPID = item->GetOwner()->GetVID();
            else
                pack2.dwShopPID = 0;

kod bloğunu bulunla tamamen değiştir:
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:
    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:
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:
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
 
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