Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   TARGET_GROUND (https://forum.zone-game.info/showthread.php?t=13866)

TorBenLino 29.12.2016 01:35

Re: TARGET_GROUND
 
Цитата:

Сообщение от finfan (Сообщение 422350)
купол делает тоже самое что вам и надо, он стоит там и кастует каждые N секунд скилл на всех, кто находится вокруг него. Чтобы эта белиберда заработала, надо вбить и эффект, но при этом создать собственный эффект RainOfFire котоырй будет делаеть почти тоже самое что и купол только с изменением анимации при отправке пакета MagicSkillUse.

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

finfan 29.12.2016 02:56

Re: TARGET_GROUND
 
Цитата:

Сообщение от TorBenLino (Сообщение 422356)
Можно пожалуйста по подробнее про изменение анимации, прост вообще не шарю в этом, пока только сделал так, что я кастую мой рейн оф фаер на землю(а анимация на меня кастуется) на земле появляться купол и через секунду кастует блейзинг серкл(с анимацией только в том случае если в зону действия попадали цели) и потом купол исчезает. как бы так сделать чтоб анимация он серкла была в любом случае, и купола небыло видно(есть в л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 невидимка кастанёт.

LifeGame32 29.12.2016 03:07

Re: TARGET_GROUND
 

https://www.youtube.com/embed/RZ0t_AxzsBc
L2J HF:
Свернуть ↑Развернуть ↓

Emperor 29.12.2016 04:00

Re: TARGET_GROUND
 
LifeGame32, Скилл называется "пи*дец фпсу в масс замесе".

TorBenLino 29.12.2016 08:04

Re: TARGET_GROUND
 
Цитата:

Сообщение от finfan (Сообщение 422358)
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 создающегося нпц и тпшится к нему)
или тупо хурикены в землю запускать, чтоб они прям летели от моего чара, до нпц.

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

NoizeBD 29.12.2016 11:35

Re: TARGET_GROUND
 
Цитата:

Сообщение от TorBenLino (Сообщение 422369)
кароче нпц я сделал, только у него имеется имя(NoNameNpc) которое висит на пустом месте.

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

TorBenLino 15.11.2017 22:16

Re: TARGET_GROUND
 
когда используешь скиллы типа signet есть одна проблема..
если тыкнуть бежать в даль и нажать на скилл, то персонаж останавливается и появляется курсор прицела(наконечник посоха), но на самом деле персонаж продолжает движение в указанную ранее точку и по серверным координатам и в клиентах у других чаров он тоже продолжает бежать туда.
только в своем клиенте останавливается, а когда нажимаешь на землю с курсором прицела позиция обновляется согласно серверным координатам.
может ошибаюсь но по моему в ядре не описан процесс перехода в режим "прицела". как сделать так, чтобы когда я включаю прицел в моем клиенте тоже отображалось движения чара?

finfan 16.11.2017 05:36

Re: TARGET_GROUND
 
Цитата:

Сообщение от TorBenLino (Сообщение 428970)
когда используешь скиллы типа signet есть одна проблема..
если тыкнуть бежать в даль и нажать на скилл, то персонаж останавливается и появляется курсор прицела(наконечник посоха), но на самом деле персонаж продолжает движение в указанную ранее точку и по серверным координатам и в клиентах у других чаров он тоже продолжает бежать туда.
только в своем клиенте останавливается, а когда нажимаешь на землю с курсором прицела позиция обновляется согласно серверным координатам.
может ошибаюсь но по моему в ядре не описан процесс перехода в режим "прицела". как сделать так, чтобы когда я включаю прицел в моем клиенте тоже отображалось движения чара?

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

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

1:
Свернуть ↑Развернуть ↓

TorBenLino 21.11.2017 02:56

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

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

character.broadcastPacket(new MoveToLocation(character));

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

Emperor 21.11.2017 15:18

Re: TARGET_GROUND
 
/del


Текущее время: 23:23. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot