|
---|
|
Ядро Здесь форум по базе, но иногда случается, что вопросы пересекаются. Но это форум не по ядру Мангос! |
|
Опции темы | Поиск в этой теме | Опции просмотра |
02.01.2010, 18:19 | #1 |
Not a member, is a noob
Регистрация: 05.11.2009
Адрес: Азерот, Штормвинд
Сообщений: 530
Сказал(а) спасибо: 153
Поблагодарили 453 раз(а) в 170 сообщениях
|
на Мангос друиды в кошке и медведе могут в парикмахерской облик менять?
Давно не проверял, может кто знает...
На Мангос друиды в кошке и медведе могут в парикмахерской облик менять? Если не могут, то почему? На оффе вроде уже сделано. wow-europe.com/ru/info/underdev/druidforms.html wow-europe.com/shared/wow-com/images/underdev/druidforms/ru/ss4.jpg
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
02.01.2010, 18:20 | #2 |
YTDB dev, histori
Регистрация: 05.11.2009
Сообщений: 1,597
Сказал(а) спасибо: 1
Поблагодарили 1,093 раз(а) в 971 сообщениях
|
На Гетмангосе ведется обсуждение патча
http://getmangos.com/community/showt...-Shape-Visuals
__________________
ars longa vita brevis |
02.01.2010, 18:29 | #3 |
Новичок
|
9086 - "В этом облике действие недоступно"
__________________
Clear core MaNGOS + ScriptDev2 Бесплатные файлообменники без рекламы: FileBeam RGHost |
02.01.2010, 18:31 | #4 | |
Not a member, is a noob
Регистрация: 05.11.2009
Адрес: Азерот, Штормвинд
Сообщений: 530
Сказал(а) спасибо: 153
Поблагодарили 453 раз(а) в 170 сообщениях
|
getmangos.com/community/showthread.php?10412-Druid-Forms-cosmetics
Пишут, что патч из топа нормально работает на 9026, хотя там файлы при заливке, но их руками несложно должно быть исправить. Хотя меня беспокоит сильное изменение где-то там в недавних ревизиях, где куча переменных (или функций? я в этом тупой) поменялась. thenecromancer - автор поста с патчем Цитата:
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index bd852d8..8fa949f 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2783,85 +2783,36 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real) switch(form) { case FORM_CAT: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 892; - else - modelid = 8571; PowerType = POWER_ENERGY; break; - case FORM_TRAVEL: - modelid = 632; - break; - case FORM_AQUA: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 2428; - else - modelid = 2428; - break; case FORM_BEAR: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 2281; - else - modelid = 2289; - PowerType = POWER_RAGE; - break; - case FORM_GHOUL: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 10045; - break; case FORM_DIREBEAR: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 2281; - else - modelid = 2289; + case FORM_BATTLESTANCE: + case FORM_BERSERKERSTANCE: + case FORM_DEFENSIVESTANCE: PowerType = POWER_RAGE; break; + case FORM_TRAVEL: + case FORM_AQUA: + case FORM_GHOUL: case FORM_CREATUREBEAR: - modelid = 902; - break; case FORM_GHOSTWOLF: - modelid = 4613; - break; case FORM_FLIGHT: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 20857; - else - modelid = 20872; - break; case FORM_MOONKIN: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 15374; - else - modelid = 15375; - break; case FORM_FLIGHT_EPIC: - if(Player::TeamForRace(m_target->getRace()) == ALLIANCE) - modelid = 21243; - else - modelid = 21244; - break; case FORM_METAMORPHOSIS: - modelid = 25277; - break; case FORM_AMBIENT: case FORM_SHADOW: case FORM_STEALTH: - break; case FORM_TREE: - modelid = 864; - break; - case FORM_BATTLESTANCE: - case FORM_BERSERKERSTANCE: - case FORM_DEFENSIVESTANCE: - PowerType = POWER_RAGE; - break; case FORM_SPIRITOFREDEMPTION: - modelid = 16031; break; default: sLog.outError("Auras: Unknown Shapeshift Type: %u, SpellId %u.", m_modifier.m_miscvalue, GetId()); } + modelid = m_target->GetModelForForm(form); + // remove polymorph before changing display id to keep new display id switch ( form ) { diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ea2837a..ea4b31e 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -12424,3 +12424,203 @@ void Unit::KnockBackFrom(Unit* target, float horizintalSpeed, float verticalSpee NearTeleportTo(fx, fy, fz, GetOrientation(), this == target); } } + +uint32 Unit::GetModelForForm(ShapeshiftForm form) +{ + switch(form) + { + case FORM_CAT: + // Based on Hair color + if (getRace() == RACE_NIGHTELF) + { + uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); + switch (hairColor) + { + case 7: // Violet + case 8: + return 29405; + case 3: // Light Blue + return 29406; + case 0: // Green + case 1: // Light Green + case 2: // Dark Green + return 29407; + case 4: // White + return 29408; + default: // original - Dark Blue + return 892; + } + } + // Based on Skin color + else if (getRace() == RACE_TAUREN) + { + uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); + // Male + if (getGender() == GENDER_MALE) + { + switch(skinColor) + { + case 12: // White + case 13: + case 14: + case 18: // Completly White + return 29409; + case 9: // Light Brown + case 10: + case 11: + return 29410; + case 6: // Brown + case 7: + case 8: + return 29411; + case 0: // Dark + case 1: + case 2: + case 3: // Dark Grey + case 4: + case 5: + return 29412; + default: // original - Grey + return 8571; + } + } + // Female + else switch (skinColor) + { + case 10: // White + return 29409; + case 6: // Light Brown + case 7: + return 29410; + case 4: // Brown + case 5: + return 29411; + case 0: // Dark + case 1: + case 2: + case 3: + return 29412; + default: // original - Grey + return 8571; + } + } + else if(Player::TeamForRace(getRace())==ALLIANCE) + return 892; + else + return 8571; + case FORM_DIREBEAR: + case FORM_BEAR: + // Based on Hair color + if (getRace() == RACE_NIGHTELF) + { + uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); + switch (hairColor) + { + case 0: // Green + case 1: // Light Green + case 2: // Dark Green + return 29413; // 29415? + case 6: // Dark Blue + return 29414; + case 4: // White + return 29416; + case 3: // Light Blue + return 29417; + default: // original - Violet + return 2281; + } + } + // Based on Skin color + else if (getRace() == RACE_TAUREN) + { + uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); + // Male + if (getGender() == GENDER_MALE) + { + switch (skinColor) + { + case 0: // Dark (Black) + case 1: + case 2: + return 29418; + case 3: // White + case 4: + case 5: + case 12: + case 13: + case 14: + return 29419; + case 9: // Light Brown/Grey + case 10: + case 11: + case 15: + case 16: + case 17: + return 29420; + case 18: // Completly White + return 29421; + default: // original - Brown + return 2289; + } + } + // Female + else switch (skinColor) + { + case 0: // Dark (Black) + case 1: + return 29418; + case 2: // White + case 3: + return 29419; + case 6: // Light Brown/Grey + case 7: + case 8: + case 9: + return 29420; + case 10: // Completly White + return 29421; + default: // original - Brown + return 2289; + } + } + else if(Player::TeamForRace(getRace())==ALLIANCE) + return 2281; + else + return 2289; + case FORM_TRAVEL: + return 632; + case FORM_AQUA: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 2428; + else + return 2428; + case FORM_GHOUL: + return 24994; + case FORM_CREATUREBEAR: + return 902; + case FORM_GHOSTWOLF: + return 4613; + case FORM_FLIGHT: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 20857; + else + return 20872; + case FORM_MOONKIN: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 15374; + else + return 15375; + case FORM_FLIGHT_EPIC: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 21243; + else + return 21244; + case FORM_METAMORPHOSIS: + return 25277; + case FORM_TREE: + return 864; + case FORM_SPIRITOFREDEMPTION: + return 16031; + } + return 0; +} \ No newline at end of file diff --git a/src/game/Unit.h b/src/game/Unit.h index 43b305d..8e89227 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1519,6 +1519,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void AddPetAura(PetAura const* petSpell); void RemovePetAura(PetAura const* petSpell); + uint32 GetModelForForm(ShapeshiftForm form); protected: explicit Unit (); оооопппсссс......... Я попробовал этот патч в 9088 сунуть, и обломился. Моих способностей тупо не хватает. Сейчас в SpellAuras.cpp штука switch(form) выглядит совершенно не так, как в патче. Кто-то менее тупой, чем я, может объяснить (лучше показать) что и как там делать?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
|
03.01.2010, 02:16 | #5 |
Not a Junior!
Регистрация: 07.11.2009
Сообщений: 10
Сказал(а) спасибо: 4
Поблагодарили 45 раз(а) в 12 сообщениях
|
Поставил его еще на коммите 8754_Druid_form_color.patch и забыл про него все работает нормально и цвета меняются.
|
03.01.2010, 13:21 | #6 |
Not a member, is a noob
Регистрация: 05.11.2009
Адрес: Азерот, Штормвинд
Сообщений: 530
Сказал(а) спасибо: 153
Поблагодарили 453 раз(а) в 170 сообщениях
|
ну так и чего не выложил-то?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
09.01.2010, 13:39 | #7 |
Guest
Сообщений: n/a
|
Можно попробовать вот такой патч:
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 97f4bd6..dfc993b 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2900,7 +2900,9 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real) return; } - if (ssEntry->modelID_A) + modelid = m_target->GetModelForForm(form); + + if (!modelid && ssEntry->modelID_A) { // i will asume that creatures will always take the defined model from the dbc // since no field in creature_templates describes wether an alliance or diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index f60f1f3..34e721a 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -13132,6 +13132,206 @@ void Unit::StopAttackFaction(uint32 faction_id) guardian->StopAttackFaction(faction_id); } +uint32 Unit::GetModelForForm(ShapeshiftForm form) +{ + switch(form) + { + case FORM_CAT: + // Based on Hair color + if (getRace() == RACE_NIGHTELF) + { + uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); + switch (hairColor) + { + case 7: // Violet + case 8: + return 29405; + case 3: // Light Blue + return 29406; + case 0: // Green + case 1: // Light Green + case 2: // Dark Green + return 29407; + case 4: // White + return 29408; + default: // original - Dark Blue + return 892; + } + } + // Based on Skin color + else if (getRace() == RACE_TAUREN) + { + uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); + // Male + if (getGender() == GENDER_MALE) + { + switch(skinColor) + { + case 12: // White + case 13: + case 14: + case 18: // Completly White + return 29409; + case 9: // Light Brown + case 10: + case 11: + return 29410; + case 6: // Brown + case 7: + case 8: + return 29411; + case 0: // Dark + case 1: + case 2: + case 3: // Dark Grey + case 4: + case 5: + return 29412; + default: // original - Grey + return 8571; + } + } + // Female + else switch (skinColor) + { + case 10: // White + return 29409; + case 6: // Light Brown + case 7: + return 29410; + case 4: // Brown + case 5: + return 29411; + case 0: // Dark + case 1: + case 2: + case 3: + return 29412; + default: // original - Grey + return 8571; + } + } + else if(Player::TeamForRace(getRace())==ALLIANCE) + return 892; + else + return 8571; + case FORM_DIREBEAR: + case FORM_BEAR: + // Based on Hair color + if (getRace() == RACE_NIGHTELF) + { + uint8 hairColor = GetByteValue(PLAYER_BYTES, 3); + switch (hairColor) + { + case 0: // Green + case 1: // Light Green + case 2: // Dark Green + return 29413; // 29415? + case 6: // Dark Blue + return 29414; + case 4: // White + return 29416; + case 3: // Light Blue + return 29417; + default: // original - Violet + return 2281; + } + } + // Based on Skin color + else if (getRace() == RACE_TAUREN) + { + uint8 skinColor = GetByteValue(PLAYER_BYTES, 0); + // Male + if (getGender() == GENDER_MALE) + { + switch (skinColor) + { + case 0: // Dark (Black) + case 1: + case 2: + return 29418; + case 3: // White + case 4: + case 5: + case 12: + case 13: + case 14: + return 29419; + case 9: // Light Brown/Grey + case 10: + case 11: + case 15: + case 16: + case 17: + return 29420; + case 18: // Completly White + return 29421; + default: // original - Brown + return 2289; + } + } + // Female + else switch (skinColor) + { + case 0: // Dark (Black) + case 1: + return 29418; + case 2: // White + case 3: + return 29419; + case 6: // Light Brown/Grey + case 7: + case 8: + case 9: + return 29420; + case 10: // Completly White + return 29421; + default: // original - Brown + return 2289; + } + } + else if(Player::TeamForRace(getRace())==ALLIANCE) + return 2281; + else + return 2289; + case FORM_TRAVEL: + return 632; + case FORM_AQUA: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 2428; + else + return 2428; + case FORM_GHOUL: + return 24994; + case FORM_CREATUREBEAR: + return 902; + case FORM_GHOSTWOLF: + return 4613; + case FORM_FLIGHT: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 20857; + else + return 20872; + case FORM_MOONKIN: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 15374; + else + return 15375; + case FORM_FLIGHT_EPIC: + if(Player::TeamForRace(getRace())==ALLIANCE) + return 21243; + else + return 21244; + case FORM_METAMORPHOSIS: + return 25277; + case FORM_TREE: + return 864; + case FORM_SPIRITOFREDEMPTION: + return 16031; + } + return 0; +} + void Unit::CleanupDeletedAuras() { // really delete auras "deleted" while processing its ApplyModify code diff --git a/src/game/Unit.h b/src/game/Unit.h index 3040704..16f7809 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1572,6 +1572,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject PetAuraSet m_petAuras; void AddPetAura(PetAura const* petSpell); void RemovePetAura(PetAura const* petSpell); + uint32 GetModelForForm(ShapeshiftForm form); protected: explicit Unit (); |
18.01.2010, 16:21 | #8 |
Not a member, is a noob
Регистрация: 05.11.2009
Адрес: Азерот, Штормвинд
Сообщений: 530
Сказал(а) спасибо: 153
Поблагодарили 453 раз(а) в 170 сообщениях
|
встало без ошибок, сейчас компилить пойду.
компил тоже без ошибок.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[www] сайты для мангос | tempura | Ядро | 0 | 25.12.2009 08:00 |