|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Нужна помощь грамотного рисовщика со спеллами в итеме (Необходимо создать символы со спеллами) |
Нужна помощь грамотного рисовщика со спеллами в итеме |
Здравствуйте дорогие завсегдатаи форума. Столкнулся с непосильной для меня задачей: Необходимо сделать малые символы которые бы при использовании добавляли бы в книгу заклинаний определённые спеллы, а при снятии/замене удалялись бы и эти спеллы....
Если это и для вас тоже непосильная задача, то интересно: Возможно ли вообще добавить в функции итема способность забывать определённые спеллы (в квайсе можно только выучить (триггер 6)). С меня +, и не только... Добавлено (02.09.2015, 11:55)
Сообщение # 1 написано 02.09.2015 в 11:55
|
На сколько мне известно, разучить нельзя. Хотя можешь поискать спелл "Забыть все таланты" (как-то так). Но, в принципе, я раньше интересовался этим заклинаниями и ему подобными, так ничего толкового ни в дбц, ни в базе не нашел, а значит прописка идет через ядро.
Сообщение # 2 написано 02.09.2015 в 12:11
|
Только с патчем в клиент.
Spell.dbc (и дочерние по необходимости), GlyphProperties.dbc. Фактически символы именно так и работают, только добавляют пассивные невидимые способности, модифицирующие характеристики других. |
Насчёт "разучивания" не уверен, обучение возможно точно (есть такой эффект).
Но даже если для "разучивания" придется лезть в ядро - скрипт получится совсем пустяковым. Хукануть к аура-фейду, проверять, изучена ли способность, и, если да, заставлять забыть ее. В ауру же вогнать нужные флаги, чтобы не слетала при смерти, не отображалась на аурабаре и в комбатлоге (образец можно подсмотреть у любого существующего глифа (GlyphProperties.dbc, колонка 2 (референс в Spell.dbc) ) ).
Сообщение # 5 написано 02.09.2015 в 18:57
|
Но даже если для "разучивания" придется лезть в ядро - скрипт получится совсем пустяковым. В ядро полезу, не проблема писал пару спеллов. Проблема в том что даже изи скрипт для меня тру т.к. я далёк от программирования и серве ещё не в той стадии развития чтобы нанимать спец. обученных людей. Был бы крайне признателен если бы вы помогли мне шаблоном) С меня плюсы по КД, для хороших людей не жалко) З.Ы. спасибо всем поучавствовавшим в теме, надеюсь проблема разрешится в дальнейшем. Но а пока-что работаю работаю изучаю... |
В spell_generic.cpp, вне определения какого-либо класса:
Код class spell_gen_NAME : public SpellScriptLoader { public: spell_gen_NAME() : SpellScriptLoader("spell_gen_NAME") { } class spell_gen_NAME_AuraScript : public AuraScript { PrepareAuraScript(spell_gen_NAME_AuraScript); void HandleFading(AuraEffect* const, AuraEffectHandleModes) { if(Player* player = GetTarget()->ToPlayer()) if(player->HasSpell(SPELL_ID) player->removeSpell(SPELL_ID); } void Register(void) OVERRIDE { AfterEffectRemove += AfterEffectRemoveFn(spell_gen_NAME_AuraScript::HandleFading, EFFECT_INDEX, SPELL_AURA_EFFECTTYPE, AURA_EFFECT_HANDLE_REAL); } }; AuraScript* GetAuraScript(void) const OVERRIDE { return new spell_gen_NAME_AuraScript(); } }; (Форматирование отступов отвратительное, т.к. все писалось в окне отправки сообщения -.-) В самый низ, внутрь загрузчика в том же файле (внутрь AddSC_generic_spell_scripts()) дописать: Код new spell_gen_NAME(); Подставить вместо: NAME <- название скрипта (обычно является названием спелла или его желаемым скриптовым эффектом). SPELL_ID <- ID заклинания, которое требуется забыть. INDEX <- цифру от 0 до 2 (оба включительно), которая отразит номер эффекта (от 1 до 3, соответственно), за рассеиванием которого следует следить. EFFECTTYPE <- Тип эффекта, которым является этот целевой эффект (надеюсь, понимаете, о чем идет речь). С ядром закончили, теперь база: В таблицу world.spell_script_names: spell_id <- ID ауры, которая, при рассеивании, должна вызывать скрипт (который заставляет забыть указанное заклинание). ScriptName <- spell_gen_NAME. Далее остается .дбц. Создавайте новые заклинания (одну ауру для символа и одно целевое заклинание, которому и нужно обучать). Обратите внимание, что скрипт лишь заставляет забыть указанную способность, обучение оной Вы должны сделать самостоятельно, используя другие spellEffect'ы через Spell.dbc. И не забудьте зарегистрировать новый символ в GlyphProperties.dbc, а также в Item.dbc, когда тот станет уже готовым предметом. Порядок действий получается примерно таким: Игрок использует символ. -> Символ, будучи установленным, набросил на игрока спадающую ИСКЛЮЧИТЕЛЬНО при удалении символа ауру. -> Аура в момент наложения, посредством вызова другого заклинания, обучила игрока третьему (целевому заклинанию). -> Игрок пользуется заклинанием по своему усмотрению и счастлив. Игрок заменяет/удаляет символ. -> Аура, которой обучил СИМВОЛ, рассеивается, вызывая скрипт из ядра, который проверяет, изучено ли игроком ЦЕЛЕВОЕ заклинание и, если да, заставляет его забыть таковое. -> Игрок не пользуется заклинанием и несчастен. П.С: Не заморачивайтесь с "плюсами". |
| |||
| |||