Bravery Cape - Dracarys

  • Konuyu açan Konuyu açan elchikapu
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 2K
Kod:
Genişlet Daralt Kopyala
#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
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst