![]() |
![]() |
|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Скрипты ScriptDev2 |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
![]() |
![]()
Ну начну с того что поправил одну ошибку в эскорте, а именно что когда ставим паузу эскорту и к примеру на эскортера нападают, то при выходе из комбата он бежит месту спауна в базе. Щас, при паузе, он будет бежать к месту начала атаки.
Вторая модификация. Незнаю как на оффе (я сужу по другим играм), если игрок отстает от эскортера он останавливается, поворачивается к игроку и ждет его (радиус отставания я сделал 28), подбегаем к нему на расстояние 10 он снова начинает бежать. Думаю это будет гораздо лудше чем он умрет. Делал на основе курицы в танарисе ![]() Для того чтобы эскортер игнорировал остановку и не ждал, пишем так Start(true); Сразу говорю я гитом не пользуюсь и черепахой, escort.cpp полностью. |
![]() |
![]() |
![]() |
#2 | |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 | |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
![]() |
![]() Цитата:
![]() ![]() |
|
![]() |
![]() |
![]() |
#4 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
![]() |
![]() |
![]() |
![]() |
![]() |
#5 |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
![]() |
![]() |
![]() |
![]() |
![]() |
#6 |
Администратор
|
![]()
В СД2 при сопровождении нпц идет по точкам с паузами, если они есть.
При вхождении нпц в бой в точке 3, после окончания боя он вернется в точку 3 и продолжит путь к точке 4. Упомянутый квест на курицу в Танарисе и подобные ему работают именно так (те, что мне довелось выполнять). |
![]() |
![]() |
![]() |
#7 | |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
![]() |
![]() Цитата:
Тралл входит в бой, ну скажем игроки более одеты, тралл выходит из комбата и бежит к месту спауна в базе, что потверждает данный текст Код:
void npc_escortAI::EnterEvadeMode() { m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); if (HasEscortState(STATE_ESCORT_ESCORTING)) { debug_log("SD2: EscortAI has left combat and is now returning to CombatStartPosition."); if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) { AddEscortState(STATE_ESCORT_RETURNING); float fPosX, fPosY, fPosZ; m_creature->GetCombatStartPosition(fPosX, fPosY, fPosZ); m_creature->GetMotionMaster()->MovePoint(POINT_LAST_POINT, fPosX, fPosY, fPosZ); } } else { if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) m_creature->GetMotionMaster()->MoveTargetedHome(); } Reset(); } он начинает движение. А если будет HasEscortState(STATE_ESCORT_PAUSED) куда он побежит? |
|
![]() |
![]() |
![]() |
#8 |
Администратор
|
![]()
Надо еще в базе посмотреть, назначен ли ему АИ-скрипт, т.к. часто скрипты СД2 и АИ идут вместе, о чем пишется в коммитах на форуме СД2.
Если АИ есть, то это может сильно изменить общее поведение заскриптованного нпц. |
![]() |
![]() |
![]() |
#9 | |
Ученый
Регистрация: 09.03.2010
Адрес: Кыргызстан
Сообщений: 266
Сказал(а) спасибо: 41
Поблагодарили 115 раз(а) в 34 сообщениях
![]() |
![]() Цитата:
![]() Код:
void npc_escortAI::EnterEvadeMode() { m_creature->RemoveAllAuras(); m_creature->DeleteThreatList(); m_creature->CombatStop(true); m_creature->SetLootRecipient(NULL); if (HasEscortState(STATE_ESCORT_ESCORTING) || HasEscortState(STATE_ESCORT_PAUSED)) { debug_log("SD2: EscortAI has left combat and is now returning to CombatStartPosition."); if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) { float fPosX, fPosY, fPosZ; m_creature->GetCombatStartPosition(fPosX, fPosY, fPosZ); if(!HasEscortState(STATE_ESCORT_PAUSED)) { AddEscortState(STATE_ESCORT_RETURNING); m_creature->GetMotionMaster()->MovePoint(POINT_LAST_POINT, fPosX, fPosY, fPosZ); } else m_creature->GetMotionMaster()->MovePoint(0, fPosX, fPosY, fPosZ); } } else { if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) m_creature->GetMotionMaster()->MoveTargetedHome(); } Reset(); } |
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|