Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Документация (https://forum.zone-game.info/forumdisplay.php?f=76)
-   -   Компиляция и настройка ScriptDev2 (https://forum.zone-game.info/showthread.php?t=3418)

PROGRAMMATOR 15.04.2009 00:59

Компиляция и настройка ScriptDev2
 
Продолжаем обучение компиляции сервера MaNGOS. На этот раз речь пойдет о его составляющей - ScriptDev2. MaNGOS успешно работает без этого продукта, но как бы сказать - не полноценно. Ведь мобы, которые делают дальние атаки магией, без этого продукта будут бежать к Вам и бить в упор, что явно не как на официальном сервере. Ну, что же, продолжим.

После того как Вы все скачали, мы можем продолжать двигаться дальше, а дальше нам нужно подготовить исходники ScriptDev2 к компиляции. Для этого, создайте папку ScriptDev2 в директории src\bindings исходников MaNGOS и переместите туда скаченные с SVN'а файлы ScriptDev2. Это будет выглядеть так:
Цитата:

c:\mangos\src\bindings\ScriptDev2\
Теперь перейдите в каталог .git\info и откройте файл exclude, выглядит это все таким образом:
Цитата:

c:\mangos\.git\info\exclude
Открываете его любым текстовым редактором и добавляете исключения для Git'а в виде таких строк:
Цитата:

src/bindings/ScriptDev2/*
bin/*
Все это дело сохраняете и переходим к компиляции исходников ScriptDev2. Запускаете файл scriptVC90.sln который находится в следующей директории:
Цитата:

c:\mangos\src\bindings\ScriptDev2\
Подробнее показано на рисунке ниже.

http://img.zone-game.info/image-F4AD_49E4FD5D.jpg

И перед Вами снова открывается Visual Studio. Действия перед компиляцией ничем не отличаются от тех, что мы проделали с проектом MaNGOS в статье Компиляция и базовая настройка сервера MaNGOS (3.0.9). Так что вернитесь в ту статью, и посмотрите как нужно устанавливать настройки проекта и как его после этого компилировать.

Компиляция ScriptDev2 занимает куда меньше времени, чем аналогичный процесс с исходниками MaNGOS. Всего несколько секунд и окно Вывода сообщает нам о том, что компиляция завершена.

http://img.zone-game.info/image-A24A_49E4FEFE.jpg

Конечно, могут быть и ошибки, особенно когда читаете не внимательно и делаете все по своему. Так что если у Вас ошибки, то постарайтесь прочитать каждое слово в этой статье и попытайтесь понять суть написанного. Если же все как у меня, то я Вас поздравляю!

Переходим к установке ScriptDev2 на сервер MaNGOS, все что Вы только что скомпилировали, лежит в каталоге bin\Win32_Release исходников MaNGOS.
Цитата:

c:\mangos\bin\Win32_Release\
Переходим в этот каталог и что мы видим? А видим мы, что все как и было, но это только так кажется. На самом то деле изменился размер .dll файла MaNGOSScript.dll и притом в несколько раз! Вот этот файл нам нужно скопировать в сервер MaNGOS который мы установили по пути:
Цитата:

c:\server_mangos\
При вопросе о замене файла нажмите да. Дальше необходимо поместить в сервер и конфигурационный файл scriptdev2.conf.dist.in который находится в директории с исходниками ScriptDev2:
Цитата:

c:\mangos\src\bindings\ScriptDev2\
Не забудьте переименовать файл в scriptdev2.conf. Теперь откройте и отредактируйте под свои нужды следующую строку:

Цитата:

ScriptDev2DatabaseInfo = "127.0.0.1;3306;ваш_логин;ваш_пароль;scriptdev2"
  • ваш_логин - напоминаю, что это логин указанный при установке MySQL
  • ваш_пароль - напоминаю, что это пароль указанный при установке MySQL

После проделанного осталось лишь создать базу данных scriptdev2 и заполнить ее данными. Как Вы помните в статье Компиляция и базовая настройка сервера MaNGOS (3.0.9) я приводил пример как создать базу данных, так что описывать повторно этот процесс я не буду. Но немного проясню ситуацию с заполнением данными этой базы. В директории:

Цитата:

c:\mangos\src\bindings\ScriptDev2\sql\
Содержатся следующие скрипты:
  • mangos_scriptname_full.sql - заливаете в базу данных mangos
  • scriptdev2_create_structure.sql - заливаете в базу данных scriptdev2
  • scriptdev2_script_full.sql - заливаете в базу данных scriptdev2

И только после этого переходим к установке SD2-ACID. В скаченных с SVN'а файлах находится два скрипта:
  • 008_acid_905_mangos.sql - заливаете в базу данных mangos
  • 008_acid_905_scriptdev.sql - заливаете в базу данных scriptdev2

И последний шаг - это русификация скриптов. Для этого просто залейте файл rudb_r28_scriptdev2.sql, который Вы скачали с SVN'а RuDB, в базу данных scriptdev2. Все, теперь можно сказать, что Вы научились собирать полную версию сервера MaNGOS. Надеюсь это Вам пригодится и я не зря потратил свое время на написание этой статьи.

Если остались вопросы, то не стесняемся, задаем их ;)

Копирование статьи без моего письменного разрешения - запрещено!

Zone-Game 15.04.2009 04:36

Ответ: Компиляция и настройка ScriptDev2
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 30864)
[*]Русификация диалогов SD2-ACID доступна для скачивания с SVN'а разработчиков RuDB. Важно! Русификацию нужно ставить после установки основной базы SD2-ACID

Цитата:

https://rudb.svn.sourceforge.net/svnroot/rudb/тело/scriptdev2 - что бы меньше вопросов потом было :rolleyes:
PROGRAMMATOR, не заходит через прямую ссылку.:face2:

PROGRAMMATOR 15.04.2009 04:43

Ответ: Компиляция и настройка ScriptDev2
 
Исправил статью, я вначале не обратил внимания, что не открывает. Все из-за русских букв.

Sava 18.04.2009 19:42

Ответ: Компиляция и настройка ScriptDev2
 
Ну и как же без исходного кода ScriptDev2, его можно и даже нужно скачивать с SVN'а разработчиков

Не могли бы вы сказать что именно необходимо взять отсюда.

Ferse 07.07.2009 12:43

Ответ: Компиляция и настройка ScriptDev2
 
Цитата:

Сообщение от Sava (Сообщение 31147)
Ну и как же без исходного кода ScriptDev2, его можно и даже нужно скачивать с SVN'а разработчиков

Не могли бы вы сказать что именно необходимо взять отсюда.

заходи по этому адресу http://scriptdev2.svn.sourceforge.net/ и внизу жми на Download......... и сразу всё скачаешь.

Ferse 11.07.2009 00:54

Ответ: Компиляция и настройка ScriptDev2
 
Цитата:

Сообщение от Ferse (Сообщение 35813)
заходи по этому адресу http://scriptdev2.svn.sourceforge.net/ и внизу жми на Download......... и сразу всё скачаешь.

правда оно багнутое

Aroled 03.03.2010 20:23

Re: Компиляция и настройка ScriptDev2
 
при компиляции вілазить такой лог
Цитата:

1>------ Построение начато: проект: ScriptDev2, Конфигурация: Release Win32 ------
1>Extracting revision
1>Системе не удается найти указанный путь.
1>Project : error PRJ0019: Инструмент вернул код ошибки из "Extracting revision"
1>Журнал построения был сохранен в "file://g:\подготовка\КОМПИЛЯЦИИ\src\bindings\scriptdev2\V C90\ScriptDev2__Win32_Release\BuildLog.htm"
1>ScriptDev2 - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
с чем єто может бть связано.
Да кстати
Цитата:

Теперь перейдите в каталог .git\info и откройте файл exclude, выглядит это все таким образом:
Цитата:c:\mangos\.git\info\exclude
у меня нет такого каталога - что делать.

Санитар 03.03.2010 23:29

Re: Компиляция и настройка ScriptDev2
 
Попытался скомпиллить scriptdev2, скачанный сегодня с https://scriptdev2.svn.sourceforge.n...ot/scriptdev2/ черепахой.При построении Ms VC++ 2008 выдает вот это:

1>------ Построение начато: проект: ScriptDev2, Конфигурация: Release Win32 ------
1>Extracting revision
1>Компиляция...
1>precompiled.cpp
1>c:\mangos-mangos-b55708e\src\bindings\scriptdev2\include\../ScriptMgr.h(58) : error C2061: синтаксическая ошибка: идентификатор "SpellEffectIndex"
1>c:\mangos-mangos-b55708e\src\bindings\scriptdev2\include\../ScriptMgr.h(59) : error C2061: синтаксическая ошибка: идентификатор "SpellEffectIndex"
1>c:\mangos-mangos-b55708e\src\bindings\scriptdev2\include\../ScriptMgr.h(60) : error C2061: синтаксическая ошибка: идентификатор "SpellEffectIndex"
1>Журнал построения был сохранен в "file://c:\mangos-mangos-b55708e\src\bindings\ScriptDev2\VC90\ScriptDev2__W in32_Release\BuildLog.htm"
1>ScriptDev2 - ошибок 3, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

В чем дело?

Perfecto 04.03.2010 08:19

Re: Компиляция и настройка ScriptDev2
 
Aroled просто этот каталог скрытый.
такие проблемы возможны при компиляции c разных VS или если мангос был скомпилен на debug, a scriptdev2 на release (или наоборот)
Еще также перед компиляцией мангоса нужно наложить патч MaNGOS-9483-ScriptDev2.patch (9483 число может быть другим, это ревизия когда последний раз этот файл изменялся), находится этот патч в директории /src/bindings/scriptdev2/patches/

Warrex 22.03.2010 11:32

Re: Компиляция и настройка ScriptDev2
 
при компиляции ScriptDev2 выдает ошибки ввиде:
PHP код:

1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_salramm(void)" (?AddSC_boss_salramm@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_instance_culling_of_stratholme(void)" (?AddSC_instance_culling_of_stratholme@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_meathook(void)" (?AddSC_boss_meathook@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_malganis(void)" (?AddSC_boss_malganis@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_culling_of_stratholme(void)" (?AddSC_culling_of_stratholme@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_lord_epoch(void)" (?AddSC_boss_lord_epoch@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_instance_halls_of_reflection(void)" (?AddSC_instance_halls_of_reflection@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_scourgelord_tirannus(void)" (?AddSC_boss_scourgelord_tirannus@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_instance_pit_of_saron(void)" (?AddSC_instance_pit_of_saron@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_instance_forge_of_souls(void)" (?AddSC_instance_forge_of_souls@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_icecrown_teleporter(void)" (?AddSC_icecrown_teleporter@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_icecrown_spire(void)" (?AddSC_icecrown_spire@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_instance_icecrown_spire(void)" (?AddSC_instance_icecrown_spire@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_lavanthor(void)" (?AddSC_boss_lavanthor@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddS[/QUOTE][/QUOTE]cripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_zuramat(void)" (?AddSC_boss_zuramat@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_ichoron(void)" (?AddSC_boss_ichoron@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_xevozz(void)" (?AddSC_boss_xevozz@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_erekem(void)" (?AddSC_boss_erekem@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_moragg(void)" (?AddSC_boss_moragg@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_cyanigosa(void)" (?AddSC_boss_cyanigosa@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_dred(void)" (?AddSC_boss_dred@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_instance_trial_of_the_crusader(void)" (?AddSC_instance_trial_of_the_crusader@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_twin_valkyr(void)" (?AddSC_twin_valkyr@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_boss_jaraxxus(void)" (?AddSC_boss_jaraxxus@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>ScriptLoader.obj error LNK2019ссылка на неразрешенный внешний символ "void __cdecl AddSC_northrend_beasts(void)" (?AddSC_northrend_beasts@@YAXXZв функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ)
1>..\..\..\..\bin\win32_release/MaNGOSScript.dll fatal error LNK112025 неразрешенных внешних элементов 

Нимогу разобраться в чем проблемма. В С++ еще толком неразбераюсь только осваиваю. Я так понял проблемма вроде в ScriptLoader.cpp только непойму в чем именно!!! Подскажите пожалуйста!

Arsenn 22.03.2010 22:05

Re: Компиляция и настройка ScriptDev2
 
точно незнаю куда писать, поэтому напишу сюда. насколько я понял, чтобы починить какой нить скил нужно скачать патч на этот скилл и скомпилировать с ним ядро.... как то так...
вот у меня есть патч
Цитата:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index eab30ba..f20a287 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -7362,8 +7362,12 @@ void Aura::PeriodicDummyTick()
case SPELLFAMILY_MAGE:
{
// Mirror Image
-// if (spell->Id == 55342)
-// return;
+ if (spell->Id == 55342)
+ {
+ // Set name of summons to name of caster
+ m_target->CastSpell((Unit *)NULL, m_spellProto->EffectTriggerSpell[m_effIndex], true);
+ m_isPeriodic = false;
+ }
break;
}
case SPELLFAMILY_DRUID:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 58384f4..371a634 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -2068,6 +2068,15 @@ void Spell::EffectTriggerSpell(uint32 effIndex)
// special cases
switch(triggered_spell_id)
{
+ // Mirror Image
+ case 58832:
+ {
+ // Glyph of Mirror Image
+ if (m_caster->HasAura(63093))
+ m_caster->CastSpell(m_caster, 65047, true); // Mirror Image
+
+ break;
+ }
// Vanish (not exist)
case 18461:
{
@@ -3852,6 +3861,16 @@ void Spell::EffectSummonWild(uint32 i, uint32 forceFaction)
summon->SetUInt32Value(UNIT_CREATED_BY_SPELL, m_spellInfo->Id);
summon->SetCreatorGUID(m_caster->GetGUID());

+ //Mirror image
+ if(creature_entry == 31216)
+ {
+ summon->SetLevel(m_caster->getLevel());
+ summon->SetHealth(28 + 30*m_caster->getLevel());
+ summon->setPowerType(POWER_MANA);
+ summon->SetPower(POWER_MANA, 28 + 30*m_caster->getLevel());
+ summon->SetPvP(true);
+ }
+
if(forceFaction)
summon->setFaction(forceFaction);
}diff --git a/sql/evo-X Update/Spells/evo_X_Spell1_mangos.sql b/sql/evo-X Update/Spells/evo_X_Spell1_mangos.sql
new file mode 100644
index 0000000..d908b77
--- /dev/null
+++ b/sql/evo-X Update/Spells/evo_X_Spell1_mangos.sql
@@ -0,0 +1,5 @@
+DELETE FROM `spell_script_target` WHERE `entry` IN (58836);
+INSERT INTO `spell_script_target` VALUES (58836, 1, 31216);
+
+UPDATE `creature_template` SET `ScriptName`='npc_mirror_image' WHERE `entry`=31216;
+UPDATE `creature_template` SET `spell1`=59638, `spell2` = 59637 WHERE `entry`=31216;
\ No newline at end of file
diff --git a/src/game/Opcodes.cpp b/src/game/Opcodes.cpp
index 04f7317..2b29f71 100644
--- a/src/game/Opcodes.cpp
+++ b/src/game/Opcodes.cpp
@@ -1051,8 +1051,8 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x3FE*/ { "MSG_GUILD_BANK_MONEY_WITHDRAWN", STATUS_LOGGEDIN, &WorldSession::HandleGuildBankMoneyWithdrawn },
/*0x3FF*/ { "MSG_GUILD_EVENT_LOG_QUERY", STATUS_LOGGEDIN, &WorldSession::HandleGuildEventLogQueryOpcode },
/*0x400*/ { "CMSG_MAELSTROM_RENAME_GUILD", STATUS_NEVER, &WorldSession::Handle_NULL },
- /*0x401*/ { "CMSG_GET_MIRRORIMAGE_DATA", STATUS_NEVER, &WorldSession::Handle_NULL },
- /*0x402*/ { "SMSG_MIRRORIMAGE_DATA", STATUS_NEVER, &WorldSession::Handle_ServerSide },
+ /*0x401*/ { "CMSG_GET_MIRRORIMAGE_DATA", STATUS_LOGGEDIN, &WorldSession::HandleMirrrorImageDataRequest },
+ /*0x402*/ { "SMSG_MIRRORIMAGE_DATA", STATUS_LOGGEDIN, &WorldSession::Handle_ServerSide },
/*0x403*/ { "SMSG_FORCE_DISPLAY_UPDATE", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x404*/ { "SMSG_SPELL_CHANCE_RESIST_PUSHBACK", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x405*/ { "CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT", STATUS_NEVER, &WorldSession::Handle_NULL },
diff --git a/src/game/SpellAuraDefines.h b/src/game/SpellAuraDefines.h
index a784d2f..e5c2513 100644
--- a/src/game/SpellAuraDefines.h
+++ b/src/game/SpellAuraDefines.h
@@ -289,7 +289,7 @@ enum AuraType
SPELL_AURA_COMPREHEND_LANGUAGE = 244,
SPELL_AURA_MOD_DURATION_OF_MAGIC_EFFECTS = 245,
SPELL_AURA_MOD_DURATION_OF_EFFECTS_BY_DISPEL = 246,
- SPELL_AURA_247 = 247,
+ SPELL_AURA_CLONE_CASTER = 247,
SPELL_AURA_MOD_COMBAT_RESULT_CHANCE = 248,
SPELL_AURA_CONVERT_RUNE = 249,
SPELL_AURA_MOD_INCREASE_HEALTH_2 = 250,
@@ -321,7 +321,7 @@ enum AuraType
SPELL_AURA_276 = 276, // Only "Test Mod Damage % Mechanic" spell, possible mod damage done
SPELL_AURA_MOD_MAX_AFFECTED_TARGETS = 277,
SPELL_AURA_MOD_DISARM_RANGED = 278,
- SPELL_AURA_279 = 279,
+ SPELL_AURA_INITIALIZE_IMAGES = 279,
SPELL_AURA_MOD_TARGET_ARMOR_PCT = 280,
SPELL_AURA_MOD_HONOR_GAIN = 281,
SPELL_AURA_MOD_BASE_HEALTH_PCT = 282,
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index f20a287..7ca4371 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -297,7 +297,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
&Aura::HandleComprehendLanguage, //244 SPELL_AURA_COMPREHEND_LANGUAGE
&Aura::HandleNoImmediateEffect, //245 SPELL_AURA_MOD_DURATION_OF_MAGIC_EFFECTS implemented in Unit::CalculateSpellDuration
&Aura::HandleNoImmediateEffect, //246 SPELL_AURA_MOD_DURATION_OF_EFFECTS_BY_DISPEL implemented in Unit::CalculateSpellDuration
- &Aura::HandleNULL, //247 target to become a clone of the caster
+ &Aura::HandleAuraCloneCaster, //247 SPELL_AURA_CLONE_CASTER
&Aura::HandleNoImmediateEffect, //248 SPELL_AURA_MOD_COMBAT_RESULT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst
&Aura::HandleAuraConvertRune, //249 SPELL_AURA_CONVERT_RUNE
&Aura::HandleAuraModIncreaseHealth, //250 SPELL_AURA_MOD_INCREASE_HEALTH_2
@@ -329,7 +329,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
&Aura::HandleNULL, //276 mod damage % mechanic?
&Aura::HandleNoImmediateEffect, //277 SPELL_AURA_MOD_MAX_AFFECTED_TARGETS Use SpellClassMask for spell select
&Aura::HandleNULL, //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon
- &Aura::HandleNULL, //279 visual effects? 58836 and 57507
+ &Aura::HandleAuraInitializeImages, //279 SPELL_AURA_INITIALIZE_IMAGES
&Aura::HandleModTargetArmorPct, //280 SPELL_AURA_MOD_TARGET_ARMOR_PCT
&Aura::HandleNoImmediateEffect, //281 SPELL_AURA_MOD_HONOR_GAIN implemented in Player::RewardHonor
&Aura::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT
@@ -7844,3 +7844,42 @@ void Aura::HandleAllowOnlyAbility(bool apply, bool Real)
m_target->UpdateDamagePhysical(RANGED_ATTACK);
m_target->UpdateDamagePhysical(OFF_ATTACK);
}
+
+void Aura::HandleAuraInitializeImages(bool Apply, bool Real)
+{
+ if (!Real || !Apply)
+ return;
+
+ Unit* caster = GetCaster();
+ if (!caster)
+ return;
+
+ // Set item visual
+ if (caster->GetTypeId()== TYPEID_PLAYER)
+ {
+ if (Item const* item = ((Player *)caster)->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND))
+ m_target->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, item->GetProto()->ItemId);
+ if (Item const* item = ((Player *)caster)->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND))
+ m_target->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, item->GetProto()->ItemId);
+ }
+ else
+ {
+ m_target->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, caster->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID));
+ m_target->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, caster->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1));
+ m_target->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, caster->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2));
+ }
+}
+
+void Aura::HandleAuraCloneCaster(bool Apply, bool Real)
+{
+ if (!Real || !Apply)
+ return;
+
+ Unit * caster = GetCaster();
+ if (!caster)
+ return;
+
+ // Set item visual
+ m_target->SetDisplayId(caster->GetDisplayId());
+ m_target->SetUInt32Value(UNIT_FIELD_FLAGS_2, 2064);
+}
\ No newline at end of file
diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h
index 5698f36..731fbd0 100644
--- a/src/game/SpellAuras.h
+++ b/src/game/SpellAuras.h
@@ -215,6 +215,8 @@ class MANGOS_DLL_SPEC Aura
void HandleModTargetArmorPct(bool Apply, bool Real);
void HandleAuraModAllCritChance(bool Apply, bool Real);
void HandleAllowOnlyAbility(bool Apply, bool Real);
+ void HandleAuraInitializeImages(bool Apply, bool Real);
+ void HandleAuraCloneCaster(bool Apply, bool Real);

