PDA

Просмотр полной версии : Расовые тотемы


ZliS
17.02.2010, 06:14
С версии 3.3.0 вроде у шаманов каждой расы свой внешний вид тотемов. На чистом ядре и базе это не реализовано. Это необходимо реализовать в базе или в самом ядре?

tempura
17.02.2010, 08:20
В ядре. Разные шкурки друидов тоже пока не реализованы.

Omg
17.02.2010, 08:30
А внешний вид и т.д. разве не к базе должен иметь отношение?

YuruY
17.02.2010, 08:50
Не внешний вид, а модельки, выборочно глянул несколько по кешу 3.3.2 - что в базе, что в кеше 1в1.

tempura
17.02.2010, 20:31
А внешний вид и т.д. разве не к базе должен иметь отношение?

Внешний вид имеет отношение только к клиенту, а никак не к базе или серверу. А вот выбор модели моба или перса делается в ядре. Именно сервер сообщает клиенту, какую модель вывести для данного моба или перса.

Alexstrasza
18.02.2010, 00:03
вообще-то работает, у тауренов деревянные по виду, у дренеев каменные "баночки"

если нужно:
MaNGOS/0.16.0 (* * Revision 9356 - *) for Linux_x64 (little-endian)
Using script library: ScriptDev2 (for MaNGOS 986e5b76ae8758d8c895edce483c8cb84801c57d +) Revision 1573 (Unix)
Using World DB: YTDB_0.11.0_R534_MaNGOS_R9356_SD2_R1573_ACID_R303_ RuDB_R34.9

клиент 3.3.2 enGB

ZliS
18.02.2010, 04:16
Про дренеев и тауренов всё давно ясно, а вот то, что теперь там же должны выдаваться отдельные модельки для троллей, орков и в перспективе дворфов - это да. Надо поковырять-поискать, где там оно происходит в ядре.

timmit
18.02.2010, 07:24
Про дренеев и тауренов всё давно ясно, а вот то, что теперь там же должны выдаваться отдельные модельки для троллей, орков и в перспективе дворфов - это да. Надо поковырять-поискать, где там оно происходит в ядре.
Поковыряйтесь и результаты нам сюда :)

ZliS
20.02.2010, 08:41
Где ломать - найдено, а вот как - большой и долгий вопрос, учитывая глубину моих сишных познаний)))
./src/game/Totem.cpp
// select totem model in dependent from owner team
CreatureInfo const *cinfo = GetCreatureInfo();
if(owner->GetTypeId() == TYPEID_PLAYER && cinfo)
{
uint32 display_id = sObjectMgr.ChooseDisplayId(((Player*)owner)->GetTeam(), cinfo);
CreatureModelInfo const *minfo = sObjectMgr.GetCreatureModelRandomGender(display_id );
if (minfo)
display_id = minfo->modelid;
SetDisplayId(display_id);
}

И сама функция в ./src/game/ObjectMgr.cpp
uint32 ObjectMgr::ChooseDisplayId(uint32 team, const CreatureInfo *cinfo, const CreatureData *data /*= NULL*/)
{
// Load creature model (display id)
if (data && data->displayid)
return data->displayid;

// use defaults from the template
uint32 display_id;

// DisplayID_A is used if no team is given
if (team == HORDE)
{
if(cinfo->DisplayID_H[0])
display_id = cinfo->DisplayID_H[1] ? cinfo->DisplayID_H[urand(0,1)] : cinfo->DisplayID_H[0];
else
display_id = cinfo->DisplayID_H[1];

if(!display_id)
display_id = cinfo->DisplayID_A[0] ? cinfo->DisplayID_A[0] : cinfo->DisplayID_A[1];
}
else
{
if(cinfo->DisplayID_A[0])
display_id = cinfo->DisplayID_A[1] ? cinfo->DisplayID_A[urand(0,1)] : cinfo->DisplayID_A[0];
else
display_id = cinfo->DisplayID_A[1];

if(!display_id)
display_id = cinfo->DisplayID_H[0] ? cinfo->DisplayID_H[0] : cinfo->DisplayID_H[1];
}

return display_id;
}

Предположительно, нужно GetTeam() махнуть на GetRace(), и в функции уже переписать на расы. Вопрос в том, кто ещё юзает ChooseDisplayId(), так что раскопки продолжаются.

timmit
20.02.2010, 09:56
В крайнем случаем добавить
sObjectMgr.ChooseDisplayIdTotem функцию например

и в ней уже делать по расам

Например мобы используют выбор модели

ZliS
20.02.2010, 14:57
Да, пожалуй новая функция будет правильней, что там ещё мэйнтейнеры придумают непонятно, а как времянку можно жестко прописать для рас дисплеиды. Теперь шукаем моделвьювер)