Ru-MaNGOS

Вернуться   Ru-MaNGOS > Флуд > Флудильня

Важная информация

Флудильня Разговоры на любые темы.

Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.08.2013, 21:43   #1
Dubstep
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
Dubstep На верном пути
По умолчанию Метка Рейда

Привет всем, может кто подсказать что за визуальные эффекты там? Спелл или объект, а может что ещё О_о

зы http://wow.joystiq.com/2010/11/07/ca...-raid-markers/
Dubstep вне форума   Ответить с цитированием
Старый 02.08.2013, 22:01   #2
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

http://www.wowhead.com/search?q=raid+marker#spells
LordJZ вне форума   Ответить с цитированием
Старый 02.08.2013, 22:18   #3
Dubstep
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
Dubstep На верном пути
По умолчанию

Спеллы эти известны, но от них нету визуального эффекта...
Dubstep вне форума   Ответить с цитированием
Старый 02.08.2013, 23:17   #4
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Я уже мало что помню, и полного кода под рукой нет, но вот из публичного моего репозитория:
Код:
    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;
            }
        }
Собственно, я создавал видимые объекты, кажется просто присваивая Spell, DynamicObjectType и, возможно, SpellVisual. Попробуйте.
LordJZ вне форума   Ответить с цитированием
Старый 03.08.2013, 00:46   #5
Dubstep
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
Dubstep На верном пути
По умолчанию

спс. помогло

А что клиенту нужно скормить с опкодом SMSG_RAID_MARKERS_CHANGED?

Последний раз редактировалось Dubstep; 03.08.2013 в 01:38.
Dubstep вне форума   Ответить с цитированием
Старый 03.08.2013, 01:52   #6
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Dubstep Посмотреть сообщение
...
А что клиенту нужно скормить с опкодом SMSG_RAID_MARKERS_CHANGED?
Не знаю, не использовал их по назначению никогда.
LordJZ вне форума   Ответить с цитированием
Старый 03.08.2013, 15:25   #7
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Я уже мало что помню, и полного кода под рукой нет, но вот из публичного моего репозитория:
Код:
    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;
            }
        }
Собственно, я создавал видимые объекты, кажется просто присваивая Spell, DynamicObjectType и, возможно, SpellVisual. Попробуйте.
Там еще в поле кастера - гуид группы
Цитата:
Сообщение от Dubstep Посмотреть сообщение
спс. помогло

А что клиенту нужно скормить с опкодом SMSG_RAID_MARKERS_CHANGED?
Код:
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);
}
Amaru вне форума   Ответить с цитированием
Старый 04.08.2013, 01:09   #8
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Amaru Посмотреть сообщение
Там еще в поле кастера - гуид группы
Опционально.
LordJZ вне форума   Ответить с цитированием
Старый 03.08.2013, 21:00   #9
Dubstep
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 71
Сказал(а) спасибо: 22
Поблагодарили 0 раз(а) в 0 сообщениях
Dubstep На верном пути
По умолчанию

SetUInt64Value(DYNAMICOBJECT_CASTER, group->GetGUID()); Как понимаю чтобы убрать из видимость игрокам не из группы?
Только вот что то падает сервер Там потом идёт выборка гуида из этого поля и падает
Если какие ещё способы убрать из видимости? или что то не так делаю
Dubstep вне форума   Ответить с цитированием
Старый 03.08.2013, 21:10   #10
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Цитата:
Сообщение от Dubstep Посмотреть сообщение
SetUInt64Value(DYNAMICOBJECT_CASTER, group->GetGUID()); Как понимаю чтобы убрать из видимость игрокам не из группы?
Только вот что то падает сервер Там потом идёт выборка гуида из этого поля и падает
Если какие ещё способы убрать из видимости? или что то не так делаю
Насколько я помню, с видимостью оно не связано.
С крашем все просто - включаем гдб и смотрим, что где крашит)
Для видимости же есть метод DynamicObject::IsVisibleForInState
Amaru вне форума   Ответить с цитированием
Старый 04.08.2013, 11:32   #11
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Нашёл старый код, действительно, хватает двух полей: 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);
    }
}
LordJZ вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кровавая метка (49005) frenk Баг-репорты 7 29.03.2010 14:43


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


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot