• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
[C++] NPC-Музыкант [50]
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Всем привет!
Написал NPC-Музыканта,который играет музыку,добавленную в клиент.
В данном примере NPC проигрывает 3 песни моей любимой группы - The Offspring.
Скриншот:

C++ код NPC:
[hide=50]http://pastebin.com/cPX8yTZS[/hide]
Патч в клиент и дбц для сервера:
[hide=50]http://fbe.am/5b5[/hide]
Так же нужно прописать его в ScriptLoader,CmakeLists.
Создайте моба сами и установите ему скриптнейм music_npc

Немного о том,как добавить свою музыку...
1. Модифицируем скрипт ядра
1.1 Добавляем дефайны
2.1.1
Code

                 enum Music
{
     // Объявляем музыку,добавленную в дбц     
MUSIC_тут_то_что_взбредет_вам_в_голову   = ид_на_1_больше_последнего,

2.1.2 Объявляем пункты меню
Code
#define GOSSIP_тут_все_что_взбредет_вам_в_голову   "название вашей песни"

2.2 Добавляем пункты меню в нпс
Code
bool OnGossipHello(Player* player, Creature* creature)
               {
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, тут_вводим_то_что_писали_в_пункте_2.1.2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+число_на1_больше_предыдущего);

2.3 Добавляем обработчик выбора госсипа
Code
                  case GOSSIP_ACTION_INFO_DEF+3:
                  SendMusicToPlayers(MUSIC_FIX_YOU);
                  player->CLOSE_GOSSIP_MENU();
                  break;
   case GOSSIP_ACTION_INFO_DEF+номер_на_один_больше_предыдущего:
                  SendMusicToPlayers(из_пункта_2.1.1);
                  player->CLOSE_GOSSIP_MENU();
                  break;

3. Модифицируем клиент и серверные DBC
3.1 Сохраняем свою песню в формате *.wav
3.2 Открываем патч,выложенный выше редактором MPQ
3.3 Добавляем свою песню в папку /Sound/Creature/LiveMusic/
3.4 Запоминаем название песни,которую добавили в патч
3.5 Открываем SoundEntries.dbc из папки DBFilesClient
3.6 По аналогии с последней строкой создаем новую,с тем ид,который вы писали во время пункта 2.1.1
3.7 Копируем SoundEntries.dbc в папку сервера/dbc/
3.8 Сохраняем патч

На этом все.
Сообщение # 1 отредактировано МучительТринити - Среда, 18.04.2012, 11:52
C3mak
Dev
МучительТринити, так же можно и с видео )
Сообщение # 2 написано 16.04.2012 в 14:36
Оружейник
Скаут
МучительТринити, правильно я понимаю это таким макаром нужно босам прикрепить музыку во время боя с ним! И будет играть музыка в игре при агро боса? Ну как димитро типа сделал музыка в кузне?

Добавлено (16.04.2012, 14:52)
---------------------------------------------

Quote (Cemak)
так же можно и с видео

а как можно прикрепить видео к квестам? Например при прохождении квеста на офе часто видео играет) Это тоже нужно искать в дбцшниках нужные ролики и в ядре привязывать их к квесту а именно к местности по квесту? Ну чтобы как заходиш в определенную часть с нужным квестом видио сробатывало?
Сообщение # 3 написано 16.04.2012 в 14:52
Dimitro
Praise the sun!
Quote (Оружейник)
МучительТринити, правильно я понимаю это таким макаром нужно босам прикрепить музыку во время боя с ним!

Можно, но не нужно.
Музыка воспроизводящаяся через script_text это очень грязный хак.
Причем имеющий много недостатков.

Например нельзя нормально таргетировать цель, которой будет слышна музыка.
В данном случае музыка будет слышна ВСЕМ, кто находится в радиусе видимости данного типа данного script_text'a.

Quote (Оружейник)
Ну как димитро типа сделал музыка в кузне?

Я делал с помощью отправления пакета на проигрывание музыки напрямую игроку.
ИМХО наиболее правильный и наименее ресурсозатратный путь.

