Bravery Cape - Dracarys

Kod:
#ifdef __RENEWAL_BRAVE_CAPE__
struct FuncAggregateMonsterNew
{
    LPCHARACTER m_ch;
    int m_dwRange;
    FuncAggregateMonsterNew(LPCHARACTER ch, int range) : m_ch(ch), m_dwRange(range){}
    void operator()(LPENTITY ent)
    {
        if (ent->IsType(ENTITY_CHARACTER))
        {
            LPCHARACTER ch = (LPCHARACTER)ent;
            if (!ch->IsMonster() || ch->GetVictim())
                return;
            if (DISTANCE_APPROX(ch->GetX() - m_ch->GetX(), ch->GetY() - m_ch->GetY()) < m_dwRange)
            {
                if (ch->CanBeginFight())
                    ch->BeginFight(m_ch);
            }
        }
    }
};
EVENTFUNC(brave_cape_event)
{
    char_event_info* info = dynamic_cast<char_event_info*>(event->info);
    if (info == NULL)
    {
        sys_err("<brave_cape_event> <Factor> Null pointer");
        return 0;
    }
    LPCHARACTER    ch = info->ch;
    if (ch == NULL)
        return 0;
    if (!ch->FindAffect(AFFECT_BRAVE_CAPE))
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Brave affect is done loop event closed.");
        ch->m_pkBraveCapeEvent = NULL;
        return 0;
    }
    LPSECTREE pSec = ch->GetSectree();
    if (pSec)
    {
        FuncAggregateMonsterNew f(ch, ch->GetProtectTime("brave_cape_range"));
        pSec->ForEachAround(f);
    }
    return PASSES_PER_SEC(ch->GetProtectTime("brave_cape_time"));
}
void CHARACTER::GetBraveCapeCMDCompare(const char* c_pszArgument)
{
    std::vector<std::string> vecArgs;
    split_argument(c_pszArgument, vecArgs);
    if (vecArgs.size() < 2) { return; }
    else if (vecArgs[1] == "active")
    {
        if (vecArgs.size() < 4) { return; }
        if (!FindAffect(AFFECT_BRAVE_CAPE))
        {
            ChatPacket(CHAT_TYPE_INFO, "You don't has brave cape affect.");
            return;
        }
        if (m_pkBraveCapeEvent)
        {
            ChatPacket(CHAT_TYPE_INFO, "Already brave cape working..");
            return;
        }
        const std::vector<WORD> m_dwBlockedMapIdx = { 1, 21, 41 };
        if (std::find(m_dwBlockedMapIdx.begin(), m_dwBlockedMapIdx.end(), GetMapIndex()) != m_dwBlockedMapIdx.end())
        {
            ChatPacket(CHAT_TYPE_INFO, "You can't use brave cape on this map!");
            return;
        }

        int loopTime, eventRange;
        if (!str_to_number(loopTime, vecArgs[2].c_str()) || !str_to_number(eventRange, vecArgs[3].c_str()))
            return;

        if (loopTime < 2 || loopTime > 60 || eventRange < 1000 || eventRange > 15000)
            return;

        SetProtectTime("brave_cape_time", loopTime);
        SetProtectTime("brave_cape_range", eventRange);

        char_event_info* info = AllocEventInfo<char_event_info>();
        info->ch = this;
        m_pkBraveCapeEvent = event_create(brave_cape_event, info, 0);
        ChatPacket(CHAT_TYPE_COMMAND, "SetBraveCapeStatus 1");
        ChatPacket(CHAT_TYPE_INFO, "Brave cape event started..");

    }
    else if (vecArgs[1] == "deactive")
    {
        if (!m_pkBraveCapeEvent)
        {
            ChatPacket(CHAT_TYPE_INFO, "You don't has brave cape loop event!");
            return;
        }
        SetProtectTime("brave_cape_time", 0);
        SetProtectTime("brave_cape_range", 0);
        event_cancel(&m_pkBraveCapeEvent);
        m_pkBraveCapeEvent = NULL;
        ChatPacket(CHAT_TYPE_INFO, "Brave cape event closed..");
        ChatPacket(CHAT_TYPE_COMMAND, "SetBraveCapeStatus 0");
    }
}
#endif

Game Build'de bu kod blogu tanımsız hatası veriyor

SetProtectTime("brave_cape_time", 0);
SetProtectTime("brave_cape_range", 0);
event_cancel(&m_pkBraveCapeEvent);
m_pkBraveCapeEvent = NULL;
ChatPacket(CHAT_TYPE_INFO, "Brave cape event closed..");
ChatPacket(CHAT_TYPE_COMMAND, "SetBraveCapeStatus 0");

buralar için
 
Paylaşım için teşekkürler
 
Geri
Üst