Ru-MaNGOS

Вернуться   Ru-MaNGOS > Разработка скриптов > Патчи

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.11.2010, 17:28   #1
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию [QUEST=10769] Удар исподтишка

Реализация работы квестов:
http://ru.wowhead.com/quest=10769
http://ru.wowhead.com/quest=10776
Реализует правильную работу данных квестов. Убийство НПС засчитывается лишь в том случае, если игрок убиват мобов одев выдаваемую накидку.
Патч:
PHP код:
Indexscripts/outland/shadowmoon_valley.cpp
===================================================================
--- 
scripts/outland/shadowmoon_valley.cpp    (revision 1892)
+++ 
scripts/outland/shadowmoon_valley.cpp    (working copy)
@@ -
17,+17,@@
 
/* ScriptData
 SDName: Shadowmoon_Valley
 SD%Complete: 100
-SDComment: Quest support: 10519, 10583, 10601, 10781, 10814, 10804, 10854, 11082, 10458, 10480, 10481. Vendor Drake Dealer Hurlunk.
+SDComment: Quest support: 10519, 10583, 10601, 10769, 10776, 10781, 10814, 10804, 10854, 11082, 10458, 10480, 10481. Vendor Drake Dealer Hurlunk.
 SDCategory: Shadowmoon Valley
 EndScriptData */
 
@@ -36,+36,@@
 
event_spell_soul_captured_credit
 npc_lord_illidan_stormrage
 go_crystal_prison
+mob_crazed_colossus
 EndContentData 
*/
 
 
#include "precompiled.h"
@@ -1440,+1441,34 @@
     return 
true;
 }
 
+
/*###
+# mob_crazed_colossus
+####*/
+enum
+{
+    
SPELL_ILLIDARI_DISGUISE_M        38225,
+    
SPELL_ILLIDARI_DISGUISE_F        38227,
+
+    
NPC_CRAZED_COLOSSUS_KILL_CREDIT 22051
+};
+
struct MANGOS_DLL_DECL mob_crazed_colossusAI : public ScriptedAI
+{
+    
mob_crazed_colossusAI(CreaturepCreature) : ScriptedAI(pCreature){Reset();}
+
+    
void Reset() {}
+
+    
void JustDied(UnitpKiller)
+    {
+        
PlayerpPlayer pKiller->GetCharmerOrOwnerPlayerOrPlayerItself();
+        if (
pKiller->GetTypeId() == TYPEID_PLAYER && (pKiller->HasAura(SPELL_ILLIDARI_DISGUISE_M) || pKiller->HasAura(SPELL_ILLIDARI_DISGUISE_F)))
+                
pPlayer->KilledMonsterCredit(NPC_CRAZED_COLOSSUS_KILL_CREDITm_creature->GetGUID());
+    }
+};
+
CreatureAIGetAI_mob_crazed_colossus(Creature* (pCreature))
+{
+    return new 
mob_crazed_colossusAI(pCreature);
+}
+
 
void AddSC_shadowmoon_valley()
 {
     
Script *newscript;
@@ -
1521,+1550,@@
     
newscript->Name "go_crystal_prison";
     
newscript->pGOQuestAccept = &GOQuestAccept_GO_crystal_prison;
     
newscript->RegisterSelf();
+    
+    
newscript = new Script;
+    
newscript->Name "mob_crazed_colossus";
+    
newscript->GetAI = &GetAI_mob_crazed_colossus;
+    
newscript->RegisterSelf();
 } 
PHP код:
UPDATE `creature_templateSET `KillCredit2`='0', `ScriptName`='mob_crazed_colossus' WHERE `entry`='19823'
virusav, оформи, пожалуйста, на форуме SD2...
KiriX вне форума   Ответить с цитированием
Старый 30.11.2010, 17:56   #2
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Код:
Player* Unit::GetCharmerOrOwnerPlayerOrPlayerItself()
...
return GetTypeId()==TYPEID_PLAYER ? (Player*)this : NULL;
Мне кажется, что не нужно
Код:
pKiller->GetTypeId() == TYPEID_PLAYER
virusav вне форума   Ответить с цитированием
Старый 30.11.2010, 18:01   #3
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Код:
Player* Unit::GetCharmerOrOwnerPlayerOrPlayerItself()
...
return GetTypeId()==TYPEID_PLAYER ? (Player*)this : NULL;
Мне кажется, что не нужно
Код:
pKiller->GetTypeId() == TYPEID_PLAYER
Ну в общем-то да, хотя там проверка иная, моба может убить другой моб, но на нём врядли будет аура с нужного итема. А вообще первая строка никак не влияет на то, что попадёт в if, поэтому перестраховался.
Можно убирать - я сам тестил без этой строки - эту проверку только для патча добавил.
Хотя скорее эту проверку следовало бы вынести самой первой...
KiriX вне форума   Ответить с цитированием
Старый 30.11.2010, 18:09   #4
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Теоретически можно в момент смерти нпц на АИ переводить его во вторую фазу, где через EVENT_T_MISSING_BUFF, EVENT_T_BUFFED или EVENT_T_TARGET_BUFFED проверять ауру на игроке.

Если прокатит, то подобные квесты можно будет реализовывать средствами АИ.
virusav вне форума   Ответить с цитированием
Старый 30.11.2010, 19:09   #5
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Теоретически можно в момент смерти нпц на АИ переводить его во вторую фазу, где через EVENT_T_MISSING_BUFF, EVENT_T_BUFFED или EVENT_T_TARGET_BUFFED проверять ауру на игроке.

Если прокатит, то подобные квесты можно будет реализовывать средствами АИ.
Ага, хорошая идея, попробую. Но как это будет работать для группы?
А если в момент смерти НПС будет пробегать другой игрок, не в пати, но с аурой?
После смерти разве у НПС будет таргет?
Попробовал наоборот. Если есть аура - переводим во вторую фазу. Во второй фазе при смерти киллкредит.
Но опять таки, а если группа и второй член группы не имеет ауры?
PHP код:
UPDATE `creature_templateSET `AIName` = 'EventAI' WHERE `entry` = '19823';
DELETE FROM `creature_ai_scriptsWHERE (`id`='19823050');
INSERT INTO `creature_ai_scriptsVALUES ('19823050''19823''24''0''100''0''38225''0''0''0''22''1''0''0''0''0''0''0''0''0''0''0''ytdb');
DELETE FROM `creature_ai_scriptsWHERE (`id`='19823051');
INSERT INTO `creature_ai_scriptsVALUES ('19823051''19823''24''0''100''0''38227''0''0''0''22''1''0''0''0''0''0''0''0''0''0''0''ytdb');
DELETE FROM `creature_ai_scriptsWHERE (`id`='19823052');
INSERT INTO `creature_ai_scriptsVALUES ('19823052''19823''6''1''100''0''0''0''0''0''33''22051''6''0''22''0''0''0''0''0''0''0''ytdb'); 
Но у ми не работает, может что-то не так сделал...
KiriX вне форума   Ответить с цитированием
Старый 06.12.2010, 19:48   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

В дбц нашел спелл 38223 Quest Credit: Crazed Colossus, у которого
Код:
Effect 0: Id 77 (SPELL_EFFECT_SCRIPT_EFFECT)
BasePoints = 38224
Targets (25, 37) (TARGET_DUELVSPLAYER, TARGET_AREAEFFECT_PARTY)
Возможно, в момент смерти нпц должен кастовать спелл 38223, в эффекте которого проверяется наличие у целей ауры, указанной в BasePoints.

Если бы в таблицах _scripts были кондиции, то многое можно было реализовать через них.
virusav вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[SQL patch] Improved Stormstrike (Сокрушительный удар бури) Insider42 Патчи на рассмотрении 1 26.08.2011 20:10
[10769] Fixed trainer flags uses for pet trainers. newsbot CMaNGOS Commits 0 21.11.2010 23:52


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


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