Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı Yere item satma sorunu

  • Konuyu başlatan Konuyu başlatan Deli Ruh
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 9
  • Görüntüleme Görüntüleme 968

Deli Ruh

Level 2
Üye
Katılım
2 May 2022
Konular
4
Mesajlar
72
Çözüm
1
Online süresi
1mo 2d
Reaksiyon Skoru
6
Altın Konu
0
TM Yaşı
4 Yıl 1 Ay 3 Gün
Başarım Puanı
51
MmoLira
7,059
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Benim sorunum şu, mesela yeşil arttırma kağıdını navicattan 100k ya npcye ekliyorum geri npcye sattığımda istediğim fiyata satabiliyorum (Mesela 10k) ama yere sattığımda ya da Ctrl-x- sağ tık ile hız sattığımda npc de ne kadar ise o fiyata satılıyor istediğim fiyata satamıyorum item protoyu da navicat ile aynı ayarladım ama olmuyor
 

Ekli dosyalar

  • cats.jpg
    cats.jpg
    29.6 KB · Görüntüleme: 0
  • cats.jpg
    cats.jpg
    22.3 KB · Görüntüleme: 0
Öncelikle yere sil sat sisteminde paranın fiyatını gösteren kodu bulun shop.ShopBuyPrice() gibi sonra sistemin sell butonu yani satma butonuna bakın client sourceden neleri çekiyor sonra game sourceden hangi fonksiyonu kullanıyor ve satıldığında sizin envanterinize parayı verirken parayı nereden alıyor ona bakın.
 
Mesela Char_Item.cpp'de bool CHARACTER::SellItem(TItemPos Cell) bu fonksiyonun içinde

DWORD dwPrice;

dword türünde dwPrice adında bir tanımlama yapılmış. Ardından

dwPrice = item->GetShopBuyPrice();

Bundan sonra dwPrice eşittir yani demektir item->GetShopBuyPrice()

Alttada
ITEM_MANAGER::instance().RemoveItem(item);
PointChange(POINT_GOLD, dwPrice, false);

İtemi Sildiriyorum ve PointChange ile sana proto tablosundaki GetShopBuyPrice yani

return GetProto()->dwShopBuyPrice;

Tablodaki nesnenin satış fiyatı kadar sana yani envanterine yang (POINT_GOLD) ödensin diyor.
 
Mesela Char_Item.cpp'de bool CHARACTER::SellItem(TItemPos Cell) bu fonksiyonun içinde

DWORD dwPrice;

dword türünde dwPrice adında bir tanımlama yapılmış. Ardından

dwPrice = item->GetShopBuyPrice();

Bundan sonra dwPrice eşittir yani demektir item->GetShopBuyPrice()

Alttada
ITEM_MANAGER::instance().RemoveItem(item);
PointChange(POINT_GOLD, dwPrice, false);

İtemi Sildiriyorum ve PointChange ile sana proto tablosundaki GetShopBuyPrice yani

return GetProto()->dwShopBuyPrice;

Tablodaki nesnenin satış fiyatı kadar sana yani envanterine yang (POINT_GOLD) ödensin diyor.
Bende ki o kod satırı şu şekilde

bool CHARACTER::SellItem(TItemPos Cell)
{
LPITEM item = NULL;
if (IsDead())
return false;
if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell)))
return false;
if (item->IsExchanging())
return false;
if (true == item->isLocked())
return false;
if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true)
return false;
if (item->GetCount() <= 0)
return false;
DWORD dwPrice = item->GetGold();
dwPrice *= item->GetCount();

DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), dwPrice);
item->SetCount(item->GetCount() - item->GetCount());
PointChange(POINT_GOLD, dwPrice, false);
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has succesfully sell"), item->GetName());
return true;
}

Anladığım kadarıyla yere satarken proto tablosunda ShopBuyPrice yerine Gold'dan işlem yapıyor doğru mu ?
 
Bende ki o kod satırı şu şekilde

bool CHARACTER::SellItem(TItemPos Cell)
{
LPITEM item = NULL;
if (IsDead())
return false;
if (!IsValidItemPosition(Cell) || !(item = GetItem(Cell)))
return false;
if (item->IsExchanging())
return false;
if (true == item->isLocked())
return false;
if (quest::CQuestManager::instance().GetPCForce(GetPlayerID())->IsRunning() == true)
return false;
if (item->GetCount() <= 0)
return false;
DWORD dwPrice = item->GetGold();
dwPrice *= item->GetCount();

DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), dwPrice);
item->SetCount(item->GetCount() - item->GetCount());
PointChange(POINT_GOLD, dwPrice, false);
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has succesfully sell"), item->GetName());
return true;
}

Anladığım kadarıyla yere satarken proto tablosunda ShopBuyPrice yerine Gold'dan işlem yapıyor doğru mu ?
Ama şöyle sizin yere item sat sistemi hangi kodları kullanıyor ona bakmak lazım önce
 

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

Geri
Üst