[C++, SQL] Multivendor
Před nějakým časem jsem se začal znova šťourat v tc. Mám tu pár scriptů, které zatím slouží pro mou vlastní potřebu, ale rozhodl jsem se, že se o jeden z nich podělím.
Vzhledem k mému dřívějšímu působení na Deffenderu BG jsem si dost čast kladl otázku, kam mám sakra nacpat všechny ty vendory. No, s křížkem po funuse, ale přece - přišel jsem na řešení.
Jedná se o multi vendora, ve zkratce npc, které může obsahovat desítky vendorů, které lze přes jednoduché menu otevřít.
Je to funkční na stávajících revizích tc.
Snad na nic nezapomenu, kdyby vám to nejelo, pořešíme to.
Co potřebujete
Vytvořit npc s npcflag 129 a nastavit scriptname na vendor_multi
Nastavit VŠEM obyčejným vendorům ve hře npcflag 129 a scriptname na vendor_general
Vědět jak se přidávají custom creature scripty do ScriptLoaderu
Sql - nahrát do world db, vysvětlím později
C++ - řádky s + přidat (bez + )
Player.h
Player.cpp
Teď funkci bool Player::BuyItemFromVendorSlot(uint64 vendorguid, uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot) upravte přibližně nějak takhle. Nemám po ruce originální kód.
a v té samé funkci ještě
předělejte na
Worldsession.h
ItemHandler.cpp
za funkci void WorldSession::SendListInventory(uint64 vendorGuid) přidejte
ScriptMgr.cpp
Do projektu game / do cmake
CustomVendor.h
A CustomVendor.cpp
No a nakonec potřebujete scripty npcček:
vendor_multi.cpp
a vendor_general.cpp
A teď ještě v rychlosti vysvětlím databázovou část; je to trochu nepraktický, ale nechtělo se mi to předělávat, když jsem zjistil jak blbě se to plní.