Показать сообщение отдельно
Старый 04.05.2011, 07:06   #1
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию Карта 0 (вост. королевства) не получает script_id

Сабж собственно. Причем скрипт грузится, но в структуре 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 в мангосе однако. непонятно только зачем она вообще, все равно все время ищем по имени...)
rsa вне форума   Ответить с цитированием