Привет к сожалению никак, но я выложил исходники в
соседней теме вот пример краткий, если разберешься все довольно просто.
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
Пс лучше все проверить с телефона писал