Entry Xx Has Events But No Events Added To List Because Of Instance Flags

Hi,

I just found weird bugs recently in SmartAI. For example for the firework dummy creature 15882, this error happens

Entry XX has events but no events added to list because of instance flags

and no smartAI is triggered.

But for the creature 15584, which is basically the same, but scripted in EventAI, it works. It also works with the creature spawned alone, but not when it is spawn with the spell/item 26286/21557

Is there a special flag for this kind of spell triggered creature ?

Another question : it is normal that smartAI scripts aren’t triggered where the creature is summon by a scriptedAI boss?

Good night

Luciolis

That means your spawning it on an “instanced” map.

http://www.trinitycore.info/Smart_scripts_tc2#event_flags

need to be set so it will do the proper thing (if anything) for the set modes.

Thanks for your answers. the event flag is set to 1. And no, it was not spawned in an instanced map, (it was on the GM island), but it was summoned by a spell (or a C++ scripts).

I also noticed that NPCs summoned by a quest, smartAI or c++ script have non functional SmartAI scripts.

Edit in fact it is related. This NPC is summoned by a smart AI script :


2012-01-29 19:44:48 Creature 1037878 used AI is SmartAI.

2012-01-29 19:44:48 SmartScript::OnInitialize: source is Creature 18399

2012-01-29 19:44:48 ERROR: SmartScript: Entry 18399 has events but no events added to list because of instance flags.

but when I summon it with .npc add, there is no error like that and the script runs flawlessly.

GM Island is instanced.

No it’s not, gmisland is map 1, you can reach it with hacks.

Mh. Any ideas ? Are the SAI scripts from any creature summoned by another one (or a spell) functioning?

Yes, they are working

Oh. It’s a DB error for me. It would be maybe more secure to add a check in void SmartScript::GetScript()


    if (me)

    {

	    e = sSmartScriptMgr->GetScript(-((int32)me->GetDBTableGUIDLow()), mScriptType);

	    if (e.empty() || me->GetDBTableGUIDLow() == 0)

		    e = sSmartScriptMgr->GetScript((int32)me->GetEntry(), mScriptType);

	    FillScript(e, me, NULL);

    }