Quote (Оружейник)
Например при прохождении квеста на офе часто видео играет)

Во времена 3.3.5 видушек на оффе во время квестов не было.
Сейчас же там тоже отправляется определенный пакет игроку, и видушки там сняты не заранее, а генерируются с помощью снятия сцен на движке игры.

Quote (Cemak)
МучительТринити, так же можно и с видео )

Через script_text нельзя.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 4 отредактировано Dimitro - Понедельник, 16.04.2012, 17:09
Оружейник
Скаут
Quote (Dimitro)
Например нельзя нормально таргетировать цель, которой будет слышна музыка. В данном случае музыка будет слышна ВСЕМ, кто находится в радиусе видимости данного типа данного script_text'a.

Ну да и норм игроки боса душат и музыка играет) Нада пробовать учиться)

Quote (Dimitro)
Во времена 3.3.5 видушек на оффе во время квестов не было.

Возможно на офе начал играть только с каты(

Спс за разъяснения)))
Сообщение # 5 написано 16.04.2012 в 15:45
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Quote (Dimitro)
Например нельзя нормально таргетировать цель, которой будет слышна музыка.

Мне хотелось сделать музыку в радиусе видимости..
В следующих версиях будет сделано по другому..

Добавлено (16.04.2012, 18:03)
---------------------------------------------
Обновил скрипт,теперь он работает методом отправки пакетов игрокам.
SQL запрос стал не нужен...

Добавлено (17.04.2012, 04:29)
---------------------------------------------
Обновил гайд.

Сообщение # 6 отредактировано МучительТринити - Вторник, 17.04.2012, 03:34
Оружейник
Скаут
МучительТринити, молодец + твой) Это получается если новую не добовлять то можно просто указать список писен уже которые есть в клиенте?
Quote (МучительТринити)
Обновил скрипт,теперь он работает методом отправки пакетов игрокам

И такой вопрос теперь музыка будет слышна всем или только тому кто использует?
Сообщение # 7 отредактировано Оружейник - Вторник, 17.04.2012, 07:14
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, да,можно указать ту,что уже есть в клиенте.
Музыка будет проиграна всем,кто находится в локации с запустившим игроком.
В следующей версии добавлю возможность вывода только запустившему игроку.
Сообщение # 8 отредактировано МучительТринити - Вторник, 17.04.2012, 12:10
Оружейник
Скаут
спс круто))) Можно ивент дискотеку типа сделать))) Сцену рок-группу и метал)) спс)

Добавлено (17.04.2012, 16:12)
---------------------------------------------
При компиляции была 1 ошибка

Code
11>d:\trinitycore\src\server\scripts\custom\music_npc.cpp(62): warning C4700: использована неинициализированная локальная переменная "creature"


сама строчка в скрипте
Code
Map::PlayerList const& players = creature->GetMap()->GetPlayers();


