Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи > Отвергнутые патчи

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

Отвергнутые патчи Патчи, отвергнутые от приёма в GIT

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.03.2010, 04:18   #1
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию [fix] Mirror Image

Реализует работу Зеркальных Изображений у магов. Проверял на версии ядра 9225. также на версии клиента 3.3.2 Ревизию ядра не помню.

Патч переводили с тринити, но он не работал (вызывал трех призраков и все), дописал его я. Имеются недочеты:
1. В дуэли иллюзии не аттакуют игрока. - поправлено! (Спасибо Set)
2. Спелл агрит мобов вокруг. - поправлено! (огромное спасибо lucky)
3. Поправлено, Движение иллюзий за магом. (Спасибо Set)
4. Поправлено, после 30 секунд иллюзии исчезают (Спасибо Dimitrius)
5. Теперь копируется имя и гильдия. (Спасибо Set)
Вложения
Тип файла: patch Mirror Image.patch (16.1 Кб, 265 просмотров)

Последний раз редактировалось MaxXx2021; 24.03.2010 в 05:50.
MaxXx2021 вне форума   Ответить с цитированием
22 пользователя(ей) сказали cпасибо:
Den (21.03.2010), Dimitrius (13.03.2010), Hantet (13.03.2010), Incognito (14.07.2010), Insider42 (15.03.2010), KiriX (21.04.2010), Limpnau (17.03.2010), lucky (15.03.2010), Mayss (02.05.2010), Nordway (23.03.2010), Shadez (20.03.2010), sven (19.03.2010), VENOM (17.03.2010), Кот ДаWINчи (12.03.2010)
Старый 12.03.2010, 04:21   #2
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Код:
enum
{
   SPELL_FROSTBOLT         = 59638,
   SPELL_FIREBALL          = 59637
};

/*######
## npc_mirror_image
######*/

struct MANGOS_DLL_DECL npc_mirror_imageAI : public ScriptedAI
{
    npc_mirror_imageAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();}

	uint32 m_uiFrostboltTimer;
	uint32 m_uiFireblastTimer;
	bool inCombat;
                uint32 LifeTime;

    void Reset() 
	{
                                LifeTime = 30000;
		Unit *owner = m_creature->GetOwner();
		if (!owner)
			return;

		if (owner && !m_creature->hasUnitState(UNIT_STAT_FOLLOW))
		{
			m_creature->GetMotionMaster()->Clear(false);
			m_creature->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
		}
		// Inherit Master's Threat List (not yet implemented)
		//owner->CastSpell((Unit*)NULL, 58838, true);
		// here mirror image casts on summoner spell (not present in client dbc) 49866
		// here should be auras (not present in client dbc): 35657, 35658, 35659, 35660 selfcasted by mirror images (stats related?)
		// Clone Me!
		m_uiFrostboltTimer = 0;
		m_uiFireblastTimer = 6100;
		inCombat = false;
	}

	void AttackStart(Unit* pWho)
	{
		if (!pWho)
			return;

		if (m_creature->Attack(pWho, true))
		{
            m_creature->clearUnitState(UNIT_STAT_FOLLOW);
            // TMGs call CreatureRelocation which via MoveInLineOfSight can call this function
            // thus with the following clear the original TMG gets invalidated and crash, doh
            // hope it doesn't start to leak memory without this :-/
            //i_pet->Clear();
            m_creature->GetMotionMaster()->MoveChase(pWho);
            m_creature->getVictim()->AddThreat(m_creature);
            inCombat = true;
        }
	}

	void EnterEvadeMode()
	{
		if (m_creature->IsInEvadeMode() || !m_creature->isAlive())
			return;

		inCombat = false;
		Unit *owner = m_creature->GetCharmerOrOwner();

		m_creature->AttackStop();
		m_creature->CombatStop(true);
		if (owner && !m_creature->hasUnitState(UNIT_STAT_FOLLOW))
		{
			m_creature->GetMotionMaster()->Clear(false);
			m_creature->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST,PET_FOLLOW_ANGLE);
		}
	}

	void UpdateAI(const uint32 diff)
	{

		if (LifeTime < diff)
		{
			m_creature->RemoveFromWorld();
		} else LifeTime -= diff;
		
		if (/*!m_creature->SelectHostileTarget() || */!m_creature->getVictim())
		{
			Unit *owner = m_creature->GetCharmerOrOwner();
			if (owner && owner->getVictim())
				m_creature->AI()->AttackStart(owner->getVictim());
		}

		if (inCombat && !m_creature->getVictim())
		{
			EnterEvadeMode();
			return;
		}

		if (/*!m_creature->SelectHostileTarget() || */!m_creature->getVictim())
			return;

		if (m_uiFrostboltTimer <= diff)
		{
			DoCast(m_creature->getVictim(),59638);
			m_uiFrostboltTimer = 3100;
		}else m_uiFrostboltTimer -= diff;

		if (m_uiFireblastTimer <= diff)
		{
			DoCast(m_creature->getVictim(),59637,true);
			m_uiFireblastTimer = 6000;
		}else m_uiFireblastTimer -= diff;

		DoMeleeAttackIfReady();
	}
};

CreatureAI* GetAI_npc_mirror_image(Creature* pCreature)
{
    return new npc_mirror_imageAI(pCreature);
}
Код:
    newscript = new Script;
    newscript->Name = "npc_mirror_image";
    newscript->GetAI = &GetAI_npc_mirror_image;
    newscript->RegisterSelf();
это в SpecialNPC - спасибо Set за предоставленый скрипт. Я чуток подогнал его под свой патч.

Последний раз редактировалось MaxXx2021; 17.03.2010 в 04:01.
MaxXx2021 вне форума   Ответить с цитированием
Старый 12.03.2010, 07:39   #3
lucky
Новичок
 
Регистрация: 07.03.2010
Сообщений: 12
Сказал(а) спасибо: 8
Поблагодарили 6 раз(а) в 5 сообщениях
lucky На верном пути
По умолчанию

Мобы агрятся из-за этого
Код:
+            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; 
+            }
стоит закомментировать

Код:
+                m_target->CastSpell((Unit *)NULL, m_spellProto->EffectTriggerSpell[m_effIndex], true);
и все становится хорошо.

У меня также из-за этого было, что при вызове проекций всем мобам в округе присваивалось имя кастера у и агрились. Ну естественно после таких манипуляций проекциям имя присваиваться не будет

Последний раз редактировалось lucky; 12.03.2010 в 07:45.
lucky вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Limpnau (17.03.2010)
Старый 12.03.2010, 07:50   #4
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от lucky Посмотреть сообщение
Мобы агрятся из-за этого
Код:
+            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; 
+            }
стоит закомментировать

Код:
+                m_target->CastSpell((Unit *)NULL, m_spellProto->EffectTriggerSpell[m_effIndex], true);
и все становится хорошо.

У меня также из-за этого было, что при вызове проекций всем мобам в округе присваивалось имя кастера у и агрились. Ну естественно после таких манипуляций проекциям имя присваиваться не будет
Спс у меня оружие у всех мобов появлялось которое у меня было, потом поправил. Имя тоже надо копировать иллюзиям? (+Гильдию?)
MaxXx2021 вне форума   Ответить с цитированием
Старый 13.03.2010, 08:10   #5
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Проблема в том, что у спелла ID - 58836 Initialize Images () - Target B (TARGET_7). Нужно реализовывать его еще, это что-то вроде массового SCRIPT_TARGET.
SeT вне форума   Ответить с цитированием
Старый 14.03.2010, 02:09   #6
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
По умолчанию

Создаваемые копии стоят на месте если поблизости нет врагов - это нормально? При появлении врагов работают как и должны (сверил с оффом). Попробую пока из pet.cpp (или player.cpp - точно пока не знаю, предположил) вытащить функцию следования за игроком, если решения пока нет (что маловероятно).

MaNGOS 9435 (не чистое)
SD2 R1581 (не чистое)
YTDB R535
ACID R303


Added:
Добавил в spell_effects.cpp:

После summon->SetUInt32Value(UNIT_FIELD_FLAGS_2, 2064);
Код:
summon->GetMotionMaster()->MoveFollow(m_caster,PET_FOLLOW_DIST,PET_FOLLOW_ANGLE);
Теперь копии стали ходить за игроком и всё вроде бы отлично, но! После первой же битвы копии встают на свои места по треугольной траектории вокруг места где стоял персонаж когда юзал спелл и больше не сдвигаются с места. Как и где задать чтобы копии бегали за персонажем и после битвы, не подскажите?
P.s. не ругайте пожалуйста за кракозяброкод, использовал функции из Pet.cpp и PetHandler.cpp

Бггг, я ненормальный. Всю ночь просидел перед ящиком, пробовал разные варианты. Псих

Последний раз редактировалось Hantet; 14.03.2010 в 06:22.
Hantet вне форума   Ответить с цитированием
Старый 14.03.2010, 05:19   #7
Dimitrius
Новичок
 
Регистрация: 07.03.2010
Сообщений: 17
Сказал(а) спасибо: 10
Поблагодарили 14 раз(а) в 4 сообщениях
Dimitrius На верном пути
По умолчанию

Еще один минус - созданные копии не исчезают по прохождении 30 сек, если они находятся в бою. Следовательно дождавшись кд допустим на арене можно будет призвать еще 3-4 копии. Я думаю это не верно, и поправил это в SD2:
(+ отмечены добавленные строки)
Код:
struct MANGOS_DLL_DECL npc_mirror_imageAI : public ScriptedAI
{
    npc_mirror_imageAI(Creature *pCreature) : ScriptedAI(pCreature)
   {
+	   LifeTime = 30000;
       Reset();
   }

+uint32 LifeTime;
uint32 m_uiFrostBoltTimer;

    void Reset() 
    { 
       m_uiFrostBoltTimer = 1000;
    } 

    void UpdateAI(const uint32 uiDiff)
    {
+		if (LifeTime < uiDiff)
+		{
+			m_creature->RemoveFromWorld();
+		} else LifeTime -= uiDiff;

        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
            return;

                    if (m_uiFrostBoltTimer < uiDiff)
                    {
                        if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_FROSTBOLT) == CAST_OK)
                            m_uiFrostBoltTimer = urand(3600, 4000);
                    }else
                        m_uiFrostBoltTimer -= uiDiff;

    }
};
Dimitrius вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Hantet (14.03.2010), Limpnau (17.03.2010)
Старый 14.03.2010, 06:59   #8
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Код:
/*######
## npc_mirror_image
######*/

struct MANGOS_DLL_DECL npc_mirror_imageAI : public ScriptedAI
{
    npc_mirror_imageAI(Creature* pCreature) : ScriptedAI(pCreature) {Reset();}

	uint32 m_uiFrostboltTimer;
	uint32 m_uiFireblastTimer;
	bool inCombat;

    void Reset() 
	{
		Unit *owner = m_creature->GetOwner();
		if (!owner)
			return;

		if (owner && !m_creature->hasUnitState(UNIT_STAT_FOLLOW))
		{
			m_creature->GetMotionMaster()->Clear(false);
			m_creature->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
		}
		// Inherit Master's Threat List (not yet implemented)
		//owner->CastSpell((Unit*)NULL, 58838, true);
		// here mirror image casts on summoner spell (not present in client dbc) 49866
		// here should be auras (not present in client dbc): 35657, 35658, 35659, 35660 selfcasted by mirror images (stats related?)
		// Clone Me!
		m_uiFrostboltTimer = 0;
		m_uiFireblastTimer = 6100;
		inCombat = false;
	}

	void AttackStart(Unit* pWho)
	{
		if (!pWho)
			return;

		if (m_creature->Attack(pWho, true))
		{
            m_creature->clearUnitState(UNIT_STAT_FOLLOW);
            // TMGs call CreatureRelocation which via MoveInLineOfSight can call this function
            // thus with the following clear the original TMG gets invalidated and crash, doh
            // hope it doesn't start to leak memory without this :-/
            //i_pet->Clear();
            m_creature->GetMotionMaster()->MoveChase(pWho);
            m_creature->getVictim()->AddThreat(m_creature);
            inCombat = true;
        }
	}