virtual ~Aura();

diff --git a/src/game/SpellHandler.cpp b/src/game/SpellHandler.cpp
index 433f266..f6318c5 100644
--- a/src/game/SpellHandler.cpp
+++ b/src/game/SpellHandler.cpp
@@ -575,3 +575,83 @@ void WorldSession::HandleSpellClick( WorldPacket & recv_data )
}
}
}
+void WorldSession::HandleMirrrorImageDataRequest( WorldPacket & recv_data )
+{
+ sLog.outDebug("WORLD: CMSG_GET_MIRRORIMAGE_DATA");
+ uint64 guid;
+ recv_data >> guid;
+
+ // Get unit for which data is needed by client
+ Unit *unit = ObjectAccessor::GetUnit(*_player, guid);
+ if (!unit)
+ return;
+
+ // Get creator of the unit
+ Unit *creator = ObjectAccessor::GetUnit(*_player, unit->GetCreatorGUID());
+ if (!creator)
+ creator = unit;
+
+ if (!creator)
+ return;
+
+ WorldPacket data(SMSG_MIRRORIMAGE_DATA, 68);
+ data << (uint64)guid;
+ data << (uint32)creator->GetDisplayId();
+ if (creator->GetTypeId() == TYPEID_PLAYER)
+ {
+ Player* pCreator = (Player *)creator;
+ data << (uint8)pCreator->getRace(); // race
+ data << (uint8)pCreator->getGender(); // gender
+ data << (uint8)pCreator->getClass(); // class
+ data << (uint8)pCreator->GetByteValue(PLAYER_BYTES, 0); // skin
+ data << (uint8)pCreator->GetByteValue(PLAYER_BYTES, 1); // face
+ data << (uint8)pCreator->GetByteValue(PLAYER_BYTES, 2); // hair
+ data << (uint8)pCreator->GetByteValue(PLAYER_BYTES, 3); // haircolor
+ data << (uint8)pCreator->GetByteValue(PLAYER_BYTES_2, 0); // facialhair
+
+ data << (uint32)0; // unknown
+
+ static const EquipmentSlots ItemSlots[] =
+ {
+ EQUIPMENT_SLOT_HEAD,
+ EQUIPMENT_SLOT_SHOULDERS,
+ EQUIPMENT_SLOT_BODY,
+ E QUIPMENT_SLOT_CHEST,
+ EQUIPMENT_SLOT_WAIST,
+ EQUIPMENT_SLOT_LEGS,
+ EQUIPMENT_SLOT_FEET,
+ E QUIPMENT_SLOT_WRISTS,
+ EQUIPMENT_SLOT_HANDS,
+ EQUIPMENT_SLOT_BACK,
+ EQUIPMENT_SLOT_TABARD,
+ E QUIPMENT_SLOT_END
+ };
+
+ // Display items in visible slots
+ for (EquipmentSlots const* itr = &ItemSlots[0]; *itr != EQUIPMENT_SLOT_END; ++itr)
+ if (Item const* item = pCreator->GetItemByPos(INVENTORY_SLOT_BAG_0, *itr))
+ data << (uint32)item->GetProto()->DisplayInfoID; // display id
+ else
+ data << (uint32)0; // no item found, so no id
+ }
+ else
+ {
+ // Skip player data for creatures
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ data << (uint32)0;
+ }
+
+ SendPacket( &data );
+}
\ No newline at end of file
diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h
index aa69a84..90c98c8 100644
--- a/src/game/WorldSession.h
+++ b/src/game/WoЗrldSession.h
@@ -730,6 +730,7 @@ class MANGOS_DLL_SPEC WorldSession
void HandleCalendarGetNumPending(WorldPacket& recv_data);

void HandleSpellClick(WorldPacket& recv_data);
+ void HandleMirrrorImageDataRequest(WorldPacket & recv_data);
void HandleAlterAppearance(WorldPacket& recv_data);
void HandleRemoveGlyph(WorldPacket& recv_data);
void HandleCharCustomize(WorldPacket& recv_data);
Что делать дальше я и понятия не имею... не могли бы вы мне разъяснить от и до, как сделать так, чтобы этот патч заработал .... ( как можно подробнее плиз )


Текущее время: 16:10. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot