Fehler #12253
geschlossen[Mechanik] Pet zählt nicht als Quest Kill Trigger
Alle Begleiter (übernommene Kreaturen, Wächter oder Pets) leiten Questteilerfolge nun an ihre Besitzer weiter.
Beschreibung
Hallo, bin neu bei WoW konnte aber zu diesem Fehler(?) nichts finden.
Bestimmte Quest kills werden nicht als solche getiggert wenn mein Jägerpet diese ausführt und nicht mein Chrakter (nur lasthit)
Beispielt ist: [Von der Geißel eingenommen] in der Boreanische Tundra.
setzt mein Pet den Lasthit kommt nichts aus dem Netz.
macht der Charakter den Lasthit kommt unabhängig ob mein Pet schaden gemacht hat oder nicht ein Peon oder anderer NSC aus dem Netz.
Betrifft auch diverse andere NSC Kill Quest. Tritt immer dann auf wenn man vorher einen bebuff (Item) auf den NSC anwenden muss.
Betrift keinen reinen Killquests!
bei Sammelquest (von getöteten Mobs) bin ich nicht sicher.
Untergeordnete Tickets
Von Rushor vor fast 10 Jahren aktualisiert
das liegt aber individuell an den scripts.
bei dem ding in der tundra wurde vergessen den petowner mit einzubauen:
void JustDied(Unit* killer) OVERRIDE { Player* player = killer->ToPlayer(); if (!player) return; if (player->GetQuestStatus(QUEST_TAKEN_BY_THE_SCOURGE) == QUEST_STATUS_INCOMPLETE) { uint8 rand = urand(0, 3); if (rand == 3) { player->CastSpell(me, SPELL_FREED_WARSONG_PEON, true); player->KilledMonsterCredit(NPC_WARSONG_PEON, 0); } else if (rand < 3) player->CastSpell(me, nerubarVictims[rand], true); } }
ein allgmeiner fehler sollte es nicht sein.
fallen dir spontan die anderen quests auch ein?
Von Storm_ vor fast 10 Jahren aktualisiert
leider nicht mit namen, aber vielleicht kennst du sie:
heulende Fjorde, befreie XX aus Kokongs.
Drachenöde - Neu Herdweiler - Die quest wo 4-5 NSC zum verleumnen gebracht werden müssen.
sry mehr kann ich gerade nicht sicher sagen.
Von Storm_ vor fast 10 Jahren aktualisiert
Gleicher Bug:
https://db.rising-gods.de/?quest=12955
Von Rushor vor mehr als 9 Jahren aktualisiert
https://db.rising-gods.de/?quest=12939
vermutlich der identische Fehler wie in #13664
Von Rushor vor mehr als 9 Jahren aktualisiert
Ich bin mir nicht ganz sicher, aber entweder wenn mein Pet am ende die aggro hatte, oder wenn er den last hit hatte, erhalte ich als besitzer des Pets keinen killcredit. Vermutlicher jedoch beim last hit, da so ich das programmiert hätte. Ich denke der fehler ist, dass der der dmg dealer vom last hit den credit bekommt, und nicht auf pet gecheckt wird.
Wenn man aber auf lasthit und so achtet, geht die quest, bzw ohne pet problemlos.
Von erimioa vor mehr als 9 Jahren aktualisiert
vielleicht kann man da aber wirklich einen "allgemeinen" fix einbauen, indem man bei KilledMonsterCredit und bei SpellEffect für quest credits und blub, das mit den Pet einbaut. Dies würde dann auch für Zukunft die quests bei Cata genauso betreffen. Sonst müsste man wirklich FÜR JEDE quest wo das der fall ist, die von hand eintragen.
Von Rushor vor mehr als 9 Jahren aktualisiert
[Quest][Drachenöde] Die Verleumdung
Die Quest funktioniert zumindest beim Hunter nicht. Mob bekommt zwar Debuff, aber nach dem kill passiert nichts weiter.
Vermutlich gleicher Bug wie bei #3142 .
Video vom 15.05.2015: http://youtu.be/HijUoRFFhcE
Von gundalf vor mehr als 9 Jahren aktualisiert
- Thema wurde von Jäger Pet zählt nicht als Quest Kill Trigger zu [Jäger] Pet zählt nicht als Quest Kill Trigger geändert
Von Rushor vor mehr als 9 Jahren aktualisiert
Von Rushor vor fast 9 Jahren aktualisiert
Beschreibung
Quest: "Ehrenhafte Herausforderung" ( https://db.rising-gods.de/?quest=12939 ), besiege 4 namenhafte NPC und 6 Mjordinkrieger
Problem: Wenn man sie als Jäger absolvieren möchte, bekommt man weder bei den namenhaften NPCs noch bei den
6 zu besiegenden Mjordingkriegern ( https://db.rising-gods.de/?npc=30037 ) wenn das Pet den finalen Schlag macht,
damit der NPC wieder auf neutral bzw der Mjordinkrieger besiegt wird.
Workaround: Nur wenn man zB das Pet auf defensiv stellt und selbst den letzten Schuss abgibt, bekommt man den Kill/Sieg
zugeschrieben.
Erwartetes Verhalten: Auch wenn das Pet den finalen Schlag macht, muss dem Spieler in der Quest der Fortschritt
vermerkt werden
Von Rushor vor mehr als 8 Jahren aktualisiert
Von Rushor vor mehr als 8 Jahren aktualisiert
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 8084914..2f4b6f6 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -448,10 +448,20 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { // Special handling for vehicles if (IsUnit(*itr)) + { if (Vehicle* vehicle = (*itr)->ToUnit()->GetVehicleKit()) + { for (SeatMap::iterator it = vehicle->Seats.begin(); it != vehicle->Seats.end(); ++it) if (Player* player = ObjectAccessor::FindPlayer(it->second.Passenger.Guid)) player->AreaExploredOrEventHappens(e.action.quest.quest); + } + else if (Player* player = (*itr)->ToUnit()->GetCharmerOrOwnerPlayerOrPlayerItself()) + { + player->AreaExploredOrEventHappens(e.action.quest.quest); + TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS: Player guidLow %u credited quest %u", + (*itr)->GetGUID().GetCounter(), e.action.quest.quest); + } + }
Von Rushor vor mehr als 8 Jahren aktualisiert
- Thema wurde von [Jäger] Pet zählt nicht als Quest Kill Trigger zu [Mechanik] Pet zählt nicht als Quest Kill Trigger geändert
- Status wurde von Neu zu Bestätigt geändert
Von Rushor vor mehr als 8 Jahren aktualisiert
muss hier:
case SMART_ACTION_CALL_KILLEDMONSTER: { if (e.target.type == SMART_TARGET_NONE || e.target.type == SMART_TARGET_SELF) // Loot recipient and his group members { if (!me) break; if (Player* player = me->GetLootRecipient()) { player->RewardPlayerAndGroupAtEvent(e.action.killedMonster.creature, player); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction: SMART_ACTION_CALL_KILLEDMONSTER: Player %u, Killcredit: %u", player->GetGUIDLow(), e.action.killedMonster.creature); } } else // Specific target type { ObjectList* targets = GetTargets(e, unit); if (!targets) break; for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) { if (IsPlayer(*itr)) { (*itr)->ToPlayer()->KilledMonsterCredit(e.action.killedMonster.creature); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction: SMART_ACTION_CALL_KILLEDMONSTER: Player %u, Killcredit: %u", (*itr)->GetGUIDLow(), e.action.killedMonster.creature); } else if (IsUnit(*itr)) // Special handling for vehicles if (Vehicle* vehicle = (*itr)->ToUnit()->GetVehicleKit()) for (SeatMap::iterator itr = vehicle->Seats.begin(); itr != vehicle->Seats.end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(itr->second.Passenger.Guid)) player->KilledMonsterCredit(e.action.killedMonster.creature); } delete targets; } break; }
auch noch überarbeitet werden
Von Rushor vor mehr als 8 Jahren aktualisiert
- Status wurde von Bestätigt zu Ready geändert
- Update Text Deutsch aktualisiert (Vergleich)
hinzugefügt für:
SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS
SMART_ACTION_CALL_GROUPEVENTHAPPENS
SMART_ACTION_CALL_KILLEDMONSTER
Von Rushor vor mehr als 8 Jahren aktualisiert
Bedeutung Live:
Der Bug wurde erfolgreich behoben und befindet sich auf dem Spielserver. Sollte der Fehler weiterhin bestehen sollte ein neues Ticket ( https://redmine.rising-gods.de/projects/live/issues/new ) erstellt werden. Anmerkungen in dem alten abgewiesenen oder live genommenen Ticket werden ignoriert und gelöscht.