Merhaba event manager sistemini sorunsuz bir şekilde ekledim diğer etkinliklerin hepsi sorunsuz çalışıyo fakat 2x metin ve 2x boss eventlerini bir türlü çalıştıramadım value3 ede 100 yazıyorum ilgili kod blogu bu sanırım acemiyim şans faktörünü nasıl kaldırabilirim yardımcı olursanız sevinirim .
Kod:
void CHARACTER_MANAGER::CheckEventForDrop(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM>& vec_item)
{
const BYTE killerEmpire = pkKiller->GetEmpire();
const TEventManagerData* eventPtr = NULL;
LPITEM rewardItem = NULL;
if (pkChr->IsStone())
{
eventPtr = CheckEventIsActive(DOUBLE_METIN_LOOT_EVENT, killerEmpire);
if (eventPtr)
{
const int prob = number(1, 100);
const int success_prob = eventPtr->value[3];
if (prob < success_prob)
{
std::vector<LPITEM> m_cache;
for (const auto& vItem : vec_item)
{
rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
if (rewardItem) m_cache.emplace_back(rewardItem);
}
for (const auto& rItem : m_cache)
vec_item.emplace_back(rItem);
}
}
}
else if (pkChr->GetMobRank() >= MOB_RANK_BOSS)
{
eventPtr = CheckEventIsActive(DOUBLE_BOSS_LOOT_EVENT, killerEmpire);
if (eventPtr)
{
const int prob = number(1, 100);
const int success_prob = eventPtr->value[3];
if (prob < success_prob)
{
std::vector<LPITEM> m_cache;
for (const auto& vItem : vec_item)
{
rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
if (rewardItem) m_cache.emplace_back(rewardItem);
}
for (const auto& rItem : m_cache)
vec_item.emplace_back(rItem);
}
}
}