2Finsternis:
Сорри за оффтоп, и назойливость, но не мог бы ты научить меня создавать заклинания? Мне нужны 2 заклинания телепортации.
|
Конкретно по телепортации:
1. Выбираешь свободный номер заклинания в Constants.d. Например 99.
const int SPL_TeleportOWCoastBase = 99;2. там же, чуть ниже в массиве spellFxInstanceNames прописываешь этому номеру нужный визуальный эффект из VisualFX. Т.е. вместо "Light" в 99 позиции пишешь "Teleport".
3. ещё в одном массиве прямо под ним spellFxAniLetters - пишешь в той же 99 позиции "HEA". Это анимация человека, как я понимаю. Т.е. подъем рук вверх.
4. в Text.d в массиве TXT_SPELLS в той же 99 позиции пишешь, например "Телепорт в лесной лагерь"
5. в Spell_ProcessMana.d вставляешь
[pre]
if (activeSpell == SPL_TeleportOWCoastBase) {
return Spell_Logic_TeleportOWCoastBase (manaInvested);
};
[/pre]
6. В Spell_Teleport_Alle.d, где прописаны все телепорты:
[pre]
func int Spell_Logic_TeleportOWCoastBase(var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll (self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)) {
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_Teleport) {
return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
};
func void Spell_Cast_TeleportOWCoastBase () {
B_PrintTeleportTooFarAway (OldWorld_Zen);
if (Npc_GetActiveSpellIsScroll (self)) {
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
} else {
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Teleport;
};
AI_Teleport (self, "WP_COAST_FOREST_59"); // точка назначения
AI_PlayAni (self, "T_HEASHOOT_2_STAND");
};
[/pre]
7. и там же в функцию Spell_Cast_Teleport():
[pre]
if (Npc_GetActiveSpell (self) == SPL_TeleportOWCoastBase) {
Spell_Cast_TeleportOWCoastBase ();
};
[/pre]
8. Создаешь руну:
[pre]
const int Value_Ru_TeleportOWCoastBase = 500;
instance ItRu_TeleportOWCoastBase(C_Item)
{
name = NAME_Rune;
mainflag = ITEM_KAT_RUNE;
flags = 0;
value = Value_Ru_TeleportOWCoastBase;
visual = "ItRu_Water16.3DS";
material = MAT_STONE;
spell = SPL_TeleportOWCoastBase;
wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER";
description = "Телепорт в лесной лагерь";
text[1] = NAME_Manakosten;
count[1] = SPL_Cost_Teleport;
text[5] = NAME_Value;
count[5] = value;
};
[/pre]
По поводу visual. Либо бери картинку от любой другой руны, либо неиспользованные руны воды/Белиара. В последнем случае надо править текстуру.
Вот и все ;)