Анимация наложения Npc -> Player
Добрый день пользователи La2Base.
В общем картина следующая: решил я сделать бафера по типу Npc -> Player, т.е. Npc делает анимацию наложения бафа и тем самым накладывает эффект бафа на Player'a.
Я сделал так: Player нажимаем на баф и показует как бы он сам себе наносит анимацию бафа, но я хотел бы сделать так: Player нажимает на баф, Npc кастует анимацию бафа якобы на себе и накладывает эффект бафа на Player'a.
Вопрос: как такое осуществить?
Мои соображения: вот скрипт на наложения бафа Player -> Player
Пример на бафе Berserker Spirit:
,2,350,0))
Так вот я думаю схема следующая:
broadcastPacket --- отправляет пакет на сервер
(MagicSkillUser --- использования анимации скила
(st.getPlayer(), --- на игрока
st.getPlayer(), ---
1062, --- бафа под id
2, --- бафа lvl'a
350, --- время каста анимации
0)) --- повтор каста
А я хочу чтобы было так: Npc отправляет пакет наиспользование анимации скила на игрока ну и тд id lvl скила...
Я думаю следует из этого вывод что следует заменить каким запросом первую переменную вот эту st.getPlayer(). но какой запрос я незнаю, уже испробывал много и не один не подошол и выдаёт ошибку скрипт эррор что атрибут не найдет. Но я не исключаю вариант что вот эта строчка тоже играет какуюто важную роль в моей проблеме
Помогите пожалуйста такое реализовать. Дайте наводку хоть какую-нибудь.
Заранее благодарен.
В общем тут всё чуть проще:
st.getPlayer().broadcastPacket(MagicSkillUser(st.getPlayer(),st.getPlayer(),1062
,2,350,0))
Рассмотрим то что идёт после "MagicSkillUser":
Думаю сразу так напишу чтобы понятнее было:
(кто кастует,на кого кастует,Айди скила,Левел скила,Время каста скила,Время перед повторным использованием)
К примеру можно будет первый сделать так (кастера):
st.getPlayer().getTarget()
и тогда по идеи НПС будет кастером и чар будет тем на кого кастуют :).
А сюда можно както этио впихнуть?
SkillTable.getInstance().getInfo(1362,1).getEffects(st.getPlayer(),st.getPlayer())
return "chant_warcryer2.htm"
st.setState(State.COMPLETED)
smart-one: А сюда можно както этио впихнуть?
Это в Баф скрипт
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)
А это в самый вверх, в импорты
И будет тебе анимация твоего бафа на этот скил.
to Gradesk
Я вот добавил твой код, но о также продолжает как говорится сам себе накладывать эффект анимации.
Вот как у меня выглядит скрипт, может чего подскажеш что я сделал не так:
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)
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()" :), вот как надо:
layer(),1085,3,350,0))
Сделал всё как Вы написали, заменил на это:
layer(),1085,3,350,0))
и эффект остался такойже: игрок использует сам на себе анимацию.
Может есть другие подходы к этому ?
И ещё одно: как можно сделать так чтобы все анимации эффектов присходили на "Бафающем NPC" а сам эффект бафа давался игроку?
SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer(
)) -уважаемые...вот строка отвечающая за эффект (визуальный)
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,.....
Это я лично првоерил и всё работает как надо.



