Здравствуйте, гость ( Вход | Регистрация )

> add necromancy spell to spellbook
Amaterasu
сообщение 21.8.2024, 11:35
Сообщение #1


*

Registred
Сообщений: 8
Регистрация: 21.8.2024
Группа: Пользователи
Наличность: 0
Пользователь №: 20.808
Возраст: 45



нашел в вики вот такое описание у спеллбуки

_In older sphere versions, MOREX, MOREY, and MOREZ could be set to add additional spells (necro, etc), but recently these concepts may have been removed...

предполагаю что 51.a достаточно старая версия и такая возможность есть, но методом подбора ничего добавить не вышло, мб кто знает как это должно работать?



Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
keni
сообщение 15.10.2024, 15:04
Сообщение #2


**

Группа: Пользователи
Наличность: 0
Пользователь №: 6.699
Возраст: 10



Привет к сожалению никак, но я выложил исходники в соседней теме вот пример краткий, если разберешься все довольно просто.


ccharskill.cpp
Код

// Метод для проверки возможности использования некромантских заклинаний.
bool CChar::CanUseNecromancerMagic() const
{
    // Проверяем, дохлый вы или нет, и антимагию региона.
    return !IsStat(STATF_DEAD) && !m_pArea->IsFlag(REGION_ANTIMAGIC_ALL);
}


метод Spell_CanCast
Код

bool CChar::Spell_CanCast(SPELL_TYPE spell, bool fTest, CObjBase* pSrc, bool fFailMsg)
{
    
    if (g_Serv.m_SpellDefs[spell]->m_bIsNecro)
    {
        if (!CanUseNecromancerMagic()) //метод который выше приложил чекаем, на состояние и регион
        {
            if (fFailMsg)
                SysMessage("You can't cast necromantic spells in this area or state.");
            return false;
        }
    }

  
    if (spell <= SPELL_NONE || pSrc == NULL ||
        !g_Serv.m_SpellDefs.IsValidIndex(spell) ||
        g_Serv.m_SpellDefs[spell]->IsSpellType(SPELLFLAG_DISABLED))
    {
        return false;
    }

    int mana = g_Serv.m_SpellDefs[spell]->m_wManaUse;
    if (mana <= 0)
        mana = Spell_ManaReq[(spell - SPELL_Clumsy) / 8];

    // Проверка на наличие маны
    if (m_StatMana < mana)
    {
        if (fFailMsg)
            SysMessage("You lack sufficient mana for this spell");
        return false;
    }

    if (!fTest && mana) // Уменьшаем ману
    {
        UpdateStats(STAT_INT, -mana);
    }

    // Проверка на наличие необходимых реагентов
    if (g_Serv.m_fReagentsRequired)
    {
        CItemContainer* pPack = GetPack();
        if (pPack)
        {
            const TCHAR* pszRegs = g_Serv.m_SpellDefs[spell]->m_sReags;
            while (pszRegs[0])
            {
                if (*pszRegs == ',') pszRegs++;
                const TCHAR* pRegPrv = pszRegs;
                if (pPack->ContentConsume(GetResourceItem(const_cast<TCHAR*&>(pszRegs)), 1, fTest))
                {
                    if (fFailMsg)
                        SysMessagef("You lack reagents for this spell (%s)", pRegPrv);
                    return false;
                }
                if (pRegPrv == pszRegs) break;
            }
        }
    }
    return true;
}


и сам спелл выводит сообщение тупо о том что закастованно, там уже эффекты из других возьмешь потыкаешь

Код

bool CChar::CastNecromancerSpell(SPELL_TYPE spell)
{
    if (!Spell_CanCast(spell, false, this, true))
        return false;

    
    SysMessage("SKILL USED NECRO"); //мессага

    return true;
}

Пс код не полный там еще должны быть удаления эффекта итд но по идее и такой заведется, проверок на привелегию нет поэтому он даж на гме будет как на обычном чаре кастоваться но можешь по аналогии добавить/убрать



И если память не изменяет докидываешь в сфертеблс магию свою,а через дефс иконку там опять же разберешься.
Либо возьми какой нибудь unused spell потипу Earthquake, или Hallucination

Пс лучше все проверить с телефона писал


--------------------
Ryan John Waldecker 1987 -2007 best friend forever

https://uoarena.ru/ FUN PVP 51a ORION GG by BangBang
Sphere 51 Open Source
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Amaterasu   add necromancy spell to spellbook   21.8.2024, 11:35
SusaniN   нашел в вики вот такое описание у спеллбуки _In ...   14.10.2024, 23:20
keni   Вообще понял что слишком абстрактно написал, доеха...   15.10.2024, 21:00
Amaterasu   Вообще понял что слишком абстрактно написал, доех...   19.10.2024, 13:07
keni   спасибо да, в исходниках давно копаюсь(ибо кажды...   21.10.2024, 12:07
Amaterasu   Забавно что кому то спустя столько лет еще интере...   22.10.2024, 18:33
keni   спасибо за приглашение) но не могу Вот бы найти ...   23.10.2024, 1:44
Amaterasu   Там бесполезно, но если у тебя есть какие то вопр...   23.10.2024, 21:12
SusaniN   ну почему, я просто не усидчивый человек а так ес...   3.11.2024, 3:48
Amaterasu   Некромантию можно скриптами реализовать, даже на ...   8.11.2024, 12:33
SusaniN   Рили?!! а я думал ток циферки менять можн...   13.12.2024, 0:08
Amaterasu   Так Написали же, пишешь предмет: бук оф некроманс...   13.12.2024, 21:23
SusaniN   Так написал же, что хотел именно посмотреть как э...   20.12.2024, 21:44
Sirocco   У меня исходники появились слишком поздно... но ра...   21.10.2024, 16:47
Sirocco   да я не про 51 сферу. но не много лучше - 55i... н...   22.10.2024, 19:09
keni   А если как на абусе то тут немного по другому нужн...   4.11.2024, 23:32


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 1.9.2025, 10:23
Designed by Nickostyle