Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
TARGET_GROUND
#11
finfan Написал:купол делает тоже самое что вам и надо, он стоит там и кастует каждые N секунд скилл на всех, кто находится вокруг него. Чтобы эта белиберда заработала, надо вбить и эффект, но при этом создать собственный эффект RainOfFire котоырй будет делаеть почти тоже самое что и купол только с изменением анимации при отправке пакета MagicSkillUse.

Можно пожалуйста по подробнее про изменение анимации, прост вообще не шарю в этом, пока только сделал так, что я кастую мой рейн оф фаер на землю(а анимация на меня кастуется) на земле появляться купол и через секунду кастует блейзинг серкл(с анимацией только в том случае если в зону действия попадали цели) и потом купол исчезает. как бы так сделать чтоб анимация он серкла была в любом случае, и купола небыло видно(есть в л2 нпц, вообще невидимки?), а то что эффект проходит не сразу а через секунду, это наверн в "SignetEffect" в "onActionTime" надо менять что-то.
Ответ
#12
TorBenLino Написал:Можно пожалуйста по подробнее про изменение анимации, прост вообще не шарю в этом, пока только сделал так, что я кастую мой рейн оф фаер на землю(а анимация на меня кастуется) на земле появляться купол и через секунду кастует блейзинг серкл(с анимацией только в том случае если в зону действия попадали цели) и потом купол исчезает. как бы так сделать чтоб анимация он серкла была в любом случае, и купола небыло видно(есть в л2 нпц, вообще невидимки?), а то что эффект проходит не сразу а через секунду, это наверн в "SignetEffect" в "onActionTime" надо менять что-то.

1. Сперва найди NPC невидимку. Открой skillgrp.dat и найди LineageNPC.clear_npc
2. Сделай копию этого NPC в skillgrp.dat.
3. Создай NPC на сервере под прототип твоих куполов, просто скопируй и вставь, незабудь поменять ID. ID в skillgrp и xml/datebase должны быть одинаковы.
4. Дальше создай эффект EffectTestSignet, который в onActionTime() будет возвращать true.
5. Отправь в onActionTime() пакет MagicSkillUse(нашнпц,нашнпц,1171,1,500,0,0)

Делай всё по аналогу с куполом (спавн купола), обработку урона пока не делай. Добейся того, чтобы твой NPC стоял и визуально он кастовал блэзинг циркл.

Когда это будет работать, тогда делай обработку урона. И ещё, анимацию rain of fire у персонажа убери, её за тебя NPC невидимка кастанёт.
Ответ
#13

https://www.youtube.com/embed/RZ0t_AxzsBc
L2J HF
Ответ
#14
LifeGame32, Скилл называется "пи*дец фпсу в масс замесе".
Ответ
#15
finfan Написал:1. Сперва найди NPC невидимку. Открой skillgrp.dat и найди LineageNPC.clear_npc
2. Сделай копию этого NPC в skillgrp.dat.
3. Создай NPC на сервере под прототип твоих куполов, просто скопируй и вставь, незабудь поменять ID. ID в skillgrp и xml/datebase должны быть одинаковы.
4. Дальше создай эффект EffectTestSignet, который в onActionTime() будет возвращать true.
5. Отправь в onActionTime() пакет MagicSkillUse(нашнпц,нашнпц,1171,1,500,0,0)

Делай всё по аналогу с куполом (спавн купола), обработку урона пока не делай. Добейся того, чтобы твой NPC стоял и визуально он кастовал блэзинг циркл.

Когда это будет работать, тогда делай обработку урона. И ещё, анимацию rain of fire у персонажа убери, её за тебя NPC невидимка кастанёт.

кароче нпц я сделал, только у него имеется имя(NoNameNpc) которое висит на пустом месте.
начиная с 4 пунткта я вообще непонял ничего. есть класс signeteffect и в нем, в методе onAction туева хуча кода в конце он возвращает тру и там же отправляется пакет

_actor.broadcastPacket(new MagicSkillUse(_actor, cha, _skill.getId(), _skill.getLevel(), 0, 0));

ну да ладно, я просто сделал пустого нпц и когда юзаю рейноффаер мой нпц кастует сиркл(в том числе и начальная анимация идет, кольцо огненное вокруг персонажа), но опятьже только если цели под это аое есть рядом, а когда кастуешь серкл со своего чара анимация то в любом случае проходит.

Но я понял что мне совсем не это нужно. Нужно чтобы не нпц кастовал скилл, а именно мой чар кастовал скил в этого нпц. Походу нужно сам таргет гроунд изменить как-то чтобы можно было его приписать любому скиллу и чар юзал бы этот скилл на создающегося ,на несколько секунд, в указаной точке нпц. Тобишь вот этот нпц должен являться целью скила!!

Т.к. в задумке например такой скилл: активирую, нажимаю на землю, мой чар туда телепортируется(тоесть получает xyz создающегося нпц и тпшится к нему)
или тупо хурикены в землю запускать, чтоб они прям летели от моего чара, до нпц.

вот эта вся фишка с созданием, и последующим удалением, нпц прописана в сигнетах(в скилзах и эффектах), а как мне её чисто для таргет граунда переделать?
Ответ
#16
TorBenLino Написал:кароче нпц я сделал, только у него имеется имя(NoNameNpc) которое висит на пустом месте.

В клиенте имя НПЦ добавь, в нпц добавь условие: не отображать имя, не брать таргет, не наносить урон (этому нпц) - эти все примеры есть в нпц что используют стандартные купола
п.с. зачем вы через такой *ЗАД* все это делаете, нпц свободных полно, но видимо леть *Тупо найти их...
Ответ
#17
когда используешь скиллы типа signet есть одна проблема..
если тыкнуть бежать в даль и нажать на скилл, то персонаж останавливается и появляется курсор прицела(наконечник посоха), но на самом деле персонаж продолжает движение в указанную ранее точку и по серверным координатам и в клиентах у других чаров он тоже продолжает бежать туда.
только в своем клиенте останавливается, а когда нажимаешь на землю с курсором прицела позиция обновляется согласно серверным координатам.
может ошибаюсь но по моему в ядре не описан процесс перехода в режим "прицела". как сделать так, чтобы когда я включаю прицел в моем клиенте тоже отображалось движения чара?
Ответ
#18
TorBenLino Написал:когда используешь скиллы типа signet есть одна проблема..
если тыкнуть бежать в даль и нажать на скилл, то персонаж останавливается и появляется курсор прицела(наконечник посоха), но на самом деле персонаж продолжает движение в указанную ранее точку и по серверным координатам и в клиентах у других чаров он тоже продолжает бежать туда.
только в своем клиенте останавливается, а когда нажимаешь на землю с курсором прицела позиция обновляется согласно серверным координатам.
может ошибаюсь но по моему в ядре не описан процесс перехода в режим "прицела". как сделать так, чтобы когда я включаю прицел в моем клиенте тоже отображалось движения чара?

Когда используешь signet реализации L2J - это уже проблема.
Вам надо найти все применения TARGET_GROUND и посмотреть, что там происходит. Как правило, остановка при юзе скила происходит в PlayerAI.java в методе thinkCast, если хроники Interlude, а сборка на основе L2J. Он бежит дальше, потому что где-то косяк в maybeToPawn (AI). Однако если он останавливается на "экране", значит происходит валидация, после которой он всё равно продолжает бежать внутри сервера.

По хорошему, вам стоит удалить всё что связано с TARGET_GROUND (включая скилы, коих там очень и очень мало). Взять себя в руки и полностью переписать систему TARGET_GROUND скилов.

1
Ответ
#19
Когда входишь в "режим прицеливания" код не попадает в thinkCast, на персе по прежнему CtrlIntention moveto
вооружившись телегой костылей сделал почти все что хотел получить.
1) юзаю скил
2) указываю место
3) туда спавнится нпц, в него летит плюха
4) ловит все нужные таргеты в радиусе
5) урон и анимация проходит нормально
косяк остается лишь с тем что когда я на бегу врубаю прицел чар на клиенте встает

еще намоздрячил такую фишку, если серверные и клиентские координаты расходяться по X или Y больше чем на 50, отправляется пакет

character.broadcastPacket(new MoveToLocation(character));

в итоге когда вклчаю прицел перс встает на пол секунды, потом продолжает бежать с ярым желание догнать свои серверные координаты
но это полная хрень так как выглядит очень упорото и даже при обычном беге координаты могут разойтись больше чем на 50 раза 3 за секунду
совсем нет идей как это дело законтрить
Ответ
#20
/del
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)