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

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 95
  • -Receive: 262
  • Hozzászólások: 428
  • Segített: 216
  • 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 targyID)
{
int dbszam = 0;
itertype(m_memberMap) it = m_memberMap.begin();

while (it!=m_memberMap.end())
{
if (!it->second.pCharacter)
{
++it;
continue;
}
if(it->second.pCharacter->CountSpecifyItem(targyID) > 0)
dbszam++;

++it;
}

if(GetNearMemberCount() <= dbszam)
{
itertype(m_memberMap) it2 = m_memberMap.begin();

while (it2!=m_memberMap.end())
{
if (!it2->second.pCharacter)
{
++it2;
continue;
}
if(it2->second.pCharacter->CountSpecifyItem(targyID) > 0)
it2->second.pCharacter->RemoveSpecifyItem(targyID);

++it2;
}
}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: 2017-11-26, 17:47:19 írta Distraught »