Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Квесты/Анимация наложения Npc -> Player
Поиск

Анимация наложения Npc -> Player

9 ответов315 просмотровСейчас просматривают: 1
Baium
Baium

Пользователь

Бывалый

Постов: 103

На форуме с: 17.04.2009

Репутация: +292

Рейтинг: 0

· 14.08.2009, 15:20

Добрый день пользователи La2Base.
В общем картина следующая: решил я сделать бафера по типу Npc -> Player, т.е. Npc делает анимацию наложения бафа и тем самым накладывает эффект бафа на Player'a.
Я сделал так: Player нажимаем на баф и показует как бы он сам себе наносит анимацию бафа, но я хотел бы сделать так: Player нажимает на баф, Npc кастует анимацию бафа якобы на себе и накладывает эффект бафа на Player'a.
Вопрос: как такое осуществить?
Мои соображения: вот скрипт на наложения бафа Player -> Player
Пример на бафе Berserker Spirit:

Цитата
st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1062
,2,350,0))

Так вот я думаю схема следующая:
Цитата
st.getPlayer(). --- Игрок
broadcastPacket --- отправляет пакет на сервер
(MagicSkillUser --- использования анимации скила
(st.getPlayer(), --- на игрока
st.getPlayer(), ---
1062, --- бафа под id
2, --- бафа lvl'a
350, --- время каста анимации
0)) --- повтор каста


А я хочу чтобы было так: Npc отправляет пакет наиспользование анимации скила на игрока ну и тд id lvl скила...

Я думаю следует из этого вывод что следует заменить каким запросом первую переменную вот эту st.getPlayer(). но какой запрос я незнаю, уже испробывал много и не один не подошол и выдаёт ошибку скрипт эррор что атрибут не найдет. Но я не исключаю вариант что вот эта строчка тоже играет какуюто важную роль в моей проблеме
Цитата
def onEvent(self,event,st):

Помогите пожалуйста такое реализовать. Дайте наводку хоть какую-нибудь.
Заранее благодарен.

0
Gradesk
Gradesk

Пользователь

Ветеран

Постов: 639

На форуме с: 09.04.2008

Репутация: +619

Рейтинг: 0

· 16.08.2009, 22:48

В общем тут всё чуть проще:
st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1062
,2,350,0))

Рассмотрим то что идёт после "MagicSkillUser":
Думаю сразу так напишу чтобы понятнее было:
(кто кастует,на кого кастует,Айди скила,Левел скила,Время каста скила,Время перед повторным использованием)
К примеру можно будет первый сделать так (кастера):
st.getPlayer().getTarget()
и тогда по идеи НПС будет кастером и чар будет тем на кого кастуют :).

0
S
smart-one

Пользователь

Участник

Постов: 82

На форуме с: 02.06.2008

Репутация: +8

Рейтинг: 0

· 17.08.2009, 00:01

А сюда можно както этио впихнуть?

Код
                    st.takeItems(prise_ID,Chant_prise)
                    SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
                    return "chant_warcryer2.htm"        
                    st.setState(State.COMPLETED)

0
Baium
Baium

Пользователь

Бывалый

Постов: 103

На форуме с: 17.04.2009

Репутация: +292

Рейтинг: 0

· 17.08.2009, 00:20

smart-one: А сюда можно както этио впихнуть?


Это в Баф скрипт
Код
st.takeItems(prise_ID,Chant_prise)
st.getPlayer().getTarget().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1362,1,350,0)
SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
return "chant_warcryer2.htm"        
st.setState(State.COMPLETED)


А это в самый вверх, в импорты
Код
from net.sf.l2j.gameserver.serverpackets import MagicSkillUser


И будет тебе анимация твоего бафа на этот скил.

to Gradesk
Я вот добавил твой код, но о также продолжает как говорится сам себе накладывать эффект анимации.

Вот как у меня выглядит скрипт, может чего подскажеш что я сделал не так:
Код
def onEvent(self,event,st):
        htmltext = event
        count=st.getQuestItemsCount(ADENA_ID)
        if count < ADENA_PRICE :
            htmltext = "Adena.htm"
        else:
            st.takeItems(ADENA_ID,0)
            st.getPlayer().setTarget(st.getPlayer())

            #Acumen
            if event == "1":
                st.takeItems(ADENA_ID,ADENA_PRICE)
                st.getPlayer().getTarget().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1085,3,350,0))
                SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer())
                return "Buff.htm"
                st.setState(COMPLETED)

0
Gradesk
Gradesk

Пользователь

Ветеран

Постов: 639

На форуме с: 09.04.2008

Репутация: +619

Рейтинг: 0

· 17.08.2009, 09:05

Baium: Это в Баф скрипт
Код
st.takeItems(prise_ID,Chant_prise)
st.getPlayer().getTarget().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1362,1,350,0)
SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
return "chant_warcryer2.htm"        
st.setState(State.COMPLETED)


А это в самый вверх, в импорты
Код
from net.sf.l2j.gameserver.serverpackets import MagicSkillUser


И будет тебе анимация твоего бафа на этот скил.

to Gradesk
Я вот добавил твой код, но о также продолжает как говорится сам себе накладывать эффект анимации.

Вот как у меня выглядит скрипт, может чего подскажеш что я сделал не так:
Код
def onEvent(self,event,st):
        htmltext = event
        count=st.getQuestItemsCount(ADENA_ID)
        if count < ADENA_PRICE :
            htmltext = "Adena.htm"
        else:
            st.takeItems(ADENA_ID,0)
            st.getPlayer().setTarget(st.getPlayer())

            #Acumen
            if event == "1":
                st.takeItems(ADENA_ID,ADENA_PRICE)
                st.getPlayer().getTarget().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1085,3,350,0))
                SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer())
                return "Buff.htm"
                st.setState(COMPLETED)


Вы не правильно поняли, не туда добавили ".getTarget()" :), вот как надо:
Цитата
st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer().getTarget(),st.getPlayer(),1085,3,350,0))

0
Baium
Baium

Пользователь

Бывалый

Постов: 103

На форуме с: 17.04.2009

Репутация: +292

Рейтинг: 0

· 18.08.2009, 05:28

Цитата(Gradesk @ 17.8.2009, 12:05) <{POST_SNAPBACK}>
Вы не правильно поняли, не туда добавили ".getTarget()" :), вот как надо:
Цитата
st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer().getTarget(),st.getP
layer(),1085,3,350,0))



Сделал всё как Вы написали, заменил на это:
Цитата
st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer().getTarget(),st.getP
layer(),1085,3,350,0))

и эффект остался такойже: игрок использует сам на себе анимацию.
Может есть другие подходы к этому ?
И ещё одно: как можно сделать так чтобы все анимации эффектов присходили на "Бафающем NPC" а сам эффект бафа давался игроку?

0
xxblxx
xxblxx

Пользователь

Бывалый

Постов: 306

На форуме с: 17.12.2009

Репутация: +55

Рейтинг: 0

· 22.08.2009, 00:34

SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer(
)) -уважаемые...вот строка отвечающая за эффект (визуальный)

0
Gradesk
Gradesk

Пользователь

Ветеран

Постов: 639

На форуме с: 09.04.2008

Репутация: +619

Рейтинг: 0

· 23.08.2009, 21:03

xxblxx: SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer(
)) -уважаемые...вот строка отвечающая за эффект (визуальный)

Вы не правильно поняли тему.

Автору:
Всё работает так как я сказал, но единсветнное о чём я подумал - может у вас ранее стоит выдать чару новую цель?
Тогда можно провернуть вот такой вариант:
заменить оневен на "onAdvEvent(self,event,npc,player)"
После сразу поставить "st = player.getQuestState(qn)" иначе квест не поймёт что такое "ст".
И тогда уже в строчке "st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer()
,SkillID,SkillLevel,....." Поставить в место первого "st.getPlayer()" вот так "npc"
Если быть точным то выглядеть должно так:
st.getPlayer().broadcastPacket(MagicSkillUser(npc,st.getPlayer(),SkillID,SkillLevel,.....

Это я лично првоерил и всё работает как надо.

0
Baium
Baium

Пользователь

Бывалый

Постов: 103

На форуме с: 17.04.2009

Репутация: +292

Рейтинг: 0

· 23.08.2009, 21:38

Спасибо всё работает отлично)

0
Войдите или зарегистрируйтесь чтобы ответить