|
Флудильня Разговоры на любые темы. Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
02.08.2013, 21:43 | #1 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
Метка Рейда
Привет всем, может кто подсказать что за визуальные эффекты там? Спелл или объект, а может что ещё О_о
зы http://wow.joystiq.com/2010/11/07/ca...-raid-markers/ |
02.08.2013, 22:01 | #2 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
02.08.2013, 22:18 | #3 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
Спеллы эти известны, но от них нету визуального эффекта...
|
02.08.2013, 23:17 | #4 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Я уже мало что помню, и полного кода под рукой нет, но вот из публичного моего репозитория:
Код:
public enum DynamicObjectTypes { /// <summary> /// Unused. /// </summary> Portal = 0, AreaSpell = 1, FarsightFocus = 2, RaidMarker = 3, } public sealed class WowDynamicObject : WowObject { public DynamicObjectTypes DynamicObjectType { get { return (DynamicObjectTypes)(GetByte(DynamicObjectUpdateFields.DYNAMICOBJECT_BYTES, 3) >> 4); } set { SetByte(DynamicObjectUpdateFields.DYNAMICOBJECT_BYTES, (byte)((int)value << 4), 3); } } public ushort SpellVisual { get { return GetShort(DynamicObjectUpdateFields.DYNAMICOBJECT_BYTES, 0); } set { SetShort(DynamicObjectUpdateFields.DYNAMICOBJECT_BYTES, value, 0); } } public uint Spell { get { return GetUInt(DynamicObjectUpdateFields.DYNAMICOBJECT_SPELLID); } set { SetUInt(DynamicObjectUpdateFields.DYNAMICOBJECT_SPELLID, value); Entry = value; } } |
03.08.2013, 00:46 | #5 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
спс. помогло
А что клиенту нужно скормить с опкодом SMSG_RAID_MARKERS_CHANGED? Последний раз редактировалось Dubstep; 03.08.2013 в 01:38. |
03.08.2013, 01:52 | #6 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
03.08.2013, 15:25 | #7 | ||
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
Цитата:
Код:
void Group::SendRaidMarkerUpdate() { WorldPacket data(SMSG_RAID_MARKERS_CHANGED, 4); uint32 mask = 0; for (uint8 i = 0; i < RAID_MARKER_COUNT; ++i) if (m_raidMarkers[i]) mask |= 1 << i; data << uint32(mask); BroadcastPacket(&data, false); } |
||
04.08.2013, 01:09 | #8 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
|
03.08.2013, 21:00 | #9 |
Пользователь
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
|
SetUInt64Value(DYNAMICOBJECT_CASTER, group->GetGUID()); Как понимаю чтобы убрать из видимость игрокам не из группы?
Только вот что то падает сервер Там потом идёт выборка гуида из этого поля и падает Если какие ещё способы убрать из видимости? или что то не так делаю |
03.08.2013, 21:10 | #10 | |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Цитата:
С крашем все просто - включаем гдб и смотрим, что где крашит) Для видимости же есть метод DynamicObject::IsVisibleForInState |
|
04.08.2013, 11:32 | #11 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Нашёл старый код, действительно, хватает двух полей: Spell и SpellVisual.
Но позже я переключился на создание маркеров юнитами: Код:
void AddHighlight(WowGameObject go) { if (!m_highlightedEntities.ContainsKey(go.Guid)) { var highlighterGuid = new WowGuid(WowGuidType.Creature, 46645, ++m_dynamicObjectCounter); var unit = new WowUnit(); var movement = new MovementInfo(highlighterGuid); movement.Living = true; movement.Position = go.MovementData.Position; movement.Orientation = 3.141593f; movement.TimeStamp = 2751961664; unit.MovementData = movement; unit.Guid = highlighterGuid; unit.Scale = Math.Max(go.Scale, 1.0f); unit.Entry = 46645; unit.Class = Classes.Warrior; unit.Gender = Genders.None; unit.PowerType = PowerType.Rage; unit.Health = 4979; unit.MaxHealth = 4979; unit.Level = 60; unit.Model = unit.NativeModel = 37259; unit.Faction = 190; unit.Flags2 = UnitFlags2.Flag_0x800; unit.BoundingRadius = 1.595f; unit.CombatReach = 1.65f; std.CreateObject(unit); var aura = new Aura(); aura.AppliedTime = (uint)Environment.TickCount; aura.Caster = highlighterGuid; aura.Slot = 0; aura.Level = 60; aura.Flags = AuraFlags.EffectIndex_0 | AuraFlags.Positive | AuraFlags.NotCaster; aura.Spell = Global_HighlightSparklingGOs_Spell; aura.Unit = highlighterGuid; var auraUpdate = new AuraUpdate(highlighterGuid); auraUpdate.Full = true; auraUpdate.Auras.Add(aura); Send(auraUpdate); m_highlightedEntities.Add(go.Guid, highlighterGuid); } } |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кровавая метка (49005) | frenk | Баг-репорты | 7 | 29.03.2010 14:43 |