Перейти к содержанию
Авторизация  
pvpgate

Взаимодействие с NPC и самонами

Рекомендуемые сообщения

Всем привет

Сборка lostworld

Интересует взаимодействие (разговор и атака) с Npc и со своим самоном.

В каких классах искать это?

Проблема: автоатака по своему пету прерывается после первого удара, хотя не должна. По нпц не прерывается. И после разговора с нпц есть задержка, как на птс, а со своим петом нет, хотя должна быть. Хочу найти классы/методы в которых это происходит, и настроить пета аналогично нпц.

Всем спасибо за подсказки!

Изменено пользователем pvpgate

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрите пакет AttackRequest и Action. Там должно быть что-то вроде вызова виртуального\абстрактного метода onAction у GameObject, а соотвественно частные инстансы типа нпц, самонов, петов, игроков этот метод реализуют по своему.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
28 минут назад, lvlkoo сказал:

Смотрите пакет AttackRequest и Action. Там должно быть что-то вроде вызова виртуального\абстрактного метода onAction у GameObject, а соотвественно частные инстансы типа нпц, самонов, петов, игроков этот метод реализуют по своему.

Сложновато. Т.е. мне по сути нужен метод onAction в этих классах(нпц, самое и т.д.)?

Я правильно понимаю что самон это gameserver/model/servitor.java , и именно его onAction мне нужен?

И в случае с нпц куда смотреть?

model/instances/npcInstance.java ?

Или npcFriendInstance.java ?

Не совсем понимаю разницу. Или я вообще не туда смотрю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
27 минут назад, pvpgate сказал:

Т.е. мне по сути нужен метод onAction в этих классах(нпц, самое и т.д.)?

Да.

Смотреть в model/instances/*.java

Там вы можете найти NpcInstance, PetInstance, SummonIntance итд

ПС. Реализации метода может и не быть в конченом инстансе, она может быть гдето у родителя.

Изменено пользователем lvlkoo
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное самым быстрым будет вариант с тем, чтобы открыть клас GameObject, найти там onAction и использовать функцию IDE Go to -> Implementations (Если вы конечно используете IDE). Увидите весь список реализаций метода

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, lvlkoo сказал:

Наверное самым быстрым будет вариант с тем, чтобы открыть клас GameObject, найти там onAction и использовать функцию IDE Go to -> Implementations (Если вы конечно используете IDE). Увидите весь список реализаций метода

Спасибо, и еще вопросик, чтоб не создавать лишних тем, где искать переход самона в боевую стойку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, pvpgate сказал:

Спасибо, и еще вопросик, чтоб не создавать лишних тем, где искать переход самона в боевую стойку?

 

Все там же. в summon\pet instance, по ключевым словам attackstance, должно быть что вроде startAttackStanceTask\stopAttackStanceTask

Там собственно методы которые шлют клиенту пакеты AutoAttackStart\AutoAttackStop

Изменено пользователем lvlkoo
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, lvlkoo сказал:

Наверное самым быстрым будет вариант с тем, чтобы открыть клас GameObject, найти там onAction и использовать функцию IDE Go to -> Implementations (Если вы конечно используете IDE). Увидите весь список реализаций метода

Весь вечер ковырялся, но так и не понял, почему у меня прерывается автоатака по самону. Да и где она находится тоже.
в instances в summoninstance и petinstance вообще нет ни слова об атаке. Есть в model/servitor добавил логирование:
 

		else if(isAutoAttackable(player))
		{
			player.getAI().Attack(this, false, shift);
			player.sendMessage("message servitor"+isAutoAttackable(player));
		}


но при атаке сообщение не получаю, хотя аналогичное в npcinstance
 

		if(isAutoAttackable(player))
		{
			player.getAI().Attack(this, false, shift);
			player.sendMessage("message npc "+isAutoAttackable(player));
			return;
		}

дает мне сообщение при атаке мобов (но не НПЦ, что тоже запутало меня)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

@pvpgate Действуйте от обратного

1 час назад, lvlkoo сказал:

Там собственно методы которые шлют клиенту пакеты AutoAttackStart\AutoAttackStop

Находите эти пакеты, далее с помощью функции IDE "Find Usages" надите где эти пакеты отправляются, конкретнее ищите упоминания в классах связанные с самоном. Не забывайте, что они наследники всяких там Creature и тд, и могут не иметь собственных реализаций методов, которые работают с тасками автоатаки и вся магия может просиходить в базовом класе

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там скорее основная логика в классе-родителе (ищите в нужных методах по ключевым словам super). Смотрите класс Playable (он является одним из супер классов для Pet\Summon Instance), метод doAttack(). Возможно ещё нужно будет смотреть checkTarget в родительских классах (родители относительно Pet\Summon)


PS: совет: почитайте что такое наследование в джава, как оно устроено, что позволяет делать и для чего его используют.
 

Изменено пользователем Rovskoi
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, lvlkoo сказал:

 

@pvpgate Действуйте от обратного

Находите эти пакеты, далее с помощью функции IDE "Find Usages" надите где эти пакеты отправляются, конкретнее ищите упоминания в классах связанные с самоном. Не забывайте, что они наследники всяких там Creature и тд, и могут не иметь собственных реализаций методов, которые работают с тасками автоатаки и вся магия может просиходить в базовом класе

 

2 минуты назад, Rovskoi сказал:

Там скорее основная логика в классе-родителе (ищите в нужных методах по ключевым словам super). Смотрите класс Playable (он является одним из супер классов для Pet\Summon Instance), метод doAttack(). Возможно ещё нужно будет смотреть checkTarget в дочерних-родительских классах.


PS: совет: почитайте что такое наследование в джава, как оно устроено, что позволяет делать и для чего его используют.
 

мне кажется мы немного запутались, речь идет не об авто атаке пета, а о том что хозяин самона при атаке на своего самона через ctrl проводит 1 удар и останавливается, хотя должен продолжать. А при атаке NPC через ctrl продолжает его бить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну это не сильно дела меняет, все те же методы doAttack(), checkTarget(), но теперь только Player < Playable < Creature
(возможно есть какие-то триггеры которые прерывают таск на автоатаку, тут нужно смотреть)

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, pvpgate сказал:

 

мне кажется мы немного запутались, речь идет не об авто атаке пета, а о том что хозяин самона при атаке на своего самона через ctrl проводит 1 удар и останавливается, хотя должен продолжать. А при атаке NPC через ctrl продолжает его бить.

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

И автоатака работает по флагу, то есть если чар не флагнутый автоатака не проводится, а если флагнутый или пк - то проводится.

Пет в данной ситуации - не флагнутый, попробуйте твина загрузите с суммоном и по нему автоатаку проведите когда враг будет во флагнутом состоянии и без флага. Наверняка по флагу автоатака пройдет.

Тогда решение наипростейшее :)

Изменено пользователем UltrusAra

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...