noisiv 1
noisiv
Manwe Work 1
Manwe Work
[DEV]AB 1
[DEV]AB
R 1
Roksam
Hikaye Ekle

Cevaplandı Premium Private Shop hakkında problem

  • Konuyu başlatan Konuyu başlatan hasanmacit™
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 12
  • Görüntüleme Görüntüleme 835
https://forum.turkmmo.com/konu/3799397-offline-shop-premium-private-shop-eksikleri-tamamlandi/
Ekli dosyayı görüntüle 10169

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.

[CODE lang="cpp" highlight="24-30"]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;
}
}[/CODE]

[CODE lang="cpp" highlight="26-32"] 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;
}[/CODE]
 
Moderatör tarafında düzenlendi:
yapıyı tam bilmiyorum ben sadece problemi söyledim. Map diye bahsettiğim bir depolayıcı ve pazar verilerini kullanıcılar ile eşleştiriyor. Bu depolayıcıda karakterin kendisine ait bir pazar bulunmuyor. bundan dolayı hata vermiş.
Devamında bu pointer'ı kullanarak eşyayı teslim ettiği için gereksiz bir sorgu da değil :D
Benimde demek istediğim şey şuydu adminim bu yapının önüne bir kontrol ekleyip belirtilen shop id sine kayıtlı item var ise gösterip itemi almasını sağlamak üzerine birşeylerdi eğer yoksa ve bu tip bir bug söz konusu ise sonra bu engele takılması gibi. Sonuç olarak dediğiniz gibi memoryden siliniyor fakat veritabının kullanıcıya ait item olduğu için ne yeni pazar açtrıyor nede olan pazardan item çektiriyor yani sistem de başlı başına bir mantık hatası veya eksik kodlama mevcut.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst