KO Developers

Go Back   KO Developers > Mini KO Forum (Yardım & İstek) > Genel Yardım


Genel Yardım KO PvP Server geliştirme hakkında sorunlarınız, yaşadığınız problemler ve daha önceden çözülmüş sorunların detaylı anlatımının bulunduğu alt forum.

Beğeni Geçmişi1Beğeniler
  • 1 Post By PENTAGRAM

Cevapla
LinkBack Seçenekler Stil
Okunmamış 19 Kasım 2017, 23:02   #1 (permalink)
Yeni Üye

muhtarbey - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 19 Kasım 2017
Bulunduğu yer: Adana
Mesajlar: 38[+]
Kredi Bakiyeniz: 842
Ettiği teşekkür sayısı: 7
0 Mesaja 0 Kez Teşekkür Aldı

Standart Npc'ye item satışını yasaklama hk.

Merhabalar 21xx serverim var fakat biraz bilgi eksikliği var. Sc'leri npc'ye satışını nasıl engelletebiliriz.Gb kasılıyor çek al çek al olarak yardımcı olabilirmisiniz. Şimdiden teşekkür ederim.
muhtarbey isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 19 Kasım 2017, 23:21   #2 (permalink)

PENTAGRAM - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 04 Temmuz 2017
Mesajlar: 333[+]
Ettiği teşekkür sayısı: 70
157 Mesaja 386 Kez Teşekkür Aldı
Kullanıcı Envanteri Renkli konu başlığı (aylık)Kişisel Rütbe Şekillendirme (kalıcı)İsim Şekillendirme (kalıcı)Sabit Konu (Haftalık)Server Tanıtımı Alt Forum (Aylık)

Standart Cevap: Npc'ye item satışını yasaklama hk.

Alıntı:
muhtarbey Nickli Üyeden Alıntı Mesajı göster
Merhabalar 21xx serverim var fakat biraz bilgi eksikliği var. Sc'leri npc'ye satışını nasıl engelletebiliriz.Gb kasılıyor çek al çek al olarak yardımcı olabilirmisiniz. Şimdiden teşekkür ederim.
NpcHandler.cpp dosyasında CUser::ItemTrade fonksiyonunu düzenlemen gerekiyor. ItemTrade fonksiyonunun sell kısmına

cpp Kod:
  1. if(pTable->m_bKind == 255){
  2.     errorCode = 2;
  3.     goto fail_return;
  4. }

Şeklinde kontrol koyarsan, power-up store itemlerinin satıcıya satılmasını engellemiş olursun.

Tam fonksiyon(source koduna göre farklılık gösterebilir);

cpp Kod:
  1. // NPC shops
  2. void CUser::ItemTrade(Packet & pkt)
  3. {
  4.     Packet result(WIZ_ITEM_TRADE);
  5.     uint32 transactionPrice;
  6.     int itemid = 0, money = 0, group = 0;
  7.     uint16 npcid;
  8.     uint16 count, real_count = 0;
  9.     _ITEM_TABLE* pTable = nullptr;
  10.     CNpc* pNpc = nullptr;
  11.     uint8 type, pos, destpos, errorCode = 1;
  12.     bool bSuccess = true;
  13.  
  14.     if (isDead())
  15.     {
  16.         errorCode = 1;
  17.         goto send_packet;
  18.     }
  19.  
  20.     pkt >> type;
  21.     // Buy == 1, Sell == 2
  22.     if (type == 1 || type == 2)
  23.     {
  24.         pkt >> group >> npcid;
  25.         if (!g_pMain->m_bPointCheckFlag
  26.             || (pNpc = g_pMain->GetNpcPtr(npcid)) == nullptr
  27.             || (pNpc->GetType() != NPC_MERCHANT && pNpc->GetType() != NPC_TINKER)
  28.             || pNpc->m_iSellingGroup != group
  29.             || !isInRange(pNpc, MAX_NPC_RANGE))
  30.             goto fail_return;
  31.     }
  32.  
  33.     pkt >> itemid >> pos;
  34.  
  35.     if (type == 3)  // Move only (this is so useless mgame -- why not just handle it with the CUser::ItemMove(). Gah.)
  36.         pkt >> destpos;
  37.     else
  38.         pkt >> count;
  39.  
  40.     // Moving an item in the inventory
  41.     if (type == 3)
  42.     {
  43.         if (pos >= HAVE_MAX || destpos >= HAVE_MAX
  44.             || itemid != m_sItemArray[SLOT_MAX+pos].nNum)
  45.         {
  46.             errorCode = 4;
  47.             goto send_packet;
  48.         }
  49.  
  50.         short duration = m_sItemArray[SLOT_MAX+pos].sDuration;
  51.         short itemcount = m_sItemArray[SLOT_MAX+pos].sCount;
  52.         m_sItemArray[SLOT_MAX+pos].nNum = m_sItemArray[SLOT_MAX+destpos].nNum;
  53.         m_sItemArray[SLOT_MAX+pos].sDuration = m_sItemArray[SLOT_MAX+destpos].sDuration;
  54.         m_sItemArray[SLOT_MAX+pos].sCount = m_sItemArray[SLOT_MAX+destpos].sCount;
  55.         m_sItemArray[SLOT_MAX+destpos].nNum = itemid;
  56.         m_sItemArray[SLOT_MAX+destpos].sDuration = duration;
  57.         m_sItemArray[SLOT_MAX+destpos].sCount = itemcount;
  58.  
  59.         result << uint8(3);
  60.         Send(&result);
  61.         return;
  62.     }
  63.  
  64.     if (isTrading()
  65.         || (pTable = g_pMain->GetItemPtr(itemid)) == nullptr
  66.         || (type == 2 // if we're selling an item...
  67.         && (itemid >= ITEM_NO_TRADE // Cannot be traded, sold or stored.
  68.         || pTable->m_bRace == RACE_UNTRADEABLE))) // Cannot be traded or sold.
  69.         goto fail_return;
  70.  
  71.     if (pos >= HAVE_MAX
  72.         || count <= 0 || count > MAX_ITEM_COUNT)
  73.     {
  74.         errorCode = 2;
  75.         goto fail_return;
  76.     }
  77.  
  78.     // Buying from an NPC
  79.     if (type == 1)
  80.     {  
  81.         if (m_sItemArray[SLOT_MAX+pos].nNum != 0)
  82.         {
  83.             if (m_sItemArray[SLOT_MAX+pos].nNum != itemid)
  84.             {
  85.                 errorCode = 2;
  86.                 goto fail_return;
  87.             }
  88.  
  89.             if (!pTable->m_bCountable || count <= 0)
  90.             {
  91.                 errorCode = 2;
  92.                 goto fail_return;
  93.             }
  94.  
  95.             if (pTable->m_bCountable
  96.                 && (count + m_sItemArray[SLOT_MAX+pos].sCount) > MAX_ITEM_COUNT)
  97.             {
  98.                 errorCode = 4;
  99.                 goto fail_return;              
  100.             }
  101.         }
  102.  
  103.         transactionPrice = ((uint32)pTable->m_iBuyPrice * count);
  104.         if (!hasCoins(transactionPrice))
  105.         {
  106.             errorCode = 3;
  107.             goto fail_return;
  108.         }
  109.  
  110.         if (((pTable->m_sWeight * count) + m_sItemWeight) > m_sMaxWeight)
  111.         {
  112.             errorCode = 4;
  113.             goto fail_return;
  114.         }
  115.  
  116.         m_sItemArray[SLOT_MAX+pos].nNum = itemid;
  117.         m_sItemArray[SLOT_MAX+pos].sDuration = pTable->m_sDuration;
  118.         m_sItemArray[SLOT_MAX+pos].sCount += count;
  119.  
  120.         m_iGold -= transactionPrice;
  121.  
  122.         if (!pTable->m_bCountable)
  123.             m_sItemArray[SLOT_MAX+pos].nSerialNum = g_pMain->GenerateItemSerial();
  124.  
  125.         SetUserAbility(false);
  126.         SendItemWeight();
  127.     }
  128.     // Selling an item to an NPC
  129.     else
  130.     {
  131.         _ITEM_DATA *pItem = &m_sItemArray[SLOT_MAX+pos];
  132.         if (pItem->nNum != itemid
  133.             || pItem->isSealed() // need to check the error codes for these
  134.             || pItem->isRented())
  135.         {
  136.             errorCode = 2;
  137.             goto fail_return;
  138.         }
  139.  
  140.         if (pItem->sCount < count)
  141.         {
  142.             errorCode = 3;
  143.             goto fail_return;
  144.         }
  145.                 // pus item kontrolü
  146.         if(pTable->m_bKind == 255){
  147.             errorCode = 2;
  148.             goto fail_return;
  149.         }
  150.  
  151.         short oldDurability = pItem->sDuration;
  152.         if (pTable->m_iSellPrice != SellTypeFullPrice)
  153.             transactionPrice = ((pTable->m_iBuyPrice / 6) * count); // /6 is normal, /4 for prem/discount
  154.         else
  155.             transactionPrice = (pTable->m_iBuyPrice * count);
  156.  
  157.         GoldGain(transactionPrice, false);
  158.  
  159.         if (count >= pItem->sCount)
  160.             memset(pItem, 0, sizeof(_ITEM_DATA));
  161.         else
  162.             pItem->sCount -= count;
  163.  
  164.         SetUserAbility(false);
  165.         SendItemWeight();
  166.     }
  167.  
  168.     goto send_packet;
  169.  
  170. fail_return:
  171.     bSuccess = false;
  172.  
  173. send_packet:
  174.     result << bSuccess;
  175.     if (!bSuccess)
  176.         result << errorCode;
  177.     else
  178.         result << pTable->m_bSellingGroup << m_iGold << transactionPrice; // price bought or sold for
  179.     Send(&result);
  180. }
HKS bunu beğendi

__________________

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.

'You' are only your limit.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] |
İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
| skype | [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
PENTAGRAM isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
PENTAGRAM Üyemize Teşekkür Eden 2 Üyemiz:
HKS (20 Kasım 2017), muhtarbey (20 Kasım 2017)
Okunmamış 19 Kasım 2017, 23:34   #3 (permalink)
Yeni Üye

muhtarbey - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 19 Kasım 2017
Bulunduğu yer: Adana
Mesajlar: 38[+]
Kredi Bakiyeniz: 842
Ettiği teşekkür sayısı: 7
0 Mesaja 0 Kez Teşekkür Aldı

Standart Cevap: Npc'ye item satışını yasaklama hk.

Teşekkür ederim.İlginiz için
muhtarbey isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Geçerli forum için yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
PUS item alma hk byxox Çözülen Konular 2 19 Kasım 2017 07:30
1298 item upgrade bug fix Nero 1298 Paylaşım 12 15 Ekim 2017 11:35
NPC İtem Ekleme NieDieBu Çözülen Konular 3 09 Eylül 2017 15:16
Basılamayan item.... donz05 Çözülen Konular 11 01 Eylül 2017 11:05
toplu +9 +10 item silme enaz0369 Çözülen Konular 1 29 Temmuz 2017 13:22


Forum Site Hakkında
vBulletin® tarafından desteklenmektedir Versiyon 3.8.4
Telif hakkı ©2000 - 2018, Jelsoft Enterprises Ltd.

Sitemizdeki içerikler kopyalanmaya karşı DMCA ile korunmaktadır. DMCA.com Protection Status
İçerik sağlayıcı paylaşım sitelerinden biri olan kodevelopers.com Forum Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. kodevelopers.com hakkında yapılacak tüm hukuksal Şikayetler için webmaster@kodevelopers.com Mail adresimiz üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde kodevelopers.com yönetimi olarak tarafımızdan gereken işlemler yapılacak ve Avukatımız size dönüş yapacaktır.
© 2017 KO Developers ( by NERONLINEWORLD 2011/2013 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166

Search Engine Friendly URLs by vBSEO 3.6.0