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

Форум администраторов игровых серверов (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)

nikitawasa 04.05.2011 12:21

TARGET_GROUND
 
Не надеюсь на ответ ну ладно, у меня появилась проблема. Я хочу сделать скил, который чар будет кастовать в выбранную точку на экране, для этого надо использовать в цели (TARGET_GROUND) - отталкивался от скила <skill id="1420" levels="1" name="Cyclone">. Фишка в том что если даже я просто его копирую, и пытаюсь юзать мне выдаёт ошибку(не помню по этому с ядра скопировал из L2PcInstance)
"WorldPosition is null for skill: "+skill.getName() + ", player: " + getName() + "."
я просмотрел всё ядро так и не нашёл хоть каких то зацепок. Кто мб знает где искать?)

Gaikotsu 04.05.2011 17:11

Re: TARGET_GROUND
 
еще и тип скилла в клиенте должен по идее соответствовать

nikitawasa 04.05.2011 17:46

Re: TARGET_GROUND
 
пааасяб всё работает

TorBenLino 28.12.2016 09:36

Re: TARGET_GROUND
 
Цитата:

Сообщение от Gaikotsu (Сообщение 120101)
еще и тип скилла в клиенте должен по идее соответствовать

где типы скилла в клиенте меняются, подскажи плес

в скиллгрп это меняется, взял скопировал с Day of doom
обычный нюк магический он дайофдум отличается ток 4 параметрами
cast_style ani_char unk_0 unk_1
ток вот нехрена непонятно за что именно они отвечают, чет инфу нигде не нарыть

finfan 28.12.2016 13:11

Re: TARGET_GROUND
 
Цитата:

Сообщение от TorBenLino (Сообщение 422315)
где типы скилла в клиенте меняются, подскажи плес

в скиллгрп это меняется, взял скопировал с Day of doom
обычный нюк магический он дайофдум отличается ток 4 параметрами
cast_style ani_char unk_0 unk_1
ток вот нехрена непонятно за что именно они отвечают, чет инфу нигде не нарыть

Гаррош, тебе важны только cast_style и ani_char.
1-ый отвечает за то, что скил при нажатии будет использовать GROUND_TARGET (иконка куда кастовать скилл) по плану в Day of Doom он будет 12. А вообще он олицетворяет тип оружия с которым производится каст, так у всех блоу скилов ты увидишь 3, у всех луков - 5 и всех обыденных скилов типо магии 1 и т.д.
2-ой отвечает за то, какие шаманские действия проводит персонаж (кастер), двигая руками ногами и т.д.

TorBenLino 28.12.2016 23:12

Re: TARGET_GROUND
 
finfan, вот мне нужно реализовать такую фишку про которую собственно эта тема, я хз че там у ТСа работает, у меня нихера не работает, для примера взял скилл сорка Rain of fire (1296), в хмлках прописал все тожесамое что и у SIGNET скиллов(id npc такойже как у day of doom), скилл грп тож поменял, и в итоге вместо того чтобы отправить мой рейн оф фаер в точку на земле(куда также призвался бы купол, id нпц потомучто прописан от купола), у меня купол летит на землю, а анимация рейн оф фаер на меня кастуется.
как бы так замутить, чтобы я мог любому скиллу дать таргет граунд(и в грп, вручную поменять) и когда я этот скилл кидаю в землю, в точке создается невидимый безплотный нпц в которого и летит скилл.
есть идеи?))

finfan 28.12.2016 23:17

Re: TARGET_GROUND
 
Цитата:

Сообщение от TorBenLino (Сообщение 422349)
finfan, вот мне нужно реализовать такую фишку про которую собственно эта тема, я хз че там у ТСа работает, у меня нихера не работает, для примера взял скилл сорка Rain of fire (1296), в хмлках прописал все тожесамое что и у SIGNET скиллов(id npc такойже как у day of doom), скилл грп тож поменял, и в итоге вместо того чтобы отправить мой рейн оф фаер в точку на земле(куда также призвался бы купол, id нпц потомучто прописан от купола), у меня купол летит на землю, а анимация рейн оф фаер на меня кастуется.
как бы так замутить, чтобы я мог любому скиллу дать таргет граунд(и в грп, вручную поменять) и когда я этот скилл кидаю в землю, в точке создается невидимый безплотный нпц в которого и летит скилл.
есть идеи?))

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

Gaikotsu 28.12.2016 23:59

Re: TARGET_GROUND
 
зачем - просто доработать обработку типа цели AREA - если задан ground loc, то высчитывать область поражения от этих координат

finfan 29.12.2016 00:42

Re: TARGET_GROUND
 
Цитата:

Сообщение от Gaikotsu (Сообщение 422352)
зачем - просто доработать обработку типа цели AREA - если задан ground loc, то высчитывать область поражения от этих координат

И ты сможешь сделать это на интерлюде, не опираясь на какие-либо объекты "невидимки" и другие статики? Ты хочешь заставить магический эффект создаться на пустом месте используя только координаты?

n3k0nation 29.12.2016 01:27

Re: TARGET_GROUND
 
Цитата:

Сообщение от finfan (Сообщение 422353)
И ты сможешь сделать это на интерлюде, не опираясь на какие-либо объекты "невидимки" и другие статики? Ты хочешь заставить магический эффект создаться на пустом месте используя только координаты?

Именно так. В MSU, в конце, есть h[h]h[ddd], где последний h - количество точек, а ddd - координаты.

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


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

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