- Регистрация
- 26 Мар 2004
- Сообщения
- 2.000
- Благодарности
- 968
- Баллы
- 295
- Первое сообщение
- #1
В игре существует несколько типов заклинания которые фактически являясь одинаковыми используют разные спеллы:
добавлена функция func string Spell_GetName(var int spellID, var C_ITEM spellItem) для замены надписи на экране при активации/выборе спелла.
спасибо за патч Slavemaster
- заклинания лечения
- заклинания телепортации
- заклинания превращения
- заклинания вызова
добавлена функция func string Spell_GetName(var int spellID, var C_ITEM spellItem) для замены надписи на экране при активации/выборе спелла.
Daedalus:
func string Spell_GetName(var int spellID, var C_ITEM spellItem)
{
var string msg;
if spellItem.FLAGS & ITEM_MULTI // это свиток
{
msg = Str_Format("%s (%s)",spellItem.description,Name_MageScroll);
// можно добавить кол-во имеющихся свитков или что то еще
}
else // это руна
{
msg = spellItem.description; // просто выводим название руны
};
return msg;
};
C++:namespace NAMESPACE { int __cdecl Npc_GetSpellItem() { oCNpc* npc; ZARGS(npc); oCItem* spellItem = nullptr; if (npc && npc->mag_book && npc->mag_book->spellnr >= 0 && npc->mag_book->spellnr < npc->mag_book->spellitems.GetNum()) spellItem = npc->mag_book->spellitems[npc->mag_book->spellnr]; ZRETURN(spellItem); return false; } ZEXTERNAL(oCItem*, Npc_GetSpellItem, oCNpc*); zSTRING* __fastcall Hook_oCSpell_GetName(oCSpell*, void*, zSTRING*); Hook<zSTRING*(__thiscall*)(oCSpell*, zSTRING*)> Ivk_oCSpell_GetName(ZENFOR(0x0047E1B0, 0x00488AE0, 0x00484E90, 0x004864B0), &Hook_oCSpell_GetName, HookMode::Patch); zSTRING* __fastcall Hook_oCSpell_GetName(oCSpell* spell, void* vtable, zSTRING* spellName) { static int funcIndex = parser->GetIndex("Spell_GetName"); spellName = Ivk_oCSpell_GetName(spell, spellName); if (funcIndex >= 0 && player && player->mag_book) for (int i = 0; i < player->mag_book->spells.GetNum(); i++) if (player->mag_book->spells[i] == spell) { *spellName = CallParser<zSTRING>(parser, funcIndex, spell->spellID, player->mag_book->spellitems[i]); break; } return spellName; } }
спасибо за патч Slavemaster
Вложения
Последнее редактирование: