YTDB

YTDB (http://ytdb.ru/index.php)
-   Ядро (http://ytdb.ru/forumdisplay.php?f=25)
-   -   Расовые тотемы (http://ytdb.ru/showthread.php?t=3405)

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

Цитата:

Сообщение от Omg (Сообщение 12294)
А внешний вид и т.д. разве не к базе должен иметь отношение?

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

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 (Сообщение 12355)
Про дренеев и тауренов всё давно ясно, а вот то, что теперь там же должны выдаваться отдельные модельки для троллей, орков и в перспективе дворфов - это да. Надо поковырять-поискать, где там оно происходит в ядре.

Поковыряйтесь и результаты нам сюда :)

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

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


Текущее время: 07:59. Часовой пояс GMT +4.

YTDB - MaNGOS DataBase