	void EnterEvadeMode()
	{
		if (m_creature->IsInEvadeMode() || !m_creature->isAlive())
			return;

		inCombat = false;
		Unit *owner = m_creature->GetCharmerOrOwner();

		m_creature->AttackStop();
		m_creature->CombatStop(true);
		if (owner && !m_creature->hasUnitState(UNIT_STAT_FOLLOW))
		{
			m_creature->GetMotionMaster()->Clear(false);
			m_creature->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST,PET_FOLLOW_ANGLE);
		}
	}

	void UpdateAI(const uint32 diff)
	{
		if (!(m_creature->HasAura(45204)))
		{
			Unit *owner = m_creature->GetCharmerOrOwner();
			if (!owner)
				return;
			m_creature->CastSpell(m_creature, 45204, true, NULL, NULL, owner->GetGUID());
		}

		if (!(m_creature->HasAura(58836)))
		{
			Unit *owner = m_creature->GetCharmerOrOwner();
			if (!owner)
				return;
			m_creature->CastSpell(m_creature, 58836, true, NULL, NULL, owner->GetGUID());
		}
		
		if (/*!m_creature->SelectHostileTarget() || */!m_creature->getVictim())
		{
			Unit *owner = m_creature->GetCharmerOrOwner();
			if (owner && owner->getVictim())
				m_creature->AI()->AttackStart(owner->getVictim());
		}

		if (inCombat && !m_creature->getVictim())
		{
			EnterEvadeMode();
			return;
		}

		if (/*!m_creature->SelectHostileTarget() || */!m_creature->getVictim())
			return;

		if (m_uiFrostboltTimer <= diff)
		{
			DoCast(m_creature->getVictim(),59638);
			m_uiFrostboltTimer = 3100;
		}else m_uiFrostboltTimer -= diff;

		if (m_uiFireblastTimer <= diff)
		{
			DoCast(m_creature->getVictim(),59637,true);
			m_uiFireblastTimer = 6000;
		}else m_uiFireblastTimer -= diff;

		DoMeleeAttackIfReady();
	}
};

CreatureAI* GetAI_npc_mirror_image(Creature* pCreature)
{
    return new npc_mirror_imageAI(pCreature);
}
Моя версия.
SeT вне форума   Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
Dimitrius (14.03.2010), Hantet (14.03.2010), Limpnau (17.03.2010), lucky (14.03.2010), MaxXx2021 (15.03.2010)
Старый 15.03.2010, 04:02   #9
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Set странно, когда я в скрипте на 3.3.0 делал через owner у меня писало indefener is not found.
MaxXx2021 вне форума   Ответить с цитированием
Старый 15.03.2010, 06:23   #10
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
Set странно, когда я в скрипте на 3.3.0 делал через owner у меня писало indefener is not found.
Код:
Unit *owner = m_creature->GetOwner();
LordJZ вне форума   Ответить с цитированием
Старый 15.03.2010, 07:38   #11
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Код:
Unit *owner = m_creature->GetOwner();
именно GetOwner(); и не мог получить писало что GetOwner(); переменная не найдена смотрите unit.h. Полазил там но похожего не нашел!
MaxXx2021 вне форума   Ответить с цитированием
Старый 15.03.2010, 13:45   #12
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Код:
m_creature->GetOwner();
http://github.com/mangos/mangos/raw/...rc/game/Unit.h поиск по GetOwner() выдает строку:
Код:
        Unit* GetOwner() const;
Вы делаете что-то не так...
LordJZ вне форума   Ответить с цитированием
Старый 16.03.2010, 03:47   #13
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Код:
m_creature->GetOwner();
http://github.com/mangos/mangos/raw/...rc/game/Unit.h поиск по GetOwner() выдает строку:
Код:
        Unit* GetOwner() const;
Вы делаете что-то не так...
У меня было написано так! Unit* Mirror = m_creature->GetOwner(); Писало ошибку что GetOwner() нету такого void!
MaxXx2021 вне форума   Ответить с цитированием
Старый 16.03.2010, 13:32   #14
Dimitrius
Новичок
 
Регистрация: 07.03.2010
Сообщений: 17
Сказал(а) спасибо: 10
Поблагодарили 14 раз(а) в 4 сообщениях
Dimitrius На верном пути
По умолчанию

А зазве у клонов столько же хелов сколько и у владельца?
Помойму нужно в Reset() добавить
Код:
m_creature->SetMaxHealth(4000);
И кстати исправь в updateAI где проверка таймера LifeTime - uiDiff на diff коли подогнал патч ))

Последний раз редактировалось Dimitrius; 16.03.2010 в 16:22.
Dimitrius вне форума   Ответить с цитированием
Старый 16.03.2010, 13:44   #15
DiffuSer
Ученый
 
Аватар для DiffuSer
 
Регистрация: 07.03.2010
Сообщений: 131
Сказал(а) спасибо: 9
Поблагодарили 10 раз(а) в 10 сообщениях
DiffuSer На верном пути
По умолчанию

Я всегда думал, что у клонов и ХП должно быть столько же.
DiffuSer вне форума   Ответить с цитированием
Старый 16.03.2010, 14:24   #16
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Нет, у них около 2.6к, насколько я помню.
LordJZ вне форума   Ответить с цитированием
Старый 17.03.2010, 04:03   #17
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Нет, у них около 2.6к, насколько я помню.
Oo столько же должно быть. Кстати как скопировать имя и гильдию?
MaxXx2021 вне форума   Ответить с цитированием
Старый 17.03.2010, 06:23   #18
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
Oo столько же должно быть. Кстати как скопировать имя и гильдию?
http://www.wowhead.com/?spell=69960 (к примеру)
LordJZ вне форума   Ответить с цитированием
Старый 17.03.2010, 11:08   #19
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Вопрос на миллион $! Он работает?
MaxXx2021 вне форума   Ответить с цитированием
Старый 17.03.2010, 13:01   #20
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

Код:
Effect	Apply Aura: Mirror Name
Radius: 100 yards
Надо реализовать эту ауру
где-то я видел спелы - которые берут оружие и одежду миррор цели, как то их надо под эту ауру подогнать наверно
timmit вне форума   Ответить с цитированием
Старый 17.03.2010, 14:30   #21
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Насколько я помню это клиентом реализуется.
LordJZ вне форума   Ответить с цитированием
Старый 17.03.2010, 18:49   #22
VENOM
Новичок
 
Аватар для VENOM
 
Регистрация: 09.03.2010
Сообщений: 26
Сказал(а) спасибо: 18
Поблагодарили 3 раз(а) в 3 сообщениях
VENOM На верном пути
По умолчанию

когда игрок умирает воспроизводится клон игрока [Труп игрока]

Есть ли возможность использовать это В mirror image
VENOM вне форума   Ответить с цитированием
Старый 17.03.2010, 18:54   #23
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от VENOM Посмотреть сообщение
когда игрок умирает воспроизводится клон игрока [Труп игрока]

Есть ли возможность использовать это В mirror image
Нет, у трупов совершенно иная реализация.
LordJZ вне форума   Ответить с цитированием
Старый 18.03.2010, 03:46   #24
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Насколько я помню это клиентом реализуется.
SetName Не помогает. Как еще можно функциями сделать?
MaxXx2021 вне форума   Ответить с цитированием
Старый 18.03.2010, 14:16   #25
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Я имею ввиду ауру, на которую я давал ссылку.
LordJZ вне форума   Ответить с цитированием
Старый 18.03.2010, 14:33   #26
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Не функции, пакеты CMSG_GET_MIRRORIMAGE_DATA, SMSG_MIRRORIMAGE_DATA

Они отсылаются с аурой и копируют имя, гильду, прическу, лицо, одежду и т.д
MaS0n вне форума   Ответить с цитированием
Старый 19.03.2010, 03:40   #27
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Не функции, пакеты CMSG_GET_MIRRORIMAGE_DATA, SMSG_MIRRORIMAGE_DATA

Они отсылаются с аурой и копируют имя, гильду, прическу, лицо, одежду и т.д
Это я знаю, но изначально нет этой функции. Если на прическу и все остальное функции есть.

Код:
+        Player* pCreator = (Player *)m_caster; 
+        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
Вот теперь надо имя сюда вписать.
MaxXx2021 вне форума   Ответить с цитированием
Старый 21.03.2010, 08:56   #28
VENOM
Новичок
 
Аватар для VENOM
 
Регистрация: 09.03.2010
Сообщений: 26
Сказал(а) спасибо: 18
Поблагодарили 3 раз(а) в 3 сообщениях
VENOM На верном пути
По умолчанию

это уже работает? или что не хватает?

Последний раз редактировалось VENOM; 21.03.2010 в 11:05.
VENOM вне форума   Ответить с цитированием
Старый 21.03.2010, 19:06   #29
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
Вот теперь надо имя сюда вписать.
Ну может быть сюда?
Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
Код:
+        data << (uint32)0;                    // unknown
  Ответить с цитированием
Старый 23.03.2010, 03:47   #30
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
Ну может быть сюда?
Да ток я вот и спрашиваю функцию!
MaxXx2021 вне форума   Ответить с цитированием
Старый 23.03.2010, 07:45   #31
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от MaxXx2021 Посмотреть сообщение
Да ток я вот и спрашиваю функцию!
Код:
+        data << pCreator->GetName();                    // unknown
так не пойдёт?
  Ответить с цитированием
Старый 23.03.2010, 08:08   #32
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от GriffonHeart Посмотреть сообщение
Код:
+        data << pCreator->GetName();                    // unknown
так не пойдёт?
Ок, спс приду домой проверю! Теперь еще вопрос на миллион $ как копировать гильдию? Что отвечает за это? Что является названием гильдии у героя? Это SubName? Или другое?
MaxXx2021 вне форума   Ответить с цитированием
Старый 23.03.2010, 08:13   #33
Fedia22
Ученый
 
Аватар для Fedia22
 
Регистрация: 03.03.2010
Адрес: Сибирь, 58°14′00″ с. ш. 92°29′00″ в. д.
Сообщений: 288
Сказал(а) спасибо: 79
Поблагодарили 37 раз(а) в 14 сообщениях
Записей в дневнике: 18
Fedia22 На верном пути
По умолчанию

Fedia22 вне форума   Ответить с цитированием
Старый 24.03.2010, 00:21   #34
Anti
Пользователь
 
Аватар для Anti
 
Регистрация: 12.03.2010
Адрес: Беларусь
Сообщений: 54
Сказал(а) спасибо: 8
Поблагодарили 24 раз(а) в 17 сообщениях
Записей в дневнике: 1
Anti На верном пути
Отправить сообщение для Anti с помощью ICQ Отправить сообщение для Anti с помощью Skype™
По умолчанию

Anti вне форума   Ответить с цитированием
Старый 24.03.2010, 03:49   #35
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Anti Посмотреть сообщение
Код:
+        data << pCreator->GetTitle();                    // unknown
так чтоли?
MaxXx2021 вне форума   Ответить с цитированием
Старый 24.03.2010, 05:28   #36
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Код:
+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::GetObjectInWorld(guid, (Unit*)NULL);
+	if(!unit)
+		return;
+	// Get creator of the unit
+	Unit *creator = ObjectAccessor::GetObjectInWorld(unit->GetCreatorGUID(),(Unit*)NULL);
+	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();
+		data << (uint8)pCreator->getGender();
+		data << (uint8)pCreator->getClass();
+		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)pCreator->GetGuildId();  // unk
+		static const EquipmentSlots ItemSlots[] =
+		{
+			EQUIPMENT_SLOT_HEAD,
+			EQUIPMENT_SLOT_SHOULDERS,
+			EQUIPMENT_SLOT_BODY,
+			EQUIPMENT_SLOT_CHEST,
+			EQUIPMENT_SLOT_WAIST,
+			EQUIPMENT_SLOT_LEGS,
+			EQUIPMENT_SLOT_FEET,
+			EQUIPMENT_SLOT_WRISTS,
+			EQUIPMENT_SLOT_HANDS,
+			EQUIPMENT_SLOT_BACK,
+			EQUIPMENT_SLOT_TABARD,
+			EQUIPMENT_SLOT_END
+		};
+		// Display items in visible slots
+		for (EquipmentSlots const* itr = &ItemSlots[0]; *itr!=EQUIPMENT_SLOT_END; ++itr)
+		{
+			if (*itr == EQUIPMENT_SLOT_HEAD && pCreator->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM))
+				data << (uint32)0;
+			else if (*itr == EQUIPMENT_SLOT_BACK && pCreator->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK))
+				data << (uint32)0;
+			else if (Item const *item = pCreator->GetItemByPos(INVENTORY_SLOT_BAG_0, *itr))
+				data << (uint32)item->GetProto()->DisplayInfoID;
+			else
+				data << (uint32)0;
+		}
+	}
+	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 );
 }
