| 
		
	
	
	
		
	Сообщений: 75 
	Тем: 15 
	Зарегистрирован: Jul 2016
	
 Репутация: 
0 
	
	
		finfan Написал:купол делает тоже самое что вам и надо, он стоит там и кастует каждые N секунд скилл на всех, кто находится вокруг него. Чтобы эта белиберда заработала, надо вбить и эффект, но при этом создать собственный эффект RainOfFire котоырй будет делаеть почти тоже самое что и купол только с изменением анимации при отправке пакета MagicSkillUse. 
Можно пожалуйста по подробнее про изменение анимации, прост вообще не шарю в этом, пока только сделал так, что я кастую мой рейн оф фаер на землю(а анимация на меня кастуется) на земле появляться купол и через секунду кастует блейзинг серкл(с анимацией только в том случае если в зону действия попадали цели) и потом купол исчезает. как бы так сделать чтоб анимация он серкла была в любом случае, и  купола небыло видно(есть в л2 нпц, вообще невидимки?), а то что эффект проходит не сразу а через секунду, это наверн в "SignetEffect" в "onActionTime" надо менять что-то.
	 
	
	
	
		
	Сообщений: 1,058 
	Тем: 129 
	Зарегистрирован: May 2009
	
 Репутация: 
11,626 
	
	
		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 невидимка кастанёт.
	 
	
	
	
		
	Сообщений: 42 
	Тем: 0 
	Зарегистрирован: Nov 2013
	
 Репутация: 
75 
	
		
		
		12-29-2016, 03:07 AM 
(Сообщение последний раз редактировалось: 12-30-2016, 05:22 AM   LifeGame32.)
		
	 
		
https://www.youtube.com/embed/RZ0t_AxzsBc
			L2J HF PHP код: <?php MoveBackwardToLocation
 
 if (activeChar.getEffectList().isAffectedBySkill(313))// 313 прицельный огонь
 {
 try
 {
 L2Spawn sp = new L2Spawn(32580);// 32580 LineageNPC.camera_target_dummy
 sp.setXYZ(new Location(_targetX, _targetY, _targetZ));
 activeChar.sendPacket(new MagicSkillUse(activeChar, sp.doSpawn(), 1467, 1, 2503, 5000));
 ThreadPoolManager.getInstance().scheduleEvent(() -> sp.getLastSpawn().deleteMe(), 10000);
 }
 catch (Exception e)
 {
 // TODO: handle exception
 }
 }
 
 
	
	
	
		
	Сообщений: 1,610 
	Тем: 44 
	Зарегистрирован: Jan 2016
	
 Репутация: 
1,353 
	
	
		LifeGame32, Скилл называется "пи*дец фпсу в масс замесе".
	 
	
	
	
		
	Сообщений: 75 
	Тем: 15 
	Зарегистрирован: Jul 2016
	
 Репутация: 
0 
	
		
		
		12-29-2016, 08:04 AM 
(Сообщение последний раз редактировалось: 12-29-2016, 10:25 AM   TorBenLino.)
		
	 
		finfan Написал:1. Сперва найди NPC невидимку. Открой skillgrp.dat и найди LineageNPC.clear_npc2. Сделай копию этого 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 создающегося нпц и тпшится к нему) 
или тупо хурикены в землю запускать, чтоб они прям летели от моего чара, до нпц.
 
вот эта вся фишка с созданием, и последующим удалением, нпц прописана в сигнетах(в скилзах и эффектах), а как мне её чисто для таргет граунда переделать?
	 
	
	
	
		
	Сообщений: 81 
	Тем: 1 
	Зарегистрирован: Feb 2014
	
 Репутация: 
117 
	
	
		TorBenLino Написал:кароче нпц я сделал, только у него имеется имя(NoNameNpc) которое висит на пустом месте. 
В клиенте имя НПЦ добавь, в нпц добавь условие: не отображать имя, не брать таргет, не наносить урон (этому нпц) - эти все примеры  есть в нпц что используют стандартные купола  
п.с. зачем вы через такой *ЗАД* все это делаете, нпц свободных полно, но видимо леть *Тупо найти их...
	 
	
	
	
		
	Сообщений: 75 
	Тем: 15 
	Зарегистрирован: Jul 2016
	
 Репутация: 
0 
	
	
		когда используешь скиллы типа signet есть одна проблема..если тыкнуть бежать в даль и нажать на скилл, то персонаж останавливается и появляется курсор прицела(наконечник посоха), но на самом деле персонаж продолжает движение в указанную ранее точку и по серверным координатам и в клиентах у других чаров он тоже продолжает бежать туда.
 только в своем клиенте останавливается, а когда нажимаешь на землю с курсором прицела позиция обновляется согласно серверным координатам.
 может ошибаюсь но по моему в ядре не описан процесс перехода в режим "прицела". как сделать так, чтобы когда я включаю прицел в моем клиенте тоже отображалось движения чара?
 
	
	
	
		
	Сообщений: 1,058 
	Тем: 129 
	Зарегистрирован: May 2009
	
 Репутация: 
11,626 
	
	
		TorBenLino Написал:когда используешь скиллы типа signet есть одна проблема..если тыкнуть бежать в даль и нажать на скилл, то персонаж останавливается и появляется курсор прицела(наконечник посоха), но на самом деле персонаж продолжает движение в указанную ранее точку и по серверным координатам и в клиентах у других чаров он тоже продолжает бежать туда.
 только в своем клиенте останавливается, а когда нажимаешь на землю с курсором прицела позиция обновляется согласно серверным координатам.
 может ошибаюсь но по моему в ядре не описан процесс перехода в режим "прицела". как сделать так, чтобы когда я включаю прицел в моем клиенте тоже отображалось движения чара?
 
Когда используешь signet реализации L2J - это уже проблема.  
Вам надо найти все применения TARGET_GROUND и посмотреть, что там происходит. Как правило, остановка при юзе скила происходит в PlayerAI.java  в методе thinkCast , если хроникиInterlude , а сборка на основе L2J . Он бежит дальше, потому что где-то косяк в maybeToPawn (AI). Однако если он останавливается на "экране", значит происходит валидация, после которой он всё равно продолжает бежать внутри сервера.
 
По хорошему, вам стоит удалить всё что связано с TARGET_GROUND (включая скилы, коих там очень и очень мало). Взять себя в руки и полностью переписать систему TARGET_GROUND скилов.
 
			1 Вот основные факторы по структуре, с которых начинал я, чтобы добиться определённых результатов. 
Описание: нажимая на скил, мы можем указывать где будет его срабатывание (и его анимации. По факту оно должно выглядит как:
 ![[Изображение: aR0hXa4xR4mEdXVC5SBM7w.png]](https://image.prntscr.com/image/aR0hXa4xR4mEdXVC5SBM7w.png)  
Всеми этими параметрами обладает L2Skill, когда вы создаёте его в .xml. 
Но дальше сложнее, вызвать скилл на координатах и отладить работу не сложно, сложно заставить анимацию проигрываться в этом месте. В интерлюдах, нам по любому нужен объект - дочерний от NPC или чарактера, который может бросать broadcastPacket->toAllinRadius. 
Т.е. указав на место в игре, запускается стандартная схема каста, которая дёргает onMagicSkillLaunched() метод, который вызывает анимацию на ЦЕЛИ. Созданный вам инстанс на основе NPC должен учитывать: 
1. Союзников 
2. Врагов 
3. Siege 
4. PVP 
5. Попал ли в зону кастер 
6. Суммонов 
У вас уже есть похожий EffectPointInstance, можно даже использовать его.
 
Дальше вам надо учесть самые главные фишки данной способности: 
1. Если мы указали на координаты, дистанция которых выше чем допустимо в скиле, тогда чар должен бежать к ним, как будто он кастует обычный TARGET_ONE скилл. Тут надо использовать maybePawnOnPosition() или что-то вроде. 
2. При начале каста,должен создавать NPC дочерник, который вызовет анимацию на таргетах вокруг СЕБЯ (а не вас).
 
P.S. Согласно слухам, существует мистический пакет, который передаёт данные NPC в виде объекта, что позволяет на нём использовать анимацию без полноценных тяжёлых функции как спавн дочернего NPC, но я такой никогда не видел в живую.
 
	
	
	
		
	Сообщений: 75 
	Тем: 15 
	Зарегистрирован: Jul 2016
	
 Репутация: 
0 
	
	
		Когда входишь в "режим прицеливания" код не попадает в thinkCast, на персе по прежнему CtrlIntention movetoвооружившись телегой костылей сделал почти все что хотел получить.
 1) юзаю скил
 2) указываю место
 3) туда спавнится нпц, в него летит плюха
 4) ловит все нужные таргеты в радиусе
 5) урон и анимация проходит нормально
 косяк остается лишь с тем что когда я на бегу врубаю прицел чар на клиенте встает
 
 еще намоздрячил такую фишку, если серверные и клиентские координаты расходяться по X или Y больше чем на 50, отправляется пакет
 
 character.broadcastPacket(new MoveToLocation(character));
 
 в итоге когда вклчаю прицел перс встает на пол секунды, потом продолжает бежать с ярым желание догнать свои серверные координаты
 но это полная хрень так как выглядит очень упорото и даже при обычном беге координаты могут разойтись больше чем на 50 раза 3 за секунду
 совсем нет идей как это дело законтрить
 
	
	
	
		
	Сообщений: 1,610 
	Тем: 44 
	Зарегистрирован: Jan 2016
	
 Репутация: 
1,353 |