Yardım Premium Private Shop

  • Konuyu açan Konuyu açan hasanmacit
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 955
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

hasanmacit

Geliştirici
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
4.951
Çözümler
210
Beğeni
5.263
Puan
2.850
Ticaret Puanı
7

TR Tipi Offline Shop (Premium Private Shop)

0607_180636.webp


Selamlar arkadaşlar. Vakit bulmuşken bu pazar sistemine de göz atmak istedim. Pazar kapanınca eşyaların guiye gelmeme sorunu vardı. Bunu çözdüm fakat guiden eşyaları çekemiyorum. Her seferinde şu iki satırdan biri uyarı veriyor. Bunu nasıl çözümleyebilirim ? Ve dikkatimi şu çekti belki çözümde yardımcı olur düşünecek arkadaşlara. Pazarı düzenlerken çoğu işlemi pkSafebox üstünden yaparken eşyayı çekerken hep klasik pazarı kontrol ediyor. Bunu düzenlediğimde yine orjinal pazarı bulamıyor.
C++:
Genişlet Daralt Kopyala
void CInputMain::PremiumPrivateShopItemMove(LPCHARACTER ch, const char * data)
{
    struct command_item_move * pinfo = (struct command_item_move *) data;

    if (!ch->CanHandleItem())
        return;

    if (!ch->GetPremiumPrivateShop())
        return;

    CSafebox * pkSafebox = ch->GetPremiumPrivateShop();

    if (!pkSafebox)
        return;

    LPITEM pkItem = pkSafebox->Get(pinfo->Cell.cell);

    if (!pkItem)
        return;

    DWORD dwPID = ch->GetPlayerID();
        
    LPOFFSHOP pkShop = CShopManager::instance().FindPremiumPrivateShopByPlayerID(dwPID);

    if (!pkShop)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT( "<Ozel Market> Bulunamadı PID"));
        return;
    }

    LPSHOP pShop = pkShop->GetShop();
            
    if (!pShop)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT( "<Ozel Market> Bulunamadı Shop"));
        return;
    }

    if(!pkSafebox->MoveItemPremiumPrivateShop(pinfo->Cell.cell, pinfo->CellTo.cell, pinfo->count, pShop, ch))
    {
        //sys_err("Fail moving item");
        return;
    }
}

C++:
Genişlet Daralt Kopyala
        case SUB_HEADER_PREMIUM_PRIVATE_SHOP_ITEM_DEL:
        {
            TPacketCGPremiumPrivateShopCheck * p = (TPacketCGPremiumPrivateShopCheck *) c_pData;

            if (!ch->CanHandleItem())
                return;

            CSafebox * pkSafebox;

            pkSafebox = ch->GetPremiumPrivateShop();

            if (!pkSafebox)
                return;

            LPITEM pkItem = pkSafebox->Get(p->bSafePos);

            if (!pkItem)
                return;

            if (!ch->IsEmptyItemGrid(p->ItemPos, pkItem->GetSize()))
                return;

            DWORD dwPID = ch->GetPlayerID();
            
            LPOFFSHOP pkShop = CShopManager::instance().FindPremiumPrivateShopByPlayerID(dwPID);

            if (!pkShop)
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT( "<Ozel Market> Bulunamadı PID"));
                return;
            }

            LPSHOP pShop = pkShop->GetShop();
            
            if (!pShop)
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT( "<Ozel Market> Bulunamadı Shop"));
                return;
            }
 
Bunun bir yardım konusu olduğunu unutmayın kavga içerikli yazılar kaldırılmıştır. Devam etmesi halinde cezai işlemler uygulanacaktır.
 
Yeni bir query sayfası oluştur örneğin "offlineshop_items" adında item tablosu ve db üzerinden. Daha sonra çekilen itemi yeni bir case oluştur ve oraya yolla. Oradan da cmd general üzerinden eşyayı envantere kopyalat ve oradan işlem bitince sildir. Bu şekilde yapabilirsin ama envanter dolu ve diğer kontrolleri unutma.
 
Yeni bir query sayfası oluştur örneğin "offlineshop_items" adında item tablosu ve db üzerinden. Daha sonra çekilen itemi yeni bir case oluştur ve oraya yolla. Oradan da cmd general üzerinden eşyayı envantere kopyalat ve oradan işlem bitince sildir. Bu şekilde yapabilirsin ama envanter dolu ve diğer kontrolleri unutma.
denenebilir, akşam bakıcam teşekkürler
 
Pazar kapandığında;
C++:
Genişlet Daralt Kopyala
LPOFFSHOP pkShop = CShopManager::instance().FindPremiumPrivateShopByPlayerID(dwPID);
bu değer null oluyor ve highlight'ladığın satıra giriyor.

Bu pazar sistemini daha önce kullanmadığım için bilmiyorum ama pazarın kapanma durumu süreye göre oluyorsa pazar süresi dolduktan sonra itemleri aynı windowda tutup pazarı kapatmak yerine, addguest fonksiyonunda pazar süresini kontrol ettirip owner'ı olmayan oyuncuları pazara tıklattırmayabilirsin.
 
Pazar kapandığında;
C++:
Genişlet Daralt Kopyala
LPOFFSHOP pkShop = CShopManager::instance().FindPremiumPrivateShopByPlayerID(dwPID);
bu değer null oluyor ve highlight'ladığın satıra giriyor.

Bu pazar sistemini daha önce kullanmadığım için bilmiyorum ama pazarın kapanma durumu süreye göre oluyorsa pazar süresi dolduktan sonra itemleri aynı windowda tutup pazarı kapatmak yerine, addguest fonksiyonunda pazar süresini kontrol ettirip owner'ı olmayan oyuncuları pazara tıklattırmayabilirsin.
buda denenebilir
 
Geri
Üst