Sziasztok.
Mostanra sikerült ezt a transmutation systemet hibamentesen beraknom.
Abban kérném a segítségeteket, hogy offlineshopban hogyan tudnám letiltani ezeket az itemeket?
Céhraktárban és kereskedőházban egy quest funkció segítségével sikerült letiltanom ezeket az itemeket.
Funkciók:
int item_is_transmulated(lua_State* L)
{
CQuestManager & qMgr = CQuestManager::instance();
LPITEM pkItem = qMgr.GetCurrentItem();
if (pkItem)
{
if (pkItem->GetTransmutation() > 0)
lua_pushboolean(L, true);
else
lua_pushboolean(L, false);
}
else
lua_pushboolean(L, false);
return 1;
}
int item_set_transmutation(lua_State* L)
{
CQuestManager & qMgr = CQuestManager::instance();
LPITEM pkItem = qMgr.GetCurrentItem();
if ((pkItem) && (lua_isnumber(L, 1)))
{
DWORD dwTransmutation = (DWORD) lua_tonumber(L, 1);
pkItem->SetTransmutation(dwTransmutation);
}
return 0;
}
int item_get_transmutation(lua_State* L)
{
CQuestManager & qMgr = CQuestManager::instance();
LPITEM pkItem = qMgr.GetCurrentItem();
if (pkItem)
lua_pushnumber(L, pkItem->GetTransmutation());
else
lua_pushnumber(L, 0);
return 1;
}
Questben így nézz ki a tiltás:
if item.is_transmulated() then
return false
Nos, én ez alapján próbálkoztam offshopban letiltani ezeket az itemeket.
Megkerestem azt a részt, ahol letiltja, hogy felszerelt itemeket ne lehessen betenni.
offlineshop_manager.cpp-ben találtam ezen a funkción belül:
void COfflineShopManager::AddItem(LPCHARACTER ch, BYTE bDisplayPos, BYTE bPos, long long llPrice)
Ez a rész:
if (pkItem->IsEquipped())
{
ch->ChatPacket(CHAT_TYPE_INFO, "Felszerelt targyat nem adhatsz el!");
return;
}
Ez alá próbáltam hozzáadni a quest funkciók alapján ezt:
if (pkItem->GetTransmutation() > 0)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Transmutált tárgyat nem adhatsz el.");
return;
}
Pontosabban ezt a részt vettem alapul ahogy a questeknél is:
int item_is_transmulated(lua_State* L)
{
CQuestManager & qMgr = CQuestManager::instance();
LPITEM pkItem = qMgr.GetCurrentItem();
if (pkItem)
{
if (pkItem->GetTransmutation() > 0)
lua_pushboolean(L, true);
else
lua_pushboolean(L, false);
}
else
lua_pushboolean(L, false);
return 1;
}
De, ezzel nem sikerült letiltanom ezeket az itemeket.
Ha, valakinek van ötlete és megosztaná velem azt megköszönném.
Sziasztok.