Yardım Premium Private Shop

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

hasanmacit

dc: hasanmacit
Site yetkilisi
Moderatör
Premium Üye
Geliştirici
Yardımsever Üye
Mesaj
3.051
Çözümler
97
Beğeni
2.304
Puan
1.840
Ticaret Puanı
2

TR Tipi Offline Shop (Premium Private Shop)

0607_180636.jpg


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++:
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++:
        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++:
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++:
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