noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
onur akbaş 1
onur akbaş
IronTalonX 1
IronTalonX
D 1
delimuratt
berzahx 1
berzahx
PrimeAC 1
PrimeAC
DEVLOPER 1
DEVLOPER
ShadowFon 1
ShadowFon
mavzermete 1
mavzermete
Hikaye Ekle

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 975

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 13 Gün
Başarım Puanı
51
MmoLira
7,089
DevLira
0
Ticaret - 0%
0   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. 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