Ядро скомпилило но в чем было дело?
Сообщение # 9 написано 17.04.2012 в 16:12
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, чуть позже гляну..
Сообщение # 10 написано 17.04.2012 в 16:22
Оружейник
Скаут
ок) Но почему вот только 1 тема играет? Ну 1 из списка а 2 и 3 нет(((( Взяла трох даже настальгия) Давно не слушал эти темы(

Добавлено (17.04.2012, 16:36)
---------------------------------------------
При смене локи когда возврощаешся музыка перестает играть((( Т е я в 2 окна создал 2 блуда 1 включил музыку и стоял а 2 побежал посмотреть расстояние на котором она слышна) Когда забежал за мост сменилась лока музыка пропала но когда вернулся назад в предыдущую локу она уже не играла а на 2 блуде все еще была)

Сообщение # 11 написано 17.04.2012 в 16:36
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, хз,если честно,сам тестировал на 1ом пункте,остальные чекну..
Про локации,спасибо,пофиксим.
Сообщение # 12 написано 17.04.2012 в 17:38
_dm666
<3 Death Metal
Quote (Оружейник)
ошибка

Quote (Оружейник)
warning

facepalm
Quote (Оружейник)
При смене локи когда возврощаешся музыка перестает играть((( Т е я в 2 окна создал 2 блуда 1 включил музыку и стоял а 2 побежал посмотреть расстояние на котором она слышна) Когда забежал за мост сменилась лока музыка пропала но когда вернулся назад в предыдущую локу она уже не играла а на 2 блуде все еще была)

А ты почитай структуру .adt файла. Поймешь.
Сообщение # 13 написано 17.04.2012 в 18:18
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Извиняюсь,проблема была в моей кривизне..Минут через пятнадцать обновлю скрипт...

Добавлено (18.04.2012, 11:53)
---------------------------------------------
Обновил скрипт. Поправил баги с возпроизведением остальных композиций. Объединил действия в switch. smile

Сообщение # 14 написано 18.04.2012 в 11:53
Оружейник
Скаут
( Музыки почему ваще нету( Но все кнопки в меню норм уже нажимаются)))) До этого только 1 нажималась(
Сообщение # 15 написано 18.04.2012 в 13:45
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, все проверил,все должно быть ок..
Сообщение # 16 написано 18.04.2012 в 13:49
Оружейник
Скаут
Может тогда что не так сделал? Скачал патч закинул в клиент) дбц файл кинул в файлы с дбц)
В music_npc.cpp просто скопировал и вставил твой текст) и скомпилил (ошибок не было) и все!
В игре поставил нпц
Сообщение # 17 написано 18.04.2012 в 13:51
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, проверь,включены ли звуки клиента wink
Сообщение # 18 написано 18.04.2012 в 13:56
Оружейник
Скаут
да звук был но не музыки( птички стартовая мелодия в игре
Сообщение # 19 написано 18.04.2012 в 13:57
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, странно...
Сообщение # 20 написано 18.04.2012 в 14:02
unit64
Скаут
Спасибо
Сообщение # 21 написано 18.04.2012 в 14:14
ebjaiko
Командир
Вопрос зачем это?)
Сообщение # 22 написано 18.04.2012 в 14:16
Оружейник
Скаут
Quote (ebjaiko)
Вопрос зачем это?)

Ну мне понравилось) Можно ивенты интересные делать) и не только)
печаль последняя чет не пошла(

Добавлено (18.04.2012, 15:39)
---------------------------------------------
Народ у кого все норм пашет???? У меня почему только в стартовой локе Кровавых Эльфов и все(((( Больше ни где не работают((( В чем может быть дело? По делу 3 песни работают корректно )))) Тема фикс кул такой не слышал)

Сообщение # 23 написано 18.04.2012 в 15:39
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, они работают в той локации,в которой запустишь..
т.е запустил ты в дуротаре,слышно в дуротаре,запустил ты на респе бладов,слышно у бладов...
Сообщение # 24 написано 18.04.2012 в 16:19
Оружейник
Скаут
МучительТринити, Я когда ставлю самого нпц у эльфов то норм! Но когда ставлю в другой локе то уже не пашет! Ну например поставил нпц музыка в шторме запустил но толку нету! Потом взял поставил нпц музыка в локе эльфов и запустил слышно)) Или можно только 1 нпц в игре? 2 и более бестолку?
Сообщение # 25 написано 18.04.2012 в 16:37
Repack
▅ ▇ █ ♪♫] ♫♪ █ ▇ ▅
Оружейник, странно...проверю...
Сообщение # 26 написано 18.04.2012 в 17:05
Оружейник
Скаут
У кого нить есть такой баг как у меня? Или у всех норм пашет во всех локах? Просто сколько тестил (пару дней проверял) только у эльфой крови пашет(
Сообщение # 27 написано 23.04.2012 в 01:08
Linkidar
Скаут
МучительТринити, Отлично
Сообщение # 28 написано 23.04.2012 в 15:25
  • Страница 1 из 1
  • 1
Поиск: