-
Posts
2,105 -
Credits
0 -
Joined
-
Last visited
-
Days Won
8 -
Feedback
100%
Content Type
Articles
Profiles
Forums
Store
Posts posted by AccessDenied
-
-
:OOOOOO it worked <3 SweetS you earned my sister...
i love youuuuu <3
idk why it created problem :/ this boolean check also if the engine is running .. but since it works thanks
Also thanks to Tryskel.
-
This line creates the NPE, so it's not from this pet addon :D Also, for me, on aCis Int, it's working fine, with any pet.
Ok ill make it comment and try now sec
-
What pet are you testing? With strider its working fine. Also, which is your 738 line?
Im testing with wolf (the little one)
Wolf collar
also my 738 line in L2Character is
if (EventEngine.areTogether(getObjectId(), getTarget().getObjectId()))sendPacket(ActionFailed.STATIC_PACKET);which is a check for an event engine but i dont get why since event engine is off or they dont participate.. -
btw it should be L2Summon or L2PetInstance pet ?
-
hasAi() check too, even if there is no reason you don't have AI anymore. And as I said, you miss all checks so don't expect it works fine for particular cases.
I know i miss many checks but i just want to test first.. i really dont get why this error
java.lang.NullPointerExceptionat com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character.java:738)at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(L2Character.java:3747)at com.l2jserver.gameserver.ai.L2SummonAI.thinkAttack(L2SummonAI.java:93)at com.l2jserver.gameserver.ai.L2SummonAI.onEvtThink(L2SummonAI.java:144)at com.l2jserver.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:706)at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:459)at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:346)at com.l2jserver.gameserver.GameTimeController$MovingObjectArrived.run(GameTimeController.java:209)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.lang.Thread.run(Unknown Source) -
I'm taking your sister, period.
@Override public void doAttack(L2Character target) { final L2Summon pet = getPet(); if (pet != null) pet.getAI().setIntention(CtrlIntention.ATTACK, target); super.doAttack(target); clearRecentFakeDeath(); }
Yeap this is what i wrote in the first place and it give error
java.lang.NullPointerExceptionat com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character.java:738)at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(L2Character.java:3747)at com.l2jserver.gameserver.ai.L2SummonAI.thinkAttack(L2SummonAI.java:93)at com.l2jserver.gameserver.ai.L2SummonAI.onEvtThink(L2SummonAI.java:144)at com.l2jserver.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:706)at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:459)at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:346)at com.l2jserver.gameserver.GameTimeController$MovingObjectArrived.run(GameTimeController.java:209)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.lang.Thread.run(Unknown Source) -
Not only checks, read better. If it was only checks, then the attack button from summon panel couldn't work. That entire code is the button from client. As you can see, your 2 lines will probably work, but wouldn't handle all regular conditions. The case 22 is the whole pet attack behavior, no matter the summon (siege summons and sin eaters included).
If you read more deeply, you can see
pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
About the lollipop, I will consider the offer depending the original taste, if you or your sister already used it, if your sister is cute and is willing to go out with me if she is aged 20+, or if you rolled it in a dog poo. The lollipop, not the sister.
Alright yes i saw that line afcourse
i saw this
if (pet.isAttackingDisabled())if (pet.getAttackEndTime() > GameTimeController.getGameTicks())
pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
else
return;
but this must go right into L2PcInstance.java into the @override doAttack
so it will happen when you attack another player and also make a
final L2Summon pet = this.getPet();
but still i get an error.. i dont really understand both are really helpful (You and SweetS) but you keep showing me
where i can get the line from which is not what im asking i know the line i dont need even copy it..
whats problem is that when attack it give the error that i show you.
And now that i added this line
now it doesnt even attack at all .. and no pet is not null or the target is not null either..
really thank you both and sorry if i waste your time ..
Ps. she is hot and she is 22, i can tell her to lick it slowly and ill deliver it to you :3
(Error below)
java.lang.NullPointerExceptionat com.l2jserver.gameserver.model.actor.L2Character.doAttack(L2Character.java:738)at com.l2jserver.gameserver.model.actor.L2Character$AIAccessor.doAttack(L2Character.java:3747)at com.l2jserver.gameserver.ai.L2SummonAI.thinkAttack(L2SummonAI.java:93)at com.l2jserver.gameserver.ai.L2SummonAI.onEvtThink(L2SummonAI.java:144)at com.l2jserver.gameserver.ai.L2CharacterAI.onEvtArrived(L2CharacterAI.java:706)at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:459)at com.l2jserver.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:346)at com.l2jserver.gameserver.GameTimeController$MovingObjectArrived.run(GameTimeController.java:209)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.lang.Thread.run(Unknown Source) -
Nooo, RequestActonUse.java file case 16 and 22. Check the file, you will figure it out.
Yes thank you sir for answer i did check afcourse the case 22 cause the 16 is empty
so in the case 22 it just has some check such as
case 22: // Attack (pet attack) if (target != null && pet != null && pet != target && activeChar != target && !pet.isBetrayed()) { if (pet.isAttackingDisabled()) if (pet.getAttackEndTime() > GameTimeController.getGameTicks()) pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); else return; if (pet instanceof L2PetInstance && pet.getLevel() - activeChar.getLevel() > 20) { activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.PET_TOO_HIGH_TO_CONTROL)); return; } if (activeChar.isInOlympiadMode() && !activeChar.isOlympiadStart()) { // if L2PcInstance is in Olympia and the match isn't already start, send a Server->Client packet ActionFailed activeChar.sendPacket(ActionFailed.STATIC_PACKET); return; } if (target.getActingPlayer() != null && pet.getOwner().getSiegeState() > 0 && pet.getOwner().isInsideZone(L2Character.ZONE_SIEGE) && target.getActingPlayer().getSiegeState() == pet.getOwner().getSiegeState() && target.getActingPlayer() != pet.getOwner() && target.getActingPlayer().getSiegeSide() == pet.getOwner().getSiegeSide()) { // if (TerritoryWarManager.getInstance().isTWInProgress()) sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_CANNOT_ATTACK_A_MEMBER_OF_THE_SAME_TERRITORY)); else sendPacket(SystemMessage.getSystemMessage(SystemMessageId.FORCED_ATTACK_IS_IMPOSSIBLE_AGAINST_SIEGE_SIDE_TEMPORARY_ALLIED_MEMBERS)); sendPacket(ActionFailed.STATIC_PACKET); return; } if (!activeChar.getAccessLevel().allowPeaceAttack() && activeChar.isInsidePeaceZone(pet, target)) { activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.TARGET_IN_PEACEZONE)); return; } if (pet.getNpcId() == 12564 || pet.getNpcId() == 12621) { // sin eater and wyvern can't attack with attack button activeChar.sendPacket(ActionFailed.STATIC_PACKET); return; } if (pet.isLockedTarget()) { pet.getOwner().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.FAILED_CHANGE_TARGET)); return; } pet.setTarget(target); if (target.isAutoAttackable(activeChar) || _ctrlPressed) { if (target instanceof L2DoorInstance) { if (((L2DoorInstance) target).isAttackable(activeChar) && pet.getNpcId() != L2SiegeSummonInstance.SWOOP_CANNON_ID) pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); } // siege golem AI doesn't support attacking other than doors at the moment else if (pet.getNpcId() != L2SiegeSummonInstance.SIEGE_GOLEM_ID) pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); } else { pet.setFollowStatus(false); pet.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, target); } } break;
those are just check.. exept the first part right?
-
So you mean something like this
L2PcInstance.java
@Overridepublic void doAttack(final L2Character target){final L2Summon pet = getPet();if (target != null && pet != null){if (pet.isAttackingDisabled()){if (pet.getAttackEndTime() > GameTimeController.getGameTicks())pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);}else{return;}} -
I hardly can do better version than previous version. I gave names of classes, what to copy and where to copy. I can also use Paint and draw it with arrows and print screens because I'm gifted, but you will probably sell my valuable art.
awwww you so cute <3 well i know you're gifted no need to tell me and yes i would sell your valuable art to my sister for 1 lolipop.
She is willing to buy it tho.. well let me try again..
Thanks by the way
-
No.
Then maybe u could tell me which file control what cause as far i saw in Lineage 2 is a mess..
From what i understood the method that i need to add the check is inside the
doAttack cause is @override
but the whats the proper way to make your pet attack ?
-
Put RequestActionUse cases 16/22 (pet attack action) after existing content of L2PcInstance.doAttack( - filters the useless checks if necessary.
case 16:
case 22: // Attack (pet attack)
maybe i should write the code in there?
like
if (target != null && pet != null && pet != target && activeChar != target && !pet.isBetrayed()){activeChar.getPet().getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);} -
if (pet != null) pet.getAi().getIntention(CTRL.INTENTION.DOAttack. target);
Yes this i wrote it manually here no copy paste thats why the mistakes thats exactly what i wrote in eclipse before i erase it
but when i try hit with my char the other char the wolf walking next ot me and suddedly stop and the gameserver spammed with errors about AI
Ps. thats my code
if (pet != null)if (target instanceof L2Character)pet.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target); -
Hello recently i played star wars old republic and i got inspired an idea of the pet / summon
that it auto-attack the target that you attack.
Tried to do a code in L2Character (btw use F & High5)
like
final L2Summon pet = this.getPet();
doAttack(L2Character target)
{
if (!(pet == null))
{
pet.getAi().getIntention(CTRL.INTENTION.DOAttack. target)
}
something like this but it give error
any way on how to control attack of our summon / pet to attack the enemy even if is L2MonsterInstance or L2PcInstance object?
Thanks a lot
Ps. i'm not starter in java so speak freely, any answer i would appreciate it i just stuck.
Custom Pet -.-
in Request Server Development Help [L2J]
Posted · Edited by AccessDenied
Hello again -.- sorry i bother you all the time i am used to develop Aion no L2j (im learning)
so i dig into lineage 2 and so far i understood pretty much many things by reading the source at the same time
btw i work on Freya
So i want make a custom Summon-pet like Wolf collar
things i did
1) Made a L2Pet in custom_npc (done)
2) Make a custom item in Customitems.xml that is using SummonHandler (bypass) (done)
3) Made the skill for the item (1 level) (done)
4) Wrote the itemId, summonId, duration into the summon_data.scv file
5) Insert the item - skill into system (etcitem.grp, itemname,grp)
Inside game i click on item and nothing happen BUT when i use normal wolf
and i click on my item it says "You already have a pet" which mean it works (it use the handler)
Anything i miss?
Ps the SummonHandler i read it all (this is how i knew what to do)
like these lines