SeT вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
MaxXx2021 (24.03.2010)
Старый 24.03.2010, 05:44   #37
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от SeT Посмотреть сообщение
Код:
+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::GetObjectInWorld(guid, (Unit*)NULL);
+	if(!unit)
+		return;
+	// Get creator of the unit
+	Unit *creator = ObjectAccessor::GetObjectInWorld(unit->GetCreatorGUID(),(Unit*)NULL);
+	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();
+		data << (uint8)pCreator->getGender();
+		data << (uint8)pCreator->getClass();
+		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)pCreator->GetGuildId();  // unk
+		static const EquipmentSlots ItemSlots[] =
+		{
+			EQUIPMENT_SLOT_HEAD,
+			EQUIPMENT_SLOT_SHOULDERS,
+			EQUIPMENT_SLOT_BODY,
+			EQUIPMENT_SLOT_CHEST,
+			EQUIPMENT_SLOT_WAIST,
+			EQUIPMENT_SLOT_LEGS,
+			EQUIPMENT_SLOT_FEET,
+			EQUIPMENT_SLOT_WRISTS,
+			EQUIPMENT_SLOT_HANDS,
+			EQUIPMENT_SLOT_BACK,
+			EQUIPMENT_SLOT_TABARD,
+			EQUIPMENT_SLOT_END
+		};
+		// Display items in visible slots
+		for (EquipmentSlots const* itr = &ItemSlots[0]; *itr!=EQUIPMENT_SLOT_END; ++itr)
+		{
+			if (*itr == EQUIPMENT_SLOT_HEAD && pCreator->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_HELM))
+				data << (uint32)0;
+			else if (*itr == EQUIPMENT_SLOT_BACK && pCreator->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK))
+				data << (uint32)0;
+			else if (Item const *item = pCreator->GetItemByPos(INVENTORY_SLOT_BAG_0, *itr))
+				data << (uint32)item->GetProto()->DisplayInfoID;
+			else
+				data << (uint32)0;
+		}
+	}
+	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 );
 }
Звание так? GetTitle() или GetTitleId() ?
MaxXx2021 вне форума   Ответить с цитированием
Старый 24.03.2010, 11:01   #38
Nordway
RMDC Donator
 
Регистрация: 07.03.2010
Адрес: Россия
Сообщений: 29
Сказал(а) спасибо: 16
Поблагодарили 18 раз(а) в 3 сообщениях
Nordway На верном пути
По умолчанию

Сегодня собрал с Мангос 9611 (не чистые) и SD2 1647 (не чистый) старую версию, т.е. без пункта 5. Теперь копируется имя и гильдия. (Спасибо Set).

При появлении нпс реагриует только на вражеских мобов, а так же:
- не ходят за мной;
- не атакуют мою цель.

Видел, что об этих багах писали выше, но в первом посте они значатся как "поправленные".

Скрины прилагаются.
Изображения
Тип файла: jpg WoWScrnShot_032410_114820.jpg (138.1 Кб, 128 просмотров)
Тип файла: jpg WoWScrnShot_032410_114911.jpg (145.4 Кб, 122 просмотров)

Последний раз редактировалось Nordway; 24.03.2010 в 11:04.
Nordway вне форума   Ответить с цитированием
Старый 24.03.2010, 16:49   #39
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Ошибка
Цитата:
2010-03-24 21:47:43 ERROR:Table `spell_script_target`: spellId 58836 listed for TargetEntry 31216 does not have any implicit target TARGET_SCRIPT(38) or TARGET_SCRIPT_COORDINATES (46) or TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT (40).
  Ответить с цитированием
Старый 25.03.2010, 03:53   #40
MaxXx2021
Ученый
 
Аватар для MaxXx2021
 
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
MaxXx2021 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Nordway Посмотреть сообщение
Сегодня собрал с Мангос 9611 (не чистые) и SD2 1647 (не чистый) старую версию, т.е. без пункта 5. Теперь копируется имя и гильдия. (Спасибо Set).

При появлении нпс реагриует только на вражеских мобов, а так же:
- не ходят за мной;
- не атакуют мою цель.

Видел, что об этих багах писали выше, но в первом посте они значатся как "поправленные".

Скрины прилагаются.
Второй пост поставили в SD2 ?
MaxXx2021 вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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



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


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