Dali - OfflineShop

Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Process: UNKNOWN HEADER: 224, LAST HEADER: 50(3), REMAIN BYTES: 3, fd: 19

uGoldType'ları DWORD olarak değiştirdim ondan kaynaklanabilir.
Long long yang kullanmıyorsun normali ekleyeceksin service.h locale_inc.h yi zaten öğretici kurulumda söylenmiş dışında bir değişiklik yapmayacaksın lctext disinda
 
Linkleri görebilmek için giriş yap veya kayıt ol.
bu dalinin offlineshop'unda item bulmada çalışıyor fakat satın almada çalışmıyor ilgilenen birileri çıkarmı

#edit hallettim ticaret camı çalışıyor artık satın alma itemleri listelemesi
Nereyi uyarladığınızı buraya yazar mısınız rica etsem. OFFLINESHOP eklerken içinde arama camını ifdefi vardı bu dediğiniz offlineshopu ekledim dediğiniz gibi itemleri listeliyor fakat satın almıyor. Bakalım tShopTable'yi TOfflineShopTable olarak değiştirdim derliyorum bakalım ne değişecek :)

#Edit: Birşey değişmedi. Bu dükkan mevcut değil diyor. itemleri listeliyor. Fakat Arama yapıp itemin üstüne gelince pazar işareti çıkmıyor veya nesneyi satın almıyor.
 
Son düzenleme:
Nereyi uyarladığınızı buraya yazar mısınız rica etsem. OFFLINESHOP eklerken içinde arama camını ifdefi vardı bu dediğiniz offlineshopu ekledim dediğiniz gibi itemleri listeliyor fakat satın almıyor. Bakalım tShopTable'yi TOfflineShopTable olarak değiştirdim derliyorum bakalım ne değişecek :)

#Edit: Birşey değişmedi. Bu dükkan mevcut değil diyor. itemleri listeliyor. Fakat Arama yapıp itemin üstüne gelince pazar işareti çıkmıyor veya nesneyi satın almıyor.
Great uyarlamasını yap sorun kalmaz.
 
Great uyarlamasını yap sorun kalmaz.
Hala daha bu dükkan mevcut değil diyor. Sadece Shop_manager.cpp'de düzenleme yaptım o da zaten Great OfflineShop Uyarlama klasöründe zaten. Diğer türlü sistemin kendisini normal şekilde ekledim.

Gördüğüm kadarıyla düzenlenen yerler:

yeni eklenen : int32_t shopVid = p->dwShopPID;
değiştirilen : LPCHARACTER ShopCH = CHARACTER_MANAGER::instance().FindByPID(shopVid);

Değiştirilen :

if (item->GetOwner())
pack2.dwShopPID = item->GetOwner()->GetVID();
else
pack2.dwShopPID = 0;
 
Ayrıca shop.cpp'de bu offlineshopu eklerken sistemi yazan kişi


#if defined(BL_PRIVATESHOP_SEARCH_SYSTEM) || defined(ENABLE_OFFLINE_SHOP)
if (IsPCShop())
memset(&r_item, 0, sizeof(r_item));
#else
r_item.pkItem = NULL;
#endif

burada kendi definesi olan arama camı vardır burayı silmem gerekiyor mu yoksa kalması mı gerekiyor.

#Edit: varken de aynı #else altı kalıncada aynı zaten else altı kalacakda orjinalde yani yemiyor hiçbir türlü
 
Son düzenleme:
yok yemiyor great uyarlaması. Forum80 arkadaş başka şekilde uyarlamış sanırım
 
yok yemiyor great uyarlaması. Forum80 arkadaş başka şekilde uyarlamış sanırım
Bilmiyorum ben great kullanıyordum kaldırdım bunu ekledim aynı ticaret camı sistemi bende de ekli ve sorunsuz çalıştı. Great uyarlamasını kaldırıp denemiştim o zamanda dediğin gibi itemleri buluyor ama satın almıyordu.
 
Bilmiyorum ben great kullanıyordum kaldırdım bunu ekledim aynı ticaret camı sistemi bende de ekli ve sorunsuz çalıştı. Great uyarlamasını kaldırıp denemiştim o zamanda dediğin gibi itemleri buluyor ama satın almıyordu.
denediğimde bende çalıştıramamıştım okan gibi. bir kaç şey denedim ama tırt fazla da üstüne düşmedim. sağlık olsun.
 
Bahsedilen ticaret cami ve hatta diğer tüm ticaret cami sistemlerini ilk eklediğimde(great için) satın alma sorunu yaşamıştım. İtem bulunuyor ama alınamıyordu ve yanlış hatırlamıyorsam satın alma eyleminde hiç bir tepki (syserr vs) yoktu.

3 günümü aldı sebebini bulmak, sorun shop.cpp den kaynaklanıyor. Baya zaman geçti yaptığım düzenlemeyi tam olarak hatırlamıyorum ama ticaret camindaki packet.h içindeki item pos değeri için shop.cpp de tanım yoktu ve satın alma işlemi boş pos donduruyordu. Bende elle tanimlamistim.
Ticaret camindaki pos değeri ile shop.cpp içindeki Buy fonksiyonunu özellikle inceleyin derim.

Ben bu sorunu sıfır altyapida yaşadım. Her fileste yaşanmıyordur elbet bilemiyorum.
 
şimdi burada shop_manager.cpp 'de

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

bu var. burada shop.cpp'deki buy'u alıyor. Buy'da

int CShop::Buy(LPCHARACTER ch, BYTE pos, bool bIsShopSearch)

bu var. şimdi yukarıda int ret = pkShop->Buy(ch(LPCHARACTER ch), p->bPos (Burada arama camının packet.h'deki pos'u alıyor çünkü)

const TPacketCGPrivateShopSearchBuyItem* p burada belirtmiş.

pos'u Shop'un pos'unu mu aldıracağız.
 
şimdi burada shop_manager.cpp 'de

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

bu var. burada shop.cpp'deki buy'u alıyor. Buy'da

int CShop::Buy(LPCHARACTER ch, BYTE pos, bool bIsShopSearch)

bu var. şimdi yukarıda int ret = pkShop->Buy(ch(LPCHARACTER ch), p->bPos (Burada arama camının packet.h'deki pos'u alıyor çünkü)

const TPacketCGPrivateShopSearchBuyItem* p burada belirtmiş.

pos'u Shop'un pos'unu mu aldıracağız.
Evet buna benzer bir durumdu. Burada da Buy fonksiyonu üzerinden bPosu çağırıyor ama Buy fonksiyonunda bPos ile ilgili bir tanım olmadığı için satın almıyor olabilir. Yani benim yaşadığım sorun tam olarak böyle bir şeydi. Ancak senin kullandığın ticaret camını ben hiç denemedim. Daha çok fileslerden söküp denemiştim üst üste.

Burada da ticaret camının çağırdığı pos değerini, offline shopun kullandığı pos değeriyle aynı olacak şekilde değiştirmeyi deneyebilirsin.
 
hacım offlineshop'un veya normal shopun packet.h 'de kullandığı bir pos yok. Sadece command_shop_sell içinde var başka shop veya offlineshop ile ilgili bir pos yok.

şimdi great arama camına baktım'da hiçbir arama camında pazarın pos'unu aldıran bir fonksiyon birşey görmedim Hepsi arama camının pos'unu almışlar.

TPacketCGShopSearchBuy * pinfo = (TPacketCGShopSearchBuy *)data;
int32_t shopItemPos = pinfo->shopItemPos;
int32_t returnHeader = pkShop->Buy(ch, shopItemPos, true);

gördüğün gibi.
pinfo burada TPacketCGShopSearchBuy demek. yani bunun içinden birşeyler alıcam demek.

shop.cpp'yi böyle yaptım bakalım ne olacak

// #if defined(BL_PRIVATESHOP_SEARCH_SYSTEM)
// if (bIsShopSearch == false && it == m_map_guest.end())
// return SHOP_SUBHEADER_GC_END;
// #else
// if (it == m_map_guest.end())
// return SHOP_SUBHEADER_GC_END;
// #endif

if (!bIsShopSearch)
{
if (it == m_map_guest.end())
return SHOP_SUBHEADER_GC_END;
 
En son bir moderatör tarafından düzenlenmiş:
hacım offlineshop'un veya normal shopun packet.h 'de kullandığı bir pos yok. Sadece command_shop_sell içinde var başka shop veya offlineshop ile ilgili bir pos yok.
Bendeki ticaret camı için şöyle söyleyeyim;
Benim shop_manager.cpp de bPos falan yok.

C++:
int ret = pkShop->Buy(ch, pos);
Bu şekilde tanımlı. Dediğin gibi shop.cpp deki Buy fonksiyonundan pos değerini çağırıyor.
Buradaki pos tanımı ise packet.h den değil, shop.h den geliyor.

Şöyle ki;
C++:
SHOP_ITEM& r_item = m_itemVector[pos];
shop.cpp de ki Buy fonksiyonuda böyle bir tanım mevcut. SHOP_ITEM kısmı, shop.h içindeki typedef struct shop_item tablosunu ifade ediyor. Ordaki pos değerini çekiyor. Great offline shop ise zaten oyunun kendi kodları üzerine giydirme mantığı ile çalışan bir shop olduğu için zaten bu kodları kullanıyor. Ekstra bir pos tanımı falan yok. Ancak senin kullandığın search sisteminde, bunlardan farklı olarak bPos falan işin içine girdiği için boş değer döndürüyor olabilir. bPos olan yerleri bahsettiğim yerlere yönlendirmeyi dene istersen.
 
Bu Ticaret Camı Great'da çalışıyor değil mi? Melih sen ekledin test ettin.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst