Szerző Téma: [C++] Tárgy ellenőrzés a csoport minden tagjának (+elvétel) questben  (Megtekintve 897 alkalommal)

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 101
  • -Receive: 306
  • Hozzászólások: 501
  • Segített: 260
  • GothBoiClique
    • Facebook
Sziasztok,
Ma írtam egy új funkciót, amivel pl. egy dungeonnál bemenetkor, le tudjuk ellenőriztetni, hogy minden csoporttagnak van-e a bizonyos tárgyból.
Lássunk is hozzá!
Nyissuk meg a party.h fájlt, majd keressünk rá: GetMemberMinLevel();
Alá másoljuk be ezt:
bool CheckItem(int targyID);
Mentsük el.

Nyissuk meg a party.cpp fájlt, ezután keressük meg a GetMemberMaxLevel függvényt.
Ha megvan, ezután a függvény után szúrjuk be ezt:
bool CParty::CheckItem(int itemID)
{
int count = 0;
itertype(m_memberMap) it = m_memberMap.begin();
while (it!=m_memberMap.end())
{
if (!it->second.pCharacter)
{
++it;
continue;
}
if(it->second.pCharacter->CountSpecifyItem(itemID) > 0)
count++;
++it;
}

if(GetNearMemberCount() <= count)
{
it = m_memberMap.begin();

while (it!=m_memberMap.end())
{
if (!it->second.pCharacter)
{
++it;
continue;
}
if(it->second.pCharacter->CountSpecifyItem(itemID) > 0)
it->second.pCharacter->RemoveSpecifyItem(itemID);
++it;
}
}
else
return false;
return true;
}
Mentsük el.

Ezután nyissuk meg a questlua_party.cpp fájlt.
Adjuk hozzá az alábbi függvényt:
int party_check_item(lua_State* L)
{
DWORD item_vnum;
if (lua_isnumber(L,1))
{
item_vnum = (DWORD)lua_tonumber(L, 1);
}
else
{
lua_pushboolean(L, 0);
return 1;
}
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

if (ch->GetParty())
lua_pushboolean(L,ch->GetParty()->CheckItem(item_vnum));
else
lua_pushboolean(L, 0);

return 1;
}

A végén keresd meg:
{ "is_in_dungeon",   party_is_in_dungeon   },
Alá új sorba:
{ "check_item", party_check_item },

Ezután questben az alábbi módon tudod használni:
party.check_item(TÁRGYID)
egy igaz vagy hamis értéket fog visszaadni

Egy példa:
if party.check_item(72702) then
d.join(207)
end
Ekkor megnézi, hogy minden tag leltárában van-e legalább egy darab 72702 ID-jű tárgy (jelen esetben szélcipő), és ha van, akkor elvesz mindenkitől egyet, majd beteleportálja őket.

Ha hasznodra válik, nyomj egy Thank you-t! :)
Ne másold máshova, vagy legalább jelöld, hogy tőlem származik!
« Utoljára szerkesztve: 2018-03-11, 20:26:41 írta Distraught »