Сабж собственно. Причем скрипт грузится, но в структуре WorldTemplate для карты 0 script_id всегда = 0. Убедиться можно при помощи патча (это не фикс! просто иллюстрация), скрипт естественно должен быть присвоен:
Код:
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index ed9a7e7..5528a13 100644
--- a/src/game/Map.cpp
+++ b/src/game/Map.cpp
@@ -1155,8 +1155,22 @@ void Map::CreateInstanceData(bool load)
{
if (WorldTemplate const* mInstance = ObjectMgr::GetWorldTemplate(GetId()))
i_script_id = mInstance->script_id;
+ DEBUG_LOG("Loading instance data for WorldMap: %u script: %u ", GetId(), i_script_id);
+ if (!i_script_id)
+ {
+ QueryResult* result = WorldDatabase.PQuery("SELECT ScriptName FROM world_template WHERE map = '%u'", GetId());
+ if (result)
+ {
+ Field* fields = result->Fetch();
+ const char* scriptname = fields[0].GetString();
+ i_script_id = sScriptMgr.GetScriptId(scriptname);
+ delete result;
+ }
+ }
+ DEBUG_LOG("Loading instance data for WorldMap: %u script: %u ", GetId(), i_script_id);
}
+
if (!i_script_id)
return;
поиски источника бага привели в район преобразования форматов в SQLStorage и тут я сломался (насколько же ... хм... запутанная система присвоения script_id в мангосе однако. непонятно только зачем она вообще, все равно все время ищем по имени...)